Spaces:
Running
Running
| # TILLU Engine — n8n on HuggingFace Spaces | |
| # ========================================== | |
| # Free hosting: CPU Basic (2 vCPU, 16GB RAM, 50GB disk) | |
| # Database: SQLite (baked into container — workflows copied at build time) | |
| # Timezone: Asia/Kolkata (IST) | |
| # | |
| # HF Space Secrets (Settings → Variables and secrets): | |
| # N8N_ENCRYPTION_KEY — random 32-char hex string | |
| # N8N_BASIC_AUTH_USER — n8n login username | |
| # N8N_BASIC_AUTH_PASSWORD — n8n login password | |
| # TILLU_GATEWAY_URL — https://tillu-backend.onrender.com | |
| # WEBHOOK_URL — https://tillu-ai-tillu-engine.hf.space | |
| # GROQ_API_KEY — Groq API key for LLM nodes | |
| # SUPABASE_URL — Supabase project URL | |
| # SUPABASE_KEY — Supabase service role key | |
| FROM node:20-alpine | |
| USER root | |
| # ── System dependencies ─────────────────────────────────────────────────────── | |
| RUN apk add --no-cache \ | |
| git \ | |
| python3 \ | |
| make \ | |
| g++ \ | |
| build-base \ | |
| curl \ | |
| wget \ | |
| jq \ | |
| tzdata | |
| # ── Timezone: IST ───────────────────────────────────────────────────────────── | |
| ENV TZ=Asia/Kolkata | |
| RUN cp /usr/share/zoneinfo/Asia/Kolkata /etc/localtime && \ | |
| echo "Asia/Kolkata" > /etc/timezone | |
| # ── n8n install (latest stable) ─────────────────────────────────────────────── | |
| RUN npm install -g n8n | |
| # ── n8n data directory ──────────────────────────────────────────────────────── | |
| ARG BASE_PATH=/root/.n8n | |
| RUN mkdir -p ${BASE_PATH}/workflows && chmod -R 777 ${BASE_PATH} | |
| # ── Copy TILLU workflows ────────────────────────────────────────────────────── | |
| COPY workflows/ /root/.n8n/workflows/ | |
| # ── Copy and enable startup script ─────────────────────────────────────────── | |
| COPY start.sh /start.sh | |
| RUN chmod +x /start.sh | |
| # ── n8n configuration ───────────────────────────────────────────────────────── | |
| ENV N8N_PORT=7860 | |
| ENV N8N_PROTOCOL=https | |
| ENV N8N_HOST=0.0.0.0 | |
| ENV GENERIC_TIMEZONE=Asia/Kolkata | |
| # Task runner (required in newer n8n versions) | |
| ENV N8N_RUNNERS_ENABLED=true | |
| # Allow all built-in and external modules in Code/Function nodes | |
| ENV NODE_FUNCTION_ALLOW_BUILTIN=* | |
| ENV NODE_FUNCTION_ALLOW_EXTERNAL=* | |
| # HF Spaces runs as root — silence the settings permission warning | |
| ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false | |
| # Prune old execution data automatically (keep 7 days) | |
| ENV EXECUTIONS_DATA_PRUNE=true | |
| ENV EXECUTIONS_DATA_MAX_AGE=168 | |
| # SQLite — no external DB required; n8n metadata stays local | |
| # TILLU application data lives in Supabase via HTTP nodes | |
| ENV DB_TYPE=sqlite | |
| ENV DB_SQLITE_VACUUM_ON_STARTUP=true | |
| # Auth & telemetry | |
| ENV N8N_BASIC_AUTH_ACTIVE=true | |
| ENV N8N_USER_MANAGEMENT_DISABLED=true | |
| ENV N8N_DIAGNOSTICS_ENABLED=false | |
| ENV N8N_VERSION_NOTIFICATIONS_ENABLED=false | |
| ENV N8N_TEMPLATES_ENABLED=false | |
| # Run executions in the main process (simplest for single-container deploy) | |
| ENV EXECUTIONS_PROCESS=main | |
| WORKDIR /data | |
| EXPOSE 7860 | |
| # ── Health check ────────────────────────────────────────────────────────────── | |
| HEALTHCHECK --interval=30s --timeout=15s --start-period=120s --retries=3 \ | |
| CMD wget -qO- http://localhost:7860/healthz > /dev/null 2>&1 || exit 1 | |
| CMD ["/start.sh"] | |