############################################################################### # n8n for Hugging Face Spaces – bash-less, single-file Docker recipe ############################################################################### FROM docker.n8n.io/n8nio/n8n:latest #################### Runtime-level env vars ################################### ENV N8N_HOST=0.0.0.0 \ N8N_PROTOCOL=http \ DB_TYPE=sqlite \ DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite \ N8N_COMMUNITY_PACKAGES_ENABLED=true \ N8N_DISABLE_PRODUCTION_MAIN_PROCESS_RESPONSE_COMPRESSION=true \ N8N_BASIC_AUTH_ACTIVE=false \ N8N_USER_MANAGEMENT_DISABLED=true \ N8N_LOG_LEVEL=info #################### Tiny start script ######################################## USER root RUN set -e; \ cat >/usr/local/bin/start.sh <<'SH' && \ chmod +x /usr/local/bin/start.sh #!/bin/sh set -eu # HF reverse-proxy sets $PORT; fallback 7860 for local runs N8N_PORT="${PORT:-7860}" export N8N_PORT # Public URL for webhooks / editor if [ -n "${SPACE_ID:-}" ]; then APP_URL="https://${SPACE_ID}.hf.space" elif [ -n "${SPACE_HOST:-}" ]; then APP_URL="https://${SPACE_HOST}" else APP_URL="http://localhost:${N8N_PORT}" fi export N8N_BASE_URL="${APP_URL}/" export WEBHOOK_URL="${APP_URL}/" export N8N_EDITOR_BASE_URL="${APP_URL}" echo "🚀 n8n starting on port ${N8N_PORT}" echo "🌐 Public URL : ${APP_URL}" echo "📚 DB : SQLite" echo "🔒 Authentication : disabled" echo "📦 Community packages: enabled" echo "🗜️ Compression : disabled" echo exec n8n start SH USER node #################### (optional) expose default port ########################### EXPOSE 7860 #################### health-check ############################################# HEALTHCHECK --interval=30s --timeout=10s --start-period=45s --retries=3 \ CMD sh -c 'curl -f http://localhost:${PORT:-7860}/healthz || exit 1' #################### container entrypoint ##################################### ENTRYPOINT ["tini", "--"] CMD ["start.sh"]