Skip to content

Your apps, your servers.

Self-hosted deployment for a handful of web apps. Give it a Docker image and a domain; it runs the app behind HTTPS, watches it, and shows everything in one dashboard.

The Spotcraft dashboard showing an app's status, uptime, CPU, memory and response time, its settings, and its logs.

Small on purpose

Spotcraft is for one person running about ten server-rendered apps on two servers they own. Not a platform, not a cluster.

There is no build step (your CI publishes images), no database to look after (the app list is a folder of files), and nothing between your apps and the internet but Caddy.

What you get

  • Deploy from a form

    Image, tag, domain, limits and environment variables. Recent tags come straight from Docker Hub.

  • HTTPS without thinking

    Caddy gets and renews certificates on the first request, redirects www, and speaks HTTP/3.

  • Rollback on failure

    A deploy waits until the new container is healthy. If anything fails, the previous version keeps running.

  • Monitoring built in

    Uptime and response time from outside, CPU and memory per app, host load, and every app’s logs.

  • Hardened by default

    Apps run read-only, without Linux capabilities, with limits. Images are distroless and scanned in CI.

  • Your servers, your secrets

    Two plain VPSes you own. Every secret lives in your GitHub environment, never in a file or an image.

How it works

Two servers on a private network. The ops server watches the apps server from the outside, so it can tell you when something is down.

The apps server runs Caddy, the app containers, the agent and the exporters. The ops server runs Caddy, the dashboard, VictoriaMetrics and the uptime probes. The ops server calls the agent and scrapes the exporters over the private network; only Caddy on each server faces the internet.internet · 80 / 443apps serverCaddy (HTTPS)your app containersagentnode-exporter · cAdvisorops serverCaddy → dashboardVictoriaMetricsvmagent · uptime probesprivate network
  1. 01

    Create two servers

    An OpenTofu module does it on Hetzner Cloud in one apply; any Debian or Ubuntu VPS works with the first-boot script.

  2. 02

    Deploy Spotcraft

    Fill in a GitHub environment and run the Deploy workflow. It sets up both servers and checks the dashboard from outside.

  3. 03

    Add your apps

    Log in, add an image and a domain, point the domain at the apps server. That’s the whole loop.

Built on good tools

Spotcraft is mostly glue. The heavy lifting is done by software that is better at it than anything new would be.

  • Caddy

    HTTPS, certificates and the reverse proxy in front of every app.

  • Docker

    Every app is a container; every deploy is Docker Compose.

  • VictoriaMetrics

    Stores the metrics and uptime the dashboard draws.

  • SvelteKit

    The dashboard and this site.

  • Fastify

    The agent that deploys apps on the apps server.

  • OpenTofu

    Creates the servers, network and firewall on Hetzner.

Ready to run your own?

Two servers, one workflow run, then apps from a form. The guide takes about half an hour.