Docs / Server / Adding an application

Adding an application

Every application on the server is an isolated compose stack that joins the shared network and announces itself to the proxy with two labels. Adding one is a three-command procedure; removing one is two.

Rule of thumb: the spine (proxy and tunnel) changes rarely and carefully; applications change freely and often. Anything expressible as a compose file is cheap to try and cheap to delete.

§Scaffold

hdc new immich img        # creates apps/immich → img.heavenlydemon.consulting
vim apps/immich/docker-compose.yml   # real image, port, volumes

The scaffold arrives routed and labeled. Persistent state belongs under /srv/hdc/data/<app>; internal services (databases, workers) stay off the shared network entirely.

§Ship

hdc up immich             # live — wildcard DNS means no other step

There is no step three. The wildcard record points at the tunnel; the tunnel points at the proxy; the proxy reads the labels. A new subdomain resolves the moment its container stands.

§Verify

hdc ls                    # every app and its state
hdc logs immich           # follow the newcomer

Next guide: The hdc command →