本文最后更新于 2024-06-28,文章内容可能已经过时。

前言

大家好,这里是可爱的Cherry。

平时大家玩游戏的时候会部署一些个人服务器游玩吗?Cherry在没有接触docker之前,一直是用windows来部署游戏服务器后端的,部署教程都很复杂,而且需要电脑一直开机很麻烦。

曾经在一篇合集中,我单独介绍过panel这一款项目,翼龙面板是一款专门用于部署和管理个人游戏服务器的工具,用户可以像管理docker、云主机一样,管理所有开设的游戏服务器。项目使用隔离的 Docker 容器中运行所有游戏服务器,同时向最终用户展示了美观直观的 UI。

今天,Cherry带来的是该项目的汉化版——翼龙面板汉化版,由开源社区针对panel翼龙面板的管理后端汉化并本土化的版本,采用的是原项目实时更新主分支的dev内容。

68747470733a2f2f63646e2e707465726f64616374796c2e696f2f736974652d6173736574732f707465726f64616374796c5f76315f64656d6f2e676966.gif

支持的游戏列表如下:
image.png

项目地址:https://github.com/pterodactyl-china/panel


系统部署

一、前期准备

🔻新建一个文件夹/etc/pterodactyl/,然后在文件夹下新建logs,database,var,nginx,certs共5个文件夹
image.png
🔻新建一个路径/volume1/docker/panel/docker-compose.yaml文件,将下面代码复制进去,根据自己的需求修改代码,然后放到目录下。

version: '3.8'
x-common:
  database:
    &db-environment
    # 不要将下面行尾 "&db-password" 删除,这对面板功能很重要。
    MYSQL_PASSWORD: &db-password "panel"    #修改panel为自定义密码
    MYSQL_ROOT_PASSWORD: "panel"                  #修改panel为自定义root密码
  panel:
    &panel-environment
    APP_URL: "http://cgakki.top:56783"     #修改为自己的外网地址,和下面端口保持一致
    APP_TIMEZONE: "Asia/Shanghai"
    APP_SERVICE_AUTHOR: "noreply@example.com"
    # 如果您想使用 Let's Encrypt 为面板生成 SSL 证书,请取消下面的注释行并写入配置
    # LE_EMAIL: ""
  mail:
    &mail-environment          #SMTP根据自己实际情况改,也可以不改
    MAIL_FROM: "noreply@example.com"
    MAIL_DRIVER: "smtp"
    MAIL_HOST: "mail"
    MAIL_PORT: "1025"
    MAIL_USERNAME: ""
    MAIL_PASSWORD: ""
    MAIL_ENCRYPTION: "true"

# ------------------------------------------------------------------------------------------
# 下面的危险区域。 请仅在您了解自己在做什么的情况下进行以下修改。

services:
  database:
    image: mariadb:10.5
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - "/etc/pterodactyl/database:/var/lib/mysql"
    environment:
      <<: *db-environment
      MYSQL_DATABASE: "panel"
      MYSQL_USER: "pterodactyl"
  cache:
    image: redis:alpine
    restart: always
  panel:
    image: ghcr.dockerproxy.com/pterodactyl-china/panel:latest
    restart: always
    ports:    #两个端口选一个就行了,另外一个注释掉,看你APP_URl用的是http还是https
      - "56783:80"          #这个HTTP端口,可以改左边,改了的话上面的APP_URL要对应左侧端口
      # - "443:443"            #这个HTTPS端口,同样改了的话上面的APP_URL要对应左侧端口
    links:
      - database
      - cache
    volumes:
      - "/etc/pterodactyl/var/:/app/var/"
      - "/etc/pterodactyl/nginx/:/etc/nginx/http.d/"
      - "/etc/pterodactyl/certs/:/etc/letsencrypt/"
      - "/etc/pterodactyl/logs/:/app/storage/logs"
    environment:
      <<: [*panel-environment, *mail-environment]
      DB_PASSWORD: *db-password
      APP_ENV: "production"
      APP_ENVIRONMENT_ONLY: "false"
      CACHE_DRIVER: "redis"
      SESSION_DRIVER: "redis"
      QUEUE_DRIVER: "redis"
      REDIS_HOST: "cache"
      DB_HOST: "database"
      DB_PORT: "3306"
networks:
  default:
    ipam:
      config:
        - subnet: 172.20.0.0/16

二、启动项目

方法一:、SSH部署

通过ssh登录NAS后台,然后输入以下指令

#来到文件夹
cd /volume1/docker/panel
#启动容器
docker-compose up -d

方法二:群晖部署compose

打开container manager,选择项目,点击新建,选择penpot路径,点击下一步即可
image.png


三、生成账号

🔻生成管理员账号,输入下面指令

docker-compose exec panel php artisan p:user:make

image.png

四、部署后端

🔻先登录前端面板,根据流程新建地域、节点
image.png
🔻节点按图片设置,所有的空都需要填上,填完以后创建节点,其中守护进程端口和守护进程SFTP端口不能冲突,作为API调用使用。
image.png
🔻分配ip和端口给游戏服务器使用,作为游戏访问地址,和panel当前的控制面板UI不同。特别要注意的是,如果不采用端口,则填写的是NAS宿主机的IP地址,否则无法新建服务器。
image.png
🔻创建完成以后,点到配置页面,新建一个/etc/pterodactyl/config.yml将配置文件代码复制进去。或者点击右侧自动生成节点,复制指令。
方法一
image.png
方法二
image.png
🔻通过SSH登录NAS后,输入下列指令安装wings

# 下载wings,记住/usr/local/bin/wings这个目录,以后如果要删除,也可以来这里删
curl -L -o /usr/local/bin/wings "https://mirror.ghproxy.com/https://github.com/pterodactyl-china/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"

# 赋权
sudo chmod u+x /usr/local/bin/wings

# 重点,方法二才需要使用,不要搞错
cd /etc/pterodactyl && sudo wings configure --panel-url http://XXXXX:56781 --token ptla_d0bvimYlOT6fuKjHE7nX0ZJEG3eQ9l5B8Eu7aHFmLzw --node 1

# 启动后端
wings --debug

🔻可以看到项目都启动了
image.png
🔻回到面板节点,看看绿色小心心在不在,在就说明正确配置了。
image.png

五、配置守护进程(可选)

🔻为了确保服务中断后自动重启,需要通过systemctl配置守护进程,将下面的内容放在 /etc/systemd/system 目录下的 wings.service 文件中后。键入指令重启systemctl enable --now wings

[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service

[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target

系统使用

至此,我们的翼龙面板前后端都部署好了,剩下的就是配置数据库、存储、模板,然后就开服了。

(一)新增游戏服务器

需要配置网络环境、数据环境、游戏模板等。
image.png
image.png
image.png
🔻回到服务器页面,点击右侧的小扳手,可以来到安装页面。
image.png
🔻可以看到项目正在启动中,采用的docker的方法安装游戏服务器
image.png
🔻服务器正常跑通
image.png

(二)配置数据库主机

主要用途是给游戏服务器配置数据库长久存储使用的,这里特别账号必须 具有 WITH GRANT OPTION 权限,最好在刚才的mysql数据库基础上,新建一个数据库,专门用来存储游戏数据。
image.png
在游戏服务器内可配置数据库节点
image.png

(三)挂载存储路径

主要目的是为了游戏服务器持久化,这个存储路径都是可以自定义的,但是左侧和右侧要保持路径一致,因为wings是在宿主机上运行服务的。
image.png
成功挂载
image.png

(四)游戏服务器模板

模板库:https://github.com/pelican-eggs/eggs
image.png

(五)反代游戏服务器

可以看到,端口只被分配给了本地ip,因此如果需要其它地方访问游戏服务器的话,需要将端口进行反代。
image.png