1 Bases-de-données
pepper edited this page 2026-06-27 03:07:51 +00:00

💾 Bases de données & cache

PostgreSQL 18

Image : postgres:18-alpine Données : ./postgres/data/18/docker/

3 bases applicatives

Base Propriétaire Service
authentik_db authentik_user Authentik server + worker
forgejo_db forgejo_user Forgejo
nextcloud_db nextcloud_user Nextcloud

Initialisation

Le script postgres-init/init.sh est exécuté une seule fois (quand ./postgres/data/ est vide). Il :

  1. Lit les mots de passe depuis /run/secrets/
  2. Crée les rôles et les bases avec CREATE ROLE / CREATE DATABASE
  3. Ne contient aucun mot de passe en clair

⚠️ Si la data dir existe déjà, init.sh ne tourne pas. Pour changer un mot de passe : ALTER ROLE <user> PASSWORD 'nouveau' + mettre à jour le fichier secret correspondant.

Connexion en CLI

# Se connecter à une base
sudo docker exec -it postgresql psql -U authentik_user -d authentik_db
sudo docker exec -it postgresql psql -U forgejo_user -d forgejo_db
sudo docker exec -it postgresql psql -U nextcloud_user -d nextcloud_db

# En tant que superuser postgres
sudo docker exec -it postgresql psql -U postgres

# Lister les bases
sudo docker exec -it postgresql psql -U postgres -c '\l'

# Taille des bases
sudo docker exec -it postgresql psql -U postgres -c 'SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;'

Sauvegarde manuelle d'une base

# Dump d'une base
sudo docker exec postgresql pg_dump -U forgejo_user forgejo_db | gzip > forgejo_$(date +%Y%m%d).sql.gz

# Restaurer
gunzip -c forgejo_20260101.sql.gz | sudo docker exec -i postgresql psql -U forgejo_user -d forgejo_db

Tuning (variables dans .env)

POSTGRES_MAX_CONNECTIONS=100
POSTGRES_SHARED_BUFFERS=256MB
POSTGRES_WORK_MEM=4MB
POSTGRES_MAINTENANCE_WORK_MEM=64MB

Redis — Authentik

Image : valkey/valkey:8-alpine Persistance : AOF (appendonly yes) Données : ./authentik/redis/

Stocke les sessions Authentik et le cache. Redémarrage → sessions conservées (AOF rejoue).

# Connexion CLI
sudo docker exec -it redis valkey-cli -a $(cat secrets/redis_password.txt)

# Stats
sudo docker exec -it redis valkey-cli -a $(cat secrets/redis_password.txt) INFO memory
sudo docker exec -it redis valkey-cli -a $(cat secrets/redis_password.txt) DBSIZE

Redis — Nextcloud

Image : valkey/valkey:8-alpine Persistance : aucune (LRU cache) Données : ./nextcloud/redis/ (vide en pratique — mode noeviction à configurer si besoin)

Cache APCu côté Nextcloud. En cas de redémarrage, Nextcloud reconstruit le cache automatiquement.

sudo docker exec -it redis-nextcloud valkey-cli -a $(cat secrets/redis_nextcloud_password.txt) INFO