Skip to content

๐Ÿ“š Librarrarian โ€” Media Transcoding Dashboard

Host: Homelab ยท Compose: Homelab/Docker/librarrarian/compose.yaml
Stack name: librarrarian

1. Overview

Librarrarian is a custom Flask-based dashboard for managing and monitoring media transcoding jobs. It provides a web UI to track the status of media encoding across the NFS library and supports OIDC SSO, passkey authentication, and a background worker process. This is a private project hosted at ghcr.io/m1ckyb/librarrarian-dashboard.


2. Architecture & Services

Service Image Port Role
db postgres:16-alpine@sha256:3c5c8892d184f738f4fe282d14ddaa613a38f00f4189d2d94725ebe6f2909ddb 50021 PostgreSQL database for job state
librarrarian ghcr.io/m1ckyb/librarrarian-dashboard:develop 50020 Web dashboard (Flask)
librarrarian-worker-1 ghcr.io/m1ckyb/librarrarian-worker:develop โ€” Background job worker (transcoding)

3. Networking

  • cloudflare-net โ€” Routes the dashboard to transcode.m1ckyb.com via Cloudflare Tunnel.
  • internal โ€” Bridge network for dashboard โ†” database โ†” worker communication.

4. Persistent Storage

| Container | Host Path / Volume | Description | |---|---|---|| | db | postgres_data | โ€” | | librarrarian | /docker/services/librarrarian | Application data and config | | librarrarian | /nfs/media/ | NFS media library (read/write for transcoding) | | librarrarian-worker-1 | /nfs/media/ | NFS media library (read/write for transcoding) |


5. Environment Variables

Variable Service Description
POSTGRES_DB db โ€”
POSTGRES_PASSWORD db โ€”
POSTGRES_USER db โ€”
API_KEY librarrarian Shared key for worker authentication
AUTH_ENABLED librarrarian Master auth switch (true/false)
DB_HOST librarrarian โ€”
DB_NAME librarrarian โ€”
DB_PASSWORD librarrarian โ€”
DB_USER librarrarian โ€”
DEVMODE librarrarian โ€”
FLASK_SECRET_KEY librarrarian Flask session signing key
LOCAL_LOGIN_ENABLED librarrarian Enable local username/password fallback
LOCAL_PASSWORD librarrarian โ€”
LOCAL_USER librarrarian โ€”
OIDC_CLIENT_ID librarrarian โ€”
OIDC_CLIENT_SECRET librarrarian โ€”
OIDC_ENABLED librarrarian Enable OIDC SSO
OIDC_ISSUER_URL librarrarian OIDC provider URL
OIDC_PROVIDER_NAME librarrarian โ€”
PASSKEY_ENABLED librarrarian Enable WebAuthn passkeys
PYTHONUNBUFFERED librarrarian โ€”
TZ librarrarian Timezone
WEBAUTHN_ORIGIN librarrarian โ€”
WEBAUTHN_RP_ID librarrarian โ€”
WEBAUTHN_RP_NAME librarrarian โ€”
API_KEY librarrarian-worker-1 Shared key for worker authentication
AUTOSTART librarrarian-worker-1 Auto-start processing on container launch
DASHBOARD_URL librarrarian-worker-1 โ€”
DB_HOST librarrarian-worker-1 โ€”
DB_NAME librarrarian-worker-1 โ€”
DB_PASSWORD librarrarian-worker-1 โ€”
DB_USER librarrarian-worker-1 โ€”
MEDIA_PATHS librarrarian-worker-1 Comma-separated allowed media paths
TZ librarrarian-worker-1 Timezone

6. Access & Usage

URL Description
https://transcode.m1ckyb.com Librarrarian web UI
http://localhost:50020 Direct local access
# Start
docker compose -f Homelab/Docker/librarrarian/compose.yaml up -d

# Health check
curl -f http://localhost:50020/api/health

# Worker logs
docker logs librarrarian-worker-1 -f

7. Maintenance & Backup

# Update (uses develop tag โ€” will always pull latest)
docker compose -f Homelab/Docker/librarrarian/compose.yaml pull
docker compose -f Homelab/Docker/librarrarian/compose.yaml up -d

# Backup
docker exec librarrarian-db pg_dump -U postgres > /backup/librarrarian-db.sql
rsync -av /docker/services/librarrarian/ /backup/librarrarian/