> 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/self-managed-hivel-deployment/virtual-private-cloud/azure/dns-setup-azure/setup-and-prerequisites/option-b-no-domain-yet-self-signed-temporary.md).

# Option B - No Domain Yet (Self-Signed, Temporary)

DNS Setup (Azure)

Use this only to unblock testing before DNS/domain setup is complete. Not recommended for client-facing production use - browsers will show an untrusted-certificate warning.

```
mkdir -p ~/caddy && cd ~/caddy
 
cat > Caddyfile <<'EOF'
:443 {
    tls internal
    reverse_proxy localhost:3000
}
EOF
 
docker run -d --name caddy --restart unless-stopped --network host \
  -v $(pwd)/Caddyfile:/etc/caddy/Caddyfile \
  -v caddy_data:/data \
  caddy:2
```

Open inbound port 443 only (no ACME challenge needed, so port 80 is not required for this option). Then browse to:

```
https://<vm-public-ip>
```

**Expected result:** Click through the browser's certificate warning ("Advanced" → "Proceed"). The page still loads over https\://, which satisfies the secure-context requirement described above.

<br>

{% columns %}
{% column %} <a href="/self-managed-hivel-deployment/virtual-private-cloud/azure/dns-setup-azure/setup-and-prerequisites/option-a-domain-+-lets-encrypt-recommended.md" class="button primary" data-icon="backward">Option A - Domain + Let's Encrypt</a>
{% endcolumn %}

{% column %}

{% endcolumn %}

{% column %} <a href="/self-managed-hivel-deployment/virtual-private-cloud/azure/dns-setup-azure/upgrading-from-option-b-to-option-a-and-managing-the-caddy-container.md" class="button primary" data-icon="forward">Upgrading from Option B → A</a>
{% endcolumn %}
{% endcolumns %}
