mcpField
S
serverpod-configuration

serverpod-configuration

github.com/serverpod開発3.3k46 回インストール1 日前に更新
リポジトリ

serverpod-configuration について

Dart、環境変数、YAML ファイルを使う Serverpod プロジェクトの設定リファレンススキルです。実行モード、API やデータベース、シークレット、ジェネレーター、TLS の設定を説明します。

主な機能

  1. 01設定元の優先順位
  2. 02実行モード別の YAML 設定
  3. 03PostgreSQL と SQLite の設定
  4. 04パスワードと環境変数の管理
  5. 05ジェネレーターと TLS の設定

活用シーン

  1. 01開発・ステージング・本番環境の設定
  2. 02組み込みまたは外部データベースの構成
  3. 03環境変数によるシークレット管理
  4. 04ジェネレーターや TLS の調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/serverpod/serverpod --skill serverpod-configuration

インストール後、Claude Code で/serverpod-configurationを入力して読み込まれたか確認します。

同梱ファイルreferences/environment-variables.mdreferences/flutter-apps.md

詳細

Serverpod の設定

優先順位(高い順):Dart 設定オブジェクト > 環境変数 > YAML 設定ファイル。設定には config/ にある YAML ファイルを使用します。シークレットは config/passwords.yaml または SERVERPOD_PASSWORD_ 接頭辞の環境変数に設定します。

実行モード

モード別の設定ファイル:config/development.yaml、config/staging.yaml、config/production.yaml、config/test.yaml。サーバーの起動時に --mode を指定するか、SERVERPOD_RUN_MODE で設定します(デフォルト:development)。

API サーバー(最小構成)

apiServer:
  port: 8080
  publicHost: localhost
  publicPort: 8080
  publicScheme: http

port はリスナーがバインドするポートです。publicHost/publicPort/publicScheme はクライアントに返す URL に使用されます。publicPort が 0 の場合は、バインドされたポートが使われます。

開発環境では、Serverpod ランナーは設定されたポートを維持します。ただし、マシン上で別のランナーがそのポートを使用している場合は、エフェメラルポートにバインドします(SERVERPOD_API_SERVER_PORT とその関連変数、および SERVERPOD_DATABASE_PORT を通じて設定します。API、Insights、Web リスナーの _PUBLIC_PORT 変数には同じ値が設定されるため、クライアントに返される URL にはバインドされたポートが使用されます)。実際のアドレスは serverpod runner status に表示されます。概要スキルの複数のサーバーを同時に実行するを参照してください。

データベース

データベースには PostgreSQL または SQLite を使用できます。

PostgreSQL
database:
  host: localhost
  port: 8090
  name: my_project
  user: postgres
  dataPath: .serverpod/development/pgdata  # embedded database, see below

パスワードは、実行モードの passwords.yaml または SERVERPOD_PASSWORD_database に設定します。オプション:searchPaths、maxConnectionCount、requireSsl、isUnixSocket。

組み込み PostgreSQL: dataPath を設定すると、Serverpod はそのディレクトリで PostgreSQL インスタンスを起動して管理するため、別途インストールや起動をする必要はありません。新しいプロジェクトでは、開発とテストにこれを使用します。Unix ソケットに加えて、実行モードにデータベースパスワードが設定されている場合は、port のループバック TCP でも接続を受け付けます。開発環境では、別の Serverpod ランナーがそのポートを使用している場合、ランナーはサーバーのポートとともにそのポートを別のポートに移すため、複数のチェックアウトをそれぞれ同時に実行できます。serverpod database start [--mode <mode>] [--port <port>] を実行すると、サーバーを起動せずに同じデータベースを起動するか、サーバーがすでに起動しているデータベースに接続します。

dataPath を設定しない場合、データベースは外部にあります。プロジェクトに Compose ファイルがあり、PostgreSQL が localhost 上にある場合、ランナー(serverpod start)は Docker Compose サービスを起動します(--docker/--no-docker でこの動作を上書きできます)。

SQLite
database:
  filePath: my_project.sqlite

SQLite ではパスワードは不要です。

Redis

redis.enabled、redis.host、redis.port を設定します。パスワードは SERVERPOD_PASSWORD_redis で設定します。

シークレット(passwords.yaml)

構成:shared:(すべてのモードで共通)と、モード別の設定(development:、production: など)。組み込みキー:database、redis、serviceSecret。カスタムキーは session.passwords['key'] または pod.getPassword('key') で使用できます。

組み込みパスワードには、専用の環境変数もあります:SERVERPOD_DATABASE_PASSWORD、SERVERPOD_REDIS_PASSWORD、SERVERPOD_SERVICE_SECRET。組み込みかカスタムかを問わず、任意のパスワードを SERVERPOD_PASSWORD_ 接頭辞を使って設定することもできます。

export SERVERPOD_PASSWORD_stripeApiKey=sk_live_...  # → session.passwords['stripeApiKey']

実際のシークレットは決してコミットせず、本番環境では環境変数を使用してください。

generator.yaml

config/generator.yaml で設定します:

  • type:server(デフォルト)、module、または internal
  • client_package_path:クライアントパッケージへのパス
  • modules:モジュール名と任意の nickname のマップ
  • server_test_tools_path:テストツールの出力先(無効にするには削除)
  • extraClasses:カスタムのシリアライズ可能なクラス URI
  • features:例:database: true/false

Dart 設定の上書き

Serverpod(...) に config: ServerpodConfig(...) を渡すと、ファイルや環境変数の読み込みをスキップして Dart 設定オブジェクトを使用します。CLI フラグは引き続き統合されます。

テストでは、configOverride: (config) => config.copyWith(...) を使用して、YAML/環境変数/CLI の処理後に読み込まれた設定を調整できます。

TLS/SSL

証明書チェーンと秘密鍵を読み込む SecurityContext を指定した SecurityContextConfig を Serverpod(...) に渡します。apiServer、webServer、および/または insightsServer に設定します。クライアントでは、信頼された証明書を含む SecurityContext を Client(...) に渡します。

参照ファイル

コメント