セルフホストのインストールでは、Ephemeral のエンジンと実行ダッシュボードを管理下のホストで動かし、ワーカーはお使いの AWS アカウントの microVM で、モデルは独自のプロバイダーで実行します。提供されるのは 1 つの Docker イメージとそのドキュメントで、必要なそれ以外のファイルはすべてイメージからエクスポートできます。Ephemeral が発行するデプロイメントのライセンスが必要です。
運用する構成要素
| 構成要素 | 場所 |
|---|---|
| エンジン API と実行ダッシュボード | ホスト上の ephemer.al/ephemeral/self-hosted のコンテナ app |
| PostgreSQL | 同じホスト上のコンテナ。アプリケーションからのみ到達可能 |
| Caddy | ポート 80 と 443 で HTTPS を提供し、/v1 をエンジンにルーティング |
| ワーカー | お使いの AWS アカウントの AWS Lambda microVM。実行ごとに 1 つで、インターネットにはアクセスできません |
| モデル呼び出し | OpenAI 互換の推論エンドポイント |
| ライセンスの検証 | https://ephemer.al。起動時と、実行の開始時に行われます |
カスタマー向け Web サイト、アカウント、請求は、セルフホストのインストールには含まれません。ソースコードも含まれません。ダッシュボードには、エンジンの API キーでログインします。
イメージには、運用担当者向けの完全なガイドが含まれています。以下の手順はその要約です。正確なコマンド、期待される出力、アップグレード、バックアップ、トラブルシューティングについては、ガイドを参照してください。
docker run --rm ephemer.al/ephemeral/self-hosted:VERSION setup docs > SELF-HOSTING.md始める前に
- Docker Compose 2.24 以降の Docker と、Session Manager プラグインを含む AWS CLI v2。
- Lambda microVM が使えるリージョンの AWS アカウントと、IAM ロールを含む CloudFormation スタックを作成する権限。
- ホストに向けられるドメイン名。
- OpenAI 互換の推論エンドポイントと API キー。
- 組織の利用権 (entitlement)。契約を結んだ後に、Ephemeral が付与します。デプロイメントのライセンスをご覧ください。
インストール
インストールを登録する
カスタマーポータルのデプロイメントを開き、
production-euのような名前で、このインストールを登録します。マシン ID とライセンストークンは Ephemeral が作成します。ライセンスファイルをダウンロードを選んで、トークン、マシン ID、デプロイメント ID を保管してください。トークンは 1 度だけ表示されます。イメージをプルする
デプロイメント ID をユーザー名、ライセンストークンをパスワードとしてレジストリにログインし、リリースをプルします。バージョンの先頭に v は付けません。
export EPHEMERAL_VERSION=0.1.0 read -rs LICENSE_TOKEN printf '%s' "$LICENSE_TOKEN" | docker login ephemer.al -u dep_YOUR_DEPLOYMENT_ID --password-stdin docker pull ephemer.al/ephemeral/self-hosted:$EPHEMERAL_VERSIONインストール用のファイルをエクスポートする
mkdir -p ephemeral && cd ephemeral docker run --rm --user "$(id -u):$(id -g)" -v "$PWD:/out" \ ephemer.al/ephemeral/self-hosted:$EPHEMERAL_VERSION setup all /outファイル 用途 compose.yaml PostgreSQL、アプリケーション、Caddy。このリリースに固定されています compose.evaluation. yaml AWS を使わず、1 台のコンピューターで試すためのオーバーライド Caddyfileインバウンドのルート .env 新しく生成されたシークレットを含む設定。以降のエクスポートで上書きされることはありません ephemeral-aws.yaml AWS リソース用の CloudFormation テンプレート ephemeral-worker-VERSION.zip コンパイル済みのワーカー。AWS が microVM イメージにビルドします SELF-HOSTING.md 運用担当者向けガイド AWS のリソースを作成する
ワーカーの ZIP をお使いのアカウントの非公開 S3 バケットにアップロードしてから、スタックを作成します。スタックは、分離されたワーカー用サブネットを持つ VPC、DNS ファイアウォール、microVM イメージとネットワークコネクタ、暗号化されたストレージバケット、ホスト用の最小権限の IAM ロールを作成し、デフォルトでは、Elastic IP と暗号化されたデータボリュームを持つ
t4g.smallの Amazon Linux ホストも作成します。ワーカーイメージのビルドには 15 分から 30 分かかり、スタックは課金対象のリソースを作成します。aws s3 cp "ephemeral-worker-$EPHEMERAL_VERSION.zip" "s3://YOUR_ARTIFACT_BUCKET/" aws cloudformation create-stack --stack-name ephemeral \ --template-body file://ephemeral-aws.yaml --capabilities CAPABILITY_IAM \ --parameters ParameterKey=Domain,ParameterValue=ephemeral.example.com \ ParameterKey=WorkerArtifactBucket,ParameterValue=YOUR_ARTIFACT_BUCKET \ ParameterKey=WorkerArtifactKey,ParameterValue="ephemeral-worker-$EPHEMERAL_VERSION.zip" \ ParameterKey=HostImageId,ParameterValue=AL2023_ARM64_AMI aws cloudformation wait stack-create-complete --stack-name ephemeral aws cloudformation describe-stacks --stack-name ephemeral \ --query "Stacks[0].Outputs[?OutputKey=='EngineEnvironment'].OutputValue" --output text | tr ' ' '\n'最後のコマンドは、エンジン用の AWS 設定を出力します。ドメインの DNS の A レコードを、スタックの出力
HostPublicIpに向けてください。ホストを設定する
aws ssm start-session --targetとスタックの出力HostInstanceIdで接続し、/srv/ephemeral/installで、レジストリへのログインとエクスポートをもう一度行います。.envの次の項目を編集します。設定 値 EPHEMERAL_DOMAIN ホスト名。ephemeral.example.com など EPHEMERAL_LICENSE_ TOKEN 手順 1 のトークン EPHEMERAL_MACHINE_ ID 手順 1 のマシン ID。登録したとおりに指定 INFERENCE_BASE_ URL OpenAI 互換のエンドポイント INFERENCE_API_ KEY その API キー EPHEMERAL_DEFAULT_ MODEL 実行がモデルを指定しなかった場合に使うモデル AWS の設定 スタックが出力した 5 行: AWS_REGION、EPHEMERAL_S3_BUCKET、3 つのEPHEMERAL_MICROVM_…の値エクスポート時に、暗号化のマスターキー、ブートストラップ用の管理者キー、データベースのパスワードが生成されています。
.envのコピーを、シークレットマネージャーに保管してください。マスターキーがないと、保存されている認証情報と実行のペイロードを読み取れません。AWS の認証情報は、ホストのインスタンスプロファイルから提供されます。インストールを起動する
Caddy が HTTPS の証明書を取得します。PostgreSQL と内部 API は公開されません。
docker compose pull docker compose up -dエンジンは起動時にライセンスを検証し、無効な場合や、設定された同時実行数がライセンスの上限を超えている場合は起動しません。
最初の組織を作成する
新しいインストールには、API キーがありません。インストール用ディレクトリで、次のコマンドを 1 度だけ実行してください。
my-organizationは、任意の組織 ID に置き換えます。ブートストラップ用のキーはコンテナ内で読み込まれるため、キーがシェルの履歴に残りません。docker compose exec -T app node --input-type=module - <<'NODE' if (process.env.EPHEMERAL_MODE !== 'self-hosted') { throw new Error('Bootstrap requires EPHEMERAL_MODE=self-hosted'); } const adminKey = process.env.EPHEMERAL_ADMIN_KEY; if (!adminKey) throw new Error('EPHEMERAL_ADMIN_KEY is not configured'); const response = await fetch('http://127.0.0.1:8080/admin/organizations', { method: 'POST', headers: { Authorization: `Bearer ${adminKey}`, 'Content-Type': 'application/json', }, body: JSON.stringify({id: 'my-organization'}), }); const result = await response.json(); if (!response.ok) throw new Error(result.error || `Bootstrap failed (${response.status})`); console.log(JSON.stringify(result, null, 2)); NODEレスポンスには、組織の
id、新しいオーナーキーのkey_idとrole、そしてeph_で始まるkey自体が含まれます。キーはこの時点で保管してください。後から取得することはできません。有効なキーがある組織に対してコマンドをもう一度実行すると、409が返されます。ログインする
HTTPS のアドレスを開き、Engine API key にキーを入力します。メンバーキーと管理者キーは、API キーで追加作成できます。設定ファイルのブートストラップ用の管理者キーは、組織の作成にのみ使え、ログインや API の呼び出しはできません。
1 台のコンピューターで試す
AWS を使わない場合は、評価用のオーバーライドを追加します。エージェントは、ローカルランナーを使ってアプリケーションコンテナの中で実行され、ダッシュボードは http://localhost:8000 の平文の HTTP でのみ提供されます。ライセンスは引き続き必要です。そのために、別のデプロイメントを登録してください。
docker compose -f compose.yaml -f compose.evaluation.yaml up -dホスト型サービスとの違い
| セルフホストでの動作 | |
|---|---|
| 請求 | ウォレットはなく、Ephemeral からの課金もありません。max_cost_micros は検証されますが、モデルの支出を制限しないため、上限はプロバイダー側で設定してください。 |
| モデル | 実行では、エンドポイントが受け付ける任意のモデル ID を指定できます。カタログに一覧されるのはデフォルトのモデルだけです。 |
| API キー | キーは eph_ で始まります。管理者キーは、/v1/keys とダッシュボードでキーを管理します。 |
| アカウント | ユーザーアカウント、メンバー、招待はありません。アクセスは API キーで行います。 |
| 同時実行 | デフォルトでは 2 件ずつ実行されます。EPHEMERAL_CONCURRENCY で、ライセンスの範囲内で 1 から 32 に設定できます。 |
| 保持期間 | 終了した実行は 30 日間保持されます。変更するには、EPHEMERAL_RETENTION_DAYS を設定します。 |
| ゼロデータ保持 | zero_data_retention の実行は、イベントと未読の出力を、ログされないテーブルにのみ保持し、実行の数分後に削除します。バックアップでは必ず pg_dump --no-unlogged-table-data を使用してください。ホストの毎日のバックアップはこれを使用しています。EPHEMERAL_ZDR_EVENT_WINDOW_SECONDS(デフォルト 300)と EPHEMERAL_ZDR_OUTPUT_WINDOW_SECONDS(デフォルト 3600)で、保持できる時間を設定します。 |
アップデートとバックアップ
アップグレードするには、新しいリリースのワーカー ZIP をアップロードし、そのキーを指定してスタックを更新します。その後、ホスト上で新しいリリースのファイルをエクスポートし、.env の EPHEMERAL_VERSION と新しい EPHEMERAL_MICROVM_IMAGE_VERSION を設定して、docker compose up -d を実行します。実行中の実行が終了するまで、最大 5 分間待機します。その後も実行中の実行は interrupted としてマークされ、再試行はされないため、外部での操作が繰り返されることはありません。データベースのマイグレーションは自動的に実行されます。
データベースと暗号化のマスターキーの両方をバックアップしてください。マスターキーを失うと、保存されている接続の認証情報と実行のペイロードが読み取れなくなります。スタックが作成したホストは、毎日データベースをその S3 バケットにバックアップします。