This project is the "configuration as code" for my homelab environment. The project goal is to simplify management, updates, and configuration changes for every service running on my home network so that I don't get bogged down with day 2 operations (preventing me from focusing on my other projects). This document describes the steps required to (re)deploy each service from scratch.
- Install OpenBSD 6.7
- Enable SSH
- Setup passwordless SSH
mkdir ~/.ssh chmod 700 ~/.ssh vi ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
- Install Python
pkg_add python-3.8.2
- Run router Ansible role
make router
- Provision a VM
- 1 CPU
- 1 GB memory
- 8 GB disk
- Install Debian 10
- Disable GUI
- Disable print server
- Enable SSH
- Setup passwordless SSH
mkdir ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
- Install sudo
apt install sudo usermod -aG sudo <user>
- Run gitea Ansible role
make gitea
- Create gitea user
gitea --config /etc/gitea/app.ini admin create-user \ --username <user> \ --password password \ --email <email> \ --must-change-password \ --admin
- Log in, setup SSH keys, GPG keys, repos, etc.
- Provision a VM
- 1 CPU
- 1 GB memory
- 64 GB disk
- Install Debian 10
- Disable GUI
- Disable print server
- Enable SSH
- Setup passwordless SSH
mkdir ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
- Install sudo
apt install sudo usermod -aG sudo <user>
- Run nextcloud Ansible role
make nextcloud
- Complete installation with web UI
- Install "Deck" App
- Provision a VM
- 2 CPU
- 4 GB memory
- 128 GB disk
- Install Debian 10
- Disable GUI
- Disable print server
- Enable SSH
- Setup passwordless SSH
mkdir ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
- Install sudo
apt install sudo usermod -aG sudo <user>
- Run harbor Ansible role
make harbor
- Log in to web UI and change admin password
- Configure Docker client to trust private CA
sudo mkdir -p /etc/docker/certs.d/harbor.mydomain.com/ sudo vim /etc/docker/certs.d/harbor.mydomain.com/ca.crt
- Provision 6 VMs
- 2 CPU
- 7 GB memory
- 32 GB disk
- Install Debian 10
- Disable GUI
- Disable print server
- Enable SSH
- Setup passwordless SSH
mkdir ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
- Install sudo
apt install sudo usermod -aG sudo <user>
- Run k8s Ansible role
make k8s
- (optional) Copy ~/.kube/config to local machine
mkdir ~/.kube chmod 770 ~/.kube scp user@k8s-master.mydomain.com:~/.kube/config ~/.kube/config