File size: 4,152 Bytes
6d60faf
 
 
c9fb523
6d60faf
 
c9fb523
 
 
 
 
 
 
 
 
 
 
6d60faf
 
 
 
 
 
 
 
 
 
 
c9fb523
6d60faf
 
 
 
 
 
 
 
c9fb523
 
6d60faf
 
 
c9fb523
6d60faf
 
 
 
c9fb523
 
 
 
6d60faf
 
 
 
 
c9fb523
 
6d60faf
c9fb523
 
6d60faf
 
c9fb523
 
6d60faf
c9fb523
 
6d60faf
 
 
c9fb523
 
6d60faf
 
 
c9fb523
6d60faf
c9fb523
 
 
 
 
 
 
6d60faf
 
 
 
 
c9fb523
6d60faf
c9fb523
6d60faf
c9fb523
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 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"]