Parse Plex-style Title (Year) and Show/Season folders; restore notWebReady with direct node stream URLs; hide unavailable titles by default. Co-authored-by: Cursor <cursoragent@cursor.com>
5 KiB
Master deployen met Dokploy
Ja — Dokploy is een uitstekende optie voor de Master. De Media Nodes blijven losse Go-binaries op andere servers (niet in Dokploy).
Dokploy (Master stack)
├── master-api
├── admin-ui
├── postgres
└── redis
Media Nodes (apart, systemd)
└── media-node binary → outbound WSS naar Master
Wat Dokploy wel / niet doet
| Onderdeel | Dokploy? |
|---|---|
| Master API + Admin UI + Postgres + Redis | Ja |
| HTTPS / domeinen (Traefik) | Ja (aanbevolen) |
| Media Nodes | Nee — aparte servers |
| Stremio zelf | Nee — client-app |
Als je al Nginx Proxy Manager voor Master wilt blijven gebruiken: laat Dokploy de containers draaien zonder publiek domein, en proxy NPM naar de host-poorten. Meestal is Dokploy Traefik eenvoudiger voor de Master.
Voorbereiding
- Zet deze repo op GitHub/GitLab/Gitea (privé mag).
- Zorg dat Dokploy bij die repo kan (deploy key / token).
- Genereer secrets:
openssl rand -base64 48 # SESSION_SECRET
openssl rand -base64 24 # POSTGRES_PASSWORD
Stappen in Dokploy
1. Nieuwe Compose-app
- Project → Create Service → Compose
- Source: Git repository
- Compose path:
deploy/docker/docker-compose.dokploy.yml - Branch:
main(of jouw branch)
2. Environment variables
Tab Environment — plak en vul in (zie ook deploy/dokploy/.env.example):
NODE_ENV=production
POSTGRES_USER=media
POSTGRES_PASSWORD=<sterk-wachtwoord>
POSTGRES_DB=media_cluster
DATABASE_URL=postgresql://media:<sterk-wachtwoord>@postgres:5432/media_cluster
REDIS_URL=redis://redis:6379
SESSION_SECRET=<min-32-chars>
ADMIN_EMAIL=admin@jouwdomein.nl
ADMIN_PASSWORD=<sterk-wachtwoord>
PUBLIC_URL=https://master.jouwdomein.nl
TMDB_API_KEY=
PLAYBACK_IDLE_TIMEOUT_SECONDS=1200
PLAYBACK_ABSOLUTE_LIFETIME_SECONDS=43200
NODE_HEARTBEAT_INTERVAL_SECONDS=30
NODE_OFFLINE_THRESHOLD_SECONDS=90
HIDE_UNAVAILABLE_TITLES=true
Belangrijk: DATABASE_URL wachtwoord moet exact gelijk zijn aan POSTGRES_PASSWORD.
3. Domeinen — bij jou via Nginx Proxy Manager
Zet géén domein in Dokploy als NPM al HTTPS doet.
Dokploy publiceert (host-poorten gekozen om conflict met Dokploy UI :3000 te vermijden):
| Service | Host-poort | Container-poort |
|---|---|---|
master-api |
3100 |
3000 |
admin-ui |
3101 |
3000 |
In Nginx Proxy Manager maak je 2 Proxy Hosts:
Master API
| Veld | Waarde |
|---|---|
| Domain | master.jouwdomein.nl |
| Scheme | http |
| Forward Hostname/IP | LAN-IP van de Dokploy-server |
| Forward Port | 3100 |
| Websockets Support | Aan |
| SSL | Let's Encrypt + Force SSL |
Advanced (aanbevolen):
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400s;
Admin UI
| Veld | Waarde |
|---|---|
| Domain | admin.jouwdomein.nl |
| Scheme | http |
| Forward Hostname/IP | LAN-IP van de Dokploy-server |
| Forward Port | 3101 |
| SSL | Let's Encrypt + Force SSL |
DNS A/AAAA van beide domeinen → publiek IP waar NPM op luistert (poort 443).
PUBLIC_URL in de env moet https://master.jouwdomein.nl zijn (het NPM-domein).
4. Deploy
Klik Deploy. Eerste build kan enkele minuten duren (TypeScript + Next.js).
Controleer:
https://master.jouwdomein.nl/health
→ {"status":"ok","service":"master-api",...}
Login Admin UI:
https://admin.jouwdomein.nl
Admin UI → API
De Admin UI praat via server-side rewrites naar http://master-api:3000 (Docker-netwerk).
Browsers roepen alleen /api/... op het admin-domein aan — dat is correct.
Na succesvolle deploy
- Admin UI → Instellingen → Stremio addon token genereren
- Admin UI → Nodes → token + Kopieer install-commando (Unraid: één curl|bash)
- Op Unraid: zie unraid-node.md. Op Linux:
sudo media-node installmet
Master URL =https://master.jouwdomein.nl
Alternatief: Dokploy + jouw NPM
Als Master achter NPM moet blijven:
- In Dokploy: expose
master-apials host-poort3000enadmin-uials3001(pas compose aan metports:). - In NPM:
master.…→http://dokploy-host:3000(Websockets aan)admin.…→http://dokploy-host:3001
Troubleshooting
| Probleem | Oplossing |
|---|---|
| Build faalt (context) | Compose path moet deploy/docker/docker-compose.dokploy.yml zijn; context is repo-root |
| Env leeg in container | Variables in Dokploy UI + env_file: .env (staat al in de compose) |
| Node kan niet verbinden | Domein op master-api, WebSockets enabled, PUBLIC_URL HTTPS |
| Admin login faalt | Check ADMIN_EMAIL / ADMIN_PASSWORD; herdeploy na env-wijziging |
| DB auth error | DATABASE_URL password ≠ POSTGRES_PASSWORD |
Volume / backups
Postgres data staat in Docker volume postgres_data.
Backup periodiek (Dokploy volume backup of pg_dump via deploy/master/backup.sh).