Commit Graph
12 Commits
Author SHA1 Message Date
kawaiipunk 7ca3aa2b67 Add shared caption status UI and offline LAN profile 2026-10-26 14:33:27 +00:00
kawaiipunk 4ae50150e6 Deploy self-service rooms on a single origin 2026-10-26 13:09:41 +00:00
kawaiipunk 012d973068 Merge branch 'main' into invite-auth
# Conflicts:
#	AGENTS.md
#	CHANGELOG.md
#	README.md
#	caption-local
#	captionninja
2026-10-26 12:30:36 +00:00
kawaiipunk 2a866359ad Run production on Compose and refresh pinned images
Serve the stack from this repository's Compose files instead of the Co-op
Cloud recipe on the host, add the docs wiki as a first-class service, and
update the pinned images.

- Add a `wiki` service (wiki/Dockerfile, MkDocs Material 9.7.7 -> nginx)
  routed at WIKI_HOST, in both the base and production compose files.
- Traefik v2.11 -> v3.7.14 (v2.11 reached end of security support
  2026-09-07); web image nginx 1.31.7-alpine and alpine 3.24.
- `captionninja` (dc1094f): relay on Node 24 LTS. `caption-local` (5bee28c):
  GPU image on CUDA 12.9.2.
- `.env.production`: production hostnames for *.captions.dev.autonomic.zone.
- Docs (README, AGENTS, CONFIGURATION) and CHANGELOG updated for the wiki
  service, the new hostnames and the image bumps.
2026-10-16 16:12:06 +00:00
kawaiipunk 29ae17b367 Wire the invite-based key model into the deploy stack
Mount a persisted caption-local-keys volume at /data and load the optional
secrets/caption-local.env in both Compose files. The relay now reads a single
origins-only secrets/relay.json holding the shared master secret instead of
per-room tokens, so drop secrets/relay-tokens.env. Rewrite the README, AGENTS and
configuration guide for per-user keys, invites and derived relay rooms.

Bump caption-local to 116c3d0 and captionninja to 9105535.
2026-10-16 13:57:51 +00:00
kawaiipunk a9aa77211f Harden the base stack for local runs
Add the production healthchecks to docker-compose.yml so docker compose ps reports healthy locally, and default the UI to the local relay (ws://localhost:8080/ws) and capture page (http://localhost:8765/) so the landing-page links work without manual configuration.

Refresh the stale submodule-pin references in CHANGELOG/AGENTS and document the local defaults in README and docs/CONFIGURATION.md.
2026-10-16 12:31:34 +00:00
trav dd47a21cfd Remove hardcoded hostnames; bump forks to drop relay fallbacks
- caption-local e5637d1 and captionninja d1ac36e: no built-in relay or
  caption site; pages ask for a relay instead of using api.caption.ninja.
- docker-compose.prod.yml takes CAPTURE_HOST, RELAY_HOST and UI_HOST from
  .env.production (required) instead of hardcoding captions.dev hosts.
- Docs and the AGENTS.md example use example.org placeholders.
2026-10-14 11:06:03 -07:00
trav 51910f5ab4 Build the UI image, keep relay secrets out of the web root, review fixes
- web/: nginx image with the captionninja pages only (no relay source or
  secrets), templated by RELAY_URL / CAPTURE_URL / RELAY_UPSTREAM, serving
  /site-config.js, refusing dotfiles, and downloading translation models
  (SHA-256 verified) into a volume on start-up. Replaces nginx.conf and the
  bind mount of the whole captionninja checkout, which served
  captionninja/relay/.caption-ninja-relay.private.json publicly.
- Relay private JSON default moved to secrets/relay.private.json.
- Submodule bumps (shallow clones):
  caption-local 709fe68: private-only relay auto-fill, RELAY_SITE, no dev
    hostnames, Firefox sample-rate fallback.
  captionninja 891947c, fc01952, e39bbaa: overlay XSS fix, site-config.js
    for links.html, translation models no longer committed.
- Docs and changelog updated.
2026-10-13 14:32:03 -07:00
kawaiipunk c5f28b2f98 Expand the getting-started guide and make the Whisper env file optional
Rewrite README with a step-by-step first-run path (clone, relay config,
optional Whisper token and capture-page auto-fill, start) and fix stale
loopback ports, relay WebSocket URLs, the .env.production tracked-file note
and duplicate sections. Document relay-tokens.env and /relay-config in
CONFIGURATION.md and AGENTS.md, and declare secrets/caption-local.env with
required: false so the trusted-loopback model needs no secrets.
2026-10-12 22:29:26 +00:00
kawaiipunk 6f39205457 Document that the relay origin list must include the capture host 2026-10-12 21:59:01 +00:00
kawaiipunk 7fba57d428 Harden the production stack and document the deploy
- Bind all base-stack ports to loopback only; public traffic goes through
  Traefik in the production override.
- Point the prod routers at the real captions.dev.autonomic.zone hostnames,
  add the whisper-host Host-rewrite middleware, and pass the ACME email on the
  Traefik command line.
- Replace the prod health checks with tooling present in each image
  (caption-local healthcheck.py, relay Node fetch, web busybox wget, traefik
  ping).
- Add docker-compose.auth.yml, an opt-in basicAuth overlay that reads
  secrets/traefik.htpasswd.
- Configure the Docker provider with exposedByDefault=false and expose ping.
- Update README and docs/CONFIGURATION.md for the new workflow and secrets.
2026-10-12 20:43:35 +00:00
kawaiipunk f8ce2f40bc Add production Traefik deployment, docs, and contribution guide 2026-10-08 18:53:11 +01:00