Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Moonlight web stream

De Le Wiki de Lug
Version datée du 15 juin 2026 à 10:14 par Admin (discussion | contributions) (Exemple docker compose)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

Source github

Installation version Docker

Source

# mkdir /opt/moonlightwebstream

On crée également le répertoire de données server avec les droits nécessaires au conteneur :

# mkdir /opt/moonlightwebstream/server
# chown -R 999:999 /opt/moonlightwebstream/server
# cd /opt/moonlightwebstream
# vi docker-compose.yml
 services:
  moonlight-web:
    image: mrcreativ3001/moonlight-web-stream:latest
    container_name: moonlight-web
    restart: unless-stopped
    ports:
      - "8080:8080"
      - "40000-40100:40000-40100/udp"
    environment:
      - WEBRTC_NAT_1TO1_HOST=192.168.1.123 # pour webrtc ip accessible depuis le routeur ou machine local
      - WEBRTC_PORT_RANGE=40000:40100
    volumes:
      - /opt/moonlightwebstream/server:/moonlight-web/server
# docker compose up -d

Configuration

Il est possible de forcer le mode de transport utilisé par Moonlight Web Stream :

  • WebSocket : utilise la connexion HTTPS/WebSocket. Ce mode est plus simple à faire passer derrière un reverse proxy, mais il peut être moins performant et plus sensible à la latence TCP.
  • WebRTC : utilise un transport temps réel, généralement en UDP. Ce mode est normalement plus performant et offre une latence plus faible, mais nécessite que les ports UDP du service soient accessibles. Par défaut, la plage utilisée est 40000-40100/udp.

Le fichier de configuration se trouve ici :

# vi /opt/moonlightwebstream/server/config.json

Authentification

Lors de la première connexion, il faut saisir un nom d’utilisateur et un mot de passe. Un compte administrateur est alors créé automatiquement.

Ensuite, l’interface permet de créer des comptes utilisateurs et des rôles. Les fonctions restent assez limitées, mais il est possible de définir une configuration par défaut, d’interdire certains protocoles ou encore d’empêcher l’inscription de nouvelles instances Sunshine.

Configuration multi instances

Exemple docker compose

services:
  moonlight-web:
    image: mrcreativ3001/moonlight-web-stream:latest
    container_name: moonlight-web
    restart: unless-stopped
    ports:
      - "8090:8080"
      - "40000-40100:40000-40100/udp"
    environment:
      - WEBRTC_NAT_1TO1_HOST=192.168.1.123
      - WEBRTC_PORT_RANGE=40000:40100
    volumes:
      - /opt/moonlightwebstream/server:/moonlight-web/server

  moonlight-web-2:
    image: mrcreativ3001/moonlight-web-stream:latest
    container_name: moonlight-web-2
    restart: unless-stopped
    ports:
      - "8091:8080"
      - "40101-40201:40101-40201/udp"
    environment:
      - WEBRTC_NAT_1TO1_HOST=192.168.1.123
      - WEBRTC_PORT_RANGE=40101:40201
    volumes:
      - /opt/moonlightwebstream/server2:/moonlight-web/server

  moonlight-web-3:
    image: mrcreativ3001/moonlight-web-stream:latest
    container_name: moonlight-web-3
    restart: unless-stopped
    ports:
      - "8092:8080"
      - "40202-40302:40202-40302/udp"
    environment:
      - WEBRTC_NAT_1TO1_HOST=192.168.1.123
      - WEBRTC_PORT_RANGE=40202:40302
    volumes:
      - /opt/moonlightwebstream/server3:/moonlight-web/server

  moonlight-web-4:
    image: mrcreativ3001/moonlight-web-stream:latest
    container_name: moonlight-web-4
    restart: unless-stopped
    ports:
      - "8093:8080"
      - "40303-40403:40303-40403/udp"
    environment:
      - WEBRTC_NAT_1TO1_HOST=192.168.1.123
      - WEBRTC_PORT_RANGE=40303:40403
    volumes:
      - /opt/moonlightwebstream/server4:/moonlight-web/server

Fichier de configuration

On édite le fichier de configuration. Exemple avec l’instance numéro 2 :

# vi /opt/moonlightwebstream/server2/config.json

On modifie la plage de ports utilisée par WebRTC si nécessaire. Cette valeur est normalement définie automatiquement par la variable d’environnement du conteneur :

...
    "port_range": {
      "min": 40101,
      "max": 40201
    },
...

On change ensuite le nom de l’instance utilisé pour l’appairage :

...
    "pair_device_name": "roth2"
...

On peut ensuite redémarrer le conteneur avant l’appairage :

# docker restart moonlight-web-2

vhost

server {
    listen 443 ssl;
    server_name moonlight.tondomaine.com;

    ssl_certificate /etc/letsencrypt/live/moonlight.tondomaine.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/moonlight.tondomaine.com/privkey.pem;

    location / {
        proxy_pass http://192.168.1.123:8090;

        proxy_http_version 1.1;

        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 https;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_buffering off;
        proxy_request_buffering off;

        proxy_read_timeout 86400;
        proxy_send_timeout 86400;
    }
}