GCPの無料枠で作ったVPSを通してマイクラ自宅サーバーを公開する

Twitterのスペースで9時間ぐらい唸りながらようやくできたので備忘録。


はじめに

 私の家はやむを得ない事情によって二重ルーター状態になっているので、今まではGCPでマイクラサーバーを立てて運用していたのだが、サブPCを組んだのでせっかくだし自宅サーバーにしたいなあと思っていろいろと模索した。結果として、GCPの無料枠のVMインスタンスと自宅サーバーとでVPNを構築したらうまくいった。この方法であれば、自宅が二重ルーター状態だろうとルーターの管理画面に入れずポート開放できなくても自宅サーバーを公開できる。

GCPの無料枠でVPSを立てる

VMインスタンスの作成

 まず最初にGCPの無料枠でVPSを立てる。基本的にこのサイトに従ってVMインスタンスを作成すればOK。OSはUbuntuであればなんでも可(のはず)。

注意点

ブートディスクの設定で、ブートディスクの種類を『バランス永続ディスク』から『標準永続ディスク』に変更する。これを忘れると月額400円くらい取られる。
・IP転送をオンにする。これを忘れると作り直し。

・「HTTPトラフィックを許可する」「HTTPSトラフィックを許可する」はチェックを入れなくても大丈夫。

ファイアウォールルールの設定

 VMインスタンスの作成が終わったら、ファイアウォールルールを設定する。ファイアウォールルール画面までの飛び方はさっきのサイト参照。ファイアウォールルールも基本的にさっきのサイトと同じように作成すればよいが、プロトコルとポートは指定したプロトコルとポートにして、統合版サーバーを立てたい場合はUDPの所に19132を、Java版サーバーを立てたい場合はTCPの所に25565を設定する。

統合版サーバーを立てたい場合


Java版サーバーを立てたい場合

Tailscaleを使う

Tailscaleのアカウントを作成する

 このnoteではTailscaleを使ってVPNを構築する。以下のサイトを参考にして構築した(書いてあることほとんど被っている気がする)。

 まずはTailscaleのアカウントを公式サイトから作成する。

 今回は無料プランで十分なので、『Use Tailscale for Free』と書いてあるボタンから登録をする。

Tailscaleをインストールする

 先ほど作ったVMインスタンスにSSH接続して、次のコマンドを打つ。

$ sudo apt-get install curl
$ curl -fsSL https://tailscale.com/install.sh | sh
$ sudo tailscale up --advertise-exit-node

 3個目のコマンドを実行するとURLが表示されてログインを求められるので、アクセスし先ほど作ったアカウントでログインする。
 自宅サーバーの方でも同様の作業を行う。自宅サーバーのOSがUbuntu以外の場合は公式サイトを参考にすること。
 ここまで終わったら、Tailscaleの管理画面にアクセス(公式サイトにログインしたら行ける)して、ExitNodeを有効にする。

Pingを飛ばしあって確認

 正しくVPNが構築されたかpingを飛ばしあって確認する。
 VMインスタンスから自宅サーバー

$ ping <Tailscaleで自宅サーバーに割り振られたIP> -c 4

  自宅サーバーからVMインスタンス

$ ping <TailscaleでVMインスタンスに割り振られたIP> -c 4

 IPはTailscaleの管理画面からコピーできる。
 4 packets transmitted, 4 received, 0% packet loss, time hogehogemsみたいなのが出てくれば成功。

<統合版サーバーの場合>Uredirでポートフォワーディングを設定する

 統合版サーバーの通信プロトコルはUDPなので、Uredirでポートフォワーディングをする。以下の作業は全てGCPのVMインスタンスで行う。自宅サーバーには特に何もしなくてOK。

Uredirのビルド&インストールの準備

 Uredirをインストールする前に必要なものをインストールしておく。

$ sudo apt-get install gcc
$ sudo apt-get install make
$ sudo apt-get install pkg-config

 以下のサイトからLibuEvのtarをインストールするためのリンクをコピー

 wgetでダウンロードし、解凍&ビルド&インストール(例は執筆時点での最新版)

$ wget https://github.com/troglobit/libuev/releases/download/v2.4.0/libuev-2.4.0.tar.gz
$ tar -zxvf libuev-2.4.0.tar.gz
$ cd libuev-2.4.0
$ ./configure
$ make -j5
$ make check
$ sudo make install-strip
$ sudo ldconfig

Uredirのビルド&インストール

 以下のサイトからUredirのtarをインストールするためのリンクをコピー

 wgetでダウンロードし、解凍&ビルド&インストール(例は執筆時点での最新版)

$ wget https://github.com/troglobit/uredir/releases/download/v3.3/uredir-3.3.tar.gz
$ tar -zxvf uredir-3.3.tar.gz
$ cd uredir-3.3
$ ./configure
$ make
$ sudo cp uredir /usr/local/bin/uredir

ポートフォワーディングの設定

 Uredirコマンドが実行できるか確認。

$ uredir -h

 Usage: uredir [-hinsv] [-I NAME] [-l LEVEL] [-t SEC] [SRC:PORT] DST:PORTから始まる文章が出てくればOK。
 確認ができたら、ポートフォワーディングの設定を行う。

$ sudo uredir  :19132 <Tailscaleで自宅サーバーに割り振られたIP>:19132

<Java版サーバーの場合>redirでポートフォワーディングを設定する

 Java版サーバーの通信プロトコルはTCPなので、redirでポートフォワーディングをする。以下の作業は全てGCPのVMインスタンスで行う。自宅サーバーには特に何もしなくてOK。書いてあることは以下のサイトと一緒。

redirのインストール、ポートフォワーディングの設定

 以下のコマンドを打つ。

$ sudo apt-get update
$ sudo apt-get install redir
$ sudo redir :25565 <Tailscaleで自宅サーバーに割り振られたIP>:25565

ファイアウォールに穴をあける

 自宅サーバーのファイアウォールに穴をあけます。自宅サーバーのOSがUbuntuなら、
統合版サーバーの場合

$ sudo ufw allow 19132/udp

Java版サーバーの場合

$ sudo ufw allow 25565/tcp

で穴をあけることができる。

Minecraftサーバーにログイン

 あとは自宅サーバーの方でマイクラサーバーを起動して(この辺は調べればいろいろ出てくるので割愛)、Minecraftを起動してVMインスタンスの外部IPを入れて接続すれば入れる。

最後に

 質問などありましたらコメントにお願いします。分かる範囲で答えると思います。少しでも誰かのお役に立てれば幸いです!

この記事が気に入ったらサポートをしてみませんか?