blumeops/docs/how-to/restart-indri.md
Erich Blume dc46eb7def Update all docs titles to human-readable (#117)
## Summary
- Updated frontmatter `title:` in all 63 doc cards from slug-case to human-readable (e.g. `borgmatic` → `Borgmatic`, `ai-assistance-guide` → `AI Assistance Guide`)
- Titles now closely match file stems so `[[wiki-links]]` render naturally without alternate anchor text
- Corrected titles that diverged from stems (e.g. `host-inventory` → `Hosts`, `grafana-alloy` → `Alloy`, `argocd-applications` → `Apps`)
- Deleted `title-test-alpha.md` and `title-test-beta.md` test cards and removed their reference index entry

## Deployment and Testing
- [x] `docs-check-links` passes — all wiki-links valid
- [x] `docs-check-index` passes
- [x] `docs-check-filenames` passes
- [ ] Verify titles render correctly on docs site after deploy

Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/117
2026-02-07 21:44:57 -08:00

130 lines
3.6 KiB
Markdown

---
title: Restart Indri
tags:
- how-to
- operations
---
# Restart Indri
How to safely shut down and restart [[indri]], the primary BlumeOps server.
## Prerequisites
- SSH access to indri
- Tailscale connected
## Shutdown Procedure
### 1. Stop Kubernetes Gracefully
Minikube runs on the Docker driver, so stopping it cleanly ensures pods terminate gracefully and persistent volumes are properly unmounted.
```bash
ssh indri 'minikube stop'
```
This may take a minute as pods receive termination signals. You can verify it stopped:
```bash
ssh indri 'minikube status'
```
### 2. Stop Native Services (Optional)
Native services managed by launchd will stop automatically during macOS shutdown. However, if you want to stop them explicitly first:
```bash
# Forgejo (managed by brew services)
ssh indri 'brew services stop forgejo'
# LaunchAgent services
ssh indri 'launchctl unload ~/Library/LaunchAgents/mcquack.eblume.zot.plist'
ssh indri 'launchctl unload ~/Library/LaunchAgents/mcquack.eblume.alloy.plist'
ssh indri 'launchctl unload ~/Library/LaunchAgents/mcquack.eblume.borgmatic.plist'
```
### 3. Quit GUI Applications
These apps don't autostart and should be quit cleanly before reboot:
- **Docker Desktop** - Quit from menubar or: `ssh indri 'osascript -e "quit app \"Docker\""'`
- **Amphetamine** - Quit from menubar (prevents sleep; will need restart)
- **AutoMounter** - Quit from menubar (mounts sifaka SMB shares)
### 4. Reboot
```bash
ssh indri 'sudo shutdown -r now'
```
Or if you're at the console, use the Apple menu.
## Startup Procedure
After indri boots, most services recover automatically. Only a few things need manual attention.
**What autostarts:** Docker Desktop, brew services (Forgejo, Caddy), and all mcquack LaunchAgent services (Zot, Alloy, Borgmatic, metrics collectors).
**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 |
|-----|---------|---------------|
| **Amphetamine** | Prevents sleep | Spotlight or App Store apps |
| **AutoMounter** | Mounts sifaka SMB shares to `/Volumes/` | Spotlight or App Store apps |
Docker Desktop autostarts on login. Wait for it to finish starting (whale icon in menubar stops animating) before proceeding.
### 2. Verify Sifaka Mounts
AutoMounter should automatically mount the sifaka shares. Verify:
```bash
ssh indri 'ls /Volumes/'
```
You should see: `allisonflix`, `backups`, `music`, `photos`, `torrents` (or similar).
If mounts are missing, open AutoMounter and trigger a reconnect.
### 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
mise run provision-indri -- --tags minikube
```
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
You can verify remote access works:
```bash
kubectl --context=minikube-indri get nodes
```
### 4. Run Health Check
Once everything is up, verify all services:
```bash
mise run services-check
```
All checks should pass. If any fail, see [[troubleshooting]].
## Related
- [[indri]] - Server specifications
- [[troubleshooting]] - Diagnose issues
- [[cluster]] - Kubernetes details
- [[sifaka]] - NAS storage