Add how-to guide for restarting indri
Document the safe shutdown and startup procedure for indri, including minikube, native services, and GUI applications that require manual restart. Also adds AutoMounter reference card documenting the macOS app used to mount sifaka SMB shares. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
74bd5abe54
commit
05edafe0ed
6 changed files with 187 additions and 3 deletions
1
docs/changelog.d/docs-restart-indri-howto.doc.md
Normal file
1
docs/changelog.d/docs-restart-indri-howto.doc.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
Add how-to guide for safely restarting indri, plus AutoMounter reference card.
|
||||
|
|
@ -38,4 +38,5 @@ Task-oriented instructions for common BlumeOps operations. These guides assume y
|
|||
|
||||
| Guide | Description |
|
||||
|-------|-------------|
|
||||
| [[restart-indri]] | Safely shut down and restart indri |
|
||||
| [[troubleshooting]] | Diagnose and fix common issues |
|
||||
|
|
|
|||
135
docs/how-to/restart-indri.md
Normal file
135
docs/how-to/restart-indri.md
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
---
|
||||
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, several things need manual attention.
|
||||
|
||||
### 1. Start GUI Applications
|
||||
|
||||
These must be started manually after reboot. 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).
|
||||
|
||||
### 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. Start Minikube
|
||||
|
||||
```bash
|
||||
ssh indri 'minikube start'
|
||||
```
|
||||
|
||||
This starts the Kubernetes cluster inside Docker. It may take a few minutes as all pods come up.
|
||||
|
||||
Monitor pod startup:
|
||||
|
||||
```bash
|
||||
kubectl --context=minikube-indri get pods -A -w
|
||||
```
|
||||
|
||||
### 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
|
||||
|
||||
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
|
||||
|
|
@ -34,6 +34,7 @@ Individual service reference cards with URLs and configuration details.
|
|||
| [[zot]] | Container registry | indri |
|
||||
| [[devpi]] | PyPI caching proxy | k8s |
|
||||
| [[docs]] | Documentation site (Quartz) | k8s |
|
||||
| [[automounter]] | SMB share automounter | indri |
|
||||
|
||||
## Infrastructure
|
||||
|
||||
|
|
|
|||
|
|
@ -27,11 +27,16 @@ Primary BlumeOps server. Mac Mini M1 (2020).
|
|||
- [[jellyfin]] - Media server
|
||||
- [[borgmatic]] - Backup system
|
||||
- [[alloy | Alloy]] - Metrics/logs collector
|
||||
- Caddy - Reverse proxy for `*.ops.eblu.me`
|
||||
- [[caddy]] - Reverse proxy for `*.ops.eblu.me`
|
||||
|
||||
**Kubernetes (via minikube):**
|
||||
- [[apps | All k8s applications]]
|
||||
|
||||
**GUI Applications (manual start required):**
|
||||
- Docker Desktop - Container runtime for minikube
|
||||
- Amphetamine - Prevents sleep
|
||||
- [[automounter]] - Mounts [[sifaka]] SMB shares
|
||||
|
||||
## Maintenance Notes
|
||||
|
||||
**Sleep prevention:** Uses Amphetamine (App Store) to prevent sleep. If Amphetamine crashes after extended uptime, consider switching to `pmset` or `caffeinate` via ansible.
|
||||
|
|
@ -40,5 +45,7 @@ Primary BlumeOps server. Mac Mini M1 (2020).
|
|||
|
||||
## Related
|
||||
|
||||
- [[routing | Routing]] - Port mappings
|
||||
- [[cluster | Cluster]] - Minikube details
|
||||
- [[routing]] - Port mappings
|
||||
- [[cluster]] - Minikube details
|
||||
- [[automounter]] - SMB share mounting
|
||||
- [[restart-indri]] - Shutdown and startup procedure
|
||||
|
|
|
|||
39
docs/reference/services/automounter.md
Normal file
39
docs/reference/services/automounter.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
title: automounter
|
||||
tags:
|
||||
- services
|
||||
- macos
|
||||
---
|
||||
|
||||
# AutoMounter
|
||||
|
||||
macOS app that automatically mounts [[sifaka]] SMB shares on [[indri]].
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| **App** | [AutoMounter](https://www.pixeleyes.co.nz/automounter/) |
|
||||
| **Source** | Mac App Store (paid) |
|
||||
| **Autostart** | No (must launch manually after reboot) |
|
||||
| **Purpose** | Mount sifaka SMB shares to `/Volumes/` |
|
||||
|
||||
## Mounted Shares
|
||||
|
||||
| Share | Mount Point | Consumers |
|
||||
|-------|-------------|-----------|
|
||||
| backups | `/Volumes/backups` | [[borgmatic]] |
|
||||
| torrents | `/Volumes/torrents` | [[kiwix]], [[transmission]] |
|
||||
| music | `/Volumes/music` | [[navidrome]] |
|
||||
| allisonflix | `/Volumes/allisonflix` | [[jellyfin]] |
|
||||
| photos | `/Volumes/photos` | [[immich]] |
|
||||
|
||||
## Why AutoMounter?
|
||||
|
||||
There are free alternatives for mounting network shares on macOS (autofs, automountd, login scripts). AutoMounter was chosen for convenience and has proven reliable. If it becomes problematic, the alternative would be configuring autofs via Ansible.
|
||||
|
||||
## Related
|
||||
|
||||
- [[indri]] - Host machine
|
||||
- [[sifaka]] - NAS providing the shares
|
||||
- [[restart-indri]] - Startup procedure
|
||||
Loading…
Add table
Add a link
Reference in a new issue