Obsidean_VM/01-Documentation/Dockers/n8n on Synology.md

2.9 KiB
Raw Blame History

How to Install n8n on Your Synology NAS Marius Hosting Docker | n8n Docs

⚠️ PROBLEMA CONOCIDO EN SYNOLOGY NAS

Bug identificado: n8n tiene un problema conocido con volúmenes en Synology NAS cuando se usan las variables PUID y PGID.

  • Error típico: EACCES: permission denied, open '/home/node/.n8n/config' y Error: command start not found
  • Referencia: GitHub Issue #13753

SOLUCIÓN QUE FUNCIONA

Usar --user 1000:1000 en lugar de PUID/PGID + pre-configurar permisos con Alpine

#!/bin/bash

# 🧹 LIMPIAR CONTENEDORES ANTERIORES (si existen)
docker stop n8n n8n-postgres 2>/dev/null
docker rm n8n n8n-postgres 2>/dev/null
docker network rm n8n-network 2>/dev/null

# 1. Crear la red personalizada
docker network create n8n-network

# 2. Pre-configurar permisos con Alpine (CRÍTICO para Synology)
docker run --rm \
  -v /volume1/docker/n8n/data:/temp \
  alpine:latest \
  sh -c "chown -R 1000:1000 /temp && chmod -R 755 /temp"

# 3. Ejecutar PostgreSQL
docker run -d \
  --name=n8n-postgres \
  --network=n8n-network \
  -v /volume1/docker/n8n/postgres:/var/lib/postgresql/data \
  -e POSTGRES_DB=n8n \
  -e POSTGRES_USER=n8n_user \
  -e POSTGRES_PASSWORD=091820kajhsd \
  -e TZ=Europe/Madrid \
  --restart=unless-stopped \
  postgres:16

# 4. Esperar a que PostgreSQL esté listo
sleep 30

# 5. Ejecutar n8n con user 1000:1000 (NO usar PUID/PGID)
docker run -d \
  --name=n8n \
  --network=n8n-network \
  -p 5678:5678 \
  -v /volume1/docker/n8n/data:/home/node/.n8n \
  -v /volume1/docker/n8n/files:/files \
  --user 1000:1000 \
  -e DB_TYPE=postgresdb \
  -e DB_POSTGRESDB_HOST=n8n-postgres \
  -e DB_POSTGRESDB_PORT=5432 \
  -e DB_POSTGRESDB_DATABASE=n8n \
  -e DB_POSTGRESDB_USER=n8n_user \
  -e DB_POSTGRESDB_PASSWORD=091820kajhsd \
  -e N8N_ENCRYPTION_KEY=275a54007229376e783fe3fb56e01ce07b29e7fa797e753295530ba2 \
  -e GENERIC_TIMEZONE=Europe/Madrid \
  -e TZ=Europe/Madrid \
  -e NODE_ENV=production \
  -e N8N_PORT=5678 \
  --restart=unless-stopped \
  n8nio/n8n:latest

echo "✅ n8n debería estar disponible en http://tu-nas-ip:5678"

🔧 PUNTOS CLAVE DE LA SOLUCIÓN:

  1. Pre-configurar permisos: Usar Alpine para establecer chown -R 1000:1000 antes de iniciar n8n
  2. User específico: --user 1000:1000 en lugar de variables de entorno PUID/PGID
  3. Usuario interno: n8n usa internamente el usuario node (UID 1000), no respeta PUID/PGID
  4. Postgres funciona normal: No tiene problemas de permisos, solo n8n

📋 VERIFICACIÓN:

# Verificar que los contenedores están corriendo
docker ps | grep n8n

# Ver logs de n8n (debería arrancar sin errores)
docker logs n8n

# Ver logs de postgres
docker logs n8n-postgres

💾 DOCKER COMPOSE (ALTERNATIVO - NO RECOMENDADO PARA SYNOLOGY)