0 Votes

Code source wiki de Serveur principal

Version 9.1 par john le 2026/09/18 23:07

Masquer les derniers auteurs
john 1.1 1 = Serveur principal =
john 4.1 2
john 3.1 3 {{info}}
john 9.1 4 Pages détaillées : [[Reverse proxy>>Wiki Batcave John.Infrastructure.ServeurPrincipal.ReverseProxy.WebHome]] · [[Nextcloud>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Nextcloud.WebHome]] · [[XWiki>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Xwiki.WebHome]] · [[Passbolt>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Passbolt.WebHome]] · [[Dawarich>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Dawarich.WebHome]] · [[Immich>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Immich.WebHome]] · [[n8n>>Wiki Batcave John.Infrastructure.ServeurPrincipal.n8n.WebHome]] · [[Dépannage>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Depannage.WebHome]]
john 3.1 5 {{/info}}
john 4.1 6
john 1.1 7 == Système ==
8
9 |=Élément|=Valeur
10 |OS|Debian 13
11 |Noyau|Mainline (dépôt Zabbly)
12 |Disque système|NVMe
13 |Exposition|Internet, via SWAG
14
15 == Services ==
16
17 === Infrastructure ===
18
19 |=Service|=Rôle
20 |SWAG|Reverse proxy, certificat wildcard Let's Encrypt
21 |Authelia|Authentification unique
22 |CrowdSec|Détection d'attaques, bouncer nginx, captcha Turnstile
23 |DuckDNS|Mise à jour du DNS dynamique
24 |Portainer CE (LTS)|Gestion des stacks
25 |docker-socket-proxy|Accès filtré à l'API Docker
26 |Watchtower|Mise à jour automatique des images
27 |Glances|Supervision
28
29 === Productivité ===
30
31 |=Service|=Rôle
32 |Nextcloud|Notes, veille
33 |XWiki|Wiki
34 |Joplin Server + client web|Notes
35 |Passbolt|Mots de passe
36 |Vikunja|Tâches
37 |n8n|Automatisation
38 |code-server|Éditeur dans le navigateur
39 |Wallos|Suivi des abonnements
40
41 === Veille et lecture ===
42
43 |=Service|=Rôle
44 |SearXNG|Métamoteur
45 |Flus|Veille RSS
46 |Wallabag|Lecture différée
47 |changedetection.io|Surveillance de pages
48
49 === Médias ===
50
51 |=Service|=Rôle
52 |Immich|Photos et vidéos, sans machine-learning
53 |Jellystat|Statistiques Jellyfin
54 |Castopod|Podcast (test)
55 |aax2mp3|Conversion de livres audio
56
57 === Localisation ===
58
59 |=Service|=Rôle
60 |Dawarich|Historique de localisation
61 |Photon|Géocodage inverse local pour Dawarich
62
63 === Réseau et outils ===
64
65 |=Service|=Rôle
66 |web-check|Analyse de sites
67 |networking-toolbox|Outils réseau
68 |Sshwifty|Client SSH web
69 |copyparty|Partage de fichiers
70 |Dashy|Tableau de bord
71 |github-readme-stats|Statistiques GitHub pour Dashy
72
73 == Outils système ==
74
75 Plakar, Lynis, tmux, htop, fzf, zoxide, yazi, ripgrep, fd-find, jq, glow, ffmpeg, 7zip, poppler-utils, ImageMagick, mkcert.
76
77 == Configuration ==
78
79 === Réseau Docker partagé ===
80
81 Tous les services publiés sont sur un réseau externe commun avec SWAG :
82
83 {{code language="bash"}}
84 docker network create proxy
85 {{/code}}
86
87 Dans chaque stack :
88
89 {{code language="yaml"}}
90 networks:
91 proxy:
92 external: true
93 {{/code}}
94
95 === SWAG ===
96
97 * 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 ».
98 * Pour une API appelée par une application mobile, séparer un bloc ##location /api## sans l'include Authelia.
99
100 === CrowdSec : captcha Turnstile ===
101
102 Les variables se placent sur le service **swag** (le bouncer est un mod de SWAG), pas sur le service crowdsec :
103
104 {{code language="yaml"}}
105 environment:
106 - CROWDSEC_CAPTCHA_PROVIDER=turnstile
107 - CROWDSEC_SITE_KEY=<SITE_KEY>
108 - CROWDSEC_SECRET_KEY=<SECRET_KEY>
109 {{/code}}
110
111 === Authelia ===
112
113 Authelia ne recharge pas sa configuration à chaud :
114
115 {{code language="bash"}}
116 docker restart authelia
117 {{/code}}
118
119 === Watchtower ===
120
john 4.1 121 === Watchtower ===
john 1.1 122
john 4.1 123 Fork maintenu ##nickfedor/watchtower## : le projet d'origine est archivé depuis décembre 2025. Même stack sur les deux machines :
124
john 1.1 125 {{code language="yaml"}}
john 4.1 126 services:
127 watchtower:
128 image: nickfedor/watchtower:latest
129 container_name: watchtower
130 restart: always
131 volumes:
132 - /var/run/docker.sock:/var/run/docker.sock
133 command:
134 - --cleanup
135 - --schedule=0 0 5 * * *
136 environment:
137 - TZ=Europe/Paris
john 1.1 138 {{/code}}
139
john 4.1 140 * Passage chaque nuit à 5 h, après la sauvegarde de 3 h 30.
141 * Pas de ##~-~-rolling-restart## : ce fork refuse de démarrer avec cette option dès qu'un conteneur a un ##depends_on##.
142 * Pas d'API HTTP : les notifications de mise à jour viennent d'un workflow n8n qui interroge docker-socket-proxy toutes les 10 minutes et envoie un message Telegram.
143
john 1.1 144 Exclure un conteneur de la mise à jour automatique :
145
146 {{code language="yaml"}}
147 labels:
148 - com.centurylinklabs.watchtower.enable=false
149 {{/code}}
150
john 4.1 151 Conteneurs exclus : SWAG, Authelia, CrowdSec et la base de Nextcloud (image en ##latest##). Ils se mettent à jour à la main, après lecture des notes de version : Portainer > Update the stack, avec « Re-pull image ».
john 1.1 152
john 4.1 153 Les bases épinglées sur une version majeure restent en mise à jour automatique : elles ne reçoivent que des correctifs mineurs.
154
john 1.1 155 === Portainer ===
156
157 * 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.
158 * 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##.
159
160 === Services système inutiles ===
161
162 Sur un serveur sans NFS, iSCSI ni bureau :
163
164 {{code language="bash"}}
165 sudo systemctl disable --now rpcbind open-iscsi nvmf-autoconnect cups bluetooth ModemManager
166 {{/code}}
167
168 Ne garder qu'un seul gestionnaire de profils d'énergie : ##tuned## ou ##power-profiles-daemon##.