Custom Domains
Configure custom domains on your installations
You can add custom domains to your Ryvn installations. The configuration method depends on your service type:
- Server Services: Use the Ryvn dashboard for domain management
- Helm Chart Services: Configure domains directly in your chart’s ingress values
Server Services
Server services can add custom domains through the Ryvn dashboard. Custom domains are proxied through Ryvn’s infrastructure, which handles TLS certificate provisioning and traffic routing automatically.
Adding a Custom Domain
Enable Public Networking
- Navigate to your installation in the Ryvn dashboard
- Go to the installation’s Settings page
- Click on the Networking tab
- Switch to Public networking mode
- Wait about 10 seconds for your installation to connect to the external load balancer
Add Custom Domain
- In the custom domain field, enter your domain name
- Click Save
For domains with Unicode characters, convert to Punycode first (e.g., ëxample.com
becomes xn--xample-ova.com
).
You can use tools like Punycoder for the conversion.
Configure DNS
- Note the external load balancer hostname or IP address displayed in the UI below the custom domain field
- Log in to your domain provider (like Cloudflare, Namecheap, or GoDaddy)
- Navigate to DNS settings
- Create a DNS record:
Type | Name | Value |
---|---|---|
CNAME | @ or subdomain | Load balancer hostname/IP from step 1 |
Some DNS providers call this record type ALIAS or ANAME instead of CNAME. They serve the same purpose.
Connect and Verify
- Head back to Ryvn and click Connect
- Ryvn will verify domain ownership and create a TLS certificate
- Once complete, verify your domain is accessible over HTTPS
Helm Chart Services
Helm charts on Ryvn can be configured with custom domains through ingress configuration. Unlike server services which use the dashboard for domain management, helm charts require direct configuration in your chart’s values.
Ryvn Networking
Ryvn environments come pre-configured with the following components for custom domain management:
-
Ingress Controllers: Pre-configured NGINX ingress controllers:
external-nginx
for public-facing servicesinternal-nginx
for VPC-internal services
-
Certificate Management: Automatic TLS certificates via cert-manager with:
external-issuer
for public domainsinternal-issuer
for internal domains
-
DNS Management: External DNS automatically manages DNS records for
ryvn.run
domains and internal domains
Adding a Custom Domain
Ensure Ingress Template
Make sure your helm chart has an ingress.yaml
template in the templates/
directory.
See the Kubernetes Ingress documentation for template examples and configuration details.
Configure Ingress Values
Update your ingress configuration through the Ryvn dashboard:
- Go to your installation’s Settings in the Ryvn dashboard
- Navigate to Helm Values
- Add or update the
ingress
section:
- Click Save to deploy the changes
For internal-only services, use className: internal-nginx
and cert-manager.io/cluster-issuer: internal-issuer
Configure DNS Records
Point your domain to the appropriate load balancer:
-
Get the load balancer hostname:
- Go to your installation’s Resources tab in the Ryvn dashboard
- Find your ingress resource
- Copy the load balancer hostname/address
-
Create DNS records with your domain provider:
Type | Name | Value |
---|---|---|
CNAME | @ or subdomain | Load balancer hostname from step 1 |
For apex domains (example.com), use ALIAS or ANAME record types if supported by your DNS provider, otherwise use A records with the load balancer IPs.
Verify
Once DNS propagates, your application will be accessible at your custom domain with automatic HTTPS certificates.
Using ryvn.run
Domains
Ryvn provides template variables for automatic ryvn.run
domain generation:
This automatically resolves to your environment’s configured public domain.
Troubleshooting
Common DNS issues and solutions:
Verify DNS propagation:
Check if DNS records are correct:
Test from different locations:
Common solutions:
- Wait for DNS propagation (can take up to 48 hours)
- Verify DNS records are correctly configured with your domain provider
- Clear local DNS cache:
sudo dscacheutil -flushcache
(macOS) oripconfig /flushdns
(Windows)
Advanced Configuration
Custom Annotations
Add custom nginx annotations for advanced routing: