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 » : différence entre les versions

De Le Wiki de Lug
Ligne 27 : Ligne 27 :


== Configuration ==
== 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
  # vi /opt/moonlightwebstream/server/config.json
=== Auhtentification ===
Au minimum renseigner les champs suivant :
        <font color = grey>...</font>
        "username": "<font color = blue>un_utilisateur</font>",
        "credential": "<font color = blue>un_mot_de_passe</font>"
        <font color = grey>...</font>
=== Paramètres forcés ===
Exemple avec une configuration retrogaming en 720p :


remplacer à la fin :
=== Authentification ===
  "default_settings": null
Par :


    "default_settings": {
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.
        // possible values: "left", "right", "up", "down"
        "sidebarEdge": "left",
        "bitrate": 10000,
        "packetSize": 2048,
        "fps": 60,
        "videoFrameQueueSize": 3,
        // possible values: "720p", "1080p", "1440p", "4k", "native", "custom"
        "videoSize": "720p",
        // only works if videoSize=custom
        //"videoSizeCustom": {
        //    "width": 1920,
        //    "height": 1080
        //},
        // possible values: "h264", "h265", "av1", "auto"
        "videoCodec": "h265",
        "forceVideoElementRenderer": false,
        "canvasRenderer": false,
        "playAudioLocal": true,
        "audioSampleQueueSize": 20,
        // possible values: "highres", "normal"
        "mouseScrollMode": "highres",
        "controllerConfig": {
            "invertAB": false,
            "invertXY": false,
            // possible values: null or a number, example: 60, 120
            "sendIntervalOverride": null
        },
        // possible values: "auto", "webrtc", "websocket"
        "dataTransport": "auto",
        "toggleFullscreenWithKeybind": false,
        // possible values: "standard", "old"
        "pageStyle": "standard"
    }
==== Mode de connexion ====
Il est possible de forcer le mode de transport utilisé par Moonlight Web Stream :
* '''WebSocket''' : utilise la connexion HTTPS/WebSocket, plus simple à faire passer derrière un reverse proxy, mais potentiellement moins performant et plus sensible à la latence TCP.
* '''WebRTC''' : utilise un transport temps réel, généralement en UDP, plus performant et avec moins de latence, mais nécessite que les ports UDP du service soient accessibles. ( Par défaut, la plage utilisée est 40000-40100/udp )


  Exemple :
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.
<font color = grey>...</font>
=== Configuration multi instances ===
  // possible values: "auto", "webrtc", "websocket"
==== Exemple docker compose ====
          "dataTransport": "<font color = blue>webrtc</font>",
  services:
<font color = grey>...</font>
  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=<font color = blue>192.168.1.123</font>
      - 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=<font color = blue>192.168.1.123</font>
      - 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=<font color = blue>192.168.1.123</font>
      - 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=<font color = blue>192.168.1.123</font>
      - WEBRTC_PORT_RANGE=40303:40403
    volumes:
      - /opt/moonlightwebstream/server4:/moonlight-web/server


== vhost ==
== vhost ==

Version du 15 juin 2026 à 10:02

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

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