Blog

SynologyNASでのMinecraftサーバー1.20.4起ち上げから自動バックアップまで2024.02.02
Minecraft
一年に一回くらい無性にマイクラがやりたくなって三日で飽きる。
そんなんだから久し振りにサーバー起ち上げたらなんか動かないし当時の知識が通用しないってのを繰り返している。

毎度毎度「Synology NAS マイクラサーバー」で検索しながら進めるのも疲れてきたので一度ここにまとめることにした。
慣れると所要時間30分くらいで全部終わる。
Ubuntuの導入
NASでのマイクラサーバー起ち上げと言えば「itzg/docker-minecraft-server」が有名だしこれなら一瞬で起ち上げられるのだが、Ubuntu上で動かした方が何かと都合が良いので今回はこちらを採用する。

まず、File Stationから「./docker/ubuntu/server」フォルダを先んじて作成しておく。 Container Manager(Dockerと同義)から「ubuntu」をダウンロードしてイメージから実行。
執筆時点での最新バージョンは「Ubuntu 22.04.3 LTS」だった。

リソースの制限を有効にし、CPU優先度を「高」メモリ制限を「4096」MGくらいにしてあげるとよい(ウチのNASの搭載メモリは8GB)
実際に遊んでみてカクつくようであればメモリ制限を徐々に開放していく。 ボリューム設定で先んじて作成しておいた「./docker/ubuntu/server」を指定「/data」フォルダをマッピングする(/dataなのはitzgサーバーを使っていた頃の名残)ネットワークを「host」へ。他は特に弄らない。 最終的にこんな感じの設定でubuntuコンテナ起ち上げ。
Minecraft Serverの起ち上げ
ここからは今さっき起ち上げたubuntuコンテナ内で作業するためターミナルソフトが必要になる。
基本どれでも良いが、今回は定番ソフトの一つ「Tera Term」で作業を進めていく。

Tera Term
https://github.com/TeraTermProject/teraterm/releases
1)Dockerコンテナに入る
Tera Termを起動したらホスト名にNASのローカルIPアドレスを入力。ユーザー名とパスフレーズはDSMと同じものを入力してログイン。
NASにアクセスできたら管理者権限でsuコマンドを実行。パスワードの入力を求められるのでDSMにログインする時と同じものを入力(ログは残らない)
$ sudo su -
password
先ほど起ち上げたubuntuコンテナに入りたいのでコンテナIDを調べる。
$ docker container ls
CONTAINER IDってとこに記載されているIDをメモるかコピって下記コマンドでコンテナ内に入る。IDの部分をNAMESの「ubuntu(コンテナの名前)」に書き換えてもよい。
$ docker exec -it xxxxxxxxxxx bash
2)Minecraft Serverの起ち上げ
コンテナに入ることができたがコマンドも何もインストールされていない真っ新なubuntuなので、必要に応じて都度コマンドをインストールしていく。まずは「sudo」から。最後までやってから気付いたんですが今回は必要なかったです。
$ apt update
$ apt install sudo
今回起ち上げるのはNASのスペックと負荷を考慮して軽量のPaper1.20.4サーバーにすることにした。
このバージョンにはJava 21が必要なのでインストールする。
$ apt install openjdk-21-jdk-headless
   y
とりあえず日本語にする(飛ばしてもヨシ)
$ apt-get install language-pack-ja
   y
$ update-locale LANG=ja_JP.UTF-8
$ echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
$ source ~/.bashrc
タイムゾーンを東京にする。
$ apt-get install language-pack-ja
   y
$ apt-get install -y tzdata && \
   ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
   6
   79
$ date
先ほどマッピングした「./data」に移動してからPaperMCをダウンロード。以降全ての作業は基本このディレクトリで行う。
PaperMCのダウンロードページへ飛び、起動したいバージョン(今回は1.20.4)のダウンロードリンクをコピーする。
$ cd data
$ apt install curl
   y
$ curl -OL https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/405/downloads/paper-1.20.4-405.jar
ダウンロードできたか一応確認してからjar実行。
$ ls
$ java -jar paper-1.20.4-405.jar
初回起動時は「eula.txt」に同意しろってエラー文が出て処理が終了する。エディタをインストールして「eula.txt」の編集画面へ。
$ apt-get update
$ apt-get install vim
   y
$ vi eula.txt
[i]で挿入モードになるので「eura=true」に書き換えて、[Esc]→[:wq]→[Enter]で保存して退出(ミスったら[Esc]→[:q!]→[Enter]で破棄して退出)
改めてjarを実行すると今度こそサーバーが起動する。 Minecraftサーバーをrootとして実行すんなカスみたいな警告文が出るけど今回は無視する。しないと進めない。
ちなみに誘導されるページはここ。

マイクラを起動してサーバーアドレスにNASのローカルIPアドレスXXX.XXX.XX.XXを入力して起ち上がっているか確認する。
おk
ターミナルに「stop」を入力して一旦サーバーを閉じる。

自動でバックアップされるようにする
手動でバックアップするのは骨が折れるのでscreenとcronを用いて自動化する。ここが一番苦労した。
1)screenをインストールしてscreen内でサーバー起動
$ apt install screen
   y
$ screen
   Enter
$ screen java -jar paper-1.20.4-405.jar
screenを起動して、その中でもう一度jarを走らせてサーバーが起ち上がっているか改めて確認する。
確認できたら「stop」でサーバーを閉じて、[ctrl]+[a]→[k]で一旦screenを終了。
2)起動スクリプトとバックアップスクリプトの作成
予めバックアップディレクトリを作成しておく。以降も「./data(jarファイルがあるディレクトリ)」で作業すること。
$ mkdir backup
zipが必要になるのでインストール。
$ apt update && apt install -y zip
起動スクリプトを作成する。
エディタに入ってから[gg]→[Shift]+[v]→[Shift]+[g]→[x]→[i]→[右クリ]でクリップボードを全部貼り付けられる。
$ vi start.sh
これをコピペして保存
$ sh start.sh
一見なにも起こらないが、既に裏側でscreenが起動していてその中でマイクラサーバーが動いている。下記で確認できる。
$ screen -ls
$ screen -r
[ctrl]+[a]→[d]
バックアップスクリプトを作成して動かしてみる。
下記先駆者様のスクリプトを引用させていただいております。

$ vi restart.sh
これをコピペして保存
$ sh restart.sh
おk
3)cronで自動化する
cronをインストールしてcrontabの編集(毎日午前5時にサーバーが再起動されてバックアップされるように記述してある)
$ apt update && apt install -y cron
$ crontab -e
59 4 * * * /data/restart.sh
cronを起動して確認する(大事!)
$ service cron start
$ service cron status
$ crontab -l
これでNASのDockerで起ち上げたubuntuコンテナ内でマイクラサーバーが自動でバックアップされるようになった。
もうターミナル閉じていいですよ。

おわりに
起動スクリプトとか細かいところ詰めてないし前述の警告文は気になるけど取り敢えずこれでヨシとする。
後はルーターの25565ポート(変更してなければ)を開放すればお友達と遊べます。

僕の周りはみんなPalworldに行っちゃったんで一人で遊ぶんですけどね。



参考にさせていただいた偉大なる先駆者様方

TOP