Updated all config files.

This commit is contained in:
kris 2025-08-09 04:09:12 +08:00
parent 8833734b0b
commit ab41daf726
No known key found for this signature in database
GPG Key ID: F632C997B5DA1A2F
3 changed files with 150 additions and 43 deletions

126
docker-compose.yml Executable file → Normal file
View File

@ -1,37 +1,93 @@
# AUTHOR: Kris <connect@kristoffermalong.dev> volumes:
# NOTE: db_storage:
# Permission fix for linux based operating systems (If you are using local-space instead of mounted volumes). n8n_storage:
# sudo chown -R 1000:1000 ./n8n_data redis_storage:
# sudo chmod 755 ./n8n_data
# then, restart docker compose container
# This configuration is set to mounted volume by default.
services: x-shared: &shared
n8n: restart: unless-stopped
image: n8nio/n8n:stable image: docker.n8n.io/n8nio/n8n
container_name: n8n
ports:
- "5678:${N8N_PORT}"
user: "1000:1000"
environment: environment:
- N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE} - DB_TYPE=postgresdb
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER} - DB_POSTGRESDB_HOST=n8n_postgres
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD} - DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=n8n_redis
- QUEUE_HEALTH_CHECK_ACTIVE=true
- N8N_ENCRYPTION_KEY=${ENCRYPTION_KEY}
- N8N_HOST=${N8N_HOST} - N8N_HOST=${N8N_HOST}
- N8N_PORT=${N8N_PORT} - WEBHOOK_URL=${N8N_WEBHOOK_URL}
- N8N_PROTOCOL=${N8N_PROTOCOL}
- N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL} - N8N_EDITOR_BASE_URL=${N8N_EDITOR_BASE_URL}
- TZ=${TZ}
# For security. Set default values for the following environment variables.
- N8N_RUNNERS_ENABLED=true - N8N_RUNNERS_ENABLED=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=true
links:
- n8n_postgres
- n8n_redis
volumes: volumes:
- n8n_data:/home/node/.n8n:rw - n8n_storage:/home/node/.n8n
restart: unless-stopped depends_on:
n8n_redis:
condition: service_healthy
n8n_postgres:
condition: service_healthy
# We do this since we are not autoscaling. services:
# We can autoscale with kubernetes or k8s in the future. n8n_postgres:
# This is to prevent your host PC or VPS from draining its resources. container_name: n8n_postgres
image: postgres:16
restart: unless-stopped
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
volumes:
- db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10
deploy:
resources:
limits:
cpus: "${POSTGRES_LIMIT_CPUS}"
memory: "${POSTGRES_LIMIT_MEMORY}"
reservations:
cpus: "${POSTGRES_RESERVE_CPUS}"
memory: "${POSTGRES_RESERVE_MEMORY}"
n8n_redis:
container_name: n8n_redis
image: redis:6-alpine
restart: unless-stopped
volumes:
- redis_storage:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 10
deploy:
resources:
limits:
cpus: "${REDIS_LIMIT_CPUS}"
memory: "${REDIS_LIMIT_MEMORY}"
reservations:
cpus: "${REDIS_RESERVE_CPUS}"
memory: "${REDIS_RESERVE_MEMORY}"
n8n_main:
<<: *shared
restart: unless-stopped
container_name: n8n_main
ports:
- ${N8N_PORT}:5678
deploy: deploy:
resources: resources:
limits: limits:
@ -41,5 +97,19 @@ services:
cpus: "${N8N_RESERVE_CPUS}" cpus: "${N8N_RESERVE_CPUS}"
memory: "${N8N_RESERVE_MEMORY}" memory: "${N8N_RESERVE_MEMORY}"
volumes: n8n_worker:
n8n_data: <<: *shared
restart: unless-stopped
container_name: n8n_worker
command: worker
depends_on:
- n8n_main
deploy:
resources:
limits:
cpus: "${N8N_WORKER_LIMIT_CPUS}"
memory: "${N8N_WORKER_LIMIT_MEMORY}"
reservations:
cpus: "${N8N_WORKER_RESERVE_CPUS}"
memory: "${N8N_WORKER_RESERVE_MEMORY}"

View File

@ -1,23 +1,47 @@
# Rename to ".env" POSTGRES_USER=changethis
# ----- System Variables POSTGRES_PASSWORD=changethis
N8N_BASIC_AUTH_ACTIVE=true POSTGRES_DB=n8n
N8N_BASIC_AUTH_USER=admin POSTGRES_NON_ROOT_USER=changethis
N8N_BASIC_AUTH_PASSWORD=changeme POSTGRES_NON_ROOT_PASSWORD=changethis
N8N_HOST=localhost ENCRYPTION_KEY=changethis
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_EDITOR_BASE_URL=http://localhost:5678
TZ=Asia/Manila
N8N_HOST=localhost
N8N_WEBHOOK_URL=http://localhost:5678/
N8N_EDITOR_BASE_URL=http://localhost:5678
N8N_PORT=5678
# ----- Resources # ----- Resources
# --- N8N
# - Limits # - Limits
N8N_LIMIT_CPUS=0.25 N8N_LIMIT_CPUS=0.25
N8N_LIMIT_MEMORY=512MB N8N_LIMIT_MEMORY=512MB
# - Reservations # - Reservations
N8N_RESERVE_CPUS=0.25 N8N_RESERVE_CPUS=0.25
N8N_RESERVE_MEMORY=512MB N8N_RESERVE_MEMORY=512MB
# --- N8N Worker
# - Limits
N8N_WORKER_LIMIT_CPUS=0.25
N8N_WORKER_LIMIT_MEMORY=256MB
# - Reservations
N8N_WORKER_RESERVE_CPUS=0.25
N8N_WORKER_RESERVE_MEMORY=256MB
# --- Redis
# - Limits
REDIS_LIMIT_CPUS=0.25
REDIS_LIMIT_MEMORY=128MB
# - Reservations
REDIS_RESERVE_CPUS=0.25
REDIS_RESERVE_MEMORY=128MB
# --- Postgres
# - Limits
POSTGRES_LIMIT_CPUS=0.25
POSTGRES_LIMIT_MEMORY=256MB
# - Reservations
POSTGRES_RESERVE_CPUS=0.25
POSTGRES_RESERVE_MEMORY=256MB

13
init-data.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
set -e;
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
GRANT CREATE ON SCHEMA public TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi