0 Votes

Code source wiki de Dépannage

Version 2.2 par john le 2026/09/18 21:09

Masquer les derniers auteurs
john 1.1 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##). Seuls deux includes sont nécessaires :
46
47 {{code}}
48 include /config/nginx/authelia-location.conf;
49 include /config/nginx/proxy.conf;
50 {{/code}}
51
52 === Modification de la configuration Authelia sans effet ===
53
54 Authelia ne recharge pas sa configuration à chaud :
55
56 {{code language="bash"}}
57 docker restart authelia
58 {{/code}}
59
60 == SearXNG ==
61
62 === Erreur 500 derrière le reverse proxy ===
63
64 **Cause** : ##limiter.toml## au format d'une ancienne version. Les réglages sont désormais sous la section ##[botdetection]##.
65
66 {{code language="toml"}}
67 [botdetection]
68 trusted_proxies = ['172.16.0.0/12', '10.0.0.0/8']
69 {{/code}}
70
71 Les deux plages couvrent les réseaux Docker internes.
72
73 == Nextcloud ==
74
75 === Page de mise à jour des applications vide ===
76
77 Bug de certaines versions, déclenché par une application dont l'identifiant dépasse 32 caractères. Mettre à jour en ligne de commande :
78
79 {{code language="bash"}}
80 docker exec -it nextcloud occ app:update --all
81 {{/code}}
82
83 === Avertissement « index manquants » ===
84
85 {{code language="bash"}}
86 docker exec -it nextcloud occ db:add-missing-indices
87 {{/code}}
88
89 == XWiki ==
90
91 === XWiki ne démarre plus après une mise à jour (erreur Solr) ===
92
93 **Cause** : l'index Solr existant est incompatible avec la nouvelle version (erreur ##FieldExistsQuery##).
94
95 **Solution** : déplacer **les deux** dossiers Solr en même temps. Déplacer un seul ne suffit pas.
96
97 {{code language="bash"}}
98 docker stop <CONTENEUR_XWIKI>
99 cd <APPDATA>/xwiki/data/data
100 mv store/solr store/solr.bak.$(date +%F)
101 mv cache/solr cache/solr.bak.$(date +%F)
102 docker start <CONTENEUR_XWIKI>
103 {{/code}}
104
105 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.
106
107 == Dawarich ==
108
109 === Sidekiq bloqué en « Created » ===
110
111 **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.
112
113 **Solution** : ajouter l'en-tête au healthcheck du conteneur app :
114
115 {{code language="yaml"}}
116 healthcheck:
117 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\"'"]
118 {{/code}}
119
120 === Le géocodage inverse ne fait rien ===
121
122 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** :
123
124 {{code language="yaml"}}
125 PHOTON_API_HOST: photon:2322
126 PHOTON_API_USE_HTTPS: "false"
127 {{/code}}
128
129 Sans ##/api## dans l'hôte, sans clé d'API.
130
131 === Lieux nommés « Suggested place » après confirmation en masse ===
132
133 Le nommage se fait à la détection, jamais à la confirmation. Relancer le géocodage sur chaque lieu concerné depuis la console Rails :
134
135 {{code language="ruby"}}
136 User.first.places.where(name: 'Suggested place').find_each { |p| ReverseGeocodingJob.perform_later('Place', p.id) }
137 {{/code}}
138
139 == CrowdSec ==
140
141 === Captcha Turnstile sans effet ===
142
143 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.