# Use official Node.js slim image FROM node:20-slim # Install system dependencies for image/audio processing (optional) USER root RUN apt update && apt install -y \ ffmpeg git python3 python3-pip make g++ build-essential \ libcairo2-dev libpango1.0-dev libjpeg-dev libpng-dev libgif-dev \ librsvg2-dev chromium libvips-dev libvips-tools imagemagick \ libmagickwand-dev libglib2.0-dev libjpeg62-turbo-dev \ libexif-dev libheif-dev graphicsmagick && \ apt clean # Puppeteer Chromium path ENV PUPPETEER_SKIP_DOWNLOAD=true ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium # Install n8n globally RUN npm install -g n8n # Switch to HF default node user USER node WORKDIR /workspace # Expose HF default port ENV N8N_PORT=7860 EXPOSE 7860 # Timezone & debug ENV TZ=UTC ENV GENERIC_TIMEZONE=UTC ENV SHARP_VERBOSE=true # PostgreSQL config will come from secrets ENV DB_TYPE=postgresdb ENV DB_POSTGRESDB_HOST=${DB_POSTGRESDB_HOST} ENV DB_POSTGRESDB_PORT=${DB_POSTGRESDB_PORT} ENV DB_POSTGRESDB_DATABASE=${DB_POSTGRESDB_DATABASE} ENV DB_POSTGRESDB_USER=${DB_POSTGRESDB_USER} ENV DB_POSTGRESDB_PASSWORD=${DB_POSTGRESDB_PASSWORD} # n8n credentials encryption key ENV N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} # Start n8n with tunnel for public HF URL CMD ["n8n", "start", "--host", "0.0.0.0", "--port", "7860"]