インストール手順 (Windows)

Windows Serverでのインストール手順をご説明します。

概要

Boltz パッケージについて

Boltz パッケージは、送信エンジン BoltzEngine と、BoltzEngine を利用したリファレンス実装 BoltzMessenger の2つが含まれます。
BoltzEngine はデーモンサービスです。BoltzEngine 単体ではメッセージ配信しか行わないため、 メッセージの内容やデバイスの管理はアプリごとに作成する必要があります。

BoltzMessengerBoltzEngine を使ったサービスのリファレンス実装です。
BoltzMessenger には、管理画面、iOS アプリ、Android アプリ、API が含まれます。
BoltzMessenger のソースコードはすべてお渡しするため、そのまま使っていただいても、カスタマイズしていただいても構いません。
(カスタマイズされた部分はサポート対象外となります)

このドキュメントについて

この文書では、Windows 版の BoltzMessenger を動作させるまでの手順を解説します。
インストーラは、途中でインストールするコンポーネントを選択するようになっており、コンポーネントは4つあります。

コンポーネント 役割
BoltzEngine BoltzEngine 本体です。
BoltzMessenger Gateway BoltzMessenger のAPIサービスです。
BoltzMessenger Admin BoltzMessenger の管理サイトです。
BoltzMessenger Web BoltzMessenger のフロントエンドAPI・ウェブアプリケーションです。
BoltzEngine HTTP Proxy BoltzEngine を利用するためのHTTP APIサービスです。

上記のコンポーネントは、すべて1台のサーバに同居することも可能ですが、別のサーバにインストールしても使用可能です。
このドキュメントでは、すべて1台のサーバにインストールを行い、分散させる場合の設定項目を補足として記載します。
BoltzEngine HTTP Proxy については『BoltzEngine Toolsマニュアル』を参照ください。

ドキュメントの表記

BoltzEngine インストーラは、インストール途中で選択したコンポーネントによって、手順が増減しますので、本ドキュメントでは、お客様に実施していただく操作を、タイトル行の末尾に括弧書きで表現します。

> タイトル(BoltzMessenger Gateway / BoltzMessenger Admin)

と表記する場合は、BoltzMessenger Gateway または BoltzMessenger Admin を選択した方が対象になります。
BoltzEngine だけをインストールされる場合は不要です。

システム条件

BoltzMessenger をインストールするには、以下の条件を満たしている必要があります。

  • Windows Server 2012 以降
  • 100Mbps 以上のネットワーク(大きいほうがよい)
  • (iOSへプッシュを行う場合) gateway.push.apple.com の 2195 ポートに対して通信可能であること
  • (iOSへプッシュを行う場合) feedback.push.apple.com の 2196 ポートに対して通信可能であること
  • (Androidへプッシュを行う場合) fcm.googleapis.com の 443 ポートに対して通信可能であること
  • (FireOSへプッシュを行う場合) api.amazon.com の 443 ポートに対して通信可能であること
  • アプリからアクセスするためのポートを解放可能であること(デフォルトでは TCP/13070)
  • 管理画面へアクセスするためのポートを解放可能であること(TCP/80 または TCP/443)

インストール

IIS のインストール

BoltzMessenger Admin を使う場合、BoltzEngine よりも先に IIS のインストールが必要です。
IIS を、サーバーマネージャからインストールします。

役割と機能の追加 (BoltzMessenger Admin)

役割と機能の追加を選択します。

インストールの種類の選択 (BoltzMessenger Admin)

「役割ベースまたは機能ベースのインストール」を選択して「次へ」を押下します。

対象サーバーの選択 (BoltzMessenger Admin)

BoltzMessenger Admin をインストールしたいサーバーを選択して「次へ」を押下します。

サーバーの役割の選択 (BoltzMessenger Admin)

「IIS サーバー」にチェックを入れて、「次へ」を押下します。

機能の選択 (BoltzMessenger Admin)

BoltzMessenger Admin を使うためには、 ASP.NET と .NET Framework 3.5 Features が追加で必要です。チェックを入れてから「次へ」を押下してください。

また、WebPIで導入するPHP 5.6は、Microsoft Visual C++ 2012 Redistributable (x86)に依存しています。
本インストーラには含みませんので、マイクロソフトのサイトからダウンロード・インストールを行ってください。

Web サーバーの役割 (BoltzMessenger Admin)

特に何もする必要はありません。「次へ」を押下してください。

役割サービスの選択 (BoltzMessenger Admin)

BoltzMessenger Admin を使われるだけなら、そのまま「次へ」を押下して次の画面を表示してください。

インストールオプションの確認 (BoltzMessenger Admin)

内容を確認して、「インストール」を押下してください。

インストールの進行状況 (BoltzMessenger Admin)

インストールが完了したら「閉じる」を押下します。

データベースサーバーの準備

BoltzMessenger をご利用になる場合は、このタイミングで MySQL もしくは PostgreSQL が必要となります。

同一のサーバーにインストールする場合は、公式サイトからダウンロードしインストールしてください。

BoltzEngine 本体のインストール

BoltzEngine セットアップウィザードの開始 (BoltzEngine / BoltzMessenger Gateway / BoltzMessenger Admin)

BoltzEngineSetup.exe をダブルクリックすると、セットアッププログラムが起動します。

「次へ」を押下して進めてください。

セットアップの種類 (BoltzEngine / BoltzMessenger Gateway / BoltzMessenger Admin)

BoltzEngineのコンポーネントが1つでもインストールされている場合、「アップグレード」「再インストール」の選択を行う画面を表示します。
既存の設定を残す場合は「アップグレード」を選択してください。 または、設定も変更する場合は「再インストール」を選択してください。

どちらを選んでも、送信履歴や端末情報などのデータは残しますので、設定を残すかどうかだけで判断ください。

この画面は新規インストールの場合は表示しません。

インストール先の指定 (BoltzEngine / BoltzMessenger Gateway / BoltzMessenger Admin)

BoltzEngineをインストールするフォルダを選択します。
選択したフォルダ以下に、BoltzEngine の配布物がコピーされます。
「次へ」を押下して進めてください。

コンポーネントの選択 (BoltzEngine / BoltzMessenger Gateway / BoltzMessenger Admin)

インストールするコンポーネントを選択します。
各コンポーネントは『このドキュメントについて』で挙げた内容が表示されていますので、必要に応じてチェックを切り替えてください。チェックが入っているコンポーネントのみインストールされます。

ここでは、1台のサーバで BoltzMessenger を動作させるため、すべてにチェックを入れて「次へ」を押下します。

プログラムグループの指定 (BoltzEngine / BoltzMessenger Gateway / BoltzMessenger Admin)

スタートメニューに追加するプログラムグループの名前を入力します。

インストール準備完了 (BoltzEngine / BoltzMessenger Gateway / BoltzMessenger Admin)

上記で選択した内容が確認できます。
内容に相違なければ、「インストール」を押下してください。
選択したコンポーネントによって、必要なファイルのコピーを開始します。

ファイルのコピーが完了した後、MySQL のインストールを行うように設定していた場合、
MySQL のインストーラが起動しますので『(参考) MySQL のインストール』を行ってください。
インストール完了後、「次へ」を押下します。

プロダクトキーの選択 (BoltzEngine)

BoltzEngineのプロダクトキーファイルを選択して、「次へ」を押下します。
アンロックパスワードはご契約様専用サイトからダウンロードできます。

BoltzMessenger データベースの作成 (BoltzMessenger Gateway / BoltzMessenger Admin)

MySQL もしくは PostgreSQL のアカウントを入力します。
ここでは、データベースの作成を行いますので、作成権限を持つユーザ資格情報を入力してください。

「次へ」を押下すると、データベースへ接続して初期データを書き込みます。
また、IIS の Default Web Site 以下に /boltz-messenger という仮想ディレクトリを追加します。

Apple Push Notification service の設定 (BoltzMessenger Gateway / BoltzMessenger Admin)

BoltzMessenger Gateway が APNs へ接続する時の設定を行います。 まず、HTTP/2 インターフェイス・バイナリインターフェイスのどちらを使用するか選択します。

APNsへの通知を行わない場合は、「設定しない」を押下してください。

HTTP/2 インターフェイスを選択した場合は、次の画面にHTTP/2の認証設定が表示されます。Issuer(Team ID・App IDを登録する画面にて確認可能)、Key ID(キーを発行する際に確認可能)、Appleから発行されたキーファイル、アプリのBundle IDを入力してください。

アドレスは、ほとんどの場合、デフォルトで問題ありません。

設定後、「次へ」を押下して進めてください。

バイナリインターフェイスを選択した場合は、AppleからダウンロードしたPush 通知用の証明書と秘密鍵を設定してください。
アドレスは、ほとんどの場合、デフォルトで問題ありません。
(証明書を取得する手順は、Apple のサイト等をご参照ください)

注意: 秘密鍵ファイルは、パスワード設定なしの状態で作成ください

設定後、「次へ」を押下して進めてください。

Google Cloud Messaging の設定 (BoltzMessenger Gateway / BoltzMessenger Admin)

BoltzMessenger Gateway が FCM へ接続する時の設定を行います。
Server Key は、Google のサイトで生成したサーバキーをそのまま入力してください。
リクエストURLは、ほとんどの場合、デフォルトで問題ありません。

設定後、「次へ」を押下して進めてください。
FCMへの通知を行わない場合は、「設定なし」を押下してください。

Amazon Device Messaging の設定 (BoltzMessenger Gateway / BoltzMessenger Admin)

BoltzMessenger Gateway が ADM へ接続する時の設定を行います。
Client ID と Client Secret は、Amazon Developer Console で取得した値を入力してください。
各種URLは、ほとんどの場合、デフォルトで問題ありません。

設定後、「次へ」を押下して進めてください。
ADMへの通知を行わない場合は、「設定なし」を押下してください。

BoltzEngine セットアップウィザードの完了 (BoltzEngine / BoltzMessenger Gateway / BoltzMessenger Admin)

以上で、インストールは完了です。

BoltzMessenger Gateway または BoltzMessenger Admin をインストールした場合、
各種設定を C:¥ProgramData¥boltz-messenger¥config.yml という名前で保存します。
インストール後に設定を変更したい場合はテキストエディタ等で編集し、サービスを再起動してください。

config.yml の各種キーは以下の通りです。

親キー キー 意味
engine address boltz-master サービスのリクエスト先アドレス。省略時はlocalhost:13010が設定されます。
engine protocol boltz-master サービスのプロトコル。省略時は net/rpc、grpc の場合は gRPC を使います。
engine secure boltz-master サービスとのgRPC通信にTLSを適用する場合は true を指定してください。※1
gateway mode boltz-messenger-gateway の動作モード(front/back/both のいずれか) デフォルトは back ※2
apns key APNs 接続用の秘密鍵ファイルパス。(バイナリインターフェイス場合。パスワードなしのpemファイル)
apns cert APNs 接続用の証明書ファイルパス。(バイナリインターフェイス場合)
apns privateKey APNs 接続用の秘密鍵ファイルパス。(HTTP/2の場合。p8ファイル)
apns issuer APNs Issuer(HTTP/2の場合。Apple Developer ProgramのTeam ID)
apns keyId APNs キーID(HTTP/2の場合。p8ファイル作成時に同時に発行)
apns topic APNs トピック(HTTP/2の場合。アプリのBundle Identifier)
apns gateway APNs リクエストを送信するアドレス。 ※3
apns feedback APNs フィードバックを受信するアドレス。(バイナリインターフェイスの場合)
apns timeout APNs がメッセージを保持する有効期限(分、指定のない場合3日間)
apns skipVerify APNs 接続時にサーバ証明書を検証するかどうか。通常は false (デフォルト)にしてください。
fcm key FCM 接続時のサーバキー。
fcm senderId FCM リクエストのSender ID。XMPP プロトコルを使う場合は必須です。
fcm serviceAccount FCM サービスアカウントのファイルパス
fcm url FCM リクエストを送信する URL。
fcm timeout FCM がメッセージを保持する有効期限(分、指定のない場合3日間)
fcm skipVerify FCM 接続時にサーバ証明書を検証するかどうか。通常は false (デフォルト)にしてください。
adm tokenUrl ADM がトークンを発行するための URL。
adm originUrl ADM リクエストを送信する URL のオリジン。/以降は含めてはいけない。
adm clientId ADM トークンを取得するための Client ID。
adm clientSecret ADM トークンを取得するための Client シークレット。
adm skipVerify ADM 接続時にサーバ証明書を検証するかどうか。通常は false (デフォルト)にしてください。
webpush privateKey BASE64URL エンコードされた VAPID 用の秘密鍵(パディングなし)
webpush publicKey BASE64URL エンコードされた VAPID 用の公開鍵(パディングなし)
webpush subject 送信者の連絡先メールアドレスまたはURL(mailto: または https:)
webpush timeout WebPush でメッセージを保持する有効期限(分、指定のない場合3日間)
webpush skipVerify WebPush 接続時にサーバ証明書を検証するかどうか。通常は false (デフォルト)にしてください。
db user DB ログインユーザ。
db password DB ログインユーザのパスワード。
db address DB ホスト名とポート番号を:で区切ったもの(host:3306)。
db name データベース名。
admin salt boltz-messenger-init コマンドで生成したランダム値。
admin cipherSeed boltz-messenger-init コマンドで生成したランダム値。
admin tempDir 実行時キャッシュ等を保存するディレクトリ。省略可能。
admin triggerUrl boltz-messenger-gateway が待ち受けるURL。
admin displayTimezone 管理画面に表示される時刻のタイムゾーン。
admin apnsBadge iOS 端末にバッジを付けるかどうか(trueを指定すると未読1のバッジが付く)
admin defaultUseReserve 新規送信画面の予約配信にチェックを入れるかどうか (trueを指定するとデフォルトでチェックが入ります)
admin defaultUseBandwidth 新規送信画面の速度制限にチェックを入れるかどうか (trueを指定するとデフォルトでチェックが入ります)
admin defaultBandwidth 新規送信画面の配信速度制御に指定するデフォルト値を設定。
web salt boltz-messenger-init コマンドで生成したランダム値。
web tempDir 実行時キャッシュ等を保存するディレクトリ。省略可能。
web displayTimezone Web版 BoltzMessenger に表示される時刻のタイムゾーン。

※1:boltz-master自身には現在 TLS をサポートしていませんので、環境に応じてロードバランサ等をご用意ください。
※2:boltz-messenger-gatewayにはBoltzMessenger Webが用意しているアプリ向けのAPIが実装されており、frontもしくはbothを指定することで起動します。この機能は後方互換性のために残されています。新規の利用はお控えください。
※3:https://もしくはhttp://が指定されるとHTTP/2モードで送信します。

BoltzMessenger で APNs (iOS) へ通知を行う場合

iOS へPush通知を行う場合、config.yml の apns キーを設定します。

HTTP/2で送信する場合はprivateKeyに指定したパスにp8ファイルを設置し、issuer keyId topicを指定してください。

バイナリインターフェイスで送信する場合は、正しい証明書を apns.key, apns.cert で設定したパスへ配置してください。

BoltzMessenger で FCM (Android) へ通知を行う場合

FCMへの通知は、fcm.url の値がhttps://またはhttp://で開始する場合、HTTPプロトコルでの通知を行います。
上記以外の場合は、XMPPプロトコルを使った通知を行います。

HTTP v1 APIプロトコルを使われる場合は fcm.serviceAccount が必須です。 それ以外の場合は fcm.key と fcm.senderId を使いますが、Legacy HTTPプロトコルを使う場合は fcm.senderId は任意です。

※後方互換性確保のため fcm キーがない場合、gcm キーも探します。

BoltzMessenger で ADM (FireOS) へ通知を行う場合

ADM へPush通知を行う場合、config.yml の adm キーを設定し、clientId と clientSecret の2つを設定してください。 それぞれの値は Amazon Developer Console のアプリケーション情報から取得できます。

BoltzMessenger で WebPush (Chrome/Firefox) へ通知を行う場合

webpush に使用する VAPID 用の鍵ペアは OpenSSL を使い、下記の要領で生成します。(boltz-messenger-init コマンドでも生成します)

$ openssl ecparam -name prime256v1 -genkey -noout -out vapid_private.pem
$ openssl ec -in vapid_private.pem -pubout -out vapid_public.pem
$ openssl ec -in vapid_private.pem -pubout -outform DER|tail -c 65|base64|tr -d '=' |tr '/+' '_-' > public_key.txt
$ openssl ec -in vapid_private.pem -outform DER|tail -c +8|head -c 32|base64|tr -d '=' |tr '/+' '_-' > private_key.txt

生成された public_key.txt および private_key.txt の内容を config.yml に記載してください。また、生成された 4 つのファイルは大切に保管してください。

BoltzMessenger で特定のプラットフォームにのみ配信する場合

apns、fcm、adm、webpush のキーを削除すると、削除したキーのサービスが無効になります。
BoltzMessenger のデータベースに端末が登録されても、無効化したプラットフォームへの通知は行いませんし、管理画面にも表示されません。

webpush キーを削除すると、BoltzMessenger Web のウェブアプリケーションは無効になりますが、フロントエンドAPIはこの影響を受けません。

BoltzMessenger で速度制限を行う場合

BoltzMessenger は engine.protocol を grpc に設定した場合に、1 秒あたりの通知速度制限をサポートしています。
有効にするためには、engine.address と engine.protocol の値を変更します。

engine:
  # boltz-master.serviceのgrpc_listen_addr値を設定
  address: localhost:13009
  # boltz-master.serviceとの通信にgRPCプロトコルを使う
  protocol: grpc
  # ロードバランサ等でHTTPSをサポートする場合はtrue
  secure: false

設定を反映するため、管理ツール→サービスを開き、Boltz Messenger Gateway を再起動してください。

BoltzMessenger の設定

BoltzMessenger を利用する場合、PHP のインストールと、IIS の設定を変更する必要があります。

WebPI (Web Platform Installer) のインストール (BoltzMessenger Admin)

IIS マネージャから、サーバを選択すると、Web Platform の利用を促すダイアログが表示されますので、「はい」を押下します。
そうすると、Internet Explorer でダウンロードサイトが表示されますので、ダウンロードして実行してください。
特にインストールダイアログ等はなく、IIS へ Web Platform Installer が追加され、実行します。

この画面からWebPIがダウンロードされない場合は、WebPIのダウンロードページからダウンロードすることもできます。

WebPI の実行 (BoltzMessenger Admin)

WebPI は、上記でダウンロードした実行ファイルをそのまま起動しても構いませんし、IIS の機能メニューから Web Platform Installer を選択しても構いません。
どちらもおなじメニューが表示されます。

PHP の選択 (BoltzMessenger Admin)

WebPI の上部にあるタブから、「製品」を選択します。
次に、左側に表示されるメニューから「フレームワーク」を選び、右側に表示される項目から PHP を探して、「追加」を押下してください。
(「追加」をクリックすると、ボタンが「削除」に切り替わります。)
PHP のバージョンは 2017 年 4 月現在、5.6 を選択してください。

PHP 拡張モジュールの有効化 (BoltzMessenger Web)

BoltzMessenger Web の使用には intl モジュールの有効化が必要です。下記にある php.ini を開き、設定値を変更します。

C:\Program Files (x86)\PHP\(PHPバージョン)\php.ini

ini 上の [ExtensionList] セクションを探し、以下の行を追加してください。

extension=php_intl.dll

動作確認

仮想ディレクトリが以下のようになっていることを確認し、異なっていれば再作成してください。

アプリケーションパス ルートアプリケーション
仮想パス /boltz-messenger
物理パス (BoltzEngine をインストールした場所)¥boltz-messenger-admin¥app¥webroot

仮想ディレクトリ「/boltz-messenger」を選択し、右側メニューの「*:80 (http) 参照」を押下すると、
ブラウザが開いて管理画面が表示されます。
管理画面の使い方等は『運用マニュアル』をご参照ください。

URL Rewrite の選択 (BoltzMessenger Admin)

URL Rewrite を探して、「追加」を押下してください。
上記3つパッケージの追加が終わったら「インストール」を押下します。

ライセンスが表示されますので、同意される場合は「同意する」を押下してください。

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら