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してください。