====== 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 : ServerName sous.domaine.fr Redirect / https://sous.domaine.fr 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/ 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 Voir [[serveur_hebergement:apache2:proteger_une_page_web|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.