Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrsauravsahu/kube-homelab
A Kubernetes based homelab for everyone! ARM first supported! [WIP - expect breaking changes]
https://github.com/mrsauravsahu/kube-homelab
arm arm64 helm homelab homeserver k3s k8s kubernetes mongodb nextcloud owncloud rabbitmq raspberry-pi
Last synced: about 2 months ago
JSON representation
A Kubernetes based homelab for everyone! ARM first supported! [WIP - expect breaking changes]
- Host: GitHub
- URL: https://github.com/mrsauravsahu/kube-homelab
- Owner: mrsauravsahu
- Created: 2022-07-01T16:31:06.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-24T19:21:14.000Z (6 months ago)
- Last Synced: 2024-10-14T08:33:56.399Z (2 months ago)
- Topics: arm, arm64, helm, homelab, homeserver, k3s, k8s, kubernetes, mongodb, nextcloud, owncloud, rabbitmq, raspberry-pi
- Language: HCL
- Homepage: https://www.youtube.com/playlist?list=PLS1J2nE4S3DMyOwA7IPoHQV_FNsFikwC2
- Size: 302 KB
- Stars: 34
- Watchers: 3
- Forks: 4
- Open Issues: 23
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# homelab
A Kubernetes based setup to run a home server.
## getting started
I had also created a video where I show how I set the homelab up for my use.
[](https://www.youtube.com/watch?v=LfBcERF6qw4)
### requirements
- Linux nodes (a VM, Raspberry PI, Tower PC)
- Docker installed on the node
- systemd configured on the nodes (this is because k3s runs as a systemd service)
- ssh configured with a keypair - password based authentication is not supported### terminology
- Any reusable part of this project will be an atom.
- Various parts of the setup are put into different terraform modules to be used as a workspace, each. This is also called a molecule.### software to run the terraform molecules
- terraform installed on the agent which will execute terraform (can be the node itself as well) - currently `required_version = ">=1.3.0"`
- [terraform-backend-git](https://github.com/plumber-cd/terraform-backend-git) if you want to use a git repository to store terraform state.### order of molecules
1. [k3s](./molecules/k3s/readme.md)
2. [cluster-resources](./molecules/cluster-resources/readme.md)### running the molecules
#### Only if you are using a remote backend
- Fill `.envrc` with all the required values. Place one .envrc in each molecule, this will help segregate their values and also because each molecule should have its own state file, so `export TF_BACKEND_GIT_GIT_STATE=` will change. I use `state-.json` as the pattern
- Import all environment variables by running `. .envrc` in the directory of the molecule
- Run the terraform init as follows - `terraform init -backend-config="address=${BACKEND}" -backend-config="lock_address=${BACKEND}" -backend-config="unlock_address=${BACKEND}"` the BACKEND env var is setup based on the other env vars in .envrc#### If you use local backend
- Remove the `backend "http" {}` from all molecules and init the molecules `terraform init`
- Now run `terraform apply -var-file=inputs.tfvars` (modify the inputs.tfvars as per your liking)Read any specific requirements per molecule in their readme.
### test bed
I'm using my Raspberry Pi 4 as my home server and all testing is done on it.
- Raspberry Pi 4
- Ubuntu Server 22.04
- docker 20.10.12## apps
### jellyfin
Jellyfin is a media server. Play all your local video content.
### pihole (looking at other alternatives too)
Local DNS
### nextcloud
File Sharing
## setting up your machine
You can either use [k3d](https://k3d.io/) to try out locally, or like I am, using a server.
I have k3s installed on my Raspberry Pi 4.### k3s setup
Run the following to setup the cluster.
```bash
$ curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION='v1.21.14+k3s1' sh -
```Now you can run `terraform -chdir=iac plan` to check what's getting installed.
Finally, run `terraform -chdir=iac apply --auto-approve` to install everything.