Serveur principal
Système
| Élément | Valeur |
|---|---|
| OS | Debian 13 |
| Noyau | Mainline (dépôt Zabbly) |
| Disque système | NVMe |
| Exposition | Internet, via SWAG |
Services
Infrastructure
| Service | Rôle |
|---|---|
| SWAG | Reverse proxy, certificat wildcard Let's Encrypt |
| Authelia | Authentification unique |
| CrowdSec | Détection d'attaques, bouncer nginx, captcha Turnstile |
| DuckDNS | Mise à jour du DNS dynamique |
| Portainer CE (LTS) | Gestion des stacks |
| docker-socket-proxy | Accès filtré à l'API Docker |
| Watchtower | Mise à jour automatique des images |
| Glances | Supervision |
Productivité
| Service | Rôle |
|---|---|
| Nextcloud | Notes, veille |
| XWiki | Wiki |
| Joplin Server + client web | Notes |
| Passbolt | Mots de passe |
| Vikunja | Tâches |
| n8n | Automatisation |
| code-server | Éditeur dans le navigateur |
| Wallos | Suivi des abonnements |
Veille et lecture
| Service | Rôle |
|---|---|
| SearXNG | Métamoteur |
| Flus | Veille RSS |
| Wallabag | Lecture différée |
| changedetection.io | Surveillance de pages |
Médias
| Service | Rôle |
|---|---|
| Immich | Photos et vidéos, sans machine-learning |
| Jellystat | Statistiques Jellyfin |
| Castopod | Podcast (test) |
| aax2mp3 | Conversion de livres audio |
Localisation
| Service | Rôle |
|---|---|
| Dawarich | Historique de localisation |
| Photon | Géocodage inverse local pour Dawarich |
Réseau et outils
| Service | Rôle |
|---|---|
| web-check | Analyse de sites |
| networking-toolbox | Outils réseau |
| Sshwifty | Client SSH web |
| copyparty | Partage de fichiers |
| Dashy | Tableau de bord |
| github-readme-stats | Statistiques GitHub pour Dashy |
Outils système
Plakar, Lynis, tmux, htop, fzf, zoxide, yazi, ripgrep, fd-find, jq, glow, ffmpeg, 7zip, poppler-utils, ImageMagick, mkcert.
Configuration
Réseau Docker partagé
Tous les services publiés sont sur un réseau externe commun avec SWAG :
Dans chaque stack :
proxy:
external: true
SWAG
- Le proxy.conf inclus déclare déjà proxy_http_version, Upgrade, Connection et proxy_read_timeout. Les redéclarer dans un proxy-conf provoque l'erreur nginx « directive is duplicate ».
- Pour une API appelée par une application mobile, séparer un bloc location /api sans l'include Authelia.
CrowdSec : captcha Turnstile
Les variables se placent sur le service swag (le bouncer est un mod de SWAG), pas sur le service crowdsec :
- CROWDSEC_CAPTCHA_PROVIDER=turnstile
- CROWDSEC_SITE_KEY=<SITE_KEY>
- CROWDSEC_SECRET_KEY=<SECRET_KEY>
Authelia
Authelia ne recharge pas sa configuration à chaud :
Watchtower
Le projet d'origine containrrr/watchtower est archivé depuis décembre 2025. Remplacement direct par le fork maintenu, sans changer la configuration :
Exclure un conteneur de la mise à jour automatique :
- com.centurylinklabs.watchtower.enable=false
À appliquer aux bases de données, à SWAG, à Authelia et à CrowdSec.
Portainer
- Portainer ne gère pas build: . dans une stack (le contexte pointe vers un dossier temporaire). Construire l'image sur l'hôte, puis la référencer par son nom.
- Derrière le reverse proxy, un redéploiement long renvoie un 504 alors qu'il aboutit. Utiliser l'accès direct en local : https://<IP_SERVEUR>:9443.
Services système inutiles
Sur un serveur sans NFS, iSCSI ni bureau :
Ne garder qu'un seul gestionnaire de profils d'énergie : tuned ou power-profiles-daemon.