halkyon/deploy/compose.todo.yaml
Tizian 「ティツィアーン」 3ac1880ac8
build(deploy)!: the instance's compose file is compose.learn.yaml, beside compose.train.yaml and compose.todo.yaml
No file has Compose's default name any more, so .env's COMPOSE_FILE is always set,
naming compose.learn.yaml first (.env.example sets it). compose.yaml stays as a link to
compose.learn.yaml for the one deploy that switches learn.halkyon.eu's .env over: the
deploy's merge runs with the COMPOSE_FILE from before. A later commit removes it.

BREAKING CHANGE: an instance's deploy/.env must set COMPOSE_FILE, starting with
compose.learn.yaml, before the link goes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-02 23:12:15 +01:00

55 lines
2.3 KiB
YAML

# Halkyon Todo's server beside the instance (ADR 0033, step 5). Switched on in .env,
# with Todo's domain and secrets:
#
# COMPOSE_FILE=compose.learn.yaml:compose.todo.yaml
# TODO_DOMAIN=todo.halkyon.eu
#
# Todo is a member of the instance's register, which Learn's server holds (ADR 0016),
# as Train is: one account a person, signing in through the register, the shared
# INSTANCE_SECRET on every call between them, which reach each other on the instance's
# own networks alone. Its database is `halkyon_todo` in the instance's PostgreSQL, under
# a role of its own that can't connect to Learn's or Train's. Its server reads no task:
# every row is sealed on the person's devices (ADR 0033, D5). Setting it up:
# sidecars/README.md, Todo.
services:
todo-server:
build:
context: ..
dockerfile: apps/todo/halkyon_todo_server/Dockerfile
image: halkyon-todo-server
restart: unless-stopped
# As Learn's: migrations at every start (redeploy.sh has applied them before).
command: ["--apply-migrations"]
environment:
SERVERPOD_DATABASE_PASSWORD: ${TODO_POSTGRES_PASSWORD:?set TODO_POSTGRES_PASSWORD in deploy/.env}
SERVERPOD_PASSWORD_serverSideSessionKeyHashPepper: ${TODO_SESSION_KEY_HASH_PEPPER:?set TODO_SESSION_KEY_HASH_PEPPER in deploy/.env}
# The register (ADR 0016): Learn's web server, on the instance's own network,
# and the secret every call between them carries.
ACCOUNT_REGISTER_URL: http://server:8082/
SERVERPOD_PASSWORD_instanceSecret: ${INSTANCE_SECRET:?set INSTANCE_SECRET in deploy/.env}
# Caddy, as for Learn's server (compose.learn.yaml).
TRUSTED_PROXIES: 172.30.80.2 fd4a:6c6b:7e80::2
SOURCE_URL: ${SOURCE_URL:-}
DATA_LOCATION: ${DATA_LOCATION:-}
BACKUP_LOCATION: ${BACKUP_LOCATION:-}
networks:
- default
- edge
depends_on:
postgres:
condition: service_healthy
logging:
driver: journald
caddy:
environment:
TODO_DOMAIN: ${TODO_DOMAIN:?set TODO_DOMAIN in deploy/.env}
volumes:
- ./sidecars/todo.caddy:/etc/caddy/sidecars/todo.caddy:ro
server:
environment:
# Todo's web server, told when an account goes (ADR 0016), beside the members
# the other compose files and INSTANCE_MEMBERS name.
INSTANCE_MEMBER_TODO: http://todo-server:8082/