Repositorio base para desplegar n8n en Railway y automatizar la creación o actualización de GitHub Issues a partir de eventos de Trello.
Dockerfile: imagen oficial de n8n configurada para escuchar el puerto de Railway.railway.json: configuración de build y healthcheck.compose.yaml: arranque local de n8n con Docker Compose y persistencia..env.example: variables necesarias para n8n, PostgreSQL y GitHub..env.local.example: variables mínimas para desarrollo local con SQLite.workflows/trello-to-github-issue.json: workflow de ejemplo para importar en n8n.
- Crea un repositorio vacío en GitHub y sube este proyecto.
- En Railway, crea un proyecto y elige Deploy from GitHub repo.
- Añade el plugin PostgreSQL al mismo proyecto.
- En el servicio de n8n, configura
N8N_ENCRYPTION_KEY,N8N_HOST,N8N_PROTOCOL,N8N_WEBHOOK_URL,N8N_BLOCK_ENV_ACCESS_IN_NODE=falseyDB_TYPE=postgresdb. - En el servicio n8n, crea
DB_POSTGRESDB_HOST,DB_POSTGRESDB_PORT,DB_POSTGRESDB_DATABASE,DB_POSTGRESDB_USERyDB_POSTGRESDB_PASSWORDusando referencias de Railway. Si el servicio se llamaPostgres, los valores son${{Postgres.PGHOST}},${{Postgres.PGPORT}},${{Postgres.PGDATABASE}},${{Postgres.PGUSER}}y${{Postgres.PGPASSWORD}}. SustituyePostgrespor el nombre exacto de tu servicio si es diferente. - Genera un dominio público en Settings > Networking y actualiza
N8N_HOSTyWEBHOOK_URLcon ese dominio. - Abre n8n, crea el usuario propietario e importa
workflows/trello-to-github-issue.json.
Railway proporciona PORT automáticamente. El launcher incluido lee PORT y configura N8N_PORT; no configures PORT ni N8N_PORT manualmente en Railway.
El workflow de ejemplo espera GITHUB_OWNER, GITHUB_REPO y GITHUB_TOKEN como variables de entorno de n8n. Para producción, es preferible crear una credencial de GitHub en n8n y seleccionarla en el nodo HTTP Request.
Para copiar responsables y labels, añade también TRELLO_API_KEY y TRELLO_TOKEN. El workflow consulta los detalles de la card y usa el username de cada miembro de Trello como login de GitHub. Si algún usuario tiene un login distinto en GitHub, configura GITHUB_ASSIGNEE_MAP, por ejemplo {"bryangarcía89":"bryanstgarcia","bryangarcia89":"bryanstgarcia"}. Los labels se copian por nombre directamente. El token de GitHub debe tener permisos Issues: Read and write y cada assignee debe tener acceso al repositorio.
Con un fine-grained token de GitHub, concede Issues: Read and write sobre el repositorio elegido. No guardes tokens en el repositorio.
El workflow expone POST /webhook/trello-card-created. Solo continúa cuando el evento es una tarjeta creada en Dev To Do o una tarjeta movida hacia esa lista. En Trello, configura un webhook sobre el tablero o modelo que quieras observar y usa la URL de producción que muestra n8n.
El workflow consulta la card en la API de Trello para resolver uno o varios responsables y sus labels. Necesitas una API key y un token de Trello con acceso al tablero.
N8N_BLOCK_ENV_ACCESS_IN_NODE=false es necesario porque el workflow lee las variables GITHUB_* y TRELLO_* mediante $env. En una instalación compartida o más sensible, sustituye ese acceso por credenciales nativas de n8n.
Para probar n8n localmente, crea el archivo de variables y completa el token de GitHub:
cp .env.local.example .env.local
docker compose up -dLa instancia quedará disponible en http://localhost:5678. Los datos se guardan en el volumen Docker n8n_data, así que no se pierden al detener el contenedor.
Comandos útiles:
docker compose logs -f n8n
docker compose down
docker compose up -d