# ============================================= # n8n on Hugging Face Spaces # ============================================= FROM node:18-alpine # Install system dependencies RUN apk add --no-cache \ git \ curl \ tzdata \ ca-certificates # Create a non-root user with UID 1001 (1000 is taken by 'node' in this image) RUN addgroup -S n8n && adduser -S -G n8n -u 1001 n8n # Install n8n globally RUN npm install -g n8n # Set working directory & data path ENV N8N_USER_FOLDER=/home/n8n/.n8n RUN mkdir -p /home/n8n/.n8n && chown -R n8n:n8n /home/n8n # Switch to non-root user USER n8n WORKDIR /home/n8n # ── Core n8n settings ────────────────────── ENV N8N_PORT=7860 ENV N8N_PROTOCOL=https ENV N8N_HOST=0.0.0.0 ENV NODE_ENV=production ENV NODE_FUNCTION_ALLOW_BUILTIN=* ENV NODE_FUNCTION_ALLOW_EXTERNAL=* # ── Fix iframe embed in HF Spaces ────────── ENV N8N_SKIP_WEBHOOK_DEREGISTRATION_SHUTDOWN=true ENV EXECUTIONS_PROCESS=main # Expose the port HF Spaces expects EXPOSE 7860 CMD ["n8n", "start"]