← All work

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.

Next projectAntrian MPP

Have something in mind?

Let’s make it work.