installer PostgreSQL VPS··7 min de lecture·Par l'équipe OmegaCloud

Installer PostgreSQL sur un VPS Linux : guide complet

Illustration immersive du sujet : installer PostgreSQL VPS

Installer PostgreSQL VPS est une opération incontournable pour tout professionnel IT souhaitant déployer une base de données relationnelle robuste, performante et maîtrisée de bout en bout. Ce tutoriel 2026 couvre l'installation complète sur Debian/Ubuntu comme sur Rocky/Alma, la configuration réseau, le durcissement sécurité et l'optimisation des performances sur stockage NVMe. Objectif : une instance production-ready, propre et sécurisée.



Prérequis avant d'installer PostgreSQL sur un VPS

Avant toute chose, il faut un accès root ou sudo à un VPS Linux disposant de ressources suffisantes. PostgreSQL est peu gourmand au repos mais très sensible à la latence disque et à la quantité de RAM disponible pour son cache. Un stockage NVMe Gen4 et un CPU dédié font une réelle différence sur les charges transactionnelles.

Ressources recommandées

UsagevCPURAMStockage
Dev / test1-22-4 Go20 Go NVMe
Application web moyenne2-48 Go40-80 Go SSD SAS
Base transactionnelle chargée4-8+16-32 Go100 Go+ SSD SAS

Un VPS Linux OmegaCloud avec CPU dédié et disques SSD SAS convient parfaitement à ce type de workload. L'anti-DDoS volumétrique étant déjà géré côté infrastructure, vous vous concentrez uniquement sur la sécurité applicative et système.

Mise à jour du système

Sur Debian/Ubuntu, commencez toujours par mettre le système à jour :

sudo apt update && sudo apt upgrade -y

Sur Rocky Linux ou AlmaLinux :

sudo dnf update -y

Connexion SSH sécurisée

Avant d'exposer un service, sécurisez l'accès. Générez une paire de clés côté client :

ssh-keygen -t ed25519 -C "admin-postgres"

Copiez la clé publique sur le VPS, puis désactivez l'authentification par mot de passe dans /etc/ssh/sshd_config une fois la connexion par clé validée.



Installer PostgreSQL sur un VPS Debian, Ubuntu, Rocky ou Alma

La méthode diffère légèrement selon la distribution. Deux stratégies existent : utiliser le paquet fourni par la distribution, ou installer depuis le dépôt officiel PostgreSQL (PGDG) pour obtenir une version majeure récente et à jour. Pour un environnement de production en 2026, le dépôt officiel est fortement recommandé.

Installation via le dépôt officiel sur Debian/Ubuntu

Ajoutez le dépôt PGDG, importez la clé de signature puis installez :

sudo apt install -y curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
  https://www.postgresql.org/media/keys/ACCC4CF8.asc

echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
  | sudo tee /etc/apt/sources.list.d/pgdg.list

sudo apt update
sudo apt install -y postgresql-17

Installation sur Rocky Linux / AlmaLinux

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql17-server
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb

Démarrer et activer le service

Une fois le paquet installé, activez le service pour qu'il démarre au boot :

sudo systemctl enable --now postgresql
sudo systemctl status postgresql

Vérifiez que PostgreSQL écoute bien :

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

Première connexion et création d'un rôle

Le superutilisateur système postgres est créé automatiquement. Ouvrez une session :

sudo -u postgres psql

Créez ensuite un rôle applicatif dédié et une base, sans jamais utiliser le compte postgres pour vos applications :

CREATE ROLE app_user WITH LOGIN PASSWORD 'un_mot_de_passe_robuste';
CREATE DATABASE app_db OWNER app_user;
GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;
\q


Configurer, sécuriser et exposer PostgreSQL sur le réseau

Par défaut, PostgreSQL n'écoute que sur localhost. C'est le comportement le plus sûr. Si votre application tourne sur le même VPS, laissez-le ainsi. Si vous avez besoin d'un accès distant, il faut configurer précisément l'écoute réseau et le contrôle d'accès.

Configuration de l'écoute réseau

Localisez les fichiers de configuration :

sudo -u postgres psql -c "SHOW config_file;"

Éditez postgresql.conf pour ajuster l'adresse d'écoute. Évitez listen_addresses = '*' en production ; préférez une IP précise, idéalement sur un réseau privé :

listen_addresses = '10.0.0.5'
port = 5432

Contrôle d'accès avec pg_hba.conf

Le fichier pg_hba.conf gère l'authentification par client. Utilisez scram-sha-256, plus robuste que md5 :

# TYPE  DATABASE  USER      ADDRESS         METHOD
host    app_db    app_user  10.0.0.0/24     scram-sha-256

Rechargez la configuration après modification :

sudo systemctl reload postgresql

Pare-feu : n'exposez que le strict nécessaire

Configurez ufw pour restreindre l'accès au port 5432 à une source connue uniquement :

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow from 10.0.0.0/24 to any port 5432 proto tcp
sudo ufw enable
sudo ufw status verbose

Pour un contrôle plus fin, nftables permet des règles atomiques et un filtrage stateful performant. Ne laissez jamais PostgreSQL ouvert à 0.0.0.0/0.

Chiffrement TLS des connexions

Pour toute connexion distante, activez SSL. Générez un certificat (Let's Encrypt ou interne) et renseignez dans postgresql.conf :

ssl = on
ssl_cert_file = '/etc/postgresql/ssl/server.crt'
ssl_key_file = '/etc/postgresql/ssl/server.key'

Assurez-vous que la clé privée est en droits 600 et détenue par l'utilisateur postgres. Côté client, forcez sslmode=verify-full pour éviter les attaques d'interception.

Protéger le service avec fail2ban

PostgreSQL logge les tentatives d'authentification échouées. Créez un filtre fail2ban ciblant ces entrées pour bannir automatiquement les IP abusant du service. Combiné aux clés SSH uniquement et au 2FA sur le panel de gestion, cela réduit fortement la surface d'attaque.

La protection contre les attaques volumétriques (DDoS) est déjà assurée au niveau kernel côté infrastructure OmegaCloud, de façon transparente. Votre travail de sécurisation se concentre donc sur l'accès logique, l'authentification et le chiffrement applicatif.


Optimiser les performances de PostgreSQL sur VPS SSD SAS

Une installation par défaut est conservatrice. Sur un VPS moderne avec RAM confortable et NVMe Gen4, quelques paramètres méritent un ajustement pour exploiter le matériel sans tomber dans le sur-tuning.

Paramètres mémoire clés

ParamètreRôleValeur indicative
shared_buffersCache mémoire PostgreSQL~25% de la RAM
effective_cache_sizeEstimation cache OS + PG~50-75% de la RAM
work_memMémoire par opération de tri16-64 Mo selon charge
maintenance_work_memVACUUM, index256 Mo - 1 Go
max_connectionsConnexions simultanées100-200 (via pooler au-delà)

Adapter le stockage NVMe

Sur du NVMe, réduisez random_page_cost car l'accès aléatoire est quasi aussi rapide que le séquentiel. Cela influence favorablement le planificateur de requêtes :

random_page_cost = 1.1
effective_io_concurrency = 200

Connection pooling

PostgreSQL gère mal un très grand nombre de connexions courtes. Pour une application web, un pooler comme PgBouncer en mode transaction réduit drastiquement la charge et la consommation mémoire. C'est souvent l'optimisation la plus rentable avant même de toucher au matériel.

Sauvegardes automatisées

Aucune installation n'est complète sans stratégie de sauvegarde. Combinez un dump logique régulier et des snapshots de disque :

pg_dump -U app_user -Fc app_db > /backups/app_db_$(date +%F).dump

Planifiez la tâche via cron ou un timer systemd, et testez régulièrement la restauration. Le panel de gestion permet en complément de créer des snapshots du VPS en un clic, utiles avant une migration majeure de version.

Automatiser le déploiement

Pour reproduire une installation à l'identique, scriptez l'ensemble et intégrez-le à votre pipeline. Les Integrations & API OmegaCloud permettent de provisionner un VPS via API REST puis de déclencher la configuration PostgreSQL depuis GitHub Actions ou GitLab CI. Le provisioning Terraform est annoncé sur la roadmap pour aller plus loin dans l'infrastructure-as-code.

Pour approfondir la configuration serveur, la documentation officielle reste la référence : Source. Vous pouvez aussi consulter les bonnes pratiques de durcissement système sur Source.

Une fois votre base opérationnelle, pensez à surveiller CPU, RAM, I/O disque et réseau depuis le dashboard temps réel du panel OmegaCloud, afin de détecter rapidement une saturation avant qu'elle n'impacte vos requêtes.



Conclusion

Installer PostgreSQL sur un VPS demande de la rigueur : version récente via le dépôt officiel, écoute réseau restreinte, authentification scram-sha-256, TLS activé, pare-feu strict et paramètres mémoire adaptés au NVMe. En suivant cette méthode, vous obtenez une base fiable, sécurisée et performante, prête pour la production, sans dépendre d'une configuration par défaut trop conservatrice.



FAQ

Faut-il exposer PostgreSQL sur Internet ou le garder en local ?

Gardez-le sur localhost si l'application tourne sur le même VPS. Pour un accès distant, privilégiez un réseau privé, activez TLS, utilisez pg_hba.conf avec des plages IP précises et un pare-feu restrictif. N'exposez jamais le port 5432 en 0.0.0.0/0.

Quelle version de PostgreSQL choisir en 2026 ?

Optez pour une version majeure récente et supportée via le dépôt PGDG officiel, qui garantit les mises à jour de sécurité. Évitez les versions en fin de vie. Vérifiez la compatibilité de vos extensions et de votre application avant toute migration majeure.

Comment améliorer les performances sans changer de VPS ?

Ajustez shared_buffers, effective_cache_size et work_mem selon votre RAM, abaissez random_page_cost sur NVMe, et ajoutez un connection pooler comme PgBouncer. Ces optimisations logicielles apportent souvent un gain net avant d'envisager plus de ressources matérielles.

Prêt à mettre en pratique ce que vous venez de lire ?

Découvrir nos offres

Articles liés

Prêt à vous lancer ?

à partir de 6,99 € HT/mois

Découvrir nos offres

Hébergements

Navigation