3.2 KiB
n8n -> Baserow : ECONNREFUSED sur ecriture (Update/Create/Delete) via https interne
Date : 28/07/2026
Symptome : workflow n8n oTLZguPfPlq9B7El (Moyens Humains Zone Sud Sync) -- toutes les executions horaires en echec depuis plusieurs jours, erreur ECONNREFUSED (NodeApiError: The service refused the connection - perhaps it is offline) systematiquement sur les noeuds Update et Create1 (parfois Delete).
Cause racine : le conteneur Baserow n'expose en interne (reseau Docker n8n, alias baserow.bolbol.tn -> 172.27.0.26) que le port 80 -- aucun TLS ne tourne sur ce chemin interne (le HTTPS public passe par un reverse-proxy externe separe, hors de ce reseau Docker). Les noeuds de lecture (HTTP Request MH a MH3) appelaient deja http://baserow:80/... et fonctionnaient. Les 3 noeuds d'ecriture (Update, Create1, Delete) appelaient https://baserow.bolbol.tn/... (port 443 implicite) -> connexion refusee a chaque appel.
Pourquoi ca a pu passer inapercu : les lectures (pagination GET) reussissaient toujours, seule l'ecriture echouait -- l'erreur remontait bien dans les executions n8n mais sans alerte active dessus.
Diagnostic :
GET /api/v1/executions?workflowId=...-> reperer le pattern d'echec recurrent.GET /api/v1/executions/{id}?includeData=true-> lireresultData.runData.<node>[].error.httpCode=ECONNREFUSED.- Comparer les
urldes noeuds en echec vs noeuds qui reussissent dans le meme workflow (GET /api/v1/workflows/{id}). - Confirmer cote conteneurs :
docker inspect <container> --format '{{json .NetworkSettings.Ports}}'sur Baserow -> seul80/tcpexpose.docker inspect n8n/Baserow --format '{{json .NetworkSettings.Networks}}'-> verifier qu'ils partagent bien le meme reseau Docker et que l'aliasbaserow.bolbol.tny est present (Aliases). - Test direct depuis le conteneur n8n (
docker exec n8n node -e "..."avechttp.request, busyboxwgetne supporte pas PATCH/DELETE) vershttp://baserow.bolbol.tn:80/...-> confirme le fix avant de toucher au workflow.
Fix : remplacer https://baserow.bolbol.tn par http://baserow.bolbol.tn sur les 3 noeuds d'ecriture, coherent avec les noeuds GET existants. Mise a jour via API n8n :
PUT /api/v1/workflows/{id} avec {name, nodes, connections, settings, staticData} -- attention : le GET renvoie des cles settings non acceptees en ecriture (ex. timeSavedMode, availableInMCP, binaryMode) -> l'API repond 400 request/body/settings must NOT have additional properties. Ne renvoyer que les cles standard (executionOrder, callerPolicy, etc.).
Regle a retenir : sur le reseau Docker interne n8n, l'alias baserow.bolbol.tn doit toujours etre appele en http:// (port 80). Le https://baserow.bolbol.tn n'est valide que depuis l'exterieur du reseau Docker (ex. context-hub, qui resout le nom via le DNS public/Pi-hole vers le reverse-proxy reel). Ne pas generaliser un scheme sans verifier sur quel reseau tourne le conteneur appelant.
Outillage sans acces direct docker CLI depuis mcp-nas : ssh nas-host puis binaire complet /volume1/@appstore/ContainerManager/usr/bin/docker (pas de docker dans le PATH, pas de sudo NOPASSWD pour Best0f sur docker).