{"repo":"gsamokovarov/hamal","free":true,"listed":false,"github":"https://github.com/gsamokovarov/hamal","clone":"git clone https://github.com/gsamokovarov/hamal.git","description":"Hamal is a simple deploy tool for self-hosted Rails applications","language":"Ruby","stars":16,"topics":[],"license":null,"category":"self-hosted-apps","readme_excerpt":"Hamal is a simple deploy tool for self-hosted Rails applications. Learn how it works, how to configure it, and how to provision new servers. Not to be confused with Kamal. 😉 PLACEHOLDERS : Some commands and configuration snippets described in this configuration are app-specific, i.e. their exact contents will vary from app to app. In order to make this documentation generic, the #{app name} and #{app domain} placeholders are used in such places. Replace the placeholders with the respective values in config/deploy.yml before executing the commands / copying the configuration. Overview hamal implements a simple deploy process for a self-hosted app on a server that you administer. It: 1. Connects to the server via SSH. All subsequent stages happen on the server. 2. Fetches the code that will be deployed from GitHub. 3. Builds a Docker image containing the app's code. 4. Uses that image to run the app in a container. 5. Configures nginx to expose the app container to the Internet. Prerequisites To deploy the app to a server, you will need: - A bare-bones Ubuntu 22.04 server. - SSH access as root to that server. Provision When you want to deploy the app on a new server, prepare it for service first by following the steps in this section. System settings (on the server) Update packages Install latest updates. You'd likely want to do this periodically. Note: If provisioning an ARM64 Hetzner server, make sure the mirrors in /etc/apt/sources.list are using http://mirror.hetzner.com/u","default_branch":null,"files":null,"tree":[],"storefront":"/r/gsamokovarov","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/gsamokovarov/hamal/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}