AzerothCore 部署指南:用 Docker 40 分钟搭起可登录的魔兽世界 3.3.5 私服
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
AzerothCore 是开源的 MMO 服务器项目,完整实现魔兽世界 3.3.5(WoTLK)的服务端逻辑。这篇 AzerothCore 部署教程带你用 Docker 一次构建、一条命令启动,跟完即可得到一个魔兽世界私服 Docker 环境,用 3.3.5 客户端直接登录进图。
三个服务如何分工
AzerothCore 通过 docker-compose.yml 把整套服务端拆成协作的容器,你日常只需要关心三个常驻角色:
| 服务 | 容器名 | 端口 | 职责 |
|---|---|---|---|
| MySQL 8.4 数据库 | ac-database | 3306(默认映射到宿主机) | 承载 acore_auth、acore_world、acore_characters 三个库,root 密码默认password |
| 认证服务 | ac-authserver | 3724 | 客户端第一个连接点,校验账号后引导客户端接入世界服 |
| 世界服务 | ac-worldserver | 8085 | 加载世界数据、处理全部游戏逻辑 |
另外7878端口是 worldserver 暴露的 SOAP 接口,供外部管理工具调用,客户端登录不依赖它。三者跑在同一个容器网络ac-network里通信,编排关系是:MySQL 先通过健康检查 → ac-db-import 导入 data/sql 下的基础数据和升级脚本 → authserver 与 worldserver 才被拉起。
开始前的自检清单
开始前你不需要装 MySQL 或编译工具链,这些都内置在镜像里。逐项确认:
- 操作系统:Linux、macOS,或 Windows(WSL2 + Docker Desktop)
- Docker 已安装,且带 Compose v2 插件
- 宿主机3306、3724、8085、7878端口空闲
- 磁盘预留至少30GB(首次构建要在容器内完整编译源码)
- 手头有一个魔兽世界3.3.5版本客户端
两条命令自检,都能正常输出就继续:
# 确认 Compose v2 插件与 Docker 守护进程正常 docker compose version docker ps三条命令跑完全程
第 1 步:拉取源码。耗时几分钟,视网速而定。
# 克隆仓库并进入项目目录 git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk第 2 步:构建镜像。这一步在一个 Ubuntu 24.04 容器里用 CMake + clang 完整编译 authserver、worldserver 和数据库导入工具,并生成 MySQL、导入、客户端数据初始化等配套镜像。
# 构建全部镜像(首次 30~60 分钟属正常,有缓存后重建会快很多) docker compose build构建成功后docker images里能看到acore/ac-wotlk-worldserver等镜像。
第 3 步:启动全部服务。首次启动预期 5~15 分钟。
# 启动数据库、导入任务、认证服、世界服 docker compose up -d日志里会滚动出一条条 SQL 导入记录,全部跑完后三个常驻容器进入运行状态。entrypoint 脚本(apps/docker/entrypoint.sh)会自动把镜像内的*.conf.dist模板复制成正式配置落到env/dist/etc/,所以你不用手写任何配置文件。
服务起来后顺手把首个管理员账号建了:
# 接入 worldserver 控制台创建管理员(3 为管理员级安全等级,-1 不限地图权限) docker compose attach ac-worldserver AC> account create admin password 3 -1⚠️ 创建完按Ctrl+P 再 Ctrl+Q脱离控制台,不要直接 Ctrl+C,那会连容器一起停掉。
验证:是否成功
两条判据都满足,部署才算通过:
docker compose ps中ac-database、ac-authserver、ac-worldserver均为 Up,且docker compose logs ac-worldserver | tail -n 20的日志尾部能搜到"Server ready"——说明世界服已准备好接收连接。- 打开魔兽世界 3.3.5 客户端,登录界面服务器地址填
127.0.0.1(客户端在别的机器上则填宿主机局域网 IP),能看到 realm 列表,用admin / password登录、建角并进入地图。
能稳定看到角色和场景加载,整个流程就跑通了。
常见问题速查表
| 现象 | 可能原因 | 处理 |
|---|---|---|
| worldserver 反复重启 | 源码以 root 克隆,env/dist属主是 root,容器内用户写不进去配置和日志(entrypoint 会打印 WARNING) | 宿主机执行sudo chown -R $(id -u):$(id -g) env/dist后重启容器 |
| 客户端登录界面看不到 realm | 3724或8085没映射到宿主机;或服务器在别的机器但地址填了 localhost | 宿主机执行ss -tlnp \| grep -E '3724\|8085'确认监听,客户端改填宿主机 IP |
| 等了十几分钟 worldserver 还没起 | ac-db-import 还在导入(首次 5~15 分钟属正常),或 MySQL 未通过健康检查 | docker compose logs -f ac-db-import观察进度;失败时按日志末尾报错的 SQL 文件检查 |
docker compose up报端口绑定失败 | 宿主机已有 MySQL 等服务占用3306 | 项目根目录建.env写入DOCKER_DB_EXTERNAL_PORT=3307,重启后数据库改用 3307,容器内部连接不受影响 |
| 改了配置不生效 | 只改了*.conf.dist模板,而正式配置是首次启动时复制生成的,模板只在目标文件不存在时起作用 | 直接编辑env/dist/etc/worldserver.conf等正式文件再重启 |
下一步
- 改端口:在项目根目录
.env里写DOCKER_WORLD_EXTERNAL_PORT=8086、DOCKER_AUTH_EXTERNAL_PORT=3725即可,容器内部端口不用动。 - 调参数:日常只动
env/dist/etc/worldserver.conf里的关键项(如PlayerLimit限制最大在线人数);配置加载的严格程度和预设在 doc/ConfigPolicy.md 里可查。 - 写模块:仓库自带 modules/create_module.sh 生成模块骨架,在
env/dist/etc/modules/下启用对应配置,再重新构建镜像即可。
到这一步,数据库、认证、世界服务已经在容器里稳定运行,客户端正常登录。把模块骨架改成自定义指令或任务,你就能体验从部署到二次开发的完整闭环了。
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考