- scoold と para を使ってQAサイトをローカルに構築してみました
- scoold とは
- オープンソースのQAプラットフォーム
- ナレッジベースやカスタマーサポートとして利用できる
- イメージとしては StackOverflow
- ライセンスはApache2.0
- 有料版もあるよ
- para とは
- 汎用的バックエンドフレームワーク
- scoold のバックエンドとしての役割
- オブジェクト(ひとまとまりのデータ)の保存、検索ができる
- データの保存先はNoSQLまたはRDBMSのどちらかを選択できる
- JSON API を備えている
- マルチテナント対応
- scoold と para を合わせて使うときのアーキテクチャ
- scoold -> Frontend
- para -> Backend
- scoold と para は HTTP で会話する
- scoold への操作は一つ以上の para へのリクエストになる
- 例えばQuestionを作る時、paraへ
POST /v1/questions
が投げられる
環境
- 今回はこちらを参考にDockerを使って立てます
- 諸々のバージョンとかは以下の通りです
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$ docker -v
Docker version 20.10.7, build f0df350
$ docker-compose -v
docker-compose version 1.25.0, build unknown
$ node -v
v16.4.2
$ npm -v
7.18.1
それぞれを立ち上げてみる
docker-compose.yml
があるのでそれを使います
- scoold と para は application.conf というファイルで設定を記述するようになっているみたいです
- のでそれぞれ以下のように作りました
para.app_name = "Scoold"
para.port = 8000
para.env = "development"
para.host_url = "http://localhost:8000"
para.endpoint = "http://para:8080"
para.access_key = "app:scoold"
para.secret_key = ""
para.admins = "admin@domain.com"
para.password_auth_enabled = true
para.new_users_can_comment = true
para.is_default_space_public = true
para.secret_key
にはあとでシークレットキーをセットします
para.env = "development"
para.dao = "H2DAO"
para.security.allow_unverified_emails = true
- paraのnodejsクライアントをインストールします
- ツールの名前とバージョンはこちら
$ para-cli --version
1.15.2
- 一度
docker-compose up
で立ち上げます
# 立ち上げた後、以下のコマンドでparaから設定に必要な情報を受け取ります
$ curl localhost:8080/v1/_setup
{
"accessKey" : "app:para",
"message" : "Save these keys - they are shown only once!",
"secretKey" : "H6orTyiuJJGEc0UDcsrrkprxPEYOaJTVE/Drv/oBVCTIjxH0JyZLZw=="
}
# paraに接続
$ para-cli setup
Para Access Key: app:para
Para Secret Key: H6orTyiuJJGEc0UDcsrrkprxPEYOaJTVE/Drv/oBVCTIjxH0JyZLZw==
Para Endpoint: localhost:8080
✔ New JWT generated and saved in /home/bookstore/.config/para-cli-nodejs/config.json
✔ Connected to Para server v1.39.2 on localhost:8080. Authenticated as: app para (app:para)
# アプリなるものを新しく作ります
# テナントごとにアプリがあるイメージでしょうか
$ para-cli new-app "scoold" --name "scoold"
✔ App created:
{
"accessKey": "app:scoold",
"message": "Save these keys - they are shown only once!",
"secretKey": "P9vbAx1nfVS2DyQMtliSRYe5A/CgGxpI8all5yo59MOid8aiqyKcxQ=="
}
# 個々で受け取った secretKey を scoold-application.conf の para.secret_key にセットします
- コンテナを再起動させます
localhost:8000
にアクセスするとscooldのページが表示されます
参考