Raspberry PiでMinecarftサーバーを構築しよう!
前書き
今回はラズパイでマイクラサーバーを建てるマス🐟
昨年の夏に1.17のサーバーを構築したものの、不慮の事故()でOSをぶっ壊してしまいました💥💥💥
どうせ最初からならもう一度ぶっ壊してもいいように記録に残しておこうと思いました📝
いろいろなサイトをパクパクしているだけなので、理解できていない部分があります。
一つのサイトにこだわらず、沢山調べて沢山試そう!!!と思います。
用意する物
・Raspberry Pi 4 8GB
・(micro)SDカードを刺せるPC
・microSDカード
・type-Cケーブル
・HDMI刺せるモニター
・microHDMI-HDMIケーブル
・キーボード(ピアノじゃないやつ)
・LANケーブル
・光回線
・ルーター
・時間(大体2日くらい)
OS入れよう!!
ubuntu server最高!
最近できたRaspberry Pi Imagerを公式サイトからインストールします。
お使いのPCのOSに合わせてダウンロードしましょうね。
ダウンロードしたら起動!
CHOOSE OS→Other general purpose OS→Ubuntu→Ubuntu Server 最新版 64-bit~ を選択(今回はver21.10)
CHOOSE STORAGE→SDカードを選択
WRITEを押して待つ……長い……時間つぶしましょう……
ubuntu serverを使う理由は、javaの最新verに対応しているOSだからです。文字ばっかでかっけー!!!!
できました!(っていう画像が取れませんでした)
ここからはラズパイのターンですが、後でまたPC使うので捨てずに取っておきましょう。
ラズパイの初期設定すんぞ!!!
ハードのやつ
microSDカードをラズパイにずっぽり挿入します。
LANケーブルもどっぷり挿入。(無線でもいいけど設定だるいので有線優先です。)
キーボードもUSBで接続。無線がおすすめです。楽。
microHDMIをラズパイにHDMIをモニターに刺してからtype-Cケーブル繋ぎましょうね。
type-Cからつなげるとモニター反応しませんので、その時はぶち切りです。(よくない)
起動!!
type-Cが繋がったら勝手に起動します。
誰か画面キャプチャの方法を教えてくれ……
パジャマで撮影してるのがヴァレヴァレだお🎾
見づらいですがログインを求められています。
初期ユーザー名と初期パスワードはubuntuで、新しいパスワードを設定する必要があります。
初期ID:ubuntu
初期パスワード:ubuntu
パスワード変更が必要
現在のパスワード:ubuntu
新しいパスワード:******
もう一度新しいパスワード:******
私はunchiburiburiに設定しました。
決して他人に教えないようにしましょうね。
コマンドのやつ
まずは基本のやつ(-yは嫌いだ!!!)
sudo apt update
sudo apt upgrade -y
一行づつ実行しましょう。
こいつも時間かかるので映画でもみてよ~📺
出来たら時間確認。
date
日本時間ではないので9時間ずれてますが、時間設定をしなくてもずれていることが分かっていれば大丈夫です。めんどくさいのでやらないです。
インターネット関連設定だっ!!
ip address is so cool(適当)
ipアドレスを固定します。
まずは確認してみましょう。
入力
ip add show
出力
1: lo: ~
2: eth0: ~
~
inet 192.168.~.~ brd 192.168.-.- ~
~
3: wlan0: ~
だいたいこんな感じで出力されます。eth0の部分はルーターによって違います。
inetの192.168.~.~がipアドレスで、brdの192.168.-.-がゲートウェイです。
この二つだけメモっときましょう。
設定していくぅ🔪🐟
nanoは使いやすいエディターで代用してどうぞ(viの方が良いらしいがnanoの方が好きなのでnano使います)
cd /etc/netplan
sudo nano 99_config.yaml
実行すると……
なんもねー
色々書きます。
network:
version: 2
ethernets:
eth0:
addresses: [192.168.~.~/24]
gateway4: 192.168.-.-
nameservers:
addresses: [192.168.-.-]
ipアドレスはさっきメモったのじゃなくてもいいですが、メモしてくださいね。
そんで適応させるために近くにいる奴を殺します。
[入力]
ls
[出力]
10-rpi-ethernet-eth0.yaml 50-cloud-init.yaml 99_config.yaml
[入力]
sudo mv 10-rpi-ethernet-eth0.yaml 10-rpi-ethernet-eth0.yaml.disabled
sudo mv 50-cloud-init.yaml 50-cloud-init.yaml.disabled
sudo netplan apply
正直殺す必要はないですが、万が一に備えて拡張子変更はしておきましょう。
確か最初についてる数字が優先度だったような気がします。
何かよくわからん警告出てますが知りません。
再起動してからもっかい確認しましょうね。
reboot
ip addr
これでも確認できます。
さっき設定したipアドレスになっていれば成功の兆し有🙆
ポート開放のやつ
まず確認!
[入力]
sudo ufw status
[出力]
Status: inactive
まさかの無効設定!?
これデフォルトで無効なんですか?
危険すぎる……
ということでとりあえずファイアウォール有効化ァ!
sudo ufw enable
確認したらactive(有効)になりました。
そんでマイクラ用のポート25565を開放します。
sudo ufw allow 25565
最後に確認して一応再起動して、更に確認しておきます。
何事も確認と再起動が大事!!!!
うまくいかない原因の5割は再起動だと思ってます。ここまでやってもうまくいかないときは、もうファイアウォールオフっちゃえばいいとは大きな声で言えません。推奨はしてませんよ。
ルーターだる……
ルーターは使ってる機種によって設定が異なります。
色々調べて、https://192.168.○.○みたいなリンクからポートを開放しよう!!!!
私は以前開放しているのでやりません。
割と一番大変なのはここかもしれん。
(私の使用しているルーターはauのやつなので、ルーターのめんどい設定について書かれてる記事が少なかった……。バッファローとかなら沢山記事あると思います。)
全人類に幸あれ🥺
マイクラサーバーをいざ構築!!!!!
まずは落ち着いて構築準備ですぞ~
マイクラやりたい気持ちを抑えて、構築するための土台を固めていきます。
まずはjavaを入れます。
javaのverはマイクラのverと対応しているのですが、まあ一番最新の入れとけば何とかなります。
余談ですが、ここでubuntu serverが活きてくるんですよね。
未来ではわかりませんが、現在他のカスOSではjavaのverに対応できません!!ざ~こ♡でも他のOSの方が感覚的に操作が楽なのはガチなんですよね。一長一短過ぎる。
ということで現状最新のjava 17のjdkを入れます。
(jdkはサーバーやmod作成に使う開発用らしい)
sudo apt install openjdk-17-jdk -y
2分くらいで入れ終わりました。
そしたらverを確認しましょう。
java -version
version 17って書いてあればOKです。
次はサーバーファイルをダウンロードします。
公式から出ている純正のを使ってもよいですが、いかんせん重い(らしい)。
youtubeに比較動画が上がっていたので、この中からダウンロードしやすそうなPaperMCというものを使用します。(半年前ぐらいに見たのでリンク探せませんでした。)操作は公式のものと変わらないため、大丈夫です。
一応サーバー用のフォルダも作っておきます。
mkdir mcs1.18
cd mcs1.18
wget https://papermc.io/api/v2/projects/paper/versions/1.18.1/builds/132/downloads/paper-1.18.1-132.jar
mcs1.18というフォルダを作成、移動、papermc 1.18.1の最新版をリンクからダウンロードします。
(私は何が更新されてるか見てませんが、とりあえず最新版を入れておけばいいと思います。)
更新されるたびに入れなおしてくれる更新プログラムとか今後かけたらいいですね。
ファイル名が長いので変更しておきます。
mv paper-1.18.1-132.jar server.jar
verや番号が違うと思うので、自分のダウンロードしたファイル名を入れてください。
起動!!!!
ということで準備できたので起動していきます。
ここでつまづいたら大体さっきの『インターネット関連設定だっ!!』が間違えてます。経験上9割これです。
まあそこに囚われず色々確認したほうがいいんですけどね。
java -Xms4G -Xmx6G -jar server.jar nogui
-Xmsと-XmxはRAMの最小・最大値だった気がします。
今回のラズパイは8GBなので最低4G、最高6Gに設定しておきます。こんなにいいもの買ったのに今のところこれ以外に使う予定がないので……。
何か赤文字でおこられてますわw
ということで起動して出来たeula.txtのfalseをtrueに変更します。
(エディターで変更しておきましょう。echoかsedかで置き換えとかできた気もする。)
そんでもっかい起動!!!!イッケーーー!!!!
起動できているかマイクラで確認しておきます。
同じルーターにいる時は、ipアドレス 192.168.~.~ ポート番号25565を使用します。サーバーアドレスってところに192.168.~.~:25565を入れます。
別回線からの接続はこの後やるので、まて✋
生まれ落ちたわ……👶
確認できたのでサーバー閉じます。
stop
おんなじルーター内でやるならこれでおしまいです。
が、みんな友達とやりたいよね~~~~!!!!
ってことでこの後も色々設定します。
ルーター内でやるにしても、この後色々設定してるので見てくれ……。というかルーター内でいいならポート開放とか必要ありません!!!順序がぐちゃぐちゃかも~。
インターネットに飛び立たせる
『インターネット関連設定だっ!!』で準備は終えてるので、あとは他の回線から接続するために必要なグローバルipってやつを確認するだけです。
何かよくわかんないですが、このサイト飛ぶだけ。楽すぎ。
別回線から接続するときにはこのipを使用して、例えばグローバルipが123.456.789だった場合は、123.456.789:25565のようにサーバーアドレスに書き込み、接続しましょう。
はい、サーバー開けました!!!!!
終わりでーーーす!!!
ということでこの後はラズパイである利点を活かし、いろいろします。
便利なオプション作ろうね~~!
正直ここからはやりたい人だけで十分です。
私がやりたいので書いておきます。
最強の自動起動編
普通に毎回起動するのがだるいので、ラズパイ起動時に一緒にサーバーも起動させます。
screenとsystemdを利用してアレアレします。
先に行っておくとハゲました。
まずはscreenを入れます。
sudo apt install screen
私は既に入っていたので標準だったりするのかもしれません。
次はシェル作りますよ。
さっきのmcs1.18フォルダに移動。
cd /home/ubuntu/mcs1.18/
ubuntuはユーザー名なので各自で変更する場合はしてください。
起動シェルと停止シェルを作ります。
start.sh(起動シェル)
#!/bin/sh
screen -UAmdS Minecraft java -Xms4G -Xmx6G -jar /home/ubuntu/mcs1.18/server.jar nogui
#!/bin/sh
screen -S Minecraft -X stuff 'say server shutdown in 1 min.\015'
sleep 60s
screen -S Minecraft -X stuff 'save-all\015'
sleep 10s
screen -S Minecraft -X stuff 'stop\015'
こいつらに実行権限を与える。
chmod +x start.sh
chmod +x stop.sh
一旦実行してみる。
sh start.sh
screen -ls #スクリーンの簡易表示
sh stop.sh
なぜかうまくいかなかったので、mcs1.18フォルダのserver.jar、start.sh、stop.shを新しく作成したms1.18フォルダに入れなおして実行。
eula.txtも新規で作られるので、trueにしておく。
割とぐちゃぐちゃやったので、新規で実行しなくてもうまくいく説あります。悔しい。
最終的にscreen -lsして、こうなったらOKです。
気を取り直して.serviceファイルを入れるフォルダに移動。
cd /etc/systemd/system
ms.serviceという名前で中身書きます。
権限必要なのでsudoつけましょう。
[Unit]
Description=Minecraft Server
After=network.target
[Service]
Type=forking
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/ms1.18/
ExecStart=/home/ubuntu/ms1.18/start.sh
ExecStop=/home/ubuntu/ms1.18/stop.sh
Restart=always
[Install]
WantedBy=multi-user.target
試行錯誤を重ねてできました。
サイトごとに表記ゆれが多くて大変でした。
早速保存して再読み込みからの確認です。
sudo systemctl daemon-reload
sudo systemctl start ms
sudo systemctl status ms
sudo systemctl stop ms
最終的にstatusでこうなったら大丈夫です。
一応マイクラから入れるかも確認しておいた方がいいと思います。
activeが緑色になっていればできていると思います。
いえ~~~……。(2回目なのに自動起動設定に6時間かかりました。)
起動した際に動くようにsystemctl enable msを実行します。
これでラズパイとマイクラサーバーの起動、シャットダウンが同期します。
最凶の時間保存編
マイクラサーバーの初期設定は自動保存が付いています。
正直保存しすぎなので切ります。(sdカード使ってるとすぐ圧迫されちゃうので……。)
普通にコマンドから起動します。
java -Xms4G -Xmx6G -jar /home/ubuntu/ms1.18/server.jar nogui
自動保存をオフにして落とします。
save-off
stop
最初の起動でやっておいてもよかった。時間で実行するためにcrontabを使います。
(本当はcronの方が良いみたいですが、私はできませんでした。)
それとどこかで言いましたが、私の場合は日本時間ではないので気をつけましょう。
crontabはどこでも編集できます。
sudoを入れるかどうかでユーザーが変わります。
(sudoだとrootなので全権限があり、再起動等の機能が使用可能になるため基本的にはsudo付けたほうがいいと思います。)
sudo crontab -e
日本時間で12時に再起動、21時と3時に自動保存するようにします。
0 3 * * * /sbin/reboot
0 12,18 * * * /home/ubuntu/ms1.18/save.sh
save.shをms1.18に作成します。
#!/bin/sh
screen -S Minecraft -X stuff 'save-all\015'
screen -S Minecraft -X stuff 'say world saved.\015'
ちゃんとchmodで実行権限つけましょうね。
時間になったらセーブされました。
サーバーに人がよく入る時間の後に保存するのがおすすめです。
後書き
はい。お疲れさまでした。
何とか2日間で前回作ったところまで戻れました。
詳しくはわからないですが、実働時間は12時間くらいですかね。
やっぱ一番大切なのは諦めない気持ちですわ~。
今回の記事は実際に作りながら書いたので、漏れはない……はず……。
最悪これを伝えば、私の環境なら作れるはずなので壊し放題です💥
他にオプション付けたらまた記事にしたいと思います。
discordとの連携、sshで遠隔操作、driveにバックアップ。
この辺りは追加したいと思ってますが、いつになるやら。
せめてどこでも出来る様にsshくらいはやっときたいな~……。
そもそもnote自体更新したいなと思っています。モチベ頑張れ。
ということで完璧に備忘録ですが、ここまで見て頂きありがとうございました。
この記事の続き↓