パルワールドの専用サーバーを建てたいという声はよく聞きますが、パルワールドの専用サーバーを建てるには知識やコストが必要で、条件もなかなか厳しいです。
今回は、ポートを開放したくない/またはポート開放ができない人でも、自宅のPCにポート開放なしでパルワールドの専用サーバーを建てる方法を解説します。
パルワールドのサーバーはメモリ容量がかなり厳しいみたいですので、VPSを契約しようとしてもかなり高くついてしまうため、可能であれば是非この方法を試してみてください。
先に結論
今回の方法では、以下のような手順を取りました。
- 手順1WSL2+Dockerでローカル環境にパルワールドサーバーを構築
ローカル環境にサーバーを構築するのは、任意の方法でOKです。以降の手順にはほとんど環境による差は出ません。
- 手順2Tailscaleでローカル環境と格安VPSのポートを繋ぐ
Tailscaleの無料アカウントとWebARENA Indigoの1GBプランなどの格安VPSで十分です。
- 手順3VPS上のポートを開放する
パルワールド用に公開するポートを開放します。
- 手順4開放したポートからローカル環境のポートに転送する
開放したポートからローカルでパルワールドサーバーを建ててるポートに転送します。
この手順はLinuxを操作できる基本的な知識や、コマンドラインに抵抗がない人向けの方法になります。
以下で詳しく解説していきます。
必要な知識・もの
今回の方法は、ある程度知識がある人向けの方法になりますので、以下の知識がない場合は各自調べながら行うか、ConoHa for Gameや、XServer for Gameなど、簡単にサーバーを建てられる別の方法を探すほうが賢明です。
また、ConoHa VPSやXServer、さくらのVPSなど、VPS各社も導入のサポートなどを始めているみたいなので、そちらも検討してみてください。
以下、この記事の内容を実践するうえで必要になる知識や環境です。ただし、この記事通りでなくても実践可能ですので、必要な部分のみ読むことも可能です。
- Linux、ネットワークの基本知識
- WSL2、Docker環境(Windowsの場合)
- 最低限のVPS環境(1GBなど低スペックの環境でOK、GCEのe2-microなどでも構いません)
- Tailscaleのアカウント(無料アカウントで十分です)
- パルワールドのサーバーの要求スペックに耐えられるPC環境
私の場合、サーバー用のPCには、自宅にあったintel N100を搭載したミニPCを使用しています。スペックは高くないですが、接続数が少ないので今のところは問題なくプレイできています。
導入手順
今回は、WindowsのWSL2と、UbuntuのVPSを用いて導入を行う前提としますが、あまり環境依存の内容はないので、各々自分の環境に合わせて読み替えて下さい。
導入は以下の手順で行います。少し長いですが、頑張りましょう。
- WSL2のDocker上でパルワールドのサーバーを構築する(別の方法でもOKです)
- Tailscaleを使い、契約しているVPSとWSL2を繋ぐ
- VPSのポートを開放する(自宅の環境のポート開放は不要です)
- Tailscaleに割り当てられたWSL2のIPアドレスにVPSからポート転送する(socatを使用)
この方法を簡単に解説すると、TailscaleというVPNサービスでVPSとWSL2(サーバーに用いるPC)を繋ぎ、VPS上のポートからサーバー用PCにポートを転送することで、自宅のポートを開放せずにサーバーを建てられるようになります。
VPSは、500円未満で契約できる1GBの格安なプランや、GCEのe2-microインスタンスなどでも問題ないと思います。私の場合は、VPSの中でも格安な料金プランを提供しているWebARENA Indigoの1GBプラン(月額449円)を使いました。
WSL2のDocker上でパルワールドのサーバーを構築する
サーバー構築の部分は、これ以外の方法でも問題ありません。私はDockerを使って管理したかったのでこの方法を選択しましたが、その他の方法で建てているor建てる予定の人は読み飛ばしてください。
各々の方法でローカルのネットワーク内にサーバーが構築出来ればOKです。
今回は以下のGitリポジトリを用いてサーバーを構築します。細かい設定項目等はリポジトリを参照してください。
やることは、リポジトリ内にあるdocker-compose.ymlを参考にして、実行するだけです。
私の場合は、~/palworld-serverというディレクトリ内で作業を行いました。
WSL2を起動後、
mkdir palworld-server
cd palworld-server
docker-compose.ymlを作成します。
touch docker-compose.yml
内容を編集し、以下のコマンドで起動します。
docker-compose up -d
これでサーバーが建っているはずです。
プレイするPCと同じPC上で実行している場合、パルワールドを開いて、127.0.0.1:<指定したポート>
にアクセスできるか確認してみて下さい。
別のPC上で行っている場合、ipconfigなどでローカルIPアドレスを確認し、それを使ってアクセスしてください。
Tailscaleを使ってVPSとサーバー用のPCをVPN接続する
ここからは、VPSとWSL2(サーバー用のPC)上で同様の作業を行います。両方にtailscaleをインストールし、ログインすることで両者をVPNで繋ぐことが出来ます。アカウントを持っていない方は以下から作成してください。
アカウントを作成で来たら、以下のコマンドを実行します。
curl -fsSL https://tailscale.com/install.sh | sh
次に、以下のコマンドを実行し、表示されたURLにアクセスしてログインすることでtailscaleが使えるようになります。
sudo tailscale up
ログインが出来ると、それぞれの端末にIPアドレスが割り振られるはずです。VPSとWSL2上の両方でログインできたら、Tailscaleのサイトにログインし、両者に割り振られたIPアドレスを確認してください。
正常に接続できているか、pingコマンドで確認します。VPSからはサーバー用のPCに割り振られたIPアドレスに、サーバー用のPCからはVPSに割り振られたIPアドレスにpingコマンドを打ちます。
ping <VPS/WSL2に割り振られたIPアドレス>
VPS上のUDPポートを開放する
次に、サーバーを公開する際に使用するVPS上のポートを開放します。細かい手順は使用しているVPSごとに違うため、各自調べてください。
ここで開放するポートは、必ずUDPを指定してください。
ポート開放が出来たら、ncコマンドを使って確認します。
VPS上で以下のコマンドを実行します。
nc -luk <開放したポート>
その後、WSL2から以下のコマンドでVPSにメッセージを送信します。
nc -u <VPSのパブリックIPアドレス> <開放したポート>
コマンドを打ったあと、「Hello World」など適当なメッセージを打ち込んでエンターを押してください。
また、このとき指定するIPアドレスは、Tailscaleに割り当てられたIPアドレスではなく、VPSのIPアドレスですので注意してください。
正常に動作していれば、VPSに送信したメッセージが表示されるはずです。もしされない場合、以下のようにVPSのアドレスを、「Tailscaleに割り当てられたVPSのアドレス」に変更し、再度試してください。
nc -u <VPSに割り当てられたIPアドレス> <開放したポート>
これでメッセージが送信された場合はポート開放が上手くいっていない可能性が高いので、ポート開放の設定を見直してください。
Tailscaleに割り当てられたWSL2のIPアドレスにVPSからポート転送する
ここまで出来たら、Tailscaleに割り当てられたPC用のIPアドレスにUDPのポートを転送します。UDPのポート転送は、socatというツールで簡単に実行できます。
以下のコマンドを実行し、VPS上にsocatをインストールしてください。
sudo apt-get update
sudo apt-get install socat
その後、以下のコマンドを使い、VPSで開放したいポートから、サーバー用のPCに割り当てられたIPアドレスの、任意のポートに転送できます。ポートには、未使用のポートを指定してください。
socat UDP-LISTEN:<VPSで開放したポート>,reuseaddr,fork UDP:<PCに割り当てられたIP>:<未使用のポート>
socatコマンドが正常に動作しているか確認するには、ncコマンドを使います。WSL2上で以下のコマンドを実行します。
nc -luk <転送先のポート>
その状態で、WSL2など任意の環境から以下のコマンドを実行します。
nc -u <VPSのパブリックIPアドレス> <開放したポート>
これでメッセージが届けば正常に機能しているので、以下のようにパルワールドのサーバーに使用しているポートに転送先を変更すれば、パルワールドのサーバーにアクセスできるはずです。
socat UDP-LISTEN:<VPSで開放したポート>,reuseaddr,fork UDP:<PCに割り当てられたIP>:<パルワールドのサーバー用ポート(通常8211)>
最後に
今回の方法はVPS/自宅環境のどちらかまたは両方がIPv6でも可能だと思いますが、試していないので各自調べてやってみてください。
質問等があれば、コメントなどで気軽にどうぞ。
コメント