• Stars
    star
    7,372
  • Rank 5,247 (Top 0.2 %)
  • Language
    Go
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Modern self-hosting framework, fully automated from empty disk to operating services with a single command.

Khue's Homelab

Features β€’ Get Started β€’ Documentation

tag document license stars

This project utilizes Infrastructure as Code and GitOps 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.

What is a homelab?

Homelab is a laboratory at home where you can self-host, experiment with new technologies, practice for certifications, and so on. For more information about homelab in general, see the r/homelab introduction.

Overview

Project status: ALPHA

This project is still in the experimental stage, and I don't use anything critical on it. Expect breaking changes that may require a complete redeployment. A proper upgrade path is planned for the stable release. More information can be found in the roadmap below.

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

  • Common applications: Gitea, Seafile, Jellyfin, Paperless...
  • Automated bare metal provisioning with PXE boot
  • Automated Kubernetes installation and management
  • Installing and managing applications using GitOps
  • Automatic rolling upgrade for OS and Kubernetes
  • 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
  • Distributed storage
  • Support multiple environments (dev, prod)
  • Monitoring and alerting 🚧
  • Automated offsite backups 🚧
  • Single sign-on 🚧
  • Infrastructure testing

Some demo videos and screenshots are shown here. They can't capture all the project's features, but they are sufficient to get a concept of it.

Demo
Deploy with a single command (after updating the configuration files)
PXE boot
Homepage with Ingress discovery powered by Hajimari
Monitoring dashboard powered by Grafana
Git server powered by Gitea
Matrix chat server
Continuous integration with Tekton
Continuous deployment with ArgoCD
Cluster management using Lens
Secret management with Vault

Tech stack

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
Docker Registry Private container registry
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
Tekton Cloud native solution for building CI/CD systems
Vault Secrets and encryption management system
ZeroTier VPN without port forwarding

Get Started

Roadmap

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

Contributing

Any contributions you make are greatly appreciated.

Please see contributing guide for more information.

License

Copyright Β© 2020 - 2022 Khue Doan

Distributed under the GPLv3 License. See license page or LICENSE.md file for more information.

Acknowledgements

References:

Here is a list of the contributors who have helped to improve this project. Big shout-out to them!

If you feel you're missing from this list, feel free to add yourself in a PR.

Stargazers over time

Stargazers over time

More Repositories

1

dotfiles

nvim, tmux, zsh, fzf, sway, and more!
Lua
123
star
2

one-line-firefox

Compact and minimal interface for Firefox
CSS
64
star
3

slock

Suckless simple X display locker fork with transparency effect (deprecated, I've switched to Wayland)
C
55
star
4

horus

Free cloud native platform for service hosting
HCL
28
star
5

linux-setup

Automated Arch Linux configuration with Ansible
YAML
16
star
6

blog

My personal website (written in Rust, blazingly fast, deployed on Kubernetes, <insert a bunch of random buzzwords here>, just lack content)
Rust
14
star
7

macos-setup

Automated macOS setup (you'll probably need to fork it)
Nix
10
star
8

freevpn

Always free Wireguard VPN server
HCL
9
star
9

backstage

TypeScript
7
star
10

ansible-collection-workstation

Workstation Collection for Ansible
YAML
7
star
11

st

Suckless terminal fork with One Dark color scheme (deprecated, I've switched to Wayland)
C
6
star
12

example-service

Example service for demo and testing purposes
Rust
3
star
13

container-images

Nix
3
star
14

dmenu

Suckless dynamic menu fork with One Dark color scheme (deprecated, I've switched to Wayland)
C
2
star
15

tinycloud

Experimental "private cloud" with Nomad + QEMU + Traefik + Yggdrasil to replace my Proxmox setup (someday)
HCL
2
star
16

md2pdf

Simple Markdown to PDF converter written in Go
CSS
2
star
17

pxe-server

(Work in progress) Docker based PXE server
Shell
2
star
18

nixos-setup

Automated NixOS configuration
Nix
2
star
19

virtual-networks

Virtual networks and membership settings as code
HCL
2
star
20

playground

Just my playground, nothing to see here
Assembly
2
star
21

windows-setup

PowerShell
2
star
22

k3s-ansible

(WIP) Ansible playbook to install lightweight Kubernetes (k3s) and MetalLB
1
star
23

charts

Smarty
1
star
24

advent-of-code

Rust
1
star
25

packer-templates

HCL
1
star
26

sfml-games

Classic games made with SFML
C++
1
star
27

haproxy-rpm

Ruby
1
star
28

highlight-pulldown

Temporary fork of https://gitlab.com/eguiraud/highlight-pulldown
Rust
1
star
29

arch-install

Easy Arch Linux installation guide
Shell
1
star
30

terraform-cloud

Manage Terraform Cloud using Terraform
HCL
1
star
31

rke-ansible

(WIP) Ansible playbook to install Rancher Kubernetes Engine
1
star
32

timoni-modules

CUE
1
star