一句话版本:皓石传奇三(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 里能拿到百度网盘地址(提取码 j1rm),嫌慢的话 QQ 群文件里也有一份备份。
两个关键提醒:
- 压缩包是加密的,解压密码就是作者公布的 QQ 群号
915941142; - 网盘里通常有 两个版本的服务器运行文件(比如 9/10 和 9/15 两个日期)。要选跟当前镜像版本配套的那份:新版里数据目录是
datas/Database/System.db,旧版是datas/Data/System.db。选错了服务端会找不到数据库。
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是账号库,官方运行文件里未必带。想要开箱就有的内置账号(管理员raphael@gm.gm,密码123456),就把这个文件补进Database/;不放也行,进游戏时自己注册,服务器默认允许注册。
第 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,能看到登录页就全通了。默认管理员账号 raphael@gm.gm、密码 123456;登不上就直接注册一个新账号,登进后台之后在「账号管理」里给自己勾上管理员即可。
四、三个我真实踩过的坑
坑 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 电脑里:
- 下载客户端运行数据包(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 就能进游戏。局域网里直接连就行;想让外网的朋友进来,再去路由器把 17101 映射到 NAS,把客户端里的地址改成域名或公网 IP。
七、日常运维命令
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 都是供学习游戏技术使用的开源项目,作者明确禁止商用和非法用途,客户端里的图形资源也来自网络。自己局域网内玩、或者和几个朋友开个小服没问题,请不要拿去做公开收费服。
九、参考资料
- 服务端项目:raphaelcheung/zircon-legend-server
- 客户端项目:raphaelcheung/zircon-legend-client
- Docker 镜像:raphzhang/zirconlegend
- 服务端上游(LOMCN):Suprcode/Zircon
本文记录的是我在绿联 NAS(DXP6800 Pro)上的真实部署过程,封面为 HTML 排版渲染,Docker Compose 可直接复制使用。



