Busabase

設定リファレンス

セルフホスト構成が読むすべての環境変数 — 何をするか、間違えるとどうなるか、変更に再起動が要るか。

オールインワンイメージは初回起動時にほとんどの認証情報を生成し、APP_URL を http://localhost:3000 に既定します。Compose デプロイは init.sh が .env を書き、APP_URL はあなたが指定します。違いは下表で区別します。

最も間違えやすいのが APP_URL です。ブラウザのアドレスバーと完全に一致(スキーム・ホスト・ポートすべて)している必要があります。食い違うとログイン要求は 403 Invalid origin で拒否され、画面には Invalid origin と明示されます。「ログインが成功したように見えてすぐログイン画面に戻る」わけではありません。

必須

変数オールインワン既定Compose再起動役割
BUSABASE_IMAGE—busabase/busabase-premium:latest要使用するイメージ。公開の :latest は試用も本番も同じセルフホストビルドです。必要なら自社ミラーのバージョン固定タグに差し替えてください。
APP_URLhttp://localhost:3000必須(init.sh が質問)要ユーザーが実際に入力するアドレス(スキームとポートを含む)。ログイン Origin 検証の基準にもなります。
APP_PORT30003000要公開するホスト側ポート。
POSTGRES_USERbusabasebusabase要データベースユーザー。
POSTGRES_PASSWORD初回起動時に生成必須(init.sh が生成)要データベースパスワード。考えるのではなく生成してください。
POSTGRES_DBbusabasebusabase要データベース名。
S3_ACCESS_KEYbusabasebusabase要オブジェクトストレージのキー。seaweed-s3.json と一致必須。
S3_SECRET_KEY初回起動時に生成必須(init.sh が生成)要オブジェクトストレージのシークレット。seaweed-s3.json と一致必須。
S3_BUCKETbusabasebusabase要バケット名。自動作成されます。
BETTER_AUTH_SECRET初回起動時に生成必須(init.sh が生成)要セッション cookie の署名鍵。漏れると誰でもログイン状態を偽造できます。

Origin とリバースプロキシ

ログインエンドポイントはリクエストの Origin ヘッダー(スキーム + ホスト + ポートが完全一致)を信頼リストと照合します。信頼元は次のとおりです:

  1. APP_URL / BETTER_AUTH_BASE_URL / NEXT_PUBLIC_APP_URL
  2. BETTER_AUTH_ADDITIONAL_ORIGINS(カンマ区切りの複数 Origin)

リバースプロキシ越しの場合、APP_URL はコンテナ内部のアドレスではなく、ブラウザが実際に訪れるアドレスに一致させる必要があります。プロキシ側では元のホストとスキームを転送してください:proxy_set_header Host $host; と proxy_set_header X-Forwarded-Proto $scheme;。これがないと APP_URL が正しくてもコールバックや cookie が壊れます。

公開 Origin の設定

オールインワンはローカル評価向けに http://localhost:3000 を既定値とします。IP、ホスト名、標準外ポート、またはリバースプロキシでアクセスする場合は、コンテナ起動前に APP_URL を設定してください。リクエストが送った Origin を Busabase が自動的に信頼することはありません。

  • IP とホスト名、新旧ドメインなど複数 Origin を信頼する場合は BETTER_AUTH_ADDITIONAL_ORIGINS を使います。
  • ホスト名を変更する場合は、新しい Origin を設定して再起動してからトラフィックを切り替えます。

任意

変数既定値再起動役割
BETTER_AUTH_ADDITIONAL_ORIGINS空要カンマ区切りの追加信頼 Origin。複数アドレスを同時に信頼する唯一のスイッチです。
IMAGE_REGISTRYdocker.io要Postgres と SeaweedFS を社内ミラーから取得する。
SYSTEM_ADMIN_EMAILadmin@example.com要どのアカウントにシステム管理コンソールを与えるか。
EMAIL_VERIFICATION_REQUIREDfalse(セルフホスト)要メール配信が利用可能な場合だけ true にします。配信に失敗した場合は false に戻して再起動すると、元の管理者がログインできます。
EMAIL_PROVIDERresend要メールプロバイダー:resend、postmark、sendgrid、または ses。
プロバイダー認証情報空要対応する RESEND_API_KEY、POSTMARK_SERVER_TOKEN、SENDGRID_API_KEY、または AWS 認証情報を設定。
EMAIL_FROM / EMAIL_LOGO_URL製品既定値要認証メールの送信者と任意の絶対 Logo URL。
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET空要両方がある場合だけ GitHub provider とログインボタンを有効化。
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET空要両方がある場合だけ Google provider とログインボタンを有効化。
SEAWEEDFS_VOLUME_LIMIT_MB1024要SeaweedFS が新しいボリュームファイルに切り替える閾値。添付が多いなら上げます。

こちらで設定済みのもの

以下は Compose ファイルまたはイメージが注入します。通常は設定不要ですが、存在を知っておくと不可解に見える挙動の説明がつきます。

変数値理由
BUSABASE_EDITIONself-hosted課金・waitlist・公開マーケティングページを取り除きます。起動時に一度だけ読まれ、管理画面から切り替えられるフラグには意図的にしていません(戻せば課金導線が再露出するため)。
PG_DATABASE_URLPOSTGRES_* から組み立て外部データベースを使うならここを変更。
STORAGE_URLS3_* から組み立て変数群ではなく URL 1 本。minio:// は「S3、path-style、TLS なし」の意味で、ベンダー名ではありません。
REDIS_URLlmdb:///data/cache組み込み LMDB キャッシュ + プロセス内 pub/sub。単一レプリカの規模で別途 Redis を立てる利点はなく、Redis 7.4+ は RSALv2/SSPL でお客様に転嫁したくない再配布上の制約を伴います。

上記はすべて反映に再起動が必要です。実行時リロードはありません: 値は起動時に読まれるため、稼働中インスタンスの設定は .env だけから再現できます。

設定するものではなく生成されるもの

オールインワンイメージは初回起動時に Postgres のパスワード、オブジェクトストレージのキー、セッション署名鍵を自分で生成し、/data/.credentials(パーミッション 600)に書き出します。イメージには含まれないので、同じイメージを pull した 2 人がシークレットを共有することはありません。

そのファイルはバックアップしてください。唯一のコピーです。

On this page