Reticulum ReadMe - gree/hubs-docs-jp GitHub Wiki

このドキュメントは原作 Reticulum README を翻訳したものです。最新の情報は原作をご参照ください。
This document is a translation of the original Reticulum README. Please refer to the original for the latest information.

Reticulum

Reticulum は Social Mixed Reality に特化した、ゲームネットワーキングと Web API のハイブリッドサーバーです。

原作からの注: 開発チームの規模が小さく限界があるため、我々はローカルでの Reticulum のセットアップはサポートしません。それと同時に比較的難しく新しい分野ではありますので、ご自身でセットアップを行っていただくことは勉強になると思います。なお、 Reticulum をローカルで実行するには、HubsDialog もローカルで実行する必要があります。なぜなら開発者用の Dialog サーバーはロックダウンされており、ローカルの Reticulum からは正しく接続できないためです。
詳細はこのディスカッションスレッドをご覧ください。

Development

1. 前提条件となるパッケージのインストール

PostgreSQL (推奨バージョン 11.x):

Linux:

Ubuntu であれば以下を実行します。

apt install postgresql

他の Linux ディストリビューションの場合は、それぞれのパッケージマネージャに問い合わせてください。

Windows: https://www.postgresql.org/download/windows/

Windows WSL: https://github.com/michaeltreat/Windows-Subsystem-For-Linux-Setup-Guide/blob/master/readmes/installs/PostgreSQL.md

Erlang (v22) + Elixr(v1.8) + Phoenix

https://elixir-lang.org/install.html

注:Linuxでは、依存関係を正しくコンパイルするために、お使いのディストリビューションで erlang-src パッケージをインストールする必要があるかもしれません。

https://hexdocs.pm/phoenix/installation.html

Ansible

https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

2. Reticulum のセットアップ

以下のコマンドを Reticulum ディレクトリのルートで実行してください。

  1. mix deps.get
  2. mix ecto.create
    • step2で失敗した場合、dev.exs で設定されたパスワードと一致するように postgres のパスワードを変更する必要があります。
    • psql シェル上で、ALTER USER postgres WITH PASSWORD 'postgres'; を実行してください。
    • ret_dev データベースが存在しないという旨のエラーが発生した場合は、(psqlシェル上で) create database ret_devを実行してください。
  1. プロジェクトディレクトリ下で mkdir -p storage/dev を実行します。

3. Reticulum の起動

hubs の secret repo がクローンされている場合は、scripts/run.sh を実行し、それ以外の場合は iex -S mix phx.server を実行してください。

Reticulum のローカルインスタンスに対する Hubs の実行

1. ホストネーム hubs.local のセットアップ

( Reticulum を含む) Hubs のフルスタックをローカルで実行する場合、hubs.localをローカルサーバ向けのIPである hostsエントリに追加する必要があります。

MacOS あるいは Linux では、

nano /etc/hosts

そこにホストのエイリアスを追加してください。

Example:

127.0.0.1   hubs.local

2. Hubs リポジトリのセットアップ

Hubs リポジトリをクローンし、npm の依存関係をインストールします。

git clone https://github.com/mozilla/hubs.git
cd hubs
npm ci

3. Hubs Webpack Dev Server の起動

Hubs をローカルの Reticrum クライアントに対して実行するためには、hubs ディレクトリのルートにある npm run local コマンドを使用します。これにより、開発サーバーではポート8080で起動しますが、Reticulum からはポート4000でアクセスされるように設定されます。

4. クライアントページへ移動

Hubs Webpack Dev Server と Reticulum server を起動したら、以下のURLを開くことでクライアントに移動できます。

https://hubs.local:4000?skipadmin

skipadmin は管理画面にリダイレクトされないようにするための一時的な措置です。一旦ログインしたら、必要なくなります。

5. ログイン

Hubs へのログインには、あなたのメールに送られるマジックリンクを使用します。Reticulum をローカルで起動している場合は、これらのメールは送信されません。その代わり、Reticulum のコンソールにメールの内容が表示されます。

Hubs のランディングページを開いた状態で、ページ上部の「Sign In」ボタンをクリックします。メールアドレスを入力し、送信をクリックします。

Reticulum を起動しているターミナルセッションに切り替え、https://hubs.local:4000/?auth_origin=hubs&auth_payload=XXXXX&auth_token=XXXX のようなURLを見つけます。

見つけたURLをブラウザで開くと、ログインが完了します。

6. 管理者ユーザーの作成

Reticulum を初めて起動できた後は、管理者ユーザーを作成することになるでしょう。最初のアカウントを管理者に設定したい場合は、iex のコンソールで以下のコードを実行します。

Ret.Account |> Ret.Repo.all() |> Enum.at(0) |> Ecto.Changeset.change(is_admin: true) |> Ret.Repo.update!()

7. Admin Portal サーバーをローカル開発モードで起動

ローカルで起動している場合、hubs.local:8989 にルーティングされている Admin Portal も起動させる必要があります。 別のターミナルを使って、hubs/admin ディレクトリに移動し、以下のコマンドを実行します。

npm run local

これで https://hubs.local:4000/admin に移動すると、管理者用コントロールパネルにアクセスできるようになります。

ローカル Reticulum インスタンスに対して Spoke の起動

  1. 上記の手順でHubをセットアップします。
  2. スポークプロジェクトをクローンし、そのルートで./scripts/run_local_reticulum.shを実行し、起動します。
  3. https://hubs.local:4000/spoke に移動します。

ローカルの Dialog インスタンスに対して Reticulum の起動

  1. dev.exs内の Janus host を更新します。
dev_janus_host = "hubs.local"
  1. dev.exs内の Janus port を更新します。
config :ret, Ret.JanusLoadStatus, default_janus_host: dev_janus_host, janus_port: 4443
  1. add_csp.ex の CSP ルールに Dialog meta endpoint を追加します。
default_janus_csp_rule =
   if default_janus_host,
      do: "wss://#{default_janus_host}:#{janus_port} https://#{default_janus_host}:#{janus_port} https://#{default_janus_host}:#{janus_port}/meta",
      else: ""
  1. ダイアログの設定ファイル turnserver.conf を編集し、PostgreSQL データベースの接続文字列を更新し、Reticulum データベースの coturn schema を使用するようにします。
   psql-userdb="host=hubs.local dbname=ret_dev user=postgres password=postgres options='-c search_path=coturn' connect_timeout=30"
⚠️ **GitHub.com Fallback** ⚠️