Retourner sur le site

Installer PostgreSQL

Installation PostgreSQL sur VPS HolyCloud, création d'utilisateur et base, configuration pg_hba.conf.

Installer PostgreSQL

Ce guide installe PostgreSQL depuis les dépôts officiels Debian/Ubuntu sur un VPS Linux HolyCloud, crée un utilisateur applicatif et une base, puis restreint les connexions via pg_hba.conf.

Prérequis

  • VPS HolyCloud Ubuntu 22.04/24.04 ou Debian 12
  • Au moins 1 Go de RAM recommandé pour PostgreSQL seul
  • Accès sudo
  • Snapshot ou sauvegarde avant exposition réseau

Conseil : pour la production, n'exposez PostgreSQL sur Internet que via VPN ou IP autorisées dans pg_hba.conf.

Étape 1 : installation

sudo apt update
sudo apt install -y postgresql postgresql-contrib

La version installée dépend de la distribution (postgresql --version). Démarrez et activez le service :

sudo systemctl enable --now postgresql
sudo systemctl status postgresql

Étape 2 : premier accès (utilisateur postgres)

Debian/Ubuntu crée le superutilisateur système postgres. Basculez dessus :

sudo -i -u postgres
psql -c "SELECT version();"

Quittez avec exit.

Étape 3 : créer un rôle et une base

Remplacez monapp et les mots de passe par vos valeurs :

sudo -u postgres psql <<'EOF'
CREATE ROLE monapp_user WITH LOGIN PASSWORD 'MotDePasseFortIci!';
CREATE DATABASE monapp_db OWNER monapp_user ENCODING 'UTF8' LC_COLLATE='fr_FR.UTF-8' LC_CTYPE='fr_FR.UTF-8' TEMPLATE template0;
GRANT ALL PRIVILEGES ON DATABASE monapp_db TO monapp_user;
EOF

Si la locale fr_FR.UTF-8 n'existe pas :

sudo locale-gen fr_FR.UTF-8
sudo update-locale

Connexion test en tant qu'utilisateur applicatif :

psql -h 127.0.0.1 -U monapp_user -d monapp_db -c "\conninfo"

Étape 4 : configurer pg_hba.conf

Identifiez le répertoire de configuration (exemple PostgreSQL 16) :

sudo -u postgres psql -t -P format=unaligned -c 'SHOW hba_file;'

Éditez le fichier (chemin typique) :

sudo nano /etc/postgresql/16/main/pg_hba.conf

Exemple pour accès local uniquement (recommandé par défaut) :

# TYPE  DATABASE        USER            ADDRESS         METHOD
local   all             postgres                        peer
local   monapp_db       monapp_user                     scram-sha-256
host    monapp_db       monapp_user     127.0.0.1/32    scram-sha-256
host    monapp_db       monapp_user     ::1/128         scram-sha-256

Pour autoriser un autre VPS HolyCloud (IP fixe) :

host    monapp_db       monapp_user     203.0.113.50/32 scram-sha-256

Écoute réseau : dans postgresql.conf, définissez listen_addresses si nécessaire :

sudo nano /etc/postgresql/16/main/postgresql.conf
listen_addresses = 'localhost'

Pour écouter sur une interface privée : listen_addresses = '10.0.0.5'.

Rechargez la configuration :

sudo systemctl reload postgresql

Étape 5 : pare-feu et durcissement

Si vous utilisez UFW et exposez le port 5432 (déconseillé sans VPN) :

sudo ufw allow from 203.0.113.50 to any port 5432 proto tcp

Changez le mot de passe postgres si vous l'utilisez :

sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'AutreMotDePasseFort';"

Vérification

sudo -u postgres psql -c "\du"
sudo -u postgres psql -c "\l"
ss -tlnp | grep 5432

Depuis une machine autorisée :

psql -h IP_VPS -U monapp_user -d monapp_db -c "SELECT current_database(), current_user;"

Consultez les logs en cas d'échec : sudo journalctl -u postgresql -n 50.

Besoin d'aide ?

Le support HolyCloud peut vous orienter sur la connectivité réseau ; la configuration applicative PostgreSQL reste sous votre responsabilité.