Linux VPSのマイクラサーバーは、systemdでサービス化すると管理が一気に楽になります。OS起動後の自動立ち上げと、異常終了時の自動復帰をまとめて実現できます。この記事では、最小構成のユニットファイル例からRCON連携の安全停止までを、公式マニュアルの記載ベースで解説します。対象は、テンプレートやDockerイメージによる構築に頼らず自前でjarを起動している手動構築のサーバーです。

systemdでできること2つ

  • OS起動時の自動起動: systemctl enable がユニットをブート時の起動に組み込む
  • 異常終了時の自動再起動: Restart= の設定で、落ちた時に自動で再起動できる

VPS再起動後の起動忘れや、深夜に落ちて朝まで止まる事故を仕組みで防げます。

ユニットファイルの設定例

/etc/systemd/system/minecraft.service を作成します。以下は最小構成の例です。 起動コマンドなどを差し替えたユニットはsystemdユニットジェネレーターでも作れます。

[Unit]
Description=Minecraft Server

[Service]
WorkingDirectory=/opt/minecraft
User=minecraft
ExecStart=/usr/bin/java -Xmx4G -jar server.jar nogui
ExecStop=/usr/bin/mcrcon -H localhost -p yourpassword -w 5 "say Server stopping..." save-all stop
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
  • ユニットファイルは[Unit]・[Service]・[Install]の3セクション構成
  • ExecStart=は起動の主コマンド。通常ちょうど1つ指定する。起動コマンド自体の解説はJava版立て方の記事を参照
  • WorkingDirectory=とUser=で作業ディレクトリと実行ユーザーを指定。rootで動かさないのは初期設定の記事と同じ考え方
  • Restart=on-failureは、非0終了やタイムアウトの時だけ再起動する設定。無条件で再起動するalwaysもある
  • RestartSec=は再起動までの待ち時間。既定は100ミリ秒と短いため、数秒〜10秒程度に伸ばして連続再起動の負荷を避ける(調整幅は運用上の助言)

安全停止: ExecStopにRCONを組み込む

ExecStopには「終了依頼だけして完了を待たない設定は不十分」という趣旨の公式注意があります。確実なのは、RCON経由でセーブと停止コマンドを送る方法です。mcrconの公式READMEにも、告知→セーブ→停止を5秒間隔で実行する例が載っています(2026年8月時点)。

上の設定例のExecStopがその形です。RCONの有効化と安全な使い方はRCON記事を参照してください。localhostからの実行は、RCONで推奨されている接続方法とも一致します。

有効化と日常操作

sudo systemctl daemon-reload            # ユニットファイルの読み込み
sudo systemctl enable --now minecraft   # ブート時起動の登録+即時起動
sudo systemctl status minecraft         # 状態確認
  • enableは[Install]の内容に従ってシンボリックリンクを作り、ブート時の起動に組み込む
  • enable —nowなら登録と起動を1回で行える
  • 設定ファイルを変更したらdaemon-reloadで再読み込みする
  • 日常の停止・再起動はstop / restartを使う

定期再起動と落とし穴

夜間の定期再起動を入れたい場合は、systemctl restart minecraft をcron等で実行する方法があります。プレイ中の時間帯を避けて設定してください。

注意したいのは再起動ループです。メモリ不足が原因の場合、起動しては落ちるループになりがちです。根本対応はメモリ目安を参照してください。

よくある質問

VPSを再起動するとマイクラサーバーが起動していません

enableの登録漏れが典型です。enableはブート時の起動に組み込む操作で、これをしないと手動起動のままです。enable --nowで登録と起動をまとめて行えます。

落ちた時だけ自動で再起動してほしい

Restart=on-failureを使います。非0終了やタイムアウトの場合に再起動します。

ユニットファイルを直したのに反映されません

daemon-reloadが必要です。ユニットファイルの再読み込みを行う操作です。

まとめ

  • systemd化で「OS起動時の自動起動」と「異常終了時の自動復帰」が手に入る
  • ユニットは[Unit][Service][Install]の3セクション。例は本文のとおり
  • Restart=on-failure+RestartSec数秒が基本形
  • 停止はRCON(save-all→stop)で安全に。ExecStopに組み込む
  • enable —nowとdaemon-reloadを覚えれば日常運用は回る

まずは手動でstart・stopを試し、挙動の確認ののちenableしてください。

参考リンク