Allow 48h catch-up instead of rejecting ended events, and fetch keys via bootstrap PSSH when the live MPD has none. |
||
|---|---|---|
| apps | ||
| deploy | ||
| docs | ||
| node/media-node | ||
| packages | ||
| .gitignore | ||
| GOOGLE_PLAY_ACCESS_SETUP.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
Vonas Media Cluster (VMC)
Private media software for your own movies and TV shows — comparable to Emby or Plex.
You host the library on your NAS, home server, or VPS. Native apps (Android TV, Android, iOS, and more) connect to your instance. You keep the files; VMC provides the catalog, accounts, and playback.
This repository is the self-host / server stack and related client apps. Store apps are meant to connect to a server you control (or one provided for your household).
What it is
- Master — API, admin console, viewer accounts, library metadata, playback sessions
- Media nodes — scan local storage and serve video directly to clients (no VPN/SMB between sites required)
- Apps — lean clients for TV and mobile that talk to your Master URL
Typical use: family or personal library you already own, organized once, watched on the couch or on the go.
Architecture (high level)
VMC apps ──HTTPS──► Master (catalog, accounts, play sessions)
▲
│ control channel
Media nodes
│
VMC apps ◄──HTTPS video───┘ (via your reverse proxy / HTTPS)
Design goals:
- Direct play from the node that holds the file
- No public raw filesystem paths
- Server-side playback sessions
- Optional TMDB metadata for posters and details
Repository layout
apps/master-api/ Master API
apps/admin-ui/ Admin console
apps/android-tv/ Android TV + Android phone apps
apps/ios/ iOS app
apps/tizen-tv/ Samsung Tizen client
node/media-node/ Go media node
packages/ Shared types / protocol
deploy/docker/ Docker Compose for Master
deploy/node/ Node installer + systemd
docs/ Deployment guides
Quick start (development)
npx pnpm install
# Postgres + Redis
cd deploy/docker
docker compose up -d postgres redis
# Master
cd ../../apps/master-api
cp .env.example .env
npx prisma migrate deploy
npx pnpm db:seed
npx pnpm dev
# Admin UI
cd ../admin-ui
npx pnpm dev
- API: http://localhost:3000
- Admin: http://localhost:3001
- Default seed login: see
.env/ seed output (ADMIN_EMAIL/ADMIN_PASSWORD)
Production
See:
- docs/deployment.md
- docs/dokploy.md — Master on Dokploy (recommended)
- docs/npm-setup.md
cd deploy/docker
cp ../master/.env.example ../master/.env
# Set SESSION_SECRET, ADMIN_*, PUBLIC_URL, database passwords
docker compose up -d --build
Or in Dokploy: Compose app with deploy/docker/docker-compose.dokploy.yml.
Public self-host overview (when enabled on your Master): /install on the admin/site host.
Media node
On Linux:
cd node/media-node
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o media-node ./cmd/media-node
sudo ./media-node install
CLI: install | register | run | scan | diagnostics | config | start | stop | restart | status | version
Apps
Point each app at your Master base URL (for example https://media.example.com), sign in with a viewer account, and pick a profile.
| Client | Location |
|---|---|
| Android TV | apps/android-tv (TV module) |
| Android phone | apps/android-tv (mobile module) |
| iOS | apps/ios |
| Tizen | apps/tizen-tv |
Features (overview)
- Multi-node library scan and sync
- Movies / series matching and admin tools
- Viewer accounts, profiles, device linking
- Direct play with HTTP Range
- Optional live TV (IPTV) when configured for a viewer
- Admin: nodes, library, users, settings
Tests
cd apps/master-api && npx pnpm test
cd node/media-node && go test ./...
Privacy & intent
VMC is built for personal / household libraries under your control. Operators are responsible for using only content they are entitled to store and stream. See the in-app / site privacy policy where published.