diff --git a/build b/build index e4af0d0d..74cfabe6 100755 --- a/build +++ b/build @@ -323,6 +323,6 @@ docker run --rm -i \ -e "RUNTIME_DOCKERFILE=$RUNTIME_DOCKERFILE" \ --workdir /src \ --entrypoint go \ - golang:1.24-trixie \ + golang:1.25-trixie \ run utils/docker/main.go \ -i Dockerfile.tmpl -client "$CLIENT_DIST" | build_image $BASE_IMAGE -f - . diff --git a/docker-compose.yaml b/docker-compose.yaml index c8f81530..c7b49fbe 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,14 +1,86 @@ +networks: + neko_net: + driver: bridge + services: neko: - image: "ghcr.io/m1k1o/neko/firefox:latest" - restart: "unless-stopped" - shm_size: "2gb" + 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: - - "8080:8080" - - "52000-52100:52000-52100/udp" + - "80:8080" # Web interface + - "52000-52100:52000-52100/udp" # WebRTC environment: - NEKO_DESKTOP_SCREEN: 1920x1080@30 - NEKO_MEMBER_MULTIUSER_USER_PASSWORD: neko - NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: admin - NEKO_WEBRTC_EPR: 52000-52100 - NEKO_WEBRTC_ICELITE: 1 + 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" \ No newline at end of file diff --git a/server/Dockerfile b/server/Dockerfile index 2b2fe8e0..1f7d5b44 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=golang:1.24-trixie +ARG BASE_IMAGE=golang:1.25-trixie FROM $BASE_IMAGE AS server WORKDIR /src diff --git a/server/go.mod b/server/go.mod index 2b74dd7d..b63ede4d 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,8 +1,6 @@ module github.com/m1k1o/neko/server -go 1.24.0 - -toolchain go1.24.5 +go 1.25.0 require ( github.com/PaesslerAG/gval v1.2.4 diff --git a/utils/docker/go.mod b/utils/docker/go.mod index 62bde8c0..4d58bc14 100644 --- a/utils/docker/go.mod +++ b/utils/docker/go.mod @@ -1,3 +1,3 @@ module github.com/m1k1o/neko/utils/docker -go 1.24.1 +go 1.25.1