Skip to content

bnema/gordon

Repository files navigation


Gordon
Gordon

Minimalist self-hosted containerized app deployment tool.

Gordon is a tool written in Go that aims to simplify the deployment of your containerized web applications. It automates the process of integrating your locally built image into your self-hosted setup without the need of a container registry. Optionally, for the deploy command, Gordon can coordinate domain routing through Traefik (which needs to be pre-installed). When used, this feature eliminates the need for manual configuration and streamlines the deployment process.

Key Features

  • Ease of use:

    • Push your container images effortlessly using the gordon push command. A container creation URL is generated upon successful push.

    Demo Push

    • Deploy your web applications quickly with gordon deploy.

    Demo Deploy

  • Self-Hosted: Operates within your existing self-hosted environment without interfering with your setup.

  • Self-Updated: The client can update itself to the latest version with gordon update. The backend is updated by pulling the latest image from ghcr.io.

  • Minimal WebUI: Provides a simple web UI to manage your deployments, domains, exposed ports. Using a very minimal stack (sqlite3, Go templates, HTMX and Tailwind CSS).

  • Simple authentication: Use GitHub OAuth for the web UI and OAuth 2.0 device authorization grant (device flow) for the CLI client.

  • Automated Routing: Collaborates with Traefik to automatically route your application to your desired domain or subdomain.

  • One binary: Gordon follows the Golang philosophy of keeping things simple, offering a single binary for all functionalities.

Why ?

I needed a simple tool that would automate the process of quickly spin up my web apps and preferably not on someone else's computer. And since I wanted to learn Go, I decided to build it myself.

Installation / Getting Started / Usage

For detailed instructions, please refer to the wiki

Development Status & Disclaimer

🛠️ Note: Gordon is under heavy development and is absolutely not ready for production. Thank you in advance for taking the time to test it and report any issues you may encounter.

I also want to emphasize that I am far from being a Go expert yet. Hence, if you notice any poor practices, I welcome your feedback—respectfully, of course. It's a valuable part of the learning process!

Roadmap beyond 0.1

  • Improved error handling
  • Improved logging
  • Refined CLI to backend authentication process (utilizing GitHub OAuth Device flow)
  • push command
  • version command
  • update command
  • deploy command
  • Survey(s) on deploy command (delete if already exists, etc.)
  • Improved web UI
  • Templates for databases (mysql, postgresql, redis, etc.)

Have suggestions? Feel free to open an issue!

License

Gordon is licensed under the GPL-3.0 license. Please see the LICENSE file for more details.