Pgadmin4
Pgadmin est une interface web permettant de manipuler vos bases de données PostgreSQL (création, modification, suppression, etc). C'est un outil très pratique mais ça veut également dire donner un accès à vos bases de données depuis internet avec les risques qui vont avec. Comme toute interface web, elle nécessite un serveur web pour fonctionner. Dans mon cas, j'utiliserai Apache2. Je ne traiterai pas la création et configuration du nom de domaine et partirai du principe que vous avez un nom de domaine, appelé domaine.fr ici, qui pointe vers votre serveur.
Installation
L'installation sous Raspbian doit se faire via Python.
Installez les paquets nécessaires :
sudo aptitude install build-essential libssl-dev libffi-dev libgmp3-dev virtualenv python3-pip libpq-dev python3-dev python3
Créez l'environnement virtuel :
sudo python3 -m venv /var/www/pgadmin4
Changez le propriétaire par votre utilisateur courant (fate dans mon cas) :
sudo chown -R fate:fate /var/www/pgadmin4
Rentrez dans le répertoire :
cd /var/www/pgadmin4
Créez les sous-répertoires var/storage et var/sessions :
mkdir -p var/storage mkdir var/sessions
Activez l'environnement virtuel :
source /var/www/pgadmin4/bin/activate
Installez pgadmin4 :
pip install pgadmin4
Créez le fichier de configuration :
nano lib/python3.11/site-packages/pgadmin4/config_local.py
Ajoutez les lignes suivantes (ce sont les différents répertoires de travail de pgadmin) :
LOG_FILE = '/var/www/pgadmin4/var/pgadmin4.log' SQLITE_PATH = '/var/www/pgadmin4/var/pgadmin4.db' SESSION_DB_PATH = '/var/www/pgadmin4/var/sessions' STORAGE_DIR = '/var/www/pgadmin4/var/storage' SERVER_MODE = True DATA_DIR = '/var/www/pgadmin4/var' AZURE_CREDENTIAL_CACHE_DIR = '/var/www/pgadmin4/var/azurecredentialcache'
Lancez l'installation de la base de données :
/var/www/pgadmin4/bin/python3.11 /var/www/pgadmin4/lib/python3.11/site-packages/pgadmin4/setup.py setup-db
Il vous sera demandé de rentrer une adresse mail et un mot de passe.
Il ne nous reste plus qu'à modifier de nouveau le propriétaire par www-data ce coup-ci :
sudo chown -R www-data:www-data /var/www/pgadmin4/
Pour utiliser pgadmin, il va falloir créer un super utilisateur ayant accès à postgresql. Tapez les lignes suivantes dans la console en remplaçant le nom d'utilisateur et le mot de passe (choisissez un mot de passe robuste pour l'utilisateur) :
sudo -i -u postgres psql CREATE ROLE nom_utilisateur LOGIN SUPERUSER CREATEROLE CREATEDB PASSWORD 'mot_de_passe'; exit exit
Lancement de pgadmin via Systemd
Créez le fichier
/etc/systemd/system/pgadmin.service
Copiez les lignes suivantes dedans
[Unit] Description=Pgadmin4 Service After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www/pgadmin4/ Environment="PATH=/var/www/pgadmin4/bin" ExecStart=/var/www/pgadmin4/bin/python /var/www/pgadmin4/lib/python3.11/site-packages/pgadmin4/pgAdmin4.py PrivateTmp=true [Install] WantedBy=multi-user.target
Activez le service au démarrage
sudo systemctl enable pgadmin.service
Démarrez le service
sudo systemctl start pgadmin.service
Sécuriser l'accès
Par défaut, PgAdmin est accessible à l'adresse https://domaine.fr:5050 avec domaine.fr le domaine pointant sur votre serveur ou son adresse IP. N'aimant pas que n'importe puisse tomber sur la page de connexion de PgAdmin , je préfère le rendre accessible uniquement via un nom de domaine spécifique et y ajouter une double authentification.
Créez un fichier de configuration pour le sous-domaine (mettre le sous-domaine de votre choix) :
sudo nano /etc/apache2/sites-available/sous.domaine.fr.conf
Copiez-y les lignes suivantes :
<VirtualHost *:80> ServerName sous.domaine.fr Redirect / https://sous.domaine.fr </VirtualHost> <VirtualHost *:443> ServerName sous.domaine.fr LogLevel warn CustomLog ${APACHE_LOG_DIR}/phppgadmin.access.log combined ErrorLog ${APACHE_LOG_DIR}/phppgadmin.error.log SSLEngine on SSLCertificateFile /etc/letsencrypt/live/domaine.fr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/domaine.fr/privkey.pem ProxyPass / http://localhost:5050/ <Location /> ProxyPassReverse http://localhost:5050/ AuthType Digest AuthName "pgadmin" AuthDigestDomain /var/www/pgadmin4 https://sous.domaine.fr AuthDigestProvider file AuthUserFile /etc/apache2/passwords Require valid-user </Location> </VirtualHost>
Voir ici pour créer l'accès.
Ensuite, on active le fichier de configuration :
sudo a2ensite sous.domaine.fr.conf
Et on recharge Apache2 :
sudo systemctl reload apache2
Vous pouvez maintenant manipuler vos bases de données avec PgAdmin.