[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73182":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":40,"trendingCount":16,"starSnapshotCount":16,"syncStatus":41,"lastSyncTime":42,"discoverSource":43},73182,"sidekick","MightyMoud\u002Fsidekick","MightyMoud","Bare metal to production ready in mins; your own fly server on your VPS.","https:\u002F\u002Fwww.sidekickdeploy.com",null,"Go",7411,157,24,13,0,3,7,16,9,73.7,"GNU General Public License v3.0",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37],"deployment","heroku","self-host","self-hostable","self-hosted","self-hosting","selfhosting","vps-admin","vps-server","vps-setup","vps-ubuntu","2026-06-12 04:01:07","\u003Cdiv align=\"center\">\n  \u003Cdiv>\n    \u003Cimg width=\"110px\" src=\"https:\u002F\u002Femoji.aranja.com\u002Fstatic\u002Femoji-data\u002Fimg-apple-160\u002F1f91c-1f3fb.png\">\n    \u003Cimg width=\"110px\" src=\"https:\u002F\u002Femoji.aranja.com\u002Fstatic\u002Femoji-data\u002Fimg-apple-160\u002F1f91b-1f3fb.png\">\n  \u003C\u002Fdiv>\n\nBare metal to production ready in mins; imagine fly.io on your VPS\n\n  \u003Cdiv>\n    \u003Cimg width=\"600px\" src=\"\u002Fdemo\u002Fimgs\u002Fhero.png\">\n  \u003C\u002Fdiv>\n\n![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fmightymoud\u002Fsidekick)\n![GitHub go.mod Go version](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fgo-mod\u002Fgo-version\u002Fmightymoud\u002Fsidekick)\n![GitHub tag (latest SemVer)](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Ftag\u002Fmightymoud\u002Fsidekick)\n\n\u003C\u002Fdiv>\n\n## Features\n\n- 👍 One command VPS setup (docker, traefik, sops, age)\n- 💻 deploy any application from a dockerfile\n- ✊ Zero downtime deployment\n- 🌏 High availability and load balancing\n- 🔒 Zero config SSL Certs\n- ✅ Connect domains or use sslip.io out of the box\n- 🔥 Built in integration with SOPS\n- 🛸 Escape the vendorlock forever\n\n## Motivation\n\nI'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\u002Fmonth instance on DigitalOcean can handle.\n\n## Installation\n\nUsing brew:\n\n```bash\nbrew install sidekick\n```\n\nNOTE: 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](https:\u002F\u002Fbrew.sh\u002F).\n\n## Usage\n\nSidekick helps you along all the steps of deployment on your VPS. From basic setup to zero downtime deploys, we got you! ✊\n\nFirst 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.\n\nJust make sure the following is true:\n\n- VPS running Ubuntu - LTS recommended\n- SSH Key available on your machine to login to VPS.\n\nThat's it!\n\n### VPS Setup\n\n  \u003Cdiv align=\"center\" >\n    \u003Cimg width=\"600px\" src=\"\u002Fdemo\u002Fimgs\u002Finit.png\">\n  \u003C\u002Fdiv>\n\nFirst you need to setup your VPS. To do this you need to run:\n\n```bash\nsidekick init\n```\n\nThen you need to enter the following:\n\n- IP Address of your VPS\n- An email address to use for setting up SSL certs\n\nAfter that Sidekick will setup many things on your VPS - Usually takes around 2 mins.\nIf 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.\n\nYou can use flags instead. Read more [in the docs](https:\u002F\u002Fwww.sidekickdeploy.com\u002Fdocs\u002Fcommand\u002Finit\u002F).\n\n\u003Cdetails>\n  \u003Csummary>What does Sidekick do when I run this command?\u003C\u002Fsummary>\n  \n* Login with `root` user\n* Make a new user `sidekick` and grant sudo access\n* Logout from `root` and login with `sidekick`\n* Disable login with `root` user - security best practice\n* Update and upgrade your Ubuntu system\n* Install `sops` and copy over the public key to your sidekick config file\n* Use `age` to make secret and public keys to use later for encrypting env file.\n* Send public key back to host machine to be used later for encryption\n* Install Docker\n* Add user sidekick to docker group\n* Setup Traefik and SSL certs on your VPS\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n  \u003Csummary>Which SSH key will Sidekick use to login?\u003C\u002Fsummary>\n\nSidekick will look up the default keys in your default .ssh directory in the following order:\n\n- id_rsa.pub\n- id_ecdsa.pub\n- id_ed25519.pub\n\nSidekick 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`\n\n\u003C\u002Fdetails>\n\nRead more details about flags and other options for this command [on the docs](https:\u002F\u002Fwww.sidekickdeploy.com\u002Fdocs\u002Fcommand\u002Finit\u002F)\n\n### Launch a new application\n\n  \u003Cdiv align=\"center\" >\n    \u003Cimg width=\"600px\" src=\"\u002Fdemo\u002Fimgs\u002Flaunch.png\">\n  \u003C\u002Fdiv>\n\nIn 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.\n\nThen run:\n\n```bash\nsidekick launch\n```\n\nThen you need to enter the following:\n\n- Url friendly name of your app - if you opt to use `sslip.io` domain for testing this would be your subdomain\n- HTTP exposed port for your app to get requests - Sidekick will scan your docker file to try to extract this number and default it.\n- 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.io` domain so you can play around.\n- If you have any `env` file with secrets in it. Sidekick will attempt to find `.env` file in the root of your folder. Sidekick will use `sops` to encrypt your env file and inject the values securely at run time.\n\nShould take around 2 more mins to be able to visit your application live on the web if all goes well.\n\n\u003Cdetails>\n  \u003Csummary>What does Sidekick do when I run this command\u003C\u002Fsummary>\n  \n* Build your docker image locally for linux\n* Move the docker image to your VPS directly\n* Encrypt your env file, if available and push it to your VPS\n* Use sops to decrypt your env file and start and env with the values injected\n* Spin up your docker image using docker compose and route traffic to it using Traefik on the specified port\n\u003C\u002Fdetails>\n\n### Deploy a new version\n\n  \u003Cdiv align=\"center\" >\n    \u003Cimg width=\"600px\" src=\"\u002Fdemo\u002Fimgs\u002Fdeploy.png\">\n  \u003C\u002Fdiv>\nWith your application deployed, it's super simple to deploy a new version.\n\nAt any point any time you need to only run:\n\n```bash\nsidekick deploy\n```\n\nThat's all. It won't take long, we use cache from earlier docker images, your latest version should be up soon.\nSidekick will deploy the new version without any downtime - you can see more in the source code.\nThis command will also do a couple of things behind the scenes. You can check that below\n\n\u003Cdetails>\n  \u003Csummary>What does Sidekick do when I run this command\u003C\u002Fsummary>\n  \n* Build your docker image locally for linux\n* Compare your latest env file checksum for changes from last time you deployed your application.\n* If your env file has changed, sidekick will re-encrypt it and replace the encrypted.env file on your server.\n* Deploy the new version with zero downtime deploys so you don't miss any traffic. \n\u003C\u002Fdetails>\n\n### Deploy a preview environment\u002Fapp\n\n  \u003Cdiv align=\"center\" >\n    \u003Cimg width=\"600px\" src=\"\u002Fdemo\u002Fimgs\u002Fpreview.png\">\n  \u003C\u002Fdiv>\nSidekick 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. \nOnce you have a clean git tree, you can run the following command to deploy a preview app:\n\n```bash\nsidekick deploy preview\n```\n\n\u003Cdetails>\n  \u003Csummary>What does Sidekick do when I run this command\u003C\u002Fsummary>\n  \n* Build your docker image locally for linux\n* Tag the new image with the short checksum of your git commit\n* Encrypt your env file, if available and push it to your VPS\n* Add a new folder inside your app folder called \"preview\" where Sidekick will store and manage all your preview deployments\n* Deploy a new version of your app reachable on a short hash based subdomain\n\u003C\u002Fdetails>\n\n## Inspiration\n\n- https:\u002F\u002Ffly.io\u002F\n- https:\u002F\u002Fkamal-deploy.org\u002F\n\n## Vision\n\nSimple CLI tool that can help you:\n\n- Setup your VPS\n- Deploy all your side projects on a single VPS\n- Load balance multiple container per project\n- Deploy new versions with Zero downtime\n- Deploy preview environments with ease\n- Manage env secrets in a secure way\n- Connect any number of domains and subdomains to your projects with ease\n\n## Remove sidekick\n\nYou can easily remove sidekick if you hate it.\n\n```bash\nbrew uninstall sidekick\n```\n\n---\n\n## Roadmap\n\nI still have a couple more feature I want to add here. Also considering some of those to be on a paid version.\n\n- ✅ Preview env deployments\n- A way to deploy more complicated projects defined in docker compose file\n- Better zero downtime deploys with watchtower\n- Firewall setup\n- Managing multiple VPSs\n- Easy way to deploy databases with one command\n- TUI for monitoring your VPS\n- Streaming down compose logs - ala `fly logs`\n- Auto deploy on image push - to work with CICD better\n- Git hooks setup for managing migrations and other concerns\n","Sidekick 是一个帮助用户快速将裸机服务器配置为生产就绪环境的工具，特别适用于VPS。其核心功能包括一键式VPS设置（支持Docker、Traefik、SOPS等）、基于Dockerfile的应用部署、零停机时间部署以及自动SSL证书配置等。技术上，Sidekick利用Go语言编写，确保了高性能和低资源占用。此外，它还提供了高可用性和负载均衡能力，并且内置了对SOPS的支持，以增强安全性。此项目非常适合需要简易、低成本地托管个人项目或小型应用的开发者使用，特别是在DigitalOcean等云服务提供商上的Ubuntu LTS系统中。通过简化从初始设置到持续部署的过程，Sidekick旨在让用户摆脱复杂的运维工作，专注于开发本身。",2,"2026-06-11 03:44:25","high_star"]