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.

dowe
main
  server port:443
    tls:
      mode:"acme"
      domains:["example.com", "www.example.com"]
      email:"admin@example.com"
      staging:false

Multiple 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.

dowe
tls:
  mode:"acme"
  domains:["platform.example.com"]
  email:"ops@example.com"
  staging:false
  domainsFrom:{ kv:"domains" key:"tls" }
  refreshSeconds:60

Product 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.

dowe
main
  server port:8443
    tls:
      mode:"local"
      domains:["localhost", "app.localhost"]