Files
neko/docker-compose.yaml
T
2026-04-08 14:59:31 +02:00

86 lines
2.9 KiB
YAML

networks:
neko_net:
driver: bridge
services:
neko:
image: ghcr.io/m1k1o/neko/intel-firefox:latest
container_name: neko
restart: unless-stopped
shm_size: 4gb
cap_add:
- SYS_ADMIN
devices:
- /dev/dri:/dev/dri
networks:
- neko_net
ports:
- "80:8080" # Web interface
- "52000-52100:52000-52100/udp" # WebRTC
environment:
TZ: "Europe/Berlin"
NEKO_HWENC: "none"
NEKO_SERVER_PROXY: "true"
# ---- WebRTC ----
NEKO_WEBRTC_NAT1TO1: 10.220.1.238
NEKO_WEBRTC_EPR: "52000-52100"
NEKO_WEBRTC_ICELITE: "true"
# ---- Desktop ----
NEKO_DESKTOP_SCREEN: "1920x1080@30"
# ---- Auth ----
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: "changeMe"
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: "changeMe"
NEKO_SESSION_CONTROL_PROTECTION: "true"
# ---- Capture pipelines ----
NEKO_CAPTURE_VIDEO_CODEC: "h264"
NEKO_CAPTURE_BROADCAST_URL: "placeholder" # No need to chance this line, it's handled by NEKO_CAPTURE_BROADCAST_PIPELINE. It's only needed to be filled so it's possible to start the Broadcast
NEKO_CAPTURE_BROADCAST_AUTOSTART: "false"
NEKO_CAPTURE_BROADCAST_PIPELINE: >
ximagesrc display-name={display} show-pointer=true use-damage=false !
queue !
videoconvert ! videorate ! videoscale !
video/x-raw,width=1920,height=1080,framerate=25/1 !
x264enc speed-preset=ultrafast tune=zerolatency !
h264parse !
queue !
mux.video
pulsesrc device=audio_output.monitor !
queue !
audioconvert ! audioresample !
audio/x-raw,channels=2 !
voaacenc bitrate=320000 !
aacparse !
queue !
mux.audio
hlssink2
name=mux
max-files=5
playlist-length=5
target-duration=1
location=/var/www/live/segment-%d.ts
playlist-location=/var/www/live/index.m3u8
mediamtx:
image: bluenviron/mediamtx:latest-ffmpeg
container_name: mediamtx
restart: unless-stopped
networks:
- neko_net
ports:
- "8554:8554" # RTSP output e.g. rtsp://server-ip:8555/live (RTSP playback doesn't work for Standalone Headsets, only for PC)
- "8888:8888" # HLS output e.g. http://server-ip:8889/live/index.m3u8, https://domain.tld/live/index.m3u8
environment:
MEDIAMTX_RTSPTRANSPORTS: "tcp"
# Audio encoder (force stereo)
MTX_PATHS_LIVE_HLS_AUDIO_ENCODER: "aac"
MTX_PATHS_LIVE_HLS_AUDIO_ENCODER_ARGS: "audio_bitrate=320k,channels=2"
# ---- Optimized STANDARD HLS (NOT LL-HLS) ----
MTX_HLSMODE: "muxer"
MTX_HLSVARIANT: "mpegts"
MTX_HLSALWAYSREMUX: "yes"
MTX_HLSSEGMENTDURATION: "1s" # 1 second segments
MTX_HLSSEGMENTCOUNT: "4" # ~4s real latency
# ---- Neko Broadcast Source ----
MTX_PATHS_LIVE_SOURCE: "udp://mediamtx:1234?pkt_size=1316"