caddy
// Add, manage, and troubleshoot Caddy reverse proxy routes for local apps via wildcard subdomains.
$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namecaddy
descriptionAdd, manage, and troubleshoot Caddy reverse proxy routes for local apps via wildcard subdomains.
compatibilitymacOS (LaunchDaemon) or Linux (systemd). Requires Caddy, Tailscale, Vercel DNS account.
Caddy — Wildcard Reverse Proxy for Local Apps
Routes *.YOUR_DOMAIN subdomains to local services over HTTPS via Caddy reverse proxy with automatic Let's Encrypt certificates. Designed for Tailscale-only access (no public exposure).
DNS provider: This skill uses Vercel DNS for DNS-01 ACME challenges. If you use a different DNS provider, swap the
caddy-dns/vercelplugin and TLS snippet for your provider's equivalent (see caddy-dns).
Add a New App
- Create a background service (LaunchAgent on macOS, systemd on Linux) — see
reference.mdfor templates - Add to Caddyfile (
~/.config/caddy/Caddyfile):
Also add aappname.YOUR_DOMAIN { import vercel_tls reverse_proxy localhost:31XX }<li>entry in the dashboard HTML block at the top. - Reload Caddy:
TLS cert provisioning takes 30–60 seconds (DNS-01 challenge).~/.local/bin/caddy reload --config ~/.config/caddy/Caddyfile --address localhost:2019 - If it connects to OpenClaw Gateway — see
OPENCLAW.mdin this folder for gateway-specific config.
Quick Dev Servers
Companion skill: dev-serve — one-command dev server + Caddy routing.
dev-serve up ~/projects/myapp # → https://myapp.YOUR_DOMAIN
dev-serve down myapp
dev-serve ls
Reload / Restart
# Reload config (no restart, no sudo)
~/.local/bin/caddy reload --config ~/.config/caddy/Caddyfile --address localhost:2019
# Full restart
# macOS:
sudo launchctl unload /Library/LaunchDaemons/com.caddyserver.caddy.plist
sudo launchctl load /Library/LaunchDaemons/com.caddyserver.caddy.plist
# Linux:
systemctl --user restart caddy
Troubleshoot
- Cert not issuing:
tail -50 /var/log/caddy-error.log | grep -i error— likely expired Vercel API token - DNS not resolving:
dig +short appname.YOUR_DOMAIN— should return your Tailscale IP - TLS error (curl exit 35): Cert hasn't provisioned yet, wait 30-60s
For full reference (example apps, key files, build instructions): see reference.md.
For OpenClaw gateway integration: see OPENCLAW.md.