Docker-Compose部署
数据库镜像
xhatt/dnfmysql:5.6服务端镜像timoxo/dnfserver:1.0
注:可能与dp插件有冲突,可使用低版本dp
-
docker-compose.yaml
新建一个
docker-compose.yaml文件,具体参数可以根据实际修改需要注意的环境变量:
MYSQL_ROOT_PASSWORD :数据库root用户的密码(默认外部只能用root访问)
PUBLIC_IP :服务器的IP地址(单机可能就是本地的IP,没试过)需要开放的端口:
ports下的端口需要全部开放出来!
version: 3" services: dnfmysql: image: xhatt/dnfmysql:5.6 ports: - 3306:3306 environment: - TZ=Asia/Shanghai # game账户ip白名单 - ALLOW_IP=172.% # game账户密码,貌似不能修改 - GAME_PASSWORD=uu5!^%jg # root密码 - MYSQL_ROOT_PASSWORD=88888888 restart: unless-stopped volumes: - ./dnfmysql/mysql:/var/lib/mysql container_name: dnfmysql dnfserver: image: timoxo/dnfserver:1.0 depends_on: - dnfmysql environment: - TZ=Asia/Shanghai # 自动获取mysql容器的ip - AUTO_MYSQL_IP=true # mysql容器名称(主机名) - MYSQL_NAME=dnfmysql # game账户密码 - GAME_PASSWORD=uu5!^%jg # 自动获取公网ip - AUTO_PUBLIC_IP=false # 这里填写你的IP地址 - PUBLIC_IP=你的IP地址 # DP2插件 - DP2=true shm_size: 10g memswap_limit: -1 mem_limit: 1g cpus: 1.0 restart: unless-stopped ports: - 8188:8188/tcp # 花枝登录器 网关 - 20303:20303/tcp # df_dbmw_r - 20303:20303/udp # df_dbmw_r - 20403:20403/tcp # df_dbmw_r - 20403:20403/udp # df_dbmw_r - 40403:40403/tcp # df_manager_r - 40403:40403/udp # df_manager_r - 7000:7000/tcp # df_bridge_r - 7000:7000/udp # df_bridge_r - 7001:7001/tcp # df_channel_r - 7001:7001/udp # df_channel_r - 7200:7200/tcp # df_relay_r - 7200:7200/udp # df_relay_r - 10011:10011/tcp # df_game_r - 31100:31100/tcp # df_community - 30303:30303/tcp # df_monitor_r - 30303:30303/udp # df_monitor_r - 30403:30403/tcp # df_guild_r - 30403:30403/udp # df_guild_r - 10052:10052/tcp # df_game_r - 20011:20011/tcp # df_game_r - 20203:20203/tcp # df_dbmw_r - 20203:20203/udp # df_dbmw_r - 30703:30703/udp # df_coserver_r - 11011:11011/udp # df_game_r - 2311:2311/udp # df_stun_r - 2312:2312/udp # df_stun_r - 2313:2313/udp # df_stun_r - 30503:30503/udp # df_statics_r - 11052:11052/udp # df_game_r volumes: - ./dnfserver/data:/data - ./dnfserver/log:/home/neople/game/log container_name: dnfserver
-
构建
与
docker-compose.yaml文件同一目录下使用命令修改yaml文件后也需要重新执行,注意:已生成的文件可能需要手动修改或者删除后重新生成,防止修改了参数不生效
# -d 表示后台运行 docker-compose up -d -
注意
构建成功后,如果你没有修改
docker-compose.yaml文件里的挂载目录,那么会在其目录下生成两个文件夹:
1️⃣dnfserver:服务端目录,包含服务端所需要的关键文件
2️⃣dnfmysql:数据库目录
此时我们需要准备df_game_r、privatekey.pem、publickey.pem、Script.pvf四个文件,放入dnfserver/data目录下,再重启容器。
最后的结构类似如下:├── docker-compose.yaml ├── dnfmysql └── dinfserver ├── log └── data ├── dp2 ├── login ⭐ ├── plugins ⭐ ├── run ⭐ ├── df_game_r ├── privatekey.pem ├── publickey.pem └── Script.pvf⭐在原作者的镜像重新设计了一下镜像,以下是新增功能:
3️⃣ run 文件:可在data文件夹下放置一个run文件替换原有镜像里的(建议将容器内的run文件复制到本地,在其基础上修改)
4️⃣ login 文件夹:拓展功能,可替换原镜像登录器(只试过花枝系的,其他登录器未测试)
5️⃣ plugins 文件夹:拓展功能,可添加新插件,目前试过frida、帝落破解(每个插件需单独新建一个文件夹,如果在文件夹里放置.sh脚本文件,那么在启动容器的时候都会执行这个脚本文件)#我的目录结构(参考) ├── login │ ├── home │ └── root └── plugins ├── frida └── diluo重启容器
#查看容器所有信息 docker ps #重启容器 docker restart [容器ID或名称] -
验证
查看
/log/siroco11/Logxxxxxxxx.init文件,当出现五国 + 两个感叹号带代表成功Logxxxxxxxx.init文件(其中xxxxxxxx为当天时间),两个感叹号为Connect To[12:50:05] [!] Service Restrict List ... [12:50:05] Security Restrict Begin [12:50:05] - RestrictBegin : 1 [12:50:05] - DropRate : 0 [12:50:05] Security Restrict End [12:50:05] GeoIP Allow Country Code : CN [12:50:05] GeoIP Allow Country Code : HK [12:50:05] GeoIP Allow Country Code : KR [12:50:05] GeoIP Allow Country Code : MO [12:50:05] GeoIP Allow Country Code : TW [12:50:05] [!] Monitor Server Connected [12:50:05] [!] Guild Server Connected [12:50:15] [!] Connect To Monitor Server ... [12:50:15] [!] Connect To Guild Server ...