services: n8n: container_name: n8n image: n8nio/n8n:2.9.2 restart: unless-stopped networks: - homelab-network - traefik-network ports: - ${EXTERNAL_PORT}:${INTERNAL_PORT} links: - db-n8n volumes: - ./data:/home/node/.n8n environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_HOST=db-n8n - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=${N8N_PASSWORD} - N8N_SECURE_COOKIE=false depends_on: db-n8n: condition: service_healthy labels: - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/n8n.svg - ${HOST_LABEL} - ${LOADBALANCER_LABEL} - ${WATCHTOWER_ENABLE_LABEL} - ${TRAEFIK_ENABLE_LABEL} - ${TRAEFIK_NETWORK_LABEL} - ${ENTRYPOINT_LABEL} - ${CERT_LABEL} - ${AUTHELIA_LABEL} db-n8n: container_name: db-n8n image: postgres:14.2 restart: unless-stopped networks: - homelab-network volumes: - ./pgdata:/var/lib/postgresql/data - ./init-db/init-data.sh:/docker-entrypoint-initdb.d/init-data.sh environment: - POSTGRES_PASSWORD=${N8N_PASSWORD} - POSTGRES_USER=n8n - POSTGRES_DB=n8n healthcheck: test: ["CMD-SHELL", "pg_isready -h localhost -U n8n -d n8n"] interval: 5s timeout: 5s retries: 10 networks: homelab-network: external: true traefik-network: external: true x-dockge: urls: - https://${PROXY_URL} - ${LOCAL_URL} x-arcane: icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/n8n.svg urls: - https://${PROXY_URL} - ${LOCAL_URL}