pkkiblog 暇なときに投稿しています
サーバー パソコン デザイン・グラフィック レビュー

【マイクラJAVA版】Tailscale+VPSで安全にサーバーを公開する方法

schedule 2025年11月28日  update 2025年11月29日        
【マイクラJAVA版】Tailscale+VPSで安全にサーバーを公開する方法 サムネイル

皆さんこんにちは、pkkiです!

皆さんは、

 「VPS持ってるけど、どうやって自宅サーバーと繋げてマイクラサーバー公開すればいいのか分からない…」
 「iptableでポート転送したけど、ProxyProtocol使えない、どうしよう!」

と、思ったことはありませんか?

そこで今回は、
「無料で使えるTailscaleを使って、VPSと接続し、
マインクラフトJAVA版サーバーをNginxでポート転送して公開する方法」
を初心者向けに画像付きで丁寧に解説します!

iptableでポート転送してたけど、Nginxでもポート転送できるんですね!

そうなんです!
実は、私もこの記事を書くまではIptableでポート転送していました(;^_^A
この記事を書くために色々リサーチしていたら、この方法を見つけました!

では、早速解説していきましょう!

Tailscaleとは?

Tailscale ホームページ
https://tailscale.com/

Tailscaleとは、安全でインストールが簡単なWireGuardベースのメッシュ型VPNサービスです。

VPNとは
VPNとは「Virtual Private Network」の略で、
インターネット上に暗号化された仮想的な専用通信網を構築する技術です。
簡単に言うと、ローカルネットワークに別の外にあるパソコンとかを繋げるといった感じです。

主な特徴
  • ポート開放・NAT設定不要!
  • スマホ・PC・サーバーを簡単にVPNで接続可能
  • 高速で低遅延、セキュアな通信が可能

プラン

続いて、プランについては、画像の様に無料でも十分使えるプランとなっています。

そして、驚くことに無料でも最大100台のデバイスを接続することができます。

でも、どうやって無料で最大100台も接続できるの?

それは、Tailscaleが使っているメッシュ型のP2P接続にあります!

仕組み

では、Tailscaleは無料でどうやって低遅延のVPNを提供しているのでしょうか

それは、このP2P(Peer-to-peer)という仕組みにあります。

Tailscaleの仕組み(P2P)

P2P(Peer-to-peer)とは、サーバーを介さず、クライアント同士が直接データをやり取りする通信方式のことです。

しかし、接続の調整や認証等はTailscaleのサーバーが担っています
実際のデータ転送等はクライアント同士がやっている感じですね。

このように、接続の調整や認証等だけをTailscaleのサーバーが行っているので、
Tailscale自体は全然負荷がかかりません。
なので、無料でも最大100台も接続可能なわけです。

でも、直接通信ってポート開放しないと無理なんじゃないの

そうなんです!
なので、P2Pを実現するためにNAT越えをする必要があります。

NATとは?(ざっくり)

大体のルーターには「NAT」という機能があります。

これは…

なんですが、このNATは外からのアクセスを基本的にブロックするので、
普通はポート開放しないと外部から接続できません。

マイクラのマルチプレイでポート開放が必要になるのは、このためです。

NAT越えとは?

本来つながらないはずの “ルーター越し” のPC同士が
特別な方法を使って直接通信できるようにする技術

のことです。

どうやってNAT越えしてるの?(超ざっくり版)

Tailscaleのサーバーが仲介するんです。

まず、自宅サーバーとVPSは、
Tailscaleの仲介サーバーに「今ここにいるよ!」と登録します。

サーバーは2つのサーバーの接続状態を見て、
「この2つのサーバーは直接つなげる!」と判断すると、

→ ルーターに対して 穴を開けても大丈夫なタイミング を作り
→ PC同士が直接つながれるよう手助けします

これを ホールパンチング(UDP Hole Punching) といいます。

UDPホールパンチングとは?

難しく聞こえるかもしれませんが仕組みは簡単。

  1. 自宅サーバー → ルーターへ「外に通信したいよ〜」と送る
  2. VPS → 同じように送る
  3. それをTailscaleのサーバーが調整して
  4. 互いのルーターが「この通信は許可してもいいか」と判断する
  5. 結果、お互いのルーターが通信を通す状態になる

つまり、ポート開放しなくてもPC同士が直接通信できる状態になるわけです。

例えば、このブログのデータが欲しいとpkkiサーバーにリクエストを送信するとします。
「データが欲しい」こうリクエストしたので、pkkiサーバーからのデータを当然受け取らなければいけません。
外からのアクセスはポート開放をしないと基本ブロックされる。
なので、ルーターは「pkkiサーバーだけ受信を許可する」という事をします。
これを利用しているのです。

なので、双方がお互いにデータを同時に送信します。
そうすると、お互いリクエストを受信するため、ルータがその受信を許可するのです。

ちなみに「ポート開放」は、受信をどこからでも受け取る状態にするという事です。

なるほど、送信したときに受信をしなければならない
この仕組みを利用しているのですね!

また、Tailscaleの仕組みについては、公式が解説しているので、詳しく知りたい方はこちらをご覧ください。

Tailscaleの導入方法

さて、仕組みが分かったところで、いよいよ実践編です!
では早速やっていきましょう!

Tailscaleのアカウント作成

Tailscale アカウント作成
https://login.tailscale.com/

最初に、上のリンクを開いてログインページを開いてください。

次に、メールアドレスを入力するか、他のプラットフォームからサインするか選択してください。
※今回はGithubから作成しようと思います。

Tailscale Github認証

Githubの場合は、このように表示されるので、「Authorize tailscale」をクリックしてください。

アカウント作成完了したら、勝手にアンケート画面が開くと思います。

次に、アンケートの解説をします

アンケート

Tailscale アンケート

最初に、①「What is your primary reason for using Tailscale?」を「Personal or At-Home Use」にしてください。

次に、②「What is your role within your organaization?」はテキトウに「Engineer」と選んでおきましょう。

それから、③「Which VPN provider are you currently using?」に今使ってるVPNサービスを選択します。
私の場合は、Cloudflareでブログ公開してるので、Cloudflareを選択しました。

そのあと、④「How did you hear about Tailscale?」を「Search」にしておきましょう。

最後に、③「Next:Add your first device」をクリックしたら完了です。

Tailscaleのインストール方法

Linux

Tailscale Linuxインストール

最初に、①「Linux」を選択します。

curl -fsSL https://tailscale.com/install.sh | sh
Tailscale Linuxインストール

次に、②のコードをインストールしたいLinuxのコンソールに打ち込んで実行します。

Tailscale Linux tailscale up
sudo tailscale up

そして、このように「sudo tailscale up」と表示されたら、それを実行します。

Tailscale Linux authenticate

そうすると、このようにリンクが表示されるので、開いてください。

Tailscale Linux authenticate 接続

このように表示されるので、「Connect」をクリックして接続します。

Tailscale Linux authenticate 成功
Tailscale Linux authenticate 成功

このように「login successful」と表示されれば成功です。

Tailscale Wating for your second device

最後に、このページに戻ったらこのように「Wating for your second device」となるので、
もう一方のサーバーにTailscaleを同じ手順でインストールしてください。

両方インストール出来たら

Tailscale 両方インストール出来た時

両方インストールできたら、このようになるので、「Success,it works!」をクリックしてください。

Tailscale What's next? Whatever you want.

最後に、「Go to the admin console」をクリックしたら完了です。

これで、Tailscaleの導入が完了しました。

ポート転送方法(VPS側)

sudo apt update && sudo apt upgrade

最初に、上のコマンドを実行してパッケージを最新の状態にしておきましょう。

sudo apt install nginx libnginx-mod-stream実行
sudo apt install nginx libnginx-mod-stream

次に、上のコマンドからNginxとストリームMODをインストールします。

sudo vi /etc/nginx/nginx.conf
sudo vi /etc/nginx/nginx.conf

それから、上のコマンドからNginxの設定ファイルを開きます。

Nginx /etc/nginx/nginx.conf 設定
stream {
    server {
        listen 25565;
        
        # 自宅のTailscale IP
        proxy_pass 100.x.y.z:25565;
        
        # ★ここでProxy Protocolを有効化
        proxy_protocol on;
    }
}

そのあと、「i」キーを押してインサートモードにし、
画像の様に上のコードを何もない所に貼り付けます。

そして、Tailscaleの管理パネルからマイクラ鯖側のアドレスを確認して、「proxy_pass」の右側の「100.x.y.z」をそのアドレスに書き換えます。

:wq

それが完了したら、「ESC」キーでインサートモードを終了し、上の文字列を打って保存・終了してください。

sudo systemctl restart nginx

最後に、上のコマンドを入力・実行したら完了です。

sudo ufw allow 25565

また、ポート開放していない人は、上のコマンドを実行してください。
加えて、VPSの管理パネルからのポート開放も忘れずにやってください。

これだけなんですか!?

そうなんです、Iptableよりも断然楽です!
しかも、ProxyProtocolにも対応できますし。

次に、マイクラサーバー側の設定に移りましょう。

マインクラフトJAVA版サーバー側(PaperMC)の設定

次に、PaperMC側の設定をします。

バニラサーバーではProxyProtocolの設定項目がないので、PaperMCを入れてください。

PaperMC proxy-protocol有効 config/paper-global.yml

最初に、PaperMCが入っているディレクトリからconfig/paper-global.ymlを開いてください。

そして、「proxies」から「proxy-protocol」があるので、「false」から「true」に書き換えてください。

最後に、保存して再起動するだけで完了です。

えっ、これだけ?( ゚Д゚)

ProxyProtocolを有効にするだけなので、これだけなんです!

実際にサーバーに入ってみる

マインクラフトサーバー一覧画面

実際に、サーバーのアドレスを入力して入ってみます。

マインクラフトJAVAサーバー参加したときの画像

このようにサーバーに参加したらTailscaleのIPではなく、しっかり元のIPアドレスが表示されました!

まとめ

皆さん、お疲れ様でした!
今回は「Tailscale × VPS × Nginx」という組み合わせを使って、自宅のマイクラサーバーを安全に公開する方法を紹介しました。

これなら、誰がログインしたかしっかり分かるので安心ですね! そうなんです!
「ポート開放できない…」と諦めていた人や、「iptablesだとIPが分からなくて荒らし対策ができない…」
と悩んでいた人にとって、この方法はまさに救世主だと思います。

最後に、今回のポイントを整理しておきましょう。

今回のまとめ
  • Tailscale を使えば、難しいルーター設定なしでVPSと接続できる
  • Nginx (Stream)iptables よりも設定が管理しやすく簡単
  • Proxy Protocol を有効にすることで、プレイヤーの本来のIPアドレスが見える(IP BANも可能!)

VPSは月額数百円の安いプランでも、「トンネル」の役割なら十分にこなせます。
自宅サーバーのスペックを活かしつつ、固定IPで安定した公開ができるこの構成、ぜひ皆さんも試してみてください!

最後までご覧いただき有難うございました!
もし、ご指摘やご感想、設定でつまづいたり、分からないことがあれば
コメントの方でお願いします!

それでは、良いマイクラライフを!

この記事は役に立ちましたか?

この記事を書いた人

コメントはこちらからどうぞ

コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください。