This repository is for:
- raising servers/cluster for pet projects
- For infra specific applications (monitoring stuff for example)
- and for reusable modules/infra templates for reusage in other repositories
Docker with Swarm was chosen over Kubernetes for homelab because:
- Docker/Swarm is more lightweight. Microk8s that was tried for k8s, required 1.2gb RAM for hello world.
- Microk8s was freezing from time to time.
- K8s in self hosted way requires extra dependencies to run itself in multiple amount, with high decaying rate. Metallb, ingress nginx
- If we would have went for K8s, we would be needing to keep up with community supported helm charts for monitoring stuff at least that bring even more infra code. Infra code is still a code, homelab done in a free time must be using our time very efficiently and justified.
In the long run, projects running with code from this repo are meant to be running for years with minimum effort in a stable way in a cheap way from Hetzner single server. The aim to have only minimal need for support that could be performed as rarely as once in a year or two. For this reason Docker Swarm is prefered default. Kubernetes way will remain as experimental extra way to run things. Projects could be having optional switch for their running in Kubernetes for the same experimental purposes from time to time may be, but they will be always having Docker/Swarm running way being available first. If some day Kubernetes benefits will overweight Docker Swarm way to run, this may change.
name | Logo | purpose |
---|---|---|
Docker | App as a code with reproducability of a saved image to which we can rollback | |
Opentofu | to setup Hetzner, DNS at cloudflare and docker containers and services. | |
Github Actions | for automated testing and deployments in a fully GitOps way | |
KCL | To setup yaml of Github Actions with static typing and code reusage |
Link | Logo | Description |
---|---|---|
docker swarm | simple container scheduler controlled by terraform | |
caddy docker proxy | reverse proxy and tls by labels to docker containers | |
grafana | visualizer of monitoring systems | |
loki | logging system | |
prometheus | metrics backend for dashboards and alerts | |
alertmanager | alert sender | |
alloy | collector of logs/metrics/traces/profiles | |
fl-darkbot | discord bot for Discovery Freelancer community | |
fl-darkstat | game data navigational tool for Freelancer |
Link | Logo | Description |
---|---|---|
game-servers | personal game servers, minecraft and avorion | |
microk8s | k8s cluster for experiments | |
argo-cd | for experimental deploys to k8s |