LoginSignup
0
0

More than 1 year has passed since last update.

SystemdとmcrconでMinecraftをサービス化する

Last updated at Posted at 2022-02-11

はじめに

マイクラマルチサーバーを建てる際にScreenを使っていたのですが、うっかりScreenのターミナルを閉じてしまったりとなにかと問題がありました。
Systemdとmcrconで快適にサービス化してしまいましょう。

諸要素

  • CentOS 8 Stream
  • MinecraftサーバのJAR (今回はバニラサーバーを使用)
  • Systemd
  • mcrcon

Minecraftの設定

server.properties(追記/変更)
rcon.port=25575
enable-rcon=true
rcon.password=あなたのRCONパスワード

mcrconのインストール

# 未導入であれば入れる
sudo dnf gcc make
# お好みの作業用ディレクトリ内で
wget https://github.com/Tiiffi/mcrcon/archive/refs/tags/v0.7.2.zip
unzip v0.7.2.zip
cd mcrcon-0.7.2
make
sudo make install

minecraft作業用ユーザーの.bashrcに下記内容を追記しておくと幸せになれます。

.bashrc(追記)
export MCRCON_HOST=localhost
export MCRCON_PORT=25575
export MCRCON_PASS=あなたのRCONパスワード

起動/終了スクリプト、サービス定義ファイルの作成

サーバーのJARやスクリプトなどは/home/minecraft/mc_dir/に設置されている想定です。

start.sh
#!/bin/sh
export HOME=/home/minecraft
export USER=minecraft
cd ~/mc_dir
java -Xmx1024M -Xms1024M -jar ./server.jar nogui

※割当メモリ量は環境に合わせて調整してください。

stop.sh
export USER=minecraft
export MCRCON_HOST=localhost
export MCRCON_PORT=25575
export MCRCON_PASS=あなたのRCONパスワード
echo stop | /usr/local/bin/mcrcon -t

/usr/local/bin/mcrcon stopとするとサーバーの終了を待たずにコマンドが終了するので不適当です。

minecraft.service
[Unit]
Description=Minecraft Multiplay Server Service

[Service]
Type=simple
User=minecraft
ExecStart=/home/minecraft/mc_dir/start.sh
ExecStop=/home/minecraft/mc_dir/stop.sh
TimeoutStopSec=120
PrivateTmp=true
Restart=always

[Install]
WantedBy=multi-user.target

※ タイムアウト時間はサーバー規模に合わせて調整してください。

サービス登録、起動/終了確認

cd /usr/lib/systemd/system/
ln -s /home/minecraft/mc_dir/minecraft.service
systemctl enable minecraft
systemctl start minecraft
journalctl -f -u minecraft
systemctl stop minecraft

最後に

楽しいマイクラ生活を!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0