さくらのvpsでMinecraft Forge サーバーを建てる
手順とつまづいた所の備忘録。将来作り直すときにコピペで済むように。
私はさくらのvpsを使ったが他のvpsでも応用できるはず。
0.目標
Windows 10からSSH接続でUbuntuのMinecraft Forge Serverを建てる
SSH接続を止めてもサーバーが稼働し続け、毎日決まった時間に再起動するようにする。
CutAll, MineAll等のModを入れる。
1.さくらのvpsを契約する
https://vps.sakura.ad.jp/
アップグレードは後から出来るが、その逆は出来ないので注意。
2.Ubuntu18.04をインストールする
コントロールパネル-各種設定-OSのインストール
標準OSからUbuntu18.04にした。今後作り直す時は20.04にすると思う。
パスワードは複雑に。
スタートアップスクリプトにMinecraft Serverがあるがバニラになっちゃうので利用しない。
パケットフィルタはSSHのみ、暗号鍵は後から作るので登録しない。
標準OSインストールではユーザー名はubuntuになる。
3.自分のパソコンにTera Termをインストールする
SSHをするソフト。いろいろなソフトがあるがググって上にあったのでこれにした。
4.SSH通信を行う
さくらのvpsにログインしコントロールパネルのネットワーク情報に載っているIPアドレス確認する。
Tera Termを起動しホスト欄にIPアドレスを入力する。ポートは22。
OKを押すとユーザー名を入れるところが出てくるので、
ユーザー名:ubuntu パスワード:設定したやつ
接続に成功すると黒い画面に「ubuntu@***-***-*****:~$」と表示される。
5.Ubuntuのアップデートをする。
$ sudo apt update
$ sudo apt upgrade -y
文頭の$は入力しなくていい。以後文頭が$ だったらTera Termの黒い画面に打ち込む文字。一行打ち込んだらエンター。
一行目を入力しエンターを押すとパスワードが求められるので、設定したパスワードを入力する。途中の文字は表示されないので最後まで入力したらエンターを押す。パスワードを求められるのは起動後、最初だけ。
終わったら一応再起動
$ sudo reboot
Tera Termの接続も切れるので、再度Tera Termを起動して接続。
5.SSH通信を鍵認証で通信できるようにする
このままではセキュリティ的によろしくないので、下記のサイトを参考に鍵認証を行えるようにする。
一行ずつコピペして実行する。
$ ssh-keygen -t rsa
# 鍵のパスワードの入力を聞かれるが無しでそのまま作成して良い
$ cd ~/.ssh/
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ chmod 700 ~/.ssh
$ rm id_rsa.pub
その後、Windowsに戻り、C:\直下にmcというフォルダを作る。
Tera Term画面でファイル-SSH SCPを開き、
From: /home/ubuntu/.ssh/id_rsa
To: C:\mc
と下の方に入力して「Reseive」
C:\mcにid_rsaが作成されていたら成功。
$ logout
するとTera Termが終了するので、再度起動し、今度はパスワードではなく鍵認証してみよう。
ユーザ名をubuntuと入力し、認証方法をRSA~~~鍵を使うを選び
C:\mc\id_rsa
を選択すれば接続できる。
6.SSHの設定を変更する
このままではセキュリティ的によろしくないらしいので、SSHの設定を変更する。下記のサイトを参考にした。
$ sudo nano /etc/ssh/sshd_config
と入力してコンフィグファイルを開く。パスワードの入力を求められるので入力する。
ここでエディタの説明をする。Windowsで言うとテキスト文書を編集するソフトだ。Linuxにはviだったりvimだったり色んなエディタがあるようだが、ここでは標準で入っているnanoというエディタを使用する。
テキスト文書が表示されるので
(変更前) # Port 22
(変更後) Port 50100
(変更前) # PermitRootLogin ************ ←私の時はyesではなかった
(変更後) PermitRootLogin no
(変更前) PasswordAuthentication yes
(変更後) PasswordAuthentication no
書き換えが終わったらコントロールを押しながら「x」を押すと
変更があるが保存するか?と聞かれるので「y」、ファイル名はそのままでエンター。
その後、SSHを再起動する。参照サイトはCentOSなのでUbuntuとはちょっと違うので注意。
$ sudo /etc/init.d/ssh restart
7.Firewallの設定をする
もう一つセキュリティ対策を行うと同時に、マイクラ用のポートを開放する。
$ sudo ufw enable
$ sudo ufw default deny
$ sudo ufw allow 50100
$ sudo ufw allow 25565/tcp
その後、sudo ufw status numberedで上2つが入っていることを確認する。
もし、他のポートが入っている場合は
$ sudo ufw delete [番号]
で削除する。ipv6も削除してOK。
最後にもう一度
$ sudo ufw status verbose
でDefault: deny (incoming), allow (outgoing)、開放ポートは上2つだけになっているのを確認して
$ sudo ufw reload
$ sudo reboot
8.簡単にSSH接続できるようにする
(ここはWindowsでの操作)
そろそろ毎回ユーザ名を入力するのが面倒になってきたはず。
ダブルクリックでSSH接続して立ち上がるようにする。
メモ帳を起動して
---ここから
connect 'サーバーのアドレス:50100 /ssh /2 /auth=publickey /user=ubuntu /keyfile=C:\mc\id_rsa'
---ここまで
とコピペして、C:\mcに「mc.ttl」として保存する。
デスクトップにTera Termのショートカットを作り、プロパティのリンク先を
"C:\Program Files (x86)\teraterm\ttermpro.exe" /M=C:\mc\mc.ttl
とする。ダブルクリックすれば自動で接続するはずだ。
9.Javaをインストールする
$ sudo apt install openjdk-11-jre
私は最初Java 8を入れていたが11でもどちらでも動いた。
8は2020年12月にサポートが切れるので11入れたほうが良いと思うがよくわからない。最後にアップデート確認して再起動。
$ sudo apt update
$ sudo apt upgrade -y
$ sudo reboot
10.Minecraft Forgeをインストールする
まずWindows側で入れたいForgeをダウンロードする。
間違えずにInstallerをダウンロード。
Tera Termを起動して接続し、
$ mkdir minecraft_server
と入力しフォルダを作成する。
次にTera Termのファイル-SSH SCRを選択し
From: の右側をクリックして、先程ダウンロードしたjarファイルを選ぶ。To: /home/ubuntu/minecraft_server
でSendを選ぶ。その次に
$ cd minecraft_server
$ java -jar forge-*****-installer.jar nogui --installServer
と入力する。長いディレクトリ名やファイル名は途中まで入力して
Tabキーを押せば補完してくれる。
インストール後、このインストーラーは要らないので
$ rm forge-*****-installer.jar
で消す。このときforge-*****.jarもあるので間違えずに-installerの方を削除する。
一度、サーバーを起動させる。
$ java -jar forge-***** nogui
英語がズラ~~と流れた後にeulaに同意してくれと言われるので
$ nano eula.txt
エディタで開きfalseをtrueに変更する。コントロール押しながら「x」、保存するか?で「y」、ファイル名?でエンターを押す。
$ java -jar -server -Xmx1024M -Xms1024M forge-*****.jar nogui
でサーバーが起動しワールドを生成しだす。最後にFor help, type "help"と出たら正常に起動しているので
$ stop
でサーバーを終了させる。
11.Screenをインストール
$ sudo apt install screen
詳しくはググって欲しい。後で追記予定
$ sudo reboot
で一度再起動。
12.起動パッチを作る
パッチを作るのに下記のサイトを参考にさせて頂いた。サーバーを運営する心がけ等も書かれており必見。
Tera Termで接続しエディタを起動させる。
$ cd minecraft_server
$ nano start.sh
#!/bin/bash
cd /home/ubuntu/minecraft_server
screen -UAmdS minecraft java -server -Xmx1024M -Xms1024M -jar /home/ubuntu/minecraft_server/forge-*****.jar nogui
を貼り付ける。screen から nogui までは一行なので注意。*****にバージョン、振り分けるメモリも各自書き換える。
コントロールを押しながら「o」、エンター。コントロールを押しながら「x」で閉じる。その後、再度エディタを起動させ
$ nano restart.sh
#!/bin/bash
WAIT=60
STARTSCRIPT=/home/ubuntu/minecraft_server/start.sh
SCREEN_NAME='minecraft'
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say '${WAIT}'秒後に再起動\015"'
sleep $WAIT
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "stop\015"'
while [ -n "$(screen -list | grep -o "${SCREEN_NAME}")" ]
do
sleep 1
done
$STARTSCRIPT
を貼り付ける。コントロールを押しながら「o」、エンター。コントロールを押しながら「x」で閉じる。忘れずに権限を付ける。
$ chmod 777 start.sh
$ chmod 777 restart.sh
13.crontabに登録する
$ crontab -e
ずらーと文字が表示されるので
末尾に
@reboot /home/ubuntu/minecraft_server/start.sh
0 4 * * * /home/ubuntu/minecraft_server/restart.sh
を追加してコントロール押しながら「x」、保存するか?で「y」
$ sudo reboot
これでSSH接続を切ってもサーバーが建ち続けているはず。
マイクラを起動して、マルチサーバーからIPアドレスを入力して接続を確認しよう。
14.サーバーの設定を変更する
Tera Termを起動し
$ screen -ls
と入力し
There is a screen on:
***.minecraft (**/**/2020 **:**:** AM) (Detached)
と表示されていれば動作している。ここで
$ screen -r
と入力すると、見慣れたFor help, type "help"の画面に移るので、
$ stop
と入力してサーバーを停止させる。
$ cd minecraft_server
$ nano server.properties
でサーバーの設定を変更できる。
後はModを入れたければSSH SCRを利用して
/home/ubuntu/minecraft_server/mods
にjarファイルを送る。
最後に
$ sudo reboot
して構築終了。
15.終わりに
わからない事はググればいいと思っていたが基本的な知識がなくて読み解くのに苦労した。たくさんの情報を残してくれた先駆者に感謝。
構築後に振り返りながら書いているので間違っているところがあれば指摘して頂けると嬉しい。以下、参考にさせて頂いたサイトのリンク。