A self-hosted, single-user PaaS for deploying Docker containers with a
click-config form: a minimal Dokploy / Cloud Run alternative for your own
hardware.
Point at an image (or a git repo), fill in env vars / port / resources, hit
deploy: Traefik routes it to <slug>.yourdomain.com with TLS, automatically.
Single host, local Docker socket, no Kubernetes, no multi-node orchestration to
babysit.
Status: Actively developed, running on real hardware, but still finding
its shape: see docs/faq-and-limitations.md
for what's solid and what isn't yet.
Services: deploy from a Docker image or build from a git repo's
Dockerfile (any git-clone-able HTTPS URL, including a self-hosted Gitea); env
vars, CPU/memory limits, restart policy, private registry auth
Live deploy progress: pull/build/create/start streamed to the UI in real
time, resumes correctly if you reload mid-deploy
Deployment history: every attempt recorded with status, image digest, and
its full log
Projects: group services under one Docker network so they reach each other
by slug (http://api:8080), independent of the shared Traefik network
Templates: one-click deploys for common services (Redis, Postgres, MySQL,
MongoDB, Adminer, Uptime Kuma, n8n, Vaultwarden), plus save any service's
config as your own reusable template
Storage volumes: define bind-mount paths or Docker-managed volumes once,
mount into one or more services
Live log streaming & a web terminal: tail stdout/stderr or open an
interactive shell into a running container, all from the browser
Custom domains & SSL: a second hostname per service, plus bring-your-own
cert/key for domains outside Traefik's automatic ACME coverage
Remote hosts: point a service at another Docker daemon (tcp:///ssh://,
or the lightweight Homerun Agent) instead of the local
socket
Autoscale-by-migration: when the local host crosses a CPU/memory
threshold, automatically move one opted-in service to a designated overflow
host
Swarm mode: opt-in Docker Swarm deploys for real replica scaling and load
balancing across one service, instead of the default one-container model
DNS automation: optional Cloudflare or self-hosted Pangolin integration
auto-manages a deployed service's DNS record for you
In-app notifications: a per-user feed of deploy/service lifecycle events
Scheduled redeploys & S3 backups: cron-style auto-redeploy per service,
cron-style bind-mount volume backups to any S3-compatible endpoint
REST API, OpenAPI docs, and a CLI: everything above is also a typed JSON
API (/api/v1), with a live Swagger UI and a proper
homerun CLI built against the generated OpenAPI types
Per-service auth gate & account isolation: optionally require a Homerun
login to reach a deployed service; every container is labeled
homerun.managed=true so this app never touches anything it didn't create