File size: 2,382 Bytes
10f0d36
bee8060
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b9f5075
bee8060
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b9f5075
bee8060
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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 \
    libatk-bridge2.0-0 \
    libx11-xcb1 \
    libxcomposite1 \
    libxdamage1 \
    libxrandr2 \
    libgbm1 \
    libasound2 \
    libxshmfence1 \
    libenchant-2-2 \
    libsecret-1-0 \
    libhyphen0 \
    libmanette-0.2-0 \
    libunwind8 \
    libdw1 \
    libegl1 \
    libgudev-1.0-0 \
    libgles2 \
 && 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-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


# Start n8n
CMD ["n8n", "start"]