auto: docs sync 2026-07-15T12:00:17+00:00

Files changed: engine/changelog.md engine/lint-report.md vault/.obsidian/workspace.json vault/docs/hardware/environment.md vault/runbooks/add-peertube-channel.md vault/runbooks/peertube-remote-runner.md
This commit is contained in:
echo6-autocommit 2026-07-15 12:00:17 +00:00
commit 451ed86707
6 changed files with 55 additions and 19 deletions

View file

@ -10,7 +10,7 @@ related:
- [[recon-service-integration]]
- [[proxmox-onboard-node]]
- [[ct-runbook]]
updated: 2026-07-13
updated: 2026-07-15
---
# Add PeerTube Channel
@ -181,7 +181,23 @@ If `tee` race condition empties the file:
| channel-map.json empty (0 bytes) | tee race condition | Always write to temp file first, then tee. Restore from backup or edge1 |
| sudo: password required | Sudoers not set up | Create `/etc/sudoers.d/recon-mgmt` via `pct exec 110` from root@192.168.1.243 |
| PeerTube "actor name already exists" | Channel exists in PeerTube but not in JSON | Add entry to JSON manually with correct `peertube_channel_id` |
| pt-importer 100% upload failures after a reboot | Boot race (started before `peertube.service` ready) + permission drift on `/opt/bulk-import/transcoded/<channel>/` dirs | See "Recovery: pt-importer stalled after unclean reboot" below |
## Recovery: pt-importer stalled after unclean reboot
After media's unclean reboot (2026-07-14), `pt-importer` on CT 110 failed 100% of uploads. Two causes, both hit at once:
1. **Boot race:** `pt-importer` started before `peertube.service` was ready and crash-looped. Fixed 2026-07-15 by adding `After=peertube.service` / `Wants=peertube.service` to the `pt-importer` systemd unit.
2. **Permission drift + unguarded rename:** the unclean reboot left ~26 `/opt/bulk-import/transcoded/<channel>/` dirs with drifted ownership/perms (`2755`, no group-write) instead of the normal `peertube:peertube 2775`. `importer.py`'s directory rename on the failure path is **not** wrapped in try/except, so a single `PermissionError` (or a truncated/corrupt "poison-pill" source file) crashes the whole process. The service then restarts from the top of the queue and hits the same file forever, blocking all other imports behind it.
**Recovery:**
```bash
ssh zvx@192.168.1.170 "sudo chmod g+w /opt/bulk-import/transcoded/*/"
ssh zvx@192.168.1.170 "sudo systemctl restart pt-importer"
```
**Known latent bug:** the unguarded rename in `importer.py` means any future perm-drift or corrupt file will re-trigger the same total stall. A try/except around that rename (skip-and-continue instead of crash-and-restart-from-top) would fix this durably — not yet done.
---
*Last updated: 2026-02-18 — Initial creation*
*Last updated: 2026-07-15 — Added pt-importer boot-race + permission-drift recovery (2026-07-14 media reboot incident)*

View file

@ -10,7 +10,7 @@ related:
- [[nordvpn-lxc]]
- [[proxmox-onboard-node]]
- [[recon-service-integration]]
updated: 2026-07-13
updated: 2026-07-15
---
# PeerTube Remote Runner — GPU Transcoding
@ -42,7 +42,7 @@ Prompt the user for all of these before executing:
RUNNER_HOST= # SSH alias or IP for the runner machine (e.g., cortex)
RUNNER_NAME= # Human-readable runner name (e.g., "cortex-nvenc")
RUNNER_USER= # User to run the service as (e.g., "zvx")
PT_URL= # PeerTube instance URL reachable from runner (e.g., "http://100.64.0.23:9000")
PT_URL= # PeerTube instance URL reachable from runner (e.g., "http://100.64.0.17:9000")
PT_HOST_HEADER= # PeerTube's public hostname for Host header (e.g., "stream.echo6.co")
PT_ADMIN_USER= # PeerTube admin username (e.g., "root")
PT_ADMIN_PASS= # PeerTube admin password
@ -426,6 +426,12 @@ Registration is tied to the PeerTube instance. After a rebuild:
3. Re-register: `peertube-runner register --url $PT_URL --registration-token <NEW_TOKEN> --runner-name $RUNNER_NAME`
4. Restart: `sudo systemctl restart peertube-runner`
### Runner target must track CT110's current tailnet IP
The registration URL (`registeredInstances` in `~/.config/peertube-runner-nodejs/default/config.toml` on cortex) is a static IP, not a hostname — it does **not** follow CT110 if its Tailscale identity drifts. When CT110's identity drifted (`peertube``peertube-4hve9pdr`, 100.64.0.23 → 100.64.0.17, see [[environment]]), the runner kept dialing the dead `.23` and ALL transcription/HLS/caption jobs silently stalled (~7,900 backlogged, zero throughput for 36h+ — unnoticed because downloads kept flowing independently). Fixed 2026-07-15 by pointing the config's url at `http://100.64.0.17:9000`. The runner was also found `disabled` (it only survived because cortex hadn't rebooted) — now `enabled`.
**Symptom to watch for:** `Cannot connect to http://<old-ip>:9000/runners` timeouts in `journalctl -u peertube-runner`.
---
## Quick Reference: Current Runners