A control panel I did not uninstall. Web.Casa on Caddy.
I have spent most of my career not using control panels. They were the thing running on the cheap VPS at the hosting company, with three PHP versions nobody chose and an update button that was really a hope. For my own servers it has been SSH, Ansible and a git repository, and that has been the right answer for fifteen years.
So the reason I now have a panel on two boxes is not the interface. It is the twenty percent of work that never makes it into the playbook. Adding a vhost at eleven at night. Reading a container’s logs when SSH from a phone is miserable. Letting a colleague restart a service without handing them a shell.
What it is
Web.Casa is a control panel for Caddy. Go and React, SQLite for state, Caddy driven as a managed subprocess through its admin API, and it installs with one command onto port 39921.
The selling point is size. A single binary, under 50MB, managing the whole stack without dragging in a Java runtime or a PHP interpreter just to render its own settings page. Given what a panel normally costs you in idle memory — the honest comparison is against the 300MB-plus panels — that is the feature.
Twelve plugins cover the parts I would otherwise do by hand: containers, Git deployment with webhook rollback, databases with a SQL console, file manager with a terminal, monitoring with threshold alerts, Kopia-based backup to local, S3, WebDAV or SFTP, firewall, PHP-FPM and FrankenPHP, cron, an app store of 269 apps, and the AI assistant.
Most of that is table stakes and none of it is why I kept it. The Caddy integration is why I kept it: certificates and reverse proxies are the part of server administration I most resent doing by hand, and the part Caddy is best at.
The AI part, honestly
This is the feature I was most sceptical about, and the one I use least for anything destructive. It is not a chat box bolted onto a settings page: dozens of built-in tools, and dangerous operations go through a confirmation step first. You bring your own API key — OpenAI, Anthropic, Gemini, DeepSeek, Moonshot, Zhipu or any compatible endpoint — encrypted at rest, with the claim that nothing routes through the vendor’s servers.
Where it earns its place is pasting a build failure and getting the real cause rather than the last line of the log, or generating a Caddyfile I was about to write from memory and get subtly wrong. It is fast autocomplete for configuration, and wrong often enough that I still read the diff. The MCP server is the more interesting piece for me: Cursor, Windsurf and Claude Code can drive the panel directly, so “create a vhost for this and give it a certificate” gets issued from the editor I am already in.
The honest trade-offs
Distribution support is narrow, and it is a hard stop rather than a caveat: EL9 and EL10 only. AlmaLinux, Rocky, CentOS Stream, RHEL, Oracle Linux, Fedora 41 and up. Debian and Ubuntu are explicitly not supported. If your fleet is Ubuntu — and most fleets are — this is not your tool today, and no amount of wanting it changes that.
Caddy only. It will not manage nginx or Apache, and there is no migration path for nginx vhosts. The documentation is blunt that the tight Caddy coupling is precisely why it stays small, which is a fair trade and still a trade.
- There is no automated migration from BT Panel or 1Panel. You can run them side by side and move sites by hand. Helpful, but not a wizard.
- It is pre-1.0 and effectively single-maintainer. The current release is v0.19.0, the repository is a few months old, it has a few dozen stars and one contributor. That is not disqualifying for a tool running on a box you control, but it does mean you should be comfortable reading Go when something breaks.
- The documentation contradicts itself in small ways — the plugin count, the number of AI tools, and whether the installer compiles from source or downloads a prebuilt binary all differ between pages. Not dangerous, but it is the texture of a young project, and it means checking claims against the release notes rather than the marketing page.
- Two more inconsistencies worth knowing: containers are managed through Podman underneath despite being presented as Docker, and the installer contains a pro flag while the FAQ says there are no paid tiers. Read both as questions to ask, not sins.
- The comparison table against BT Panel, 1Panel and CasaOS is written by the vendor and benchmarks its own product. The directional claim — smaller, less memory — matches the architecture. The specific numbers are marketing.
- A panel is still a panel: a web application with root on your server, listening on a port. Put it behind your VPN or an address allowlist, turn on the second factor, and use the audit log. RBAC here is only Admin and Viewer, so there is no middle ground for a colleague who should be able to restart things but not read the database.
Where I landed
Not as a replacement for configuration management. Ansible still owns the servers; the panel is a second, faster interface for the cases where SSH is the wrong tool.
The test I applied before keeping it was whether I would still want it with the AI removed. Yes — the Caddy integration and the container and backup plugins carry it. It is the first panel I have kept installed past a week, mostly because it does less than the others and is honest about what it will not do.