Vardo
Tutorials

Set Up a Custom Domain

Point a custom domain at your Vardo app with DNS configuration and automatic TLS certificates.

Every app on Vardo gets a subdomain under your base domain automatically. But you'll probably want your own domain — app.mycompany.com instead of my-app.vardo.example.com. This tutorial covers DNS setup, TLS provisioning and multi-domain configurations.

Prerequisites

  • A running Vardo instance with at least one deployed app
  • Access to your domain's DNS settings (registrar or DNS provider)

1. Add the domain in Vardo

  1. Open your app's detail page
  2. Click the Domains tab
  3. Click Add Domain
  4. Enter the full domain — e.g., app.mycompany.com
  5. Click Save

Vardo registers the domain with Traefik and queues a TLS certificate request. The certificate won't issue until DNS is pointing at your server.


2. Configure DNS

You need a DNS record that points your domain to your Vardo server. You've got two options:

CNAME  app.mycompany.com  →  vardo.example.com

Use this when adding subdomains like app., api., staging., etc.

A record (required for apex/root domains)

A  mycompany.com  →  203.0.113.42

Replace 203.0.113.42 with your Vardo server's IP address. Use this for naked domains like mycompany.com.

Some DNS providers (Cloudflare, Vercel DNS, Route 53) support CNAME flattening or ALIAS records for apex domains. If yours does, that works too.


3. Verify and get TLS

  1. Back in Vardo, click Verify next to your domain
  2. Vardo checks that DNS resolves to your server
  3. Once verified, it requests a Let's Encrypt certificate automatically
  4. The certificate is issued and installed — usually within 30 seconds

Your domain is now live with HTTPS. HTTP requests are redirected to HTTPS automatically.


Using multiple ACME issuers

Vardo supports three ACME certificate issuers out of the box:

IssuerResolver keyDescription
Let's EncryptleDefault. Free certificates, widely trusted.
Google Trust ServicesgoogleGoogle's public ACME CA.
ZeroSSLzerosslRequires External Account Binding (EAB) credentials.

Configure the default issuer

  1. Go to Admin → Settings → SSL
  2. Select the default issuer
  3. If using ZeroSSL, enter your EAB KID and HMAC key
  4. Click Save

Or configure it in vardo.yml:

ssl:
  defaultIssuer: le  # le | google | zerossl

Assign an issuer to a domain

When adding or editing a domain on an app, you can set the certResolver field to override the instance default. For example, set it to google to use Google Trust Services for that specific domain.


Wildcard domains

For apps that need wildcard subdomains (e.g., *.mycompany.com), you'll need DNS-01 challenge validation instead of HTTP-01:

  1. Go to Settings → TLS
  2. Under your ACME issuer, configure a DNS provider (Cloudflare, Route 53, etc.)
  3. Add your API credentials for the DNS provider
  4. When adding the domain, enter *.mycompany.com
  5. Vardo uses DNS-01 to validate and issue the wildcard certificate

Common setups

Apex + www redirect

Want mycompany.com and www.mycompany.com to both work?

  1. Add both domains to your app in Vardo
  2. Set DNS for both:
    A      mycompany.com      →  203.0.113.42
    CNAME  www.mycompany.com  →  mycompany.com
  3. In the Domains tab, set one as primary — Vardo redirects the other to it automatically

API on a subdomain

Add api.mycompany.com as a separate domain on your API app. Each app in a project can have its own domain.

Staging environment

Use a subdomain like staging.mycompany.com for your staging app. Pair it with preview environments for PR-based deploys.


Troubleshooting

"Domain verification failed"

DNS hasn't propagated yet. Propagation can take anywhere from 30 seconds to 48 hours depending on your DNS provider and TTL settings. Check propagation status at dnschecker.org.


"Certificate issuance failed"

Common causes:

  • DNS isn't pointing at your Vardo server yet
  • Port 80 is blocked by a firewall — Let's Encrypt needs to reach your server on port 80 for HTTP-01 validation
  • Rate limit hit — if you've issued too many certificates for the same domain recently, switch to the staging issuer to test

"ERR_TOO_MANY_REDIRECTS"

If you're using Cloudflare with its proxy enabled (orange cloud), set SSL mode to Full (Strict) in Cloudflare. Otherwise Cloudflare and Vardo both try to redirect HTTP to HTTPS and loop.


Next steps

On this page