explaingit

mightymoud/sidekick

7,397GoAudience · developerComplexity · 3/5Setup · moderate

TLDR

Sidekick is a CLI tool that turns a plain Ubuntu server into a self-hosted deployment platform with Docker, automatic SSL, and zero-downtime deploys in about two minutes of setup.

Mindmap

mindmap
  root((sidekick))
    What it does
      Server setup
      Docker deploys
      SSL auto-config
    Deploy Flow
      sidekick init
      sidekick launch
      sidekick deploy
    Features
      Zero-downtime
      Preview environments
      Encrypted secrets
    Tech
      Go
      Docker
      Traefik proxy
    Cost
      8 dollar server
      Self-hosted control
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Turn an $8/month DigitalOcean or Hetzner server into a self-hosted Heroku replacement for side projects

USE CASE 2

Deploy a Dockerized app with automatic SSL and zero-downtime updates using a single command

USE CASE 3

Create preview environments tied to specific git commits to test changes before they go to the main version

Tech stack

GoDockerTraefik

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a fresh Ubuntu server with SSH access, a domain pointed at it, and Homebrew on Mac for installation.

In plain English

Sidekick is a command-line tool that turns a plain Ubuntu server into a self-hosted deployment platform, similar in feel to services like Fly.io or Heroku but running entirely on hardware you control. The pitch is that a cheap virtual server (around $8 a month from providers like DigitalOcean or Hetzner) can handle a surprising amount of traffic for side projects, and Sidekick makes it as simple to use as a managed platform. Setup starts with one command: sidekick init. You supply your server's IP address and an email for SSL certificates, and Sidekick takes care of the rest. It creates a dedicated user account, disables root login for security, installs Docker, sets up a reverse proxy called Traefik that handles incoming web traffic, and configures automatic SSL certificates. The whole process takes about two minutes. Deploying an application requires a Dockerfile in your project folder. You run sidekick launch, answer a few prompts (the app name, which port it listens on, and which domain to point at it), and Sidekick builds the Docker image, transfers it to your server, and routes traffic to it. If you have an environment file with secrets or API keys, Sidekick encrypts it automatically before sending it to the server, so sensitive values are never stored in plain text. Updating an app to a new version is a single command (sidekick deploy) and is handled without downtime: the new container starts before the old one stops, so users do not notice the transition. The tool also supports preview environments tied to specific git commits, useful for testing a change before it goes to the main version. The project is written in Go and installed via Homebrew on Mac. It requires Homebrew as a dependency for installing one of its encryption tools.

Copy-paste prompts

Prompt 1
Walk me through deploying a Node.js app to a fresh DigitalOcean Ubuntu server using Sidekick, from sidekick init to the first live public URL.
Prompt 2
How do I add an environment file with API keys to a Sidekick deployment so secrets are encrypted before leaving my machine?
Prompt 3
Show me how to set up a preview environment with Sidekick so I can test a feature branch before merging to main.
Prompt 4
I want to run multiple apps on the same Sidekick server, how does Traefik routing work and how do I point each app at its own domain?
Prompt 5
How does Sidekick handle zero-downtime deploys, what happens to live traffic while a new container is starting?
Open on GitHub → Explain another repo

← mightymoud on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.