[Pterodactyl Panel]マインクラフトサーバー管理パネルを立ててみよう(前編)

Minecraftサーバ開発・運営 Advent Calendar 2021の2日目の記事です

管理パネルって?

その名のとおりサーバーを管理するためだけのパネルです
ワンクリックでサーバーを作成、起動、再起動、移行が出来る優れものなので絶対建てましょう

宣伝とお詫び

思ったより書く量が大きくなってしまったので前編、後編に分けさせてもらいます
この前編は管理パネルを立てるとこまでやります
後編はノードを設置して実際にサーバーを起動してみます

あとReefServerっていうマインクラフトサーバーを作ってます
ぜひ遊んでみてください
Discord ホームページ

まず最初に

サーバー管理パネルといってもマインクラフトは超人気ゲームなのでいくつか管理パネルが存在します
今回はpterodactylというパネルを建てることにします
理由はデザインが最強なのと一度使わせてもらったことがあるからです
今回使うサーバーはGoogle Cloudのe2-micro(無料)ですが実際サーバーを運営するとなるとネットワーク使用料で破産することがあるので気を付けてください

サーバーを契約しよう

すでにサーバーを持ってる人は飛ばしてください

Google cloudでちゃちゃっと契約してきました
OSはubuntu20.04LTSです
あと、一番下にあるhttpとhttpsトラフィックを有効にしといてください

しばらく経つと一覧に表示されるのでクリック -> SSHをクリックすると簡単にサーバー接続できます
もちろんSSHクライアントを使っても接続出来ますが今回は省略します

管理パネルを建てよう

管理パネルを建てるっていっても公式サイトの指示に従うだけなので簡単です

sudo apt update
sudo apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
sudo LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
sudo add-apt-repository -y ppa:chris-lea/redis-server
sudo curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo apt update
sudo 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
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
sudo 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/
こんな感じでたくさん文字が出てきます

これでいったん必要な物のダウンロードは終了です
次はパネルのインストールをします

データベースのセットアップ

次はパネルのインストールをするといいましたが嘘です
データベースのセットアップをします
今回はmariadbというデータベースを使用します
必要なものはさっきインストールしたのでデータベースに潜ってユーザーとデータベースを作るだけです

sudo mysql

このコマンドを打つと画像のように今までと違った感じになるはずです

CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'password';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
exit;

これでpanelという名前のデータベースとそれに自由にアクセスできるpterodactylというユーザーが作成できました
ローカルでしかログインできないユーザーですが念のためパスワードは難しいもの置き換えてください

管理パネルをインストールしよう

さあやっとインストールする段階になりました
もうすぐです

cd /var/www/pterodactyl
sudo cp .env.example .env
sudo composer install --no-dev --optimize-autoloader

この時、画像のように本当にそのまま続けるか?
と聞いてくるのでそのままエンターを押すか、yesと入力してあげましょう

ここから必要な情報を入力していくことのですが、ここに書いてるのはあくまで一例なので自分に合うように変えてみてください

sudo php artisan key:generate --force
sudo php artisan p:environment:setup

Egg Author Email: 自分のメールアドレス
Application URL: http://このサーバーのipアドレスにしました
Application Timezone: Asia/Tokyo
Cache Driver: そのままエンター
Session Driver: そのままエンター
Queue Driver: そのままエンター
Enable UI based settings editor? (yes/no): そのままエンター

sudo php artisan p:environment:database

Database Host: そのままエンター
Database Port: そのままエンター
Database Name: そのままエンター
Database Username: そのままエンター
Database Password: password

Database Passwordは入力しても見えなくなってます
sudo php artisan migrate --seed --force
sudo php artisan p:user:make

管理用のアカウントを作成します

Is this user an administrator? (yes/no): yes
Email Address: 自分のメールアドレス
Username: ree
First Name: R
Last Name: ee
Password: 難しいパスワード

sudo chown -R www-data:www-data /var/www/pterodactyl/*
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1

最後にファイルを一つ作成し、中身を書く必要があります
今回はvimというエディターを使って書いていきます

sudo update-alternatives --config editor

まずvimというエディターを使うように設定します
/usr/bin/vim.basicと書かれているところの番号を選択します
今回は3でした

sudoedit /etc/systemd/system/pteroq.service

するとvimのエディター画面が出てくるのでキーボードのINSERTキーを押して入力モードにします
そして次の内容をコピペします

# Pterodactyl Queue Worker File
# ----------------------------------
[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

その後ESCキーを押して元の状態に戻してから:wqとキーボードで入力して保存してください

sudo systemctl enable --now pteroq.service

そして上のコマンドで作成したファイルを登録すれば管理パネル自体のインストールは完了です
お疲れ様でした

ウェブを構築しよう

ウェブ構築といってもファイルを少し書き込むだけなので簡単です
今回はめんどくさいのでsslなしで構築します
まずサーバーのipアドレスにアクセスしてみて画像のようなサイトが出るか確認してください

sudoedit /etc/nginx/conf.d/panel.conf

そして次の内容をコピペして保存します

server {
    listen 80;
    server_name default_server;
    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.0-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;
    }
}

そしてその変更を反映させます

sudo rm /etc/nginx/sites-enabled/default
sudo nginx -s reload

すると!!!!!!!!!!!!
なんと!!!!!!!!!!!!!!!!!!!
ウェブにアクセス出来るようになりました
やったーーーーーーーーーーーーーーーーーーーーーー

前編はここまで

後編はこちら

ree

One thought on “[Pterodactyl Panel]マインクラフトサーバー管理パネルを立ててみよう(前編)

  1. 最後のweb構築で
    sudo rm /etc/nginx/sites-enabled/default
    を実行するとnginxがエラー吐く;;

Comments are closed.