Successfully reported this slideshow.

The Things StackをAmazon EC2にインストールする方法

0

Share

Loading in …3
×
1 of 10
1 of 10

More Related Content

More from CRI Japan, Inc.

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

The Things StackをAmazon EC2にインストールする方法

  1. 1. ELSPINA VEINZ Inc. 1 / 10 TheThingsStackをEC2にインストールする(1/2) この記事と次の記事では,TheThingsStack(TTS)CommunityEditionをAmazonEC2インスタンスにインストー ルする⼿順について整理します. この記事では(何番煎じか分かりませんが)AWS環境で固定IPを振って外部からアクセスできるEC2インスタンスを ⽤意する⼿順を説明します.次の記事で,⽤意したEC2インスタンスにTTSをインストールする⼿順を説明します. EC2はデプロイ環境として使うだけなので,TTS関連についてのみ知りたい場合は,本記事は⾶ばして次の記事だけ 参照ください. TheThingsStackについて TheThingsStackを含め,TheThingsIndustries社が提供するLoRaWANに関するプロダクトやサービスについて はリンク先の資料等を参照ください[^1].TheThingsStackは,それらのうちOSSで提供されるLoRaWANサーバを 指します. AWSMarketplaceで提供されているTheThingsStackAWSLauncherforLoRaWANを利⽤すると,AWS環境に プライベートなLoRaWANネットワークを構築することができるようです(⼿順などはこちら)が,ここでは⼿動で インスタンスを⽴ち上げ,TTSをインストールして外部からアクセスする⼿順をまとめます. ⼿順 .EC2インスタンスを起動する .固定IPを割り振る .セキュリティグループを設定する .AmazonRoute53でDNSレコードを設定する 1.EC2インスタンスを起動する 初めに,EC2インスタンスを起動します. EC2(東京リージョン) 左側のペインから,「インスタンス」>「インスタンス」を選択し,右上の「インスタンスを起動」を押下します. イメージは,無料利⽤枠で利⽤できるイメージである「UbuntuServer20.04LTS(HVM)」を利⽤します. TTSの推奨動作環境はリンク先の通りですが,以下の説明では動作確認を優先することにして,インスタンスタイプ は無料枠で利⽤できる「t2.micro」を選択します. ステップ3〜ステップ6は特にデフォルト設定を変更せずに進みます.ステップ6では,sshで接続する際の送信元IP アドレスを制限するように警告が出るので,適宜設定します.
  2. 2. ELSPINA VEINZ Inc. 2 / 10 ステップ7で右下の「起動」を押下すると,ssh接続する際の鍵を指定するように要求されます.ここでは,新たに鍵 を作成することにします.作成した鍵は適当な場所に保存します. しばらくするとインスタンスが起動します. 2.固定IPを割り振る EC2のペインから「ネットワーク&セキュリティ」>「ElasticIP」を選択し,右上の「ElasticIPアドレスの割り当 て」を押下します.次の画⾯では特に設定は編集せず「割り当て」を押下します.
  3. 3. ELSPINA VEINZ Inc. 3 / 10 すると固定IPが割り当てられるので,これを先の⼿順で作成したインスタンスに関連づけます. Note ElasticIPは,利⽤終了後は解放しないと料⾦を請求される可能性があるので,ご注意ください.参考 3.セキュリティグループを設定する この時点では,TTSを⽴ち上げても外部からアクセスすることができません.外部からアクセスするために,セキュ リティグループを設定します. EC2のペインから「インスタンス」>「インスタンス」を選択し,⼿順1で作成したインスタンスが所属するセキュリ ティグループを確認します. ポート80(HTTP)と443(HTTPS)がアクセスを受け付けるように設定します.アクセス元のIPアドレスを制限する場 合は,ソースで「カスタム」を選択し,アクセス元IPアドレスの範囲などを設定します.
  4. 4. ELSPINA VEINZ Inc. 4 / 10 4.AmazonRoute53でDNSレコードを設定する ドメインを設定しない場合は不要ですが,以下では独⾃ドメインをAmazonRoute53で管理している前提で,取得し たIPアドレスに関連づける⼿順を整理します. Route53のペインから,「ホストゾーン」を選択し,TTSのインスタンスに割り当てたいドメイン名を選択します. 「レコードを作成」を押下し,適当なレコード名を⼊⼒します.レコードタイプは「A-IPv4アドレスと⼀部のAWS リソースにトラフィックをルーティングします。」を選択します.「値」のフィールドには,⼿順2で取得した ElasticIP(固定IPアドレス)を⼊⼒します.⼊⼒後,「レコードを作成」を押下します. 確認 ここまでの⼿順が期待した通りに設定できているかを確認します.DNSが適切に設定されているか,ポートが期待し た通りに開放されているかどうかは,他のサーバからnslookupコマンドやnmapコマンドを使うなどして,適宜確認 します. $ nslookup [your record].[your domain] (中略) Non-authoritative answer:
  5. 5. ELSPINA VEINZ Inc. 5 / 10 Name: [your record].[your domain] Address: [your ip address] $ nmap [your record].[your domain] (中略) Not shown: 997 filtered ports PORT STATE SERVICE 22/tcp open ssh 80/tcp closed http 443/tcp closed https sshでの接続は,EC2のペインから「インスタンス」>「インスタンス」で作成したインスタンスを選択し,「接続」 からアクセス先を確認し,秘密鍵を指定してアクセスできるかどうか確認できます. 次の記事では,TTSのインストール⼿順を整理します. [^1]:TTN,TTS,TTIについてはリンク先参照.
  6. 6. ELSPINA VEINZ Inc. 6 / 10 TheThingsStackをEC2にインストールする(2/2) 前回の記事では,TheThingsStack(TTS)をインストールするためのEC2インスタンスを⽤意しました.今回は, EC2インスタンスにTTSをインストールする⼿順をまとめます. オフィシャルのドキュメントはこちらです.TTSのインストールはdocker-composeを利⽤するだけなので,特に難 しいところはないかもしれません(youtubeの説明動画は6分で終わっています)が,以下に⼿順を記述します. ⼿順 .docker,docker-composeをインストールする .docker-compose.yml,TTSの設定ファイルを編集する .dockerイメージをダウンロード,データベースを初期化,ユーザを追加 .起動 1.docker,docker-composeをインストールする 初めに,EC2インスタンスにdockerとdocker-composeをインストールします.前回記事のようにubuntuのインス タンスを利⽤している場合,dockerのインストール⼿順はこちらの⼿順に従います. // 必要なパッケージをインストール $ sudo apt-get update $ sudo apt-get -y install apt-transport-https ca-certificates curl gnupg lsb-release // GPG鍵を追加 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg // リポジトリを追加 $ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null // dockerインストール $ sudo apt-get update $ sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-composeのインストールは,こちらの⼿順に従います. // docker-composeをダウンロード $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker- compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose // 実⾏権限を追加 $ sudo chmod +x /usr/local/bin/docker-compose
  7. 7. ELSPINA VEINZ Inc. 7 / 10 なお,dockerは特に設定しない場合,rootユーザでしか操作できないようですが,⾮rootユーザがdockerを操作し たい場合はこのドキュメントの⼿順を参考にします. // dockerグループを作成(既に存在するかも) $ sudo groupadd docker // dockerコマンドを実⾏したいユーザを,dockerグループに追加 $ sudo usermod -aG docker $USER // グループを変更 $ newgrp docker 2.docker-compose.yml,TTSの設定ファイルを編集する TTSはデータストアとしてSQLデータベース(CockroachDBかPostgreSQL)とRedisを利⽤します.これらの設定 が記述されているdocker-composeファイルが⽤意されていますので,そちらをダウンロードします. // 以下,ホームディレクトリで作業する $ cd ~ // docker-compose.ymlをダウンロード $ curl https://www.thethingsindustries.com/docs/getting- started/installation/configuration/docker-compose-open-source.yml > docker-compose.yml ダウンロードしたdocker-composeファイル中では,SQLデータベースはCockroachDBを利⽤するように記述され ています.また,https接続のための証明書は,TTSに最初にアクセスした際に⾃動的にリクエスト(バックグラウン ドでLet'sEncryptから取得)するような設定になっています. 今回は,特に編集せず元のdocker-composeファイルをそのまま利⽤しますが,オフィシャルドキュメントに記載さ れているように,プロダクション環境ではそれぞれのdockerimageのタグを固定した⽅が良いかもしれません. Info TTSのWebコンソールの⽇本語対応はバージョン3.14以降で利⽤できます. 次に,TTSの設定ファイルをダウンロードします.docker-compose.yml中でファイルを配置する場所を定めている ので,以下のようにディレクトリを作成し,その中にダウンロードします. // ディレクトリを作成 $ mkdir -p config/stack // TTSの設定ファイルをダウンロード $ curl https://www.thethingsindustries.com/docs/getting- started/installation/configuration/ttn-lw-stack-docker-open-source.yml > config/stack/ttn-lw-stack-docker.yml
  8. 8. ELSPINA VEINZ Inc. 8 / 10 ttn-lw-stack-docker.ymlでは,元々記述されているサンプルのホスト名「thethings.example.com」を,⾃分のホ スト名に書き換えます. 続いて証明書を保存するディレクトリを作成し,権限を与えます. $ mkdir acme // ユーザ886(dockerでTTSを実⾏するユーザ)に所有者を変更 $ sudo chown 886:886 acme Info 証明書を別途⽤意する場合の⼿順はこちらで解説されています. 設定は以上です. 3.dockerイメージをダウンロード,データベースを初期化,ユーザを追加 初めに,dockerイメージをダウンロードします. $ docker-compose pull 次に,アカウント情報を管理するサーバ(IdentityServer)のデータベースを初期化します.この⼿順は, Enterprise版のTTSを利⽤する場合は別のコマンドになるようですので,ご注意ください. $ docker-compose run --rm stack is-db init 続いて,webコンソールにログインする際のユーザを作成します.以下のコマンドを実⾏するとpasswordの設定を 求められますが,このid(admin)/passwordでログインできるようになります. // ユーザ作成(emailは適切に設定) $ docker-compose run --rm stack is-db create-admin-user --id admin --email your@email.com コマンドラインインタフェースを利⽤する場合は,以下の⼿順でOAuthクライアントを作成します. $ docker-compose run --rm stack is-db create-oauth-client --id cli --name "Command Line Interface" --owner admin --no-secret --redirect-uri "local-callback" --redirect-uri "code" 最後に,コンソールのclientを作成します.ここで「CONSOLE_SECRET」には,ttn-lw-stack-docker.ymlの console.oath.client-secretと同じ値(デフォルトの設定ファイルでは"console")を設定し,SERVER_ADDRESS
  9. 9. ELSPINA VEINZ Inc. 9 / 10 には同じくttn-lw-stack-docker.ymlで,「thethings.example.com」から置き換えたホスト名を設定します. $ CONSOLE_SECRET="console" $ SERVER_ADDRESS="https://(置き換えたホスト名)" $ docker-compose run --rm stack is-db create-oauth-client --id console --name "Console" --owner admin --secret "${CONSOLE_SECRET}" --redirect-uri "${SERVER_ADDRESS}/console/oauth/callback" --redirect-uri "/console/oauth/callback" -- logout-redirect-uri "${SERVER_ADDRESS}/console" --logout-redirect-uri "/console" 以上で設定は終了です. 4.起動 ここまでの設定が成功していれば,以下のコマンドでコンテナが起動します. $ docker-compose up 起動後,https://(置き換えたホスト名)にアクセスすると,設定したid/passwordでログインできるようになります. 初回アクセス時は証明書を取得するために少し時間がかかるかもしれません. 設定に失敗している場合,ログに何か表⽰されるかもしれません.その場合は,トラブルシューティング等が参考に なるかもしれません. ⼿順は以上です.
  10. 10. ELSPINA VEINZ Inc. 10 / 10 お問い合わせ先 エルスピーナヴェインズ株式会社 Email:lorawan@elspina.tech 会社紹介 会社名:エルスピーナヴェインズ株式会社(ELSPINAVEINZInc.) 所在地:群⾺県⾼崎市⾙沢町965番地 代表者:⻘⾕浩⼆(代表取締役) 設⽴:2017年7⽉ URL:https://elspina.veinz.tech/ 事業内容: IoTソリューションの企画・設計・開発・運⽤ データサイエンス・AI活⽤に関するコンサルティング、トレーニングサービスの提供 ICTを活⽤したビジネス開発のコンサルティング・プロトタイピング 中⼩企業の業務改善・ICT活⽤コンサルティング タスクマネジメントソリューションTakeTaskの⽇本パートナー

×