HaRuuuBlog
DATE:2026/4/4

Pixelmonサーバー運用を始める【VirtualBox構築と自動化】

本記事は、ローカル環境でPixelmonサーバー運用を開始した初期ログです。VirtualBox上にRocky Linux環境を用意し、Minecraftサーバーの稼働、運用スクリプト、監視、バックアップ方針を整理します。

以降のログでは、このVirtualBox運用で見えたリソース面の課題を起点として、WSL2、Docker、Ansibleを用いた構成管理へ段階的に移行していきます。

1. 自前サーバー運用における技術的動機

過去のVPSでのブログ運用や、シェルスクリプトを用いたクラウドデータ保存の自動化といった学習の延長として、Minecraft(Pixelmon)サーバーの構築を実施しました。

本プロジェクトの目的は、単なるゲームプレイではなく、Linux環境下におけるサービス管理、リソース監視、および運用自動化のパイプラインを自らの手で構築・検証することにあります。

本記事では、運用スクリプトや設定内容を CONFIG として記録します。

2. 運用環境とLAN限定アクセスのコンセプト

本環境では、エンタープライズレベルの高可用性よりも、個人開発における「検証の容易さ」と「セキュリティ」を最優先事項として設計しています。

// LAN限定運用の合理性

主な用途はローカル環境でのマルチプレイです。外部公開を意図的に制限することで、不要なポート開放(Port 25565等)に伴うDDoS攻撃や不正アクセスのリスクを物理レイヤーで遮断しています。

// 仮想化プラットフォームの選定

ハイパーバイザーとして Oracle VirtualBox を採用しました。最大の利点は「スナップショット機能」です。Modの競合やConfigの不整合によりシステムが不安定化した際、迅速に正常な状態へロールバックできる環境は、試行錯誤を要するサーバー構築において重要な役割を果たします。

VirtualBox Manager Status

VirtualBoxの管理画面

3. サーバー内部の管理・運用構成

OSにはエンタープライズ実績のある Rocky Linux 9.4 を、実行環境には NeoForge 21.1.220 を選定しました。

Pixelmonを安定稼働させるため、サーバーおよびクライアント双方の負荷軽減を目的としたMod構成を採用しています。具体的には、メモリ使用量を最適化しラグを抑制する ModernFix や FerriteCore、広大な世界をマッピングする JourneyMap、そして移動時のチャンク読み込み負荷を軽減する Chunk-Pregenerator を導入しています。

[ Performance / 軽量化 ]
ModernFix / FerriteCore / AI-Improvements
[ Utility / 冒険支援 ]
JourneyMap / Waystones
[ Stability / 安定化 ]
Chunk-Pregenerator (移動時のiOWaitラグ抑制)
Terminal Mods List

mod一覧

4. 自動化およびメンテナンススクリプト

本運用における要件は、バックアップ前の「徹底したクレンジング」です。単なる圧縮保存ではなく、不要ファイルをパージすることでストレージ効率を最適化しています。

cat backup.sh

#!/bin/bash

# --- 設定 ---
DATE=$(date +%Y%m%d-%H%M)
BACKUP_DIR="/opt/minecraft/backup"
SERVER_DIR="/opt/minecraft/server"
WORLD_DIR="${SERVER_DIR}/world"

# --- 1. バックアップ前のお掃除 (軽量化) ---
find ${SERVER_DIR}/logs/ -name "*.log.gz" -mtime +7 -delete
rm -rf ${SERVER_DIR}/crash-reports/*
rm -f ${WORLD_DIR}/*.bak
rm -f ${WORLD_DIR}/level.dat_old
rm -rf ${WORLD_DIR}/EliteRaidAllies.bak

# --- 2. バックアップ実行 ---
tar czf $BACKUP_DIR/world-$DATE.tar.gz $WORLD_DIR

# --- 3. 世代管理 ---
find $BACKUP_DIR -type f -name "world-*.tar.gz" -mtime +7 -delete

このスクリプトにより、ストレージの枯渇を防ぎつつ、過去7日間の任意の時点へ復元可能な状態を維持しています。これらは crontab により、毎日深夜4:00に自動実行されるようスケジューリングされています。

5. 安定稼働を支える運用体制

// プロセス管理の最適化

MinecraftをSystemd配下でサービス化することで、OS起動時の自動開始や異常終了時の自動再起動を実現しました。また、tmux を利用し、バックグラウンド実行中も必要に応じてコンソールへアタッチし、コマンドを送出できる環境を構築しています。

リソース監視には btop を導入しました。JVMのメモリ使用量やストレージI/Oをリアルタイムに可視化し、Mod起因のラグやボトルネック特定を迅速化しています。

Server Operations Monitor

実際の運用管理画面(tmuxログモニター)

6. WSL2への移行と今後の展望

現在はVirtualBoxでの運用ですが、リソース監視の中で仮想化に伴う「静的メモリ占有」が課題として浮上しました。

ホストマシン(Ryzen 7 5700X / 32GB)から仮想マシンへ8GBのメモリを割り当てていますが、サーバーの実消費量が4GBであっても、VirtualBoxの仕様上ホストからは8GBが完全に占有されます。このオーバーヘッドがホスト側のパフォーマンスを圧迫しています。

この非効率を解消するため、メモリを動的に共有可能な WSL2 への移行を決定しました。

同時に、スナップショットや「ゴールデンイメージ」への依存を脱却します。今後はWSL2上での Dockerによるコンテナ化 と、Ansible・Terraformを用いた構成管理(IaC) を導入し、ポータブルかつ強固なサーバー環境へとアーキテクチャを刷新する予定です。

INDEX [BACK TO SECTION]