{"id":18663448,"url":"https://github.com/tomdewildt/homelab","last_synced_at":"2026-05-09T00:13:06.876Z","repository":{"id":35934326,"uuid":"248985220","full_name":"tomdewildt/homelab","owner":"tomdewildt","description":"Configuration and documentation for my homelab","archived":false,"fork":false,"pushed_at":"2024-01-28T20:06:02.000Z","size":71,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-27T17:13:38.453Z","etag":null,"topics":["actions","ansible","apc","kubernetes","openvpn","pfsense","powerconnect","poweredge"],"latest_commit_sha":null,"homepage":null,"language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomdewildt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-03-21T13:47:54.000Z","updated_at":"2022-06-24T21:36:42.000Z","dependencies_parsed_at":"2024-01-28T21:23:55.135Z","dependency_job_id":"ba4fde9f-1156-44e8-9b80-497b8f72bd4d","html_url":"https://github.com/tomdewildt/homelab","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomdewildt%2Fhomelab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomdewildt%2Fhomelab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomdewildt%2Fhomelab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomdewildt%2Fhomelab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomdewildt","download_url":"https://codeload.github.com/tomdewildt/homelab/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239487592,"owners_count":19647024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","ansible","apc","kubernetes","openvpn","pfsense","powerconnect","poweredge"],"created_at":"2024-11-07T08:17:05.256Z","updated_at":"2025-11-06T08:30:22.134Z","avatar_url":"https://github.com/tomdewildt.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Home Lab\n[![Build](https://img.shields.io/github/actions/workflow/status/tomdewildt/homelab/ci.yml?branch=master)](https://github.com/tomdewildt/homelab/actions/workflows/ci.yml)\n[![License](https://img.shields.io/github/license/tomdewildt/homelab)](https://github.com/tomdewildt/homelab/blob/master/LICENSE)\n\nThis repository contains the configuration for my home lab servers and network.\n\n# How to run\n\nPrerequisites:\n* vagrant version ```2.2.7``` or later\n* ansible version ```2.8.5``` or later\n* ansible-lint version ```4.2.0``` or later\n\n### Remote\n\n1. Run ```make run/remote``` to execute the playbook.\n\n### Virtual\n\n1. Run ```make vm/start``` to start the virtual machines.\n2. Run ```make run/virtual``` to execute the playbook.\n\nRun ```make vm/stop``` to stop the virtual machines and ```make vm/remove``` to remove them.\n\n# Goals\n\nThe primary goals of this project are...\n\n* to have a highly-available home lab, with no SPOF (Single Point of Failure)\n* to have a production grade kubernetes cluster.\n* to learn and have fun.\n\n# In summary\n\nI have 4 physical machines plugged into 1 switch. One server is used as a router/gateway, this server handles the IPv4 NAT, VLAN, DHCP, DNS and VPN. The other machines are used in a kubernetes cluster with one master and two workers.\n\nI have one APC UPS that handles all the power for the system. It keeps all the gear running during a power outage. When the battery hits a critical level all the servers are gracefully shutdown using ```apcupsd```.\n\n# Gear\n\n### Servers\n\n* 2x [Dell PowerEdge R210 II](https://www.dell.com/ky/business/p/poweredge-r210-2/pd)\n  * Intel Xeon X3460\n  * 8GB RAM (DDR3-1333)\n  * OS: 250GB 3.5 SATA HDD\n  * Dell Power Supply 250W\n* 2x [Dell PowerEdge R710](https://www.dell.com/en-uk/work/shop/cty/dell-poweredge-r710-rack-server/spd/poweredge-r710)\n  * 2x Intel Xeon X5570 or 2x Intel Xeon X5560\n  * 48GB RAM (DDR3-1333)\n  * OS: 6x 300GB 3.5 SAS HDD in RAID 5\n  * 2x Dell Power Supply 870W\n\n### Switches\n\n* 1x [Dell PowerConnect 5424](https://www.dell.com/en-us/work/shop/cty/powerconnect-5424-switch/spd/powerconnect-5424)\n\n### Other\n\n* Old HP monitor\n* Old Dell keyboard and mouse combo\n\n### Power\n\nThe whole setup including all servers and switches draws about 530 watts idle.\n\n* 1x [Dell Smart-UPS 3000VA](https://www.dell.com/en-my/shop/dell-smart-ups-3000va-lcd-rm-ups-2700-watt-3000-va-dlt3000rmi2u/apd/a7522112/power-cooling-data-center-infrastructure)\n\n### ISP\n\n* [Ziggo Zakelijk](https://www.ziggo.nl/zakelijk/)\n\n# Software\n\n* [pfSense](https://www.pfsense.org/) is the most popular, open-source firewall operating system based on FreeBSD.\n* [Kubernetes](https://kubernetes.io/) is an open-source system for automating deployment, scaling, and management of containerized applications.\n\n# Config\n\n### Network config\n\n* LAN is unused\n* VLAN10 ```10.10.0.0/24```, is used for infrastructure (routers, switches, ups, etc).\n* VLAN20 ```10.20.0.0/24```, is used for servers.\n* VLAN30 ```10.30.0.0/24```, is used for management.\n* VLAN40 ```10.40.0.0/24```, is used for DMZ services that need to be exposed to the internet.\n* VLAN50 ```10.50.0.0/24```, is used for trusted clients.\n* VLAN60 ```10.60.0.0/24```, is used for untrusted clients.\n\nThe VPN runs on the ```10.70.0.0/24``` subnet and the virtual cluster network for kubernetes on the ```10.80.0.0/16``` subnet.\n\n# References\n\n[pfSense VLAN](https://docs.netgate.com/pfsense/en/latest/book/vlan/pfsense-vlan-configuration.html)\n\n[Dell PowerConnect Serial](http://robwillis.info/2012/12/dell-powerconnect-5324-cable-tips-basic-setup-and-configuration-via-putty/)\n\n[Dell PowerConnect Factory Reset](https://www.dell.com/support/article/us/en/04/how10330/how-to-reset-a-powerconnect-2800-series-switch-to-factory-default)\n\n[Dell PowerConnect VLAN Setup](https://www.dell.com/support/article/nl/nl/nldhs1/how10366/how-to-create-vlans-on-a-dell-networking-powerconnect-switches)\n\n[Dell PowerConnect Command Line Manual](https://www.manualslib.com/manual/419225/Dell-Powerconnect-5424.html)\n\n[APC UPS Serial](https://www.apc.com/us/en/faqs/FA156064/)\n\n[APC UPS Factory Reset](https://www.apc.com/et/en/faqs/FA175980/)\n\n[APC UPS Install Centos 7](https://www.svennd.be/install-apcupsd-on-centos-7/)\n\n[Metallb VLAN Setup](https://itnext.io/kubernetes-metallb-vlan-3e5f310a4510)\n\n[CentOS USB](https://linuxize.com/post/how-to-create-a-bootable-centos-7-usb-stick-on-linux)\n\n[Container Runtimes](https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker)\n\n[Create Cluster Kubeadm](https://www.digitalocean.com/community/tutorials/how-to-create-a-kubernetes-cluster-using-kubeadm-on-centos-7)\n\n[Kubernetes With Firewalld](https://medium.com/platformer-blog/kubernetes-on-centos-7-with-firewalld-e7b53c1316af)\n\n[Calico Quickstart](https://docs.projectcalico.org/v3.9/getting-started/kubernetes/)\n\n[Helm Quickstart](https://helm.sh/docs/using_helm/#quickstart-guide)\n\n[Vagrant Docs](https://www.vagrantup.com/docs/)\n\n[Cert Manager Chart](https://github.com/jetstack/cert-manager/tree/master/deploy/charts/cert-manager)\n\n[Drone Chart](https://github.com/helm/charts/tree/master/stable/drone)\n\n[Ingress Chart](https://github.com/helm/charts/tree/master/stable/nginx-ingress)\n\n[Local Path Provisioner Chart](https://github.com/rancher/local-path-provisioner/tree/master/deploy/chart)\n\n[Loki Chart](https://github.com/grafana/loki/tree/master/production/helm/loki)\n\n[Promtail Chart](https://github.com/grafana/loki/tree/master/production/helm/promtail)\n\n[Metallb Chart](https://github.com/helm/charts/tree/master/stable/metallb)\n\n[MongoDB Chart](https://github.com/helm/charts/tree/master/stable/mongodb)\n\n[PostgresSQL Chart](https://github.com/helm/charts/tree/master/stable/postgresql)\n\n[Prometheus Chart](https://github.com/helm/charts/tree/master/stable/prometheus-operator)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomdewildt%2Fhomelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomdewildt%2Fhomelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomdewildt%2Fhomelab/lists"}