Auch verfügbar in: 🇩🇪 Deutsch

Configuration

Inhalt

🇩🇪 Deutsche Version


ITSWEBER Play is configured entirely via environment variables. In the all-in-one container, most services are pre-wired internally — only two variables are required to get a running instance.


All-in-One Quick Note

In the AIO container (ghcr.io/itsweber-official/itsweber-play:main), Postgres, Redis, and MinIO all run internally and are auto-configured. You do not need to set database, Redis, or S3 variables for a standard deployment.

Minimum required configuration:

BASE_URL=https://play.example.com
INITIAL_ADMIN_EMAIL=admin@example.com

Everything else has sensible defaults.


Environment Variables

Required

Variable Required Default Description
BASE_URL Yes Public URL of the instance, including scheme and no trailing slash. Example: https://play.example.com. Used for signed URLs, CORS, and email links.
INITIAL_ADMIN_EMAIL Yes Email address that will be auto-promoted to Admin on first signup. Only fires once.

Optional — Instance

Variable Required Default Description
INSTANCE_NAME No ITSWEBER Play Name displayed in the UI header and page titles
REGISTRATION_ENABLED No true Set to false to disable new user registrations (invite-only mode)
MAX_UPLOAD_SIZE_MB No 5120 Maximum file size for video uploads in MB. Default is 5 GB. Also controls Nginx client_max_body_size.

Optional — Database

Auto-configured in the all-in-one container. Set these only when using an external Postgres instance.

Variable Required Default Description
DATABASE_URL No (AIO: auto) auto Postgres connection string. Example: postgresql://user:pass@host:5432/play
REDIS_URL No (AIO: auto) auto Redis connection string. Example: redis://host:6379

Optional — S3 / MinIO

Auto-configured in the all-in-one container. Set these to use an external MinIO instance or any S3-compatible storage.

Variable Required Default Description
MINIO_ENDPOINT No (AIO: auto) auto S3 endpoint URL. Example: https://s3.example.com
MINIO_ACCESS_KEY No (AIO: auto) auto S3 access key ID
MINIO_SECRET_KEY No (AIO: auto) auto S3 secret access key
MINIO_BUCKET_PREFIX No play Prefix for bucket names (play-raw, play-videos, play-thumbs, play-assets)
MINIO_PUBLIC_URL No BASE_URL/s3 Public base URL for MinIO assets. Defaults to proxying through Nginx.

Optional — Email (SMTP)

Email is optional. Without it, no notification emails are sent (welcome, password reset, report resolution).

Variable Required Default Description
SMTP_HOST No SMTP server hostname. Example: smtp.postmarkapp.com
SMTP_PORT No 587 SMTP port. Use 465 for SSL, 587 for STARTTLS
SMTP_USER No SMTP username / login
SMTP_PASS No SMTP password
SMTP_FROM No From address for outbound emails. Example: noreply@play.example.com
SMTP_SECURE No false Set to true to use TLS from the start (port 465). Leave false for STARTTLS.

Optional — Branding

Variable Required Default Description
NEXT_PUBLIC_INSTANCE_NAME No ITSWEBER Play Instance name exposed to the Next.js frontend (used in meta tags and OG data)
NEXT_PUBLIC_BASE_URL No Same as BASE_URL Public base URL for the frontend. Set if your frontend and API are on different origins.

Production Checklist

Before going live, verify the following:

  • BASE_URL is set to the exact public URL (including https://) — wrong values break signed playback URLs and CORS
  • INITIAL_ADMIN_EMAIL is set before the first signup
  • A persistent data volume is mounted at /data — without this, all data is lost on container restart
  • Port 3000 is accessible or proxied (Unraid: set Network Type to bridge, map Host Port 3000)
  • If using a reverse proxy (Nginx, Traefik, Caddy): proxy to port 3000, set proxy_set_header X-Forwarded-Proto https
  • SMTP is configured if you want password-reset emails
  • MAX_UPLOAD_SIZE_MB is set to at least as large as your intended max video file size
  • Review the legal pages at /impressum, /datenschutz, and /agb — fill them in at /admin/legal

Example docker-compose (Non-Unraid)

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
      INSTANCE_NAME: My Video Platform
      MAX_UPLOAD_SIZE_MB: 10240

volumes:
  play-data:

© Benjamin Weber · ITSWEBER — play.itsweber.net · GitHub