【実体験】Minecraft サーバー構築で地獄を見た話|Cloudflare Tunnel・Wi-Fi問題・Macの罠まで全部解説

この記事では、MacでMinecraft Java Editionのサーバーを立てるときに実際につまずいたことを、解説サイトとして読める形に整理します。

最初に結論を書くと、Minecraftサーバー構築で詰まる原因の多くは、Minecraftそのものではなく、次の周辺知識です。

  • Javaの起動コマンド
  • server.properties の意味
  • Macのスリープ設定
  • Wi-FiやローカルIPの変化
  • DNSの見方
  • Cloudflare Tunnelでできること、できないこと
  • メモリ割り当てとTPS

「サーバー.jarを起動したのに入れない」「Cloudflare Tunnelを使ったのに友達が接続できない」「Macを閉じたら落ちる」みたいな問題は、仕組みを分けて考えるとかなり解決しやすくなります。

この記事は、Java版Minecraftを想定しています。統合版ではポートや通信方式が違うので、そのまま同じにはなりません。


まず理解するべき全体像

Minecraft Javaサーバーは、基本的には次のような構成で動きます。

プレイヤーのMinecraft
  ↓
インターネットまたはLAN
  ↓
自宅Mac / サーバーPC
  ↓
Minecraft server.jar

ローカルだけで遊ぶなら、同じWi-Fi内の人がMacのローカルIPへ接続します。

192.168.x.x:25565

外部の友達に入ってもらうなら、何らかの方法で自宅のMinecraftサーバーへ到達させる必要があります。

代表的な方法はこのあたりです。

方法 特徴 難易度
ポート開放 昔ながらの方法。直接公開できるが危険もある
VPS 安定する。本番向け
Tailscale / ZeroTier 身内向けVPN。安全で楽 低〜中
playit.gg など Minecraft向けトンネルサービス
Cloudflare Tunnel Web公開には強いが、Minecraftでは注意が必要 中〜高

ここで大事なのは、Cloudflare TunnelはWebサイト公開とMinecraftサーバー公開で事情が違う という点です。

HTTPサイトなら、Cloudflare Tunnelで http://localhost:8000 をそのまま公開できます。
しかしMinecraft JavaはHTTPではなくTCP通信です。Cloudflare公式ドキュメントでも、SSHやTCPなどの非HTTPサービスではクライアント側にも cloudflared が必要になると説明されています。

つまり、普通のMinecraftクライアントだけで mc.example.com に入れる公開をしたいなら、Cloudflare Tunnelだけで完結しない場合があります。


Cloudflare TunnelでMinecraftを公開するときの重要な注意

Cloudflare Tunnelはとても便利ですが、Minecraft Javaサーバーを一般公開する用途では注意が必要です。

Webサイト公開との違い

Webサイトの場合はこうです。

ブラウザ
  ↓ HTTPS
Cloudflare
  ↓ Tunnel
localhost:8000

これはかなり相性がいいです。

一方、Minecraft Javaはこうです。

Minecraftクライアント
  ↓ TCP 25565
Minecraftサーバー

MinecraftクライアントはWebブラウザではありません。
そのため、Cloudflare TunnelでTCPを扱う場合、参加者側にも cloudflared access tcp のようなクライアント設定が必要になるケースがあります。

じゃあCloudflare Tunnelは使えないのか

使い方によります。

身内で全員が設定できるなら、Cloudflare Tunnel経由でTCP接続する構成も選択肢になります。
ただし、友達に「Minecraftのサーバーアドレスを入れるだけで参加してほしい」という用途なら、次の方が現実的です。

  • VPSにMinecraftサーバーを置く
  • playit.gg のようなMinecraft向けトンネルを使う
  • Tailscale / ZeroTier で身内VPN化する
  • ルーターでポート開放する

Cloudflare Tunnelは万能ではなく、Web公開に強いトンネル と考えるとわかりやすいです。


MacでMinecraft Javaサーバーを作る手順

ここからは、まずローカルでMinecraftサーバーを動かすところまでを作ります。

1. Javaを確認する

ターミナルで確認します。

java -version

Minecraftのバージョンによって必要なJavaバージョンは変わります。
最近のMinecraftではJava 21が必要になることがあります。古いバージョンではJava 17やJava 8が必要なこともあります。

ここがズレていると、サーバーjarを起動した瞬間にエラーになります。

よくある症状はこれです。

UnsupportedClassVersionError

これはだいたい「Javaが古い」か「MinecraftのバージョンとJavaの組み合わせが合っていない」状態です。

2. サーバー用フォルダを作る

デスクトップなどに適当に置くより、専用フォルダを作った方が管理しやすいです。

mkdir ~/minecraft-server
cd ~/minecraft-server

以降、このフォルダの中にサーバーファイルを置きます。

3. server.jarを置く

公式のMinecraftサーバーjarを使う場合は、Minecraft公式のサーバーダウンロードページから取得します。

modサーバーにする場合は、ForgeやFabricのサーバー用jarを使います。

この記事では、まずわかりやすく server.jar という名前で説明します。

~/minecraft-server/server.jar

4. 初回起動する

java -Xmx4G -Xms2G -jar server.jar nogui

初回はすぐ止まるはずです。
これは正常です。

理由は、EULAに同意していないからです。

5. eula.txtを変更する

初回起動後、フォルダ内に eula.txt ができます。

中身を開いて、

eula=false

を、

eula=true

に変更します。

これはMinecraftの利用規約に同意する設定です。内容を確認したうえで変更してください。

6. 再起動する

もう一度起動します。

java -Xmx4G -Xms2G -jar server.jar nogui

最後の方にこのような表示が出れば成功です。

Done

これでローカルのMinecraftサーバーは起動しています。


起動コマンドの意味

よく使うコマンドはこれです。

java -Xmx4G -Xms2G -jar server.jar nogui

意味を分解します。

java

Javaでプログラムを起動する、という意味です。

Minecraft JavaサーバーはJavaアプリなので、java コマンドで起動します。

-Xmx4G

サーバーが最大で使えるメモリ量です。

-Xmx4G = 最大4GBまで使ってよい

modを入れるなら、ここが少なすぎると重くなったり落ちたりします。

目安はこんな感じです。

用途 目安
バニラ少人数 2GB〜4GB
軽めのmod 4GB〜6GB
mod多め 6GB〜10GB以上

Mac本体のメモリが8GBしかないのに -Xmx8G にすると、Mac側が苦しくなります。
本体メモリの全部をMinecraftに渡さないのがコツです。

-Xms2G

起動時に確保するメモリ量です。

-Xms2G = 最初から2GB確保する

XmsXmx を同じにする運用もありますが、個人サーバーならまずは控えめで大丈夫です。

-jar server.jar

起動するjarファイルを指定しています。

ForgeやFabricではファイル名が違うことがあります。

例:

java -Xmx6G -Xms4G -jar fabric-server-launch.jar nogui

nogui

サーバーのGUI画面を出さない設定です。

Macで常時運用するなら、基本的には nogui を付けた方が軽くて安定します。


server.propertiesで最低限見るところ

サーバーが起動すると server.properties ができます。

このファイルは、Minecraftサーバーの設定ファイルです。

最低限見るべき項目はこれです。

server-port

server-port=25565

Minecraft Javaの標準ポートです。

特別な理由がなければそのままでOKです。
同じMacで複数サーバーを動かすなら、2つ目は 25566 などに変えます。

online-mode

online-mode=true

基本は true のままにします。

false にすると認証まわりが緩くなり、なりすましなどの問題が出ます。
特殊な事情がない限り、公開サーバーで false にしない方がいいです。

white-list

white-list=true

身内サーバーなら true 推奨です。

設定後、サーバーコンソールで参加者を追加します。

whitelist add プレイヤー名

max-players

max-players=10

人数が増えるほどCPUとメモリを使います。
Macで身内運用なら、最初は少なめで十分です。

view-distancesimulation-distance

view-distance=10
simulation-distance=10

重い場合はここを下げます。

おすすめの調整例:

view-distance=8
simulation-distance=6

mod入りや低スペック環境では、この2つを下げるだけでかなり軽くなることがあります。


同じWi-Fi内から接続する方法

まずは外部公開の前に、同じWi-Fi内から入れるか確認します。

MacのローカルIPを調べます。

ipconfig getifaddr en0

Wi-Fiならだいたい en0 です。

例えばこう出たとします。

192.168.1.23

Minecraft側では、サーバーアドレスにこう入れます。

192.168.1.23:25565

ここで入れないなら、外部公開以前の問題です。

確認するポイント:

  • サーバーは起動しているか
  • Macとプレイヤーが同じWi-Fiにいるか
  • MacのファイアウォールがJavaをブロックしていないか
  • server-port が25565になっているか

Wi-Fiが変わるとサーバーに入れなくなる理由

自分が実際にかなりハマったのがこれです。

Macが別のWi-Fiに切り替わると、ローカルIPが変わります。

例:

変更前: 192.168.1.23
変更後: 192.168.10.8

この状態で友達が古いIPへ接続しても、当然つながりません。

Cloudflare Tunnelを使っている場合でも、Mac自体のネットワークが切れたらTunnelも落ちます。

対策

Mac側でできる対策はこれです。

  • 使うWi-Fiを固定する
  • 不要なSSIDの自動接続を切る
  • 可能なら有線LANにする
  • ルーター側でMacに固定IPを割り当てる
  • Tunnelやサーバーのログを見る習慣をつける

特に自宅運用なら、有線LANが一番安定します。


MacBookを閉じるとサーバーが落ちる問題

MacBookで運用する場合、これも大きな罠です。

画面を閉じると、Macはスリープします。
スリープするとJavaも止まり、Minecraftサーバーも止まります。
Cloudflare Tunnelも止まります。

つまり、

MacBookを閉じる
  ↓
Macがスリープ
  ↓
server.jar停止
  ↓
友達が全員切断

になります。

対策

短時間なら、macOSの設定でスリープを抑制します。

長時間運用なら、次のような方法を考えます。

  • Macを閉じずに運用する
  • 電源接続時はスリープしない設定にする
  • caffeinate コマンドを使う
  • Amphetamineなどのスリープ防止アプリを使う
  • 常時運用するならVPSへ移す

ターミナルで一時的にスリープ防止するなら、例えばこれです。

caffeinate -dimsu

このコマンドを動かしている間はスリープしにくくなります。


Cloudflare Tunnelで詰まったところ

自分がCloudflare Tunnelで特に混乱したのは、WebサイトとMinecraftサーバーを同じ感覚で扱ってしまったことです。

Cloudflare Tunnelは、Webアプリの公開ならかなり簡単です。

例:

https://tap-code.jp
  ↓
http://127.0.0.1:8000

これはこのサイトの公開にも向いています。

しかしMinecraftはWebではありません。

Minecraft JavaはTCP 25565を使うので、普通のHTTP公開とは違います。

Cloudflare公式のTunnelセットアップにも、非HTTPサービスではクライアント側に cloudflared が必要になると書かれています。
つまり、普通のWebサイトのように「URLを作れば誰でもブラウザなしで接続できる」というものではありません。

Cloudflare Tunnelが向いている用途

  • 自宅のWebサイト公開
  • 管理画面の安全な公開
  • SSHなどをCloudflare Access経由で守る
  • 自分や身内が cloudflared を使える環境

Minecraftで普通に公開したい場合

Minecraftのサーバーアドレスを渡すだけで友達に入ってほしい場合は、次の選択肢も検討した方がいいです。

  • VPS
  • playit.gg
  • Tailscale / ZeroTier
  • ポート開放

ポート開放は直接公開なので、セキュリティ面の注意が必要です。
身内だけなら、TailscaleやZeroTierの方が安全で楽なことが多いです。


DNSで混乱した話

DNSでハマったとき、最初は何が正しくて何が間違いなのかわかりませんでした。

よくある混乱はこれです。

nslookup mc.example.com

見るDNSサーバーによって結果が違うことがあります。

例えば、

nslookup mc.example.com 1.1.1.1

では正しく返るのに、家のルーター経由だと返らない、みたいなことがあります。

これは、Cloudflare側の権威DNSと、家の中のローカルDNSを混同している状態です。

DNS確認で見るポイント

Cloudflare管理のドメインなら、まず外部DNSで見ます。

nslookup example.com 1.1.1.1

または、

dig example.com @1.1.1.1

ローカルのルーターが変な結果を返していても、Cloudflare側のDNSが正しいなら外部公開としては問題ないことがあります。

ただし、自分の家の中からだけ見えない場合は、ローカルDNSやルーターのキャッシュが原因のこともあります。


i/o timeout が出たときの見方

Cloudflare Tunnelやネットワーク系で見かけるエラーに、i/o timeout があります。

これはざっくり言うと、

通信しようとしたけど時間内に応答がなかった

という意味です。

原因は1つではありません。

よくある原因:

  • Wi-Fiが切れた
  • DNSが引けない
  • Macがスリープした
  • cloudflaredが落ちた
  • Cloudflare側へ接続できていない
  • ルーターや回線が不安定

まず見るべきはログです。

cloudflared tunnel run トンネル名

正常なら、接続が確立したログが出ます。

落ちているときは、DNS解決や接続失敗のログが出ます。

自分がやった確認

自分の場合は、次の順番で切り分けました。

  1. Macがネットにつながっているか
  2. Wi-Fiが勝手に切り替わっていないか
  3. cloudflared が起動しているか
  4. DNSが引けるか
  5. Minecraftサーバー自体が起動しているか
  6. ローカルから localhost:25565 相当で待ち受けているか

いきなりCloudflareを疑うより、まずMac側から見る方が早いです。


メモリ不足で重くなる問題

Minecraftサーバーは、人数やmod、ワールド生成でかなりメモリを使います。

特に重いのはこのタイミングです。

  • 新しい地形を読み込む
  • 複数人が別方向へ探索する
  • modで構造物やMobが増える
  • ネザーやエンドへ移動する
  • 大量のアイテムやエンティティがある

メモリ不足になると、次のような症状が出ます。

  • ブロックを壊しても戻る
  • 敵やプレイヤーがワープする
  • チャットが遅れる
  • サーバーが突然落ちる
  • Can't keep up! がログに出る

メモリ設定の例

バニラ少人数なら:

java -Xmx4G -Xms2G -jar server.jar nogui

mod入りなら:

java -Xmx6G -Xms4G -jar server.jar nogui

Macのメモリが16GBなら、Minecraftに6GBくらいまで割り当てても現実的です。
ただし、ブラウザやDiscordなども同時に使うなら余裕を残してください。


TPSとは何か

Minecraftサーバーの快適さを見るとき、TPSが重要です。

TPSは Ticks Per Second の略です。

Minecraftは通常、1秒に20回処理を進めます。

20 TPS = 正常
18 TPS = 少し重い
10 TPS = かなり重い

20に近いほど快適です。

TPSが落ちる原因

よくある原因はこれです。

  • ワールド生成が重い
  • modが重い
  • エンティティが多い
  • view-distanceが高すぎる
  • simulation-distanceが高すぎる
  • ストレージが遅い
  • CPUの1コア性能が足りない

Minecraftサーバーは、コア数よりも1コアの性能が効く場面が多いです。
12コアMacだから絶対余裕、というわけではありません。

軽くする設定

server.properties でまず下げるならこの2つです。

view-distance=8
simulation-distance=6

これでかなり改善することがあります。


公開前チェックリスト

外部公開する前に、最低限これを確認します。

サーバー本体

  • server.jar が起動する
  • eula=true にしている
  • ローカルから接続できる
  • server.properties を確認した
  • whitelistを有効にした
  • OP権限を必要な人だけにした

Mac

  • スリープしない設定にした
  • Wi-Fiが固定されている
  • できれば有線LANにした
  • Javaのバージョンが合っている
  • メモリを割り当てすぎていない

ネットワーク

  • 同じWi-Fi内から接続できる
  • DNSの向き先を確認した
  • 外部公開方式を決めた
  • Cloudflare Tunnelを使うならTCPの制約を理解した

自分が最終的に理解したこと

Minecraftサーバー構築は、コマンドだけ見ると簡単そうに見えます。

java -jar server.jar

でも実際に公開しようとすると、Java、Mac、Wi-Fi、DNS、ポート、Tunnel、メモリ、TPSが全部絡みます。

自分が地獄を見た理由は、Minecraftだけを見ていたからです。

本当に見るべきだったのは、次の流れでした。

Minecraftが動く
  ↓
Macが落ちない
  ↓
LAN内でつながる
  ↓
外部から届く
  ↓
負荷に耐える

この順番で切り分けると、問題の場所がかなり見つけやすくなります。


参考にした公式情報


まとめ

MacでMinecraftサーバーを立てること自体は難しくありません。

難しいのは、公開と運用です。

  • ローカルで動くか
  • LAN内で入れるか
  • Macがスリープしないか
  • Wi-Fiが変わらないか
  • DNSが正しいか
  • 外部公開方式がMinecraftに合っているか
  • TPSが20に近いか

この順番で確認すれば、トラブルはかなり減らせます。

特にCloudflare Tunnelは便利ですが、Minecraft Javaの通常接続とは相性に注意が必要です。
Webサイト公開と同じ感覚で考えず、TCP通信であることを意識すると混乱しにくくなります。