Git Product home page Git Product logo

homelab's Introduction

Alex's Homelab

GitHub Super-Linter

My Homelab utilizes Infrastructure as Code and GitOps methodologies to automate provisioning, operating, and updating self-hosted services. I have also been documenting the progress of this on my blog as part of my homelab refresh.

Using my quick and dirty rebuild script, I can destroy and completely rebuild the Kubernetes Cluster with all defined apps deployed within approximately 30 minutes time.

📖  Overview

The major components of the homelab configuration are split out into sub-directories. For more details, see the README of the following directories.

  • ansible roles for server configuration.
  • kubernetes configuration deployed using ArgoCD.
  • pki script to pre-generate PKI certificates for Kubernetes.
  • terraform configuration for provisioning VMs.

SOPS and age are currently used to encrypt secrets that are stored in git.

⚙️  Hardware

I've also documented this on my personal site, but the hardware used consists of the following.

  • 1x Mikrotik CRS109-8G-1S-2HnD-IN Router

  • 1x CyberPower UPS PR750ELCD

  • 3x ThinkCentre M900 Tiny (USFF)

    • Intel Core i5-6500T 2.50GHz CPU
    • 32GB DDR4 RAM
    • 1TB SSD
  • 1x Custom NAS

    • U-NAS NSC-810A Server Chassis
    • Seasonic SS-350M1U Mini 1U PSU
    • Supermicro X10SLM-F Motherboard
    • Intel Core i3-4170 3.7Ghz CPU
    • 16GB ECC DDR3 RAM
    • 6x 3TB WD Red HDD (RAID-Z3)
    • 120GB SSD (OS)

🤖  Automation

  • Renovate - Periodically scans the repository and opens pull requests when it detects updates for various "package managers", including Ansible, Kubernetes, Helm, and Terraform.

💻  Tasks

I'm using Task to execute tasks defined in Taskfiles that have been created throughout the repository.

🔧  Tech stack

My homelab uses the following software, this list is non-exhaustive.

Logo Name Description
Ansible Server configuration
Debian Base OS for all servers
Docker Container runtime
Helm Package manager for Kubernetes
Kubernetes Container orchestration
KVM Virtual Machine Hypervisor
libvirt Toolkit to manage KVM
MetalLB Load Balancer for bare metal Kubernetes clusters
Renovate Detects and corrects out-of-date dependencies
Sealed Secrets Encrypted Kubernetes secrets that are safe to store in git
sops Encrypted secrets in Git
Terraform VM provisioning

🤝  Thanks

The inspiration to make this public has come from the people that have shared their homelab/kubernetes configurations at awesome-home-kubernetes.

homelab's People

Contributors

eyulf avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

heyudude

homelab's Issues

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: .github/renovate.json
Error type: The renovate configuration file contains some invalid settings
Message: Invalid configuration option: automerge-type

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Pending Branch Automerge

These updates await pending status checks before automerging. Click on a checkbox to abort the branch automerge, and create a PR instead.

  • Update pre-commit hook bridgecrewio/checkov to v3.2.87

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

ansible-galaxy
ansible/requirements.yml
  • community.general 8.6.0
  • community.sops 1.6.7
  • community.mysql 3.9.0
  • ansible.utils 4.1.0
  • community.docker 3.9.0
  • ansible.posix 1.5.4
  • community.routeros 2.15.0
docker-compose
ansible/roles/pxe_boot/files/docker-compose.yml
dockerfile
ansible/roles/pxe_boot/files/tftp/Dockerfile
  • alpine 3.19
github-actions
.github/workflows/linter.yaml
  • actions/checkout v4@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • github/super-linter v4
.github/workflows/mkdocs-build.yaml
  • actions/checkout v4@3df4ab11eba7bda6032a0b82a6bb43b11571feac
  • actions/setup-python v4
.github/workflows/mkdocs-nobuild.yaml
helmv3
kubernetes/apps/pihole/Chart.yaml
  • pihole 2.23.0
kubernetes/core/argocd/Chart.yaml
  • argo-cd 5.55.0
kubernetes/core/calico/Chart.yaml
  • tigera-operator v3.27.3
kubernetes/core/openebs/Chart.yaml
  • openebs 3.10.0
kubernetes/core/sealed-secrets/Chart.yaml
  • sealed-secrets 2.15.3
kubernetes/infrastructure/metallb/Chart.yaml
  • metallb 0.14.5
kubernetes/infrastructure/traefik/Chart.yaml
  • traefik 24.0.0
pip_requirements
requirements.txt
pre-commit
.pre-commit-config.yaml
  • pre-commit/pre-commit-hooks v4.6.0
  • ansible/ansible-lint v24.2.3
  • antonbabenko/pre-commit-terraform v1.89.1
  • bridgecrewio/checkov 3.2.85
terraform
terraform/infrastructure/core_services/dns1.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/core_services/dns2.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/core_services/dns3.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/core_services/hypervisors.tf
terraform/infrastructure/core_services/versions.tf
  • libvirt 0.7.6
  • random 3.6.1
  • sops 1.0.0
  • hashicorp/terraform >= 1.3
terraform/infrastructure/hypervisors/kvm1.tf
terraform/infrastructure/hypervisors/kvm2.tf
terraform/infrastructure/hypervisors/kvm3.tf
terraform/infrastructure/hypervisors/versions.tf
  • libvirt 0.7.6
  • random 3.6.1
  • sops 1.0.0
  • hashicorp/terraform >= 1.3
terraform/infrastructure/kubernetes/hypervisors.tf
terraform/infrastructure/kubernetes/k8s-master-01.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/kubernetes/k8s-master-02.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/kubernetes/k8s-master-03.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/kubernetes/k8s-worker-01.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/kubernetes/k8s-worker-02.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/kubernetes/k8s-worker-03.tf
  • eyulf/libvirt-virtual-machine/module 1.0.0
terraform/infrastructure/kubernetes/versions.tf
  • libvirt 0.7.6
  • random 3.6.1
  • sops 1.0.0
  • hashicorp/terraform >= 1.3
regex
kubernetes/apps/pihole/values.yaml
  • pihole/pihole 2023.11.0

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.