
这篇的定位:把开源皓石传奇三服务端放到支持 Docker 的 NAS 上,跑通 Web GM 后台,并留下可复查的部署过程。
适用对象:愿意按目录、配置和日志逐步排查的 NAS / Docker 用户;运行数据需自行从项目公开渠道取得。
读完后能得到:可复现的 Compose 结构、启动成功判断、常用运维命令,以及三个高频报错的排查顺序。
内容边界:仅供个人学习与本地测试,不提供侵权资源,不支持公开收费运营。
为什么留在网站:公众号用于快速了解实测结论;这里保留完整命令、版本差异、后续勘误和问题入口,便于部署时逐项核对。
一句话版本:皓石传奇三(Zircon Mir3)是开源的传奇三服务端,官方有现成 Docker 镜像,Linux、Windows、Docker 三平台都能跑。真正的门槛不在 Docker,而在数据包整理和建网报错——这两件事我都踩过,下面直接给你可抄的
docker compose和踩坑解法,凑齐「镜像 + 数据 + 配置」三样东西就能进游戏。
一、先看效果
部署完之后你会得到两样东西:一个跑在 NAS 上的传奇三服务端(四个职业、上千张地图、四职业技能升到 6 级),以及一个免装客户端就能用的 Web 管理后台——在线玩家、注册账号、物品库、刷怪、经验掉率全在里面改,等于自己给自己发 GM 权限。
这是我这边跑起来的后台仪表盘(服务端已经连续运行 2 小时 45 分钟,线程池和内存都很轻):

二、准备三样东西
1. 服务端镜像
镜像名 raphzhang/zirconlegend:latest,Docker Hub 直接拉,211MB 左右,作者每次发版都会更新。绿联 NAS 是 x86 架构,正常拉取即可(国内网络建议在绿联 Docker 里先配好镜像加速器)。
2. 服务端运行数据(约 800MB 解压后)
地图数据体积较大,由上游项目通过其 README 指定的发布渠道提供。本站及本站交流群不转存、不出售、不另行提供数据包副本,请从上游项目的发布渠道获取。
运行数据和版本说明请以项目官方 README 为准。本站不转存、不另行提供游戏地图、数据库、服务端或客户端资源。
3. 最新的 Server.ini
去项目的 GitHub Releases 页面下载最新的 Server.ini(只有 3KB 上下),它要覆盖数据包里自带的旧配置文件。注意这里只下 Server.ini,那几个几十 MB 的 Server-xxx-win-x64.zip、-linux-x64.zip 是给不用 Docker、直接跑二进制的场景准备的,容器方案里用不上。
三、三步部署
第 1 步:摆好数据目录
在绿联的共享文件夹里建一个项目目录(我这里用 共享文件夹/docker/mir3server),把数据包解开后的 datas 放进去,再把下载来的 Server.ini 覆盖进去:
docker/mir3server/
├── docker-compose.yaml
└── datas/
├── Database/
│ ├── System.db # 游戏数据库(必需)
│ └── Users.db # 账号库(可选,放进去就能用内置 GM 账号)
├── Map/ # 上千张 .map 地图
├── Server.ini # 用 Releases 里最新那份覆盖
├── block_devices.txt
├── 欢迎语.txt
└── 转生标识设置.txt两个小坑先说在前面:
数据包里的中文文件名是 GBK 编码,用普通解压工具解出来可能变成乱码文件名,服务端就找不到
欢迎语.txt这些文件了。解压后扫一眼文件名是不是正常中文;如果乱码,换用支持指定编码的解压工具;Users.db是账号库,官方运行文件里未必附带。为减少公开共享默认口令的风险,本文不展示上游默认账号和密码。首次登录后请立即修改密码;上游未提供账号时,可在本地注册,再按需授予管理员权限。
第 2 步:写 docker compose
绿联 Docker → 项目 → 创建项目,存放路径选上面那个目录,Compose 配置直接粘贴:
services:
zircon:
container_name: zircon
image: raphzhang/zirconlegend:latest
network_mode: bridge
ports:
- "17101:7000" # 游戏端口,客户端连这个
- "17181:7080" # Web 管理后台
restart: unless-stopped
user: "0:0"
volumes:
- ./datas:/zircon/datas
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
- PUID=1000
- PGID=10
- TZ=Asia/Shanghai这里故意不写自定义网络,只用 Docker 自带的 bridge,原因见下一节的坑 1。端口左边的 17101 / 17181 可以按自己喜好改,但客户端和浏览器访问时要用同一个。
第 3 步:启动并确认
点「立即部署」。成功后看日志,出现下面这几行就说明服务端活着:
皓石传奇三 v1.14.0.xxxxx
客户端更新路径:
地图文件路径:./datas/Map/
最大连接数量限制:200
[xx:xx:xx]: 网络已启动.
[xx:xx:xx]: Web 服务已启动.
[xx:xx:xx]: 加载耗时: 6 秒浏览器打开 http://你的NAS内网IP:17181,能看到登录页就说明 Web 服务链路已经打通。管理员账号和初始密码以上游项目 README 为准;本文不公开固定口令。首次登录后请立即修改密码;上游未提供账号时,可在本地注册一个新账号,再在「账号管理」中按需授予管理员权限。
四、三个我真实踩过的坑
坑 1:建网报错 —— Pool overlaps / all predefined address pools have been fully subnetted
如果你按作者 README 那份 compose 抄,里面写死了 1panel-network 和一个固定的 ipv4_address,在绿联上大概率直接卡在创建网络这一步,报这两种错:
invalid pool request: Pool overlaps with other one on this address space:你指定的网段和 NAS 上已有的网络重叠(Docker 预留的默认地址池也算),换网段也可能继续撞;all predefined address pools have been fully subnetted:不指定网段时要用默认池,而默认池已经被 NAS 上的一堆项目网络切满了。
正确解法有两个,任选:
首选:不用自定义网络。把 compose 里的
networks:段和ipv4_address全删掉,加上network_mode: bridge,容器直接挂到 Docker 自带的默认 bridge 上,从头到尾不新建网络,这两类报错就不会出现;顺手清一下环境:如果你能 SSH 进 NAS,跑一次
docker network prune,把废弃项目遗留的无用网络删掉,以后新建项目也不容易再撞池子。
注意:用 network_mode: bridge 之后,不需要再去动 Server.ini 里的 IPAddress,保持默认的 0.0.0.0 就是对的(它表示监听容器内所有网卡)。
坑 2:目录里有两个 compose 文件
绿联的界面项目会生成 docker-compose.yaml,你要是又手动放了一份 docker-compose.yml,命令行工具每次都会警告「Found multiple config files」,而且界面点「重新部署」时读的可能还是那份旧的——一不小心就把容器用旧配置重建回去。留一个就行,建议统一成界面那份 docker-compose.yaml。
坑 3:数据目录选错
前面提过的 Database 与 Data 之分。日志里如果出现数据库相关报错,先 ls 一下 datas 目录,确认层级是 datas/Database/System.db,并且 Server.ini 就躺在 datas 根下。
五、后台能干什么
这个自研的 Web 后台是它比传统传奇服务端好用太多的地方,不用装任何 Windows 工具就能改服务端数据。比如物品管理,我这里 1660 条物品直接搜索、改属性、改价格和堆叠上限:

左侧菜单里还有玩家管理、账号管理、角色管理、地图管理、怪物管理、NPC 管理、技能管理、职业管理和服务器配置,常用的经验倍率、掉落倍率、刷怪倍率都能在这里调。另外服务端还支持 Webhook 事件通知,可以把关键运营事件推到手机上。
六、客户端怎么连(NAS 只跑服务端)
客户端是 Windows 桌面程序(.NET Framework 4.8 + SlimDX,DirectX 9),没有 Docker 版,也不能装到 NAS 上,要放在玩游戏的 Windows 电脑里:
从上游项目 README / Releases 获取与当前服务端版本匹配的客户端运行数据(约 3GB,包含
Data、Map、Sound、Translations四个目录);去客户端项目的 Releases 下载最新的
Client-v1.13.0-win-x86.zip,解压到同一个目录;安装依赖:.NET Framework 4.8、DirectX 9.0c、C++ 运行库合集(SlimDX 需要);
改
Legend.ini,把地址指向 NAS:
IPAddress=192.168.3.19 ; 你的 NAS 内网 IP
Port=17101 ; 对应 compose 里的 17101:7000
FullScreen=False
GameSize=1920, 1440保存后双击 Legend.exe 就能进游戏。局域网里直接连就行;本文不建议直接把游戏端口映射到公网;确有远程测试需求时,应使用 VPN 或带访问控制的内网穿透,并单独评估安全风险。
七、日常运维命令
cd /volume1/docker/mir3server
docker compose ps # 看运行状态
docker compose logs -f # 实时看日志
docker compose restart # 重启
docker compose down # 停止并删除容器(数据不丢)
docker compose up -d # 重新启动
docker compose pull && docker compose up -d # 升级到最新镜像玩家数据都躺在 datas/Database/ 里,down 不会动它们;要备份就整个 datas 目录打包(Map 可以跳过,主要备 Database 和那几个 txt)。compose 里写了 restart: unless-stopped,NAS 重启后容器会自己拉起来。
八、最后的几句实话
这套开源项目本身不需要额外购买软件,硬件、电费和存储成本另算,镜像和数据都来自项目公开渠道,资源占用也低——一台 N5095 + 8G 的威联通都能跑起来,绿联的 i5 机型更是绰绰有余。真正花时间的是前面那些坑:网段撞车、文件编码、目录层级,踩一次就明白了。
另外必须说明:皓石传奇三(Zircon)与 Crystal Mir2 都是供学习游戏技术使用的开源项目,作者明确禁止商用和非法用途,客户端图形等资源由上游项目按其发布说明提供,本站不转存。建议只在个人局域网内做学习和测试,不要作为公开收费服务运营。
九、参考资料
Docker 镜像:raphzhang/zirconlegend
服务端上游(LOMCN):Suprcode/Zircon
本文记录的是我在绿联 NAS(DXP6800 Pro)上的真实部署过程,封面为 HTML 排版渲染,Docker Compose 可直接复制使用。
部署时怎么继续使用这篇教程
先按顺序核对:数据目录、Server.ini、Compose、端口和日志。多数“起不来”都能在这个顺序里定位。
需要保存和追更:免费注册账号后可以保存文章、查看后续修订并提交问题。提问时请附 NAS 型号、镜像版本、目录结构和报错原文。
需要进一步咨询:会员资料维护和单次 1V1 咨询分别按 会员资料与支持 页面说明选择。
相关教程:皓石传奇三 Windows 客户端 · 热血传奇2服务端
【交流群】
站点的日常折腾、踩坑和答疑,基本都放在群里。idindoo交流群,想交流部署经验、遇到问题想找人问一声、或者单纯蹲新文章更新,都可以进来。
点下面这个按钮直接进群,手机、电脑都点得动:
手机端不想点链接,扫这个码也行(点图片同样能跳):

实在跳不动的,直接在 QQ 里搜群号 1131068116 也能进。群里没有广告,也不发垃圾内容,就是一群人折腾 NAS、Docker、AI 工具。



