# インスタンスを設定する インスタンスに関するすべての設定は、[インストール](https://getkollek.com/ja/docs/serufu-hosutingu/docker-de-insutoru)の際に作成した`.env`ファイルを通じて行います。このページでは、テンプレートに含まれるすべての変数を羅列するのではなく、運用者が実際に触れる設定を、その役割ごとにまとめて説明します。 `.env`を変更したら、コンテナを再作成して反映させます。 ```bash docker compose up -d ``` ## 名前とURL - `APP_NAME`は、インターフェースやメールに表示される名前です。デフォルトは`Kollek`です。 - `APP_URL`は、インスタンスの公開アドレスです。メール内のリンクはこの値から生成されるため、ユーザーが実際に使うアドレスに設定する必要があります。 - `APP_PORT`は、webコンテナが公開するホスト側のポートで、デフォルトは`8000`です。 ## アプリケーションキー `APP_KEY`は、保存されている機密データを暗号化します。インストール時に一度だけ設定し、軽い気持ちで変更してはいけません。これは[専用のページ](https://getkollek.com/ja/docs/serufu-hosutingu/apurikeshon-ki-to-angoka)を設けるほど重要な項目で、そのページでは`APP_PREVIOUS_KEYS`によるローテーションの仕組みについても説明しています。 ## データベース `DB_DATABASE`、`DB_USERNAME`、`DB_PASSWORD`、`DB_ROOT_PASSWORD`は、同梱のMySQLコンテナを設定します。初回起動前に、両方のパスワードをプレースホルダーの値から変更してください。`RUN_MIGRATIONS`は、webコンテナが起動時にマイグレーションを実行するかどうかを制御します(デフォルトは`true`)。 ## メール `MAIL_MAILER`は、インスタンスからメールをどう送信するかを決めるもので、デフォルトは`log`です。 :::note デフォルトの`log`メーラーでは、メールは一切送信されません。招待、マジックリンク、パスワードリセット、セキュリティ通知は、代わりにアプリケーションログに書き込まれます。実際のメーラーを設定することは、ほぼすべてのインスタンスで必要になる、唯一と言ってよい設定作業です。[メール配信を設定する](https://getkollek.com/ja/docs/serufu-hosutingu/meru-haishin-no-settei)を参照してください。 ::: ## ファイルストレージ `FILESYSTEM_DISK`のデフォルトは`local`で、アップロードされた写真や書類は`storage-data`ボリュームに保存されます。代わりにS3互換のオブジェクトストレージを使うには、`s3`に設定し、`AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`AWS_DEFAULT_REGION`、`AWS_BUCKET`、そしてAWS以外のプロバイダーの場合は`AWS_ENDPOINT`の各変数を設定します。どちらの場合も、ファイルは公開URLとしてではなく、アカウントによる確認を伴う非公開のルートを通じてユーザーに提供されます。 ## 日常のメンテナンス設定 - `TRASH_RETENTION_DAYS`は、ソフトデリートされたオブジェクトが[ゴミ箱](https://getkollek.com/ja/docs/deta-no-anzensei/gomibako-kara-fukugen)に残り、夜間の完全削除処理で消されるまでの日数です。デフォルトは30日です。 - `ACCOUNT_DELETION_NOTIFICATION_EMAIL`は、ユーザーが自分自身のユーザーを削除したとき、または[非アクティブユーザーの整理](https://getkollek.com/ja/docs/deta-no-anzensei/hiakutibu-yuza-jido-sakujo)によって削除されたときに通知するアドレスです。離脱に気づけるよう、自分自身のアドレスを設定しておきましょう。 ## 公開マーケティングサイト `SHOW_MARKETING_SITE`のデフォルトは`false`で、インスタンスはアプリケーション本体のみを提供します。`true`に設定すると、公開マーケティングページと、`/docs/api`で生成されるAPIリファレンスも提供されます。ほとんどの非公開インスタンスではオフのままにしますが、開発者がAPIリファレンスをローカルで見られるようにしたい場合はオンにしてください。 これらのページはどの訪問者にも同じ内容で、再デプロイしたときにしか変わりません。そのため各ページはキャッシュヘッダー付きで送られます。ブラウザは5分間、インスタンスの前段にあるCDNは1週間そのページを保持します。送信をやめるには`CACHE_PUBLIC_PAGES`を`false`にしてください。いずれの場合も、インスタンス自体には何もキャッシュされません。 Cloudflare経由でサイトを配信している場合は、`CLOUDFLARE_API_TOKEN`と`CLOUDFLARE_ZONE_ID`も設定してください。公開サイトが表示する内容が変わったときに、インスタンス自身から、あるいは[パネル](https://getkollek.com/ja/docs/serufu-hosutingu/insutansu-kanri-paneru)から、保持しているものを破棄するようCloudflareへ伝えられるようになります。直接配信しているインスタンスでは空のままにしてください。前段に消すものがありません。 どちらの設定でも、インスタンスはディスク上のファイルを返すのではなく、`/robots.txt` を自分で応答します。公開サイトが有効なときは、クローラーを `/sitemap.xml` に案内します。これは公開されているすべてのページを、提供されている言語ごとに並べたものです。公開サイトが無効なときは、すべてのクローラーにホスト全体へ立ち入らないよう伝えます。プライベートなインスタンスには、索引に値するものが何もないからです。 ## スパム対策 ボットが登録フォームを送信するのを止めるものは何もなく、誰でも到達できるインスタンスでは遅かれ早かれそうなります。`TURNSTILE_ENABLED`を有効にすると、ログイン、登録、パスワード再設定の各フォームにCloudflare Turnstileのウィジェットが表示され、それを解いていない送信はアプリケーションまで届かなくなります。 デフォルトは`false`です。ログインする人を全員把握している非公開インスタンスでは、それが正しい設定です。有効にするには、Cloudflareのアカウントでturnstileウィジェットを作成し、`TURNSTILE_ENABLED`を`true`に、`TURNSTILE_SITE_KEY`に発行された公開キーを、`TURNSTILE_SECRET_KEY`に秘密キーを設定してください。フラグだけでは何も守れません。両方のキーがなければ、どの訪問者も検証を通過できません。 :::note ウィジェットを有効にすると、インスタンスは送信のたびにCloudflareへ問い合わせます。そのため、誰かがログインするには`challenges.cloudflare.com`に到達できる必要があります。実行できなかった検証は、意図的に、失敗した検証として扱われます。外向きのインターネット接続が安定しないインスタンスでは、この設定はオフのままにしてください。 ::: ## 設定不要なもの セッション(`SESSION_DRIVER`)、キャッシュ(`CACHE_STORE`)、キュー(`QUEUE_CONNECTION`)は、すべて標準で`database`に保存されます。提供されているスタックにはこのデフォルトで問題なく、Redisなどの追加サービスを加える必要もありません。変更する理由を正確に把握していない限り、これらはそのままにしておいてください。 ## 次に読むべきもの - [メール配信を設定する](https://getkollek.com/ja/docs/serufu-hosutingu/meru-haishin-no-settei)で、実際にメールが届くようにしましょう。 - [アプリケーションキーと暗号化](https://getkollek.com/ja/docs/serufu-hosutingu/apurikeshon-ki-to-angoka)で、保護すべきキーについて理解しましょう。 - [バックアップ](https://getkollek.com/ja/docs/serufu-hosutingu/bakkuappu-to-fukugen)を用意しましょう。