Mincraft 統合版サーバーのログを記録・閲覧する&systemdで自動起動[Linux]

Mincraftの統合版サーバーのログ、見たいですよね。特にプレイヤーのログイン履歴(入退室履歴)は見れるようにしておきたい。でも検索してもJava版のログの見方しか出てこないので、ここに記しておきます。ついでにログを見れるようにすると自動起動もできるようになります(自動起動するかは任意)。

環境情報

注意事項

  • 設定変更時は必ずバックアップをとって下さい
  • 設定ファイルの編集時にはnanoを使っています。使い方は各自調べるか、viやemacs等好きなエディタを使って下さい
  • 一般ユーザでコマンドを実行することを想定し、sudoを使っています

事前準備

ConoHaのCentOS Stream9でMinecraft Bedrock(統合版)サーバーを建てるを参考にLinux上に統合版サーバーを構築して下さい。本記事の方法は上記の記事で構築した前提で説明しています。

構築が完了したら統合版サーバーを一度止め、手順に沿って作業を開始します。

方法の概要

公式の方法では、サーバー上で以下のコマンドを用いてサーバーを起動します。

LD_LIBRARY_PATH=. ./bedrock_server

ただ、この方法では一々ディレクトリ移動してコマンドを打たないといけないので、使い勝手が悪いのと、ログが残らない、一度SSHセッション切るとログが見れないとなかなか不便です。

そこで、統合版サーバーの起動・停止をsystemdで管理できるようにすることにより、起動等が楽になり、さらにjournaldでログを閲覧できるようになります。

また、systemdで管理することでサーバー再起動時に統合版サーバーを自動起動することもできるようになります。やったね。

手順

統合版サーバーをsystemdで管理するよう設定

# bedrock_server があるディレクトリに移動
cd ~/bedrock

#  bootファイルを作成&編集
nano boot

bootファイルの中身は以下のように書きます。

#!/bin/bash
LD_LIBRARY_PATH=. ./bedrock_server

書いたら保存して(control+x→y→return)、実行権限を付与します。

chmod +x boot

次にenvironmentsファイルを作っておきます(現状使わないけど)。中身は空でいいのでtouchで。

touch environments

次にユニットファイルを作ります。

sudo nano /etc/systemd/system/bedrock_server.service

中身は以下のように書きます。[user]の部分はLinuxの自分のユーザー名に、[group]の部分は自分の所属グループに書き換えて下さい。 ここではRestart=alwaysにしているので、何らかの理由でサーバーのプロセスが終了した時(Linuxの再起動など)に統合版サーバーが自動で再起動するようになります。自動で再起動したくない場合はRestart=noに設定します。

[Unit]
Description=Bedrock Server
After=network-online.target

[Service]
ExecStart=/bin/bash /home/[user]/bedrock/boot
EnvironmentFile=/home/[user]/bedrock/environments
WorkingDirectory=/home/[user]/bedrock
Restart=always
User=[user]
Group=[group]

[Install]
WantedBy=multi-user.target

書いたら保存して(control+x→y→return)、ユニットファイルを反映させます。

systemctl daemon-reload

あとユニットファイル作成時にRestart=alwaysにした場合は以下のコマンドも実行します。

# 自動起動を有効にする場合のみ実行
systemctl enable bedrock_server

これでsystemdへの登録は完了です。

systemctlコマンドで統合版サーバーの起動・状態確認・終了を管理

systemd管理にしたので、以下のコマンドでsystemctlコマンドで統合版サーバーの起動・状態確認・終了を管理できるようになりました。試しに1回起動してみましょう。systemctl start bedrock_serverを実行すると、ユーザーのパスワードが求められ、パスワードを入力すれば起動できます。

# 統合版サーバーを起動
systemctl start bedrock_server

# 統合版サーバーを終了
systemctl stop bedrock_server

# 統合版サーバーの状態を見る
systemctl status bedrock_server

journalctlでログを見る

統合版サーバーをsystemdに登録したことで、以下のコマンドでサーバーログを見れるようになりました。

journalctl -u bedrock_server

# 以下出力
...
Jan 27 03:39:30 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:30:512 INFO] No CDN config file found for dedicated server
Jan 27 03:39:30 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:30:512 INFO] Game mode: 0 Survival
Jan 27 03:39:30 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:30:512 INFO] Difficulty: 2 NORMAL
Jan 27 03:39:30 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:30:513 INFO] Content logging to console is enabled.
Jan 27 03:39:31 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:31:134 INFO] Opening level 'worlds/world/db'
Jan 27 03:39:31 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:31:268 INFO] [SERVER] Pack Stack - None
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:221 INFO] IPv4 supported, port: 61236: Used for gameplay
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:221 INFO] IPv6 supported, port: 61237: Used for gameplay
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO] Server started.
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO] ================ TELEMETRY MESSAGE ===================
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO] Server Telemetry is currently not enabled.
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO] Enabling this telemetry helps us improve the game.
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO]
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO] To enable this feature, add the line 'emit-server-telemetry=true'
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO] to the server.properties file in the handheld/src-server directory
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:232 INFO] ======================================================
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:363 INFO] IPv4 supported, port: 19132 used for LAN discovery
Jan 27 03:39:32 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 03:39:32:363 INFO] IPv6 supported, port: 19133
Jan 27 05:16:10 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 05:16:10:623 INFO] Player connected: player1, xuid: xxxxxxxxxxxxxxxxx
Jan 27 05:16:21 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 05:16:21:439 INFO] Player Spawned: player1 xuid: xxxxxxxxxxxxxxxxx, pfid: xxxxxxxxxxxxxxxxx
Jan 27 05:17:05 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 05:17:05:468 INFO] Player disconnected: player1, xuid: xxxxxxxxxxxxxxxxx, pfid: xxxxxxxxxxxxxxxxx
...

プレイヤーのログイン履歴を見たい場合はgrepでフィルタすればいいです。

journalctl -u bedrock_server | grep connected

# 以下出力
...
Jan 27 05:16:10 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 05:16:10:623 INFO] Player connected: player1, xuid: xxxxxxxxxxxxxxxxx
Jan 27 05:17:05 vm-8394adff-11.novalocal bash[2854]: [2025-01-27 05:17:05:468 INFO] Player disconnected: player1, xuid: xxxxxxxxxxxxxxxxx, pfid: xxxxxxxxxxxxxxxxx
...

journalログを永続化

これでめでたしめでたし…と思いきや、このままではLinuxサーバーを再起動するとログが吹っ飛びます。なのでログを永続化する作業が必要です。

# journald.confを編集
sudo nano /etc/systemd/journald.conf

journald.confファイルの#Storage=autoStorage=persistentに変更します。

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it under the
#  terms of the GNU Lesser General Public License as published by the Free
#  Software Foundation; either version 2.1 of the License, or (at your option)
#  any later version.
#
# Entries in this file show the compile time defaults. Local configuration
# should be created by either modifying this file, or by creating "drop-ins" in
# the journald.conf.d/ subdirectory. The latter is generally recommended.
# Defaults can be restored by simply deleting this file and all drop-ins.
#
# Use 'systemd-analyze cat-config systemd/journald.conf' to display the full config.
#
# See journald.conf(5) for details.

[Journal]
Storage=persistent
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
#ReadKMsg=yes
Audit=

書き換えが完了したら保存して(control+x→y→return)、journaldを再起動するか、Linuxサーバー自体を再起動するかのどちらかを行います。

# journaldを再起動
sudo systemctl restart systemd-journald

# またはLinuxサーバー自体を再起動
sudo shutdown -r now

ログを見る

作業お疲れ様でした! これで、以下のコマンドで統合版サーバーのログが見れるようになりました。

# プレイヤーの入退室履歴を見る
journalctl -u bedrock_server | grep connected

# ログを全部見る
journalctl -u bedrock_server

参考

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.

Proudly powered by WordPress | テーマ: Baskerville 2 by Anders Noren

ページ先頭へ ↑