SuperAPI AI 工具集

templates

部署与运维

查看项目

更新于 10-15 14:09

技能介绍

用途

Templates 是 Railway 的模板市场技能,用于搜索并部署 Railway 模板市场中的服务。当用户提出「添加 Postgres」「添加 Redis」「添加数据库」「添加 Ghost」「添加 Strapi」「添加 n8n」或其他服务,或想按用途(如 CMS、存储、监控)查找模板、询问「有哪些可用模板」、希望部署预配置服务时,应使用本技能。

主要能力

  • 搜索模板:列出可用模板,支持按数量、是否已验证、是否推荐进行过滤。
  • 获取模板详情:按模板代码获取模板的 id、名称、描述和 serializedConfig。
  • 部署模板:将模板部署到指定项目、环境和 workspace。
  • 连接服务:部署后通过引用变量连接其他服务。

常见模板代码:

类别 模板 代码
数据库 PostgreSQL postgres
数据库 Redis redis
数据库 MySQL mysql
数据库 MongoDB mongodb
CMS Ghost ghost
CMS Strapi strapi
存储 Minio minio
自动化 n8n n8n
监控 Uptime Kuma uptime-kuma

其他模板可使用搜索查询获取。

使用方式

前置条件

获取项目上下文:

railway status --json

提取:

  • id - 项目 ID
  • environments.edges[0].node.id - 环境 ID

获取 workspace 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 仅返回推荐模板

速率限制:每分钟 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. 获取上下文
railway status --json
# → project.id = "proj-123", environment.id = "env-456"

# 2. 获取 workspace ID
scripts/railway-api.sh \
  'query { project(id: "proj-123") { workspaceId } }' '{}'
# → workspaceId = "ws-789"

# 3. 获取 Postgres 模板
scripts/railway-api.sh \
  'query { template(code: "postgres") { id serializedConfig } }' '{}'
# → id = "template-abc", serializedConfig = {...}

# 4. 部署
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'
# 搜索已验证模板
scripts/railway-api.sh \
  'query {
    templates(first: 50, verified: true) {
      edges {
        node { name code description category }
      }
    }
  }' '{}'
# 按 "CMS" 类别或描述过滤结果
SCRIPT

适用场景

  • 需要快速为项目添加数据库(Postgres、Redis、MySQL、MongoDB)。
  • 需要部署 CMS(Ghost、Strapi)、自动化工具(n8n)、存储(Minio)、监控(Uptime Kuma)等预配置服务。
  • 需要按用途查找可用模板。
  • 需要将模板部署到指定 Railway 项目与环境,并连接其他服务。

限制与错误处理

模板通常创建:预配置镜像/源的服务、环境变量(连接字符串、密钥)、持久化数据卷(数据库)、外部访问的 TCP 代理(按需)。

成功部署返回:

{
  "data": {
    "templateDeployV2": {
      "projectId": "proj-123",
      "workflowId": "deployTemplate/project/proj-123/xxx"
    }
  }
}

错误处理:

错误 原因 解决方案
Template not found 代码无效 搜索模板或检查拼写
Rate limit exceeded 搜索过于频繁 等待 1 分钟后重试
Permission denied 用户缺少权限 需要 DEVELOPER 角色或更高
Project not found 项目 ID 无效 运行 railway status --json

可组合性:

  • 连接服务:使用 environment 技能添加变量引用
  • 查看已部署服务:使用 service 技能
  • 查看日志:使用 deployment 技能
  • 添加域名:使用 domain 技能

关于收费、价格、平台支持范围等具体信息,资料中暂未提供。