自分のサーバーでWorkAdventureを使ってバーチャルオフィスを作成する

![img](https://yuki777.github.io/public-images/images/work-adventure.png)

## 概要
WorkAdventureをインストールして設定するためのステップバイステップのガイドです

## WorkAdventureについて
- WorkAdventureは、16ビットのRPGビデオゲームの形で提供される協同ウェブアプリケーションです。
- この革新的なリモートコラボレーションのアプローチは、ユニークでエンゲージングな、バーチャルオフィスのような環境を提供します。
- 詳細については、[公式ウェブサイト](https://workadventu.re/)をご覧いただくか、[プロジェクトのGitHubページ](https://github.com/thecodingmachine/workadventure)をチェックしてください。

## 動機
- 最初にWorkAdventureをインストールするとき、少しチャレンジングに感じるかもしれません。
- 私はこのガイドを書くことで、他の人々のプロセスを簡単にすることができました。
- もしこれが1人でも助けになるのであれば、私は満足です。


## インストールガイド
### 前提条件
始める前に、このガイドのステップが以下の仕様のサーバーでテストされ、動作が確認されていることに言及しておく価値があります

- ディストリビューション： Canonical, Ubuntu Server Pro, 22.04 LTS, amd64 jammy image built on 2023-05-16
- CPUアーキテクチャ：x86_64 (このガイドはARMベースのCPUをサポートしていません)
- AMI：ami-0702b27a97d5bbcba
- インスタンスタイプ：t2.medium (4GB Memory)
- ストレージ：20GB

### 環境変数
以下の変数を使用して環境を設定します
```bash
version=v1.15.11
domain=your.example.com
```

### ステップ1：Dockerのインストール
- 私たちはこのインストールのためにDockerを使用します。
- まだUbuntuサーバーにDockerをインストールしていない場合は、[Dockerの公式ドキュメンテーション](https://docs.docker.com/engine/install/ubuntu/)で利用可能な指示に従ってインストールすることができます。
- あるいは、以下のスクリプトを使用してDockerをインストールすることもできます

```bash
$(cat << 'EOF' > ~/install-docker.sh

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose
sudo docker run hello-world

EOF
)

/bin/bash ~/install-docker.sh
```

### ステップ2：WorkAdventureのリポジトリをクローンし、デプロイメントファイルを準備する
- 次のステップは、WorkAdventureのリポジトリをクローンし、必要なデプロイメントファイルを準備することです。
- これを達成するために以下のコマンドを使用します

```bash
cd

$(cat << EOF > ~/copy-deployment-files

mkdir -p ~/git
cd ~/git
sudo rm -fr ~/git/workadventure
git clone https://github.com/thecodingmachine/workadventure.git -b $version
cd ~/git/workadventure/contrib/docker
cp .env.prod.template .env
cp docker-compose.prod.yaml docker-compose.yaml

EOF
)

/bin/bash ~/copy-deployment-files
```

### ステップ3：環境の設定
Dockerがインストールされ、リポジトリがクローンされたら、以下のスクリプトを使用して環境を設定します
```bash
cd

$(cat << EOF > ~/configure-your-environment.sh

cd ~/git/workadventure/contrib/docker
sed -i 's/^SECRET_KEY=$/SECRET_KEY=foobar/' .env
sed -i "s/^DOMAIN=workadventure.localhost$/DOMAIN=${domain}/" .env
sed -i "s/workadventure.localhost/${domain}/" .env
sed -i "s/^VERSION=master$/VERSION=${version}/" .env
sed -i "s/^MAP_STORAGE_AUTHENTICATION_USER=$/MAP_STORAGE_AUTHENTICATION_USER=map-storage-user/" .env
sed -i "s/^MAP_STORAGE_AUTHENTICATION_PASSWORD=$/MAP_STORAGE_AUTHENTICATION_PASSWORD=map-storage-pass/" .env
sed -i 's/^ADMIN_API_URL=$/#ADMIN_API_URL=/' .env
echo PLAY_HOST=play.$domain >> .env

EOF
)

/bin/bash ~/configure-your-environment.sh

sed -i '/PROMETHEUS_AUTHORIZATION_TOKEN: "$PROMETHEUS_AUTHORIZATION_TOKEN"/a \
      AUTHENTICATION_STRATEGY: "Basic"\
      AUTHENTICATION_TOKEN: "token"\
      AUTHENTICATION_USER: "user"\
      AUTHENTICATION_PASSWORD: "pass"' ~/git/workadventure/contrib/docker/docker-compose.yaml
```

### ステップ4：WorkAdventure環境の起動
環境が設定されたら、以下のコマンドでWorkAdventure環境を起動します
```bash
cd ~/git/workadventure/contrib/docker && sudo docker-compose up
```

### ステップ5：最初のマップを作成し、アップロードする
- WorkAdventureは、仮想空間を定義するマップで操作します。
- ここでは、最初のマップを作成し、それをサーバーにアップロードする方法を紹介します

```bash
# Delete old repository and clone repository
mkdir -p ~/git
cd ~/git
rm -fr workadventure-map-starter-kit
git clone https://github.com/thecodingmachine/workadventure-map-starter-kit.git -b v3.3.3
cd ~/git/workadventure-map-starter-kit

# volta pin node@20 # Use Node.js v20 via volta
npm ci

# Build
npm run build
mv dist map
zip -r map.zip map
cp map.zip ~/Desktop
```

## インストールのテスト
- WorkAdventureをインストールし、最初のマップをアップロードしたので、それをテストする時が来ました。
- 以下に有用なリンクをいくつか提供します
    - マップのアップロード
        - https://map-storage.YOUR.EXAMPLE.COM/
        - ユーザー : user
        - パスワード : pass
        - ディレクトリ: /
    - マップの表示
        - https://map-storage.YOUR.EXAMPLE.COM/maps
    - プレイ
        - https://play.YOUR.EXAMPLE.COM/_/global/map-storage.YOUR.EXAMPLE.COM/map/map.tmj

## 今後の作業
- ビデオ会議機能を提供するためにJitsiを統合
- サーバー操作のための正しいタイムゾーンを設定
 
WorkAdventureのインストールと設定は旅の始まりに過ぎません。
自分だけのユニークなバーチャルオフィスを探索し、作成する楽しみを持ってください！