−25%

sur Windows en paiement annuel, jusqu'au 31/10. Voir les offres

EQVPS

Installer PostgreSQL sur un VPS et s'y connecter en sécurité

Installez PostgreSQL 16 sur Ubuntu, créez une base et un utilisateur, et connectez-vous à distance sans exposer le port 5432 à Internet — par tunnel SSH ou liste d'autorisation.

PostgreSQL s'installe en une seule commande. Là où l'on se trompe, c'est sur l'accès distant : on ouvre le port 5432 au monde entier, on met un mot de passe, puis on se demande pourquoi les journaux débordent de tentatives de connexion. Ce guide installe Postgres sur Ubuntu 24.04, crée une base et montre deux façons sûres de s'y connecter de l'extérieur.

1. Installation

apt update && apt install -y postgresql
systemctl status postgresql --no-pager

Sur Ubuntu 24.04, c'est PostgreSQL 16. Par défaut, il n'écoute que sur localhost — gardez-le ainsi sauf raison contraire.

2. Créer un utilisateur et une base

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL

Les applications du même serveur se connectent avec postgresql://app:PASSWORD@localhost:5432/appdb.

3. Se connecter depuis son portable : tunnel SSH (recommandé)

Rien à ouvrir, rien à configurer sur le serveur. Le tunnel fait transiter un port local par SSH :

ssh -N -L 5433:localhost:5432 root@203.0.113.10

Sur une offre NAT, ajoutez votre port SSH personnel indiqué dans le tableau de bord :

ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host

Tant que le tunnel tourne, faites pointer votre client de base de données vers localhost:5433. Tout est chiffré par SSH et le port 5432 reste fermé à Internet. Les outils graphiques comme DBeaver et pgAdmin ont un onglet « tunnel SSH » qui fait la même chose.

4. Accès direct pour un autre serveur (liste d'autorisation)

Si un serveur d'application situé ailleurs doit se connecter directement, autorisez uniquement son IP. Il faut pour cela que le serveur de base de données soit sur une offre avec IP dédiée, car les offres NAT n'acceptent aucune connexion entrante hormis SSH.

Dans /etc/postgresql/16/main/postgresql.conf :

listen_addresses = '*'

À la fin de /etc/postgresql/16/main/pg_hba.conf :

hostssl  appdb  app  198.51.100.20/32  scram-sha-256

Ouvrez le pare-feu pour cette seule adresse et redémarrez :

ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql

hostssl impose une connexion chiffrée — le paquet Ubuntu fournit un certificat auto-signé, les clients doivent donc se connecter avec sslmode=require.

5. Premiers réglages raisonnables

Pour un serveur de 2 Go de RAM, dans postgresql.conf :

shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB

Redémarrez après modification. C'est suffisant pour la plupart des petites applications ; affinez une fois que vous voyez de vraies requêtes.

6. Sauvegardes

Un dump nocturne, conservé une semaine :

mkdir -p /var/backups/pg && chown postgres /var/backups/pg
cat > /etc/cron.d/pg-backup <<'EOF'
30 3 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%u).dump
EOF

-Fc produit un dump compressé que l'on restaure avec pg_restore. Copiez aussi les dumps hors du serveur ; les Managed Backups ajoutent des points de restauration quotidiens de toute la machine.

Pour aller plus loin

FAQ

Faut-il ouvrir le port 5432 sur Internet ?

Mieux vaut l'éviter. Les ports de bases de données exposés sont scannés et attaqués par force brute en permanence. Connectez-vous par un tunnel SSH, ou, si un serveur d'application doit se connecter directement, autorisez uniquement son IP dans pg_hba.conf et dans le pare-feu.

Puis-je utiliser PostgreSQL sur une offre NAT ?

Oui. Les applications du même serveur se connectent en local, et vous accédez à la base depuis votre portable par un tunnel SSH sur votre port SSH personnel. Ce qu'une offre NAT ne peut pas faire, c'est accepter une connexion entrante directe sur le 5432 depuis un autre serveur.

Combien de RAM faut-il à PostgreSQL ?

Il tourne en quelques centaines de mégaoctets et utilise pour le cache tout ce que vous lui donnez. Un point de départ courant est shared_buffers à environ 25 % de la RAM. Pour la base d'une petite application, 2 Go de RAM serveur sont confortables.

Comment sauvegarder la base ?

Utilisez pg_dump au format personnalisé ('pg_dump -Fc') et lancez-le via cron. Conservez aussi des copies hors du serveur. Les Managed Backups ajoutent des points de restauration quotidiens de tout le serveur.

Quelle version de PostgreSQL vais-je obtenir ?

Ubuntu 24.04 fournit PostgreSQL 16, Debian 12 fournit la 15. Pour une version majeure plus récente, ajoutez le dépôt apt officiel de PostgreSQL (apt.postgresql.org).

Commentaires

Pas encore de commentaires. Soyez le premier.

Laisser un commentaire

Les commentaires sont modérés avant leur publication.