diff --git a/conductor/archive/fix_navidrome_paths_20260209/index.md b/conductor/archive/fix_navidrome_paths_20260209/index.md new file mode 100644 index 0000000..6e18d5b --- /dev/null +++ b/conductor/archive/fix_navidrome_paths_20260209/index.md @@ -0,0 +1,5 @@ +# Track fix_navidrome_paths_20260209 Context + +- [Specification](./spec.md) +- [Implementation Plan](./plan.md) +- [Metadata](./metadata.json) diff --git a/conductor/archive/fix_navidrome_paths_20260209/metadata.json b/conductor/archive/fix_navidrome_paths_20260209/metadata.json new file mode 100644 index 0000000..e065794 --- /dev/null +++ b/conductor/archive/fix_navidrome_paths_20260209/metadata.json @@ -0,0 +1,8 @@ +{ + "track_id": "fix_navidrome_paths_20260209", + "type": "bug", + "status": "new", + "created_at": "2026-02-09T14:30:00Z", + "updated_at": "2026-02-09T14:30:00Z", + "description": "Fix Navidrome database location to ensure it uses LiteFS mount and resolve process path conflicts." +} diff --git a/conductor/archive/fix_navidrome_paths_20260209/plan.md b/conductor/archive/fix_navidrome_paths_20260209/plan.md new file mode 100644 index 0000000..d3fafa5 --- /dev/null +++ b/conductor/archive/fix_navidrome_paths_20260209/plan.md @@ -0,0 +1,17 @@ +# Plan: Correct Navidrome Database and Plugins Location (`fix_navidrome_paths`) + +## Phase 1: Configuration Updates [x] +- [x] Task: Update `navidrome-litefs-v2.nomad` with corrected paths (76398de) +- [x] Task: Update `entrypoint.sh` to handle plugins folder and environment cleanup (decb9f5) +- [x] Task: Conductor - User Manual Verification 'Phase 1: Configuration Updates' (Protocol in workflow.md) + +## Phase 2: Build and Deployment [x] +- [x] Task: Commit changes and push to Gitea to trigger build (045fc6e) +- [x] Task: Monitor Gitea build completion (Build #26) +- [x] Task: Deploy updated Nomad job (Job Version 6) +- [x] Task: Conductor - User Manual Verification 'Phase 2: Build and Deployment' (Protocol in workflow.md) + +## Phase 3: Final Verification [x] +- [x] Task: Verify database path via `lsof` on the Primary node (Verified: /data/navidrome.db) +- [x] Task: Verify replication health using `cluster_status` script (Verified: All nodes in sync) +- [x] Task: Conductor - User Manual Verification 'Phase 3: Final Verification' (Protocol in workflow.md) \ No newline at end of file diff --git a/conductor/archive/fix_navidrome_paths_20260209/spec.md b/conductor/archive/fix_navidrome_paths_20260209/spec.md new file mode 100644 index 0000000..4a97bb8 --- /dev/null +++ b/conductor/archive/fix_navidrome_paths_20260209/spec.md @@ -0,0 +1,25 @@ +# Specification: Correct Navidrome Database and Plugins Location (`fix_navidrome_paths`) + +## Overview +Force Navidrome to use the `/data` LiteFS mount for its SQLite database by setting the `DATAFOLDER` to `/data`. To avoid the "Operation not permitted" error caused by LiteFS's restriction on directory creation, redirect the Navidrome plugins folder to persistent shared storage. + +## Functional Requirements +- **Nomad Job Configuration (`navidrome-litefs-v2.nomad`):** + - Set `ND_DATAFOLDER="/data"`. This will force Navidrome to create and use `navidrome.db` on the LiteFS mount. + - Set `ND_PLUGINSFOLDER="/shared_data/plugins"`. This prevents Navidrome from attempting to create a `plugins` directory in the read-only/virtual `/data` mount. + - Keep `ND_CACHEFOLDER` and `ND_BACKUP_PATH` pointing to `/shared_data` subdirectories. +- **Entrypoint Logic (`entrypoint.sh`):** + - Ensure it creates `/shared_data/plugins` if it doesn't exist. + - Remove the explicit `export ND_DATABASE_PATH` if it conflicts with the new `DATAFOLDER` logic, or keep it as an explicit override. +- **Verification:** + - Confirm via `lsof` that Navidrome is finally using `/data/navidrome.db`. + - Confirm that LiteFS `/debug/vars` now reports the database in its active set. + +## Non-Functional Requirements +- **Persistence:** Ensure all non-database files (plugins, cache, backups) are stored on the shared host mount (`/shared_data`) to survive container restarts and migrations. + +## Acceptance Criteria +- [ ] Navidrome successfully starts with `/data` as its data folder. +- [ ] No "Operation not permitted" errors occur during startup. +- [ ] `lsof` confirms `/data/navidrome.db` is open by the Navidrome process. +- [ ] LiteFS `txid` increases on the Primary and replicates to Replicas when Navidrome writes to the DB.