Files
home-server-docker/project/service/n8n/Dockerfile

52 lines
1.2 KiB
Docker

# Start with the official n8n image
FROM n8nio/n8n:2.4.2
# Copy apk and its deps from Alpine 3.23
COPY --from=alpine:3.23 /sbin/apk /sbin/apk
COPY --from=alpine:3.23 /usr/lib/libapk.so* /usr/lib/
# Switch to root to install dependencies
USER root
# Install Chromium and necessary dependencies for Puppeteer
RUN set -x \
&& apk update \
&& apk upgrade \
&& apk add --no-cache \
udev \
chromium \
nss \
freetype \
harfbuzz \
ca-certificates \
ttf-freefont \
wget \
nodejs \
npm
# Set environment variable for Puppeteer to find Chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
ENV XDG_CONFIG_HOME=/tmp/.chromium
ENV XDG_CACHE_HOME=/tmp/.chromium
# Install Puppeteer
RUN npm install puppeteer
# Install restic and rclone for backups
RUN apk add --no-cache \
restic \
curl \
unzip
# Download and install rclone
RUN curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip \
&& unzip rclone-current-linux-amd64.zip \
&& cd rclone-*-linux-amd64 \
&& cp rclone /usr/local/bin/ \
&& chmod 755 /usr/local/bin/rclone \
&& cd .. && rm -rf rclone-*-linux-amd64*
# Revert back to non-root (default n8n user)
USER node