n8n / Dockerfile
amangs's picture
Update Dockerfile
bf067f5 verified
FROM node:24-bookworm-slim
USER root
# Build-time args
ARG N8N_PATH=/usr/local/lib/node_modules/n8n
ARG BASE_PATH=/root/.n8n
ARG DATABASE_PATH=$BASE_PATH/database
ARG CONFIG_PATH=$BASE_PATH/config
ARG WORKFLOWS_PATH=$BASE_PATH/workflows
ARG LOGS_PATH=$BASE_PATH/logs
ARG allowVulnerableTags=true
# Environment Variables
ENV N8N_DIAGNOSTICS_ENABLED=false
ENV N8N_VERSION_NOTIFICATIONS_ENABLED=false
ENV N8N_TEMPLATES_ENABLED=false
ENV N8N_ENDPOINT_WEBHOOK=io
ENV N8N_ENDPOINT_WEBHOOK_TEST=io-in
ENV N8N_ENDPOINT_WEBHOOK_WAIT=io-call
ENV N8N_USER_FOLDER=/home/node/.n8n
ENV N8N_CONFIG_FILES=/home/node/.n8n/settings.json
ENV NODE_FUNCTION_ALLOW_BUILTIN=*
ENV NODE_FUNCTION_ALLOW_EXTERNAL=*
ENV N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/nodes
ENV NODE_ENV=production
ENV DEBIAN_FRONTEND=noninteractive
# Expose ports n8n typically uses
EXPOSE 7860 5678 5679
# Install minimal system deps
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
git \
curl \
python3 \
build-essential \
g++ \
libcairo2-dev \
libpango1.0-dev \
libcairo2 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
python3-pip \
postgresql-client \
ffmpeg \
libnss3 \
chromium \
libatk-bridge2.0-0 \
libx11-xcb1 \
libxcomposite1 \
libxdamage1 \
libxrandr2 \
libgbm1 \
libasound2 \
libxshmfence1 \
libgtk-3-0 \
libenchant-2-2 \
libsecret-1-0 \
libhyphen0 \
libmanette-0.2-0 \
libunwind8 \
libdw1 \
libegl1 \
libgudev-1.0-0 \
libgles2 \
yt-dlp \
&& rm -rf /var/lib/apt/lists/*
# Prepare runtime folders and settings file (owned by node)
RUN mkdir -p /home/node/.n8n/nodes \
&& touch $N8N_CONFIG_FILES \
&& printf '{}' > $N8N_CONFIG_FILES \
&& chmod 600 $N8N_CONFIG_FILES \
&& chown -R node:node /home/node/.n8n || true
# Install n8n globally
RUN npm install -g --unsafe-perm n8n@latest
RUN npm install -g pnpm
# Install community nodes
RUN cd /home/node/.n8n/nodes \
&& npm init -y \
&& npm --unsafe-perm install --no-audit --no-fund \
@devlikeapro/n8n-nodes-waha \
@aldinokemal2104/n8n-nodes-gowa \
n8n-nodes-cheerio-html-parser \
n8n-nodes-scrapeninja \
n8n-nodes-puppeteer \
n8n-nodes-playwright-session \
n8n-nodes-evolution-api-english \
n8n-nodes-chatery-whatsapp \
&& pnpm rebuild n8n-nodes-playwright-session \
&& chown -R node:node /home/node/.n8n
# Switch to non-root node user and set workdir
USER node
WORKDIR /home/node
# Install Playwright & Puppeteer browsers as node
RUN npx playwright install \
&& npx puppeteer browsers install chrome
# Start n8n
CMD ["n8n", "start"]