PostgreSQL /etc/systemd/postgresql@.service

Authentic ๐Ÿ“‹ Debian 12 (Bookworm) 41 lines

Compatibility

Currently viewing:
Debian 12 (Bookworm)
Also compatible:
Debian 10 (Buster) Debian 11 (Bullseye) Ubuntu 20.04 LTS (Focal Fossa) Ubuntu 22.04 LTS (Jammy Jellyfish) Ubuntu 24.04 LTS (Noble Numbat)
Different versions:

File Info

Size
41 lines
MD5
5b25f284506ad288820d584bea86fb23
SHA256
4c44931bba34e0754b7c0762852a5c1b615a1e307df9c458d231232d55e4c907

Quick Commands

curl:
curl https://exampleconfig.com/api/v1/config/original/5b25f284506ad288820d584bea86fb23?hint=postgresql@.service
wget:
wget -O postgresql@.service https://exampleconfig.com/api/v1/config/original/5b25f284506ad288820d584bea86fb23?hint=postgresql@.service
/etc/systemd/postgresql@.service
# systemd service template for PostgreSQL clusters. The actual instances will
# be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
# variable %i expands to "version-cluster", %I expands to "version/cluster".
# (%I breaks for cluster names containing dashes.)

[Unit]
Description=PostgreSQL Cluster %i
AssertPathExists=/etc/postgresql/%I/postgresql.conf
RequiresMountsFor=/etc/postgresql/%I /var/lib/postgresql/%I
PartOf=postgresql.service
ReloadPropagatedFrom=postgresql.service
Before=postgresql.service
# stop server before networking goes down on shutdown
After=network.target

[Service]
Type=forking
# -: ignore startup failure (recovery might take arbitrarily long)
# the actual pg_ctl timeout is configured in pg_ctl.conf
ExecStart=-/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i start
# 0 is the same as infinity, but "infinity" needs systemd 229
TimeoutStartSec=0
ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop
TimeoutStopSec=1h
ExecReload=/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i reload
PIDFile=/run/postgresql/%i.pid
SyslogIdentifier=postgresql@%i
# prevent OOM killer from choosing the postmaster (individual backends will
# reset the score to 0)
OOMScoreAdjust=-900
# restarting automatically will prevent "pg_ctlcluster ... stop" from working,
# so we disable it here. Also, the postmaster will restart by itself on most
# problems anyway, so it is questionable if one wants to enable external
# automatic restarts.
#Restart=on-failure
# (This should make pg_ctlcluster stop work, but doesn't:)
#RestartPreventExitStatus=SIGINT SIGTERM

[Install]
WantedBy=multi-user.target

How to Install PostgreSQL

Alpine Linux

sudo apk add postgresql

Debian

sudo apt update && sudo apt install postgresql

Red Hat Enterprise Linux

sudo yum install postgresql17-server

Ubuntu

sudo apt update && sudo apt install postgresql

Configuration File Location

File Path
/etc/systemd/postgresql@.service
Directory
/etc/systemd/
Significance
System-wide configuration directory
Description
Files in /etc/ contain system-wide configuration settings that affect all users.

Complete PostgreSQL Configuration Guide

What is postgresql@.service?
Access the original 'postgresql@.service' (postgresql.conf) configuration file from a fresh PostgreSQL installation on Debian 12 (Bookworm). This is the exact default configuration that ships with the official PostgreSQL package, essential for database recovery, performance optimization, and understanding enterprise-grade settings.
Technical Details
Located at '/etc/systemd/postgresql@.service', this 41-line file controls shared buffers, WAL settings, autovacuum parameters, connection pooling, and query optimization. Powers some of the world's largest databases including Instagram, Spotify, and financial institutions processing millions of transactions daily.
Common Configuration Question
How do you configure PostgreSQL for optimal performance, high availability, and ACID compliance on Debian 12?
Why Use This Configuration?
This factory-default configuration includes advanced indexing, full-text search capabilities, and enterprise security features. Critical for database administrators, data engineers, and developers building scalable applications with complex queries.

Frequently Asked Questions

When should I use this postgresql@.service file?

Use this original configuration file when you need to restore PostgreSQL to its default state after misconfiguration, during fresh installations, or as a baseline for customization. It's particularly useful for troubleshooting when your current config isn't working properly.

How do I restore PostgreSQL to default settings?

Download this file and replace your current configuration at /etc/systemd/postgresql@.service. Make sure to backup your existing configuration first, then restart the PostgreSQL service to apply the changes.

Is this postgresql@.service file secure for production use?

This is the factory-default configuration that ships with PostgreSQL on Debian 12 (Bookworm). While it provides a secure baseline, you should review and customize security settings based on your specific production requirements and compliance needs.

What's the difference between this and other OS versions?

This configuration is specifically from Debian 12 (Bookworm). Different operating systems and versions may have slightly different default settings, security patches, or feature availability. Check the compatibility section above for other OS versions.

Can I use this configuration file for PostgreSQL troubleshooting?

Yes, this original configuration is excellent for troubleshooting. Compare it with your current settings to identify modifications that might be causing issues, or temporarily replace your config with this one to isolate problems.