Multiple domains
One declared set becomes the certificate SAN set. Duplicate names are removed before issuance.
SERVER / TLS
Own HTTPS in the Rust runtime
Dowe issues, caches, and renews multi-domain Let's Encrypt certificates without Certbot, Node.js, or an external reverse proxy.
Server documentation
ACME
Declare every public hostname
TLS-ALPN-01 runs on the HTTPS listener. The cache lives below .dowe, staging is safe by default, and the certificate state remains polled for automatic renewal.
main
server port:443
tls:
mode:"acme"
domains:["example.com", "www.example.com"]
email:"admin@example.com"
staging:falseMultiple domains
One declared set becomes the certificate SAN set. Duplicate names are removed before issuance.
Automatic renewal
The ACME state loads cached material and renews the certificate while the server stays active.
Server only
Views never receive account state, cache contents, private keys, or managed domain sources.
MANAGED DOMAINS
Feed domains from Dowe data
A reverse proxy or application platform can let an administrator update local KV or Database state. Dowe merges that state with static names and reloads TLS when the effective set changes.
tls:
mode:"acme"
domains:["platform.example.com"]
email:"ops@example.com"
staging:false
domainsFrom:{ kv:"domains" key:"tls" }
refreshSeconds:60Product foundation, not product policy
Dowe owns certificate lifecycle. Your authored server still owns administrator authorization, upstream routing, DNS integration, application deployment, and tenant policy.
LOCAL DEVELOPMENT
Use a self-signed localhost certificate
Let's Encrypt does not issue localhost certificates. Local mode creates an ephemeral self-signed certificate without modifying the system trust store.
main
server port:8443
tls:
mode:"local"
domains:["localhost", "app.localhost"]