让我们试试使用Pterodactyl来轻松管理Minecraft服务器

目标

    • ホスティングサービスではなくセルフホストで動かしたい人

 

    • 多少のLinuxやネットワークの知識

 

    • ホストしたいマシンのカーネルがDockerをサポートしているか

 

    • 筆者のようにDockerあんまわからん人

 

    やる気

这次我们用Ubuntu,但似乎其他发行版也可以
关于安装方面,可能会有一些文档和额外的东西,不过别在意…

面板的安装

安装依赖关系

# "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

# 依存関係のインストール
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のインストール
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

PHPとMariaDB(MySQL)を使うのでインストールしておきます

パネルの動作に必要なファイルのダウンロード

mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
sudo curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
sudo tar -xzvf panel.tar.gz
sudo chmod -R 755 storage/* bootstrap/cache/

/var/www/以下の操作にはsudoが必要なので付け加えてます

インストール

数据库的结构

# MySQLコンソールにrootとしてログイン
mysql -u root -p

# パネル用のユーザーを作成
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'パスワード';

# DBを作成
CREATE DATABASE panel;

# さっき作成したDBへの権限を設定
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;

# Bye
exit;

构成

# 設定ファイルのコピー
cp .env.example .env
composer install --no-dev --optimize-autoloader

# 秘密鍵の生成
# .envファイルが絶対に外部へ公開してはいけません!
php artisan key:generate --force

安装

# setupはほぼyesで問題なかったような気がします
php artisan p:environment:setup
# DBの接続情報はユーザー名はpterodactyl、ホストはlocalhost、パスはさっき決めたもの
php artisan p:environment:database

数据库的设置

php artisan migrate --seed --force

可能需要花费一些时间。

创建用户

php artisan p:user:make

管理ユーザーを作成します。
パスワードは8文字以上、大文字・小文字と数字が混在している必要あり

Crontabの構成まずsudo crontab -eで設定ファイルを開きます
エディタを聞かれたらお好きなエディタを選んでください(自分はnano派)
ファイルの一番最後にこれを追記します

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

工人的构成
使用sudo nano /etc/systemd/system/pteroq.service在您的计算机上创建一个新的服务。

# Pterodactyl Queue Worker File
# ----------------------------------

[Unit]
Description=Pterodactyl Queue Worker

[Service]
# On some systems the user and group might be different.
# Some systems use `apache` or `nginx` as the user and 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

最终我将启动。

sudo systemctl enable --now pteroq.service

网络服务器的配置。请参考此处,由于使用的Web服务器和SSL的情况而有所不同。
Web服务器配置

关注要点

    • Cloudflareは使えないのでプロキシを外してください

 

    nginxとかのlocationでディレクトリを分けて運用でできないっぽいのでサブドメイン取ってバーチャルホストを作成してください

只要能够顺利访问Web仪表板,就算成功了。
(在我的环境中,使用Chrome无法登录,但是使用Firefox就可以登录)

安装守护者据说明书,这是一个名为Wings的守护程序,在面板上接收指令后会在后台执行Docker操作。

安装Docker

curl -sSL https://get.docker.com/ | CHANNEL=stable bash
systemctl enable --now docker

Wings的组成

下载

sudo mkdir -p /etc/pterodactyl
sudo 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")"
sudo chmod u+x /usr/local/bin/wings

形成请访问Web仪表板(<域名>/admin/),进入”Locations->Create New”界面,只需填写”Short Code”即可。建议使用易于理解的名称(如”Osaka”或”Tokyo”)。

接下来,点击”Nodes”->”创建节点”
输入节点的”名称”和”FQDN”。
如果在与控制面板相同的服务器上运行,那么FQDN可以与控制面板具有相同的域名。

image.png

考试

sudo wings --debug

请尝试输入”と”,检查面板上的”Nodes”名称旁是否变成了绿色的心形标志,这表示守护进程与之正常通信。
请确认是否有出现错误。
按Ctrl+C键即可结束。

将”デーモン化”翻译成中文时,可以表达为”恶魔化”。如果没有错误发生,将会将其守护化。
使用 sudo nano /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

启用自动启动并完成

systemctl enable --now wings

这样安装就完成了。

尝试搭建一个Minecraft服务器

IP地址和端口的分配
Nodes->Allocationに行き、Assign New Allocationsで作成できます
IPアドレスは「0.0.0.0」
ポートは使いたいポートを入力しましょう
25565-25567みたいな複数指定にも対応しています
IP Aliasは鯖を立てるときにわかりやすくするものです。お好みで。

建立服务器好的,花了很长时间。现在我们终于要建立服务器了。我们将使用”创建新服务器”选项来建立服务器。

設定名説明Server Nameその名の通りサーバーの名前Server Owner自分のユーザー名を入力Default AllocationMinecraftサーバーが使用するポート(25565など)Additional Allocation(s)追加のポートです(Dynmapとかが使用する8123など)Memory最大メモリ使用量Disk Space最大ディスク使用量NestMinecraftEggお好みで。自分はPaper推奨Docker Image最新版ならjava_17を選択Minecraft Version変更するならお好みのMCバージョンを入力如果点击“创建服务器”按钮,服务器将会被创建。
如果点击服务器详细页面中“删除”标签旁边的图标,就可以进入管理界面。

在途中被要求同意EULA的条款时,点击”我接受”按钮。

这样服务器就完成了。

如果主机防火墙开放了端口,客户端就可以进入了,那就没问题!

如果服务器控制台无法接收命令的情况。似乎是Linux内核的问题,可以通过添加JVM参数来解决。
在Startup->Startup Command的内存设置和jar文件之间的所有参数都删除,用-Djline.terminal=jline.UnsupportedTerminal替换,即可解决。

如果想定期执行某项任务的话

image.png

image.png如果是备份,则将ACTION设置为Create backup,
如果是重新启动,则将ACTION设置为Send power action,并将PAYLOAD设置为Restart the server,就可以了。

image.png

使用SFTP的方式

image.png

APIを使う方法

image.pngAPI参考文档在这里
在Authorization头部中输入Bearer(API密钥)(Bearer是必需的)
关于文档中的pterodactyl_session是个谜,好像不是必须的(可能是会话cookie…?)

顺便说一下,关于管理员拥有的应用程序 API 我们并不了解。

我想要运行Airplane、ARK和Rust的服务器!ARK游戏和Rust游戏的服务器是预先安装好的。
如果将Nest更改为Rust或Source Engine,它将显示在Egg列表中(尽管ARK是使用UE4引擎,但为什么要使用Source Engine呢…?)。

除了这个嵌入式附件,还可以运行Airplane游戏(纸片的叉子)、Terraria、Left 4 Dead、7 Days to Die、整合版Minecraft服务器、Five M和DiscordBot等等。

首先从这个存储库中下载所需的鸡蛋json文件。
下载完成后,进入管理员的巢穴页面,点击导入鸡蛋选项。

把刚刚下载的json文件指定给Egg File,
选择要关联的父母鸟,如果要创建新的,则点击Import Egg旁边的Create New按钮。
完成导入后,可以在创建服务器时使用。

bannerAds