Moonlight web stream
De Le Wiki de Lug
Autres actions
Installation version Docker
# 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=40303:40403
volumes:
- /opt/moonlightwebstream/server:/moonlight-web/server
# docker compose up -d
Configuration
# vi /opt/moonlightwebstream/server/config.json
Auhtentification
Au minimum renseigner les champs suivant :
...
"username": "un_utilisateur",
"credential": "un_mot_de_passe"
...
Paramètres forcés
Exemple avec une configuration retrogaming en 720p :
remplacer à la fin :
"default_settings": null
Par :
"default_settings": {
// 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 :
...
// possible values: "auto", "webrtc", "websocket"
"dataTransport": "webrtc",
...
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;
}
}