From 61c5328ec21b36ddf321ecb6beb43cde642714df Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Thu, 5 Feb 2026 21:05:35 -0800 Subject: [PATCH] Update restart-indri docs after power outage recovery (#111) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Simplified restart-indri startup procedure to match reality (most services autostart via mcquack LaunchAgents and brew services) - Added minikube tailscale serve port fix step (`mise run provision-indri -- --tags minikube`) - Added Anker SOLIX F2000 GaNPrime UPS to indri reference card ## Context After a power outage, discovered that the restart-indri docs overstated what needs manual intervention. Docker Desktop, Forgejo, Caddy, and all mcquack services autostart. Only Amphetamine, AutoMounter, and minikube need manual action. ## Test plan - [ ] Verify restart-indri doc reads clearly - [ ] Verify indri ref card UPS entry renders correctly 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/111 --- .../changelog.d/fix-restart-indri-docs.doc.md | 1 + docs/how-to/restart-indri.md | 47 +++++++++---------- docs/reference/infrastructure/indri.md | 1 + 3 files changed, 23 insertions(+), 26 deletions(-) create mode 100644 docs/changelog.d/fix-restart-indri-docs.doc.md diff --git a/docs/changelog.d/fix-restart-indri-docs.doc.md b/docs/changelog.d/fix-restart-indri-docs.doc.md new file mode 100644 index 0000000..036b819 --- /dev/null +++ b/docs/changelog.d/fix-restart-indri-docs.doc.md @@ -0,0 +1 @@ +Updated restart-indri how-to to reflect actual recovery procedure after power outage. Added UPS to indri specs. diff --git a/docs/how-to/restart-indri.md b/docs/how-to/restart-indri.md index d79f47b..f56a214 100644 --- a/docs/how-to/restart-indri.md +++ b/docs/how-to/restart-indri.md @@ -62,19 +62,22 @@ Or if you're at the console, use the Apple menu. ## Startup Procedure -After indri boots, several things need manual attention. +After indri boots, most services recover automatically. Only a few things need manual attention. -### 1. Start GUI Applications +**What autostarts:** Docker Desktop, brew services (Forgejo, Caddy), and all mcquack LaunchAgent services (Zot, Alloy, Borgmatic, metrics collectors). -These must be started manually after reboot. Log in to indri (via Screen Sharing or physically) and launch: +**What needs manual action:** Amphetamine, AutoMounter, and minikube (including its Tailscale serve port). + +### 1. Log In and Start GUI Apps + +Log in to indri (via Screen Sharing or physically) and launch: | App | Purpose | Launch Method | |-----|---------|---------------| -| **Docker Desktop** | Container runtime for minikube | Spotlight or `/Applications/Docker.app` | | **Amphetamine** | Prevents sleep | Spotlight or App Store apps | | **AutoMounter** | Mounts sifaka SMB shares to `/Volumes/` | Spotlight or App Store apps | -Wait for Docker Desktop to fully start (whale icon in menubar stops animating). +Docker Desktop autostarts on login. Wait for it to finish starting (whale icon in menubar stops animating) before proceeding. ### 2. Verify Sifaka Mounts @@ -88,36 +91,28 @@ You should see: `allisonflix`, `backups`, `music`, `photos`, `torrents` (or simi If mounts are missing, open AutoMounter and trigger a reconnect. -### 3. Start Minikube +### 3. Fix Minikube Remote Access + +Minikube uses the Docker driver, which assigns a **random API server port** on each start. After a reboot, the Tailscale serve proxy (`k8s.tail8d86e.ts.net`) will still point to the old port, breaking remote `kubectl` access. + +Run the minikube ansible role to detect the new port and update Tailscale serve: ```bash -ssh indri 'minikube start' +mise run provision-indri -- --tags minikube ``` -This starts the Kubernetes cluster inside Docker. It may take a few minutes as all pods come up. +This will: +- Start minikube if it hasn't started yet +- Detect the current API server port +- Update `tailscale serve` to forward to the correct port -Monitor pod startup: +You can verify remote access works: ```bash -kubectl --context=minikube-indri get pods -A -w +kubectl --context=minikube-indri get nodes ``` -### 4. Verify Native Services - -LaunchAgent services should start automatically. Check them: - -```bash -ssh indri 'launchctl list | grep mcquack' -ssh indri 'brew services list | grep forgejo' -``` - -If any are missing, Ansible can restore them: - -```bash -mise run provision-indri -``` - -### 5. Run Health Check +### 4. Run Health Check Once everything is up, verify all services: diff --git a/docs/reference/infrastructure/indri.md b/docs/reference/infrastructure/indri.md index 00206b9..50b68b9 100644 --- a/docs/reference/infrastructure/indri.md +++ b/docs/reference/infrastructure/indri.md @@ -18,6 +18,7 @@ Primary BlumeOps server. Mac Mini M1 (2020). | **macOS** | 15.7.3 (Sequoia) | | **Tailscale IP** | 100.98.163.89 | | **Tailscale Tag** | `tag:homelab` | +| **UPS** | Anker SOLIX F2000 GaNPrime | ## Services Hosted