
SelfStack
github.com/avanderheyde/self-stack- Category
- Developer Tools
- Rank
- No. 2193Tools index
Previous survey · No. 2162 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- @Alderik_
- GitHub
- 1 stars
- Latest release
- v0.2.0
- Date
About
A single-binary Go CLI that deploys a locally built app to a Hetzner VPS you own, reachable only over a Tailscale private network rather than a public URL. It provisions the server, autodetects the project type (Docker, Node, Python, Go), generates Docker config when a project lacks one, and manages app lifecycle — start, stop, update, remove — from a built-in dashboard. It targets personal, AI-generated apps that work on localhost and have nowhere durable to live.
What it does
SelfStack moves a project from a developer’s machine onto a privately accessible VPS. It detects common project types, creates missing container configuration, transfers the source, builds and starts the container, checks its health, and exposes it through Tailscale. A bundled dashboard and HTTP control plane manage application state stored in SQLite.
Why it's ranked here
The tool addresses a specific, credible pain point: keeping personal applications running without repeatedly assembling VPS infrastructure. Its project detection, provisioning, deployment, and lifecycle controls form a coherent workflow. The verdict remains mixed because the project describes itself as pre-launch, its speed targets remain unmeasured, and important security and recovery features are unfinished.
What's good
The deployment path covers more than container startup. It can provision a Hetzner server or adopt an existing VPS, allocate ports, stream progress, perform health checks, and configure private Tailscale access. It supports registry applications and local source trees. Updates preserve volumes, while the dashboard and REST interface provide alternatives to terminal-only operation.
Tradeoffs
Managed provisioning is specific to Hetzner, while an existing VPS must already support Docker, Compose, SSH key authentication, and required local transfer tools. Tailscale is the shipped private-access route. Automated backups, multi-user controls, MCP integration, and a command-line logs view are absent. Device-token code exists, but its middleware is not connected to requests. Published deployment timings are design targets, not measurements.
How to use it well
Use SelfStack for private personal applications when you understand containers and SSH but want deployment repetition removed. It fits a workflow of generating or coding an app locally, deploying it to one owned server, and managing its lifecycle centrally. Keep independent backups and recovery procedures. It does not cover public hosting, team access control, or automated disaster recovery.
Technical notes+
main.go delegates into the Cobra command package. go.mod declares Go 1.25.0 with Chi, Cobra, Hetzner Cloud, YAML, and pure-Go SQLite dependencies. internal/api/server.go mounts JSON and SSE routes plus the embedded dashboard, but shows no authentication middleware. internal/api/apps.go streams install, deploy, update, removal, and logs events. internal/store/store.go enables SQLite WAL mode and creates application, device, configuration, and port-allocation tables. internal/app/service.go validates application names, resolves symlinks, restricts local sources to allowed roots, and rolls back failed local installs. internal/auth/auth.go implements Ed25519-signed device tokens, although the README states request-path enforcement is unfinished. internal/data/export.go provides manual Docker-volume archive import and export mechanisms.
Observed
- License
- Apache-2.0
- Primary language
- Go, with an embedded React and TypeScript dashboard
- Packaging
- Single Go binary; install script and source build are documented
- Interfaces
- Cobra CLI, REST API, server-sent event streams, and embedded web dashboard
- Runtime support
- Hetzner-provisioned Ubuntu VPS or an existing SSH-accessible VPS with Docker and Docker Compose
- State and runtime
- SQLite stores control-plane state; Docker runs applications; Tailscale provides private access
- Testing structure
- Repository layout includes an integration test directory and a Docker sample-app test
Read from README.md, go.mod, Makefile, main.go, internal/api/apps.go, internal/auth/auth.go, internal/api/server.go, internal/api/update.go, internal/store/apps.go, internal/app/service.go, internal/data/export.go, internal/proxy/proxy.go, internal/store/ports.go, internal/store/store.go, internal/config/paths.go.
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.