見出し画像

WSLでテスト環境用FVTTを起動

2024.2.20時点での情報




概要

目的

Windows環境で、ローカルテスト用のFVTT環境を構築する。
WSL2でUbuntuを導入し、そこにFVTTサーバを(複数)立てる。

  • FVTTでいろいろ試したいが、本番環境はそのまま残していろいろやりたい。

  • 古いバージョンじゃないと動かないゲームシステムとかModがある。

  • v12もアップを始めているのでいち早く試してみたい。

などの理由で違うバージョンや違う環境の両立をするための方法。
 コマンドが不慣れな人用に、なるべくGUIで操作する方法を記載。慣れてるならコマンドでやってもOK。

注意
 この方法では、セルフホストとして公開して遊ぶ(人を呼んでセッションをする)にはさらに一手間必要です。なのでローカルでのテスト用として使うことを想定しています。
 本番環境のセルフホストは素直にWindows用のFVTTを導入してポート開放する方が簡単です。Windows用のFVTTと今回構築する環境は両立できるので、本番環境はそのまま残しておくことを推奨します。
 参考の動画の方法で、Windowsに直接Node.jsを導入する方が公開の手間は少ないので、公開するつもりならそちらの方法を検討してもいいと思われます。

環境

 Windows10の古いバージョンでは使えません。アップデートちゃんとしてれば大丈夫なはず。Windows11は素でOKらしい。

方法

1.Windowsでの作業

 Micorsoft Storeから「Windows Subsystem for Linux」と「Ubuntu」をインストールする。コマンドでもできるが省略。参考サイトでUbuntu推奨となっているのでこっちにしたけど、他のディストリビューションを使ってもできると思う。
 スタートメニューから「WSL」か「Ubuntu」をクリックで起動できる。
 起動するとユーザーネームとパスワード設定することになる。
 ユーザーネームはファイル操作の際に使うことになるので覚えておこう。パスワードも「sudo」コマンドどのなどで使うので覚えておく。
 これで導入完了。

2024.2.25追記
どうもWindows10環境ではストアから導入すると上手くいかないケースもある様子。
・「設定→アプリと機能→プログラムと機能→Windowsの機能の有効化または無効化→Linux用Windowsサブシステム」を有効化
・コマンドラインから「wsl --install -d ubuntu」
等を試してみるといいかも。

WSL起動用のショートカットを最小化で起動するようにして作っておくと楽かもしれない。

2.WSLでの作業

WSLを立ち上げて作業する。

Windowsへのパスが残っていると不具合出るかもしれないので、無効にしておく。/etc/wsl.confを編集する。

sudo nano /etc/wsl.conf

以下を追記。

[interop]
appendWindowsPath = false

sudo実行時にパスワードを聞かれたら最初に設定したパスワードを入力。
エディタはnanoじゃなくて好きなのでOK。使い方は調べてね。
反映させるためにWSLを再起動しておく。
別のターミナルを立ち上げて以下。

wsl --shutdown

再度WSLを起動する。

作業はホームで行う。

cd ~

Node.js導入。

curl -sL https://deb.nodesource.com/setup_18.x | sudo bash -
sudo apt install -y nodejs

ちゃんと入っているか確認。Node.jsはバージョン18を選択したが、20とか21でも動くと思う。

node --version
npm --version

pm2導入。

sudo npm install pm2 -g

自動でpm2が実行されるように以下を実行。その後コマンド実行結果の指示に従ってコマンドをコピーして実行する。

pm2 startup

3.Windowsでの作業

このセクションはWSL(Ubuntu)で行ってもいい。慣れてるならそっちの方が楽。

FVTTプログラムファイルをコピーする。
 公式サイトからダウンロードした"Linux/nodeJS"用のzipファイルを展開、好きなフォルダ名に変更してWSLのホームフォルダへコピーする。今回は「fvtt11」としておく。
 WSLのホームフォルダはエクスプローラーのアドレスバーに「\wsl.localhost\Ubuntu\home\<ユーザー名>」を入力して開ける。<ユーザー名>はWSL導入時に設定したもの。
 バージョン違いも使うなら、フォルダ名を変えてコピーしておく。ex) FVTTv10のファイルを「fvtt10」というフォルダ名にしてコピーする、など。

データ用のフォルダを用意する。
 WSLのホームフォルダにデータ用フォルダを新規に作成。フォルダ名は何でもいい。今回は「fvtt11data01」としておく。
 複数環境で使い分ける予定なら、必要な数だけ作成する。ex) FVTTv10用の「fvtt10data01」、v11用の2個目の環境用の「fvtt11data02」など。

4.WSLでの作業

以下のコマンドでFVTT起動を確認する。

node ~/fvtt11/resources/app/main.js --dataPath=/home/<ユーザー名>/fvtt11data01

 「fvtt11」「fvtt11data01」は適宜先ほど作ったフォルダ名に入れ替えること。<ユーザー名>も自分の環境に合わせて。
 この状態で、Windowsのブラウザから「localhost:30000」にアクセスしてFVTTが表示されればテストはOK。
 WSLのターミナルでCtrl+cをしてFVTTを停止する。

複数環境を同時に起動したい場合
 ポート番号30000を30001など、各環境ごとに変える必要がある。セルフホストでデフォルトの30000を使っている場合も変えておいた方がよい。
 これはブラウザからアクセスするときのポート番号になる。
方法は2つ。

  1. 上のテスト起動時にライセンス認証まで行って、FVTTのConfigurationからポート番号を変更する。

  2. Windowsからなら\wsl$\Ubuntu\home\<ユーザー名>\fvtt11data01\Config\、WSLからなら~/fvtt11data01/Config/にあるoptions.jsonの「"port": 30000,」を変更する。

2個目以降の環境も同様にプログラムファイルのフォルダとデータ用のフォルダを指定して同様に起動してテストしておく。
 ポート変更も忘れずに。同時起動するならポートはすべての環境で異なったものにすること。

WSL起動時にFVTTが自動起動する設定
 以下のコマンドでpm2に登録。「fvtt11」「fvtt11data01」<ユーザー名>は適宜入れ替えて。最後の「--name」オプションのパラメータ(例では「fvtt11-1」)はpm2用のラベルなので好きなものにしてOK。

pm2 start "node /home/<ユーザー名>/fvtt11/resources/app/main.js --dataPath=/home/<ユーザー名>/fvtt11data01" --name fvtt11-1

 起動したい環境の数だけプログラムフォルダとデータフォルダ、ラベル名を入れ替えて実行しておく。

以下のコマンドで動いているか(Onlineになっているか)を確認。

pm2 list

 ついでにWindowsのブラウザから「localhost:<ポート番号>」にそれぞれのポート番号でアクセスして、ちゃんと同時起動しているかも確認しておくとよいかも。

 問題なければ以下のコマンドで自動起動を確定する。環境を増やしたり減らしたりするたびにsaveは必要。

pm2 save

その他のpm2コマンド
個別に停止 pm2 stop <ラベル名>
個別に開始 pm2 start <ラベル名>
環境を削除 pm2 del <ラベル名>
状態の表示 pm2 status

以上ですべて完了!

 以後、WSLを起動しておけば、ブラウザから「localhost:<ポート番号>」へアクセスすればFVTTが起ち上がるはず。<ポート番号>は適宜変更すること。WSLを閉じれば終了する。
 ポート番号を変えてあるはずなので、複数環境の同時起動もできる。ブックマークとかしとくと便利。
 データフォルダをまるまるコピーすれば環境移行も一発。もちろんworldとかmodもコピーでOK。テスト環境で部屋つくって、そのままコピーとかバックアップとかご自由に。
 設定したデータフォルダの中身を削除してしまえば簡単にリセットもできる(ポート番号の再設定はいるよ!)。
 これで本番環境を壊さずいろいろローカルで試せる!

 今回の環境を削除する場合は、Windowsのアプリと機能から「Ubuntu」をアンインストールすればOK。データも一緒に消えるのでバックアップは忘れずに。WSLも不要なら同じくと「Windows Subsystem for Linux」をアンインストール。
 本当にキレイにするにはwslコマンドを使う必要があるかもしれない。

注意)
 上に記したように、この環境をそのままセルフホストとして公開するには、WSLとWindowsの間でのポートフォワードやファイアウォールの設定が必要になります。ちょっと煩雑になりますが、できないことはないと思う(試してない)ので、やりたい人はがんばってください。
 WSL1の方がネットワーク回りはシンプルっぽいので、そっちを使えばもうちょっと簡単かも。ただし、導入方法も変わると思います。

2024.3.3追記
 ネットワーク環境によっては名前解決に問題が出て、FVTTは起動するけどモジュール入れたりできない、などの事態が発生する様子。
 その場合は素直に参考動画のようにWindowsでNode.jsを動かすか、以下の記事などを参考に解決。
https://qiita.com/kkato233/items/1fc71bde5a6d94f1b982


参考

https://foundryvtt.wiki/en/setup/linux-installation
 Linuxへの一般的なFVTT導入方法の解説。ここをベースにした。

https://www.youtube.com/watch?v=B74ZAp3xx3o
 Windowsに直接Node.js入れてFVTTを起動する方法の解説。元のWindows環境をあまり汚したくなかったのと、WSL使ってみたかったので今回は記事の方法を試してみた。方法としてはこの動画の方法が手順は少ないしストレージの消費も少ない。たぶん公開も楽。こっちの方法でも工夫すれば自動起動とか複数起動もできるはず。


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