serverpod-configuration について
Dart、環境変数、YAML ファイルを使う Serverpod プロジェクトの設定リファレンススキルです。実行モード、API やデータベース、シークレット、ジェネレーター、TLS の設定を説明します。
主な機能
- 01設定元の優先順位
- 02実行モード別の YAML 設定
- 03PostgreSQL と SQLite の設定
- 04パスワードと環境変数の管理
- 05ジェネレーターと TLS の設定
活用シーン
- 01開発・ステージング・本番環境の設定
- 02組み込みまたは外部データベースの構成
- 03環境変数によるシークレット管理
- 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、またはinternalclient_package_path:クライアントパッケージへのパスmodules:モジュール名と任意のnicknameのマップserver_test_tools_path:テストツールの出力先(無効にするには削除)extraClasses:カスタムのシリアライズ可能なクラス URIfeatures:例: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(...) に渡します。
参照ファイル
references/environment-variables.md—SERVERPOD_*環境変数の全一覧です。references/flutter-apps.md—serverpod startで起動できる Flutter アプリの宣言方法です。