nnn / Dockerfile_node-bullseye
R1000's picture
Rename Dockerfile to Dockerfile_node-bullseye
ae34ca6 verified
FROM node:22-bullseye
User root
WORKDIR /app
# +-- Install system tools including chromium (required by Playwright) and ffmpeg
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
python3 python3-pip curl git wget make g++ \
chromium ffmpeg tini \
libgtk-3-0 libxtst6 libxcomposite1 libxrandr2 \
libnss3 libatk-bridge2.0-0 libgbm1 libasound2 libxss1 \
ca-certificates fonts-liberation \
libatk1.0-0 \
#libatk-1.0 \
libatk1.0-0 \
libxshmfence1 libxcursor1 \
libxdamage1 \
#ttf-freefont \
&& rm -rf /var/lib/apt/lists/*
# Update npm and globally install n8n (your original setup)
RUN npm install -g npm@latest && npm install -g n8n@latest
RUN npm install -g puppeteer
# Add Playwright package and install all browsers + their native deps
RUN npm install playwright && npx playwright install --with-deps
# If you only need specific browsers (saves size), you can do:
#RUN npx playwright install chromium
#RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-puppeteer && npm install n8n-nodes-playwright
EXPOSE 7860
ENV PORT=7860 \
N8N_HOST=0.0.0.0 \
N8N_PORT=7860 \
N8N_LISTEN_ADDRESS=0.0.0.0 \
N8N_PROTOCOL=https \
N8N_EDITOR_BASE_URL=https://r1000-nnn.hf.space \
WEBHOOK_URL=https://r1000-nnn.hf.space \
N8N_DISABLE_UI=false \
N8N_BASIC_AUTH_ACTIVE=false \
N8N_METRICS=false \
N8N_DIAGNOSTICS_ENABLED=false \
NODE_ENV=production \
N8N_RUNNERS_ENABLED=true \
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \
NODE_FUNCTION_ALLOW_EXTERNAL=puppeteer \
NODE_FUNCTION_ALLOW_BUILTIN=* \
N8N_RUNNERS_ALLOW_PROTOTYPE_MUTATION=true
# keep your health-check or "keep-alive" cron alive (optional)
RUN echo '#!/bin/sh\nwhile true; do curl -s https://r1000-nnn.hf.space/; sleep 43200; done &' > /periodic.sh \
&& chmod +x /periodic.sh
ENTRYPOINT ["tini", "--"]
CMD ["/bin/sh", "-c", "/periodic.sh & exec n8n"]