FROM node:20-alpine # Set user to root for installation USER root # Arguments that can be passed at build time 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 N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=$N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS ARG N8N_RUNNERS_ENABLED=true ARG allowVulnerableTags=true ARG N8N_HOST=$N8N_HOST ARG N8N_PORT=$N8N_PORT 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=* ARG EXECUTIONS_DATA_SAVE_ON_SUCCESS=none ARG EXECUTIONS_DATA_SAVE_ON_ERROR=none ARG EXECUTIONS_DATA_PRUNE=true ARG EXECUTIONS_DATA_MAX_AGE=24 ARG EXECUTIONS_DATA_PRUNE_MAX_COUNT=500 # Install system dependencies RUN apk add --no-cache \ git \ python3 \ py3-pip \ make \ g++ \ build-base \ cairo-dev \ pango-dev \ chromium \ postgresql-client \ curl \ ffmpeg \ openssl \ yt-dlp \ freetype \ harfbuzz \ nss \ ttf-freefont \ fontconfig \ ttf-dejavu \ ttf-droid \ ttf-liberation \ ghostscript \ && rm -rf /var/cache/apk/* # Set environment variables ENV PUPPETEER_SKIP_DOWNLOAD=true ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser ENV NODES_EXCLUDE="[]" ENV N8N_UI_CUSTOM_CSS=/root/.n8n/custom/custom.css ENV N8N_PAYLOAD_SIZE_MAX=300 ENV N8N_COMMUNITY_PACKAGES_ENABLED=true ENV EXECUTIONS_DATA_SAVE_ON_SUCCESS=none ENV EXECUTIONS_DATA_SAVE_ON_ERROR=none ENV EXECUTIONS_DATA_PRUNE=true ENV EXECUTIONS_DATA_MAX_AGE=24 ENV EXECUTIONS_DATA_PRUNE_MAX_COUNT=500 # Install n8n globally # RUN npm install -g n8n@1.123.5 # RUN npm install -g n8n-nodes-puppeteer # RUN npm install -g #@postpulse/n8n-nodes-postpulse \ # Install n8n globally + Puppeteer runtime + Puppeteer UI node RUN npm install -g \ n8n@1.123.5 # Install the package #RUN mkdir -p /home/node/.n8n/nodes && \ # cd /home/node/.n8n/nodes && \ # npm install n8n-nodes-puppeteer #cd /usr/local/lib/node_modules/n8n/WORKFLOWS # Create necessary directories (<<<<< this is the line that was modified) RUN mkdir -p $BASE_PATH \ && chmod -R 777 $BASE_PATH #RUN mkdir -p /root/.n8n/nodes && \ # cd /root/.n8n/nodes && \ # npm install n8n-nodes-puppeteer --omit=dev --no-audit --no-fund # Set working directory WORKDIR /data # Start n8n # CMD ["n8n", "start"] # Start n8n using pm2 to ensure it runs forever # CMD ["pm2", "start", "n8n", "--", "start"] CMD while true; do n8n start; sleep 3600; done