Gordon is a tool 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, Gordon can coordinate domain routing through Traefik (which needs to be pre-installed). This allows you to quickly deploy your applications to your desired domain or subdomain.
-
Ease of use:
- Push your container images effortlessly using the
gordon push
command. A container creation URL is generated upon successful push.
- Deploy your web applications quickly with
gordon deploy
.
- Push your container images effortlessly using the
-
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.
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.
For detailed instructions, please refer to the wiki
🛠️ 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!
- 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 (stop/remove if already exists)
- Improved web UI
- Quick database deploy templates (libsql, postgresql)
- GitHub Repository Integration:
- Repository selection and branch/tag filtering
- Dockerfile detection and validation
- Build configuration UI
- Build logs streaming
- Automated deployment triggers
- Build status notifications
Have suggestions? Feel free to open an issue!
Gordon is licensed under the GPL-3.0 license. Please see the LICENSE file for more details.