Developer tooling / Open source
Several projects. One simpler deployment.
An open-source Go CLI that manages a shared Caddy reverse proxy for Docker Compose projects on a VPS.
- Project
- Caddyku
- My role
- Creator and developer
- Scope
- CLI and deployment workflow
- Built with
- Go, Cobra, Docker, Caddy
- Period
- 2026 · repository activity
- Project status
- Open-source tool
Engineering focus
Validate before changing shared routes
Generated configuration is validated inside Caddy, with rollback on failure, to help contain mistakes on a VPS hosting several apps.
Keep changes inspectable
Dry runs show proposed mutations, while managed sections preserve configuration outside the tool’s ownership.
Diagnose the connection path
Status checks follow the proxy, shared Docker network, and upstream application to make routing failures easier to locate.
An independent open-source project by Jufianto Henri. The diagram illustrates routing; it is not a screenshot of a hosted dashboard.
The inspected history runs from May to July 2026. These are repository activity dates, not a service lifetime. Public MIT-licensed CLI. The personal project write-up describes its use on the author’s infrastructure; current server routing was not reverified for this review.
A small task that kept repeating
Running several Docker Compose projects on one VPS meant repeatedly editing shared proxy configuration, connecting containers, and checking domains. A mistake in a shared configuration could affect more than one application.
I built Caddyku to make that workflow easier to manage. Each project declares its domains in a local configuration file. The CLI gathers those declarations and updates one shared Caddy reverse proxy.
Build on what already works
Caddy already handles automatic HTTPS and configuration reloads. Caddyku focuses on the workflow around it: adding projects, synchronizing routes, and explaining connection problems.
The tool validates a generated configuration inside the running Caddy container and restores the previous configuration when validation fails. Its status command helps locate problems along the proxy, network, and upstream connection.
Make changes inspectable
Mutating commands support a dry run so the proposed configuration changes can be reviewed before being applied. The tool also preserves configuration outside its own marked sections.
These decisions came from running real projects on a shared server. The goal is a small, understandable tool with useful failure messages.
A tool used in practice
Caddyku is published under the MIT license and distributed as a Go binary. My personal project write-up describes using it to serve jufi.dev; that is a record of my own infrastructure use rather than a claim about customer adoption.
The repository and a hands-on guide are public, so you can inspect both the implementation and its intended workflow.