こんにちは、皆さん!
おはよう、皆さん!
はい、この記事を見ているということは、Pterodactylを導入したいと考えている人でしょう。
今回は、そんなあなたのために!!!ちょー分かりやすくPterodactylの導入方法を説明します!
わからないところがあれば、コメントで指摘をお願いします。
記事に追記してさらにわかりやすくします!
前提として、当記事はUbuntu 22.04 LTSを使用しています。
他のOS(Cent OS等)でのインストール方法については、この記事では書いていません。
Pterodactylとは?
Pterodactylは、ゲームサーバーの管理パネルです。
画像の通りで、コンソール画面と、サーバーに関する詳細を表示してくれます。
サーバー管理、ファイル管理、データベース、等々全てを管理できてしまうんです。
他にもCron機能やバックアップ機能、ポートの割り当て機能など…数えきれないほどの機能があります。
Pterodactylは、レンタルサーバー等で使われているイメージがありますね。
例えば、agames.jpもこのPterodactylが使用されています。
パネルのインストール
まずは、フロントエンド、つまりパネル側をインストールします。
このフロントエンドは、バックエンド側に命令を送るためのリモコンのような役割をします。
フロントエンドがバックエンドに命令を送り、バックエンドがそれを処理します。
そうして、様々な管理や処理が実際のサーバーに行われる仕組みとなっています。
この記事では今後
- フロントエンド = Panel
- バックエンド = Wings
と呼んでいきます。
0. 準備
準備として、rootログインを行っておきましょう。
sudo su
これでrootログインが完了です。
また、アップデートとアップグレードもします。
apt update
apt upgrade
これで準備は完了です。
1. 依存関係のインストール
Panelの依存関係をインストールしていきます。
まずはインストールに必要なコマンド一式を導入していきます。
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
これで一気に必要なコマンドを導入出来ます。
次に
- PHP
- Redis
- MariaDB
のレポジトリを追加していきます。
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
これで上記の3つのレポジトリを追加できました。
次に、Redisの公式レポジトリを追加します。
まずはgpg鍵を登録していきます。
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
登録出来たら、次にレポジトリを追加します。
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
これで公式レポジトリの追加も完了しました。
そして、アップデートしてレポジトリの追加を反映させます。
apt update
これでレポジトリの追加は終わったので、依存関係を入れていきます。
- PHP 8.1
- MariaDB
- Nginx
- tar
- unzip
- Git
- Redis
以上の7つを導入します。
apt -y install php8.1 php8.1-{common,cli,gd,mysql,mbstring,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
これで全ての依存関係の導入が完了しました。
2. Pterodactylのダウンロード
次にPterodactylのフロントエンドをダウンロードします。
まずはPterodactyl用のディレクトリを作成して、移動します。
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
次にフロントエンドをダウンロードして、解凍します。
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/
これでPterodactylのフロントエンドのダウンロードは完了です。
3. MySQLのユーザー作成
次にMySQLでのユーザー作成と、権限設定を行います。
mysqlコマンドで、MySQLのrootにログインを行います。
mysql
そして、ユーザーとデータベースを作成して、権限を付与します。
create user 'pterodactyl'@'127.0.0.1' identified by 'password';
create database panel;
grant all on panel.* to 'pterodactyl'@'127.0.0.1' with grant option;
これで完了です。
ユーザー作成の「password」の部分は、あなたの好きなパスワードを入れてください。
最後にexitしたら、MySQLでの作業は終了です。
exit
4. アプリケーションキーの生成
envファイルのサンプルをコピーしてから、composerで依存関係をインストールします。
その後、アプリケーションキーを生成させます。
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
これで完了です。
composerコマンドを実行するとき、警告が表示されます。
ですがそれはそのまま続行しても大丈夫です。エンターキーを押すことでそのまま続行できます。
5. envファイルのセットアップ
まずは基本的なパネルの設定をセットアップします。
php artisan p:environment:setup
- Egg Author Email
- Application URL
- Application Timezon
はそのままエンターを押して進めてください。
- Cache Driver
- Session Driver
- Queue Driver
は「redis」と入力してエンターを押します。
- Enable UI based settings editor?
- Enable sending anonymous telemetry data?
- Redis Host
- Redis Port
はそのままエンターを押して進めてください。
次に、データベースの設定をセットアップします。
php artisan p:environment:database
- Database Host
- Database Port
- Database Name
- Database Username
はそのままエンターを押して進めてください。
最後の「Database Password」は、あなたがMySQLのユーザーを作ったときに決めた、パスワードを入力してください。
このパスワード入力は、文字を打っても画面に表示されませんが、正常に打てているはずです。
Server sent charset (0) unknown to the client.
このようなエラーにより、セットアップが失敗することがあります。
これは、最新のMySQLの文字コードの設定の問題にあります。改善は非常に簡単です。
まずは、MySQLの設定ファイルを開きます。cd /etc/mysql/mariadb.conf.d vim 50-server.cnf
この例では「vim」を使っていますが、nanoでもviでも何でも大丈夫です。
設定ファイルが開けたら、一番下の方にある
character-set-collations = utf8mb4=uca1400_ai_ci
と書いてある行の先端に「#」を付けます。
#character-set-collations = utf8mb4=uca1400_ai_ci
付けて保存したら、必ずMySQLを再起動してください。
systemctl restart mariadb
これでもう一度MySQLのセットアップをやれば、うまくいくはずです。
6. その他のセットアップ
MySQLのデータをセットアップします。
これはコマンド一つで勝手に行ってくれます。
php artisan migrate --seed --force
このコマンドは時間がかかる場合がありますが、基本的に途中で中断するべきではありません。
それが完了したら、最初の管理者用のユーザーを作成します。
php artisan p:user:make
質問に指示に従って入力していってください。
- Is this user an administrator?: yes
- Email Address: ログイン時のメールアドレス
- Username: ログイン時のユーザー名
- First Name: 適当な名前
- Last Name: 適当な名前
- Password: ログイン時のパスワード
これでユーザーの作成も完了です。
次は、Nginxにpterodactylのディレクトリへのアクセスを許可します。
chown -R www-data:www-data /var/www/pterodactyl/*
これだけで完了です。
7. Queueセットアップ
次にQueueをセットアップします。
まずはcrontabのエディタを開きます。
crontab -e
開いたら、Pterodactylの処理に使われるcronを登録します。
一番最下部に文字を追加します。
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
追加できたら、セーブして終了します。
次に、Queue Workerをセットアップします。
ディレクトリを移動して、新たにファイルを作成します。
cd /etc/systemd/system
nano pteroq.service
コピペ時、バグらないために「nano」を使います。
ファイルを作成出来たら、中身を書いていきます。
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[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
これで大丈夫です。
8. サービスの自動開始
サービスを自動的に開始するようにします。
systemctl enable --now redis-server
systemctl enable --now pteroq.service
これで、Redisサーバーと、先ほど作ったQueue Workerが動作するようになります。
9. Nginxプロキシのセットアップ
まずはIPアドレスを確認しておきます。
ip a
沢山出てくると思いますが、よく見ると、「192.168」から始まって「/24」で終わるIPがあると思います。
これがあなたのIPアドレスです。
重要なのは、「/24」の前の「192.168.1.5」の部分です。
覚えておいてください、またはメモ等でも大丈夫です。
(IPアドレスは人によって違うので、必ず各自で確認してください!)
次に、Nginxのバーチャルホストの設定をしますが、その前にデフォルト設定を削除します。
rm /etc/nginx/sites-enabled/default
これでデフォルトの設定が削除されました。
次に新しい構成を追加します。
nano /etc/nginx/sites-available/pterodactyl.conf
これは、コピペ時にバグらないようにするため、必ずnanoを使いましょう。
confファイルを新たに追加したら、構成を書いていきます。
server {
listen 80;
server_name ip;
root /var/www/pterodactyl/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}
server_nameの「ip」の部分はあなたの先ほど取得した、IPアドレスを入れます。
これで保存してください。
あとは構成を有効にして、Nginxを再起動するだけです。
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
systemctl restart nginx
これで完了です。
10. アクセス確認
ウェブブラウザを開いて、あなたのIPアドレスにアクセスします。
そうすると、Pterodactylのログイン画面が出てくるはずです。
これでPanelの構築が完了しました。
Wingsのインストール
次にバックエンド、サーバーの処理などを実際に行う側をインストールします。
0. 準備
準備として、rootログインと環境確認を行います。
sudo su
これでログインは完了です。
次は環境を確認するためのコマンドを実行します。
systemd-detect-virt
このコマンドを実行して「OpenVZ」または「LXC」という文字が入っていなければ、Wingsが対応していて、しっかり動作してくれる環境です。
「none」であれば、100%安定動作するでしょう。
1. 依存関係のインストール
まずは依存関係のインストールに必要な「curl」を入れます。
apt install curl
次にdockerを入れます。
Pterodactylのサーバーは、docker上で動作するため、必要です。
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
dockerを入れたら、起動します。
systemctl enable --now docker
これで起動できました。
2. Wingsをインストール
次に、Wingsをインストールしていきます。
必要なディレクトリを作成し、Wingsをダウンロードして、権限を設定します。
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
これでWingsのインストールは完了です。
3. セットアップ
次にWingsをセットアップしていきます。
そのためには、まずパネルにログインしてnodeを設定する必要があります。
node = wingsがインストールされているコンピューター
まずは、ロケーションを作っていきます。
ログイン後、上の歯車マークから、管理者設定を開きます。
開いたら、左のタブから「Locations」を選択。
青い「Create New」のボタンを選択します。
最後に「Short Code」に国コードを入力して「Create」を選択。
私は日本のコード「ja」を入力して作成しました。
これでロケーションの作成は完了です。
次に、nodeを作成します。
先ほどと同じように左から「Nodes」そして「Create New」を選択します。
それぞれ情報を入力していきます。
- Name: nodeの名前
- FQDN: nodeのIPアドレス
- Communicate Over SSL: HTTP
あとのメモリ等は、サーバーのメモリをそのまま入力すればOKです。
(Over-Allocationには「-1」を入力してください。)
作成できたら、次に「Configuration」のタブを開きます。
開くと「Configuration File」という構成内容があります。
それをコピーします。
コピーしたら、Wingsに設定する必要があります。
nanoで構成ファイルを作成して開きます。
nano /etc/pterodactyl/config.yml
開いたら、パネルに書かれている構成内容をペーストします。
あとは保存して終了してください。
実際に動作確認します。
wings --debug
これで実際にWingsを一時的に起動して、エラーがないか確認します。
エラーが無ければ成功です!
「Ctrl」と「C」を同時に押してWingsを停止します。
4. サービス化
Wingsをこのままサービスとして登録します。
nano /etc/systemd/system/wings.service
コピペするため「nano」で開いてください。
開いたら、サービス構成を書きます。
[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
書いたら、保存してください。
あとはサービスを起動すれば、Wingsが稼働し始めます。
systemctl enable --now wings
これでWingsのセットアップも完了です。
5. Allocation
ポートをノードに割り当てます。
上のタブから「Allocation」を選択します。
選択したら「Assign New Allocations」を設定します。
- IP Address: nodeのIPアドレス
- Ports: nodeで使えるようにするポート
これで「Submit」を押せば完了です!
サーバーを作ってみる
では実際に、Pterodactylでサーバーを作成してみます!
まずは、左のタブで「Servers」を選択して「Create New」を選択。
- Server Name: サーバーの表示名
- Server Owner: サーバーの所有者
- Start Server when Installed: サーバーの準備完了後に自動起動するかどうか
- Node: 使用するnode
- Default Allocation: メインのポートを指定
- Additional Allocation(s): サブのポートを指定(Geyser / Dynmap等)
- CPU Limit: CPU使用率の制限(100% = 1コア)
- Memory: メモリ使用率の制限
- Disk Space: 容量の制限
- Enable OOM Killer: メモリを過度に使った場合にプロセスをキルするかどうか
これで一番下にある「Create Server」を押せば、サーバーが作成されます。
作成できたので、参加してみます。
MOTDは表示されました。
参加してみましょう…!
参加できました!
しっかりPterodactylのログも動作しているみたいです。
これで、あとは自由にPterodactylを使えます!
他人にサーバーを貸すのも、公開サーバーの管理用ツールとして使うのも良しです!
最後に
いかがでしたでしょうか?
個人的にPterodactylはあまり良いイメージがありません。
が、管理ツールとしては相当使いやすい部類なので、一度試してみてはいかがでしょうか?
導入が難しくて断念していた人も、是非もう一度試してみてください!
もしわからないことがあったら、コメントをお願いします!
では!
コメント