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

98 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[How to Install n8n on Your Synology NAS Marius Hosting](https://mariushosting.com/how-to-install-n8n-on-your-synology-nas/)
[Docker \| n8n Docs](https://docs.n8n.io/hosting/installation/docker/#using-with-postgresql)
## ⚠️ 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](https://github.com/n8n-io/n8n/issues/13753)
## ✅ SOLUCIÓN QUE FUNCIONA
**Usar `--user 1000:1000` en lugar de `PUID/PGID` + pre-configurar permisos con Alpine**
```bash
#!/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:
```bash
# 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)