基盤ソフトウェア「FIWARE (ファイウェア)」を用いて、地域の協調的幸福度を可視化するプラットフォーム
docker compose
で提供しておりますdocker compose 2.21.0
, docker 24.0.7
をインストール済みの Ubuntu 22.04.3
上で動作確認しておりますcurl
を使用しておりますgit clone
git clone git@github.com:c-3lab/oasismap.git
作業ディレクトリに移動
cd oasismap
MongoDBとPostgreSQLのユーザー、パスワードおよび地図の初期パラメータ値(緯度、経度、ズーム値)、KeyCloakの設定を.envに設定
~/oasismap$ cp _env .env
~/oasismap$ vi .env
※以下の環境変数は後ほど設定
KC_HOSTNAME_URL
KC_HOSTNAME_ADMIN_URL
KEYCLOAK_CLIENT_ISSUER
GENERAL_USER_KEYCLOAK_CLIENT_SECRET
ADMIN_KEYCLOAK_CLIENT_SECRET
ngrokのアカウントを登録する
https://ngrok.com/
手順に従いngrokをインストールする
https://ngrok.com/docs/getting-started/
ngrok起動
~/oasismap$ ngrok http 8080
Try the new Traffic Inspector dev preview: https://ngrok.com/r/ti
Session Status online
Account アカウント名 (Plan: Free)
Version 3.6.0
Region Japan (jp)
Latency 5ms
Web Interface http://127.0.0.1:4040
Forwarding https://xxxx-xxx-xxx-x-xx.ngrok-free.app -> http://localhost:8080
Connections ttl opn rt1 rt5 p50 p90
1224 0 0.00 0.01 0.06 6.29
HTTP Requests
Forwarding
から https:// で始まるURLを取得する
環境変数 KC_HOSTNAME_URL
KC_HOSTNAME_ADMIN_URL
KEYCLOAK_CLIENT_ISSUER
に上記のURLを設定する
KC_HOSTNAME_URL=https://xxxx-xxx-xxx-x-xx.ngrok-free.app
KC_HOSTNAME_ADMIN_URL=https://xxxx-xxx-xxx-x-xx.ngrok-free.app
KEYCLOAK_CLIENT_ISSUER=https://xxxx-xxx-xxx-x-xx.ngrok-free.app/realms/oasismap
Dockerコンテナを展開
~/oasismap$ docker compose up -d
OASIS Mapでは現在の位置情報を利用します。
但し http
で動作させた場合は実際の位置情報ではなく、仮の位置情報が使われます。
実際の位置情報を利用する場合は、Keycloakの他にOASIS Map本体も https
で動作させる必要があります。
手順は 現在位置情報を利用した動作確認手順 を確認してください。
仮の位置情報で問題ない場合は本手順はスキップしてください。
プロジェクトを選択
から新しいプロジェクトを作成認証情報を作成
を選択して OAuth クライアント ID
を作成ウェブアプリケーション
を選択して作成keycloak/variables.json
の GoogleClientID
GoogleClientSecret
に転記keycloakディレクトリに移動
cd keycloak
formatting-variables.sh
を実行して都道府県名/市区町村名の情報を variables.json
に設定
~/keycloak$ bash formatting-variables.sh cities.json
自動設定スクリプトで利用する環境変数を設定
~/keycloak$ export KEYCLOAK_ADMIN={.envで指定した管理者ユーザー名}
~/keycloak$ export KEYCLOAK_ADMIN_PASSWORD={.envで指定した管理者ユーザーのパスワード}
keycloakディレクトリのパスを取得
~/keycloak$ pwd
以下のコマンドを実行
※ 4で取得したkeycloakディレクトリのパスに書き換えて実行すること
~/keycloak$ docker run --network oasismap_backend-network --volume {keycloakディレクトリのパス}:/etc/newman/keycloak \
postman/newman:latest run --bail --environment /etc/newman/keycloak/variables.json \
--env-var "KeycloakAdminUser=$KEYCLOAK_ADMIN" \
--env-var "KeycloakAdminPassword=$KEYCLOAK_ADMIN_PASSWORD" \
/etc/newman/keycloak/postman-collection.json
http://Dockerホスト名:8080
でアクセスします。KEYCLOAK_ADMIN
KEYCLOAK_ADMIN_PASSWORD
に指定した認証情報でログインrealm
から oasismap
を選択Identity providers
を選択google
をクリックRedirect URI
の値をコピーして控えておく承認済みのリダイレクトURI
に控えておいた Redirect URI
を転記して保存realm
から oasismap
を選択client
をクリックgeneral-user-client
をクリックCredentials
をクリックClient Secret
の値を環境変数 GENERAL_USER_KEYCLOAK_CLIENT_SECRET
に転記realm
に oasismap
を選択client
をクリックadmin-client
をクリックCredentials
をクリックClient Secret
の値を環境変数 ADMIN_KEYCLOAK_CLIENT_SECRET
に転記~/oasismap$ docker compose up -d frontend
バックエンドのコンテナにはいる
docker compose -f docker-compose-dev.yml exec backend bash
以下コマンドを実行してorionにサブスクリプションの設定を行う
root@backend:/app/backend$ curl -iX POST \
--url 'http://orion:1026/v2/subscriptions' \
--header 'content-type: application/json' \
--header 'Fiware-Service: Government' \
--header 'Fiware-ServicePath: /Happiness' \
--data '{
"description": "Notice of entities change",
"subject": {
"entities": [
{
"idPattern": ".*",
"type": "happiness"
}
],
"condition": {
"attrs": []
}
},
"notification": {
"http": {
"url": "http://cygnus:5055/notify"
}
}
}'
http://Dockerホスト名:8080
でアクセスしますKEYCLOAK_ADMIN
KEYCLOAK_ADMIN_PASSWORD
に指定した認証情報でログインrealm
から oasismap
を選択Users
を選択Add User
を選択Username
,profile.attribute.nickname
を入力して Create
を選択Username
と profile.attribute.nickname
は同じ値を入れてくださいCredentials
を選択して Set password
からパスワードを入力してくださいTemporary
のチェックを外して Save
Save password
から保存ブラウザから http://Dockerホスト名:3000/admin/login
でアクセスします
自治体管理者用アカウントでログインします
右端のハンバーガーメニューの データエクスポート
から幸福度情報をダウンロードできます
ブラウザから http://Dockerホスト名:3000
でアクセスします
Googleアカウントを用いてログイン
ユーザー情報の入力
※重複するニックネームは登録できません
画面下の 幸福度の入力
をクリックします
任意の項目にチェックを入れて 幸福度を送信
をクリックします
右端のハンバーガーメニューをクリックします
一覧から 利用者の幸福度
をクリックします
利用者の幸福度
が地図上とグラフに表示されます
右端のハンバーガーメニューをクリックします
一覧から 全体の幸福度
をクリックします
全体の幸福度
が地図上とグラフに表示されます
コンテナを停止
~/oasismap$ docker compose down