AWS
Deploy on EKS with Amazon RDS for MySQL.
Azure
Deploy on AKS with Azure Database for MySQL.
Google Cloud
Deploy on GKE with Cloud SQL for MySQL.
Common architecture
Every provider guide uses the same OpenWork boundaries:- Den web listens on port
3005and serves the browser experience. - Den API listens on port
8788and owns authentication, organizations, policy, and control-plane APIs. - A MySQL 8-compatible database stores shared control-plane state.
- A migration Job runs before the application rollout.
- The inference service is optional and disabled by default.
- HTTPS hostnames expose web and API traffic through the provider’s load-balancing layer.
Reverse-proxy client addresses
SetDEN_TRUSTED_PROXIES on Den API to a comma-separated list of your reverse
proxies’ IP addresses or CIDRs (for example, 192.0.2.10,192.0.2.11). Better Auth
uses this list to resolve forwarded client addresses for authentication rate
limits. Without it, clients can share a fallback rate-limit bucket.
Only include the proxies you operate, not broad ranges containing clients. Your
origin must accept traffic only from those proxies, and the proxies must overwrite
or safely append forwarded headers. This setting interprets the forwarded chain;
it cannot verify the direct sender. Leave it unset when there is no trusted proxy.
Keep rate limiting enabled in production.
Deployment sequence
- Create the Kubernetes cluster and private MySQL database in compatible networks.
- Reserve the public address or load-balancer entry point.
- Create the database, database user, and Kubernetes namespace.
- Generate independent database, Better Auth, and Den encryption secrets.
- Prepare provider-specific Helm values for the web and API hostnames.
- Install or upgrade the chart and wait for the migration Job and workloads.
- Point DNS at the load balancer and verify trusted HTTPS.
- Create the first administrator.
- Configure SAML or OIDC SSO and invite or provision members.
Before you start
You need:- a cloud account with permission to create Kubernetes, networking, load-balancing, managed MySQL, DNS, certificates, and secrets;
kubectland Helm, plus the provider CLI and Kubernetes authentication plugin;- two DNS names, normally one for Den web and one for Den API;
- a real email address for the initial owner;
- a backup, restore, upgrade, and rollback plan.
The provider pages give the supported architecture and point to the repository’s detailed operator runbooks for exact commands. Pin a chart version in production and use the runbook from the matching release or branch.