133 lines
3.6 KiB
Bash
Executable File
133 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
DIR="/opt/hx-ki/com2-stack"
|
||
F="$DIR/docker-compose.yml"
|
||
ENVF="$DIR/.env"
|
||
NET="hxki-internal"
|
||
|
||
mkdir -p "$DIR"
|
||
|
||
echo "=== COM2 · CANONICAL WRITE + UP ==="
|
||
|
||
# Netzwerk muss existieren (external)
|
||
docker network inspect "$NET" >/dev/null 2>&1 || docker network create "$NET" >/dev/null
|
||
|
||
# .env (Passwörter hier)
|
||
cat > "$ENVF" <<'ENV'
|
||
PG_USER=hxki
|
||
PG_PASSWORD=CHANGE_ME_STRONG
|
||
PG_DB=n8n
|
||
|
||
MAUTIC_DB_ROOT_PASSWORD=CHANGE_ME_STRONG
|
||
MAUTIC_DB_NAME=mautic
|
||
MAUTIC_DB_USER=mautic
|
||
MAUTIC_DB_PASSWORD=CHANGE_ME_STRONG
|
||
|
||
N8N_HOST=n8n.hx-ki.com
|
||
N8N_PROTOCOL=https
|
||
ENV
|
||
|
||
# Compose: autark, ohne Grafana
|
||
cat > "$F" <<'YML'
|
||
services:
|
||
hxki-postgres:
|
||
image: postgres:16
|
||
container_name: hxki-postgres
|
||
restart: unless-stopped
|
||
environment:
|
||
POSTGRES_USER: ${PG_USER}
|
||
POSTGRES_PASSWORD: ${PG_PASSWORD}
|
||
POSTGRES_DB: ${PG_DB}
|
||
volumes:
|
||
- /opt/hx-ki/postgres:/var/lib/postgresql/data
|
||
networks: [hxki-internal]
|
||
ports: ["5432:5432"]
|
||
|
||
hxki-mariadb:
|
||
image: mariadb:10.11
|
||
container_name: hxki-mariadb
|
||
restart: unless-stopped
|
||
command: ["--character-set-server=utf8mb4","--collation-server=utf8mb4_unicode_ci"]
|
||
environment:
|
||
MARIADB_ROOT_PASSWORD: ${MAUTIC_DB_ROOT_PASSWORD}
|
||
MARIADB_DATABASE: ${MAUTIC_DB_NAME}
|
||
MARIADB_USER: ${MAUTIC_DB_USER}
|
||
MARIADB_PASSWORD: ${MAUTIC_DB_PASSWORD}
|
||
volumes:
|
||
- /opt/hx-ki/mautic/db:/var/lib/mysql
|
||
networks: [hxki-internal]
|
||
ports: ["3306:3306"]
|
||
|
||
hxki-mautic:
|
||
image: mautic/mautic:5-apache
|
||
container_name: hxki-mautic
|
||
restart: unless-stopped
|
||
depends_on: [hxki-mariadb]
|
||
environment:
|
||
MAUTIC_DB_HOST: hxki-mariadb
|
||
MAUTIC_DB_USER: ${MAUTIC_DB_USER}
|
||
MAUTIC_DB_PASSWORD: ${MAUTIC_DB_PASSWORD}
|
||
MAUTIC_DB_NAME: ${MAUTIC_DB_NAME}
|
||
volumes:
|
||
- /opt/hx-ki/mautic/app:/var/www/html
|
||
networks: [hxki-internal]
|
||
ports: ["8080:80"]
|
||
|
||
hxki-n8n:
|
||
image: docker.n8n.io/n8nio/n8n:latest
|
||
container_name: hxki-n8n
|
||
restart: unless-stopped
|
||
depends_on: [hxki-postgres]
|
||
environment:
|
||
DB_TYPE: postgresdb
|
||
DB_POSTGRESDB_HOST: hxki-postgres
|
||
DB_POSTGRESDB_PORT: 5432
|
||
DB_POSTGRESDB_DATABASE: ${PG_DB}
|
||
DB_POSTGRESDB_USER: ${PG_USER}
|
||
DB_POSTGRESDB_PASSWORD: ${PG_PASSWORD}
|
||
N8N_HOST: ${N8N_HOST}
|
||
N8N_PROTOCOL: ${N8N_PROTOCOL}
|
||
N8N_PORT: 5678
|
||
N8N_EDITOR_BASE_URL: ${N8N_PROTOCOL}://${N8N_HOST}
|
||
WEBHOOK_URL: ${N8N_PROTOCOL}://${N8N_HOST}
|
||
volumes:
|
||
- /data/HXKI_WORKSPACE/router:/home/node/.n8n
|
||
- /data/HXKI_WORKSPACE:/data/HXKI_WORKSPACE
|
||
networks: [hxki-internal]
|
||
ports: ["5678:5678"]
|
||
|
||
# Caddy auf COM2 – Cluster-Client: Container bleibt drin.
|
||
# Cluster-spezifische Settings kommen über DEIN Caddy-Cluster-Mechanismus (Volumes/Env/Config),
|
||
# den wir nicht raten, sondern aus deinem vorhandenen COM2-Caddy Setup übernehmen.
|
||
hx-caddy:
|
||
image: caddy:2
|
||
container_name: hx-caddy
|
||
restart: unless-stopped
|
||
networks: [hxki-internal]
|
||
ports:
|
||
- "80:80"
|
||
- "443:443"
|
||
- "443:443/udp"
|
||
- "2019:2019"
|
||
volumes:
|
||
- /opt/hx-ki/caddy/Caddyfile:/etc/caddy/Caddyfile:ro
|
||
- /opt/hx-ki/caddy/data:/data
|
||
- /opt/hx-ki/caddy/config:/config
|
||
|
||
networks:
|
||
hxki-internal:
|
||
external: true
|
||
YML
|
||
|
||
echo "[1] Validate"
|
||
( cd "$DIR" && docker compose --env-file .env config >/dev/null )
|
||
echo "OK: compose valide."
|
||
|
||
echo "[2] Up"
|
||
( cd "$DIR" && docker compose --env-file .env up -d )
|
||
|
||
echo "[3] Status"
|
||
docker ps --format 'NAME={{.Names}} STATUS={{.Status}} PORTS={{.Ports}}' | egrep 'hxki-|hx-caddy' || true
|
||
echo "=== ENDE ==="
|