my-homelab-configs/bootstrap/host
juvdiaz 3c24f05ff6 Allow Debian Docker root on NVMe root filesystem 2026-06-29 11:14:59 -06:00
..
group_vars Allow Debian Docker root on NVMe root filesystem 2026-06-29 11:14:59 -06:00
README.md Normalize Ollama host configuration 2026-06-28 00:19:24 -06:00
inventory.ini Adding recovery for debian desktop 2026-06-11 11:02:23 -06:00
playbook.yml Normalize Ollama host configuration 2026-06-28 00:19:24 -06:00

README.md

Debian Host Bootstrap

This layer restores the Debian control-plane and personal desktop package set before the OpenTofu/Kubernetes bootstrap runs.

Fresh Debian recovery path:

sudo apt-get update
sudo apt-get install -y git ansible sudo
sudo usermod -aG sudo jv
git clone <repo-url> /home/jv/my-homelab-configs
cd /home/jv/my-homelab-configs
ansible-playbook -K -i bootstrap/host/inventory.ini bootstrap/host/playbook.yml
./jeannie up

To also restore captured application behavior/configuration, keep the generated home-configs.tar.gz outside Git and pass the generated vars file:

ansible-playbook -K -i bootstrap/host/inventory.ini bootstrap/host/playbook.yml \
  -e @/path/to/debian-pc-ansible-inventory/ansible-vars.yml

The playbook:

  • configures apt repositories for Docker, Kubernetes, Helm, OpenTofu, and Brave
  • installs the captured Debian package set, filtering packages unavailable on the current Debian release
  • installs user-level pipx CLI tools such as yt-dlp, plus runtime helpers such as ffmpeg and nodejs
  • installs age and sops for encrypted repo-managed secrets
  • installs and configures Ollama for homelab-local AI helpers when debian_pc_install_ollama is true
  • installs Zoom from the upstream .deb when requested on amd64
  • adds jv to expected local groups
  • enables core services such as Docker, containerd, kubelet, ssh, cron, and Bluetooth when installed
  • creates homelab persistence directories used by jeannie up
  • optionally extracts the captured user config archive into /home/jv

Secrets and active sessions are intentionally not stored in this repo. Keep SSH keys, kubeconfigs, SOPS keys, Docker auth, and browser session/password data in a separate encrypted backup if you want them restored.

After the playbook finishes, initialize the Debian host's SOPS identity with:

./jeannie secrets-init
./jeannie secrets-check

Ollama is configured to listen on the LAN and keep models under /data/ollama/models. The default lightweight model for jeannie diagnostics is pulled during bootstrap. To apply only the Ollama setup on an existing Debian host, run:

./jeannie ollama-setup
./jeannie ai-check

Installer downloads prefer IPv4 by default because some networks have broken or slow IPv6 paths to ollama.com. Override with LAB_OLLAMA_INSTALL_CURL_IP_VERSION= if you want curl's automatic behavior. The Ryzen integrated GPU is left disabled for Ollama by default; set LAB_OLLAMA_IGPU_ENABLE=true or debian_pc_ollama_igpu_enable: "true" when you intentionally want to test Vulkan/iGPU inference.

If the Debian host cannot reach ollama.com, download the matching Linux tarball from another machine, copy it to Debian, and point jeannie at it:

curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o /tmp/ollama-linux-amd64.tgz
scp /tmp/ollama-linux-amd64.tgz jv@192.168.100.73:/tmp/
LAB_OLLAMA_TARBALL_FILE=/tmp/ollama-linux-amd64.tgz ./jeannie ollama-setup

The same fallback is available to the Ansible bootstrap with debian_pc_ollama_tarball_file.