chore(conductor): Archive track 'fix_navidrome_paths'

This commit is contained in:
2026-02-09 07:14:22 -08:00
parent 23a65be4d8
commit 7f1f3321e0
4 changed files with 55 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
# Track fix_navidrome_paths_20260209 Context
- [Specification](./spec.md)
- [Implementation Plan](./plan.md)
- [Metadata](./metadata.json)

View File

@@ -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."
}

View File

@@ -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)

View File

@@ -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.