ソースコード: GitHub
クライアントはウェブブラウザ(Chrome, Firefox, Safari)のみで動作し,特別なソフトウェアのインストールは不要です。AWSを利用する際の構成例を以下に示します。
上記の構成が,AWSの無料使用枠(Ubuntu 18.04; t2.micro EC2インスタンス, db.t2.micro S3インスタンス)で動作することを確認済みです(※ ただし,下記のビルド・起動のセクションを参照)。
CloudFrontにおいて,下記のようにBehaviorを割り振ります。
このように構成することで,ユーザーからは同一のドメインへのHTTPS通信としてアクセスが可能になります。
CloudFrontとALBにドメイン名を設定(Route 53を使用)し,TLS証明書を設定します(AWS Certificate Managerを使用)。
APIサーバー,ソケットサーバー,適切なセキュリティグループ,インバウンドルールを設定しておきます,
domain: app.example.com # ユーザーがアクセスするドメイン名 api_server: # APIサーバーの設定 port: 3000 # ポート tls: false # TLSの有無 http2: false # HTTP2の使用(true: HTTP2, false: HTTP1.1) cluster: 0 # 複数ワーカーの使用(0: オフ, 1以上: ワーカー数) debug_log: true # デバッグログの使用 socket_server: # ソケットサーバーの設定(APIサーバーと同様) port: 5000 tls: false http2: false cluster: 0 debug_log: true default_rooms: # 新規ユーザーがデフォルトで入室可能な会場のID一覧 - Rxxxxxxx certificate_folder: /etc/letsencrypt/live/YOUR_DOMAIN.com # (TLSを使用する場合)証明書の格納フォルダ postgresql: postgres://postgres@localhost/virtual_poster # PostgreSQLの接続文字列 redis: redis://localhost:6379 # Redisの接続文字列 aws: access_key_id: xxxxxxxxxxx # AWS Key ID secret_access_key: xxxxx # AWS アクセスキー region: ap-northeast-1 # AWSリージョン s3: upload: true # S3へのポスター画像をアップロード ON/OFF bucket: BUCKET_NAME # S3バケット名 via_cdn: true # S3へのアクセスにCloudFrontを経由 cloud_front: id: DISTRIBUTION_ID # CloudFrontのdistribution ID domain: app.example.com # CloudFrontのドメイン名(通常上記のdomainと同じ) key_pair_id: XXXXXX # CloudFrontのキーペアID private_key: ./cloud_front_priv.pem # CloudFrontの秘密鍵 firebase_auth_credential: xxxxx.json # Firebase Authenticationの認証情報のJSONファイルのパス email: enabled: true domain: YOUR_EMAIL_DOMAIN.com max_rate_per_sec: 1 max_rate_per_day: 50 max_rate_user_per_hour: 1 profile_keys: - url - url2 - url3 - display_name_full - affiliation cookie_expires: 10080 user_registration: true # 管理者の事前登録なしのユーザー自身による登録を許可する debug_token: xxxxx # デバッグ用のパスワード説明
不明な点がある場合や,サーバー設定にサポートが必要な場合には,作者(甲斐洋行; メール kai [アット] tohoku.ac.jp)までご連絡ください。可能な範囲で対応させていただきます。