サーバーを構築する度に忘れている 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
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"