rocky-docker-lxc/, caddy-vm/, monitoring-vm/ (was missing entirely -
Grafana+Loki+Prometheus stack, refreshed and CA mount stripped same as
everything else), and automation/{ansible,automation-vm,iac}/ for the
three repos that live on the automation VM. Hawser is genuinely
deployed on all three of caddy-vm/monitoring-vm/automation-vm so it's
duplicated in each rather than picking one canonical home.
Old Ansible/ and "Infrastrucutre as Code/" content moved under
automation/ansible/old-playbooks and automation/iac/old-content as-is
for now - contents still need refreshing against the current repos and
a per-folder README, that's the next pass.
83 lines
2.1 KiB
YAML
83 lines
2.1 KiB
YAML
services:
|
|
ghost:
|
|
image: ghost:latest
|
|
container_name: ghost_blog
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${HTTP_PORT}:2368"
|
|
depends_on:
|
|
- ghost_db
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: ${TZ}
|
|
# Ghost URL
|
|
url: ${GHOST_URL}
|
|
# SMTP
|
|
mail__transport: ${SMTP_TRANSPORT}
|
|
mail__options__host: ${SMTP_HOST}
|
|
mail__options__port: ${SMTP_PORT}
|
|
mail__options__secure: "false"
|
|
mail__options__auth__user: ${SMTP_USER}
|
|
mail__options__auth__pass: ${SMTP_PASSWORD}
|
|
# Database
|
|
database__client: mysql
|
|
database__connection__host: ${DB_HOST}
|
|
database__connection__user: ${DB_USER}
|
|
database__connection__password: ${DB_PASSWORD}
|
|
database__connection__database: ${DB_NAME}
|
|
volumes:
|
|
- /path/to/ghost/content:/var/lib/ghost/content
|
|
networks:
|
|
- blog-net
|
|
|
|
ghost_db:
|
|
image: mysql:8
|
|
container_name: ghost_mysql
|
|
restart: unless-stopped
|
|
environment:
|
|
TZ: ${TZ}
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
MYSQL_DATABASE: ${DB_NAME}
|
|
MYSQL_USER: ${DB_USER}
|
|
MYSQL_PASSWORD: ${DB_PASSWORD}
|
|
volumes:
|
|
- /path/to/ghost/db_data:/var/lib/mysql
|
|
- /path/to/ghost/init:/docker-entrypoint-initdb.d:ro
|
|
networks:
|
|
- blog-net
|
|
|
|
umami:
|
|
image: ghcr.io/umami-software/umami:postgresql-latest
|
|
container_name: umami_analytics
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${UMAMI_PORT}:3000"
|
|
depends_on:
|
|
- umami-db
|
|
environment:
|
|
TZ: ${TZ}
|
|
DATABASE_URL: postgresql://${UMAMI_DB_USER}:${UMAMI_DB_PASSWORD}@umami-db:5432/${UMAMI_DB_NAME}
|
|
DATABASE_TYPE: postgresql
|
|
APP_SECRET: ${UMAMI_APP_SECRET}
|
|
IGNORE_IP: ${UMAMI_IGNORE_IP}
|
|
networks:
|
|
- blog-net
|
|
|
|
umami-db:
|
|
image: postgres:15-alpine
|
|
container_name: umami_postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
TZ: ${TZ}
|
|
POSTGRES_DB: ${UMAMI_DB_NAME}
|
|
POSTGRES_USER: ${UMAMI_DB_USER}
|
|
POSTGRES_PASSWORD: ${UMAMI_DB_PASSWORD}
|
|
volumes:
|
|
- /path/to/umami/db_data:/var/lib/postgresql/data
|
|
networks:
|
|
- blog-net
|
|
|
|
networks:
|
|
blog-net:
|
|
external: true
|