Media metadata view: Jellyfin writes, Plex reads, the array stays read-only #97
No files matched your search
+6
-28
@@ -94,34 +94,12 @@ services:
|
|||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════
|
# Jellyfin left this file when it became a Quadlet: the container is owned by
|
||||||
# Jellyfin — media server (movies, TV, music)
|
# dankserver/jellyfin/quadlet/jellyfin.container, its data roots are under
|
||||||
# ═══════════════════════════════════════════════
|
# /home/dank/Containers/jellyfin, and its library arrives through the SSD
|
||||||
jellyfin:
|
# overlay at /var/lib/media-meta/view (scripts/media-view.sh). The block that
|
||||||
image: jellyfin/jellyfin:latest
|
# was here named /opt/jellyfin/* and a read-only array bind — a second owner for
|
||||||
container_name: jellyfin
|
# the container name `jellyfin`, wrong on every path. One owner per container.
|
||||||
restart: unless-stopped
|
|
||||||
ports:
|
|
||||||
- "8096:8096/tcp"
|
|
||||||
- "8920:8920/tcp"
|
|
||||||
- "7359:7359/udp"
|
|
||||||
- "1900:1900/udp"
|
|
||||||
environment:
|
|
||||||
- JELLYFIN_PublishedServerUrl=http://192.168.0.235:8096
|
|
||||||
- DOTNET_SYSTEM_IO_DISABLEFILELOCKING=true
|
|
||||||
volumes:
|
|
||||||
- /opt/jellyfin/config:/config
|
|
||||||
- /opt/jellyfin/cache:/cache
|
|
||||||
- /mnt/entropy:/data:ro
|
|
||||||
devices:
|
|
||||||
- /dev/dri:/dev/dri
|
|
||||||
group_add:
|
|
||||||
- "992"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:8096/health"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
# ═══════════════════════════════════════════════
|
# ═══════════════════════════════════════════════
|
||||||
# Calibre-Web — e-book web frontend
|
# Calibre-Web — e-book web frontend
|
||||||
|
|||||||
@@ -155,13 +155,14 @@ DANKCLAW_COMPOSE_SERVICES = set()
|
|||||||
# Quadlet unit now — the last compose services were the hermes trio, whose units
|
# Quadlet unit now — the last compose services were the hermes trio, whose units
|
||||||
# have owned their containers since 2026-09-12 and whose compose blocks were
|
# have owned their containers since 2026-09-12 and whose compose blocks were
|
||||||
# dead weight that could only create a duplicate container.
|
# dead weight that could only create a duplicate container.
|
||||||
|
# jellyfin left the Dankserver file on 2026-10-30 for the same reason: its Quadlet
|
||||||
|
# has owned the container since the cutover, so a compose edit must not restart it.
|
||||||
|
|
||||||
DANKSERVER_COMPOSE_SERVICES = {
|
DANKSERVER_COMPOSE_SERVICES = {
|
||||||
"mariadb",
|
"mariadb",
|
||||||
"redis",
|
"redis",
|
||||||
"romm",
|
"romm",
|
||||||
"copyparty",
|
"copyparty",
|
||||||
"jellyfin",
|
|
||||||
"calibre-web",
|
"calibre-web",
|
||||||
}
|
}
|
||||||
COMPOSE_NAME_MAP = {"mariadb": "romm-mariadb", "redis": "romm-redis"}
|
COMPOSE_NAME_MAP = {"mariadb": "romm-mariadb", "redis": "romm-redis"}
|
||||||
|
|||||||
@@ -133,6 +133,16 @@ REMOTE_DEPLOY="$REPO_ROOT/scripts/deploy-remote.sh"
|
|||||||
[ -z "$output" ]
|
[ -z "$output" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "a compose edit never restarts a Quadlet-owned media server" {
|
||||||
|
# dankserver/compose.yaml is an inventory; the media servers' Quadlets own
|
||||||
|
# their containers. A compose edit that restarted them would cut real viewers
|
||||||
|
# for a change that cannot affect them.
|
||||||
|
run python3 "$PLANNER" --target dankserver --paths dankserver/compose.yaml
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
! printf '%s\n' "$output" | grep -qx jellyfin
|
||||||
|
! printf '%s\n' "$output" | grep -qx plex
|
||||||
|
}
|
||||||
|
|
||||||
@test "compose planner narrows a compose edit to the changed service" {
|
@test "compose planner narrows a compose edit to the changed service" {
|
||||||
local base head
|
local base head
|
||||||
base=$(git -C "$REPO_ROOT" rev-parse HEAD)
|
base=$(git -C "$REPO_ROOT" rev-parse HEAD)
|
||||||
|
|||||||
Reference in new issue
Block a user