- Registriert
- 18. Februar 2017
- Beiträge
- 2.002
- Lösungen
- 3
- Reaktionspunkte
- 1.997
- Punkte
- 2.120
IPTV Stalker Portal Manager
Der IPTV Stalker Portal Manager ist eine Webanwendung, mit der ihr mehrere Stalker-Portale zentral verwalten könnt.
Kurz gesagt:
- Portale und MAC-Pools verwalten
- MACs validieren und Kategorien abrufen
- TV/VOD/Serien-Playlists generieren
- Client-Stream-Anfragen über den kontrollierten MAC-Selector mit Q/B/R-Logik auflösen
- Jobs, Logs, Systemstatus, Proxy Logs, Stalker Diagnostics und PostgreSQL-Diagnosen überwachen
- Outbound-Proxys verwalten, testen und für Portal-Requests/Scanner/Playback verwenden
Installation mit Docker Compose
Für den Start werden zwei Dateien im Projektordner benötigt:
docker-compose.yml.envfür Image, UID/GID, PostgreSQL und Start-Token
Voraussetzungen
- Docker ist installiert
- Docker Compose ist verfügbar
- Ihr seid nicht als root angemeldet
1. Projektordner erstellen
Code:
mkdir portal-manager
cd portal-manager
2. UID und GID ermitteln
Die Werte werden später in der
.env eingetragen, damit Dateien im Docker-Volume mit dem richtigen Benutzer laufen.
Code:
id
Beispiel:
Code:
uid=1000(username) gid=1000(username)
3. docker-compose.yml erstellen
Code:
nano docker-compose.yml
Inhalt einfügen:
Code:
name: portal-manager
services:
postgres:
image: postgres:18-alpine
container_name: portal-manager-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-portal_manager}
POSTGRES_USER: ${POSTGRES_USER:-portal_manager}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-portal_manager_change_me}
volumes:
- portal_manager_postgres:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
interval: 10s
timeout: 5s
retries: 10
portal-manager:
image: ${IMAGE_REPO}:${IMAGE_TAG}
container_name: portal-manager
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "8000:17880"
env_file:
- ./.env
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ:-UTC}
DATABASE_URL: postgresql+psycopg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
volumes:
- portal_manager_data:/opt/app/backend/data
healthcheck:
test:
[
"CMD",
"python",
"-c",
"from urllib.request import urlopen; urlopen('http://127.0.0.1:17880/health', timeout=5).close(); urlopen('http://127.0.0.1:8000/', timeout=5).close()",
]
interval: 30s
timeout: 5s
start_period: 25s
retries: 3
volumes:
portal_manager_data:
portal_manager_postgres:
4. .env im Projektordner erstellen
Code:
nano .env
Anpassen:
PUIDundPGIDauf eure Werte ausidsetzenPOSTGRES_PASSWORDvor produktiver Nutzung ändern- Beim ersten Start den einmaligen Admin-Einrichtungscode aus den Container-Logs kopieren
Code:
# Docker image
IMAGE_REPO=teminvictus/spm
IMAGE_TAG=latest
# Host user/group for mounted data permissions
PUID=!!!ERSETZEN!!!
PGID=!!!ERSETZEN!!!
# Optional timezone
TZ=UTC
# PostgreSQL settings
POSTGRES_DB=portal_manager
POSTGRES_USER=portal_manager
POSTGRES_PASSWORD=!!!ERSETZEN!!!
# Required app startup setting.
# Muss exakt dem Release-Token entsprechen.
STARTUP_SECRET=M9v2Qk7rL4cX8nP1tF6bH3wZ5yD0sJ2uR7aN4eC9
# Startup logging: compact or verbose
STARTUP_LOG_MODE=compact
Hinweis: Bei einer leeren Datenbank erzeugt der Container einen einmaligen Einrichtungscode. Dieser wird nach erfolgreicher Admin-Erstellung ungültig.
5. Container starten
Code:
docker compose pull
docker compose up -d
Beim ersten Start werden die Images geladen, PostgreSQL gestartet und die Datenbank-Migrationen automatisch ausgeführt.
6. Status prüfen
Code:
docker ps
docker logs -f portal-manager
7. Webinterface öffnen
Im Browser öffnen:
Code:
http://<IP-Adresse>:8000
Beispiel lokal:
Code:
http://localhost:8000
Ersteinrichtung:
- Einrichtungscode aus
docker logs portal-managereingeben - Admin-Benutzername und Passwort im Webinterface festlegen
Nach dem ersten Login am besten direkt Settings öffnen und dort Portal-Defaults, Proxy-Selector, Proxy Base URL, Worker-Jobs und Cleanup/Wartung einstellen.
Optionale erweiterte Einstellungen
Die meisten Nutzer brauchen diese Werte nicht. Wenn ihr Session-, Cookie-, Maintenance- oder Worker-Werte bewusst überschreiben wollt, könnt ihr sie zusätzlich in dieselbe
.env eintragen.
Code:
# Optional external Postgres override.
# Docker Compose setzt DATABASE_URL automatisch.
# DATABASE_URL=postgresql+psycopg://portal_manager:!!!ERSETZEN!!!@postgres:5432/portal_manager
# Sessions
SESSION_TTL_MINUTES=720
SESSION_COOKIE_NAME=pm_session
SESSION_COOKIE_SECURE=false
SESSION_COOKIE_DOMAIN=
# Maintenance
MAINTENANCE_ENABLED=true
MAINTENANCE_INTERVAL_MINUTES=60
# Worker
WORKER_JOB_TIMEOUT_SECONDS=1800
WORKER_HEARTBEAT_INTERVAL_SECONDS=10
WORKER_HEARTBEAT_STALE_SECONDS=30
Nützliche Befehle
Logs anzeigen:
Code:
docker logs -f portal-manager
Update auf das aktuell konfigurierte Image:
Code:
docker compose pull
docker compose up -d
Stoppen:
Code:
docker compose down
Stoppen inklusive Datenbank-Volumes:
Code:
docker compose down -v
Achtung:
docker compose down -v löscht die persistenten Docker-Volumes, inklusive PostgreSQL-Datenbank.
Zuletzt bearbeitet:
