Commit graph

36 commits

Author SHA1 Message Date
fd1c24d7c6 fix(01): revise plan 01-03 based on checker feedback
Clarify subprocess persistence on session switch, mandatory auto-spawn
on /session, and message queueing delegation to ClaudeSubprocess.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 14:35:53 +00:00
0baaeb26b5 docs(01): create phase plan
Phase 01: Session & Process Foundation
- 3 plan(s) in 2 wave(s)
- 2 parallel (wave 1), 1 sequential (wave 2)
- Ready for execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 14:32:10 +00:00
a522a108ca docs(01): research phase domain
Phase 1: Session & Process Foundation
- Standard stack identified (asyncio, python-telegram-bot 22.5, Claude Code CLI)
- Architecture patterns documented (concurrent stream reading, session isolation)
- Pitfalls catalogued (pipe deadlock, zombie processes, blocking event loop)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 14:25:26 +00:00
786468c98b docs(01): capture phase context
Phase 01: Session & Process Foundation
- Implementation decisions documented
- Phase boundary established
2026-02-04 14:07:47 +00:00
a639a53b0b docs: add codebase map and domain research
Codebase: 7 documents (stack, architecture, structure, conventions, testing, integrations, concerns)
Research: 5 documents (stack, features, architecture, pitfalls, summary)
2026-02-04 13:50:03 +00:00
6cf6bfb8d1 docs: create roadmap (4 phases)
Phases:
1. Session & Process Foundation: SESS-01, SESS-02, SESS-04, INFRA-02, INFRA-03
2. Telegram Integration: MSG-01, MSG-02, MSG-03, MSG-04, OUT-01, INFRA-01
3. Lifecycle Management: LIFE-01, LIFE-02, LIFE-03, LIFE-04, SESS-03
4. Output Modes: OUT-02, OUT-03

All 18 v1 requirements mapped to phases.
2026-02-04 13:49:57 +00:00
0edb076981 docs: define v1 requirements
18 requirements across 5 categories
6 requirements deferred to v2
2026-02-04 13:41:23 +00:00
1648a986bc docs: complete project research
Files:
- STACK.md
- FEATURES.md
- ARCHITECTURE.md
- PITFALLS.md
- SUMMARY.md

Key findings:
- Stack: Python 3.12+ with python-telegram-bot 22.6, asyncio subprocess management
- Architecture: Path-based session routing with state machine lifecycle management
- Critical pitfall: Asyncio PIPE deadlock requires concurrent stdout/stderr draining

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 13:37:24 +00:00
9c62dac155 chore: add project config
Mode: yolo
Depth: quick
Parallelization: enabled
Workflow agents: research=on, plan_check=on, verifier=off
2026-02-04 13:28:24 +00:00
ed0c18befc docs: initialize project
Telegram Claude Code Bridge — frictionless Claude Code conversation via Telegram with session management, idle timeout, and full tool access.
2026-02-04 13:26:34 +00:00
c50c348004 Add Telegram bot and shared storage documentation
- Telegram bot (@georgsen_homelab_bot) for two-way communication
  - Commands: /status, /pbs, /backups, /beszel, /kuma, /ping
  - Photos and files saved to inbox for Claude to read
  - Runs as systemd user service
- Shared storage via ZFS bind mounts
  - rpool/shared/mikkel on PVE host
  - Mounted to ~/stuff in mgmt, dev, general containers
  - SMB access via \\mgmt\stuff (Tailscale MagicDNS)
- Updated helper scripts list in CLAUDE.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 14:21:51 +00:00
c741bc2597 Add pbs backups command to documentation
New command shows last backup status per VM/CT organized by namespace.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 12:22:48 +00:00
3b00ffa93d Add PBS helper script for backup monitoring
~/bin/pbs provides:
- status: Overview with datastore, storage, dedup ratio, task summary
- tasks: Recent backup/prune tasks with timestamps
- errors: Filter for failures only
- gc: Garbage collection details
- snapshots: List recent backups per namespace
- storage: Detailed dedup statistics

Also installed bc for calculations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 12:10:51 +00:00
ace09a3158 Add OpenCloud, Hoodik Android app, and other items to TODO
- OpenCloud: Dropbox alternative with native apps
- Hoodik Android app: Build native app for E2E encrypted storage
- NetBox: IPAM/DCIM for network documentation
- Forgejo CI/CD: Actions runner setup

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 23:46:11 +00:00
9cf836d2fa Add Dockge to Beszel monitoring with Docker stats
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 23:29:05 +00:00
654e3ffbce Add Beszel server monitoring dashboard
- Deployed Beszel hub in Dockge (10.5.0.10:8090)
- Installed agents on PVE host and PBS (with Synology mount monitoring)
- Created NPM proxy at dashboard.georgsen.dk
- Created ~/bin/beszel helper script for API management
- Added credentials for Beszel and Dockge
- Updated all documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 23:27:01 +00:00
7982975922 Update TODO: mark Uptime Kuma monitors as completed
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 23:05:13 +00:00
172087b463 Add Uptime Kuma helper script and monitors
- Created ~/bin/kuma for managing monitors via Socket.IO API
- Uses uptime-kuma-api Python library
- Added monitors: PBS, Forgejo, Technitium DNS
- Updated credentials with username/password for Socket.IO auth

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 23:04:51 +00:00
980475e903 Move Kuma API doc screenshot to uptime-kuma folder
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:58:10 +00:00
64df9998f6 Fix mgmt container IP: .102 → .108
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:57:18 +00:00
ce8c00aa1e Add Uptime Kuma API credentials and documentation
- Added API key to uptime-kuma/credentials
- Created README.md with full API documentation
- Updated homelab-documentation.md and CLAUDE.md
- Added TODO to review monitors for missing services

REST API is limited (metrics, push monitors, badges).
Full monitor management requires Socket.IO/web UI.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:52:14 +00:00
314d13c4ed Fix Proxmox URL to use hostname
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:24:05 +00:00
9988f74a61 Add dependent updates to IP reorg task
NPM, DNS, iptables, and docs all need updating too.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:17:17 +00:00
eee9aa2a7c Refine IP addressing plan in TODO
DHCP below 100, static VMIDs at 100+ matching their VMID number.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 21:58:01 +00:00
c935edb0cc Add IP addressing review to TODO
Consider VMID-based IPs and smaller DHCP range.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 21:18:41 +00:00
18cc58adc0 Add container quick reference table to README
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 20:31:13 +00:00
1b57dab4da Add TODO.md and document ping fix for unprivileged containers
- Created TODO.md with pending task to fix ping on all containers
- Added setcap command to standard container setup in documentation
- Added detailed explanation in CLAUDE.md for future reference
- Unprivileged containers need cap_net_raw on /bin/ping

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 20:28:25 +00:00
6fe9fb2297 Update CLAUDE.md with complete security info
Added firewall rules, Fail2ban on both core and Forgejo,
and NPM update command for quick reference.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 14:15:59 +00:00
196531b6bf Add NPM update procedure to documentation
Documented that NPM runs in Docker at /opt/npm and added
the docker compose commands for updating it.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 14:15:09 +00:00
15c9d80952 Harden core.georgsen.dk firewall
- Whitelist home IP (83.89.248.247) for all traffic
- Block DNS (53), spiceproxy (3128), Proxmox UI (8006, 8008) from internet
- Add Fail2ban for SSH on PVE host
- Home IP whitelisted in Fail2ban

Access Proxmox from home IP directly or via Tailscale when remote.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:59:10 +00:00
b335488823 Block portmapper (port 111) from public internet
Fix for CERT-Bund security notification about exposed rpcbind service.
Added iptables rules to drop port 111 on vmbr0 (public interface).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:54:04 +00:00
6c48c71a4f Add security measures: Fail2ban, NPM access lists
- Fail2ban on Forgejo (5 retries, 24h ban)
- NPM access list 'home_only' restricts admin UIs to 83.89.248.247
- Applied to: dns.georgsen.dk, dockge.georgsen.dk, pbs.georgsen.dk
- Added home IP to documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:48:15 +00:00
530ef7c6b9 Update docs: configs now in repo with symlinks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:41:05 +00:00
59ee2da552 Add API credentials and configs
- pve/credentials: Proxmox API token
- dns/credentials: Technitium DNS credentials
- forgejo/credentials: Forgejo API token
- npm/npm-api.conf: NPM API credentials

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:40:26 +00:00
45424e0172 Add Forgejo API config, git DNS record
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:39:17 +00:00
a6bf1c7706 Initial commit: homelab documentation and management
- homelab-documentation.md: Complete infrastructure docs
- CLAUDE.md: Claude Code guidance
- README.md: Quick reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 12:38:45 +00:00