Skip to main content

Production Deployment

What changes when you take a Digitorn Go daemon off localhost and put it on the open internet.

Topology

bash
digitornd -config /etc/digitorn/config.yaml
# or register an OS service:
digitornd -config /etc/digitorn/config.yaml install
digitornd start

Put TLS termination on nginx / Caddy / a load balancer in front of the daemon. The Go digitornd binary does not expose --tls-cert / --tls-key flags; terminate HTTPS at the proxy and proxy to 127.0.0.1:8000 (or your server.port).

Set the public origin so absolute preview / OAuth URLs are correct:

yaml
server:
host: "127.0.0.1" # listen locally behind the proxy
port: 8000
public_base_url: "https://api.example.com"
auth_enabled: true
cors_origins:
- "https://app.example.com"

Auth

Keep server.auth_enabled: true in production. Configure JWT / JWKS under auth: (see config.example.yaml). Do not expose an unauthenticated daemon on 0.0.0.0.

CORS

server.cors_origins is an explicit allow-list. Mixing "*" with other origins is rejected by config.Validate. Prefer listing your real front-end origins.

Workers

LLM / embeddings / OCR capacity is under workers:, not CLI flags:

yaml
workers:
llm:
count: 1
concurrency: 512

See Daemon configuration and Deployment shapes.

Previews

Built session previews are served same-origin under the preview pane. See Cloud preview.

Hardening checklist

  • TLS at the reverse proxy (or equivalent edge)
  • server.auth_enabled: true
  • Explicit server.cors_origins (no accidental wide open)
  • server.public_base_url set to the external HTTPS origin
  • Secrets only via the vault / env, never in app YAML
  • Database DSN and session root on durable disks
  • OS service installed (digitornd install) with restart-on-failure
  • Hub / OAuth redirect URLs match the public origin
  • Backup plan for database + sessions roots

Cross-references