# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview Personal homelab on a ThinkPad running Arch Linux. Docker services behind an Nginx reverse proxy. Full context is in `.claude/skills/homelab-context/SKILL.md`. ## Architecture - **Domain**: ak-homelab.duckdns.org (DuckDNS) - **Static IP**: 192.168.0.100 (interface: enp4s0) - **NAS**: 192.168.0.101, mounted at `/mnt/nas/` - **Reverse Proxy**: Nginx → path-based routing to services ## Configuration Management All configs are version-controlled in `config/`. Docker compose files are **always symlinked** — never copied: ``` /opt/docker//docker-compose.yml → ~/homelab/config/docker//docker-compose.yml ``` Editing the repo file is editing the live config. Restart the container to apply changes. All configs — Docker, nginx, systemd units, www — are symlinked to this repo. Editing a file in `config/` is editing the live config. Use `/deploy-config` only on a new machine to create symlinks from scratch, or if drift is detected (a real file exists instead of a symlink). ## Sudo Access A sudoers rule at `/etc/sudoers.d/homelab-scripts` grants NOPASSWD for scripts in `scripts/tmp/`: ``` hoborg ALL=(ALL) NOPASSWD: /bin/bash /home/hoborg/homelab/scripts/tmp/* ``` Scripts generated there can be run with `sudo bash ~/homelab/scripts/tmp/