設定リファレンス
セルフホスト構成が読むすべての環境変数 — 何をするか、間違えるとどうなるか、変更に再起動が要るか。
オールインワンイメージは初回起動時にほとんどの認証情報を生成し、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_URL | http://localhost:3000 | 必須(init.sh が質問) | 要 | ユーザーが実際に入力するアドレス(スキームとポートを含む)。ログイン Origin 検証の基準にもなります。 |
APP_PORT | 3000 | 3000 | 要 | 公開するホスト側ポート。 |
POSTGRES_USER | busabase | busabase | 要 | データベースユーザー。 |
POSTGRES_PASSWORD | 初回起動時に生成 | 必須(init.sh が生成) | 要 | データベースパスワード。考えるのではなく生成してください。 |
POSTGRES_DB | busabase | busabase | 要 | データベース名。 |
S3_ACCESS_KEY | busabase | busabase | 要 | オブジェクトストレージのキー。seaweed-s3.json と一致必須。 |
S3_SECRET_KEY | 初回起動時に生成 | 必須(init.sh が生成) | 要 | オブジェクトストレージのシークレット。seaweed-s3.json と一致必須。 |
S3_BUCKET | busabase | busabase | 要 | バケット名。自動作成されます。 |
BETTER_AUTH_SECRET | 初回起動時に生成 | 必須(init.sh が生成) | 要 | セッション cookie の署名鍵。漏れると誰でもログイン状態を偽造できます。 |
Origin とリバースプロキシ
ログインエンドポイントはリクエストの Origin ヘッダー(スキーム + ホスト + ポートが完全一致)を信頼リストと照合します。信頼元は次のとおりです:
APP_URL/BETTER_AUTH_BASE_URL/NEXT_PUBLIC_APP_URLBETTER_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_REGISTRY | docker.io | 要 | Postgres と SeaweedFS を社内ミラーから取得する。 |
SYSTEM_ADMIN_EMAIL | admin@example.com | 要 | どのアカウントにシステム管理コンソールを与えるか。 |
EMAIL_VERIFICATION_REQUIRED | false(セルフホスト) | 要 | メール配信が利用可能な場合だけ true にします。配信に失敗した場合は false に戻して再起動すると、元の管理者がログインできます。 |
EMAIL_PROVIDER | resend | 要 | メールプロバイダー: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_MB | 1024 | 要 | SeaweedFS が新しいボリュームファイルに切り替える閾値。添付が多いなら上げます。 |
こちらで設定済みのもの
以下は Compose ファイルまたはイメージが注入します。通常は設定不要ですが、存在を知っておくと不可解に見える挙動の説明がつきます。
| 変数 | 値 | 理由 |
|---|---|---|
BUSABASE_EDITION | self-hosted | 課金・waitlist・公開マーケティングページを取り除きます。起動時に一度だけ読まれ、管理画面から切り替えられるフラグには意図的にしていません(戻せば課金導線が再露出するため)。 |
PG_DATABASE_URL | POSTGRES_* から組み立て | 外部データベースを使うならここを変更。 |
STORAGE_URL | S3_* から組み立て | 変数群ではなく URL 1 本。minio:// は「S3、path-style、TLS なし」の意味で、ベンダー名ではありません。 |
REDIS_URL | lmdb:///data/cache | 組み込み LMDB キャッシュ + プロセス内 pub/sub。単一レプリカの規模で別途 Redis を立てる利点はなく、Redis 7.4+ は RSALv2/SSPL でお客様に転嫁したくない再配布上の制約を伴います。 |
上記はすべて反映に再起動が必要です。実行時リロードはありません: 値は起動時に読まれるため、稼働中インスタンスの設定は .env だけから再現できます。
設定するものではなく生成されるもの
オールインワンイメージは初回起動時に Postgres のパスワード、オブジェクトストレージのキー、セッション署名鍵を自分で生成し、/data/.credentials(パーミッション 600)に書き出します。イメージには含まれないので、同じイメージを pull した 2 人がシークレットを共有することはありません。
そのファイルはバックアップしてください。唯一のコピーです。