> For the complete documentation index, see [llms.txt](https://docs.hivel.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hivel.ai/archive/generic/dns-and-https-setup-for-the-hivel-ui-caddy-reverse-proxy.md).

# DNS and HTTPS Setup for the Hivel UI (Caddy Reverse Proxy)

Enable HTTPS for the Hivel Web UI without provisioning a full-scale cloud load balancer. This is a lighter-weight alternative to "Option 3: DNS + Load Balancer" in Verification and Access above - suitable for smaller deployments, pilots, and environments where standing up a load balancer is not desired.

### Why This Is Needed

The Hivel UI container serves traffic on port 3000 over plain HTTP. Modern browsers restrict certain security-sensitive APIs (such as crypto.randomUUID, used on pages like sign-up/KYC) to secure contexts only - HTTPS, or localhost. Accessing the UI directly via http\://\<vm1-ip>:3000 does not satisfy this, and affected pages will fail with a "crypto.randomUUID is not a function" error.

Caddy is a lightweight reverse proxy that terminates TLS in front of the UI container, forwarding decrypted traffic to port 3000 internally. It runs as a Docker container, so no additional software needs to be installed on the server - Docker is already a prerequisite for this deployment.

| Page                                                                                                                                                                                                                         | Description                                                                                                                                                                                               |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Prerequisites](/archive/generic/dns-and-https-setup-for-the-hivel-ui-caddy-reverse-proxy/1.-prerequisites.md)                                                                                                               | VM1/Docker/SSH prerequisites and DNS A-record setup, plus Caddyfile configs for Option A (domain + Let's Encrypt) and Option B (no domain, self-signed cert).                                             |
| [Upgrading from Option B to Option A and Managing the Caddy Container](/archive/generic/dns-and-https-setup-for-the-hivel-ui-caddy-reverse-proxy/2.-upgrading-from-option-b-to-option-a-and-managing-the-caddy-container.md) | Switches from the self-signed cert to Let's Encrypt once a domain is available, without rebuilding the container, plus commands for viewing logs, restarting, stopping, and removing the Caddy container. |
| [Troubleshooting (HTTPS / Caddy)](/archive/generic/dns-and-https-setup-for-the-hivel-ui-caddy-reverse-proxy/3.-troubleshooting-https-caddy.md)                                                                               | Diagnoses and resolves certificate-issuance errors, "connection refused" on port 443, and blank page/502 responses from the UI.                                                                           |
| [Quick Reference (HTTPS Setup)](/archive/generic/dns-and-https-setup-for-the-hivel-ui-caddy-reverse-proxy/4.-quick-reference-https-setup.md)                                                                                 | Summary table of the reverse proxy service, ports opened, and certificate source, with a note that this is the end of the deployment guide.                                                               |

{% columns %}
{% column %} <a href="/archive/generic/hivel-on-premises-deployment-guide-generic/17.-support-and-summary.md" class="button primary" data-icon="backward">Support and Summary</a>
{% endcolumn %}

{% column %}

{% endcolumn %}

{% column %} <a href="/self-managed-hivel-deployment/on-premises-generic/hivel-on-premises-deployment-guide-generic.md" class="button primary" data-icon="forward">On-Premises</a>
{% endcolumn %}
{% endcolumns %}
