No description
Find a file
Jos Vooges | STH f1b6923287 Fix stream progress to use bytes sent instead of range offset probes.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-29 01:45:50 +02:00
apps Fix stream progress to use bytes sent instead of range offset probes. 2026-08-29 01:45:50 +02:00
deploy Dedupe live streams to one row per viewer and ignore probe sessions. 2026-08-29 01:35:20 +02:00
docs Add Synology media-node install script for multi-NAS enrollments. 2026-08-26 04:25:23 +02:00
node/media-node Dedupe live streams to one row per viewer and ignore probe sessions. 2026-08-29 01:35:20 +02:00
packages Add Plex-like live streams with viewer labels and progress, plus admin UI redesign. 2026-08-29 01:24:55 +02:00
.gitignore Initial commit: Distributed Stremio Media Cluster V1 2026-08-25 00:17:04 +02:00
package.json Initial commit: Distributed Stremio Media Cluster V1 2026-08-25 00:17:04 +02:00
pnpm-lock.yaml Initial commit: Distributed Stremio Media Cluster V1 2026-08-25 00:17:04 +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 ./...