Browse documentation
DocsRun your server

Remote access

Put the media server behind a trusted HTTPS proxy.

Use the supported HTTPS setup

This guide exposes your media server. Use your own subdomain, such as media.example.com. The public Lumina website is a separate container.

  1. Point your media hostname at the server. Allow inbound TCP 80 and 443 for the bundled Caddy example.
  2. Download the matching release proxy configuration:
shell
curl -fsSLO https://github.com/shiftedx/lumina/releases/download/v0.4.0/docker-compose.https.example.yml
mkdir -p docker
curl -fsSL https://github.com/shiftedx/lumina/raw/v0.4.0/docker/Caddyfile.example -o docker/Caddyfile.example

Add LUMINA_HOSTNAME=media.example.com to .env, then start:

shell
docker compose -f docker-compose.yml -f docker-compose.https.example.yml up -d --no-build

Open https://media.example.com. Keep the Caddy data and config volumes for certificates.

Bring your own proxy

SettingRequired value
LUMINA_APP_PUBLIC_URLhttps://media.example.com
LUMINA_FRONTEND_PUBLIC_URLExactly the same origin.
LUMINA_ALLOWED_ORIGINSExactly the same origin; no wildcards.
LUMINA_SESSION_COOKIE_SECUREtrue
LUMINA_TRUSTED_PROXY_IPSThe single proxy’s fixed private IPv4 address as /32.

The proxy must overwrite X-Forwarded-Proto, preserve the public host, and be the immediate trusted peer. Follow the full proxy contract; arbitrary proxy chains are unsupported.

Keep media delivery direct

Disable CDN caching and response buffering for authenticated media. Give long streams appropriate timeouts. Check your tunnel provider’s current service terms and streaming limits before routing a media server through it.

Applies to Lumina 0.4.0. Source: operator guide

Find your next step.

Type to search all documentation.