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é.