Documentation / Domains
Adding a Domain
Point your own domain name to an Odoo service.
Follow these steps to assign a custom domain to one of your Odoo services.
Step-by-step guide #
1. Configure DNS #
At your domain registrar or DNS provider, create a DNS record pointing to your server:
- Type: A record
- Name: The subdomain you want (e.g.,
erpforerp.yourcompany.com) - Value: The IP address of the server hosting your Odoo service
DNS changes can take up to 24 hours to propagate, though they usually take effect within minutes.
2. Add the hostname in calmo.cloud #
- Navigate to your Odoo service
- Click the Hostnames tab
- Click Add Hostname
- Enter the full domain name (e.g.,
erp.yourcompany.com)
3. Verify and activate #
calmo.cloud will configure the reverse proxy to route traffic from your domain to the service. An SSL certificate is provisioned automatically.
Your Odoo instance is now accessible at your custom domain with HTTPS enabled.
Setting up DNS automatically #
Automatic DNS setup is in early access and is being rolled out team by team. Get in touch if you'd like to try it.
Some DNS providers support Domain Connect, which lets calmo.cloud set up the DNS record for you. When your domain's provider supports it, the hostname shows an Auto-configure DNS button in its DNS Records section, and Auto-configure next to the DNS check on the Hostnames tab. Click it, sign in at your provider and confirm. The provider then creates the record pointing at your server. If the button does not appear, set up the record by hand as described above.
Wildcard domains and DNS certificates #
To serve every first-level subdomain, such as shop.example.com and customer.example.com, add *.example.com as a hostname. Add example.com separately if you also want to serve the root domain. A wildcard does not cover nested names such as shop.customer.example.com.
Wildcard certificates require a DNS certificate resolver:
- Open the hosting server's configuration and select the Traefik tab.
- Under DNS certificate resolvers, add a resolver with a name, the IONOS provider and your IONOS API key in
prefix.secretformat. DNS propagation wait sets how long the proxy waits for the validation record to appear before it asks for the certificate; the default of 60 seconds suits most cases. Save the configuration to update the proxy. - Point a wildcard A record (
*) at the server's IP address. - Add
*.example.comunder the service's Hostnames tab and select your resolver under Certificate validation.
calmo.cloud verifies wildcard DNS using a fresh subdomain before activating routing. An exact hostname assigned to another service on the same server, such as test.example.com, takes precedence over the wildcard once its DNS is verified. Normal requests, WebSockets and security protections follow the same routing.
You can also select DNS validation for an ordinary hostname. Other domains can keep Automatic (TLS challenge), even when their DNS is hosted by another provider.
One resolver per DNS provider can be configured on each server. Existing API keys are never displayed; leave the key empty when editing to keep it. Changing a key recreates the proxy to reload the credentials. A resolver cannot be removed while any hostname uses it, including a deleted hostname that could be restored.
Removing a hostname #
Click Delete next to the hostname on the Hostnames tab. The service stops answering on it shortly after, without a redeploy on your part.
A deleted hostname keeps its name reserved, so no other service can take it in the meantime. To see it again, set the tab's Deleted records filter to With deleted records or Only deleted records. From there, Restore brings the hostname back with its settings, and Force delete removes it for good and releases the name.
Examples #
| Domain | DNS Record | Points to |
|---|---|---|
erp.company.com |
A record: erp → 1.2.3.4 |
Your server IP |
odoo.company.com |
A record: odoo → 1.2.3.4 |
Your server IP |
company.com |
A record: @ → 1.2.3.4 |
Your server IP (root domain) |
Troubleshooting #
Domain not working after adding
- Verify the DNS record points to the correct server IP
- DNS changes may need time to propagate — wait a few minutes and try again
- Check that ports 80 and 443 are open on your server
SSL certificate not working
- Ensure the domain resolves to the server IP (DNS must be configured first)
- Traefik requests certificates automatically, but it needs the domain to be reachable
- Check the server's proxy status in the server dashboard
Want to use a root domain (no subdomain)?
Create an A record for @ (or leave the name blank, depending on your DNS provider) pointing to your server's IP address.