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
 
(9 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[https://github.com/MrCreativ3001/moonlight-web-stream Source github]
[https://github.com/MrCreativ3001/moonlight-web-stream Source github]
= Installation version Docker =
== Installation version Docker ==
[https://github.com/MrCreativ3001/moonlight-web-stream/blob/master/docker/README.md Source]
[https://github.com/MrCreativ3001/moonlight-web-stream/blob/master/docker/README.md Source]
  # mkdir /opt/moonlightwebstream
  # mkdir /opt/moonlightwebstream
On crée également le répertoire de données <code>server</code > avec les droits nécessaires au conteneur :
# mkdir /opt/moonlightwebstream/server
# chown -R 999:999 /opt/moonlightwebstream/server
  # cd /opt/moonlightwebstream
  # cd /opt/moonlightwebstream
  # vi docker-compose.yml
  # vi docker-compose.yml
Ligne 16 : Ligne 20 :
     environment:
     environment:
       - WEBRTC_NAT_1TO1_HOST=<font color = blue>192.168.1.123</font> # pour webrtc ip accessible depuis le routeur ou machine local
       - WEBRTC_NAT_1TO1_HOST=<font color = blue>192.168.1.123</font> # pour webrtc ip accessible depuis le routeur ou machine local
      - WEBRTC_PORT_RANGE=<font color = green>40000:40100</font>
     volumes:
     volumes:
       - /opt/moonlightwebstream/server:/moonlight-web/server
       - /opt/moonlightwebstream/server:/moonlight-web/server
Ligne 21 : Ligne 26 :
  # docker compose up -d
  # docker compose up -d


= 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 :
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=<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
{{Méta bandeau
  | niveau = grave
  | icône = loupe
   | texte  = Pour utiliser WebRTC, toute la plage de ports UDP configurée doit être redirigée vers le serveur.
}}
==== 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 :
 
<font color="grey">...</font>
    "port_range": {
      "min": <font color="blue">40101</font>,
      "max": <font color="blue">40201</font>
    },
<font color="grey">...</font>
 
On change ensuite le nom de l’instance utilisé pour l’appairage :
 
<font color="grey">...</font>
    "pair_device_name": "<font color="blue">roth2</font>"
<font color="grey">...</font>
 
On peut ensuite redémarrer le conteneur avant l’appairage :


    "default_settings": {
# docker restart moonlight-web-2
        // 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"
    }


= vhost =
== vhost ==
  server {
  server {
     listen 443 ssl;
     listen 443 ssl;

Dernière version du 15 juin 2026 à 10:14

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