Commit Graph

25 Commits

Author SHA1 Message Date
Cal Corum
48a804dda2 feat: right-size VM 115 config and add --hosts flag to audit script
All checks were successful
Auto-merge docs-only PRs / auto-merge-docs (pull_request) Successful in 2s
Reduce VM 115 (docker-sba) from 16 vCPUs (2×8) to 8 vCPUs (1×8) to
match actual workload (0.06 load/core). Add --hosts flag to
homelab-audit.sh for targeted post-change audits.

Closes #18

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 17:33:01 -05:00
Cal Corum
64f299aa1a docs: sync KB — maintenance-reboot.md
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 2s
2026-04-03 16:00:22 -05:00
Cal Corum
66143f6090 fix: clean up VM 116 watchstate duplicate and document decommission candidacy (#31)
All checks were successful
Auto-merge docs-only PRs / auto-merge-docs (pull_request) Successful in 2s
- Removed stopped watchstate container from VM 116 (duplicate of manticore's canonical instance)
- Pruned 5 orphan images (watchstate, freetube, pihole, hello-world): 3.36 GB reclaimed
- Confirmed manticore watchstate is healthy and syncing Jellyfin state
- VM 116 now runs only Jellyfin (also runs on manticore)
- Added VM 116 (docker-home-servers) to hosts.yml as decommission candidate
- Updated proxmox-7-to-9-upgrade-plan.md status from Stopped/Investigate to Decommission Candidate

Closes #31

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 20:01:13 +00:00
Cal Corum
9e8346a8ab chore: decommission VM 105 (docker-vpn) — repo cleanup (#20)
All checks were successful
Auto-merge docs-only PRs / auto-merge-docs (pull_request) Successful in 2s
VM 105 was already destroyed on Proxmox. This removes stale references:
- Delete server-configs/proxmox/qemu/105.conf
- Comment out docker-vpn entries in example SSH config and server inventory
- Move VM 105 from Stopped/Investigate to Removed in upgrade plan
- Check off decommission task in wave2 migration results

Closes #20

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 23:57:55 -05:00
Cal Corum
e58c5b8cc1 fix: address PR review — move memory limits to deploy block, handle swap-less hosts
All checks were successful
Auto-merge docs-only PRs / auto-merge-docs (pull_request) Successful in 2s
Move mem_limit/memswap_limit to deploy.resources.limits.memory so the
constraint is actually enforced under Compose v3. Add END clause to
swap_mb() so hosts without a Swap line report 0 instead of empty output.
Fix test script header comment accuracy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:05:12 -05:00
Cal Corum
f28dfeb4bf feat: add zombie parent, swap, and OOM metrics to audit; harden Tdarr containers
All checks were successful
Auto-merge docs-only PRs / auto-merge-docs (pull_request) Successful in 3s
Extend homelab-audit.sh collector with zombie_parents(), swap_mb(), and
oom_events() functions so the audit identifies which process spawns zombies,
flags high swap usage, and reports recent OOM kills. Add init: true to both
Tdarr docker-compose services so tini reaps orphaned ffmpeg children, and
cap tdarr-node at 28g RAM / 30g total to prevent unbounded memory use.

Closes #30

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 21:02:05 -05:00
Cal Corum
1eda939de6 docs: add Gitea CI/CD link to server-configs README
Some checks failed
Auto-merge docs-only PRs / auto-merge-docs (pull_request) Failing after 3s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 23:33:25 -05:00
Cal Corum
4b7eca8a46 docs: add YAML frontmatter to all 151 markdown files
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 3s
Adds title, description, type, domain, and tags frontmatter to every
doc for improved KB semantic search. The description field is prepended
to every search chunk, and domain/type/tags enable filtered queries.

Type values: context, guide, runbook, reference, troubleshooting
Domain values match directory structure (networking, docker, etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:00:44 -05:00
Cal Corum
c08e779e42 docs: add caddy migration config, tdarr flow backup, and troubleshooting updates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 13:13:21 -05:00
Cal Corum
43b7440030 Update Gitea docs for shared actions and runner config
- Document DEFAULT_ACTIONS_URL=self and REQUIRE_SIGNIN_VIEW=false
- Correct runner setup: internal URL, config.yaml mount, no .netrc
- Add shared composite actions table (calver, gitea-tag, discord-notify)
- Document action reference rules (short form local, full URL GitHub)
- Add auth troubleshooting entry
- Update reference implementations with all 5 projects
- Replace semver references with CalVer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 14:09:08 -06:00
Cal Corum
b237d6c056 Optimize CLAUDE.md and fix Gitea Actions Docker cache
CLAUDE.md optimization (329 → 104 lines):
- Compress repetitive loading rules into keyword table
- Remove 72 redundant "Note:" lines (info already in CONTEXT.md files)
- State loading convention once instead of repeating 13 times
- Preserve all functionality, special cases, and maintenance protocol
- 68% reduction in size, easier to scan and maintain

Gitea Actions Docker buildx fix:
- Remove conditional from Docker Hub login step
- Login now runs on all builds (PR and main), not just main
- Fixes "push access denied" on second build when writing cache layers
- Push flag still gates actual image publishing to main-only

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 15:14:35 -06:00
Cal Corum
cbdb7a6bb0 Update Home Assistant platform analysis and env example
Expand home automation platform comparison with 2026 Matter/Thread
status, Hubitat alternative, and detailed implementation plan.
Update HA .env.example template.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:25:58 -06:00
Cal Corum
4c9fe64fc3 Add server configs for discord-bots, foundry-lxc, termix, and pihole
Pull Docker Compose configs for discord-bots VM, foundry-lxc LXC, and
termix. Add pihole and orbital-sync compose files for ubuntu-manticore.
Back up LXC 223 (foundry) Proxmox config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:21:17 -06:00
Cal Corum
6c8d199359 Add Pi-hole HA documentation and networking updates
Add dual Pi-hole high availability setup guide, deployment notes, and
disk optimization docs. Update NPM + Pi-hole sync script and docs.
Add UniFi DNS firewall troubleshooting and networking scripts CONTEXT.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:19:56 -06:00
Cal Corum
a35891b565 Add Uptime Kuma service monitoring on LXC 227
Deploy Uptime Kuma for centralized service uptime monitoring at
https://status.manticorum.com. Proxmox LXC 227 (10.10.0.227) running
Ubuntu 22.04 with Docker. Updated monitoring documentation, CLAUDE.md
context loading rules, and server-configs host inventory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:18:51 -06:00
Cal Corum
201aa9ee32 feat: Add git tagging and remove emojis from Gitea Actions workflows
- Add automatic git tag creation after successful builds/deployments
- Tags match VERSION file and include deployment metadata
- Remove emojis from all Discord notifications and console output
- Add git tag links to Discord success notifications
- Update troubleshooting section with git tag issues
- Add customization checklist for git email configuration

Benefits:
- Immutable version markers in git history
- Easy version checkout and rollback (git checkout v1.2.3)
- Clean, professional notification messages
- Enable changelog generation between tags

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 21:41:07 -06:00
Cal Corum
93ea435237 Add Gitea Actions workflow templates and automation
- Add Docker build workflow template with semantic versioning
- Add branch protection automation script
- Add deployment strategies documentation
- Add Harbor registry setup guide
- Update Gitea README with runner troubleshooting
- Add workflow template snippets for auto-deploy

Templates support:
- Semantic version validation on PRs
- Docker build and push to Docker Hub
- Discord notifications (success/failure)
- Build summaries and metadata extraction
- GitHub Actions cache optimization

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 13:40:17 -06:00
Cal Corum
2017b56985 Add NPM + Pi-hole DNS sync automation and documentation
## Changes
- Created comprehensive NPM + Pi-hole setup documentation
- Added DNS sync script to automatically sync NPM proxy hosts to Pi-hole
- Updated hosts.yml with npm-pihole host entry

## Features
- Automatic local DNS resolution for homelab services
- Fixes 403 errors with "Internal Only" access lists
- Hourly cron sync keeps Pi-hole updated with NPM changes
- Cloudflare real IP configuration for proper IP detection

## Files Added
- server-configs/networking/nginx-proxy-manager-pihole.md
- server-configs/networking/scripts/npm-pihole-sync.sh

## Files Modified
- server-configs/hosts.yml (added npm-pihole host)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-04 21:06:01 -06:00
Cal Corum
76dc82ce7c Add OmniTools self-hosted utility suite to n8n LXC
Deploy OmniTools (https://github.com/iib0011/omni-tools) on n8n LXC
for client-side file processing and utility tools.

- Container: omni-tools (iib0011/omni-tools:latest)
- Port: 8080 → 80
- Location: /opt/omni-tools on n8n LXC (10.10.0.210)
- Public URL: omnitools.manticorum.com (via NPM)
- Features: Image/PDF/audio processing, all client-side

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 16:48:16 -06:00
Cal Corum
05285a53b3 Document repository mirroring setup
Add information about GitHub and Gitea mirroring to the Gitea
documentation for future reference.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 16:23:48 -06:00
Cal Corum
1a0bc3dee4 Add Gitea self-hosted Git server (LXC 225)
Deploy Gitea 1.22.6 on LXC 225 to enable self-hosted Git repositories
with CI/CD capabilities via Gitea Actions, reducing dependency on GitHub
and associated costs while maintaining GitHub Actions workflow compatibility.

- LXC 225 (10.10.0.225) running Ubuntu 20.04 with PostgreSQL 12
- Public access via git.manticorum.com through NPM reverse proxy
- Comprehensive documentation including setup, backup, and CI/CD guides
- Gitea Actions enabled for GitHub Actions-compatible workflows
- Git LFS, SSH access, and webhooks configured

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 16:12:41 -06:00
Cal Corum
b4defab163 CLAUDE: Add OpenClaw personal AI assistant deployment
Infrastructure:
- Created LXC 224 (openclaw-lxc) at 10.10.0.224
- 2 CPU cores, 4GB RAM, 32GB disk
- Docker-in-LXC with AppArmor unconfined
- OpenClaw installed via npm with MiniMax M2.1 and Discord integration

Documentation:
- productivity/openclaw/CONTEXT.md - Comprehensive technology overview
- productivity/openclaw/troubleshooting.md - Complete troubleshooting guide
- productivity/openclaw/README.md - Quick reference
- productivity/openclaw/DEPLOYMENT_STATUS.md - Deployment checklist and status

Configuration:
- Added OpenClaw keywords to CLAUDE.md auto-loading rules
- Updated server-configs/hosts.yml with openclaw host entry
- Backed up LXC config to server-configs/proxmox/lxc/224.conf
- Created .env.example template in server-configs/openclaw/

Status: Fully operational
- Gateway accessible at http://10.10.0.224:18789 (SSH tunnel required)
- Discord bot connected and online
- MiniMax M2.1 model configured (200K context window)
- Daemon running as systemd service

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-02 08:02:58 -06:00
Cal Corum
a900f9c744 CLAUDE: Document Home Assistant Matter/Thread setup and network config
- Update deployment guide with operational status (VM 109)
- Add ZBT-2 USB passthrough documentation (303a:831a)
- Document critical dual-NIC network config for Matter
  - net0 must be on home network (vmbr1) for Matter Server
  - net1 on server network (vmbr0) for management
- Add Thread network configuration details
- Add Matter commissioning steps and troubleshooting
- Update VM config with current settings and comments
- Add lessons learned from Matter commissioning debugging

Key insight: Matter requires HA to be on same subnet as IoT devices
for mDNS discovery. This was root cause of commissioning failures.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 10:58:19 -06:00
Cal Corum
282a2f8a9c CLAUDE: Add Home Assistant to infrastructure inventory
Added Home Assistant OS VM (10.10.0.174, VMID 109) to hosts.yml with new
'homeassistant' type for API-based smart home management. Includes API
config template with token storage pattern (.env.example).

Also added foundry-lxc entry that was missing from inventory.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 09:55:16 -06:00
Cal Corum
cd614e753a CLAUDE: Add server-configs version control system
Introduces centralized configuration management for home lab:
- sync-configs.sh script for pull/push/diff/deploy operations
- hosts.yml inventory tracking 9 hosts (Proxmox, VMs, LXCs, cloud)
- Docker Compose files from all active hosts (sanitized)
- Proxmox VM and LXC configurations for backup reference
- .env.example files for services requiring secrets

All hardcoded secrets replaced with ${VAR} references.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 16:13:28 -06:00