Wallabag
Modifié par john le 2026/09/19 13:26
Lecture différée : enregistre les articles web pour les lire plus tard, sans publicité, avec extensions de navigateur et applications mobiles.
Architecture
| Conteneur | Rôle |
|---|---|
| wallabag | Application |
| wallabag-db | Base PostgreSQL 16 |
| wallabag-redis | File de tâches (imports, téléchargement des images) |
La base et Redis sont sur le réseau interne wallabag_net ; seule l'application est sur proxy.
Stack
networks:
proxy:
external: true
wallabag_net:
driver: bridge
volumes:
wallabag_images:
driver: local
wallabag_data:
driver: local
wallabag_db:
driver: local
services:
wallabag:
image: wallabag/wallabag:latest
container_name: wallabag
restart: unless-stopped
environment:
- SYMFONY__ENV__DOMAIN_NAME=<URL_WALLABAG>
- SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql
- SYMFONY__ENV__DATABASE_HOST=wallabag-db
- SYMFONY__ENV__DATABASE_PORT=5432
- SYMFONY__ENV__DATABASE_NAME=wallabag
- SYMFONY__ENV__DATABASE_USER=wallabag
- SYMFONY__ENV__DATABASE_PASSWORD=${WALLABAG_DB_PASSWORD}
- SYMFONY__ENV__REDIS_HOST=wallabag-redis
- SYMFONY__ENV__REDIS_PORT=6379
- SYMFONY__ENV__TRUSTED_PROXIES=127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
- SYMFONY__ENV__TRUSTED_HEADERS=x-forwarded-for,x-forwarded-proto,x-forwarded-port,x-forwarded-host
depends_on:
- wallabag-db
- wallabag-redis
volumes:
- wallabag_images:/var/www/wallabag/web/assets/images
- wallabag_data:/var/www/wallabag/data
networks:
- proxy
- wallabag_net
wallabag-db:
image: postgres:16-alpine
container_name: wallabag-db
restart: unless-stopped
environment:
- POSTGRES_DB=wallabag
- POSTGRES_USER=wallabag
- POSTGRES_PASSWORD=${WALLABAG_DB_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 20s
timeout: 5s
retries: 5
volumes:
- wallabag_db:/var/lib/postgresql/data
networks:
- wallabag_net
wallabag-redis:
image: redis:alpine
container_name: wallabag-redis
restart: unless-stopped
command: ["redis-server","--appendonly","yes"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 20s
timeout: 5s
retries: 5
networks:
- wallabag_net
proxy:
external: true
wallabag_net:
driver: bridge
volumes:
wallabag_images:
driver: local
wallabag_data:
driver: local
wallabag_db:
driver: local
services:
wallabag:
image: wallabag/wallabag:latest
container_name: wallabag
restart: unless-stopped
environment:
- SYMFONY__ENV__DOMAIN_NAME=<URL_WALLABAG>
- SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql
- SYMFONY__ENV__DATABASE_HOST=wallabag-db
- SYMFONY__ENV__DATABASE_PORT=5432
- SYMFONY__ENV__DATABASE_NAME=wallabag
- SYMFONY__ENV__DATABASE_USER=wallabag
- SYMFONY__ENV__DATABASE_PASSWORD=${WALLABAG_DB_PASSWORD}
- SYMFONY__ENV__REDIS_HOST=wallabag-redis
- SYMFONY__ENV__REDIS_PORT=6379
- SYMFONY__ENV__TRUSTED_PROXIES=127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
- SYMFONY__ENV__TRUSTED_HEADERS=x-forwarded-for,x-forwarded-proto,x-forwarded-port,x-forwarded-host
depends_on:
- wallabag-db
- wallabag-redis
volumes:
- wallabag_images:/var/www/wallabag/web/assets/images
- wallabag_data:/var/www/wallabag/data
networks:
- proxy
- wallabag_net
wallabag-db:
image: postgres:16-alpine
container_name: wallabag-db
restart: unless-stopped
environment:
- POSTGRES_DB=wallabag
- POSTGRES_USER=wallabag
- POSTGRES_PASSWORD=${WALLABAG_DB_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 20s
timeout: 5s
retries: 5
volumes:
- wallabag_db:/var/lib/postgresql/data
networks:
- wallabag_net
wallabag-redis:
image: redis:alpine
container_name: wallabag-redis
restart: unless-stopped
command: ["redis-server","--appendonly","yes"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 20s
timeout: 5s
retries: 5
networks:
- wallabag_net
- SYMFONYENVDOMAIN_NAME doit être l'URL publique exacte, en https : elle sert à générer les liens et à valider les applications clientes.
- TRUSTED_PROXIES et TRUSTED_HEADERS permettent à Wallabag de savoir qu'il est derrière SWAG en https. Sans eux, il génère des liens en http.
Commandes
# Créer un utilisateur
docker exec -it wallabag /var/www/wallabag/bin/console fos:user:create --env=prod
# Donner les droits d'administration
docker exec -it wallabag /var/www/wallabag/bin/console fos:user:promote <UTILISATEUR> ROLE_SUPER_ADMIN --env=prod
# Appliquer les migrations de base après une mise à jour majeure
docker exec -t wallabag /var/www/wallabag/bin/console doctrine:migrations:migrate --env=prod --no-interaction
docker exec -it wallabag /var/www/wallabag/bin/console fos:user:create --env=prod
# Donner les droits d'administration
docker exec -it wallabag /var/www/wallabag/bin/console fos:user:promote <UTILISATEUR> ROLE_SUPER_ADMIN --env=prod
# Appliquer les migrations de base après une mise à jour majeure
docker exec -t wallabag /var/www/wallabag/bin/console doctrine:migrations:migrate --env=prod --no-interaction
Sauvegarde
- Base : dump SQL de wallabag-db par le script de Sauvegarde.
- Images des articles : non téléchargées (option désactivée), le volume wallabag_images est vide. Si l'option est activée, ajouter ce volume aux chemins sources du script.