templates について
Railway のテンプレートマーケットプレイスを検索し、設定済みサービスをプロジェクトにデプロイするスキルです。データベース、CMS、ストレージ、監視サービスなどの追加に使え、デプロイ後の変数による接続方法も扱います。
主な機能
- 01名前や用途でテンプレートを検索
- 02コードでテンプレート詳細を取得
- 03設定済みサービスをプロジェクトにデプロイ
- 04参照変数でサービスを接続
活用シーン
- 01プロジェクトに PostgreSQL や Redis を追加
- 02CMS テンプレートを検索してデプロイ
- 03デプロイ後にデータベース接続を設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ railwayapp/ railway-skills --skill templatesインストール後、Claude Code で/templatesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/environment-config.mdmonorepo.mdrailpack.mdvariables.mdscripts/railway-api.sh詳細
テンプレート
Railway のテンプレートマーケットプレイスからサービスを検索してデプロイします。
使用する場面
- 「Postgres を追加して」「Redis を追加して」「データベースを追加して」と依頼された場合
- 「Ghost を追加して」「Strapi を追加して」「n8n を追加して」など、ほかのサービスの追加を依頼された場合
- ユースケース(例:「CMS」「ストレージ」「モニタリング」)に合ったテンプレートを探したい場合
- 「どのようなテンプレートが利用できますか?」と尋ねられた場合
- 事前設定済みのサービスをデプロイしたい場合
よく使われるテンプレートコード
| カテゴリ | テンプレート | コード |
|---|---|---|
| データベース | PostgreSQL | postgres |
| Redis | redis | |
| MySQL | mysql | |
| MongoDB | mongodb | |
| CMS | Ghost | ghost |
| Strapi | strapi | |
| ストレージ | Minio | minio |
| 自動化 | n8n | n8n |
| モニタリング | Uptime Kuma | uptime-kuma |
ほかのテンプレートを探すには、以下の検索クエリを使用します。
前提条件
プロジェクトのコンテキストを取得します:
railway status --json
以下を抽出します:
id- プロジェクト IDenvironments.edges[0].node.id- 環境 ID
ワークスペース ID を取得します:
bash <<'SCRIPT'
scripts/railway-api.sh \
'query getWorkspace($projectId: String!) {
project(id: $projectId) { workspaceId }
}' \
'{"projectId": "PROJECT_ID"}'
SCRIPT
テンプレートを検索する
任意のフィルターを指定して、利用可能なテンプレートを一覧表示します:
bash <<'SCRIPT'
scripts/railway-api.sh \
'query templates($first: Int, $verified: Boolean) {
templates(first: $first, verified: $verified) {
edges {
node {
name
code
description
category
}
}
}
}' \
'{"first": 20, "verified": true}'
SCRIPT
引数
| 引数 | 型 | 説明 |
|---|---|---|
first | Int | 結果の数(最大約 100 件) |
verified | Boolean | 検証済みのテンプレートのみ |
recommended | Boolean | おすすめのテンプレートのみ |
レート制限
1 分あたり 10 件までです。検索を連続して実行しないでください。
テンプレートの詳細を取得する
コードを指定してテンプレートを取得します:
bash <<'SCRIPT'
scripts/railway-api.sh \
'query template($code: String!) {
template(code: $code) {
id
name
description
serializedConfig
}
}' \
'{"code": "postgres"}'
SCRIPT
以下が返されます:
id- テンプレート ID(デプロイに必要)serializedConfig- サービス設定(デプロイに必要)
テンプレートをデプロイする
ステップ 1:テンプレートを取得する
bash <<'SCRIPT'
scripts/railway-api.sh \
'query template($code: String!) {
template(code: $code) {
id
serializedConfig
}
}' \
'{"code": "postgres"}'
SCRIPT
ステップ 2:プロジェクトにデプロイする
bash <<'SCRIPT'
scripts/railway-api.sh \
'mutation deployTemplate($input: TemplateDeployV2Input!) {
templateDeployV2(input: $input) {
projectId
workflowId
}
}' \
'{
"input": {
"templateId": "TEMPLATE_ID_FROM_STEP_1",
"serializedConfig": SERIALIZED_CONFIG_FROM_STEP_1,
"projectId": "PROJECT_ID",
"environmentId": "ENVIRONMENT_ID",
"workspaceId": "WORKSPACE_ID"
}
}'
SCRIPT
重要: serializedConfig はテンプレートクエリから取得した正確な JSON オブジェクトであり、文字列ではありません。
サービスを接続する
テンプレートをデプロイした後、参照変数を使用してほかのサービスを接続します。
変数の構文と接続パターンの詳細については、variables.md を参照してください。
パターン
${{ServiceName.VARIABLE_NAME}}
よく使われるデータベース変数
| サービス | 接続変数 |
|---|---|
| PostgreSQL (Postgres) | ${{Postgres.DATABASE_URL}} |
| Redis | ${{Redis.REDIS_URL}} |
| MySQL | ${{MySQL.MYSQL_URL}} |
| MongoDB | ${{MongoDB.MONGO_URL}} |
バックエンドとフロントエンド
バックエンドサービスでは、プライベート URL(内部ネットワーク)を使用できます:
${{Postgres.DATABASE_URL}}
フロントエンドアプリケーションはブラウザー上で動作するため、Railway のプライベートネットワークにはアクセスできません。次の方法があります:
- パブリック URL 変数(例:
${{MongoDB.MONGO_PUBLIC_URL}})を使用する - より適切な方法として、バックエンド API 経由でルーティングする
例:PostgreSQL を追加する
bash <<'SCRIPT'
# 1. Get context
railway status --json
# → project.id = "proj-123", environment.id = "env-456"
# 2. Get workspace ID
scripts/railway-api.sh \
'query { project(id: "proj-123") { workspaceId } }' '{}'
# → workspaceId = "ws-789"
# 3. Fetch Postgres template
scripts/railway-api.sh \
'query { template(code: "postgres") { id serializedConfig } }' '{}'
# → id = "template-abc", serializedConfig = {...}
# 4. Deploy
scripts/railway-api.sh \
'mutation deploy($input: TemplateDeployV2Input!) {
templateDeployV2(input: $input) { projectId workflowId }
}' \
'{"input": {
"templateId": "template-abc",
"serializedConfig": {...},
"projectId": "proj-123",
"environmentId": "env-456",
"workspaceId": "ws-789"
}}'
SCRIPT
例:CMS テンプレートを検索する
bash <<'SCRIPT'
# Search verified templates
scripts/railway-api.sh \
'query {
templates(first: 50, verified: true) {
edges {
node { name code description category }
}
}
}' '{}'
# Filter results for "CMS" category or search descriptions
SCRIPT
作成されるもの
テンプレートでは、通常、次のものが作成されます:
- イメージ/ソースが事前設定されたサービス
- 環境変数(接続文字列、シークレット)
- 永続データ用のボリューム(データベース)
- 外部アクセス用の TCP プロキシ(必要な場合)
レスポンス
デプロイが成功すると、次の情報が返されます:
{
"data": {
"templateDeployV2": {
"projectId": "proj-123",
"workflowId": "deployTemplate/project/proj-123/xxx"
}
}
}
エラー処理
| エラー | 原因 | 解決方法 |
|---|---|---|
| テンプレートが見つからない | 無効なコード | テンプレートを検索するか、スペルを確認してください |
| レート制限超過 | 検索回数が多すぎる | 1 分待ってから再試行してください |
| アクセス拒否 | ユーザーにアクセス権がない | DEVELOPER ロール以上が必要です |
| プロジェクトが見つからない | 無効なプロジェクト ID | railway status --json を実行してください |
組み合わせて使う
- サービスを接続する:
environmentスキルを使用して変数参照を追加します - デプロイ済みサービスを表示する:
serviceスキルを使用します - ログを確認する:
deploymentスキルを使用します - ドメインを追加する:
domainスキルを使用します
コメント
Markdown 対応