WSL2(Windows Subsystem for Linux 2)在 Windows 上提供一个真正的 Linux 内核。在它里面跑 SnowLuma 的 Linux 容器,是不想用原生 Windows QQ 时的另一条路。
本页讲:先装好 WSL2,再用两种方式之一把 Docker 跑起来,最后启动规范的 SnowLuma 容器。
如果你已经在用 / 打算用 Docker Desktop,它自带 WSL2 集成,更省事——直接看 Windows · Docker Desktop。本页适合想在 WSL 发行版里自己装 Docker Engine、或想更贴近 Linux 操作的人。
以管理员身份打开 PowerShell,运行:
这会装好 WSL2 + 默认的 Ubuntu 发行版。重启电脑,重启后 Ubuntu 会首次启动,让你创建 Linux 用户名和密码。
确认版本是 2:
当前 Ubuntu-on-WSL 默认已开启 systemd。
装好 Docker Desktop 后,到 Settings → Resources → WSL Integration,给你的 Ubuntu 发行版打开集成开关。这样在 Ubuntu 终端里就能直接用 docker 命令,引擎跑在 Docker Desktop 那边。安装与系统要求见 Windows · Docker Desktop。
不想装 Docker Desktop,就在 Ubuntu 发行版里直接装原生 Docker Engine。官方 apt 仓库(deb822 docker.sources 格式)方式见 https://docs.docker.com/engine/install/ubuntu/。
仅用于本机 / 开发,也可以用便捷脚本:
加完用户组要重开终端才生效。启动 Docker:
A、B 二选一,不要两个都装。 Docker Desktop 集成和发行版内的原生 dockerd 同时存在会互相打架。
Docker 就绪后,在 Ubuntu 终端里运行和规范 Docker 页完全一样的命令:
--cap-add=SYS_PTRACE 和 --security-opt seccomp=unconfined 不能省——hook 通过 ptrace 注入,默认 seccomp 会拦。
Compose、环境变量、数据卷、多账号、首次登录等完整参考都在 Docker(Linux)部署,本页不重复。
WSL2 默认会把容器监听的端口转发到 Windows 的 localhost,所以在 Windows 浏览器里直接用 localhost 即可:
| 地址 | 用途 |
|---|---|
http://localhost:6081/ |
noVNC(扫码登录 QQ) |
http://localhost:5099/ |
SnowLuma WebUI |
http://localhost:3000/ |
OneBot HTTP |
ws://localhost:3001/ |
OneBot WebSocket |
极少数环境下 localhost 转发可能失效(被关闭或网络模式不同)。这时用 wsl hostname -I 拿到 WSL 的 IP,再用那个 IP 访问。
改掉 VNC / noVNC 默认密码(-e VNC_PASSWD=...);不要把 noVNC / WebUI / OneBot 端口裸暴露到公网。
WSL2 终究是个 Linux 环境,理论上你也能在里面不靠 Docker、直接按 Linux 手动方式跑 SnowLuma(自己起 Xvfb / VNC / noVNC、装 linuxqq、给 node 加 ptrace capability 等)。但那套步骤明显更繁琐,Docker 更省事,所以本页推荐容器路线。