Bare metal to production ready in mins; your own fly server on your VPS.

Features
๐ One command VPS setup (docker, traefik, sops, age)
๐ป deploy any application from a dockerfile
โ Zero downtime deployment
๐ High availability and load balancing
๐ Zero config SSL Certs
โ Connect domains or use sslip.io out of the box
๐ฅ Built in integration with SOPS
๐ธ Escape the vendorlock forever
Motivation
I'm tired of the complexity involved in hosting my side projects. While some platforms, like Fly.io, stand out in the crowded field of Heroku replacements, I believe a simple VPS can be just as effective. That's why I created Sidekick: to make hosting side projects as straightforward, affordable, and production-ready as possible. You'll be surprised how much traffic a $8/month instance on DigitalOcean can handle.
Installation
With GO installed on your system you need to run
go install github.com/mightymoud/sidekick@latest
Usage
Sidekick helps you along all the steps of deployment on your VPS. From basic setup to zero downtime deploys, we got you! โ
First you need a VPS with Ubuntu LTS. I recommend DigitalOcean. Hetzner also gets very good reviews. You can host your own silicon too. As long as you have a public IP address you can use Sidekick.
Just make sure the following is true:
VPS running Ubuntu - LTS recommended
SSH Public Key available on your machine to login to VPS.
That's it!
VPS Setup

First you need to setup your VPS. To do this you need to run:
sidekick init
Then you need to enter the following:
IP Address of your VPS
An email address to use for setting up SSL certs
Docker registry to host your docker images - defaults to
docker.ioDocker username in the said registry
Confirm you are currently logged in to that said registry with the username - This is needed to be able to push images on your behalf
After that Sidekick will setup many things on your VPS - Usually takes around 2 mins
What does Sidekick do when I run this command
Launch a new application

In your application folder, make sure you have a working Dockerfile that you can build and run. Also make sure you know at which port your app is expecting to receive traffic.
Then run:
sidekick launch
Then you need to enter the following:
Url friendly name of your app - if you opt to use
sslip.iodomain for testing this would be your subdomainHTTP exposed port for your app to get requests - Sidekick will scan your docker file to try to extract this number and default it.
Domain at which you want this application to be reachable - If you choose your own domain make sure to point the domain to your VPS IP address; otherwise we default to
sslip.iodomain so you can play around.If you have any
envfile with secrets in it. Sidekick will attempt to find.envfile in the root of your folder. Sidekick will usesopsto encrypt your env file and inject the values securely at run time.
Should take around 2 more mins to be able to visit your application live on the web if all goes well.
What does Sidekick do when I run this command
Deploy a new version

With your application deployed, it's super simple to redeploy a new version.
At any point any time you need to only run:
sidekick deploy
That's all. It won't take long, we use cache from earlier docker images, your latest version should be up soon. Sidekick will deploy the new version without any downtime - you can see more in the source code. This command will also do a couple of things behind the scenes. You can check that below
What does Sidekick do when I run this command
Deploy a preview environment

Sidekick also allows you to deploy preview envs at any point from your application. Preview envs are attached to your commit hash and require a clean git tree before you can initiate them. Once you have a clean git tree, you can run the following command to deploy a preview environment:
sidekick deploy preview
What does Sidekick do when I run this command
Inspiration
Vision
Simple CLI tool that can help you:
Setup your VPS
Deploy all your side projects on a single VPS
Load balance multiple container per project
Deploy new versions with Zero downtime
Deploy preview environments with ease
Manage env secrets in a secure way
Connect any number of domains and subdomains to your projects with ease
Remove sidekick
You can easily remove sidekick if you hate it.
// Mac/Linux
cd $HOME/go/bin
rm sidekick
cd ~/.config
rm -rf sidekick
// Win
cd %USERPROFILE%\go\bin
del sidekick.exe
// Powershell
cd $HOME\go\bin
Remove-Item sidekick.exe
Roadmap
I still have a couple more feature I want to add here. Also considering some of those to be on a paid version.
Preview env deployments
A way to deploy more complicated projects defined in docker compose file
Better zero downtime deploys with watchtower
Firewall setup
Managing multiple VPSs
Easy way to deploy databases with one command
TUI for monitoring your VPS
Streaming down compose logs - ala
fly logsAuto deploy on image push - to work with CICD better