e74d5e0504
`make reinstall` wipes config/ then `make setup` creates an empty Caddyfile (ensure_file just touches it). Add write_caddyfile() to ip_utils.py that generates the full reverse-proxy config from ip_range, cell_name, and domain. Call it from setup_cell.py so fresh installs always get a valid Caddyfile. Also regenerate it in app.py whenever ip_range, domain, or cell_name changes so Caddy stays in sync. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>