Skip to main content

解决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 的区别:

  1. 仅使用主机候选地址:ICE Lite 设备仅使用它们的公共 IP 地址作为候选地址,不需要进行复杂的网络地址获取和检查过程,如通过 STUN 或 TURN 服务器获取的候选地址。
  2. 不主动进行连通性检查:与完整的 ICE 协议不同,ICE Lite 设备不主动发起连通性检查,而是响应对方(完整 ICE 设备)发起的检查请求。
  3. 典型场景:ICE Lite 通常用于公网中的设备,如云端的视频会议媒体服务器,而完整的 ICE 适用于需要穿越 NAT 的情况。

这种简化的方式减少了设备的计算复杂度和网络开销,适用于那些不需要 NAT 穿越的设备或场景,比如云通信系统中的媒体服务器