Modern self-hosting framework, fully automated from empty disk to operating services with a single command.
Go to file
Khue Doan 3d3e9a92c6 refactor(bootstrap)!: switch to Helm with better templates
Squashed commit of the following:

commit c2d2def93933d5dd6ca5618385de226cd75dab3f
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Mon Dec 27 17:39:32 2021 +0700

    refactor(bootstrap): switch branch to master

commit a84a3f6ff14ee484c374f4eb13aa92495917249c
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Mon Dec 27 17:36:41 2021 +0700

    fix(bootstrap): add missing fields

commit 9d8f3d2e2374dba06c76a83241f1ea161094b241
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Mon Dec 27 17:25:04 2021 +0700

    build(bootstrap): update dependencies if needed before apply

commit 4d725efa82b4283eb701263a8b76a7c371db1e2b
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Mon Dec 27 17:15:46 2021 +0700

    feat(bootstrap): port changes from master

commit 7cb8d09a73cc17232314d742de52ae15daac1565
Merge: 3dc1417 d493de3
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Mon Dec 27 16:33:06 2021 +0700

    Merge branch 'master' into bootstrap-rework

commit 3dc141723d52ffbe0eaf3a485513dd55bb268c0f
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Wed Dec 1 13:43:28 2021 +0700

    build(bootstrap): change make targets

commit e81abd30158ca312edc64bfb88f88e7349d16a3e
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Wed Dec 1 13:42:44 2021 +0700

    feat(bootstrap): add global values

commit 69371afacf7645c935fd89807ec101670d5009d2
Merge: 370b1ca e89aea8
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Wed Dec 1 12:19:33 2021 +0700

    Merge branch 'master' into bootstrap-rework

commit 370b1caf46cffcaaad4d2e38ceca8757259cf1e9
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Wed Nov 17 00:43:13 2021 +0700

    fix namespace

commit 9ca055cd40b060bf2288832eb78d14a287a2aa46
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Tue Nov 16 22:05:29 2021 +0700

    disable cert

commit 1575fc7121b149a4426d6865db0b988b25feaa62
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Tue Nov 16 21:54:36 2021 +0700

    sync wave based on index

commit e3dfb4027265e238b02b840e78523b3970f8669d
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Tue Nov 16 21:02:27 2021 +0700

    feat(bootstrap): add project per stack

commit 68645e0e18cf6f9fcdd75dfc1d9bfb2d85a7d5bb
Author: Khue Doan <khuedoan98@gmail.com>
Date:   Tue Nov 16 11:18:18 2021 +0700

    Initial rework for bootstrap
2021-12-27 17:40:47 +07:00
.tekton ci: switch use Kustomize 2021-12-27 11:16:10 +07:00
apps feat(blog): always pull latest image 2021-12-27 09:49:00 +07:00
bootstrap refactor(bootstrap)!: switch to Helm with better templates 2021-12-27 17:40:47 +07:00
docs docs: fix typo 2021-12-27 14:09:18 +07:00
external style: format YAMLs to fix yamllint 2021-12-26 12:36:14 +07:00
metal feat(metallb): generate address pool automatically 2021-12-27 13:44:21 +07:00
platform ci: disable blog pipeline for now 2021-12-27 14:15:03 +07:00
scripts style: Ansible lint 2021-12-26 12:12:36 +07:00
system feat(metallb): generate address pool automatically 2021-12-27 13:44:21 +07:00
tools chore: cleanup lint targets 2021-12-27 11:36:47 +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
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: update roadmap and feature list 2021-12-25 15:23:03 +07:00

Homelab

This is my homelab set up, it focused on automation to simplify provisioning, upgrading, and operating self-hosted services.

! ⚠️ WORK IN PROGRESS

Overview

Hardware

Hardware

  • 4 nodes of 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

Distributed under the GPLv3 License. See LICENSE for more information.

Acknowledgements

Stargazers over time

Stargazers over time