3.0 KiB
3.0 KiB
| created | path | project | tags | type | |||
|---|---|---|---|---|---|---|---|
| 2026-05-25 | Sources/Homelab | homelab-infrastructure |
|
session-notes |
Outcome
Audited herbys-dev memory allocation, confirmed PVE host already has a static IP, and surfaced (but deferred) a Tailscale DNS resilience question.
Topics Covered
- Docker memory totals on herbys-dev (~2.56 GiB across 16 containers)
- htop vs PVE memory accounting discrepancy explained (page cache vs process memory)
- herbys-dev VM right-sized: 24576 MiB → 14336 MiB (applies on next reboot)
- traefik VM (2 GiB allocated / ~500 MiB used) and knot LXC (512 MiB / ~29 MiB used) reviewed — both left alone
- PVE host /etc/network/interfaces confirmed: static IP
10.0.21.188/24onvmbr0, gateway10.0.21.1, VLAN-aware bridge with vids 2-4094 - PVE
/etc/resolv.confis managed by Tailscale, pointing at100.100.100.100 - Split-DNS confirmed working (resolves both
pihole.herbylab.dev→ 10.0.11.20 and public domains)
Key Learnings
- Linux memory accounting:
free -hinside the VM is the source of truth. Theavailablecolumn is what matters, notused. PVE's outside view conflates process memory with page cache and shows allocations as "in use" when they're really evictable. The fear-bump from 24 → 26 GiB was based on misreading PVE. - VM allocation ≠ host commitment, with a caveat: LXC limits are caps and cost nothing extra. VM allocations are reserved unless ballooning is configured with
balloon:set belowmemory:. Default PVE behavior is effectively no ballooning. memory:in qm config is MiB: 14 GiB = 14336, 12 GiB = 12288.- Tailscale
--accept-dns=true(default) hijacks/etc/resolv.conf: the daemon rewrites it to point at100.100.100.100on every start.--accept-dns=falsetells Tailscale to leave DNS config alone, persists across reboots, costs*.ts.netshell resolution but nothing else. VPN tunnel is unrelated to DNS setting. - PVE depending on Tailscale for DNS is a resilience smell: a hypervisor that loses DNS when a userland VPN daemon hiccups is a bad pattern. Functional today, worth hardening eventually.
- Long uptime increases risk over time: untested boot paths, config drift between running state and on-disk state, accumulated updates. Periodic planned reboots are hygiene, not paranoia.
Follow-ons
- Reboot herbys-dev when convenient to apply the 14 GiB memory change
- Pre-reboot smoke check:
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.RestartPolicy}}"to confirm every container has a restart policy - Detach the ubuntu-24.04.4 live-server ISO from VM 100 (
ide2line in qm config) — install cruft, not urgent - Optional hardening: switch PVE host off Tailscale DNS. Run
tailscale set --accept-dns=false, adddns-nameservers 10.0.11.20to thevmbr0stanza in/etc/network/interfaces, thenifreload -a. Removes Tailscale as a DNS dependency for the hypervisor. - Try
dj0024javia.gitea-vscode-pullrequestextension for VS Code → Lovebug PR review flow without the browser