Docker化されたMinecraftサーバー(Paper)+ プラグイン対応
- Paper Server - 高性能、プラグイン対応
- 自動停止機能 - プレイヤー不在時に自動停止してリソース節約
- プラグイン自動導入 - ImageOnMap, DiscordSRV等
- バックアップ対応 - 静止点を取ってデータ保護
- ヘルスチェック - サーバー状態を自動監視
- Docker & Docker Compose
- 最低4GB RAM(推奨8GB以上)
- ディスク空き容量: 5GB以上
- VPS/クラウドサーバー(AWS EC2、ConoHa VPS、Contabo等)を契約済み
- サーバーにSSHでログイン可能
- Ubuntu 20.04/22.04 または Debian 11/12
# ローカルPCから
ssh username@your-server-ip
# 初回ログイン後、パスワード変更推奨
passwdセキュリティ強化(推奨):
# 鍵認証設定
ssh-copy-id username@your-server-ip
# パスワード認証を無効化
sudo vim /etc/ssh/sshd_config
# PasswordAuthentication no
sudo systemctl restart sshd# セットアップスクリプトをダウンロード
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/minecraft/main/scripts/setup-host.sh -o setup-host.sh
# 実行権限付与
chmod +x setup-host.sh
# 実行
./setup-host.shセットアップスクリプトの内容:
- システムパッケージ更新
- Docker & Docker Composeインストール
- ファイアウォール設定(ポート25565開放)
- プロジェクトディレクトリ作成
- システム要件チェック
完了後、再ログインが必要:
# ログアウト
exit
# 再ログイン(dockerグループ反映)
ssh username@your-server-ip# プロジェクトディレクトリへ移動
cd ~/minecraft
# リポジトリをクローン
git clone https://github.com/YOUR_USERNAME/minecraft.git .
# または、直接ダウンロード
wget https://github.com/YOUR_USERNAME/minecraft/archive/main.zip
unzip main.zip
mv minecraft-main/* .# プロジェクトディレクトリへ移動
cd ~/minecraft
# 起動(初回は5-10分かかる)
docker compose up -d
# ログ確認
docker compose logs -f初回起動時の処理:
- Paperサーバーのダウンロード
- プラグイン(ImageOnMap, DiscordSRV)の自動インストール
- ワールド生成
- サーバー起動完了
起動完了のサイン:
Done (10.234s)! For help, type "help"
Minecraftクライアントから接続:
サーバーアドレス: your-server-ip:25565
サーバーIPの確認:
# パブリックIPを確認
curl ifconfig.meファイアウォール確認:
# ポート25565が開いているか確認
sudo ufw status
sudo netstat -tuln | grep 25565セキュリティ設定(重要):
# .envファイルを作成してRCONパスワードを変更
cp .env.example .env
vim .env
# RCON_PASSWORDを変更(デフォルトの"minecraft"は危険)
RCON_PASSWORD=your_secure_password_here
# 再起動して反映
docker compose restartOP権限付与:
# RCONで接続
docker compose exec minecraft rcon-cli
# プレイヤーにOP権限付与
> op YourMinecraftUsername
> exitホワイトリスト有効化(推奨):
# docker-compose.yml
environment:
ENABLE_WHITELIST: "true"
WHITELIST: |
player1
player2# 再起動
docker compose restart# バックアップスクリプトのテスト
cd ~/minecraft
./scripts/backup.sh
# cron設定(毎日3時に自動バックアップ)
crontab -e
# 以下を追加
0 3 * * * cd ~/minecraft && ./scripts/backup.sh
# Discord通知設定(オプション)
# .envファイル作成
echo 'DISCORD_WEBHOOK=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL' > ~/minecraft/.env
# cronに環境変数を渡す
0 3 * * * cd ~/minecraft && source .env && ./scripts/backup.shQ: サーバーが起動しない
# ログ確認
docker compose logs
# メモリ不足の場合
# docker-compose.yml の MEMORY を減らす
MEMORY: "2G"Q: 接続できない
# ファイアウォール確認
sudo ufw allow 25565/tcp
# Dockerコンテナ確認
docker compose ps
# ポート確認
sudo netstat -tuln | grep 25565Q: メモリが足りない
# docker-compose.yml
environment:
MEMORY: "2G" # 4G → 2Gに変更
deploy:
resources:
limits:
memory: 3G # 5G → 3Gに変更Q: プラグインを追加したい
# Spiget Resource IDを追加
# https://www.spigotmc.org/resources/ で検索
SPIGET_RESOURCES: "26585,18494,28140" # LuckPerms追加Q: Modサーバーにしたい
# docker-compose.yml
environment:
TYPE: "FORGE" # または FABRIC
VERSION: "1.20.1"
# プラグインは使えなくなるcd ~/minecraft
docker compose up -d初回起動時は以下が自動実行されます:
- Paperサーバーのダウンロード
- プラグイン(ImageOnMap, DiscordSRV)のインストール
- ワールド生成
docker compose logs -f minecraftDone (x.xxxs)! For help, type "help" が表示されたら起動完了です。
Minecraftクライアントから接続:
サーバーアドレス: localhost:25565
# 起動
docker compose up -d
# 停止
docker compose stop
# 再起動
docker compose restart
# ログ確認
docker compose logs -f minecraft
# コンテナに入る
docker compose exec minecraft bash# RCON接続
docker compose exec minecraft rcon-cli
# コマンド実行例
> list
> op <player_name>
> whitelist add <player_name>手動バックアップ:
# 基本的な実行
cd /path/to/minecraft
./scripts/backup.sh
# 環境変数でカスタマイズ
RETENTION_DAYS=14 ./scripts/backup.sh # 14日間保持
BACKUP_DIR=~/minecraft-backups ./scripts/backup.sh # 保存先変更
# Discord通知付き
DISCORD_WEBHOOK=https://discord.com/api/webhooks/xxx ./scripts/backup.shバックアップの特徴:
- ✅ サーバー停止→バックアップ→再起動(静止点取得)
- ✅ エラーハンドリング(失敗時は自動ロールバック)
- ✅ バックアップ整合性チェック
- ✅ 古いバックアップ自動削除
- ✅ ログファイル出力(
backups/backup.log) - ✅ Discord通知(オプション)
バックアップから復元:
docker compose stop
tar xzf backups/minecraft-backup-YYYYMMDD-HHMMSS.tar.gz
docker compose start自動バックアップ設定(cron):
# cron編集
crontab -e
# 毎日3時にバックアップ
0 3 * * * cd ~/minecraft && ./scripts/backup.sh
# Discord通知付き
0 3 * * * cd ~/minecraft && DISCORD_WEBHOOK=https://discord.com/api/webhooks/xxx ./scripts/backup.sh
# ログ確認
tail -f ~/minecraft/backups/backup.log主要な設定項目:
environment:
# メモリ
MEMORY: "4G" # 使用可能メモリに応じて調整
# プレイヤー数
MAX_PLAYERS: 20
# 描画距離
VIEW_DISTANCE: 10
# 自動停止タイムアウト(秒)
AUTOSTOP_TIMEOUT_EST: 3600 # 1時間
# プラグイン(Spiget Resource ID)
SPIGET_RESOURCES: "26585,18494"Spiget Resource IDを SPIGET_RESOURCES に追加:
# 例: LuckPerms (28140) を追加
SPIGET_RESOURCES: "26585,18494,28140"Resource IDの確認: https://www.spigotmc.org/resources/
environment:
LEVEL: "world" # ワールド名
SEED: "-1785852800490497919" # シード値
LEVEL_TYPE: "minecraft:normal" # ワールドタイプ
DIFFICULTY: "normal" # 難易度
MODE: "survival" # ゲームモード-
ImageOnMap (26585)
- URL画像を地図アイテム化
- 使い方:
/tomap <URL>
-
DiscordSRV (18494)
- Discord連携
- 設定ファイル:
data/plugins/DiscordSRV/config.yml
# 設定ファイル編集
cd server/plugins/<Plugin名>
vim config.yml
# サーバー再起動で反映
docker compose restart- https://discord.com/developers/applications にアクセス
- New Application → Bot作成
- Tokenをコピー
# 設定ファイル編集
vim server/plugins/DiscordSRV/config.yml# 最小限の設定
BotToken: "YOUR_BOT_TOKEN"
Channels:
global: "123456789012345678" # チャンネルIDdocker compose restart# ログ確認
docker compose logs minecraft
# コンテナ再作成
docker compose down
docker compose up -d# docker-compose.yml
environment:
MEMORY: "2G" # メモリを減らす
deploy:
resources:
limits:
memory: 3G # 制限も調整# プラグイン一覧確認
docker compose exec minecraft rcon-cli plugins
# プラグインディレクトリ確認
ls -la server/plugins/# ポート変更
# docker-compose.yml
ports:
- "25566:25565" # ホスト側ポートを変更# Aikar's Flags(推奨)
USE_AIKAR_FLAGS: "true"
# メモリ設定
MEMORY: "4G" # 使用可能メモリの50-75%vim server/paper.yml
vim server/spigot.yml参考: https://docs.papermc.io/paper/admin/reference/paper-global-configuration
minecraft/
├── docker-compose.yml # メイン設定
├── .env.example # 環境変数テンプレート
├── .gitignore
├── README.md
│
├── server/ # サーバーデータ(自動生成)
├── backups/ # バックアップ保存先
│
├── scripts/ # 管理スクリプト
│ ├── backup.sh # バックアップ
│ ├── setup-host.sh # サーバーOS初期設定
│ └── setup-tailscale-desktop.sh # デスクトップTailscale設定
│
└── docs/ # プロジェクトメモ(オプション)
# 最新版に更新
docker compose pull
docker compose up -d# 自動更新(再起動時)
docker compose restart
# 手動更新
rm data/plugins/<Plugin名>.jar
# SPIGET_RESOURCES で再ダウンロード
docker compose restartこのソフトウェアは「現状のまま」提供され、いかなる保証もありません。 サーバーの停止、データ損失、その他の問題について作者は責任を負いません。
- 2025-01: itzg/minecraft-serverに移行
- 2022-08: 初版(Amazon Corretto + 自作Dockerfile)