Home

Awesome

<div align="center"> <div> <img width="110px" src="https://emoji.aranja.com/static/emoji-data/img-apple-160/1f91c-1f3fb.png"> <img width="110px" src="https://emoji.aranja.com/static/emoji-data/img-apple-160/1f91b-1f3fb.png"> </div>

Bare metal to production ready in mins; imagine fly.io on your VPS

<div> <img width="600px" src="/demo/imgs/hero.png"> </div>

GitHub GitHub go.mod Go version GitHub tag (latest SemVer)

</div>

Features

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

Using brew:

brew install sidekick

NOTE: Sidekick uses brew later on to handle installing sops on your local. So brew is a requirement at this point. Sidekick will throw an error if brew is not found. You can install brew from here.

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:

That's it!

VPS Setup

<div align="center" > <img width="600px" src="/demo/imgs/init.png"> </div>

First you need to setup your VPS. To do this you need to run:

sidekick init

Then you need to enter the following:

After that Sidekick will setup many things on your VPS - Usually takes around 2 mins. If you run this command once more and enter a different IP Address, Sidekick will warn you that you are overriding the current config with a prompt.

You can use flags instead. Read more in the docs.

<details> <summary>What does Sidekick do when I run this command?</summary> </details> <details> <summary>Which SSH key will Sidekick use to login?</summary>

Sidekick will look up the default keys in your default .ssh directory in the following order:

Sidekick will also get all keys from the ssh-agent and try them as well. If you want to use a custom key and not a default one, you would need to add the to your agent first by running ssh-add KEY_FILE

</details>

Read more details about flags and other options for this command on the docs

Launch a new application

<div align="center" > <img width="600px" src="/demo/imgs/launch.png"> </div>

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:

Should take around 2 more mins to be able to visit your application live on the web if all goes well.

<details> <summary>What does Sidekick do when I run this command</summary> </details>

Deploy a new version

<div align="center" > <img width="600px" src="/demo/imgs/deploy.png"> </div> With your application deployed, it's super simple to deploy 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

<details> <summary>What does Sidekick do when I run this command</summary> </details>

Deploy a preview environment/app

<div align="center" > <img width="600px" src="/demo/imgs/preview.png"> </div> Sidekick also allows you to deploy preview apps at any point from your application. Preview apps 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 app:
sidekick deploy preview
<details> <summary>What does Sidekick do when I run this command</summary> </details>

Inspiration

Vision

Simple CLI tool that can help you:

Remove sidekick

You can easily remove sidekick if you hate it.

brew uninstall sidekick

Roadmap

I still have a couple more feature I want to add here. Also considering some of those to be on a paid version.