# マネージドアドオン:Postgresとredis

Source: https://support.kapsulehost.com/ja-jp/site-addons

Addonsタブを使うと、サイト用にサーバーを構築したり保守したりすることなく、管理されたPostgreSQLデータベースや管理されたRedisインスタンスをサイトに接続できます。KapsuleHostがプロビジョニングを行い、接続文字列を提供し、削除時にはきれいに後片付けをします。

## アドオンの場所

**ウェブサイト**を開き、サイトをクリックし、サイトの左メニューにある**アプリ**グループを開いて、**アドオン**を選びます。ページのタイトルは**管理アドオン**です。

カタログには2つの選択肢があります。

| アドオン | 主な用途 |
|---|---|
| PostgreSQL | MySQLではないアプリケーションの主要なデータストア |
| Redis | キャッシュ、セッションストレージ、バックグラウンドジョブキュー |

これらは、標準的なホスティングサイトに付属するMySQLデータベースとは別物です。そちらは**データベース**タブにあり、プロビジョニングは不要です。詳しくは[SSHトンネル経由でデータベースに接続する](https://support.kapsulehost.com/ja-jp/database-ssh-tunnel)をご覧ください。

![KPanel内のサイト用の管理アドオンページ](https://support.kapsulehost.com/help/screenshots/site-addons.3f3b5ee3.webp)

## アドオンのリクエスト

1. **管理データベースを追加**セクションでアドオンを見つけます。
2. **サイトに追加**をクリックします。

リクエストは即座に記録され、アドオンは**アドオン**に**PENDING**バッジと「*プロビジョナーを待機中*」というメモとともに表示されます。ページは15秒ごとに自動更新されるため、開いたままにしておけます。

バックグラウンドジョブが数分ごとに保留中のリクエストを処理し、サイト専用のデータベースとユーザーを作成し、暗号化された接続文字列を書き戻します。その後、ステータスは**ACTIVE**に変わります。

> **Note:** アドオンのリクエストや削除には**sites:write**権限が必要です。読み取り専用のチームメンバーは、どのアドオンが存在し、そのステータスが何かを確認できますが、ボタンは非表示になります。

### サイトごとに各1つまで

1つのサイトには、PostgreSQLアドオン1つとRedisアドオン1つを持つことができます。同じ種類をもう1つリクエストすると、すでにプロビジョニング済みであるというメッセージとともに拒否され、インストール済みのオプションはカタログから非表示になります。両方インストールされると、カタログセクションには**利用可能なアドオンはすべてインストール済みです**と表示されます。

## ステータスの読み方

| ステータス | 意味 |
|---|---|
| PENDING | リクエスト済み、プロビジョナーの処理待ち |
| PROVISIONING | 現在作成中 |
| ACTIVE | 使用準備完了 |
| FAILED | プロビジョニングが完了しなかった。理由は行に表示される |
| DELETED | 削除済み、もう一覧に表示されない |

**FAILED**の行には、一般的なメッセージではなく、実際のエラー内容が下に表示されます。対処できない理由であれば、サポートチケットにそのまま引用してください。詳しくは[サポートチケットの開き方](https://support.kapsulehost.com/ja-jp/opening-a-support-ticket)をご覧ください。

## 接続文字列の取得

アドオンが**ACTIVE**になると、その行にはパスワード部分がドットに置き換えられたマスク済みの接続文字列が表示され、認証情報を露出させることなく、ホスト名とデータベース名をひと目で確認できます。

**接続文字列をコピー**をクリックすると、完全な接続文字列がクリップボードにコピーされます。これはそのリクエスト1回限りでサーバー側で復号され、ページ上に表示されることはないため、画面共有やスクリーンショットから漏れる心配はありません。表示のたびにサイトの監査ログに記録され、[サイトアクティビティログ](https://support.kapsulehost.com/ja-jp/site-activity-log)に表示されます。

この文字列は各エンジンの一般的なURL形式で、このサイト用に作成されたホスト名、ポート、ユーザー名、パスワード、データベース名が含まれています。

## アプリケーションでの利用

接続文字列を、アプリケーションが設定を読み込む場所に貼り付けます。Node.jsサイトの場合、適した置き場所は[Secrets](https://support.kapsulehost.com/ja-jp/site-secrets)タブで、**production**環境内の`DATABASE_URL`や`REDIS_URL`といったキーの下です。

> **Warning:** コミットするファイルに接続文字列をハードコーディングしないでください。実際に使えるパスワードが含まれています。これがgitのリモートに届いてしまった場合は漏洩したものとして扱う必要があり、唯一の確実な対処法はアドオンを削除して新規に作り直すことです。パネルから認証情報をその場でローテーションすることはできないためです。

## アドオンの削除

行の**Delete**をクリックします。KPanelは確認を求め、何が起きるかを率直に示します。これにより管理データベースが削除され、データは復元できません。

行は即座に削除済みとしてマークされ、プロビジョナーが次回の処理で実際のデータベースとユーザーを削除します。既存の接続も、この削除処理の一環として切断されます。

> **Important:** 管理アドオンは削除時にバックアップが取られることはなく、取り消しもできません。残しておきたいデータがある場合は、アドオンがまだアクティブで接続文字列が使えるうちに、`pg_dump`または`redis-cli --rdb`を使って先にダンプを取ってください。

## 選択肢の使い分け

アプリケーションがリレーショナルデータベースを必要とし、Postgres向けに書かれている場合は**PostgreSQLを使用**してください。強力な制約、トランザクション、JSON列、そして本来なら別途追加する必要がある全文検索などが利用できます。

消えてしまっても構わないもの、すなわちキャッシュされた断片、レート制限カウンター、セッションストレージ、ジョブキューには**Redisを使用**してください。高速だが揮発性があるものとして扱い、記録の正本としては扱わないでください。

WordPressや、すでにMySQL向けに書かれているものには**組み込みのMySQLデータベースを使用**してください。WordPressサイトにPostgresアドオンを追加しても意味がありません。WordPressはそれと通信できないためです。

## トラブルシューティング

**アドオンが長時間PENDINGのままです。** プロビジョナーは即時ではなくスケジュールに従って実行されます。ページは自動更新されるので開いたままにしておき、後で確認してください。数回の処理を経ても変化がない場合は、サイトのドメインとアドオンの種類を添えてサポートチケットを開いてください。

**プロビジョニングがFAILEDになりました。** 行に表示されたエラーを確認してください。失敗したアドオンを削除して再度リクエストすれば安全です。失敗した行の背後に実際のデータベースが存在していたことはありません。

**接続文字列をコピーしても何も起きません。** 一部のブラウザでは、タブがフォーカスされていないとクリップボードへの書き込みをブロックします。まずページをクリックしてから、もう一度ボタンをクリックしてください。

**アプリケーションが接続できません。** 次の3点を順番に確認してください。アドオンのステータスが**ACTIVE**であること、文字列を手入力ではなくコピーしたものを使っていること、アプリケーションが以前のデプロイの古い値ではなく、実際に設定した値を読み込んでいること。新しい設定が反映されるには、通常は再起動が必要です。

**再デプロイ後に接続が拒否されます。** 設定ファイル内の接続文字列が、このページに表示されているものと一致しているか確認してください。アドオンを削除して再リクエストすると、新しいユーザーと新しいパスワードが作成されるため、古い文字列は機能しなくなります。

## 次に読むべき内容

- [サイト用アプリシークレットの保存](https://support.kapsulehost.com/ja-jp/site-secrets)、接続文字列を保管する適切な場所です。
- 組み込みのMySQLデータベース用の[SSHトンネル経由でデータベースに接続する](https://support.kapsulehost.com/ja-jp/database-ssh-tunnel)。
- サイトレベルのその他の設定については[サイト設定](https://support.kapsulehost.com/ja-jp/site-settings)をご覧ください。
