feat: v1.3 Unraid Update Status Sync

Unraid GraphQL API foundation — connectivity, authentication, and
container ID format verified for native Unraid API integration.

Phase 14: Unraid API Access (2 plans, 4 tasks)
- Established Unraid GraphQL API connectivity via myunraid.net cloud relay
- Dual credential storage (.env.unraid-api + n8n env vars)
- Container ID format: {server_hash}:{container_hash} (128-char SHA256 pair)
- Complete API contract documented in ARCHITECTURE.md
- "unraid" test command added to Telegram bot

Phases 15-16 dropped (superseded by v1.4 Unraid API Native).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lucas Berger
2026-02-09 07:47:31 -05:00
parent ff0773b84b
commit 903e73d616
14 changed files with 1018 additions and 205 deletions
+10 -67
View File
@@ -5,7 +5,7 @@
-**v1.0 Docker Control via Telegram** — Phases 1-5 (shipped 2026-02-02) -> [Archive](milestones/v1.0-ROADMAP.md)
-**v1.1 n8n Integration & Polish** — Phases 6-9 (shipped 2026-02-04) -> [Archive](milestones/v1.1-ROADMAP.md)
-**v1.2 Modularization & Polish** — Phases 10-13 + 10.1, 10.2 (shipped 2026-02-08) -> [Archive](milestones/v1.2-ROADMAP.md)
- 🚧 **v1.3 Unraid Update Status Sync** — Phases 14-16 (in progress)
- **v1.3 Unraid Update Status Sync** — Phase 14 (shipped 2026-02-09, descoped) -> [Archive](milestones/v1.3-ROADMAP.md)
## Phases
@@ -42,69 +42,14 @@
</details>
### 🚧 v1.3 Unraid Update Status Sync (In Progress)
<details>
<summary>✅ v1.3 Unraid Update Status Sync (Phase 14) — SHIPPED 2026-02-09 (descoped)</summary>
**Milestone Goal:** After the bot updates a container, Unraid recognizes it's current — no stale badges, no false-positive notifications.
- [x] Phase 14: Unraid API Access (2/2 plans)
- ~~Phase 15: Single Container Sync~~ (dropped — superseded by v1.4)
- ~~Phase 16: Batch Sync & Documentation~~ (dropped — superseded by v1.4)
#### Phase 14: Unraid API Access
**Goal:** Validate GraphQL API connectivity and establish secure authentication from n8n container to Unraid host.
**Depends on:** Nothing (first phase of milestone)
**Requirements:** INFRA-01, INFRA-02, INFRA-03
**Success Criteria** (what must be TRUE):
1. n8n container can successfully reach Unraid's GraphQL API endpoint via HTTP request
2. Unraid API key exists with Docker update permission and is securely stored in gitignored `.env.unraid-api`
3. Container ID format is documented (e.g., `docker:<name>`) and verified via test GraphQL query
4. Test GraphQL query can list containers and return expected data structure
**Plans:** 2 plans
Plans:
- [ ] 14-01-PLAN.md — Credential infrastructure and Unraid GraphQL test workflow nodes
- [ ] 14-02-PLAN.md — GraphQL API contract documentation and connectivity verification
#### Phase 15: Single Container Sync
**Goal:** After bot updates a single container via text command or inline keyboard, Unraid automatically clears the "update available" badge without user intervention.
**Depends on:** Phase 14
**Requirements:** SYNC-01, SYNC-02, SYNC-05
**Success Criteria** (what must be TRUE):
1. After bot updates a container via text command (e.g., "update plex"), Unraid's WebGUI shows no update badge for that container
2. After bot updates a container via inline keyboard update button, Unraid's WebGUI shows no update badge for that container
3. Unraid sync failure does not block or fail the Docker container update itself (best-effort sync)
4. User receives clear feedback if sync fails (warning message, but update still succeeds)
5. n8n-update.json sub-workflow calls Unraid GraphQL `updateContainer` mutation after successful Docker API update
**Plans:** TBD
Plans:
- [ ] 15-01: TBD
#### Phase 16: Batch Sync & Documentation
**Goal:** Batch update operations sync all updated containers to Unraid efficiently, and users can set up Unraid sync integration from documentation alone.
**Depends on:** Phase 15
**Requirements:** SYNC-03, SYNC-04, SYNC-06, DOC-01, DOC-02
**Success Criteria** (what must be TRUE):
1. After "update all" operation, all updated containers sync to Unraid in a single efficient GraphQL call
2. After batch selection update, all selected containers sync to Unraid in a single efficient GraphQL call
3. User receives no false-positive Unraid Telegram notifications for containers updated via the bot
4. README documents how to create Unraid API key, configure n8n container networking, and set up `.env.unraid-api`
5. ARCHITECTURE.md documents Unraid sync integration including GraphQL API contract, data flow diagram, and new n8n nodes
**Plans:** TBD
Plans:
- [ ] 16-01: TBD
</details>
## Progress
@@ -118,11 +63,9 @@ Plans:
| 11 | Update All & Callback Limits | v1.2 | 2/2 | Complete | 2026-02-08 |
| 12 | Polish & Audit | v1.2 | 2/2 | Complete | 2026-02-08 |
| 13 | Documentation Overhaul | v1.2 | 1/1 | Complete | 2026-02-08 |
| 14 | Unraid API Access | v1.3 | 0/2 | Planned | - |
| 15 | Single Container Sync | v1.3 | 0/TBD | Not started | - |
| 16 | Batch Sync & Documentation | v1.3 | 0/TBD | Not started | - |
| 14 | Unraid API Access | v1.3 | 2/2 | Complete | 2026-02-08 |
**Total: 3 milestones shipped (13 phases, 48 plans) + 1 milestone in progress (3 phases)**
**Total: 4 milestones shipped (14 phases, 50 plans)**
---
*Updated: 2026-02-08Phase 14 planned (2 plans)*
*Updated: 2026-02-09v1.3 shipped (descoped to Phase 14 only)*