Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 38 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
# PostgreSQL Configuration
# =============================
# Development Environment
# =============================
# PostgreSQL (development)
POSTGRES_USER=temporal
POSTGRES_PASSWORD=temporal
POSTGRES_DB=temporal
POSTGRES_PORT=5432
POSTGRES_DB_N8N=n8n
POSTGRES_USER_N8N=n8n
POSTGRES_PASSWORD_N8N=n8n_password
POSTGRES_DB_TEMPORAL=temporal
POSTGRES_USER_TEMPORAL=temporal
POSTGRES_PASSWORD_TEMPORAL=temporal

# n8n Configuration
# n8n (development)
N8N_WEBHOOK_URL=http://localhost:5678/
N8N_ENCRYPTION_KEY=a_random_string_for_encryption
N8N_PORT=5678
N8N_HOST=n8n.example.com

# OpenSearch Configuration
# OpenSearch (development)
DISABLE_SECURITY_PLUGIN=true
OPENSEARCH_PORT=9200

# Temporal Configuration
# Temporal (development)
TEMPORAL_PORT=7233
TEMPORAL_UI_PORT=8080

Expand All @@ -26,3 +35,28 @@ OAUTH2_PROXY_REDIRECT_URL=https://your-domain/oauth2/callback

# GitHub MCP Server configuration
GITHUB_PERSONAL_ACCESS_TOKEN=github_access_token

# =============================
# Production Environment
# =============================
# n8n (production)
N8N_WEBHOOK_URL=
N8N_ENCRYPTION_KEY=
N8N_HOST=
POSTGRES_HOST=
POSTGRES_PORT=5432
POSTGRES_DB_N8N=
POSTGRES_USER_N8N=
POSTGRES_PASSWORD_N8N=

# opensearch (production)
OPENSEARCH_PORT=9200

# temporal (production)
TEMPORAL_PORT=7233

# temporal-ui (production)
TEMPORAL_UI_PORT=8080
POSTGRES_DB_TEMPORAL=
POSTGRES_USER_TEMPORAL=
POSTGRES_PASSWORD_TEMPORAL=
35 changes: 23 additions & 12 deletions docker-compose.prod.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,43 @@
services:
n8n:
depends_on: !reset null
environment:
- WEBHOOK_URL=${N8N_WEBHOOK_URL:?N8N_WEBHOOK_URL is required}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY:?N8N_ENCRYPTION_KEY is required}
- N8N_HOST=n8n.speedandfunction.com
- N8N_HOST=${N8N_HOST:?N8N_HOST is required}
- DB_POSTGRESDB_HOST=${POSTGRES_HOST:?POSTGRES_HOST is required}
- DB_POSTGRESDB_PORT=${POSTGRES_PORT:-5432}
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB_N8N:?POSTGRES_DB_N8N is required}
- DB_POSTGRESDB_USER=${POSTGRES_USER_N8N:?POSTGRES_USER_N8N is required}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD_N8N:?POSTGRES_PASSWORD_N8N is required}
opensearch:
environment:
- OPENSEARCH_PORT=${OPENSEARCH_PORT:?OPENSEARCH_PORT is required}

postgresql:
environment:
- POSTGRES_USER=${POSTGRES_USER:?POSTGRES_USER is required}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
- POSTGRES_DB=${POSTGRES_DB:?POSTGRES_DB is required}
postgresql: !reset null

temporal:
depends_on: !reset null
environment:
- TEMPORAL_PORT=${TEMPORAL_PORT:?TEMPORAL_PORT is required}
- POSTGRES_SEEDS=${POSTGRES_HOST:?POSTGRES_HOST is required}
- DB_PORT=${POSTGRES_PORT:-5432}
- DBNAME=${POSTGRES_DB_TEMPORAL:?POSTGRES_DB_TEMPORAL is required}
- POSTGRES_USER=${POSTGRES_USER_TEMPORAL:?POSTGRES_USER_TEMPORAL is required}
- POSTGRES_PWD=${POSTGRES_PASSWORD_TEMPORAL:?POSTGRES_PASSWORD_TEMPORAL is required}
- ES_SEEDS=opensearch
- ES_VERSION=v7
- DB=postgresql
- ENABLE_ES=true

temporal-ui:
environment:
- TEMPORAL_UI_PORT=${TEMPORAL_UI_PORT:?TEMPORAL_UI_PORT is required}
- POSTGRES_SEEDS=${POSTGRES_HOST:?POSTGRES_HOST is required}
- DB_PORT=${POSTGRES_PORT:-5432}
- DBNAME=${POSTGRES_DB_TEMPORAL:?POSTGRES_DB_TEMPORAL is required}
- POSTGRES_USER=${POSTGRES_USER_TEMPORAL:?POSTGRES_USER_TEMPORAL is required}
- POSTGRES_PWD=${POSTGRES_PASSWORD_TEMPORAL:?POSTGRES_PASSWORD_TEMPORAL is required}
ports: !reset []

oauth2-proxy:
Expand Down Expand Up @@ -92,9 +109,3 @@ volumes:
type: none
o: bind
device: /data/opensearch
postgresql-data:
driver: local
driver_opts:
type: none
o: bind
device: /data/postgresql
45 changes: 31 additions & 14 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ services:
restart: unless-stopped
ports:
- "${N8N_PORT:-5678}:5678"
depends_on:
postgresql:
condition: service_healthy
environment:
- WEBHOOK_URL=${N8N_WEBHOOK_URL:-http://localhost:5678/}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY:-a_random_string_for_encryption}
Expand All @@ -18,6 +21,14 @@ services:
- N8N_METRICS=true
- N8N_HEALTH_CHECK_ENDPOINT=true
- N8N_EXPRESS_TRUST_PROXY=true
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgresql
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB_N8N:-n8n}
- DB_POSTGRESDB_USER=${POSTGRES_USER_N8N:-n8n}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD_N8N:-n8n_password}
- N8N_LOG_LEVEL=debug
- N8N_LOG_OUTPUT=console
volumes:
- n8n_data:/home/node/.n8n
networks:
Expand Down Expand Up @@ -64,18 +75,23 @@ services:
image: postgres:14
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-temporal}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-temporal}
POSTGRES_DB: ${POSTGRES_DB:-temporal}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_DB_N8N: ${POSTGRES_DB_N8N:-n8n}
POSTGRES_USER_N8N: ${POSTGRES_USER_N8N:-n8n}
POSTGRES_PASSWORD_N8N: ${POSTGRES_PASSWORD_N8N:-n8n_password}
POSTGRES_DB_TEMPORAL: ${POSTGRES_DB_TEMPORAL:-temporal}
POSTGRES_USER_TEMPORAL: ${POSTGRES_USER_TEMPORAL:-temporal}
POSTGRES_PASSWORD_TEMPORAL: ${POSTGRES_PASSWORD_TEMPORAL:-temporal}
ports:
- ${POSTGRES_PORT:-5432}:5432
volumes:
- postgresql-data:/var/lib/postgresql/data
- ./scripts/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
networks:
- app-network
user: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-temporal}"]
test: ["CMD-SHELL", "psql -U ${POSTGRES_USER_N8N:-n8n} -d postgres -tAc \"SELECT 1 FROM pg_database WHERE datname='${POSTGRES_DB_N8N:-n8n}'\" | grep -q 1 && psql -U ${POSTGRES_USER_TEMPORAL:-temporal} -d postgres -tAc \"SELECT 1 FROM pg_database WHERE datname='${POSTGRES_DB_TEMPORAL:-temporal}'\" | grep -q 1"]
interval: 5s
timeout: 5s
retries: 5
Expand All @@ -96,16 +112,17 @@ services:
opensearch:
condition: service_healthy
environment:
- TEMPORAL_PORT=${TEMPORAL_PORT:-7233}
- DB_PORT=${POSTGRES_PORT:-5432}
- POSTGRES_USER=${POSTGRES_USER:-temporal}
- POSTGRES_PWD=${POSTGRES_PASSWORD:-temporal}
- ES_SEEDS=opensearch
- ES_VERSION=v7
- DB=postgresql
- POSTGRES_SEEDS=postgresql
- ENABLE_ES=true
- HOST=temporal
TEMPORAL_PORT: ${TEMPORAL_PORT:-7233}
POSTGRES_SEEDS: postgresql
DB_PORT: ${POSTGRES_PORT:-5432}
DBNAME: ${POSTGRES_DB_TEMPORAL:-temporal}
POSTGRES_USER: ${POSTGRES_USER_TEMPORAL:-temporal}
POSTGRES_PWD: ${POSTGRES_PASSWORD_TEMPORAL:-temporal}
ES_SEEDS: opensearch
ES_VERSION: v7
DB: postgresql
ENABLE_ES: "true"
HOST: temporal
ports:
- "${TEMPORAL_PORT:-7233}:7233"
networks:
Expand Down
12 changes: 12 additions & 0 deletions scripts/init-db.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash
set -e

psql -v ON_ERROR_STOP=1 --username "postgres" <<-EOSQL
CREATE USER "$POSTGRES_USER_N8N" WITH ENCRYPTED PASSWORD '$POSTGRES_PASSWORD_N8N';
CREATE DATABASE "$POSTGRES_DB_N8N" OWNER "$POSTGRES_USER_N8N";
GRANT ALL PRIVILEGES ON DATABASE "$POSTGRES_DB_N8N" TO "$POSTGRES_USER_N8N";

CREATE USER "$POSTGRES_USER_TEMPORAL" WITH ENCRYPTED PASSWORD '$POSTGRES_PASSWORD_TEMPORAL';
CREATE DATABASE "$POSTGRES_DB_TEMPORAL" OWNER "$POSTGRES_USER_TEMPORAL";
GRANT ALL PRIVILEGES ON DATABASE "$POSTGRES_DB_TEMPORAL" TO "$POSTGRES_USER_TEMPORAL";
EOSQL