FROM node:20-slim # ── Network ────────────────────────────────────────────── ENV N8N_HOST=0.0.0.0 ENV N8N_PORT=7860 ENV N8N_PROTOCOL=https ENV NODE_ENV=production # ── Proxy Fix (Hugging Face reverse proxy) ──────────────── ENV N8N_PROXY_HOPS=1 # ── Timezone ────────────────────────────────────────────── ENV GENERIC_TIMEZONE=Africa/Cairo # ── Auth ────────────────────────────────────────────────── ENV N8N_BASIC_AUTH_ACTIVE=true # ── Data folder ─────────────────────────────────────────── ENV N8N_USER_FOLDER=/home/node/.n8n # ── Disable noise ───────────────────────────────────────── ENV N8N_DIAGNOSTICS_ENABLED=false ENV N8N_VERSION_NOTIFICATIONS_ENABLED=false ENV N8N_HIRING_BANNER_ENABLED=false ENV N8N_LOG_LEVEL=warn ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false # ── Executions ──────────────────────────────────────────── ENV EXECUTIONS_DATA_SAVE_ON_ERROR=all ENV EXECUTIONS_DATA_SAVE_ON_SUCCESS=all # ── Install deps ────────────────────────────────────────── RUN apt-get update -qq && apt-get install -y --no-install-recommends \ ca-certificates curl \ && apt-get clean && rm -rf /var/lib/apt/lists/* # ── Install n8n ─────────────────────────────────────────── RUN npm install -g n8n --loglevel=error # ── Prepare data folder ────────────────────────────────── # node:20-slim already has user "node" (uid 1000) — no useradd needed RUN mkdir -p /home/node/.n8n && chown -R node:node /home/node USER node WORKDIR /home/node EXPOSE 7860 CMD ["n8n", "start"]