## Summary - Move 21 blumeops-tagged zettelkasten cards from ~/code/personal/zk/ to docs/ - Create symlink ~/code/personal/zk/blumeops -> blumeops/docs for obsidian integration - Update zk-docs mise task to read from local docs/ directory - Add blumeops workspace to obsidian.nvim config (strict=true) ## Benefits - Docs are now git-managed in the blumeops repo (visible on GitHub) - Wiki links between blumeops docs continue to work via symlink - obsidian-sync isolation: docs don't sync to work laptop - Direct editing via obsidian.nvim with dedicated workspace ## Testing - [x] Files moved to docs/ (21 files) - [x] Symlink created: ~/code/personal/zk/blumeops -> blumeops/docs - [x] zk-docs mise task updated and working - [ ] Verify obsidian.nvim link resolution (after merge) - [ ] Verify obsidian backlinks work 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/82
3.4 KiB
| id | aliases | tags | ||
|---|---|---|---|---|
| transmission |
|
|
Transmission Management Log
Transmission is a BitTorrent daemon running in Kubernetes, primarily used to download large ZIM archives for kiwix.
Service Details
- URL: https://torrent.tail8d86e.ts.net
- Namespace:
torrent - Image:
lscr.io/linuxserver/transmission:latest - ArgoCD app:
torrent - Storage: NFS PVC from sifaka (
/volume1/torrents)
Useful Commands
# View transmission logs
kubectl --context=minikube-indri -n torrent logs -f deployment/transmission
# Check RPC connectivity (from another pod)
kubectl --context=minikube-indri run -it --rm curl --image=curlimages/curl -- \
curl -s http://transmission.torrent.svc.cluster.local:9091/transmission/rpc
# Sync from ArgoCD
argocd app sync torrent
ArgoCD Management
Transmission is deployed via ArgoCD from argocd/manifests/torrent/:
deployment.yaml- Transmission container with NFS volumeservice.yaml- ClusterIP service (port 9091)ingress-tailscale.yaml- Tailscale Ingress for web UIpv-nfs.yaml- NFS PersistentVolumepvc.yaml- PersistentVolumeClaim
Storage Layout
The NFS share on sifaka (/volume1/torrents) has this structure:
/downloads/- Active downloads and torrent metadata/downloads/complete/- Completed downloads/config/- Transmission configuration/watch/- Watch directory for .torrent files
Kiwix reads from /downloads/complete/ to serve ZIM archives.
Integration with Kiwix
The kiwix deployment includes a torrent-sync sidecar that:
- Reads the declarative ZIM torrent list from a ConfigMap
- Adds missing torrents to Transmission via RPC
- Runs on startup and every 30 minutes
When downloads complete:
- Transmission moves files to
/downloads/complete/ - The zim-watcher CronJob (in kiwix namespace) detects new ZIMs
- Kiwix deployment is restarted to pick up new archives
Monitoring
TODO: Write custom transmission exporter. Existing exporters (metalmatze/transmission-exporter, sandrotosi/simple_transmission_exporter) are incompatible with Transmission 4's changed JSON API (type mismatches in lastScrapeTimedOut field).
Current monitoring via web UI at https://torrent.tail8d86e.ts.net:
- Active/seeding/paused torrent counts
- Upload/download speeds
- Disk usage
Basic uptime monitoring via blackbox probe in alloy (see Services Health dashboard).
Log
2026-01-22
- Attempted to add
metalmatze/transmission-exportersidecar for Prometheus metrics - Exporter failed with JSON parsing errors - incompatible with Transmission 4 API changes
- Removed exporter sidecar, dashboard, and Prometheus scrape config
- Added basic HTTP probe via Alloy k8s blackbox exporter instead
- Deleted stale
transmission.promtextfile from indri
2026-01-21 (P6)
- Migrated to Kubernetes (Phase 6 of k8s migration)
- NFS PersistentVolume for storage on sifaka
- Tailscale Ingress at
torrent.tail8d86e.ts.net - RPC accessible to kiwix namespace for torrent sync
- Moved existing ZIM files to
/downloads/complete/for seeding - Retired ansible transmission role from indri
2026-01-14
- Added transmission role to ansible playbook
- Integrated with kiwix role for torrent-based ZIM downloads
- Initial setup with transmission-cli via homebrew
- Managed via brew services on port 9091
- Metrics collected via textfile exporter