Documentation for my home lab CI/CD setup
192.168.1.123 (STATIC)192.168.1.125 (ENLIL)2a00:23c7:593:6501:ba27:ebff:fe0f:e3f2 (ENLIL)AUREL acts as a dedicated worker within the home-lab CI/CD infrastructure. It is responsible for executing all heavy build and test workloads, keeping orchestration and scheduling separate using docker context or manually setup SSH commands.
build-essential for native compilation.curl, jq, ca-certificates.AUREL was setup using the following steps and instructions:
We will use the following command to set a static IPv4 on our device and ensure that IPv4 and IPv6 dns are set correctly.
auzlex@AUREL:~ $ sudo nmcli connection modify "target connection" \
ipv4.addresses 192.168.1.123/24 \
ipv4.gateway 192.168.1.254 \
ipv4.dns 192.168.1.125 \
ipv4.ignore-auto-dns yes \
ipv4.method manual \
ipv6.dns 2a00:23c7:593:6501:ba27:ebff:fe0f:e3f2 \
ipv6.ignore-auto-dns yes \
ipv6.method auto
We then apply changes by rebooting
auzlex@AUREL:~ $ sudo reboot
verify
auzlex@AUREL:~ $ nmcli
auzlex@AUREL:~ $ sudo apt update && sudo apt install -y docker.io docker-compose && sudo systemctl enable docker --now
We will create a user ci which will be used for build related workloads and for isolation. This user will recieve remote jobs or commands via SSH from LORIC.
Create user with password and set shell (choose a strong password, record it for SSH key setup):
sudo useradd -m -s /bin/bash ci
sudo passwd ci
Add user to Docker group:
sudo usermod -aG docker ci
Verify membership:
getent group docker | grep ci
Enable SSH access:
sudo systemctl enable ssh && sudo systemctl start ssh
Generate SSH key for passwordless login from LORIC:
sudo -u ci ssh-keygen -t ed25519 -C "ci@AUREL" -f /home/ci/.ssh/id_ed25519
Test SSH login (password initially, then test key-based auth):
ssh ci@192.168.1.123
Verify home directory ownership:
ls -ld /home/ci
ci to maintain isolation./var/log/syslog or use journalctl -u ssh for SSH issues.ci for correct job permissions.