Initial setup based on khuedoan/homelab
This project utilizes Infrastructure as Code and GitOps to automate provisioning, operating, and updating self-hosted services in my homelab.
- ThinkPad x1 Carbon 7th gen
- CPU:
Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
- RAM:
16GB
- SSD:
256GB
- CPU:
- Common applications: Gitea, Seafile, Jellyfin, Paperless...
- Automated bare metal provisioning with PXE boot
- Automated Kubernetes installation and management
- Installing and managing applications using GitOps
- Automatically update apps (with approval)
- Modular architecture, easy to add or remove features/components
- Automated certificate management
- Automatically update DNS records for exposed services
- VPN without port forwarding
- Expose services to the internet securely with Cloudflare Tunnel
- CI/CD platform
- Private container registry
- Automatic rolling upgrade for OS and Kubernetes
- Distributed storage
- Support multiple environments (dev, prod)
- Monitoring and alerting 🚧
- Automated offsite backups
- Single sign-on
- Infrastructure testing
Logo | Name | Description |
---|---|---|
Ansible | Automate bare metal provisioning and configuration | |
ArgoCD | GitOps tool built to deploy applications to Kubernetes | |
cert-manager | Cloud native certificate management | |
Cloudflare | DNS and Tunnel | |
Docker | Ephemeral PXE server and convenient tools container | |
ExternalDNS | Synchronizes exposed Kubernetes Services and Ingresses with DNS providers | |
Fedora Server | Base OS for Kubernetes nodes | |
Gitea | Self-hosted Git service | |
Grafana | Operational dashboards | |
Helm | The package manager for Kubernetes | |
K3s | Lightweight distribution of Kubernetes | |
Kubernetes | Container-orchestration system, the backbone of this project | |
Loki | Log aggregation system | |
Longhorn | Cloud native distributed block storage for Kubernetes | |
MetalLB | Bare metal load-balancer for Kubernetes | |
NGINX | Kubernetes Ingress Controller | |
Prometheus | Systems monitoring and alerting toolkit | |
Renovate | Automatically update dependencies | |
Concourse | Open-source automation system used for CI/CD. | |
Harbor | Private container registry | |
Vault | Secrets and encryption management system |
Copyright © 2023 - Atte Niemi
Copyright © 2020 - 2023 Khue Doan
Distributed under the GPLv3 License.
See license page or LICENSE.md
file for more information.
References:
- khuedoan/homelab
- Ephemeral PXE server inspired by Minimal First Machine in the DC
- ArgoCD usage and monitoring configuration in locmai/humble
- README template
- Run the same Cloudflare Tunnel across many
cloudflared
processes - MAC address environment variable in GRUB config
- Official k3s systemd service file
- Official Cloudflare Tunnel examples
- Initialize GitOps repository on Gitea and integrate with Tekton by RedHat
- SSO configuration from xUnholy/k8s-gitops
- Pre-commit config from k8s-at-home/flux-cluster-template
- Diátaxis technical documentation framework
- Official Terratest examples
Here is a list of the contributors who have helped to improve this project. Big shout-out to them!
- @locmai
- @MatthewJohn
- @karpfediem
- @linhng98
- @BlueHatbRit
- @dotdiego
- @Crimrose
- @eventi
- @Bourne-ID
- @akwan
- @trangmaiq
If you feel you're missing from this list, feel free to add yourself in a PR.