Linux homelab (dpl)
Host dpl is a homelab box: never-sleep, auto-login, coding-agent handoff, extra disks.
| Disk | Size | Use |
|---|---|---|
Samsung 860 EVO (/) | 1 TB | OS, $HOME configs, dotfiles |
| Samsung 970 EVO Plus NVMe | 2 TB | hot /media/ubuntu/work (~/work): git/<org>, docker/data |
| WD Volume A | 16 TB | ~/archive datasets/media |
| WD Volume B | 16 TB | ~/backup snapshots of the lab |
Git is ~/work/git/{cnb,crashchat,ab-spectrum,bhcoe,dpl,nlb,personal}. Worktrees sit next to the clone (.worktrees/). Docker images/volumes/json-logs: ~/work/docker/data after the sudo root script.
Managed home repos (same layout as Mac): ~/dotfiles, ~/skills, ~/firstmate. Hourly git-sync-repos keeps them on origin/main without discarding WIP. Vault stays at ~/git/personal/vault.
Curated work clones get a fetch-only refresh every 2h via git-fetch-repos (never checkout/merge) when ~/.config/git-fetch-repos/repos lists them (see repos.example; no built-in defaults). Entering a git repo also runs a debounced git-fetch-cwd from the shell hook.
On either host, from this repo:
make ensure-home-repos # clone/migrate ~/firstmatemake stow-install # also runs ensure-home-repos after stowMac: launchd dev.vanducng.git-sync-repos (hourly merge-safe sync) and dev.vanducng.git-fetch-repos (2h fetch-only). Linux: git-sync-repos.timer and git-fetch-repos.timer. Sync units call ensure-home-managed-repos first.
User-space (no sudo)
Section titled “User-space (no sudo)”make linux-homelabMounts disks via udisks, inhibits sleep, starts sshd on :2222, clones last-30-day repos onto the NVMe.
Needs sudo once
Section titled “Needs sudo once”sudo -E ~/.dotfiles/scripts/linux-homelab-root.shsudo tailscale up --hostname=linux01 --accept-dns=falseThat installs sshd :22, docker (data-root on NVMe), tailscale, fstab, and masks suspend. Leave Tailscale SSH off so Moshi key auth reaches OpenSSH on :2222. Prefer the tailnet over forwarding :22 to the WAN.
LAN IP: 192.168.1.193 (set as NetworkManager manual). Reserve it on the router.
GDM already auto-logs in ubuntu; linger is on so herdr-server and moshi-hook come back after reboot.
Remote (SSH, screen, CDP, internet)
Section titled “Remote (SSH, screen, CDP, internet)”User-space, no sudo:
| What | Where | How |
|---|---|---|
| SSH | :2222 pubkey | ssh -p 2222 ubuntu@192.168.1.193 |
| Screen | GNOME RDP :3389 | Microsoft Remote Desktop on the LAN, or 127.0.0.1:13389 via SSH forward |
| Chrome CDP | 127.0.0.1:9222 only | ssh dpl then agent-browser connect 9222 on the Mac |
| Off-LAN | Kernel Tailscale TUN | dpl-remote status; Moshi host = tailscale ip -4. Userspace daemon stays off. |
Do not port-forward 3389 or 9222. IPv4 WAN is NAT; IPv6 may already reach :2222 if the ISP leaves inbound open. Details: ~/.config/homelab/REMOTE.md and dpl-remote status.