File size: 2,918 Bytes
27d9a44
d2b4c55
 
 
 
 
097ecf7
d2b4c55
 
 
 
 
 
ec502d5
9d3bacf
d2b4c55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dbe6caf
d2b4c55
4cd3e86
ec502d5
d2b4c55
 
ec502d5
4cd3e86
d2b4c55
 
ec502d5
 
 
d2b4c55
ec502d5
 
 
 
d2b4c55
 
dbe6caf
ec502d5
 
9d3bacf
4cd3e86
ec502d5
 
dbe6caf
ec502d5
 
 
 
 
 
 
 
 
 
130b326
4cd3e86
 
 
 
 
 
ec502d5
097ecf7
 
 
4cd3e86
 
dbe6caf
 
d2b4c55
097ecf7
d2b4c55
9d3bacf
 
ec502d5
4cd3e86
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
FROM node:22-bullseye-slim

USER root

# Arguments that can be passed at build time
ARG N8N_PATH=/usr/local/lib/node_modules/n8n
ARG BASE_PATH=/home/nodejs/.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 N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=$N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
ARG allowVulnerableTags=true
ARG N8N_HOST=0.0.0.0
ARG N8N_PORT=7860
ARG N8N_PROTOCOL=https
ARG N8N_EDITOR_BASE_URL=$N8N_EDITOR_BASE_URL
ARG WEBHOOK_URL=$WEBHOOK_URL
ARG GENERIC_TIMEZONE=$GENERIC_TIMEZONE
ARG TZ=$TZ
ARG N8N_ENCRYPTION_KEY=$N8N_ENCRYPTION_KEY
ARG DB_TYPE=$DB_TYPE
ARG DB_POSTGRESDB_SCHEMA=$DB_POSTGRESDB_SCHEMA
ARG DB_POSTGRESDB_HOST=$DB_POSTGRESDB_HOST
ARG DB_POSTGRESDB_DATABASE=$DB_POSTGRESDB_DATABASE
ARG DB_POSTGRESDB_PORT=$DB_POSTGRESDB_PORT
ARG DB_POSTGRESDB_USER=$DB_POSTGRESDB_USER
ARG DB_POSTGRESDB_PASSWORD=$DB_POSTGRESDB_PASSWORD
ARG NODE_FUNCTION_ALLOW_BUILTIN=*
ARG NODE_FUNCTION_ALLOW_EXTERNAL=*

# Install system dependencies
# ⚠️  apt-get — base Debian pas Alpine
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    python3 \
    python3-pip \
    python3-venv \
    make \
    g++ \
    build-essential \
    libcairo2-dev \
    libpango1.0-dev \
    chromium \
    postgresql-client \
    curl \
    tini \
 && rm -rf /var/lib/apt/lists/*

# Set environment variables
ENV PUPPETEER_SKIP_DOWNLOAD=true \
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \
    N8N_HOST=0.0.0.0 \
    N8N_PORT=7860 \
    N8N_LISTEN_ADDRESS=0.0.0.0 \
    NODE_FUNCTION_ALLOW_BUILTIN=* \
    NODE_FUNCTION_ALLOW_EXTERNAL=*

# Install n8n globally (version 2.25.7)
RUN npm install -g n8n@2.25.7 --no-audit --no-fund --loglevel=error

# Rebuild native modules pour Debian/glibc ARM64
RUN cd /usr/local/lib/node_modules/n8n && \
    npm rebuild sqlite3 --build-from-source 2>/dev/null || true && \
    if [ -d "node_modules/isolated-vm" ]; then \
        cd node_modules/isolated-vm && \
        npx --yes node-gyp rebuild --release 2>/dev/null || true; \
    fi

# Créer le virtualenv Python pour le Python Task Runner
# Permet d'utiliser Python dans les nœuds Code sans conteneur séparé
RUN python3 -m venv /usr/local/lib/node_modules/n8n/node_modules/@n8n/task-runner/.venv \
    && /usr/local/lib/node_modules/n8n/node_modules/@n8n/task-runner/.venv/bin/pip install --upgrade pip 2>/dev/null || true

# Créer l'utilisateur nodejs avec home directory correct
RUN groupadd -g 1001 -r nodejs \
    && useradd -u 1001 -r -g nodejs -d /home/nodejs nodejs \
    && mkdir -p /home/nodejs/.n8n \
    && chmod -R 755 /home/nodejs \
    && chown -R nodejs:nodejs /home/nodejs \
    && chown -R nodejs:nodejs /usr/local/lib/node_modules/n8n/node_modules/@n8n/task-runner/.venv 2>/dev/null || true

USER nodejs

WORKDIR /home/nodejs

EXPOSE 7860

ENTRYPOINT ["tini", "--"]
CMD ["n8n", "start"]