☰
魔兽世界 3.3.5 私服完整上手:AzerothCore-WoTLK 用 Docker 两条命令零编译跑起来
2026/10/4 1:44:09 网站建设 项目流程

魔兽世界 3.3.5 私服完整上手:AzerothCore-WoTLK 用 Docker 两条命令零编译跑起来

【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk

AzerothCore-WoTLK 是一个开源、模块化的 MMO 服务器框架,专为魔兽世界 3.3.5a 打造。用 Docker 部署它只需2 条命令、约10 分钟,你得到的是一套可直接登录的完整私服——含认证、世界、数据库等常驻服务,全程零编译、零手动导库。

这篇文章写给三类人:想给朋友开一个魔兽私服的运营者、想读懂 MMO 服务器内部协作的开发者、以及第一次碰 Docker 的新手。你不需要会 C++,也不用装 MySQL 或编译工具链,照着命令执行就能走到登录界面。下文所有端口、容器名、路径均已与仓库当前内容核对一致。

你的目标对应命令
启动整套服务器docker compose build然后docker compose up -d
创建私服管理员账号AC> account create admin password 3 -1
实时查看全部日志docker compose logs -f
全库备份docker compose exec ac-database mysqldump -u root -p --all-databases > backup.sql
生成一个新模块骨架cd modules && ./create_module.sh

🧭 魔兽世界 3.3.5 私服成品预览:5 个容器分工与关键端口

这一节你先看到"目标状态"——启动成功后系统长什么样,再动手。

docker compose up -d完成后,docker compose ps会列出 5 个各司其职的容器:

容器名职责对外端口
ac-databaseMySQL 8.4,存账号、角色、物品等全部数据3306
ac-db-import一次性任务,导入基础数据后自动退出—
ac-client-data-init一次性任务,初始化客户端数据卷后退出—
ac-authserver认证服务器,处理登录与权限校验3724
ac-worldserver世界服务器,运行核心逻辑、管理世界状态8085

核心两条命令就是本文反复出现的:

docker compose build docker compose up -d

build首次会编译镜像、耗时偏长,属正常现象;up -d将整套服务放到后台。当你在ps里看到ac-worldserver处于 running,即代表认证(3724)与世界(8085)均已就绪,可以进入下一步。

🚀 魔兽私服 Docker 部署首次点火:从克隆到登录四步

这一节是"最短路径",每个小节的代码都不超过 4 行,跟着做即可。

前置自检

先确认本机只有 Docker 与 Compose v2,不需要任何游戏相关依赖:

docker --version docker compose version

执行后应各自打印出版本号;只要docker compose能返回版本,说明 v2 插件已就位。

构建与启动

克隆仓库并启动整套服务:

git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk docker compose build docker compose up -d

首次构建输出会持续较久;up -d后终端会列出各容器创建日志,此时世界服通常仍在等待导库,属预期现象。

创建管理员账号

接入世界服控制台并建号(admin为账号名、password为密码、3为 GM 等级、-1表示该账号可用于所有服务器):

docker compose attach ac-worldserver AC> account create admin password 3 -1

命令回车后控制台会回显账号创建成功;随后按Ctrl+P再按Ctrl+Q退出控制台(detach,容器不会停)。

客户端接入

用魔兽世界 3.3.5a 客户端,把客户端根目录Data/zhCN/realmlist.wtf(中文客户端路径)中的服务器地址改为:

set realmlist 你的服务器IP:3724

保存后启动游戏、输入刚建的账号登录,即可进入游戏。

🔗 AzerothCore-WoTLK 容器依赖链图解:五个容器如何协作

这一节解释"为什么顺序不会乱",看懂它你就理解了这套编排的骨架。

ac-database (MySQL, healthcheck 健康检查通过后放行) │ service_healthy ▼ ac-db-import (导完基础数据退出) ac-client-data-init (初始化客户端数据卷后退出) └──────────── 两者均成功 ────────────┘ │ service_completed_successfully ▼ ac-authserver (3724 登录) ac-worldserver (8085 世界)

三个关键设计,每个用"它做什么 / 它防住什么"说明:

设计它做什么它防住什么
健康检查驱动顺序每 5 秒探测 MySQL 是否可连,后续容器等服务"健康"而非"已启动"库没真正就绪就导数据、登录服务连不上库
一次性任务容器两个 init 容器跑完即退出,世界服以service_completed_successfully为门槛数据没导完世界服抢跑,"导库成功"只靠人盯日志
命名卷持久化数据库与客户端数据分别落到ac-database、ac-client-data两个命名卷容器重建或升级时数据丢失,这是"一键重启"的底气

⚙️ 私服端口、密码与配置策略按需定制

这一节覆盖三类常见改动:改端口密码、调配置严格度、挂自己的模块。

端口与密码(环境变量)

通过环境变量即可改,无需改任何文件。变量名以DOCKER_开头,完整清单见 conf/dist/env.docker:

export DOCKER_WORLD_EXTERNAL_PORT=8086 export DOCKER_AUTH_EXTERNAL_PORT=3725 export DOCKER_DB_ROOT_PASSWORD=your_secure_password docker compose up -d

再次up -d后,docker compose ps的端口列会显示为你设定的新外部端口;官方建议不要直接改docker-compose.yml,而是用 conf/dist/docker-compose.override.yml 提供注释模板做持久覆盖。

配置策略三档

配置策略机制决定"配置文件缺失、配置项未知或取值非法"时核心是跳过、警告还是直接报错,由AC_CONFIG_POLICY环境变量控制,说明见 doc/ConfigPolicy.md:

策略行为适用场景
PRESET_DEFAULT缺文件报错、缺项警告、关键项致命新手默认
PRESET_ZERO_CONF非关键缺口一律跳过,用默认值启动Docker 快速启动
PRESET_STRICT一切异常升级为错误/致命生产环境严格审计
export AC_CONFIG_POLICY=$AC_CONFIG_POLICY_PRESET_ZERO_CONF docker compose up -d

启动日志中会打印当前生效的策略行,据此可确认档位已切换。

模块化扩展

游戏逻辑被拆为核心(src/server/game)与脚本(src/server/scripts),任何新功能都可做成独立模块挂载,不污染核心代码。进入modules/运行 modules/create_module.sh,按提示输入模块名,它基于官方骨架模板克隆出一个可编译的新模块目录并初始化好 Git 仓库:

cd modules ./create_module.sh

执行完会看到"Ready to code"提示,模块目录已生成;之后参照modules/how_to_make_a_module.md往里填逻辑,编译时通过conf/dist/config.sh的CMODULES变量控制其参与编译方式。

📊 魔兽私服长期运维:日志、备份与常见坑速查表

这一节给你日常要用的命令、排障对照表和上线前该做的加固。

日志与状态:

docker compose logs -f docker compose logs --tail=100 ac-worldserver | grep -i error docker compose ps

logs -f会持续滚动全部服务日志,ps可核对各容器状态与端口映射。

数据库备份与恢复:

docker compose exec ac-database \ mysqldump -u root -ppassword --all-databases > backup_$(date +%Y%m%d).sql docker compose exec -T ac-database \ mysql -u root -ppassword < backup.sql

备份命令执行后当前目录会生成一个.sql文件;恢复时把<指向该文件即可。

常见坑速查表:

现象原因解决
worldserver 迟迟不启动正等数据库导入完成,属正常docker compose logs -f ac-db-import看进度
端口被占用默认 3306 / 3724 / 8085 被占用DOCKER_*_EXTERNAL_PORT改外部端口,别改 compose 主文件
旧客户端登录失败realmlist 指向 IP 或端口错核对认证端口 3724,勿与世界端口 8085 混淆
想从源码重新编译需要完整工具链用acore.sh仪表盘交互编译,或参考conf/dist/config.sh的编译参数

生产加固清单:

  • 立刻改掉默认数据库密码DOCKER_DB_ROOT_PASSWORD。
  • 公网部署只开放 3724 / 8085,数据库端口保持内网可达。
  • 把docker-compose.override.yml与conf/dist/下的自定义配置纳入 Git,改动有迹可循。
  • 在 override 文件中给ac-worldserver设置deploy.resources.limits,避免单人服被无上限占用资源。

需要完整地图与寻路数据时,可启用 tools profile(docker compose --profile tools ...)配合客户端提取;边改代码边调试则可用docker compose --profile dev up -d的ac-dev-server做增量编译。


现在你手里已有一套能登录、能定制、能扩展的魔兽世界 3.3.5 私服平台。想继续深入,有三个方向值得投入:读src/server/下的 C++ 源码,理解 MMO 的网络与状态管理;沿doc/ConfigPolicy.md与modules/how_to_make_a_module.md把配置和模块吃透;以及跟着acore.sh从源码编译一份完全定制的核心。挑一个开始,改动的每一步都落在你看得见的文件里。

【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询