環境変数の一覧
ACCESS_CONTROL_ALLOW_ORIGIN (省略可)
API サーバーから送信される値にAccess-Control-Allow-Origin
ヘッダーを設定します。通常は、EMBUPLOADER_ENABLEDを有効化していない場合は設定する必要はありません。
入力例
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
ACCESS_CONTROL_ALLOW_ORIGIN="https://example.com"
flyctl secrets set ACCESS_CONTROL_ALLOW_ORIGIN=https://example.com
ACCESS_CONTROL_ALLOW_ORIGIN=https://example.com
KEY: ACCESS_CONTROL_ALLOW_ORIGIN
VALUE: https://example.com
AUTO_MIGRATION (省略可)
true
にすることで、データベースのマイグレーションが自動的に行われます。
もしこれをtrue
にすると、API サーバーをアップデートした後に API サーバープログラムを動かした際にデータベースが自動的にマイグレーションされます。データベースにすでに存在するデータはほぼ全て保持されますが、もし万が一データ損失が発生すると困る場合は、事前にデータベースをバックアップしておいたほうが無難です。
入力例
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
AUTO_MIGRATION="true"
flyctl secrets set AUTO_MIGRATION=true
AUTO_MIGRATION=true
KEY: AUTO_MIGRATION
VALUE: true
DATABASE_URL (v0.7.8 で仕様変更)
この環境変数の解説は API サーバー v0.7.8 以上を前提としています。v0.7.7 以前には対応していません。v0.7.7 以前の解説は HEROKU をご覧ください。
データベースの URL を指定できます。PostgreSQL の場合は postgresql://
、MySQL の場合は mysql://
、SQLite の場合は file://
で書き始めます。
POSTGRESQL、MYSQL、SQLITE が設定されている場合はそちらが優先されます。それらは JSON で入力しますが、DATABASE_URL
では URL のみからなる文字列で入力しますのでご注意ください。
入力例
PostgreSQL
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
DATABASE_URL="postgresql://user:password@localhost:5432/dbname"
この値には、慎重に扱うべきデータが一般的に含まれるため、fly.toml
で設定することは推奨されません。fly.io にデプロイする場合は、代わりにflyctl secrets set
コマンドを利用することを推奨します。
flyctl secrets set DATABASE_URL=postgresql://user:password@localhost:5432/dbname
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
KEY: DATABASE_URL
VALUE: postgresql://user:password@localhost:5432/dbname
なお、Heroku にデプロイしたうえで Heroku Postgres を利用する場合は自動的に値が設定されるため、手動で設定する必要はありません。
MySQL
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
DATABASE_URL="mysql://user:password@localhost:3306/dbname"
この値には、慎重に扱うべきデータが一般的に含まれるため、fly.toml
で設定することは推奨されません。fly.io にデプロイする場合は、代わりにflyctl secrets set
コマンドを利用することを推奨します。
flyctl secrets set DATABASE_URL=mysql://user:password@localhost:3306/dbname
DATABASE_URL=mysql://user:password@localhost:3306/dbname
この環境変数は、Heroku に対応していないか、Heroku での設定が推奨されていません。
SQLite
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
DATABASE_URL="file://./dbname.sqlite"
flyctl secrets set DATABASE_URL=file://./dbname.sqlite
DATABASE_URL=file://./dbname.sqlite
この環境変数は、Heroku に対応していないか、Heroku での設定が推奨されていません。
EMBUPLOADER_ENABLED (省略可)
true
にすることで、API サーバー内蔵アップローダーが有効化されます。
API サーバー内蔵アップローダーは、Firebase Storage 版アップローダーとは異なります。
EMBUPLOADER_COUNT_QUOTA (省略可)
EMBUPLOADER_ENABLED が有効化されているときにのみ使われます。
1 ユーザーが API サーバーにアップロードできるファイルの個数の上限を設定できます。値がない場合は上限は設けられません。
EMBUPLOADER_MAX_SIZE (省略可)
EMBUPLOADER_ENABLED が有効化されているときにのみ使われます。
アップローダーに保存するファイルの合計サイズの上限を設定できます。単位はバイトです。値がない場合は上限は設けられません。
EMBUPLOADER_PATH (省略可)
EMBUPLOADER_ENABLED が有効化されているときにのみ使われます。
API サーバー内蔵アップローダーのファイルを保存するパスを設定します。値 がない場合は API サーバー内蔵アップローダーは無効化されます。
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
EMBUPLOADER_PATH="./uploader"
flyctl secrets set EMBUPLOADER_PATH=./uploader
EMBUPLOADER_PATH=./uploader
KEY: EMBUPLOADER_PATH
VALUE: ./uploader
EMBUPLOADER_SIZE_QUOTA (省略可)
EMBUPLOADER_ENABLED が有効化されているときにのみ使われます。
1 ユーザーが API サーバーにアップロードできる合計ファイルサイズの上限を設定できます。単位はバイトです。値がない場合は上限は設けられません。
ENTRY_PASSWORD (必須)
エントリーパスワード(サイトを利用するために必要なパスワード)を設定できます。JSON フォーマットで入力する必要があります。
エントリーパスワードの設定し忘れを防ぐため、ENTRY_PASSWORD
に値がセットされていない場合は API サーバーは稼働せずエラーとなるようにしています。
入力例
パスワードを設定しない場合
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
ENTRY_PASSWORD='{"type":"none"}'
flyctl secrets set ENTRY_PASSWORD={"type":"none"}
ENTRY_PASSWORD={"type":"none"}
KEY: ENTRY_PASSWORD
VALUE: {"type":"none"}
平文でパスワードを設定する場合
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
ENTRY_PASSWORD='{"type":"plain","value":"******"}'
flyctl secrets set ENTRY_PASSWORD={"type":"plain","value":"******"}
ENTRY_PASSWORD={"type":"plain","value":"******"}
KEY: ENTRY_PASSWORD
VALUE: {"type":"plain","value":"******"}
******
の部分はユーザーに要求するパスワードに置き換えてください。
bcrypt のハッシュ値でパスワードを設定する場合
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
ENTRY_PASSWORD='{"type":"bcrypt","value":"$2b$10$ABC.defgh.igklmnopq/qwertyuiopasdfghjklzxcvbnm0123"}'
flyctl secrets set ENTRY_PASSWORD={"type":"bcrypt","value":"$2b$10$ABC.defgh.igklmnopq/qwertyuiopasdfghjklzxcvbnm0123"}
ENTRY_PASSWORD={"type":"bcrypt","value":"$2b$10$ABC.defgh.igklmnopq/qwertyuiopasdfghjklzxcvbnm0123"}
KEY: ENTRY_PASSWORD
VALUE: {"type":"bcrypt","value":"$2b$10$ABC.defgh.igklmnopq/qwertyuiopasdfghjklzxcvbnm0123"}
$2b$10$ABC.defgh.igklmnopq/qwertyuiopasdfghjklzxcvbnm0123
の部分は bcrypt のハッシュ値に置き換えてください。
bcrypt のハッシュ値は様々な方法で生成できます。どの方法を用いても構いません。Flocon では次の 2 つの方法を提供しています。
- https://tools.flocon.app/bcrypt で生成する。最も手軽ですが、このページには npm の bcryptjs パッケージ を使っているため、API サーバーに使用している bcrypt パッケージでは認識できないハッシュ値が生成される可能性があります。その場合は、日本語などを用いない、もしくはパスワードを短くすることで解決できる可能性があります。
- Flocon のソースコードに付属している
bcrypt-interactive
スクリプトを利用する。apps/api-server
ディレクトリでyarn run bcrypt-interactive
を実行すると、bcrypt ハッシュ値生成プログラムが起動します。bcrypt パッケージ が使われますが、事前に Node.js と yarn のインストールおよび、yarn install
コマンドを実行して数百 MB のファイルをダウンロードする必要があります。
FIREBASE_ADMIN_SECRET (省略可)
2022 年 8 月頃までこの設定は必須と書かれていましたが、確認したところ実際は必要ないことが判明しました。よって、**FIREBASE_ADMIN_SECRET
の設定の有 無は現時点では Flocon の動作に影響を及ぼさないと考えられるため、設定する必要はありません。**すでに FIREBASE_ADMIN_SECRET
に値をセットしている場合は、値を削除しても構いません。同様に、Firebase Admin SDK の秘密鍵ファイルの生成も行う必要はありません。
ただし、将来 Flocon に新機能が追加された際に、この環境変数を設定しなければその新機能を使えない、といった状況が生じる可能性はあります。そのため、現在の Flocon のソースコードにもFIREBASE_ADMIN_SECRET
を読み取る機能は残されており、FIREBASE_ADMIN_SECRET
の値が存在すればそれが Firebase Admin SDK の初期化に引き続き用いられるようになっています。
Firebase 管理ページから生成した Firebase Admin SDK の秘密鍵の値を設定できます。
Firebase Admin SDK の秘密鍵ファイルは次の方法で取得できます。
Firebase の プロジェクトの設定
(Firebase 管理ページ左上にある歯車アイコンから開けます) の サービスアカウント
タブの下の方にある新しい秘密鍵の生成
ボタンをクリックすることで秘密鍵ファイルのダウンロードが開始されます。
秘密鍵を生成する際に表示されるメッセージにもあるとおり、秘密鍵のデータは第三者に漏洩しないように注意して管理してください。
入力例
- fly.toml
- flyctl secrets set コマンド
- .env.local, .env
- Heroku
FIREBASE_ADMIN_SECRET='{"private_key":"-----BEGIN PRIVATE KEY-----\n********************\n-----END PRIVATE KEY-----\n","client_email":"************.iam.gserviceaccount.com"}'
flyctl secrets set FIREBASE_ADMIN_SECRET={"private_key":"-----BEGIN PRIVATE KEY-----\n********************\n-----END PRIVATE KEY-----\n","client_email":"************.iam.gserviceaccount.com"}
FIREBASE_ADMIN_SECRET={"private_key":"-----BEGIN PRIVATE KEY-----\n********************\n-----END PRIVATE KEY-----\n","client_email":"************.iam.gserviceaccount.com"}
KEY: FIREBASE_ADMIN_SECRET
VALUE: {"private_key":"-----BEGIN PRIVATE KEY-----\n********************\n-----END PRIVATE KEY-----\n","client_email":"************.iam.gserviceaccount.com"}
*
の部分を適切な文字列に置き換えてください。なお、実際のprivate_key
の値はこの例と比べて非常に長いです。
FLOCON_ADMIN (省略可) (v0.7.2 で追加)
管理者権限を与えるユーザーを指定できます。ユーザーを指定するには、Firebase Authentication のユーザー UID を記述します。複数のユーザーを指定する場合は、半角カンマで区切ります。
API サーバー v0.7.2 の時点では、管理者には部屋一覧を表示する画面から任意の部屋を削除できる権限が与えられます。これ以外の機能もおいおい追加するかもしれません。
管理者は必ずしもサーバーの運用者と一致させる必要はありません。また、管理者は 0 人でも構いません。
公開サーバーでは管理者がいると便利な場面があるかもしれませんが、身内サーバーではあまり必要ないかと思われます。