Auch verfügbar in: 🇬🇧 English

Docker-Installation

Inhalt

🇬🇧 English Version


docker-compose.yml

Eine Datei docker-compose.yml mit folgendem Inhalt anlegen:

services:
  play:
    image: ghcr.io/itsweber-official/itsweber-play:main
    container_name: itsweber-play
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - play-data:/data
    environment:
      BASE_URL: "https://play.example.com"
      INITIAL_ADMIN_EMAIL: "admin@example.com"

volumes:
  play-data:

BASE_URL durch die eigene öffentliche URL ersetzen und INITIAL_ADMIN_EMAIL mit der tatsächlichen E-Mail-Adresse belegen. Weitere Umgebungsvariablen (SMTP, S3-Overrides usw.) sind unter Konfiguration beschrieben.


Starten

docker compose up -d

Der Container startet alle internen Services via s6-overlay. Beim ersten Start 20–30 Sekunden einplanen, während Postgres initialisiert und Prisma-Migrationen durchlaufen.


Logs

docker compose logs -f play

Um einen bestimmten internen Service zu inspizieren:

docker compose exec play s6-log /run/service/api

Stoppen / Entfernen


docker compose down


docker compose down -v

Reverse-Proxy-Konfigurationen

HTTPS ist für den Produktionsbetrieb erforderlich. ITSWEBER Play auf Port 3000 betreiben und die TLS-Terminierung am Reverse Proxy vornehmen.

Nginx

server {
    listen 443 ssl;
    server_name play.example.com;

    ssl_certificate     /etc/letsencrypt/live/play.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/play.example.com/privkey.pem;

    client_max_body_size 0;  # Grosse Video-Uploads zulassen

    location / {
        proxy_pass         http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
    }
}

Traefik

Diese Labels dem play-Service in der Compose-Datei hinzufügen:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.play.rule=Host(`play.example.com`)"
  - "traefik.http.routers.play.entrypoints=websecure"
  - "traefik.http.routers.play.tls.certresolver=letsencrypt"
  - "traefik.http.services.play.loadbalancer.server.port=3000"

Bei Verwendung von Traefik das ports-Mapping aus der Compose-Datei entfernen.

Caddy

play.example.com {
    reverse_proxy localhost:3000 {
        header_up X-Forwarded-Proto {scheme}
    }
}

Caddy regelt HTTPS automatisch über Let's Encrypt.


HTTPS

HTTPS wird für jeden Produktionsbetrieb dringend empfohlen:

  • Browser-Upload-APIs (fetch mit ReadableStream) erfordern einen sicheren Kontext.
  • Session-Cookies mit SameSite=Lax verhalten sich nur über HTTPS korrekt.
  • Die HLS-Stream-Signierung setzt voraus, dass BASE_URL das Schema https verwendet.

BASE_URL auf die https://-URL setzen und den Container nach der TLS-Konfiguration am Reverse Proxy neu starten.


Updates

docker compose pull
docker compose up -d

Der Container führt Prisma-Migrationen beim Start automatisch aus. Manuelle Datenbankschritte zwischen Versionen sind nicht erforderlich.