私服Windows版本教程已出,包含60、TBC、WLK三大版本,搭建更加简单快捷,参考新博文《怀旧党:魔兽世界怀旧服Windows版》,根据自己情况选择架设方式吧。
作为一个怀旧党,博主继承了巨蟹座的所有属性:宅(恋家)和怀旧。其实八零后的小伙伴们多多少少都有一些怀旧小情节,特别是大学的时光,总让人难以忘怀,翘课、恋爱、泡吧。。。每当想起大学的时光,就想起了和舍友们一起打魔兽世界的情景。那时的魔兽世界60级封顶,插件还不完善,对艾泽拉斯世界完全陌生的我们只能看着NPC对话做任务,地图全靠腿一点点探,在摸索的道路上也收获了很多友谊,大家都是那么的单纯、互助、陶醉。后来陆续开放的:TBC、大灾变、熊猫人等资料片版本,种族、职业、专业、技能也多了很多,玩法虽多了,但那种简单快乐的感觉已经没有了。
直到今天,可以说没有任何一款游戏可以取代魔兽世界(60年代)在博主心中的地位。暴雪似乎也明白玩家们的心思,开放了60和70的怀旧服,但博主认为这只是昙花一现。首先,老玩家们年龄集中在80后,现在都已拖家带口,每天参加工会活动是不可能的,而坑爹的月卡更是让人倒胃口。不如自己架个私服,约几个当年的小伙伴一起玩玩,重温经典,岂不美哉!
啰嗦了这么多,下面博主就来介绍一下魔兽世界Docker私服的搭建方法,之所以选择Docker,是因为它部署方便,X86架构的Linux就能跑,不用另开虚拟机,节省了NAS宝贵的硬件资源。
本文教程以命令形式部署,群晖和Portainer图形化操作大同小异依葫芦画瓢即可。
前期准备
服务器:X86架构,64位CPU,1G以上内存,Linux系统,博主用的是群晖,图形化省心省力(人懒)。
公网IP:这个无解,想多人一起嗨的话是必须,打电话给运营商要(移动和长城就别想了),实在要不到搞内网穿透。
开工
安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh --mirror Aliyun
拉Docker镜像
docker pull solipsist01/mangoszero
下载1.12.1 (5875)中文版客户端(5个多GB太大了,博客传不了,只能自己找了),解压(此处以/data/mangos/wow目录为例)
创建Docker容器(可参照容器说明)
端口:80(账户管理页面)8085(游戏服务)3724(登录认证)3443(远程管理)
两个IP地址填你的外网IP或者域名(别忘了在路由器上做端口映射)
“/data/mangos/wow”是刚才解压的客户端目录
“/data/mangos/config”是配置文件目录,创建一个,容器启动以后生成的配置文件都会自动保存在里面。
其余不变
docker run \ --name=mangos \ -d \ -p 80:80 \ -p 8085:8085 \ -p 3724:3724 \ -p 3443:3443 \ -e PUID=0 -e PGID=0 \ -e WAN_IP_ADDRESS=192.168.1.210 \ -e DOCKER_HOST_IP=192.168.1.210 \ -e MYSQL_ROOT_PASSWORD=mangos \ -e TZ=Asia/Shanghai \ -v /data/mangos/wow:/wow \ -v /data/mangos/config:/config \ --restart always \ solipsist01/mangoszero
进入容器
docker exec -it mangos /bin/sh
初始化数据库(两个自动脚本,先安装后升级)
/install/InstallDatabases.sh /install/UpdateDatabases.sh
初始化地图(自动脚本,从刚才解压的客户端里抓取地图文件,最终会存储在/data/mangos/config/wowfiles目录下,过程较慢耐心等待。。。完成以后/data/mangos/wow目录下的客户端文件就可以删了,留个wow空目录就行。)
/install/InstallWowfiles.sh
接下来就是汉化,这里通过修改数据库来实现,博主整理了几个SQL脚本给大家,下载这三个数据库脚本“1.sql” “2.sql” “3.sql” 到“/data/mangos/config”目录
在容器里内登入MySQL数据库(用户名root密码mangos)
mysql -uroot -pmangos
切换到mangos0库,导入SQL脚本,执行完退出数据库。
use mangos0; source /config/1.sql; source /config/2.sql; source /config/3.sql; exit;
还有,博主建议修改日志输出级别,否则大量的无用日志会导致调试模式下命令输入困难和磁盘爆满。/data/config/wowconfig目录下的“console.conf”和“mangosd.conf”这两个配置文件分别是调试服务配置和游戏服务配置。
首先调整两个配置文件中的日志输出级别(0代表最小输出),
LogLevel = 0 LogFileLevel = 0
重启容器
docker restart mangos
最后创建游戏账号(可以浏览器访问80端口的账号管理页面来初始化游戏账号管理平台并创建账号,跟着提示走就行。这里博主介绍一下命令行管理方式)
还是在容器内执行命令启动调试模式
/mangos/mangosd -c /config/wowconfig/console.conf
创建账号及密码(usernane换成你的账号名称,userpassword换成明文密码)
account create username userpassword
提升账号权限(username是你刚才创建的账号名称,3为GM权限,这里建议创建两个账号,一个GM账号一个普通账号,普通账号用来玩游戏,无需运行此命令提权)
account set gmlevel username 3
到此为止一个纯净的原汁原味的60年代私服就建好了,接下来要做的就是用客户端登录开始游戏了。
将刚下载的1.12.1客户端解压一份到玩游戏的电脑上,修改游戏客户端目录下的文件“realmlist.wtf”,将后面的地址改为你服务器的公网IP或域名。
set realmlist 192.168.1.210
下载插件(大脚1.12.1)解压至游戏客户端目录,接下来运行游戏登入刚才创建好的账号畅游艾泽拉斯世界吧。
来,和联盟的英雄们合个影。
补充
前文提到的“mangosd.conf”配置文件除了日志属性和服务器属性外还有大量的游戏属性可供修改,如初始等级、经验倍数、技能点数、掉落几率、怪物属性。。。等等,每项配置都附有详细的注释说明,由于配置项目太多博主就不一一解释了,英文差的可以到国内的大芒果论坛找中文注释、GM命令、装备代码等。
祝各位WOWer玩的开心!
参考
GitHub:https://github.com/mangoszero
论坛:http://www.mangoscn.com/
标准配置:http://www.mangoscn.com/archiver/?tid-21317.html
猎人百科全书:http://www.nfuwow.com/strategy/detail/artid/824.html
吴理魔兽四格漫画:https://www.u17.com/comic/2832.html
请问能提供下详细教程吗?这些Docker命令在哪里执行?群晖的Docker应该怎么样的步骤操作。客户端应该解压在群晖的哪里?谢谢!
sql1和2无法下载
好了,已经补上了。
安装完成,有几个问题:
1、web注册页面打不开,打开一堆代码,大概是62、63行什么错误;
2、使用命令创建的账号登入验证成功,但连不上MaNGOS Zero Server服务器。
群辉docker安装,路径为/volume1/wowserver/data/mangos/config和wow
初始化地图出现几个找不到。
博主能帮忙解答一下吗,谢谢。
1.这个问题我也遇到了,因为不太懂PHP所以没有解决,暂时用的命令来管理账号。
2.能登录且能显示服务器列表说明3724端口的认证服务正常,进不了游戏说明8085端口的游戏服务启动有问题,你可以稍等一下再试,还是不行的话可能就是端口不对或者缺少文件导致的服务启动异常再或者客户端版本不对应,看配置文件仔细排查一下。
初始化地图出现缺失文件可能是客户端版本不对应吧,也有可能是其它原因,你可以去http://ashamanecore.com/file%20repository/spp_classics_new/直接下载初始化好的地图文件放进去。
Linux下部署就是容易出各式各样的问题,如果很难解决的话可以尝试Win下工具部署,也很简单,见:https://github.com/celguar/spp-classics-cmangos/releases/tag/v2.0
谢谢博主的解答回复,我按图索骥再尝试一下。
祝新年快乐,工作顺利。
客气!我又写了一篇Windows的,如果你的硬件资源充足的话可以尝试一下。
谢谢博主,比自己编辑搭建方便多了。不过发现一个问题,有人任务做完后,任务列表里该任务还在,同时接了其他任务也无法显示出来。经过分析发现是由于mangos0.quest_template表中的部分任务任务title为NULL导致,我给一个简单解决办法:
update quest_template set title=CONCAT(‘[‘,entry,’]’,Objectives) where title is NULL;
非常感谢你的反馈,我之前也遇到过类似Bug,原来问题出在数据库啊。