Pointing a Real Domain at Your App (With Free HTTPS)
Lesson 6 of 10: an A record and one command — Caddy issues and renews the certificate automatically, no certbot involved.
The DNS part happens outside Neo
Add an A record for your domain pointing at the server's IP address. This is a change you make with your registrar or DNS provider — Neo has no part in it and can't do it for you.
The Neo part is one line
Either set it in .neo.yml and redeploy:
domain: app.example.com
neo deploy
or skip the config file and run it directly:
neo domain my-app app.example.com
What happens to HTTPS
Nothing you have to configure. Once DNS actually resolves to the server, Caddy requests a Let's Encrypt certificate for the domain automatically the first time it sees a request for it, and renews it before it expires — no certbot, no cron job, no renewal script to forget about. This is Caddy's normal behavior, not a Neo feature bolted on top; Neo just tells Caddy which domain maps to which app container.
If you genuinely need HTTP only — an internal tool behind a VPN, say — .neo.yml supports opting out:
https: false
Two cases that need more than this lesson
A wildcard domain, or any domain that can't prove ownership to Let's Encrypt over plain HTTP, needs DNS-01 validation instead of the default. See Free Wildcard HTTPS with neo caddy dns if that's your situation.
And if your domain already sits behind Cloudflare, its proxy mode changes what "automatic HTTPS" means end to end — read Cloudflare in Front of Neo: Flexible SSL and edge_https before assuming the default setup covers you.
For everything else, the A record and one command above is the whole job.
Try it yourself — Neo is free, with every feature unlocked.
Get started free