Pterodacyl 翼龙面板的搭建与汉化

发布于 2022-02-21  725 次阅读


此文章仅发布于 冰凌家 转载请标明出处

本文章大部分图片托管于 路过图床 ,感谢路过图床!

本文章思路来源于 翼龙官方文档 ,并进行个人理解注释!


一.翼龙面板前端搭建

选择服务器系统

Pterodactyl 可在多种操作系统上运行,因此请选择最适合您使用的操作系统。

由于与 Docker 不兼容,Pterodactyl 不支持大多数 OpenVZ 系统。 如果您计划在基于 OpenVZ 的系统上运行此软件,那么您很可能不会成功。 (若您不清楚此段警告含义,后面讲到后端会进行详细解释)

操作系统系统版本是否支持备注
Windows所有如果阁下使用的是 Windows 作为服务器操作系统
请自行测试,本人无条件进行测试!
此文章所有操作指令均为 Linux 操作系统指令,请勿
直接代入 Windows 系统中使用!
Ubuntu18.04此文档基于此版本系统编写
 20.04 
CentOS7需要额外软件库
 8由于 Red Hat 标记 CentOS LinuxEOL
CentOS Stream滚动更新
CentOS 系列系统,本人不建议使用
若有需求,请转用 Rocky 或者 Alma Linux
Debian9需要额外软件库
 10 
 11 

 


安装依赖项

PHP 7.4 或 8.0(推荐),且安装有以下扩展:cli、openssl、gd、mysql、PDO、mbstring、tokenizer、bcmath、xml 或 dom、curl、zip 和 fpm,如果您计划使用 NGINX。

依赖项安装

请注意! 此文章所有系统指令均以 Ubuntu 18.04 为例!
# 添加 "add-apt-repository" 指令
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
# 添加 PHP, Redis, and MariaDB 的额外软件库 
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
add-apt-repository -y ppa:chris-lea/redis-server
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# 更新软件列表
apt update
# 如果您使用的是 Ubuntu 18.04,请添加 Universe 存储库
apt-add-repository universe
# 安装依赖项
apt -y install php8.0 php8.0-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis-server

安装 Composer

Composer 是一个 PHP 依赖管理器(类似于 Node.js 的 npm,或者 Python 的 pip)。

Composer 将会拉取你的项目所依赖的所有 PHP 软件包,并且为你管理它们。它被所有现代化的 PHP 框架和平台所使用,例如: Laravel, Symfony, Drupal, 和 Magento 2。 而翼龙面板前端正是使用的 Laravel !

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

下载程序文件

在进行此步骤之前,我们要为面板前端创建它的工作目录。

以下命令使用的路径仅为示例,阁下大可自己自定义路径,但是我在此提醒您,若您不用我示例使用的路径,请务必记住自己设置的程序所在的目录,并在后续各种涉及到程序运行目录的地方灵活操作!
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl

在为面板创建好它的工作目录后,我们将使用 curl 命令,从 Github 拉取翼龙官方预包装的程序文件压缩包,拉取完成后,我们需要对压缩包进行解压操作,并赋予 storage/ 与 bootstrap/cache/ 目录 755 权限。这两个目录作用是缓存动态资源以加速访问。

我们拉取的压缩包托管于 Github 上,由于大陆网络环境问题,阁下可能拉取失败或拉取比较缓慢,请阁下自行解决拉取问题。
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/

开始安装

假设阁下已经完成之前的步骤且现在所有文件都已下载,接下来我们需进行配置面板的一些核心部分。

   为面板创建 MYSQL 数据库  ==>  展开 / 收缩

首先,我们将复制我们的默认环境设置文件 .env ,并使用 Composer 安装核心依赖项,然后生成新的应用程序加密密钥。

cp .env.example .env
composer install --no-dev --optimize-autoloader

# 注意,以下指令仅针对于第一次安装部署翼龙面板前端
# 且对应数据库内无数据时执行,若阁下并非第一次安装且数据库内有数据,请忽略以下指令
php artisan key:generate --force
请备份您的加密密钥(.env 文件中的 APP_KEY)! 它用作所有需要安全存储的数据的加密密钥(例如 api 密钥)。 请将其存储在安全的地方! 如果您丢失它,所有加密数据都将无法恢复!即使您有数据库备份也无济于事!!!

面板核心环境配置

翼龙面板的核心环境可以使用应用程序中内置的几个不同的 CLI 命令轻松配置。 此步骤将涵盖设置会话、缓存、数据库凭据和电子邮件发送等内容。

php artisan p:environment:setup
php artisan p:environment:database
# 若使用 PHP 自带的 mail 拓展 (不推荐使用), 请在执行以下指令后选择 "mail"。
# 若使用自定义 SMTP 服务器,请在执行以下指令后选择 "smtp"。
php artisan p:environment:mail

配置数据库

现在我们要将面板所有的核心数据写入我们之前为面板准备的数据库内。

此步骤可能花费较长时间来进行执行,花费的时间取决于您的主机性能,主机与数据库主机的网络连接状态等因素。请耐心等待数据导入完成,切勿中途使用 CTRL+C 强制中断执行!

php artisan migrate --seed --force

为面板创建第一个用户

数据库配置完成后,您需要为面板创建一个管理用户,以便您可以登录面板。 为此,请运行以下命令。 并保证账户密码满足以下要求:8 个字符,大小写混合,至少一个数字。

php artisan p:user:make

为 WEB 程序用户设置权限

安装过程的最后一步是对 面板程序文件设置正确的权限,以便 WEB 服务器程序(例如Nginx 或者 Apache)可以正确执行文件。

若您使用的是 BTPanel 或者 aaPanel ,请按需修改 WEB程序用户名与用户组!
# 若使用 NGINX 或者 Apache (并非 CentOS 系统):
chown -R www-data:www-data /var/www/pterodactyl/*
# 若使用 NGINX 于 CentOS 系统:
chown -R nginx:nginx /var/www/pterodactyl/*
# 若使用 Apache 于 CentOS系统:
chown -R apache:apache /var/www/pterodactyl/*

注册队列监听服务

我们利用队列使应用程序更快,并在后台处理发送电子邮件和其他操作。 您需要注册队列监听服务以处理这些操作。

Crontab 设置

我们需要做的第一件事是创建一个新的 Cronjob,它每分钟运行一次以处理特定的任务,例如会话清理并将计划任务发送到守护进程。 您需要使用 sudo crontab -e 打开您的 crontab,然后将以下字符串以新一行粘贴进去,并保存更改。

* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1


创建队列监听服务

接下来,您需要创建一个新的 systemd 来保持我们的队列进程在后台运行。 该队列负责发送电子邮件并为翼手面板处理许多其他后台任务。

在 /etc/systemd/system 中创建一个名为 pteroq.service 的文件,其内容如下。

# Pterodactyl Queue Worker File
# ----------------------------------
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
# 不同的操作系统默认的 user 和 group 可能不同
# 若您使用宝塔面板 也请注意修改对应的 user 和 group 
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target
   若阁下在 CentOS 系统上使用 Redis 作为缓存  ==>  展开 / 收缩
   若阁下并未使用 Redis  ==>  展开 / 收缩

若您的系统使用了 Redis 请一定保证 Redis 在守护进程之前启动!

sudo systemctl enable --now redis-server  #若阁下使用宝塔,此指令可能不适合您

最后,启动队列监听服务并设置开启自动启动

sudo systemctl enable --now pteroq.service

WEB 服务器程序伪静态配置

若阁下要为前端站点启用 SSL 连接,请勿忘记在 WEB 服务器程序中配置 SSL 证书地址。否则 WEB 服务器程序将无法正常启动
请注意将 PHP 与 WEB 服务器程序的最大上传大小更改至阁下认为合理的数值!其参数名一般为 “upload_max_filesize” 与 “post_max_size” 。翼龙官方默认将其设置为 100M。阁下可根据自身需求自行合理修改!

若使用 Nginx 作为 WEB 服务器程序

请配置伪静态如下

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

若使用 Apache 作为 WEB 服务器程序

若伪静态未生效,一般表现站点为 404 错误,请检查 Apache 的 “rewrite” 模块是否正常启用!

阁下无需额外配置 .htaccess 已预设在程序 /public 目录中,正常来说无需多余配置。若阁下需要其文件,我已将文件内容粘贴至下方:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
    RewriteEngine On
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

针对中国大陆用户的特殊设置

由于中国大陆的网络环境,阁下的服务器可能无法正常访问 Google 的 recaptcha 验证服务。这会导致用户无法正常登入面板前端,阁下可在 .env 文件中新建行并添加如下配置以关闭 Google 的 recaptcha 验证服务。

RECAPTCHA_ENABLED=false

二.翼龙面板后端搭建

Wings (翼龙面板后端)是 Pterodactyl 的新一代服务器控制程序。 它已经使用 Go 从头开始重建,并从第一代 Nodejs 守护进程中吸取了经验。

选择服务器系统

操作系统系统版本是否支持备注
Windows所有不支持后端程序无法运行Windows 系列操作系统上
Ubuntu18.04此文档基于此版本系统编写
 20.04 
CentOS7需要额外软件库
 8由于 Red Hat 标记 CentOS LinuxEOL
CentOS Stream滚动更新
CentOS 系列系统,本人不建议使用
若有需求,请转用 Rocky 或者 Alma Linux
Debian9需要额外软件库
 10 
 11 

服务器硬件要求

要运行 Wings,您需要一个能够运行 Docker 容器的 Linux 系统。 大多数 VPS 和几乎所有专用服务器都应该能够运行 Docker,但也有特殊情况。

当您的提供商使用 VirtuozzoOpenVZ(或 OVZ)或 LXC 虚拟化时,您很可能无法运行 Wings。 一些提供商已经对嵌套虚拟化进行了必要的更改以支持 Docker。 请咨询您的服务器提供商以确保其支持嵌套虚拟化。经过测试 KVM 虚拟化可以正常进行嵌套虚拟化操作。

最简单的检查方法是输入 systemd-detect-virt。 如果结果不包含 OpenVZLXC,应该没问题。 在没有任何虚拟化的情况下运行专用硬件时,将出现 none 的结果。

如果由于某种原因不起作用,或者您仍然不确定,您也可以运行以下命令。

sudo dmidecode -s system-manufacturer

安装依赖项

后端仅需 curl 与 docker 作为依赖,一些 Linux 发行版本已经预装了 curl ,若您的操作系统未安装 curl。您可输入一下指令以安装 curl

sudo apt update
sudo apt install curl -y

安装 Docker

我们使用官方的脚本一键安装并设置镜像源为阿里云。若阁下执意使用其他方式安装,我也不在此赘述其他安装方案。

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.docker.com/ | CHANNEL=stable bash   #若阁下的主机不在国内,推荐使用此指令
由于一些主机供应商使用了其定制的 Linux 内核。其一些内核并不支持需要的 Docker 特性。请使用 uname -r 以确定阁下使用的内核名称。如果阁下使用的内核名称为 -xxxx-grs-ipv6-64 或者 -xxxx-mod-std-ipv6-64 ,那么其极有可能无法正常工作!

设置 Docker 开机自启

如果您使用的是带有 systemd 的操作系统(Ubuntu 16+、Debian 8+、CentOS 7+),请运行以下命令以在您启动机器时启动 Docker。

systemctl enable --now docker

启用交换内存

在大多数系统上,Docker 默认无法设置交换内存。 您可以通过运行 docker info 并查找在底部附近的输出是否有 WARNING: No swap limit support 来确认这一点。

启用交换内存完全是可选的,但如果您要为他人托管并防止 OOM 错误,我们建议您这样做。

要启用交换内存,请以 root 用户身份打开 /etc/default/grub 并找到以 GRUB_CMDLINE_LINUX_DEFAULT 开头的行。 确保该行在双引号内的某处包含 swapaccount=1

之后,运行 sudo update-grub 然后 sudo reboot 重新启动服务器以启用交换内存。 下面是该行应该是什么样子的示例,请勿逐字复制该行。 它通常具有其他特定于操作系统的参数。

GRUB_CMDLINE_LINUX_DEFAULT="swapaccount=1"
一些 Linux 发行版可能会忽略 GRUB_CMDLINE_LINUX_DEFAULT。 如果以上实例不生效,您可能需要使用 GRUB_CMDLINE_LINUX

安装 Wings(翼龙面板后端)

安装 Wings 的第一步是确保我们有所需的目录。为此,请运行以下命令,这将创建基本目录并下载 Wings 可执行文件。

Wings 程序托管于 Github 上,由于大陆网络环境问题,阁下可能拉取失败或拉取比较缓慢,请阁下自行解决拉取问题。
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
chmod u+x /usr/local/bin/wings
如果您使用的是 OVHSoYouStart 提供的服务器,请注意您的主驱动器空间可能分配给 /home,而不是默认分配给 /。 请考虑将 /home/daemon-data 用于服务器数据。 这可以在创建节点时轻松设置。

对接翼龙面板的前后端

安装 Wings 和所需组件后,下一步是在已安装的 前端上创建一个节点。 转到前端管理视图,从侧边栏中选择 Nodes,然后在右侧单击 Create New 按钮。

创建节点后,单击它,将出现一个名为“Configuration”的选项卡。 复制其框中内容,将其粘贴到 /etc/pterodactyl 中名为 config.yml 的新文件中并保存。

或者,您可以单击“Generate Token”按钮,复制 bash 命令并将其粘贴到后端服务器终端中。

如果阁下在配置 Node 时勾选了 SSL 连接,请在 config.yml 文件中,在 cert:key: 行填写对应域名 SSL 证书路径。否则后端程序将无法正常启动!

以调试模式启动 Wings

要启动 Wings,只需运行以下命令,它将以调试模式启动。 一旦您确认它正在运行且没有错误,请使用 CTRL+C 来终止该进程并准备开始为期创建守护进程。 根据您服务器的网络状态,第一次拉取和启动 Wings 可能需要几分钟时间。

sudo wings --debug

若前端节点图标变成绿色心脏跳动动画,则说明前后端对接成功了

后期有任何问题,阁下都可以选择添加 --debug 参数以在调试模式下运行 Wings。

创建守护进程(使用 systemd)

若阁下在之前步骤中前后单可正常通讯,我们就可以将下面的内容放在 /etc/systemd/system 目录中名为wings.service 的文件中。(需要新建此文件)

[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

然后,运行以下命令重新加载 systemd 并启动 Wings。

systemctl enable --now wings

至此,翼龙面板搭建完成。

三.翼龙面板汉化

此汉化为开源社区首家,国内第一个开源的新版本翼龙面板汉化! 来自 iLwork.CN Studio | 冰凌家 !!

如果阁下喜欢此汉化项目,请给我一个 Star 吧!

下载汉化文件

汉化仓库托管于 Github 上,由于大陆网络环境问题,阁下可能无法访问或者访问缓慢,请阁下自行解决访问问题。

Releases · ilworkcn/pterodactyl-chinese-manual (github.com)

并点击下载最新的汉化文件补丁

覆盖程序文件

将刚刚下载好的汉化文件中的 appresource 文件夹对翼龙面板前端进行同名覆盖操作

开始重新构建面板前端

不推荐在生产环境中进行此操作。此操作会中断当前所有连接!

此部分来源于 翼龙面板社区指南 并进行个人汉化理解

翼龙面板前端是用 React 构建的。 对源文件的任何更改都需要重新编译才能使更改生效。 以下部分说明了如何执行此操作。

安装依赖项

以下命令将安装构建面板所需的依赖项。 构建工具需要 NodeJS,yarn 用作包管理器。

# Ubuntu/Debian 系统
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
apt install -y nodejs
# CentOS 系统
curl -sL https://rpm.nodesource.com/setup_14.x | sudo -E bash -
sudo yum install -y nodejs yarn      # CentOS 7 系统
sudo dnf install -y nodejs yarn      # CentOS 8 系统

接下来安装所需的 javascript 包

npm i -g yarn      # 安装yarn
cd /var/www/pterodactyl  #进入面板前端目录,请按您的运行环境进行调整
yarn       # 安装面板构建依赖项

重新编译面板前端

cd /var/www/pterodactyl     #进入面板前端目录,请按您的运行环境进行调整
yarn build:production       # 开始构建面板
您可以使用命令 yarn run watch 几乎实时地查看构建的进度

四.一切就绪

不出意外的话,阁下已经完成了翼龙面板的搭建/前后端对接/以及汉化!

请尽情使用吧!