拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AzerothCore 部署指南:用 Docker 40 分钟搭起可登录的魔兽世界 3.3.5 私服

AzerothCore 部署指南:用 Docker 40 分钟搭起可登录的魔兽世界 3.3.5 私服

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-database3306(默认映射到宿主机)承载 acore_auth、acore_world、acore_characters 三个库,root 密码默认password
认证服务ac-authserver3724客户端第一个连接点,校验账号后引导客户端接入世界服
世界服务ac-worldserver8085加载世界数据、处理全部游戏逻辑

另外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,那会连容器一起停掉。

验证:是否成功

两条判据都满足,部署才算通过:

  1. docker compose ps中ac-database、ac-authserver、ac-worldserver均为 Up,且docker compose logs ac-worldserver | tail -n 20的日志尾部能搜到"Server ready"——说明世界服已准备好接收连接。
  2. 打开魔兽世界 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后重启容器
客户端登录界面看不到 realm3724或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),仅供参考

返回列表