chore(server): container, compose, and the Pi deployment notes

compose.yaml joins the Pi's existing network as external and reaches the
Postgres and Caddy already there by name; nothing is published to the
host. The schema applies itself on boot, so there is no migration step to
run by hand.

The Caddy snippet in the README is the part worth reading. Excluding
/api/tutor from `encode` matters more than flush_interval: compression
delays the header flush until body bytes arrive and holds already-flushed
events inside an unfinished frame, which presents as a stream that hangs
rather than as an error.

Untested against the actual Pi — written from PORT.md and verified only
as far as building the image and running it against a local Postgres.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
MechaCat02
2026-09-08 19:58:01 +02:00
parent 66f92247d2
commit 1c666cdf3b
5 changed files with 244 additions and 20 deletions

17
server/.env.example Normal file
View File

@@ -0,0 +1,17 @@
# Copy to .env and fill in. Never commit .env.
# The `hankan` database in your existing Postgres. `postgres` here is the
# service name on the shared docker network, not a hostname on the Pi.
DATABASE_URL=postgres://hankan:CHANGE_ME@postgres:5432/hankan
# Shared secret between the app and this server. Generate one:
# openssl rand -base64 32
HANKAN_TOKEN=CHANGE_ME
# For the tutor. Omit it and sync still works — the app falls back to its
# local stand-in tutor.
ANTHROPIC_API_KEY=
# The docker network your existing Postgres and Caddy are on.
# docker network ls
HANKAN_NETWORK=caddy_default