【Minecraft】Spigotサーバー構築の備忘録

サーバーを構築する度に忘れている or 新しくなっている部分があったので、
自分のための備忘録です。

メモベースなので、詳細は省いています。
何か質問等あれば、ツイッターやコメントでご連絡いただければと思います。

環境

Cloud Service: AWS / Oracle Cloud
OS: Amazon Linux 2 / Ubuntu 20.04
Minecraft Version: 1.18.2


はじめに

Amazon LinuxとUbuntuのコマンドを両方記載しています。
参考にする場合は適時コマンドを確認し、自分の環境にあったものを選択してください。

サーバー設定

とりあえず

Amazon Linux

$ sudo yum update -y

Ubuntu

$ sudo apt update

タイムゾーン

Amazon Linux

$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo timedatectl

crond再起動

Amazon Linux

$ sudo systemctl restart crond.service

java17をインストール

Amazon Linux

https://docs.aws.amazon.com/ja_jp/corretto/latest/corretto-17-ug/generic-linux-install.html#rpm-linux-install-instruct

Ubuntu

$ sudo apt install openjdk-17-jdk-headless

Spigotサーバー構築

ビルド

Amazon Linux

$ sudo yum install -y git
$ mkdir ~/build
$ cd ~/build
$ wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
$ java -jar BuildTools.jar --rev 1.18.2

サーバー起動

Amazon Linux

$ mkdir ~/server
$ cd ~/server
$ cp ~/build/spigot-1.18.2.jar ~/server/
$ java -Xms2048M -Xmx4096M -jar spigot-1.18.2.jar nogui
$ vim eula.txt

dynmapをhttpsで表示

Apatch準備

Amazon Linux

$ sudo yum install -y httpd httpd-devel httpd-tools mod_ssl
$ sudo systemctl enable httpd.service
$ sudo systemctl start httpd.service

Ubuntu

$ sudo add-apt-repository ppa:ondrej/apache2
$ sudo apt-get install apache2
$ sudo systemctl status apache2
$ apache2ctl -v

ファイアウォール

Ubuntu

$ sudo ufw allow 80

iptables

Ubuntu

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo netfilter-persistent save

SSL証明書を取得

Amazon Linux

$ sudo amazon-linux-extras install -y epel
$ sudo yum install -y certbot
$ sudo certbot certonly --webroot -w /var/www/html -d example.com --email example@gmail.com -n --agree-tos --debug

Ubuntu

$ sudo apt install certbot python3-certbot-apache
$ sudo certbot --apache

SSL関連の設定・リバースプロキシの設定

Amazon Linux

$ sudo vim /etc/httpd/conf/httpd.conf

追記

<VirtualHost *:80>
    ServerName example.com:80
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com:443
    ProxyRequests Off
    ProxyPass /dynmap/ http://localhost:8123/
    ProxyPassReverse /dynmap/ http://localhost:8123/
</VirtualHost>
$ sudo vim /etc/httpd/conf.d/ssl.conf

下記2箇所の行を書き換え

SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
$ sudo httpd -k graceful

Ubuntu

modを有効化

$ sudo a2enmod proxy_http
$ sudo a2enmod ssl

設定ファイルをコピー

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/dynmap-proxy.conf
$ sudo cp /etc/apache2/sites-available/000-default-le-ssl.conf /etc/apache2/sites-available/dynmap-proxy-ssl.conf

dynmap-proxy.conf・dynmap-proxy-ssl.confそれぞれに追記

$ sudo vim /etc/apache2/sites-available/dynmap-proxy.conf
$ sudo vim /etc/apache2/sites-available/dynmap-proxy-ssl.conf
ProxyPass /dynmap/ http://localhost:8123/
ProxyPassReverse /dynmap/ http://localhost:8123/

proxyを有効化

$ sudo a2ensite dynmap-proxy
$ sudo a2ensite dynmap-proxy-ssl

defaultを無効化

$ sudo a2dissite 000-default
$ sudo a2dissite 000-default-le-ssl

再起動

$ sudo systemctl restart apache2

SSL証明書の更新を自動化

Amazon Linux

shell

$ sudo vim /etc/cron.d/letsencrypt

追記

00 05 01 * * root sudo certbot renew --deploy-hook "sudo httpd -k graceful"

Ubuntu

タイマーがアクティブか確認

$ sudo systemctl status certbot.timer

更新テスト

$ sudo certbot renew --dry-run

shell

$ sudo vim /etc/cron.d/letsencrypt

追記

00 05 01 * * root sudo certbot renew --deploy-hook "sudo systemctl reload apache2"

コメントを残す

メールアドレスが公開されることはありません。