💾 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 :
- Lit les mots de passe depuis
/run/secrets/ - Crée les rôles et les bases avec
CREATE ROLE / CREATE DATABASE - Ne contient aucun mot de passe en clair
⚠️ Si la data dir existe déjà,
init.shne 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