解决neko 通过docker部署时无法登录,undeclaredMediaProcessor错误、disconnected Error peer disconnected
按照官方教程quick-start部署之后,输入账号密码,卡在登录界面。
在github issues搜了一下发现也有人碰到了这个问题disconnected: Error: peer disconnected #61
于是做了以下改动:
使用issues下面有人能用的yaml配置
version: "3"
services:
neko:
image: m1k1o/neko:latest
ports:
- '6002:8080'
- '59000-60000:59000-60000/udp'
shm_size: "4gb"
environment:
DISPLAY: :99.0
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_BIND: :8080
NEKO_EPR: 59000-60000
NEKO_MAX_FPS: 0
NEKO_AUDIO_BITRATE: 256
云服务器开放指定udp端口
在官方教程troubleshooting中提到
在下面的示例中,指定的 52000-52100 端口范围也必须使用 docker 公开。
所以yaml中的端口也是应该需要打开的
后记
不过让我好奇的是为什么会这样,而且最新的教程竟然没有修正。反复测试后对比,是由这个参数引起的

官方配置中提到了这个参数的含义:

让ChatGPT解释了一下ICE LITE协议
ICE Lite 是一种简化版的 交互式连接建立协议(ICE),主要用于 WebRTC 和其他实时通信系统中的网络地址穿越(NAT traversal)。ICE Lite 适用于始终连接到公共互联网、拥有公共 IP 地址的设备,这类设备不需要执行完整的 ICE 流程。
以下是 ICE Lite 和完整 ICE 的区别:
- 仅使用主机候选地址:ICE Lite 设备仅使用它们的公共 IP 地址作为候选地址,不需要进行复杂的网络地址获取和检查过程,如通过 STUN 或 TURN 服务器获取的候选地址。
- 不主动进行连通性检查:与完整的 ICE 协议不同,ICE Lite 设备不主动发起连通性检查,而是响应对方(完整 ICE 设备)发起的检查请求。
- 典型场景:ICE Lite 通常用于公网中的设备,如云端的视频会议媒体服务器,而完整的 ICE 适用于需要穿越 NAT 的情况。
这种简化的方式减少了设备的计算复杂度和网络开销,适用于那些不需要 NAT 穿越的设备或场景,比如云通信系统中的媒体服务器