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を設定する。
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を入れて接続すれば入れる。
最後に
質問などありましたらコメントにお願いします。分かる範囲で答えると思います。少しでも誰かのお役に立てれば幸いです!
この記事が気に入ったらサポートをしてみませんか?