Modern self-hosting framework, fully automated from empty disk to operating services with a single command.
Go to file
2022-01-14 09:29:34 +07:00
.tekton ci: switch use Kustomize 2021-12-27 11:16:10 +07:00
apps fix(element): upgrade Element chart to latest 2022-01-09 23:40:31 +07:00
bootstrap chore(argocd): upgrade ApplicationSet chart to 1.8.0 2022-01-09 23:19:35 +07:00
docs docs: add more details to BIOS setup guide 2022-01-08 10:54:23 +07:00
external refactor: inject Terraform secrets with Terraform 2021-12-29 22:51:36 +07:00
metal chore(metal): switch to k3s 1.23 stable 2022-01-08 00:56:44 +07:00
platform Revert "feat(tekton): let ArgoCD manage Tekton config for all repo" 2022-01-02 17:16:49 +07:00
scripts refactor(scripts): combine wait apps and ingresses 2022-01-13 23:48:01 +07:00
system Revert "feat: expose Gitea SSH to the internet" 2022-01-10 00:58:12 +07:00
tools chore(tools): add Kubernetes Python library 2021-12-31 23:55:46 +07:00
.gitattributes style: do not detect YAML files 2021-12-25 19:54:26 +07:00
.gitignore refactor: remove Terraform and CoreOS files from ignore list 2021-12-05 11:42:24 +07:00
.yamllint.yaml style: add yamllint rules 2021-12-26 12:19:05 +07:00
configure.py build: update configure script 2022-01-04 22:27:46 +07:00
LICENSE.md style: convert LICENSE to Markdown 2021-11-18 00:35:38 +07:00
Makefile chore: cleanup lint targets 2021-12-27 11:36:47 +07:00
README.md docs(license): put notice in disclosure widget 2022-01-14 09:29:34 +07:00

Khue's Homelab

chat tag document license stars

This project utilizes Infrastructure as Code to automate provisioning, operating, and updating self-hosted services in my homelab. It can be used as a highly customizable framework to build your own homelab.

Feel free to join me on my Matrix chat server at chat.khuedoan.com, or #homelab:matrix.khuedoan.com if you already have a Matrix client. Please note that the chat server is self-hosted on my homelab and still at the experimental stage.

Overview

This section provides a high level overview of the project. For further information, please see the documentation.

Hardware

Hardware

  • 4 × NEC SFF PC-MK26ECZDR (Japanese version of the ThinkCentre M700):
    • CPU: Intel Core i5-6600T @ 2.70GHz
    • RAM: 16GB
    • SSD: 128GB
  • TP-Link TL-SG108 switch:
    • Ports: 8
    • Speed: 1000Mbps

Features

Status: Alpha

  • Common applications: Gitea, Seafile, Jellyfin, Paperless...
  • Automated bare metal provisioning with PXE boot
  • Automated Kubernetes installation and management
  • Installing and managing applications using GitOps
  • Modular architecture, easy to add or remove features/components
  • Automated certificate management
  • Automatically update DNS records for exposed services
  • Expose services to the internet securely with Cloudflare Tunnel
  • CI/CD platform
  • Private container registry
  • Distributed storage
  • Monitoring and alerting 🚧
  • Support multiple environments (dev, stag, prod) 🚧
  • Automated offsite backups 🚧
  • Single sign-on 🚧

See Roadmap for more details.

Tech stack

Logo Name Description
Ansible Ansible Automate bare metal provisioning and configuration
ArgoCD ArgoCD GitOps tool built to deploy applications to Kubernetes
Cloudflare Cloudflare DNS and Tunnel
Docker Docker Ephermeral PXE server and convenient tools container
Gitea Gitea Self-hosted Git service
Grafana Grafana Operational dashboards
Helm Helm The package manager for Kubernetes
K3s K3s Lightweight distribution of Kubernetes
Kubernetes Kubernetes Container-orchestration system, the backbone of this project
Let's Encrypt Let's Encrypt Free, automated (via cert-manager), and open certificate authority
Loki Loki Log aggregation system
Longhorn Longhorn Cloud native distributed block storage for Kubernetes
MetalLB MetalLB Bare metal load-balancer for Kubernetes
NGINX NGINX Kubernetes Ingress Controller
Prometheus Prometheus Systems monitoring and alerting toolkit
Rocky Linux Rocky Linux Base OS for Kubernetes nodes
Tekton Tekton Cloud native solution for building CI/CD systems
Trow Trow Private container registry
Vault Vault Secrets and encryption management system

Get Started

Roadmap

See roadmap and open issues for a list of proposed features and known issues.

Contributing

Any contributions you make, either big or small, are greatly appreciated.

License

Copyright (c) 2020, 2021, 2022 Khue Doan

Distributed under the GPLv3 License.

This project is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this project (LICENSE.md). If not, see https://www.gnu.org/licenses.

Acknowledgements

Stargazers over time

Stargazers over time