Skip to content

Deploy with Co-op Cloud

Who this is for: hosters (sysadmins) — the recommended deployment.

This is the recommended way to run the stack for real use. Co-op Cloud deploys the caption-ninja recipe to a server you control, using abra and Docker Swarm. If you are evaluating or developing locally, use Docker Compose instead.

The recipe repository is captions.coop/caption-ninja. It is private: ask a captions.coop maintainer for access before you start.

What you get

One recipe deploys three services behind a shared Traefik edge router, each on its own hostname:

Address Serves
ui.<your-domain> The static web UI (capture page links, editor, overlays)
caption.local.<your-domain> The speech service and capture page
ui.<your-domain>/relay The private WebSocket relay

TLS certificates are issued and renewed automatically by the Co-op Cloud Traefik.

What you need

  • A server with a public IP, reachable on ports 80 and 443.
  • abra installed on the machine you deploy from (abra talks to the server over the Docker socket or SSH; see the Co-op Cloud docs).
  • A domain with DNS records pointing at the server for the two hostnames above.
  • Access to the private caption-ninja recipe repository.

Deploy

Create the app and answer the prompts. This asks for the domain and generates the secrets the services need.

abra app new caption-ninja
abra app <your-domain> deploy

Check the three services are running and the routers are healthy.

abra app <your-domain> ps
abra app <your-domain> logs -f

Configure it

Configuration and secrets are managed by abra. Show the current settings, then edit the ones you need (the domain and the room/origin details).

abra app <your-domain> config
abra app <your-domain> secret ls

The relay only accepts pages whose origin is listed for it, and rooms and tokens must match between the relay and the speech service. See Relay and rooms and Access and sharing.

Exact option and secret names

The recipe names for individual settings and secrets live in the recipe's own README. Use abra app <your-domain> config and abra app <your-domain> secret ls to see what this recipe exposes.

Day-to-day operations

Troubleshooting

If the app does not come up, check abra app <your-domain> ps and abra app <your-domain> logs, confirm DNS points at the server, and make sure ports 80/443 are reachable. See Troubleshooting for the common symptoms.