2026.10.04広告・PRを含む記事です
【コピペOK】Docker Composeでマイクラサーバーを一発で立てる方法

- JavaやPaperMCを手作業でインストールするのが面倒
- docker-compose.ymlに何を書けばいいのかわからない
- コンテナを消したらワールドデータまで消えてしまわないか不安
Dockerでマイクラサーバーを立てれば、Javaのバージョン管理やファイル配置の手間が一切なくなり、設定ファイル1つでサーバーを管理できます。
黒い画面でのコマンド操作に身構えるかもしれませんが、実際に使うコマンドは起動・停止・ログ確認の3つだけです。
ワールドデータもPC本体側に保存(ボリュームマウント)されるため、コンテナを消しても消える心配はありません。
この記事では、コピペで即起動できるdocker-compose.ymlの設定例と、安全な構築手順をまとめました。
読み終えるころには、コマンド数発でマイクラサーバーが立ち上がり、メモリ変更やプラグイン追加もファイル1つで迷わず管理できるようになります。
Docker Composeでマイクラサーバーを立てる完成形
この記事はJava版のPaperMCサーバーが前提です。統合版(Bedrock)やクロスプレイは手順が変わるため、GeyserMCの記事で扱っています。

Docker Composeでは、マイクラサーバーの起動条件をdocker-compose.ymlにまとめます。
今回使うのは、マイクラサーバー用のDockerイメージとして実績のあるitzg/minecraft-serverです。
PaperMCサーバー、メモリ2GB、標準ポート25565、ワールドデータの保存先を1つのファイルで指定します。
Javaのインストールやバージョン管理をホスト側で行う必要がなく、別のPCやVPSへ移行するときも設定ファイルごと移動するだけで再現できます。
先に確認するのは次の2点です。
- この記事で使う環境とバージョン
- DockerとDocker Composeをインストールする
この記事で使う環境とバージョン
この記事では、次の環境を前提にします。
| 項目 | バージョン |
|---|---|
| Ubuntu | 24.04.2LTS |
| Docker | 28.3.1 |
| Docker Compose | 2.38.1 |
UbuntuサーバーでDockerを使える状態にしてから、マイクラサーバー用のフォルダを作る流れです。
DockerとDocker Composeをインストールする
先にDockerとDocker Composeをインストールします。
Ubuntuなら、次のコマンドでDockerのインストールと動作確認までまとめて済ませます。
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh && sudo gpasswd -a $USER docker && sudo docker run hello-world && rm -f get-docker.shHello from Docker!と表示されれば、Dockerのインストールは完了です。
もしこのあとdocker composeで権限エラーが出る場合は、一度SSHを切断してログインし直してください。追加したDockerグループの権限が現在のターミナルセッションに反映されていない可能性があります。
Docker Composeでマイクラサーバーを構築する手順

作業は、サーバー用フォルダの作成、設定ファイルの貼り付け、起動確認の順です。
- docker-compose.ymlにマイクラサーバーの設定を書く
- ワールドデータを永続化する
- Dockerコンテナを起動してログを確認する
- マイクラからサーバーに接続して動作確認する
- 外部接続にはポート開放が必要になる
- RCONでサーバー内コマンドを実行する
最初に作るdocker-compose.ymlが、この記事の中心です。
このファイルを作ってから、起動、ログ確認、接続確認へ進みます。
docker-compose.ymlにマイクラサーバーの設定を書く
最初に、docker-compose.ymlを作成します。
そのまま使える最小構成の設定例です。
services: minecraft: image: itzg/minecraft-server:latest container_name: papermc-server restart: unless-stopped stop_grace_period: 1m
ports: - "25565:25565"
environment: EULA: "TRUE" TYPE: "PAPER" VERSION: "LATEST" MEMORY: "2G"
DIFFICULTY: "normal"
volumes: - ./minecraft_data:/dataこの設定で指定している主な内容は4つです。
- PaperMCサーバーを使う
- バージョンは最新にする
- メモリは2GBにする
- 難易度はノーマルにする
VERSION: "LATEST"は初回だけの指定ではありません。新しい版が公開されていれば、次の起動時に更新されます。
運用中の版を維持するときはVERSIONとPAPER_BUILDを指定します。バックアップや復元のあとに再開する際も、取得時の版を確認してから起動してください。
サーバーの種類やメモリを変えたいときは、このファイルの値を書き換えます。
このあとの節で、プラグイン・MOD・OP権限・ホワイトリストも同じenvironmentの中に追記して設定します。
ワールドデータを永続化する
コンテナ環境でサーバーを運用する際、最も重要なのがデータの保存設定です。
コンテナを削除してもワールドデータは消えない
docker-compose.ymlで./minecraft_data:/dataとボリュームマウントを指定しているため、ワールドデータはホスト側のフォルダに保存されます。
docker compose downでコンテナを破棄してもデータはそのまま残ります。
サーバー用の作業フォルダを作り、その中にdocker-compose.ymlを置きます。
mkdir ~/minecraft && cd ~/minecraftnano docker-compose.ymlnanoエディタが開いたら、上の設定をそのまま貼り付けるだけです。
貼り付けたあとは、次の順に押すと保存して閉じられます。
Ctrl+O(保存)Enter(ファイル名を確定)Ctrl+X(エディタを閉じる)

画像は編集中のコード部分を拡大した例です。stop_grace_periodを含む設定は本文のYAMLを使い、運用するバージョンも確認してください。
Dockerコンテナを起動してログを確認する
docker-compose.ymlを保存したら、同じフォルダで起動コマンドを実行します。
コマンドはdocker-compose.ymlがあるフォルダで実行するのが前提です。
docker compose up -dこれでマイクラサーバーのコンテナが起動した状態です。
初回起動ではファイルの生成に1〜2分かかります。
ログの末尾にDoneが出るまで待ちます。
docker compose logs --tail=20ログにDoneが出たら、サーバーは接続待ちの状態です。
画像はログ末尾のDone表示部分です。マイクラから接続できるかは、次の手順で確かめます。

マイクラからサーバーに接続して動作確認する
自宅内のPCや同じWi-Fiから接続するなら、サーバーPCのローカルIPアドレスとポート番号25565を入力します。
マイクラ側でアドレスを入れる操作は、接続方法の記事に画面付きで載せています。
外部接続にはポート開放が必要になる
自宅PCで立てたサーバーに外部の人を招待する場合は、ルーターのポート開放が別途必要です。
ポート開放が難しい環境では、playit.ggなどのトンネルツールを使うと外部から接続できます。
VPSやレンタルサーバーで動かす場合は、ルーターのポート開放ではなく、サーバー側のファイアウォールや管理画面のポート設定を確認します。
RCONでサーバー内コマンドを実行する
Dockerで起動したマイクラサーバーへゲーム内コマンドを送るときは、rcon-cliを使います。
docker compose execでコンテナの中に入り、その中のrcon-cliでサーバーへコマンドを渡す形です。
docker compose exec -i minecraft rcon-cli通常のサーバーコンソールに直接入力する形とは少し違い、Dockerコンテナを経由してコマンドを送る点が特徴です。
時間を朝にするなら、次のように実行します。
docker compose exec -i minecraft rcon-cli time set dayこれだけでゲーム内時間を朝に切り替えられます。
RCONポートをインターネットに公開しない
RCONポートを外部に公開すると、第三者からサーバー停止やOP付与などの管理者コマンドを遠隔実行される重大な危険があります。
この記事のようにコンテナ内部へのdocker compose exec経由で実行し、RCONポートは外部公開しないでください。
Docker ComposeでプラグインとMODを環境変数で導入する

itzg/minecraft-serverは、環境変数にURLを書くだけでプラグインやMODを自動でダウンロードして配置します。
サーバーに入ってjarファイルを手作業で置く手間がいりません。
プラグインはPaperMCなどで動く拡張、MODはFabricやForgeで動く拡張です。
どちらもdocker-compose.ymlのenvironmentに1行追記するだけで導入できます。
扱うのは次の2つです。
- プラグインを導入する
- MODを導入する
書く場所はどちらも同じで、使う環境変数の名前だけが変わります。
プラグインを導入する
PaperMCサーバーにプラグインを入れるときは、PLUGINSにjarファイルのURLをカンマ区切りで指定します。
environmentの中に次の行を追記するだけです。
PLUGINS: "https://配布元のURL/EssentialsX.jar, https://配布元のURL/LuckPerms.jar"設定例のURLはプレースホルダーです。各配布元から入手したjarファイルの直接ダウンロードURLに置き換えて設定してください。
複数ある場合はカンマで区切って並べる形です。
設定を保存したら、サーバーを作り直して反映します。
docker compose downdocker compose up -d起動時にプラグインは自動でダウンロードされ、minecraft_data/pluginsに配置される仕組みです。
プラグインが意図通りに動くかは、ゲーム内に入って確認してください。
正常に動作しない場合は、配布元の対応バージョンとサーバーのマイクラバージョンが一致しているか確かめましょう。
プラグインとMODの違いや入れ方の基本は、プラグインの解説記事から押さえられます。
MODを導入する
MODを入れるときは、サーバーの種類をPaperではなくFabricやForgeに切り替えます。
TYPEを書き換え、MODSにMODのjar URLを指定します。
TYPE: "FABRIC" MODS: "https://配布元のURL/lithium.jar"ここではサーバー側でも動くLithiumを例にしています。
Sodiumなどの描画最適化MODはクライアント専用です。サーバー側に入れても動作しないか起動エラーの原因になるため導入しないでください。
サーバー側に入れられるほかの軽量化MODは、軽量化MODの選び方で選べます。
Fabricでは多くのMODがFabric APIを別途必要とします。Fabric APIのjarもMODSに一緒に指定してください。
Paperはプラグイン専用、FabricやForgeはMOD用と覚えておきます。
MODサーバーを立てる手順全体は、MODサーバーの立て方の記事で別途解説しています。
OP権限とホワイトリストを環境変数で設定する
サーバーを立てたら、次は誰を管理者にするか、誰を入れるかを決めます。
これもdocker-compose.ymlの環境変数で設定するだけです。
ゲーム内でコマンドを1つずつ打つより、ファイルに書いておくほうがサーバーを作り直しても同じ状態を復元できます。
設定するのは次の2つです。
- OP権限を付与する
- ホワイトリストで参加者を制限する
どちらもファイルに残るので、コンテナを作り直しても同じ状態へ戻せます。
OP権限を付与する
OPにしたいプレイヤーは、OPSにマイクラのIDをカンマ区切りで指定します。
environmentに次の行を追記するだけです。
OPS: "PlayerName1, PlayerName2"設定後、サーバーを作り直すと起動時にOP権限が付与されます。
docker compose downdocker compose up -dIDは大文字小文字を区別するため、マイクラで表示されている名前をそのまま使います。
レベル1〜4の違いやdeopでの剥奪は、OP権限の記事で扱います。
ホワイトリストで参加者を制限する
公開サーバーでは、ホワイトリストで許可した人だけ入れるようにします。
WHITELISTにIDを指定するだけで、ホワイトリストは有効です。
WHITELIST: "PlayerName1, PlayerName2"ENABLE_WHITELISTをTRUEにすると、より明示的にオンを示せます。
ENABLE_WHITELIST: "TRUE"サーバーを作り直すと、リスト外のプレイヤーは入れなくなります。
なお、既存のdataフォルダを使い続ける場合、WHITELISTから名前を消しても、すでにホワイトリストに入っている人は消えません。外したい人は、ゲーム内の/whitelist removeで削除してください。WHITELISTの内容にそろえたいなら、EXISTING_WHITELIST_FILE: "SYNCHRONIZE"を足します。
プレイヤーを1人ずつ追加・削除する手順は、ホワイトリストの記事に分けて載せました。
ワールドデータをバックアップ・復元する
この記事の./minecraft_data:/dataという構成では、ワールドやサーバー設定がminecraft_dataに保存されます。
バックアップはサーバーの保存・停止が完了してから取り、復元先に古いデータを混ぜないことが大切です。
保存と停止の完了を確認する
docker-compose.ymlがある作業フォルダで実行します。
docker compose stop minecraftdocker compose ps --all minecraftdocker compose logs --tail=100 minecraftstopはコンテナを削除せずに停止するコマンドです。状態がExitedになったことに加え、今回の停止時のログで保存・終了処理の完了を確認します。
末尾100行に必要な記録がなければ、--tail=100を外して確認してください。保存エラーや強制終了がある場合は、そのコピーを正常な復元用バックアップとして扱わず原因を調べます。
stop_grace_period: 1mは強制終了までの猶予時間です。1分あれば保存が必ず終わるという意味ではなく、猶予の設定と保存・停止の確認は両方必要です。
毎回新しい保存先へ一式コピーする
停止を確認したら、毎回新しいバックアップ用フォルダを作ります。
( set -eu test -d minecraft_data test ! -L minecraft_data backup_dir="$(mktemp -d ./minecraft_backup_XXXXXXXX)" cp -a -- minecraft_data "$backup_dir/" cp -p -- docker-compose.yml "$backup_dir/" printf 'バックアップ保存先: %s\n' "$backup_dir")表示された保存先には、minecraft_dataフォルダ一式とdocker-compose.ymlが入ります。コピーに失敗した場合は起動せず、空き容量やアクセス権を確認してください。
既存のminecraft_data_backupへ同じcp -rを繰り返すと、2回目はその中にminecraft_dataが作られます。古いバックアップに追記せず、取得ごとに分けて保管します。
取得日時と、実際に動いていたMinecraftのバージョン・Paperのビルド番号をバックアップに記録してください。
使ったDockerイメージのリリースタグかdigest、Javaとプラグインのバージョンも残します。latestというタグだけでは、使っていたイメージを特定できません。
この例以外の場所へデータを保存するプラグインや外部データベースがある構成では、それらも別途バックアップが必要です。
復元は現在のデータを退避してから行う
復元元は、使いたいバックアップ用フォルダの中にあるminecraft_dataです。
- サーバーを停止し、保存・停止の完了をログとコンテナの状態で確認します。
- 現在の
minecraft_dataを、まだ使われていない別名へ変更して残します。docker-compose.ymlを戻す場合は、現在の設定ファイルも別名で保管します。 - 元の配置場所に
minecraft_dataというフォルダやリンクが残っていないことを確認します。空いた場所へ、バックアップ内のminecraft_dataをフォルダごとコピーします。 - コピーが完了したことを確かめ、データの配置先と起動するソフトのバージョンをバックアップ取得時に合わせます。退避した現在のデータと復元元は残したままにします。
復元途中やコピー失敗の状態では起動しないでください。フォルダが空のまま起動すると、復元したかったワールドとは別のデータが作られます。
起動するバージョンを確認してから再開する
VERSION: "LATEST"のまま再開すると、新しい版が公開されていれば起動時に更新されます。PaperはVERSIONを固定しても、PAPER_BUILDを指定しなければそのバージョンの最新ビルドを選びます。
通常のバックアップ後も、再開と同時に更新したくない場合は、取得時に記録したバージョンとビルド番号を設定します。
復元ではDockerイメージも、取得時のリリースタグかdigestを指定してそろえます。Javaやプラグインも、取得時のバージョンと対応関係を確認してください。
取得時の版・ビルド番号やイメージを確認できない場合は、復元データでの起動を止めて記録を調べます。
- Composeの設定を変えたとき:
docker compose up -d minecraftで変更を反映して起動する - 設定を変えず、同じバージョンで再開できると確認できたとき:
docker compose start minecraftで既存のコンテナを起動する
startだけでは、変更したComposeの環境変数は反映されません。
起動ログに保存先やプラグインのエラーがないか確認し、ゲームに入って建築物や持ち物などが目的のバックアップ時点へ戻っているか確かめます。
想定と違う場合は再び停止して調べ、復元元と退避した現在のデータは削除しないでください。戻せるのは選んだバックアップの取得時点までです。
バックアップを毎日自動で取りたい場合は、自動バックアップの記事で手順を紹介しています。
Docker Composeでサーバーを停止・再起動する
起動後によく使うのは、停止、再起動、ログ確認の3つです。
- サーバーを停止する
- サーバーを再起動する
- ログをリアルタイムで確認する
どれもdocker-compose.ymlを置いたフォルダで実行します。
サーバーを停止する
サーバーを止めるときは、次のコマンドを実行します。
docker compose downdocker compose downはコンテナを停止して削除しますが、ホスト側にマウントされたminecraft_dataフォルダ内のワールドデータは保持されます。
サーバーを再起動する
サーバーを一度止めて起動し直したいときは、次のコマンドを使います。
docker compose restartただし、docker-compose.ymlのメモリやポート、環境変数を書き換えたあとは、restartではなく作り直しの流れにします。
設定ファイルを反映し直す場合は、次の2つを順番に実行するのが基本です。
docker compose downdocker compose up -d再起動後に動作状態を見るなら、次のコマンドを使います。
docker compose ps --all--allを付けると、止まったコンテナも一覧に出ます。ステータスがUpなら、コンテナは動いています。
Exitedと表示される場合は、コンテナが停止しています。かっこ内の数字が0以外なら、エラーで止まっています。
Upはコンテナが動いていることを示すだけで、マイクラの起動が終わったかまではわかりません。ログにDoneが出たことと、実際に参加できることも確かめてください。
docker compose logs -fを実行して直近のログを確認してください。ログに出たエラー文から原因を絞りたいときは、サーバーが起動しないときのエラー別ガイドで同じエラー文を探すのが早いです。
ログをリアルタイムで確認する
サーバーの動きを流れで追うときは、次のコマンドが便利です。
docker compose logs -f-fをつけるとログがリアルタイムで流れ続けます。
Ctrl+Cで止められます。
Dockerでマイクラサーバーを立てるメリット
Dockerでマイクラサーバーを立てる一番のメリットは、サーバーの状態を作り直しやすいことです。
普通にサーバーファイルを置いて動かす方法だと、あとからJavaのバージョン、起動コマンドのありか、ワールドデータの場所を探しがちです。
Docker Composeなら、サーバーの起動条件をdocker-compose.yml1つに寄せられます。
- 設定ファイルだけで構築できる
- プラグインやOP権限もファイルに書いて管理できる
- メモリやバージョンの変更場所を1つに絞れる
- データの保存先がフォルダ1つでわかりやすい
設定ファイルだけで構築できる
設定ファイルをコピペすると、サーバーの起動条件をまとめて指定した状態になります。
Javaの本体やサーバーjarをホストに置かなくて済むため、あとで、どのJavaで動かしていたかを探す必要がありません。
Dockerはコンテナの中にJavaやサーバーファイルを閉じ込めるため、ホストPCのフォルダにはdocker-compose.ymlとminecraft_dataしか残りません。
プラグインやOP権限もファイルに書いて管理できる
プラグインの導入やOP権限の付与も、docker-compose.ymlの環境変数に書いておけます。
ゲーム内で毎回コマンドを打ち直す必要がありません。
サーバーを作り直しても、ファイルを読み込むだけで同じ構成が復元されます。
メモリやバージョンの変更場所を1つに絞れる
メモリを2GBから4GBへ増やすなら、docker-compose.ymlのMEMORYを書き換えます。
マイクラのバージョンはVERSIONで指定します。Paperのビルドも維持したいときはPAPER_BUILDを設定し、docker compose up -dで変更を反映します。
MEMORYやVERSIONなど、変更する値がdocker-compose.ymlの同じブロックにまとまっているため、複数の設定ファイルを行き来して書き換える手間が減ります。
何GBにするか迷ったら、メモリ割り当ての目安の人数別の表から決められます。
データの保存先がフォルダ1つでわかりやすい
データを保存するフォルダを指定しておけば、コンテナを作り直してもワールドを引き継げます。
バックアップでは保存・停止の完了を確認し、minecraft_dataとdocker-compose.ymlを新しい保存先へコピーします。
別PCへ移すときは、データと設定に加えて、DockerイメージやMinecraft、Paper、プラグインのバージョンもそろえます。
自宅PCではなくroot権限のあるVPSで動かしたい場合も、同じdocker-compose.ymlをそのまま使えます。
SSHで自由にDocker環境を組み、自分好みの構成でサーバーを動かせます
XServer VPS for Gameの料金プランを見るDockerで立てる前に知っておく注意点
Docker Composeは設定をファイルで管理できる反面、ターミナルでのコマンド入力が必要です。
ただし、仕組みをすべて理解する必要はありません。この記事の手順で使うコマンドは次の3つだけです。
docker compose up -d:サーバーをバックグラウンドで起動するdocker compose down:コンテナを停止して終了するdocker compose logs:サーバーの起動ログやエラーを確認する
この3つのコマンドさえ押さえれば、サーバーの起動・停止・ログ確認の日常操作は十分に回せます。

黒い画面、間違えたら壊れそうで正直こわいです。

エラーが出たらログを確認し、原因や起動するバージョンがわからないまま再起動を繰り返さないでください。
よくある質問
Q`docker compose down`を実行すると、ワールドも消えますか?
通常の`docker compose down`では、ホスト側へマウントしたワールドや名前付きボリュームは残ります。ただし`docker compose down -v`は名前付きボリュームも削除するため、実行前に保存先とバックアップを確認します。
QDocker版のマイクラサーバーは、どう更新すれば安全ですか?
保存・停止の完了を確認し、データ一式とCompose設定を新しい保存先へバックアップします。取得時のバージョンとイメージも記録してから、更新先とプラグインの対応を確認してください。必要なイメージの取得と設定変更後、docker compose up -dで再作成し、ログとゲーム内の状態を確かめます。
まとめ:Docker Composeなら設定ファイルでマイクラサーバーを管理できる
Docker Composeでマイクラサーバーを立てるときは、最初から全部を理解する必要はありません。
最初のゴールは、この記事のdocker-compose.ymlを貼り付けて、サーバーが起動するところまでです。
ただ、Docker Composeはサーバーを一度立てて終わりではなく、設定ファイルを残すことであとの変更を同じファイルで済ませられる点が強みです。
- メモリを増やすときは、
MEMORYを書き換える - バージョンを固定するときは、
VERSIONを書き換える - プラグインを入れるときは、
PLUGINSにURLを追記する - OP権限やホワイトリストは、
OPSやWHITELISTにIDを書く - ワールドを残す・戻すときは、
minecraft_dataフォルダを見る
まずは、docker compose up -dで起動し、ログにDoneが出るかを見ます。
そこまで進めば、Dockerの細かい仕組みはあとから覚えれば十分です。
サーバーが起動したら、サーバーアドレスを登録してマイクラから入れるか試します。
友達に外から参加してもらうなら、公開方法を決めることも必要です。
ポート開放が難しい場合は、ポート開放なしで公開する方法も検討します。
公開する前に、ホワイトリストやバックアップの抜けをサーバー設定のまとめで見直しておくと安心です。







