0 Votes

Code source wiki de Dépannage

Modifié par john le 2026/09/20 00:02

Afficher les derniers auteurs
1 Problèmes rencontrés sur le serveur principal et leur solution.
2
3 == Accès local ==
4
5 === Services inaccessibles depuis le réseau local par leur nom de domaine ===
6
7 **Cause** : la box ne gère pas le hairpin NAT. Depuis le LAN, le domaine public résout vers l'IP publique, et la box ne renvoie pas le trafic vers l'intérieur.
8
9 **Solution** : réécriture DNS dans AdGuard Home (Raspberry Pi), Filtres > Réécritures DNS :
10
11 |=Domaine|=Réponse
12 |##*.<DOMAINE>##|##<IP_SERVEUR>##
13 |##<DOMAINE>##|##<IP_SERVEUR>##
14
15 En dépannage ponctuel sur un poste : une ligne ##<IP_SERVEUR> <SOUS_DOMAINE>.<DOMAINE>## dans ##/etc/hosts##.
16
17 === Accès intermittent au domaine DuckDNS ===
18
19 **Cause** : instabilité des serveurs de noms DuckDNS (TTL de 60 s, pas de cache efficace).
20
21 **Solution durable** : domaine payant avec DNS Cloudflare.
22
23 == Portainer ==
24
25 === Erreur 504 pendant un redéploiement ===
26
27 Le reverse proxy coupe la connexion avant la fin d'un déploiement long, qui aboutit quand même côté Docker. Utiliser l'accès direct : ##https:~/~/<IP_SERVEUR>:9443##.
28
29 === Échec d'une stack avec ##build: .## ===
30
31 Portainer construit dans un dossier temporaire où les sources n'existent pas. Construire l'image sur l'hôte, puis la référencer par son nom dans la stack :
32
33 {{code language="bash"}}
34 docker build -t <NOM_IMAGE>:local .
35 {{/code}}
36
37 == SWAG et Authelia ==
38
39 === Erreur nginx « directive is duplicate » ===
40
41 Le ##proxy.conf## inclus par SWAG déclare déjà ##proxy_http_version##, ##Upgrade##, ##Connection## et ##proxy_read_timeout##. Les retirer du proxy-conf personnalisé.
42
43 === Erreur au chargement d'un proxy-conf avec Authelia ===
44
45 Le proxy-conf inclut un fichier qui n'existe pas (##authelia-authrequest.conf##). Les fichiers fournis par SWAG, et leur emplacement :
46
47 {{code language="nginx"}}
48 # dans le bloc server
49 include /config/nginx/authelia-server.conf;
50
51 # dans chaque location à protéger, avant proxy.conf
52 include /config/nginx/authelia-location.conf;
53 include /config/nginx/proxy.conf;
54 {{/code}}
55
56 Les deux sont nécessaires : sans ##authelia-server.conf##, nginx refuse la configuration ; sans ##authelia-location.conf##, la location n'est pas protégée.
57
58 === Modification de la configuration Authelia sans effet ===
59
60 Authelia ne recharge pas sa configuration à chaud :
61
62 {{code language="bash"}}
63 docker restart authelia
64 {{/code}}
65
66 == SearXNG ==
67
68 === Erreur 500 derrière le reverse proxy ===
69
70 **Cause** : ##limiter.toml## au format d'une ancienne version. Les réglages sont désormais sous la section ##[botdetection]##.
71
72 {{code language="toml"}}
73 [botdetection]
74 trusted_proxies = ['172.16.0.0/12', '10.0.0.0/8']
75 {{/code}}
76
77 Les deux plages couvrent les réseaux Docker internes.
78
79 == Nextcloud ==
80
81 === Page de mise à jour des applications vide ===
82
83 Bug de certaines versions, déclenché par une application dont l'identifiant dépasse 32 caractères. Mettre à jour en ligne de commande :
84
85 {{code language="bash"}}
86 docker exec -it nextcloud occ app:update --all
87 {{/code}}
88
89 === Avertissement « index manquants » ===
90
91 {{code language="bash"}}
92 docker exec -it nextcloud occ db:add-missing-indices
93 {{/code}}
94
95 == XWiki ==
96
97 === XWiki ne démarre plus après une mise à jour (erreur Solr) ===
98
99 **Cause** : l'index Solr existant est incompatible avec la nouvelle version (erreur ##FieldExistsQuery##).
100
101 **Solution** : déplacer **les deux** dossiers Solr en même temps. Déplacer un seul ne suffit pas.
102
103 {{code language="bash"}}
104 docker stop <CONTENEUR_XWIKI>
105 cd <APPDATA>/xwiki/data/data
106 mv store/solr store/solr.bak.$(date +%F)
107 mv cache/solr cache/solr.bak.$(date +%F)
108 docker start <CONTENEUR_XWIKI>
109 {{/code}}
110
111 L'index est reconstruit au démarrage à partir de la base ; la recherche reste incomplète tant que la reconstruction n'est pas terminée. Attention au double ##data## dans le chemin.
112
113 == Dawarich ==
114
115 === Sidekiq bloqué en « Created » ===
116
117 **Cause** : avec ##APPLICATION_PROTOCOL: https##, Puma refuse la requête HTTP locale du healthcheck ; le conteneur app n'est jamais « healthy » et sidekiq, qui en dépend, ne démarre pas.
118
119 **Solution** : ajouter l'en-tête au healthcheck du conteneur app :
120
121 {{code language="yaml"}}
122 healthcheck:
123 test: ["CMD-SHELL", "wget -qO - --header='X-Forwarded-Proto: https' http://127.0.0.1:3000/api/v1/health | grep -q '\"status\"\\s*:\\s*\"ok\"'"]
124 {{/code}}
125
126 === Le géocodage inverse ne fait rien ===
127
128 Il est désactivé tant qu'aucun fournisseur n'est défini : le job se lance et se termine sans traiter de point. Avec Photon en local, sur **app et sidekiq** :
129
130 {{code language="yaml"}}
131 PHOTON_API_HOST: photon:2322
132 PHOTON_API_USE_HTTPS: "false"
133 {{/code}}
134
135 Sans ##/api## dans l'hôte, sans clé d'API.
136
137 === Lieux nommés « Suggested place » après confirmation en masse ===
138
139 Le nommage se fait à la détection, jamais à la confirmation. Relancer le géocodage sur chaque lieu concerné depuis la console Rails :
140
141 {{code language="ruby"}}
142 User.first.places.where(name: 'Suggested place').find_each { |p| ReverseGeocodingJob.perform_later('Place', p.id) }
143 {{/code}}
144
145 == CrowdSec ==
146
147 === Captcha Turnstile sans effet ===
148
149 Les variables ##CROWDSEC_CAPTCHA_PROVIDER##, ##CROWDSEC_SITE_KEY## et ##CROWDSEC_SECRET_KEY## vont sur le service **swag**, pas sur crowdsec : c'est le bouncer nginx, un mod de SWAG, qui affiche le captcha.