98 lines
2.9 KiB
Markdown
98 lines
2.9 KiB
Markdown
|
||
[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)
|
||
|
||
|