11 changed files with 302 additions and 0 deletions
@ -0,0 +1,19 @@ |
|||||
|
# Folder where data should be saved |
||||
|
DATA_FOLDER=/root/n8n/ |
||||
|
|
||||
|
# The top level domain to serve from |
||||
|
DOMAIN_NAME=example.com |
||||
|
|
||||
|
# The subfolder to serve from |
||||
|
SUBFOLDER=app1 |
||||
|
N8N_PATH=/app1/ |
||||
|
|
||||
|
# DOMAIN_NAME and SUBDOMAIN combined decide where n8n will be reachable from |
||||
|
# above example would result in: https://example.com/n8n/ |
||||
|
|
||||
|
# Optional timezone to set which gets used by Cron-Node by default |
||||
|
# If not set New York time will be used |
||||
|
GENERIC_TIMEZONE=Europe/Berlin |
||||
|
|
||||
|
# The email address to use for the SSL certificate creation |
||||
|
SSL_EMAIL=[email protected] |
@ -0,0 +1,20 @@ |
|||||
|
# n8n on Subfolder with SSL |
||||
|
|
||||
|
Starts n8n and deploys it on a subfolder |
||||
|
|
||||
|
## Start |
||||
|
|
||||
|
To start n8n in a subfolder simply start docker-compose by executing the following |
||||
|
command in the current folder. |
||||
|
|
||||
|
**IMPORTANT:** But before you do that change the default users and passwords in the `.env` file! |
||||
|
|
||||
|
``` |
||||
|
docker-compose up -d |
||||
|
``` |
||||
|
|
||||
|
To stop it execute: |
||||
|
|
||||
|
``` |
||||
|
docker-compose stop |
||||
|
``` |
@ -0,0 +1,62 @@ |
|||||
|
version: '3' |
||||
|
|
||||
|
services: |
||||
|
traefik: |
||||
|
image: 'traefik' |
||||
|
command: |
||||
|
- '--api=true' |
||||
|
- '--api.insecure=true' |
||||
|
- '--api.dashboard=true' |
||||
|
- '--providers.docker=true' |
||||
|
- '--providers.docker.exposedbydefault=false' |
||||
|
- '--entrypoints.websecure.address=:443' |
||||
|
- '--certificatesresolvers.mytlschallenge.acme.tlschallenge=true' |
||||
|
- '--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}' |
||||
|
- '--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json' |
||||
|
ports: |
||||
|
- '443:443' |
||||
|
- '80:80' |
||||
|
volumes: |
||||
|
- ${DATA_FOLDER}/letsencrypt:/letsencrypt |
||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro |
||||
|
|
||||
|
initContainer: |
||||
|
image: busybox |
||||
|
command: ['sh', '-c', 'chown -R 1000:1000 /home/node/.n8n'] |
||||
|
volumes: |
||||
|
- ${DATA_FOLDER}/.n8n:/home/node/.n8n |
||||
|
|
||||
|
n8n: |
||||
|
image: docker.n8n.io/n8nio/n8n |
||||
|
ports: |
||||
|
- '127.0.0.1:5678:5678' |
||||
|
labels: |
||||
|
- traefik.enable=true |
||||
|
- traefik.http.routers.n8n.rule=Host(`${DOMAIN_NAME}`) |
||||
|
- traefik.http.routers.n8n.tls=true |
||||
|
- traefik.http.routers.n8n.entrypoints=websecure |
||||
|
- 'traefik.http.routers.n8n.rule=PathPrefix(`/${SUBFOLDER}{regex:$$|/.*}`)' |
||||
|
- 'traefik.http.middlewares.n8n-stripprefix.stripprefix.prefixes=/${SUBFOLDER}' |
||||
|
- 'traefik.http.routers.n8n.middlewares=n8n-stripprefix' |
||||
|
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge |
||||
|
- traefik.http.middlewares.n8n.headers.SSLRedirect=true |
||||
|
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000 |
||||
|
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true |
||||
|
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true |
||||
|
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true |
||||
|
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME} |
||||
|
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true |
||||
|
- traefik.http.middlewares.n8n.headers.STSPreload=true |
||||
|
environment: |
||||
|
- N8N_HOST=${DOMAIN_NAME} |
||||
|
- N8N_PORT=5678 |
||||
|
- N8N_PROTOCOL=https |
||||
|
- NODE_ENV=production |
||||
|
- N8N_PATH |
||||
|
- WEBHOOK_URL=https://${DOMAIN_NAME}${N8N_PATH} |
||||
|
volumes: |
||||
|
- /var/run/docker.sock:/var/run/docker.sock |
||||
|
- ${DATA_FOLDER}/.n8n:/home/node/.n8n |
||||
|
depends_on: |
||||
|
initContainer: |
||||
|
condition: service_completed_successfully |
@ -0,0 +1,6 @@ |
|||||
|
POSTGRES_USER=changeUser |
||||
|
POSTGRES_PASSWORD=changePassword |
||||
|
POSTGRES_DB=n8n |
||||
|
|
||||
|
POSTGRES_NON_ROOT_USER=changeUser |
||||
|
POSTGRES_NON_ROOT_PASSWORD=changePassword |
@ -0,0 +1,24 @@ |
|||||
|
# n8n with PostgreSQL |
||||
|
|
||||
|
Starts n8n with PostgreSQL as database. |
||||
|
|
||||
|
## Start |
||||
|
|
||||
|
To start n8n with PostgreSQL simply start docker-compose by executing the following |
||||
|
command in the current folder. |
||||
|
|
||||
|
**IMPORTANT:** But before you do that change the default users and passwords in the [`.env`](.env) file! |
||||
|
|
||||
|
``` |
||||
|
docker-compose up -d |
||||
|
``` |
||||
|
|
||||
|
To stop it execute: |
||||
|
|
||||
|
``` |
||||
|
docker-compose stop |
||||
|
``` |
||||
|
|
||||
|
## Configuration |
||||
|
|
||||
|
The default name of the database, user and password for PostgreSQL can be changed in the [`.env`](.env) file in the current directory. |
@ -0,0 +1,44 @@ |
|||||
|
version: '3.8' |
||||
|
|
||||
|
volumes: |
||||
|
db_storage: |
||||
|
n8n_storage: |
||||
|
|
||||
|
services: |
||||
|
postgres: |
||||
|
image: postgres:16 |
||||
|
restart: always |
||||
|
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 |
||||
|
|
||||
|
n8n: |
||||
|
image: docker.n8n.io/n8nio/n8n |
||||
|
restart: always |
||||
|
environment: |
||||
|
- DB_TYPE=postgresdb |
||||
|
- DB_POSTGRESDB_HOST=postgres |
||||
|
- DB_POSTGRESDB_PORT=5432 |
||||
|
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB} |
||||
|
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} |
||||
|
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} |
||||
|
ports: |
||||
|
- 5678:5678 |
||||
|
links: |
||||
|
- postgres |
||||
|
volumes: |
||||
|
- n8n_storage:/home/node/.n8n |
||||
|
depends_on: |
||||
|
postgres: |
||||
|
condition: service_healthy |
@ -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 |
@ -0,0 +1,6 @@ |
|||||
|
POSTGRES_USER=changeUser |
||||
|
POSTGRES_PASSWORD=changePassword |
||||
|
POSTGRES_DB=n8n |
||||
|
|
||||
|
POSTGRES_NON_ROOT_USER=changeUser |
||||
|
POSTGRES_NON_ROOT_PASSWORD=changePassword |
@ -0,0 +1,24 @@ |
|||||
|
# n8n with PostgreSQL and Worker |
||||
|
|
||||
|
Starts n8n with PostgreSQL as database, and the Worker as a separate container. |
||||
|
|
||||
|
## Start |
||||
|
|
||||
|
To start n8n simply start docker-compose by executing the following |
||||
|
command in the current folder. |
||||
|
|
||||
|
**IMPORTANT:** But before you do that change the default users and passwords in the [`.env`](.env) file! |
||||
|
|
||||
|
``` |
||||
|
docker-compose up -d |
||||
|
``` |
||||
|
|
||||
|
To stop it execute: |
||||
|
|
||||
|
``` |
||||
|
docker-compose stop |
||||
|
``` |
||||
|
|
||||
|
## Configuration |
||||
|
|
||||
|
The default name of the database, user and password for PostgreSQL can be changed in the [`.env`](.env) file in the current directory. |
@ -0,0 +1,71 @@ |
|||||
|
version: '3.8' |
||||
|
|
||||
|
volumes: |
||||
|
db_storage: |
||||
|
n8n_storage: |
||||
|
redis_storage: |
||||
|
|
||||
|
x-shared: &shared |
||||
|
restart: always |
||||
|
image: docker.n8n.io/n8nio/n8n |
||||
|
environment: |
||||
|
- DB_TYPE=postgresdb |
||||
|
- DB_POSTGRESDB_HOST=postgres |
||||
|
- 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=redis |
||||
|
- QUEUE_HEALTH_CHECK_ACTIVE=true |
||||
|
links: |
||||
|
- postgres |
||||
|
- redis |
||||
|
volumes: |
||||
|
- n8n_storage:/home/node/.n8n |
||||
|
depends_on: |
||||
|
redis: |
||||
|
condition: service_healthy |
||||
|
postgres: |
||||
|
condition: service_healthy |
||||
|
|
||||
|
services: |
||||
|
postgres: |
||||
|
image: postgres:16 |
||||
|
restart: always |
||||
|
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 |
||||
|
|
||||
|
redis: |
||||
|
image: redis:6-alpine |
||||
|
restart: always |
||||
|
volumes: |
||||
|
- redis_storage:/data |
||||
|
healthcheck: |
||||
|
test: ['CMD', 'redis-cli', 'ping'] |
||||
|
interval: 5s |
||||
|
timeout: 5s |
||||
|
retries: 10 |
||||
|
|
||||
|
n8n: |
||||
|
<<: *shared |
||||
|
ports: |
||||
|
- 5678:5678 |
||||
|
|
||||
|
n8n-worker: |
||||
|
<<: *shared |
||||
|
command: worker |
||||
|
depends_on: |
||||
|
- n8n |
@ -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 |
Loading…
Reference in new issue