docs/PI.md goes from a Pi with Docker to a working claude.ai connector: configuration, the first token, Caddy, DNS, the VPS forwarding raw TCP, checks from outside, connecting the clients, the monthly token, updates, backups and troubleshooting. docker-compose.override.yml is tracked, so Compose would have merged it on the Pi as well — publishing ports and switching the crawl timer off. The Pi's .env sets COMPOSE_FILE to add deploy/docker-compose.pi.yml instead, which joins the existing Caddy network by name and builds DATABASE_URL, so nothing tracked needs editing there. Postgres moves to a private network shared only with the server. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
25 lines
1.2 KiB
YAML
25 lines
1.2 KiB
YAML
# Local development only. Compose merges this automatically whenever
|
|
# COMPOSE_FILE is unset — which is why the Pi's .env sets COMPOSE_FILE to
|
|
# deploy/docker-compose.pi.yml instead (docs/PI.md): there, Caddy reaches the
|
|
# container over the shared Docker network and no host port is published.
|
|
services:
|
|
postgres:
|
|
ports:
|
|
# Loopback only. Lets `npm test` reach it via TEST_DATABASE_URL and lets
|
|
# the stdio server use the same index as the HTTP one.
|
|
- "127.0.0.1:55432:5432"
|
|
|
|
schulcloud-mcp:
|
|
environment:
|
|
# The bundled postgres service, reachable by name on the compose network.
|
|
DATABASE_URL: postgresql://schulcloud:${POSTGRES_PASSWORD:-schulcloud}@postgres:5432/schulcloud
|
|
# On demand by default while developing. Set CRAWL_INTERVAL_MS in .env to
|
|
# crawl on a timer instead — what_changed can only report what happened
|
|
# between crawls, so against a real account on-demand leaves it empty.
|
|
CRAWL_INTERVAL_MS: ${CRAWL_INTERVAL_MS:-0}
|
|
ports:
|
|
# Bound to loopback: this exposes the account's data, and the bearer token
|
|
# is the only thing in front of it.
|
|
# MCP_HOST_PORT moves it when 8080 is already taken on this machine.
|
|
- "127.0.0.1:${MCP_HOST_PORT:-8080}:8080"
|