n8n-suite-open / Dockerfile
Leon4gr45's picture
Update Dockerfile
6caa281 verified
# Use a base image with systemd or a process manager if complex, otherwise a simpler base
# Ubuntu is a good general-purpose choice for installing multiple services
FROM ubuntu:22.04
ARG DEBIAN_FRONTEND=noninteractive
# Install dependencies: curl, wget, gnupg, sudo, procps (for ps), net-tools (for netstat)
RUN apt-get update && apt-get install -y \
curl \
wget \
gnupg \
sudo \
procps \
net-tools \
ca-certificates \
postgresql \
postgresql-contrib \
&& rm -rf /var/lib/apt/lists/*
# --- Install Node.js (e.g., v20.x LTS) ---
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
RUN node -v
RUN npm -v
# Install n8n
RUN npm install -g n8n
# Install Qdrant
ARG QDRANT_VERSION=v1.9.2
RUN wget "https://github.com/qdrant/qdrant/releases/download/${QDRANT_VERSION}/qdrant-x86_64-unknown-linux-gnu.tar.gz" -O qdrant.tar.gz && \
tar -xzf qdrant.tar.gz && \
mv qdrant /usr/local/bin/qdrant && \
rm qdrant.tar.gz && \
mkdir -p /qdrant/storage && \
mkdir -p /qdrant/config
COPY qdrant_config.yaml /qdrant/config/config.yaml
# Install Ollama
RUN curl -fsSL https://ollama.com/install.sh | sh
# Create a non-root user for n8n and other services if possible
RUN useradd -m -s /bin/bash n8nuser
RUN mkdir -p /home/n8nuser/.n8n /data/shared /home/n8nuser/.ollama /var/run/postgresql
RUN chown -R n8nuser:n8nuser /home/n8nuser /data/shared /qdrant /var/run/postgresql
# Setup environment variables
# IMPORTANT: NO end-of-line comments in this ENV block
ENV N8N_HOST="0.0.0.0"
ENV N8N_PORT="5678"
ENV NODE_ENV="production"
ENV DB_TYPE="postgresdb"
ENV DB_POSTGRESDB_HOST="localhost"
ENV DB_POSTGRESDB_PORT="5432"
ENV DB_POSTGRESDB_DATABASE="n8n"
ENV DB_POSTGRESDB_USER="n8n"
ENV OLLAMA_HOST="0.0.0.0:11434"
ENV N8N_SEC_EMBEDDER_HEADER_ALLOW_FROM_REGEX="^https?:\/\/([a-zA-Z0-9\-]+\.)*hf\.space$"
ENV N8N_SEC_ALLOW_ALL_ORIGINS_FOR_WEBHOOKS="true"
ENV N8N_RUNNERS_ENABLED="true"
# Copy startup script
COPY start.sh /start.sh
RUN chmod +x /start.sh
# Expose n8n port
EXPOSE 5678
EXPOSE 11434
EXPOSE 6333
EXPOSE 5432
USER n8nuser
ENTRYPOINT ["/start.sh"]