この記事では、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確保する
Xms と Xmx を同じにする運用もありますが、個人サーバーならまずは控えめで大丈夫です。
-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-distance と simulation-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解決や接続失敗のログが出ます。
自分がやった確認
自分の場合は、次の順番で切り分けました。
- Macがネットにつながっているか
- Wi-Fiが勝手に切り替わっていないか
cloudflaredが起動しているか- DNSが引けるか
- Minecraftサーバー自体が起動しているか
- ローカルから
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内でつながる
↓
外部から届く
↓
負荷に耐える
この順番で切り分けると、問題の場所がかなり見つけやすくなります。
参考にした公式情報
- Minecraft Java Edition Server Download
- Cloudflare Tunnel Setup
- Cloudflare Tunnel locally-managed tunnel
まとめ
MacでMinecraftサーバーを立てること自体は難しくありません。
難しいのは、公開と運用です。
- ローカルで動くか
- LAN内で入れるか
- Macがスリープしないか
- Wi-Fiが変わらないか
- DNSが正しいか
- 外部公開方式がMinecraftに合っているか
- TPSが20に近いか
この順番で確認すれば、トラブルはかなり減らせます。
特にCloudflare Tunnelは便利ですが、Minecraft Javaの通常接続とは相性に注意が必要です。
Webサイト公開と同じ感覚で考えず、TCP通信であることを意識すると混乱しにくくなります。