No description
Find a file
Jos Vooges | STH 826e95aaab Fix Recent sorting with stable discoveredAt on media files.
Backfill from file mtime and set discoveredAt on first index (and size changes) so new titles rise to the top instead of bulk-import path order (W/Z).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 01:00:18 +02:00
apps Fix Recent sorting with stable discoveredAt on media files. 2026-09-05 01:00:18 +02:00
deploy Add one-click remote node upgrade via WebSocket (v1.3.3). 2026-09-02 03:08:36 +02:00
docs Add one-click remote node upgrade via WebSocket (v1.3.3). 2026-09-02 03:08:36 +02:00
node/media-node Add one-click remote node upgrade via WebSocket (v1.3.3). 2026-09-02 03:08:36 +02:00
packages Add one-click remote node upgrade via WebSocket (v1.3.3). 2026-09-02 03:08:36 +02:00
.gitignore Make VMC icon and TV banner high-contrast red for Shield. 2026-08-31 23:14:28 +02:00
GOOGLE_PLAY_ACCESS_SETUP.md Move Google Play credentials into admin Settings UI. 2026-09-01 03:10:59 +02:00
package.json Initial commit: Distributed Stremio Media Cluster V1 2026-08-25 00:17:04 +02:00
pnpm-lock.yaml Restore missing fastify dependency removed when adding Google auth. 2026-09-01 03:13:44 +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 ./...