Deploy on a VPS
This page is the recipe for taking a plain hiveloom serve on a VPS and turning it
into a production-ish deployment that:
- is reachable over
https://<your-host>with an automatically-renewed Let’s Encrypt cert, - does not expose its admin / MCP port on the public internet, and
- only keeps the ports open that are actually needed.
Choose the right path
Use this page if you want:
- your own reverse proxy on the VPS,
- direct control over TLS termination,
- no Cloudflare dependency in the request path.
Use Cloudflare Tunnel instead if your main goal is
“give Claude/Cursor/remote MCP clients an HTTPS URL quickly” without opening
ports 80 and 443 to the internet.
Hiveloom does not install anything for you. The one thing Hiveloom provides is a CLI command that prints a ready-to-use Caddyfile for your hostname — the rest is on you (install Caddy, point your DNS, apply firewall rules). The recipe below is the short version.
What Hiveloom contributes
hiveloom tls render --host hiveloom.example.com --email you@example.comPrints a Caddyfile to stdout. That is the entire built-in tooling for this feature. Pipe it where you want it:
hiveloom tls render --host hiveloom.example.com --email you@example.com \
| sudo tee /etc/caddy/Caddyfile.d/hiveloom.caddyEverything else below is operator action.
The five steps
- Point your DNS at the VPS.
- Apply a minimal firewall (SSH + 80 + 443).
- Install a reverse proxy — Caddy is the default.
- Obtain a TLS certificate via Let’s Encrypt.
- Run Hiveloom as a systemd service bound to loopback.
Follow them in order. Each page has the full command set — you don’t need to cross-reference anything.
Smoke test at the end
If everything is wired up correctly, you should see:
curl -s https://hiveloom.example.com/healthz
# {"status":"ok"}
curl -s https://hiveloom.example.com/.well-known/oauth-authorization-server | jq .issuer
# "https://hiveloom.example.com"The OAuth metadata URLs must start with https://. If they start with http://,
the reverse proxy isn’t forwarding the right headers — revisit
Reverse proxy.
FAQ
Does Hiveloom install Caddy for me? No. It prints the Caddyfile; you install Caddy.
Does Hiveloom check DNS before printing the Caddyfile? No. Run dig +short <host>
first.
Why does hiveloom tls render not write the file itself? You asked Hiveloom to
stay out of your system configuration. Pipe to tee when you want the file.