- Server services are configured through the Ryvn dashboard
- Helm chart services are configured in your chart’s ingress values
- A custom root domain replaces
ryvn.runwith your own domain across the entire environment
Custom root domain
By default, Ryvn environments useryvn.run subdomains for public services. You can replace this with your own domain so that all services in the environment are reachable under it — myapp.staging.acme.com instead of myapp.env-xyz.ryvn.run.
A common pattern is to use a subdomain per environment, like staging.acme.com or production.acme.com. This keeps each environment’s services under a clear namespace while leaving the rest of acme.com under your existing DNS provider.
This is an environment-wide setting. Once configured, every service shares the same base domain without per-service DNS setup. Ryvn handles wildcard TLS certificates and DNS record management for the domain. Helm charts using {{ .ryvn.env.state.public_domain.name }} resolve to your domain with no config changes.
How it works
Ryvn creates a DNS hosted zone for your domain and gives you a set of nameservers. You point your domain to those nameservers at your registrar, which lets Ryvn manage DNS records and issue TLS certificates for the domain.Setup
Set the domain in your environment config
- Go to your environment’s Settings > Infrastructure
- Add
public_root_domainto your environment config:
- Save and provision the environment
Get the nameservers
After provisioning completes, the assigned nameservers appear in Settings > Infrastructure under the Domain Setup section. You’ll see a list of NS records to create.
Delegate your domain
At your domain registrar, create NS records that point your subdomain to the nameservers from the previous step:
- Log in to your DNS provider (e.g., Cloudflare, Namecheap, GoDaddy, Route 53)
- Add an NS record for your subdomain (e.g.,
staging) for each nameserver Ryvn provided
You can also delegate a full domain (e.g.,
acme.com) by changing its nameservers entirely to the ones Ryvn provides. Be aware this transfers DNS control for the entire domain to Ryvn, so coordinate with the Ryvn team if you have existing records on the domain.{{ .ryvn.env.state.public_domain.name }} resolves to your domain in helm charts. You can still add per-service custom domains for services that need a different domain entirely.
Server services
Server service domains are managed through the Ryvn dashboard. Traffic is proxied through Ryvn’s infrastructure, which handles TLS certificates and routing.Adding a custom domain
Enable public networking
- Open your installation in the Ryvn dashboard
- Go to Settings > Networking
- Switch to Public networking mode
- Wait about 10 seconds for your installation to connect to the external load balancer
Add custom domain
- Enter your domain name in the custom domain field
- Click Save
Unicode domains need to be converted to Punycode first (e.g.,
ëxample.com becomes xn--xample-ova.com).
You can use tools like Punycoder for the conversion.Configure DNS
- Copy the load balancer hostname or IP shown in the UI below the custom domain field
- In your domain provider’s DNS settings, create a record:
| Type | Name | Value |
|---|---|---|
| CNAME | @ or subdomain | Load balancer hostname/IP from step 1 |
Some DNS providers call this ALIAS or ANAME instead of CNAME. They work the same way.
Helm chart services
Helm charts use ingress configuration for custom domains, rather than the dashboard.Ryvn networking
Each environment has:- Two NGINX ingress controllers:
external-nginx(public) andinternal-nginx(VPC-internal) - cert-manager issuers:
external-issuer(public domains) andinternal-issuer(internal domains) - External DNS for managing
ryvn.runand internal domain records
Adding a custom domain
Ensure ingress template
Your helm chart needs an
ingress.yaml template in the templates/ directory.See the Kubernetes Ingress documentation for examples.Configure ingress values
Update your ingress configuration in the Ryvn dashboard:
- Go to your installation’s Settings > Helm Values
- Add or update the
ingresssection:
- Click Save to deploy the changes
For internal-only services, use
className: internal-nginx and cert-manager.io/cluster-issuer: internal-issuerConfigure DNS records
- Get the load balancer hostname from your installation’s Resources tab (find the ingress resource and copy its address)
- Create a DNS record with your domain provider:
| Type | Name | Value |
|---|---|---|
| CNAME | @ or subdomain | Load balancer hostname from step 1 |
Using ryvn.run domains
You can use template variables instead of hardcoding the ryvn.run domain:
Troubleshooting
Verify DNS propagation:- DNS propagation can take up to 48 hours
- Double-check records are correct at your domain provider
- Clear local DNS cache:
sudo dscacheutil -flushcache(macOS) oripconfig /flushdns(Windows)