Initial sync: memory, agents, commands, and gitignore
Syncs project memory, custom agents, and commands across machines. Excludes secrets (settings.json), session state, and runtime files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
- [SSH target for infra changes](reference_ssh_target.md) — SSH to .134 (Debian Docker VM), not .137 (Pi manager)
|
||||
- [Config file paths on .134](reference_config_paths.md) — Caddy/Authelia actual paths differ from Obsidian docs
|
||||
- [Kiro agents adopted](user_kiro_agents.md) — homelab + obsidian agents with MCP servers mirrored to ~/.mcp.json
|
||||
- [Obsidian vault folder structure](reference_obsidian_vault_structure.md) — Homelab-2026 is active; Homelab-New and Homelab are stale/archived
|
||||
- [Paperless-ngx VM details](reference_paperless_vm.md) — Dedicated VM 108 at .108, not on .134; includes AI services
|
||||
- [PlateRunner deployment](reference_platerunner.md) — VM 103 (.122), /opt/docker/stacks/platerunner/, builds from GitHub source
|
||||
- [Workout-player deployment](reference_workout_player_deploy.md) — VM 101 (.172), tar-over-SSH deploy, docker compose rebuild
|
||||
- [Kiro Gateway token sync](reference_kiro_gateway.md) — Mac is single auth authority; LaunchAgent syncs SQLite DB to LXCs every 20min; no non-interactive re-auth if expired
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: Homelab config file locations on 192.168.86.134
|
||||
description: Actual paths for Caddy and Authelia configs on the Docker host — Obsidian docs reference stale paths
|
||||
type: reference
|
||||
---
|
||||
|
||||
Config files live on 192.168.86.134 (Debian Docker VM on Proxmox, not the Pi cluster manager at .137):
|
||||
|
||||
- Caddyfile: `/opt/docker/caddy-config/Caddyfile` (bind-mounted read-only to `/etc/caddy/Caddyfile` in container)
|
||||
- Authelia config: `/opt/docker/authelia-config/configuration.yml` (bind-mounted to `/config` in container)
|
||||
- Authelia users DB: `/opt/docker/authelia-config/users_database.yml`
|
||||
|
||||
**Why:** The Obsidian docs reference `/opt/docker/stacks/docker-swarm-stack/caddy/Caddyfile` and `/opt/docker/stacks/docker-swarm-stack/authelia/configuration.yml` — these paths no longer exist. The actual paths were found by inspecting running container mounts.
|
||||
|
||||
**How to apply:** Always use these paths when editing configs via SSH. The Obsidian docs should be updated to reflect these paths. Caddy config is read-only mount so edits go to the host path; reload with `docker exec $(docker ps -q -f name=caddy) caddy reload --config /etc/caddy/Caddyfile`. Authelia config dir needs sudo for writes.
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Kiro Gateway token sync architecture
|
||||
description: How kiro-gateway HA cluster handles AWS SSO OIDC tokens — Mac is the single auth authority, syncs to LXCs every 20min via LaunchAgent
|
||||
type: reference
|
||||
---
|
||||
|
||||
Three kiro-gateway LXCs (900/.215 on PX1, 901/.216 on PX2, 902/.217 on PX3) proxy Kiro IDE's API behind VIP 192.168.86.210:8000.
|
||||
|
||||
Auth uses AWS SSO OIDC via kiro-cli. Credentials are in `/root/.local/share/kiro-cli/data.sqlite3` on each LXC (`auth_kv` table, key `kirocli:odic:token`).
|
||||
|
||||
**Critical:** AWS SSO OIDC refresh tokens are single-use. Multiple LXCs cannot independently hold the same token — whichever refreshes first invalidates the others.
|
||||
|
||||
**Solution:** Mac is the single token authority. LaunchAgent `com.csader.kiro-token-sync` (script at `~/.local/bin/kiro-token-sync.sh`) syncs Mac's `~/Library/Application Support/kiro-cli/data.sqlite3` to all three LXCs every 20 minutes via scp + pct push. Log at `~/Library/Logs/kiro-token-sync.log`.
|
||||
|
||||
**If tokens expire:** Copy Mac's DB manually, or run `kiro-cli login` (requires browser) then run the sync script. No non-interactive re-auth path exists once refresh token is dead.
|
||||
|
||||
Full ops doc: `4 - Areas/Home/Homelab-2026/Operations/Kiro Gateway Operations.md`
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: Obsidian vault folder structure
|
||||
description: Homelab-2026 is the active docs folder; Homelab-New is archived
|
||||
type: reference
|
||||
---
|
||||
|
||||
The Obsidian vault at `/Users/csader/Documents/Sader/` has the homelab docs at:
|
||||
|
||||
- `4 - Areas/Home/Homelab-2026/` — ACTIVE, canonical documentation
|
||||
- `4 - Areas/Home/Homelab-New/` — STALE, mostly empty (only `Infrastructure/Docker-Swarm-Cluster/`)
|
||||
- `4 - Areas/Home/Homelab/` — STALE, old archived content
|
||||
|
||||
**Why:** A second vault reorganization moved active docs from Homelab-New into Homelab-2026. Homelab-New and Homelab are kept for archive purposes.
|
||||
|
||||
**How to apply:** Always read from and write to `Homelab-2026`. Key files:
|
||||
- `Homelab-2026/Infrastructure Overview.md` — Service inventory
|
||||
- `Homelab-2026/Home Assistant Automations.md` — HA automation reference
|
||||
- `Homelab-2026/Known Issues.md` — Active issues tracker
|
||||
- `Homelab-2026/Hosts/` — Per-host documentation
|
||||
- `Homelab-2026/Network/Topology.md` — Network topology
|
||||
- `Homelab-2026/Archived Docs/` — Old Homelab and Homelab-New archives
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Paperless-ngx VM details
|
||||
description: Paperless-ngx runs on VM 104 at .134 alongside other core infra — user confirmed March 2026
|
||||
type: reference
|
||||
---
|
||||
|
||||
Paperless-ngx runs on VM 104 at 192.168.86.134 (the primary infra VM), NOT on a separate VM.
|
||||
|
||||
- Stack path: `/opt/docker/stacks/paperless-ngx/docker-compose.yml`
|
||||
- Port: 8001 (mapped from container 8000)
|
||||
- URL: https://documents.chrissader.com
|
||||
- Database: SQLite (not PostgreSQL)
|
||||
- Documents: NFS mount to Unraid at `/mnt/unraid/paperless-ngx-docs`
|
||||
- Companion services (added March 2026): paperless-ai (:3001), paperless-gpt (:3002)
|
||||
- Both AI services use Ollama on Chris's PC (.112) for inference
|
||||
- SSH user: csader
|
||||
|
||||
**Why:** User explicitly confirmed .134 on 2026-03-28. Previous agent memory incorrectly stated .108 based on a misread migration doc.
|
||||
|
||||
**How to apply:** SSH to csader@192.168.86.134 for any Paperless-related work. The compose stack is at /opt/docker/stacks/paperless-ngx/.
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: PlateRunner deployment details
|
||||
description: PlateRunner runs on VM 103 (.122) at /opt/docker/stacks/platerunner/, built from GitHub source via docker-compose
|
||||
type: reference
|
||||
---
|
||||
|
||||
PlateRunner is deployed on VM 103 (192.168.86.122, Proxmox2) at `/opt/docker/stacks/platerunner/`.
|
||||
|
||||
- **Repo**: https://github.com/csader/platerunner.git (cloned on server)
|
||||
- **Container**: `platerunner-platecycler-1`, port mapping `3001:3000`
|
||||
- **Compose**: builds from source (multi-stage Dockerfile, Next.js standalone)
|
||||
- **Public URL**: platerunner.chrissader.com (Cloudflare Tunnel -> Caddy .134 -> .122:3001)
|
||||
- **Update process**: `git pull origin main` then `sudo docker compose up --build -d`
|
||||
- **Note**: `/opt/docker/stacks/` is owned by csader but Docker commands need sudo. Watch for root-owned .git files if sudo git operations are run accidentally.
|
||||
|
||||
**How to apply:** When updating PlateRunner, SSH to .122 (not .134), pull the repo, and rebuild with docker compose.
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
name: SSH target for homelab infrastructure changes
|
||||
description: Which host to SSH into for Caddy/Authelia/Docker changes — it's .134, not .137
|
||||
type: reference
|
||||
---
|
||||
|
||||
SSH into `csader@192.168.86.134` for infrastructure config changes (Caddy, Authelia, Docker containers).
|
||||
|
||||
This is the Debian Docker VM running on Proxmox (192.168.86.68), not the Pi cluster manager node (192.168.86.137) referenced in older Obsidian docs.
|
||||
|
||||
**Why:** The architecture diagram shows .137 as the Pi cluster manager, but the actual Docker containers (Caddy, Authelia, etc.) run on .134.
|
||||
|
||||
**How to apply:** When the user asks to modify Caddy, Authelia, or other Docker service configs, SSH to 192.168.86.134.
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
name: Workout-player deployment details
|
||||
description: How to deploy/update workout-player — VM 101 on Proxmox3, tar-over-SSH from local, docker compose rebuild
|
||||
type: reference
|
||||
---
|
||||
|
||||
workout-player runs on VM 101 (192.168.86.172) on Proxmox3 (.67), port 8091 -> 3000, behind Caddy/Authelia at workouts.chrissader.com.
|
||||
|
||||
- Source repo: https://git.chrissader.com/csader/workout-player
|
||||
- Deploy path: `/home/csader/workout-player/` on .172
|
||||
- Data volume: `/home/csader/workout-player/data/` (SQLite DB at workout.db)
|
||||
- Media mount: `/mnt/unraid/media/tv/Exercise` (read-only bind to /media)
|
||||
- .env: `MEDIA_PATH=/mnt/unraid/media/tv/Exercise`
|
||||
- No git credentials on VM — deploy by tar-over-SSH from local Mac, then `docker compose up -d --build`
|
||||
|
||||
**Deploy steps:**
|
||||
1. From local repo: `tar czf - --exclude='node_modules' --exclude='.next' --exclude='.git' --exclude='data' --exclude='.env' . | ssh csader@192.168.86.172 "cd /home/csader/workout-player && tar xzf -"`
|
||||
2. SSH in: `cd /home/csader/workout-player && docker compose up -d --build`
|
||||
3. Verify: `curl -s -o /dev/null -w "%{http_code}" https://workouts.chrissader.com` (expect 302 — Authelia redirect)
|
||||
4. Clean up: `docker image prune -f`
|
||||
|
||||
**How to apply:** Use this workflow whenever the user pushes a new commit and wants to redeploy. No git pull available on the VM.
|
||||
Reference in New Issue
Block a user