0 Votes

Dépannage

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

Problèmes rencontrés sur le serveur principal et leur solution.

Accès local

Services inaccessibles depuis le réseau local par leur nom de domaine

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.

Solution : réécriture DNS dans AdGuard Home (Raspberry Pi), Filtres > Réécritures DNS :

DomaineRéponse
*.<DOMAINE><IP_SERVEUR>
<DOMAINE><IP_SERVEUR>

En dépannage ponctuel sur un poste : une ligne <IP_SERVEUR> <SOUS_DOMAINE>.<DOMAINE> dans /etc/hosts.

Accès intermittent au domaine DuckDNS

Cause : instabilité des serveurs de noms DuckDNS (TTL de 60 s, pas de cache efficace).

Solution durable : domaine payant avec DNS Cloudflare.

Portainer

Erreur 504 pendant un redéploiement

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.

Échec d'une stack avec build: .

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 :

docker build -t <NOM_IMAGE>:local .

SWAG et Authelia

Erreur nginx « directive is duplicate »

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é.

Erreur au chargement d'un proxy-conf avec Authelia

Le proxy-conf inclut un fichier qui n'existe pas (authelia-authrequest.conf). Les fichiers fournis par SWAG, et leur emplacement :

# dans le bloc server
include /config/nginx/authelia-server.conf;

# dans chaque location à protéger, avant proxy.conf
include /config/nginx/authelia-location.conf;
include /config/nginx/proxy.conf;

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.

Modification de la configuration Authelia sans effet

Authelia ne recharge pas sa configuration à chaud :

docker restart authelia

SearXNG

Erreur 500 derrière le reverse proxy

Cause : limiter.toml au format d'une ancienne version. Les réglages sont désormais sous la section [botdetection].

[botdetection]
trusted_proxies = ['172.16.0.0/12', '10.0.0.0/8']

Les deux plages couvrent les réseaux Docker internes.

Nextcloud

Page de mise à jour des applications vide

Bug de certaines versions, déclenché par une application dont l'identifiant dépasse 32 caractères. Mettre à jour en ligne de commande :

docker exec -it nextcloud occ app:update --all

Avertissement « index manquants »

docker exec -it nextcloud occ db:add-missing-indices

XWiki

XWiki ne démarre plus après une mise à jour (erreur Solr)

Cause : l'index Solr existant est incompatible avec la nouvelle version (erreur FieldExistsQuery).

Solution : déplacer les deux dossiers Solr en même temps. Déplacer un seul ne suffit pas.

docker stop <CONTENEUR_XWIKI>
cd <APPDATA>/xwiki/data/data
mv store/solr store/solr.bak.$(date +%F)
mv cache/solr cache/solr.bak.$(date +%F)
docker start <CONTENEUR_XWIKI>

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.

Dawarich

Sidekiq bloqué en « Created »

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.

Solution : ajouter l'en-tête au healthcheck du conteneur app :

healthcheck:
 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\"'"]

Le géocodage inverse ne fait rien

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 :

PHOTON_API_HOST: photon:2322
PHOTON_API_USE_HTTPS: "false"

Sans /api dans l'hôte, sans clé d'API.

Lieux nommés « Suggested place » après confirmation en masse

Le nommage se fait à la détection, jamais à la confirmation. Relancer le géocodage sur chaque lieu concerné depuis la console Rails :

User.first.places.where(name: 'Suggested place').find_each { |p| ReverseGeocodingJob.perform_later('Place', p.id) }

CrowdSec

Captcha Turnstile sans effet

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.