No description
Find a file
Jos Vooges | STH 4b3c594609 Fix version/subtitle labels and add OpenSubtitles search in the TV player.
Clean null metadata in stream labels, show readable subtitle track names, and let viewers pause to pick OpenSubtitles during playback.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 23:37:40 +02:00
apps Fix version/subtitle labels and add OpenSubtitles search in the TV player. 2026-08-31 23:37:40 +02:00
deploy Fail loudly on subtitle download and write sidecar with retry (media-node 1.3.2). 2026-08-30 21:33:00 +02:00
docs Add Synology media-node install script for multi-NAS enrollments. 2026-08-26 04:25:23 +02:00
node/media-node Fail loudly on subtitle download and write sidecar with retry (media-node 1.3.2). 2026-08-30 21:33:00 +02:00
packages Fail loudly on subtitle download and write sidecar with retry (media-node 1.3.2). 2026-08-30 21:33:00 +02:00
.gitignore Make VMC icon and TV banner high-contrast red for Shield. 2026-08-31 23:14:28 +02:00
package.json Initial commit: Distributed Stremio Media Cluster V1 2026-08-25 00:17:04 +02:00
pnpm-lock.yaml Add Synology Download Station search and 4K import pipeline. 2026-08-30 17:42:12 +02:00
pnpm-workspace.yaml Initial commit: Distributed Stremio Media Cluster V1 2026-08-25 00:17:04 +02:00
README.md Initial commit: Distributed Stremio Media Cluster V1 2026-08-25 00:17:04 +02:00

Distributed Stremio Media Cluster

Privé gedistribueerd mediaplatform voor Stremio: één Master, onbeperkt Media Nodes, video rechtstreeks van node naar player.

Architectuur

Stremio ──HTTPS──► Master (catalog / meta / stream)
                        ▲
                        │ WSS control
                   Media Nodes
                        │
Stremio ◄──HTTPS video──┘  (via Nginx Proxy Manager)

Harde eisen:

  • geen VPN / WireGuard / SMB / NFS tussen locaties
  • geen Docker op nodes
  • geen transcoding in V1
  • geen raw filesystem paths publiek
  • server-side playback sessions (geen simpele 1-uur signed URLs)

Stack

Component Techniek
Master API TypeScript, Fastify, Prisma, PostgreSQL, Redis
Admin UI Next.js
Media Node Go binary + SQLite + systemd
Proxy Nginx Proxy Manager (GUI only)

Repository

apps/master-api/     Master + Stremio addon
apps/admin-ui/       Admin dashboard
node/media-node/     Go media node
packages/            Gedeelde types + protocol
deploy/docker/       Docker Compose Master
deploy/node/         Installer + systemd
docs/                Deployment + NPM setup

Snel starten (dev)

npx pnpm install

# Postgres + Redis
cd deploy/docker
docker compose up -d postgres redis

# Master
cd ../../apps/master-api
cp .env.example .env
# DATABASE_URL=postgresql://media:media_secret@localhost:5432/media_cluster
npx prisma migrate deploy
npx pnpm db:seed
npx pnpm dev

# Admin UI
cd ../admin-ui
npx pnpm dev

Media Node

Op Linux (productie):

cd node/media-node
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o media-node ./cmd/media-node
sudo ./media-node install

CLI:

media-node install|register|run|scan|diagnostics|config|start|stop|restart|status|version

Productie

Zie:

cd deploy/docker
cp ../master/.env.example ../master/.env
docker compose up -d --build

Of in Dokploy: Compose-app met pad deploy/docker/docker-compose.dokploy.yml.

Stremio installeren

  1. Admin UI → Instellingen → addon token
  2. URL in Stremio:
    https://master.example.com/stremio/<token>/manifest.json

V1 features

  • Node enrollment + unieke credentials
  • WebSocket control channel + heartbeat + reconnect
  • Movies/Series scanner + library sync
  • Filename parsing + TMDB matching (optioneel)
  • Stremio catalogs / meta / streams
  • Playback sessions met idle + absolute expiry
  • HTTP Range streaming (direct play)
  • Offline node detectie + duplicate media
  • Admin: dashboard, nodes, library, streams, matching ignore/refresh
  • Rate limits, security headers, redacted token logs
  • Backup script + release build script

Tests

cd apps/master-api && npx pnpm test
cd node/media-node && go test ./...