Vibeleaderboard
Index / tool
Visit github.com
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

self-hostingdeploymenttailscalehetznerdockergolangcli

Tech Stack

Go

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.