投稿者「donaco」のアーカイブ

Quoridorn Mark2 を自宅サーバーに設置(Ubuntu + Nginx)


Quoridorn Server を設置


Quoridornを自宅サーバーに導入する為には、
Quoridorn-ServerとQuoridorn-Cliantの2つを設置する必要があります。
まずは、サーバー側から片付けていきましょう。
レンタルサーバーへの設置は、分かりません。参考にはなるかもしれません…たぶん。

#1 Mongdb をインストール
まずは、サーバーの動作に必要なMongodbというデータベースを入れていきます。

1-1.インストールするパッケージを認証するためのキーをインポート

sudo wget https://www.mongodb.org/static/pgp/server-4.2.asc
sudo apt-key add server-4.2.asc

1-2.APTの設定ファイルに、レポジトリ情報を追加

echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

1-3.インストール

sudo apt update
sudo apt -y install mongodb-org

1-4.起動

sudo ufw allow 27017
sudo systemctl enable mongod
sudo systemctl start mongod

1-5.MongoDBに接続/切断

mongo
db.version()
show dbs
exit

1-6.インストールが上手く行かない場合
パージして入れ直します。dbやlog、pid等の設置場所、パーミッションをよく見ましょう。

sudo apt purge mongodb-org* #パージ!
sudo apt uodate
sudo apt upgrade

sudo rm /tmp/mongodb-27017.sock #ゴミ掃除
ps aux | grep mongo
kill -9 2411

sudo apt install mongodb #← この一行で何故か上手くいく
mongod --version
sudo apt install -y mongodb-org
mongod --version

sudo systemctl unmask mongodb #エラー回避
sudo systemctl enable mongod
sudo service mongod start
sudo service mongod status

参考
Install MongoDB Community Edition on Ubuntu
「Failed to set up listener: InternalError: Failed to set up sockets」
error: Unit mongodb.service is masked when starting mongodb
MongoDB service failed to start (unrecognized service )
「Failed to set up listener: InternalError: Failed to set up sockets」


#2 Nodejs, Vue CLI をインストール
次はNodejsです。npm というパッケージ管理ソフトで導入します。

2-1.インストール
まず、普通に apt でnodejs と npm をインストールしてから npm で入れ直します。

sudo apt install -y nodejs npm
mkdir /home/usr/.node_modules_global
npm install npm -g
sudo chown usr:usr -R /home/usr/.npm/_cacache

2-2.バージョン管理ツール “n” と Vue CLI
バージョン管理ツール ”n” を入れて任意の Node.js を入れます。
必ず Ver 11.x を入れてください。それ以外ではビルド出来ませんでした。(私の環境では)

npm install -g @vue/cli n
sudo mkdir /usr/local/n/versions/node
sudo n 11.10.0

2-3.古い Node.js, npm を削除。
最初に apt で入れた nodejs と npm を消します。
そして、最後にヴァージョンをチェック。

sudo apt purge -y nodejs npm
exec $SHELL -l

n list
node/10.20.1
node/11.10.0
node/11.15.0
node/12.16.2
node/13.13.0
node/14.0.0

node -v
v11.10.0

参考
Ubuntuに最新のNode.jsを難なくインストールする


#3 Quoridorn-Server をインストール
ようやく、サーバ本体です。
ここでは、 /home/usr/quoridorn-server/ に設置した場合の説明になります。

3-1.ソースコードをダウンロード
quoridorn-server というフォルダにダウンロードされます。

git clone https://github.com/HillTopTRPG/quoridorn-server.git
cd /quoridorn-server

3-2.ライブラリのインストール、ビルド
Mac用ライブラリ(fsevents@1.2.11)の警告がいくつか出ますが、無視します。

npm install
npm run build

3-3.Quoridornサーバの設定を編集
/home/usr/quoridorn-server/conf/server.yaml をエディタで編集します。
ファイル内の説明をよく読んで、変更していきましょう。
下記の設定は、使用ポート3000、部屋数100、部屋は放置しても消えない。です。

port: 3000
storeType: mongodb
secretCollectionSuffix: nakachan-mo-kirai-ni-nattya-damedayo
roomNum: 100
roomAutoRemove: -1
mongodbConnectionStrings: mongodb://127.0.0.1:27017/

3-4.Quoridornサーバの動作チェック
とりあえず、起動してみます。
Quoridorn Server is Ready と表示されれば成功です。やったね!
Ctrl+C で一旦停止します。

npm run node-server

3-5.Quoridornサーバをバックグラウンドで動作させる
このままだと、ターミナルを閉じるとサーバーが落ちてしまい使い勝手が悪いです。
そこで、プロセスマネージャ “pm2” を使用し、バックグラウンドで自動起動させます。

npm install -g pm2

設定ファイルを作成します。
JSONかyaml形式に対応していますが、yamlが簡単なのでオススメ。
/home/usr/quoridorn-server/pm2_config.yml

name:      quoridorn-server        #アプリ名前
script:    ./dist/server.js        #スクリプトファイルパス
cwd:       /home/usr/quoridorn-server/  #作業フォルダ
exec_mode: fork               #cluster modeはパフォーマンス低下?
NODE_ENV:  production            #環境
PORT:      3000              #使用ポート

自動起動出来るように登録します。
環境によって違うので、記事そのままをコピペしても動かない場合があります。

#とりあえず動かしてみる
pm2 start '/home/usr/quoridorn-server/pm2_config.yml'

#以下のコマンドを実行すると、コピペして実行してねと言われる。
pm2 startup

#私の場合、以下をコピペして実行。環境によって違います。
sudo env PATH=$PATH:/usr/local/bin /home/usr/.node_modules_global/lib/node_modules/pm2/bin/pm2 startup systemd -u usr --hp /home/usr

#登録
pm2 save

実際に動作しているか確認します。

pm2 list
pm2 show quoridorn-server
pm2 monit

参考
[Node.js] PM2を用いて本番環境でNodeJSアプリを動かす
pm2でNode.js実行環境を整備する
node.jsを10->12に更新したときに起きたエラーと対処内容


Quoridorn Mark2 を設置


#4.Quoridorn-Mark2をインストール
サーバー側の準備が出来たので、やっとクライアント側であるMark2の設置です。
なお、Nginxは導入済み、動作済みのものとして書いていきます。

4-1.環境を確認
ポートが開放されていないと動作しないので、確認しましょう。
下記は、SSL、IPv6、Websocket(udp)対応の事例です。

nginx -v
nginx version: nginx/1.17.9

npm -v
6.14.4

node -v
v11.10.0

mongod -version
db version v4.2.5

openssl version
OpenSSL 1.1.0h

sudo ufw status
To                 Action    From
--                 ------    ---
80                 ALLOW     Anywhere
443                ALLOW     Anywhere                  
3000               ALLOW     Anywhere        #3000はQuoridorn用
443/udp            ALLOW     Anywhere                 
27017              ALLOW     Anywhere        #27017はMongoDB用
80 (v6)            ALLOW     Anywhere (v6)   #↓ここからIPv6用    
443 (v6)           ALLOW     Anywhere (v6)             
3000 (v6)          ALLOW     Anywhere (v6)             
443/udp (v6)       ALLOW     Anywhere (v6)             
27017 (v6)         ALLOW     Anywhere (v6)   

4-2.ソースコードをダウンロード
/home/usr/ にダウンロード。quoridorn-mark2 が自動で作られます。
フォルダ名を変えたい場合は、末尾に任意のフォルダ名を追記しましょう。

git clone https://github.com/HillTopTRPG/quoridorn-mark2.git

4-3.必要なライブラリをインストール
エラーが出たら、package-lock.json と node_modules を削除。再 install & build しましょう。

cd home/usr/quoridorn-mark2
npm init     #npmで管理するよと宣言
npm install  #必要なライブラリを取得

4-4.設置場所を指定
.env をエディタで編集して設置パスを指定します。
空欄にすると、 home/usr/quoridorn-mark2/dist/ が設置場所になります。
ここでは空欄を入れています。
/home/usr/quoridorn-mark2/.env

VUE_APP_BASE_URL=

4-5.ビルド

npm run build

4-6.環境設定を編集
ネットワーク周りの設定をしていきます。
skywayApikeyは、事前に取得したkeyを入力します。取得方法はこちらを参照のこと。
/home/usr/quoridorn-mark2/dist/static/conf/connect.yaml

quoridornServer:   "wss://kancolle.idol.world"        #wss://your.site
socketTimeout:     50000
bcdiceServer:      "https://bcdice.onlinesession.app" #そのまま
skywayApiKey:      "nakatyaN-kawaii-Idol-Korekaramo-4649Ne"
skywayConnectType: "Mesh"

#5.Nginx の設定
NginxからNode.jsへリバースプロキシする設定を加えます。
/etc/nginx/quoridorn-mk2.conf

upstream socket_io {
    ip_hash;
    server 127.0.0.1:3000;
}
server {
    listen       80;
    listen       [::]:80;
    server_name  kancolle.idol.world;
    return 301 $host$request_uri;
}
server {
    listen       443 ssl http2 ;
    listen       [::]:443 ssl http2;
    server_name  kancolle.idol.world;

    ssl_protocols TLSv1.2 TLSv1.3;
....
    location / {
         root    /home/usr/quoridorn-mark2/dist/;
    }
    location /socket_io/ {
        proxy_pass http://socket_io;
        proxy_http_version 1.1;
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host       $host;
        }
}

Nginxを再起動。ブラウザで確認します。

sudo nginx -t
sudo service nginx restart

関連リンク
公式 :Quoridorn-mark2
設置例:コリドーン 英国メイドサーバー(test)