Repository navigation
Conversation
Ship an Unraid Docker app plus a first-run wizard that persists setup state, honors INTERCEPT_ENV_FILE / INTERCEPT_INSTANCE_DIR, and uses DELETE journal mode on FUSE user shares.
There was a problem hiding this comment.
🟢 Approval recommended
The changes are cohesive, covered by targeted tests (template parsing, helper logic, and wizard routes), and integrate cleanly with existing auth/session gating and persistence patterns.
Pull request overview
Adds first-class Unraid installation support and a first-run setup wizard that persists state/config across container restarts, with SQLite configured to avoid WAL corruption on FUSE/network-backed mounts (common on Unraid user shares).
Changes:
- Introduces Unraid/NAS helpers to detect platform characteristics and select a safe SQLite journal mode (WAL vs DELETE) based on filesystem type.
- Adds
/setup/statusand/setup/completewizard endpoints plus frontend UI updates to show USB/storage guidance and persist completion in SQLite. - Packages an Unraid Community Applications template and documentation, and updates Docker/compose defaults to persist the
instance/directory viaINTERCEPT_INSTANCE_DIR.
File summaries
| File | Description |
|---|---|
| utils/unraid.py | New helpers for Unraid/Docker detection, filesystem heuristics, and SQLite journal-mode recommendation. |
| utils/tle_store.py | Stores TLE SQLite DB under INTERCEPT_INSTANCE_DIR and applies Unraid-safe journal mode. |
| utils/database.py | Adds INTERCEPT_INSTANCE_DIR support for main SQLite DB path and applies Unraid-safe journal mode. |
| routes/setup.py | New authenticated wizard API endpoints for status and completion persistence. |
| routes/init.py | Registers the new setup blueprint. |
| routes/settings.py | Writes/reads wizard-managed .env via INTERCEPT_ENV_FILE override. |
| static/js/core/first-run-setup.js | Wizard now consults /setup/status, shows Unraid/USB step, and POSTs /setup/complete. |
| start.sh | Supports sourcing an external env file via INTERCEPT_ENV_FILE. |
| Dockerfile | Creates /app/instance and sets INTERCEPT_INSTANCE_DIR default in the image. |
| docker-compose.yml | Persists ./instance to /app/instance and sets INTERCEPT_INSTANCE_DIR for both profiles. |
| unraid/intercept.xml | Adds Unraid Community Applications template with required volumes, env vars, and USB passthrough. |
| unraid/README.md | Unraid-specific install and persistence guidance, including FUSE/WAL notes. |
| README.md | Adds Unraid quickstart section referencing the template and wizard endpoints. |
| .env.example | Documents new Unraid/Docker-related env vars. |
| tests/test_unraid.py | Verifies template structure, Unraid helpers, instance-dir override, and wizard routes behavior. |
| CHANGELOG.md | Notes the Unraid app + setup wizard addition under Unreleased. |
Review details
- Files reviewed: 16/16 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Thanks for the Unraid Community Applications template + wizard. It currently has merge conflicts against |
Summary
unraid/intercept.xml) plus install docs..envviaINTERCEPT_INSTANCE_DIR/INTERCEPT_ENV_FILE./setup/status,/setup/complete).Test plan
pytest tests/test_unraid.py tests/test_database.py tests/test_tle_store.py tests/test_routes.py tests/test_app.py(75 passed)unraid/intercept.xmlon an Unraid host and complete Quick Setup/dev/bus/usbappears and/healthreturns healthy