三国杀常年霸占Steam差评榜首,笔者的发小也深受其害,至今仍身在泥潭。不过偶尔到店里玩玩桌游,作为与朋友消遣和增进感情的工具还是不错的。

本期来介绍一款开源免费、休闲可联机的项目:无名杀。让咱们足不出户,就可以和家人、朋友一起大杀四方。

本教程将通过 Docker Compose 在飞牛 NAS 上一键部署无名杀联机服务器,包含游戏前端与联机大厅,支持局域网 / 外网联机,兼容 PC、安卓客户端与 iOS 网页端。


一、前期准备

1.1 硬件与系统要求

  • 飞牛 NAS:x86 架构(不支持 ARM),内存 ≥ 2GB,空闲存储 ≥ 5GB

  • 系统版本:fnOS 稳定版(基于 Debian,原生支持 Docker)

  • 网络环境:NAS 接入家庭局域网,获取固定局域网 IP(如 192.168.1.100)

  • 工具准备:浏览器(访问 NAS 管理后台)、文本编辑器(编写 Compose 文件)、SSH 客户端(可选,用于调试)

  • 外网访问(可选):公网 IP + 端口转发,或 Cloudflare Tunnel/ZeroTier 等内网穿透工具

1.2 核心前提说明

无名杀采用 “前端 + 联机服务器” 双服务架构:

  • 前端服务:提供游戏界面,默认端口 7799

  • 联机服务器:处理实时联机与房间管理,默认端口 7789

  • Docker Compose 优势:一键部署双服务,配置固化,运维便捷

  • 文章所用镜像为B站老哥秦曱凧打包。笔者测试好多个镜像外网建房联机,最终用这个成了,特表感谢。

  • 三国杀(无名版)基于原地址 libccy/noname 的master分支所作。开源、免费,支持Docker一键部署,支持局域网/外网联机。PC、安卓具备客户端,苹果系推荐使用web端游玩。

  • 功能、角色、模式都非常多,完成度很高了,这里不多啰嗦。


二、步骤 1:搭建 Docker 与 Docker Compose 环境

2.1 安装 Docker 服务

  1. 登录飞牛 NAS 管理后台(http://你的 NAS 局域网 IP:8000

  2. 进入「应用中心」,搜索「Docker」并点击「安装」(已安装则跳过)

  3. 安装完成后,在「系统设置」→「高级设置」中确认 Docker 服务已启用

2.2 配置 Docker 优化

  1. 进入 Docker 管理界面,点击「设置」:

    • 镜像源配置:添加国内加速源(如 https://docker.mirrors.ustc.edu.cn/),解决镜像拉取慢问题

    • 存储路径设置:修改为数据盘路径(如 /mnt/Storage/Docker),避免占用系统盘空间

    • 网络设置:保持默认桥接模式即可

2.3 启用 Docker Compose 功能

飞牛 NAS 的 Docker 应用已集成 Docker Compose,无需额外安装:

  1. 进入 Docker 管理界面,左侧导航栏点击「Compose」

  2. 系统自动检测环境,若提示缺失依赖,点击「一键修复」


三、步骤 2:Docker Compose 部署无名杀

3.1 准备 Compose 配置文件

  1. 创建存储目录

    • 登录飞牛 NAS 管理后台,进入「文件管理」

    • 在数据盘(如 /mnt/Storage)新建文件夹 noname,用于存放配置文件和日志

    • noname 文件夹内再创建两个子目录:web-logs(前端日志)、server-logs(联机服务器日志)

  2. 编写 docker-compose.yml 文件

    • 用本地电脑文本编辑器新建文件,命名为 docker-compose.yml

    • 粘贴以下配置(可根据需求修改端口等参数):

      yaml

      version: '3.8'
      services:
        # 无名杀前端服务
        noname-web:
          image: swr.cn-north-4.myhuaweicloud.com/firfe/noname:web-1.10.17.4.1  # 国内镜像源
          container_name: noname-web
          restart: unless-stopped  # 异常自动重启
          ports:
            - "7799:5161"  # 宿主机端口:容器端口(前端默认 5161)
          volumes:
            - /mnt/Storage/noname/web-logs:/app/logs  # 日志映射
          logging:
            driver: "json-file"
            options:
              max-size: "10m"  # 单日志最大 10M
              max-file: "3"    # 保留 3 个日志文件
      
        # 无名杀联机服务器
        noname-server:
          image: swr.cn-north-4.myhuaweicloud.com/firfe/noname:server-1.10.17.4.1  # 国内镜像源
          container_name: noname-server
          restart: unless-stopped
          ports:
            - "7789:8080"  # 宿主机端口:容器端口(服务器默认 8080)
          volumes:
            - /mnt/Storage/noname/server-logs:/app/logs  # 日志映射
          logging:
            driver: "json-file"
            options:
              max-size: "10m"  # 单日志最大 10M
              max-file: "3"    # 保留 3 个日志文件
      
    • 保存文件,确保编码为 UTF-8

  3. 上传配置文件

    • docker-compose.yml 文件上传到 NAS 的 /mnt/Storage/noname 目录

3.2 部署无名杀服务(图形化操作)

  1. 进入飞牛 NAS 的 Docker 管理界面,点击左侧「Compose」→「新增项目」

  2. 项目配置

    • 项目名称:输入 noname(自定义,便于识别)

    • 项目路径:点击「浏览」,选择 /mnt/Storage/noname

    • 来源选择:默认「使用现有 docker-compose.yml 文件」

  3. 点击「确定」创建项目,系统自动加载配置

  4. 点击项目右侧的「构建」按钮,Compose 将自动执行以下操作:

    • 拉取前端与联机服务器镜像

    • 创建并启动双容器

    • 配置端口、存储映射及日志

  5. 等待构建完成(约 1-3 分钟,取决于网络),项目状态显示「运行中」即部署成功


四、步骤 3:局域网访问与联机设置

4.1 访问游戏前端

  1. 打开浏览器(推荐 Chrome/Edge),输入 http://你的 NAS 局域网 IP:7799

  2. 若能看到无名杀游戏界面,说明前端服务正常

4.2 配置联机服务器

  1. 在游戏界面中,点击「联机模式」

  2. 关闭弹出的邀请链接窗口,点击红色「启动」按钮

  3. 在弹出的服务器地址输入框中,输入 wss://你的 NAS 局域网 IP:7789(注意是 wss 而非 http

  4. 点击「确认」,即可创建房间或加入他人房间

注意:网页端需要启用浏览器的serviceWorker功能,常规的NAS_IP:7799本地无法游玩。本地局域网请参照BV1EJ14BWEok这个视频。


五、步骤 4:外网访问配置(可选)

最简单的方案:反正是咱们搭建了自用,我的建议是直接反代HTTPS访问,里外通吃。NAS可借助Lucky。

说明:

# 国内网络环境下,443端口基本禁用# 以下分别是我反代后的,能成功访问服务的完整域名
# 游戏地址-webnoname.xxx.xyz:1234
# 联机大厅地址-serversgs.xxx.xyz:1234

5.1 方案 A:公网 IP + 端口转发

  1. 在路由器中设置端口转发

    • 登录路由器管理后台,找到「端口转发」或「虚拟服务器」功能

    • 添加两条转发规则:

      • 外部端口 7799 → 内部端口 7799 → 内部 IP(你的 NAS 局域网 IP)

      • 外部端口 7789 → 内部端口 7789 → 内部 IP(你的 NAS 局域网 IP)

  2. 外网访问地址

    • 前端:http://你的公网 IP:7799

    • 联机服务器:wss://你的公网 IP:7789

5.2 方案 B:Cloudflare Tunnel(无公网 IP 首选)

  1. 激活 Cloudflare Zero Trust

    • 登录 Cloudflare 控制台,进入「Zero Trust」→「网络」→「Tunnels」,点击「激活」

  2. 在飞牛 NAS 安装 cloudflared(参考官方文档)

  3. 创建隧道并添加公共主机名

    • 分别为前端和联机服务器添加主机名,指向 你的 NAS 局域网 IP:7799你的 NAS 局域网 IP:7789

  4. 外网访问地址

    • 前端:https://noname-web.yourdomain.com

    • 联机服务器:wss://noname-server.yourdomain.com(注意是 wss


联机模式

我们点击联机模式,进去会弹窗输入邀请链接,先别管都叉掉。然后点击红色的启动按钮。

出现弹窗是否输入邀请链接,先无视关掉。后面拿到邀请链接进房间再点击确认填写。

接着输入wss://sgs.xxx.xyz:1234。有端口必然也要带上。其他多余的不要加。连接。

再出现上文窗口依然关掉。此时便进入了联机大厅。

640 (13).png

创建房间即可,挑个喜欢的模式,办英雄什么的自行设置。这里我远程操作家里的windows开了另一个账户进来创建房间(联机大厅进入操作方式完全一致)。

640 (14).png

点击分享,会生成一个邀请链接,发送给其他玩家:

无名杀-联机-身份-1/3
三国大雄邀请你加入38608522293房间
联机地址:wss://sgs.xxx.xyz:1234
请先通过游戏内菜单-开始-联机中启用“读取邀请链接”选项

上文进入联机大厅时,弹出的房间邀请链接填写窗口,将完整的链接复制粘贴进去,便可识别进入房间。

640 (15).png

如果你此时正在挂机。看到房间出现,直接点击也可进入。

640 (16).png

开始对局即可。

六、常见问题排查

6.1 服务启动失败

  • 检查日志:通过 docker-compose logs -f 查看具体错误信息

  • 端口占用:确保 7799 和 7789 端口未被其他服务占用,可在 docker-compose.yml 中修改宿主机端口(如改为 8099 和 8089)

  • 镜像拉取失败:检查 Docker 镜像源配置,尝试更换国内加速源

6.2 联机失败

  • 服务器地址错误:确保输入的是 ws://你的 NAS IP:7789(局域网)或 wss://你的域名(外网)

  • 防火墙限制:关闭 NAS 系统防火墙或放行 7789 端口

  • 外网访问问题:检查公网 IP 是否为动态 IP(可使用 DDNS 服务),或 Cloudflare Tunnel 是否正常连接

6.3 游戏界面显示异常

  • 浏览器兼容性:推荐使用 Chrome 或 Edge 浏览器,不支持 Firefox

  • Service Worker 限制:部分浏览器对本地 IP 访问有 Service Worker 限制,可通过 HTTPS 反代解决(如使用 Nginx 或 Cloudflare Pages)


七、优化建议

  1. 配置备份:定期备份 docker-compose.yml 文件和日志目录

  2. 性能优化:根据 NAS 配置调整容器资源限制(如在 docker-compose.yml 中添加 resources 字段)

  3. 多服务复用:同一 Cloudflare Tunnel 可添加多个主机名,同时映射 NAS 上的其他服务

  4. 访问控制:通过路由器防火墙或 Cloudflare Zero Trust 设置访问白名单,仅允许指定设备访问


总结

通过 Docker Compose 在飞牛 NAS 上部署无名杀,可快速搭建稳定的局域网 / 外网联机环境。核心步骤包括:搭建 Docker 环境、编写 Compose 配置文件、部署双服务、配置访问地址。若需外网访问,可根据网络条件选择端口转发或 Cloudflare Tunnel。