Skip to content

Reverse proxy & TLS

By default the headless server speaks plain HTTP. If you’re exposing it beyond your local network, put it behind TLS using one of these two approaches.

Native TLS

Read Flow can terminate TLS itself — set a certificate and key in read-flow.toml:

[server.tls]
cert = "/path/to/cert.pem"
key = "/path/to/key.pem"

Or from Preferences → Server, enable TLS and click Generate to create a self-signed certificate automatically.

Self-signed certificates work fine for the desktop app connecting to itself, but browsers (and the PWA) won’t trust them without manually importing the certificate — for a source you’ll open in a normal browser, use a certificate from a real CA instead (see below), or import the self-signed cert into your device’s trust store.

Point a reverse proxy that already handles trusted certificates — such as Caddy or nginx with Let’s Encrypt — at Read Flow’s plain-HTTP port. A minimal Caddy example:

read-flow.example.com {
reverse_proxy localhost:8000
}

Caddy obtains and renews the certificate automatically; Read Flow itself keeps running with TLS disabled, listening only on localhost.