0 Votes

Serveur principal

Version 2.1 par john le 2026/09/18 20:10

Serveur principal

Système

ÉlémentValeur
OSDebian 13
NoyauMainline (dépôt Zabbly)
Disque systèmeNVMe
ExpositionInternet, via SWAG

Services

Infrastructure

ServiceRôle
SWAGReverse proxy, certificat wildcard Let's Encrypt
AutheliaAuthentification unique
CrowdSecDétection d'attaques, bouncer nginx, captcha Turnstile
DuckDNSMise à jour du DNS dynamique
Portainer CE (LTS)Gestion des stacks
docker-socket-proxyAccès filtré à l'API Docker
WatchtowerMise à jour automatique des images
GlancesSupervision

Productivité

ServiceRôle
NextcloudNotes, veille
XWikiWiki
Joplin Server + client webNotes
PassboltMots de passe
VikunjaTâches
n8nAutomatisation
code-serverÉditeur dans le navigateur
WallosSuivi des abonnements

Veille et lecture

ServiceRôle
SearXNGMétamoteur
FlusVeille RSS
WallabagLecture différée
changedetection.ioSurveillance de pages

Médias

ServiceRôle
ImmichPhotos et vidéos, sans machine-learning
JellystatStatistiques Jellyfin
CastopodPodcast (test)
aax2mp3Conversion de livres audio

Localisation

ServiceRôle
DawarichHistorique de localisation
PhotonGéocodage inverse local pour Dawarich

Réseau et outils

ServiceRôle
web-checkAnalyse de sites
networking-toolboxOutils réseau
SshwiftyClient SSH web
copypartyPartage de fichiers
DashyTableau de bord
github-readme-statsStatistiques 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 :

docker network create proxy

Dans chaque stack :

networks:
 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 :

environment:
  - CROWDSEC_CAPTCHA_PROVIDER=turnstile
  - CROWDSEC_SITE_KEY=<SITE_KEY>
  - CROWDSEC_SECRET_KEY=<SECRET_KEY>

Authelia

Authelia ne recharge pas sa configuration à chaud :

docker restart authelia

Watchtower

Le projet d'origine containrrr/watchtower est archivé depuis décembre 2025. Remplacement direct par le fork maintenu, sans changer la configuration :

image: nickfedor/watchtower:latest

Exclure un conteneur de la mise à jour automatique :

labels:
  - 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 :

sudo systemctl disable --now rpcbind open-iscsi nvmf-autoconnect cups bluetooth ModemManager

Ne garder qu'un seul gestionnaire de profils d'énergie : tuned ou power-profiles-daemon.