{
  "manifest_version": "1.0.0",
  "template": {
    "id": "74b1af1a-3301-493f-b314-ccbf2afd2825",
    "slug": "mongodb-9-replica-set-oct-26",
    "name": "MongoDB 9 Replica Set [Oct '26]",
    "description": "MongoDB 9 HA replica set: auto failover, stable proxy URL. [Oct '26]",
    "url": "https://railway.com/deploy/mongodb-9-replica-set-oct-26"
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "mongo3",
      "source": {
        "image": "wotonews/mongodb-ha:v9.0.4-2"
      },
      "needs_volume": true,
      "volume_mount_path": "/data/db",
      "http": false
    },
    {
      "name": "mongo-init",
      "source": {
        "image": "wotonews/mongodb-ha:v9.0.4-2"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "mongo-proxy",
      "source": {
        "image": "wotonews/mongodb-ha-proxy:v2"
      },
      "needs_volume": false,
      "tcp_ports": [
        27017
      ],
      "http": false
    },
    {
      "name": "mongo2",
      "source": {
        "image": "wotonews/mongodb-ha:v9.0.4-2"
      },
      "needs_volume": true,
      "volume_mount_path": "/data/db",
      "http": false
    },
    {
      "name": "mongo1",
      "source": {
        "image": "wotonews/mongodb-ha:v9.0.4-2"
      },
      "needs_volume": true,
      "volume_mount_path": "/data/db",
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "KEYFILE",
      "service": "mongo3",
      "description": "Provide a value for KEYFILE.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO_INITDB_ROOT_PASSWORD",
      "service": "mongo3",
      "description": "Provide a value for MONGO_INITDB_ROOT_PASSWORD.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO_PRIMARY_HOST",
      "service": "mongo-init",
      "description": "Provide a value for MONGO_PRIMARY_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO_REPLICA_HOST",
      "service": "mongo-init",
      "description": "Provide a value for MONGO_REPLICA_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO_REPLICA2_HOST",
      "service": "mongo-init",
      "description": "Provide a value for MONGO_REPLICA2_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO_INITDB_ROOT_PASSWORD",
      "service": "mongo-init",
      "description": "Provide a value for MONGO_INITDB_ROOT_PASSWORD.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO1_HOST",
      "service": "mongo-proxy",
      "description": "Provide a value for MONGO1_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO2_HOST",
      "service": "mongo-proxy",
      "description": "Provide a value for MONGO2_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO3_HOST",
      "service": "mongo-proxy",
      "description": "Provide a value for MONGO3_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO_PUBLIC_URL",
      "service": "mongo-proxy",
      "description": "Provide a value for MONGO_PUBLIC_URL.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO_PRIVATE_URL",
      "service": "mongo-proxy",
      "description": "Provide a value for MONGO_PRIVATE_URL.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "KEYFILE",
      "service": "mongo2",
      "description": "Provide a value for KEYFILE.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO_INITDB_ROOT_PASSWORD",
      "service": "mongo2",
      "description": "Provide a value for MONGO_INITDB_ROOT_PASSWORD.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "KEYFILE",
      "service": "mongo1",
      "description": "Provide a value for KEYFILE.",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "PROXY_HOST",
      "service": "mongo1",
      "description": "Provide a value for PROXY_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "REPLICA_SET_PRIVATE_URI",
      "service": "mongo1",
      "description": "Provide a value for REPLICA_SET_PRIVATE_URI.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO_INITDB_ROOT_PASSWORD",
      "service": "mongo1",
      "description": "Provide a value for MONGO_INITDB_ROOT_PASSWORD.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "mongodb-9-replica-set-oct-26"
      }
    },
    "cli": "railway deploy --template mongodb-9-replica-set-oct-26",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "74b1af1a-3301-493f-b314-ccbf2afd2825",
            "serializedConfig": {
              "buckets": {},
              "services": {
                "268d595a-2769-4baa-b762-ce6c8e3a71a8": {
                  "icon": null,
                  "name": "mongo3",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "wotonews/mongodb-ha:v9.0.4-2"
                  },
                  "variables": {
                    "KEYFILE": {
                      "isOptional": false,
                      "defaultValue": "${{mongo1.KEYFILE}}"
                    },
                    "MONGO_INITDB_ROOT_PASSWORD": {
                      "isOptional": false,
                      "defaultValue": "${{mongo1.MONGO_INITDB_ROOT_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "268d595a-2769-4baa-b762-ce6c8e3a71a8": {
                      "mountPath": "/data/db"
                    }
                  }
                },
                "56689844-7f53-49fd-a698-95fb786bf682": {
                  "icon": null,
                  "name": "mongo-init",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "wotonews/mongodb-ha:v9.0.4-2"
                  },
                  "variables": {
                    "MONGO_PRIMARY_HOST": {
                      "isOptional": false,
                      "defaultValue": "${{mongo1.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MONGO_REPLICA_HOST": {
                      "isOptional": false,
                      "defaultValue": "${{mongo2.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MONGO_REPLICA2_HOST": {
                      "isOptional": false,
                      "defaultValue": "${{mongo3.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MONGO_INITDB_ROOT_PASSWORD": {
                      "isOptional": false,
                      "defaultValue": "${{mongo1.MONGO_INITDB_ROOT_PASSWORD}}"
                    }
                  }
                },
                "5a0afc1e-24a0-4560-9aa3-a7d6c4a9d0c7": {
                  "icon": null,
                  "name": "mongo-proxy",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "wotonews/mongodb-ha-proxy:v2"
                  },
                  "variables": {
                    "MONGO1_HOST": {
                      "isOptional": false,
                      "defaultValue": "${{mongo1.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MONGO2_HOST": {
                      "isOptional": false,
                      "defaultValue": "${{mongo2.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MONGO3_HOST": {
                      "isOptional": false,
                      "defaultValue": "${{mongo3.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MONGO_PUBLIC_URL": {
                      "isOptional": false,
                      "defaultValue": "mongodb://mongo:${{mongo1.MONGO_INITDB_ROOT_PASSWORD}}@${{RAILWAY_TCP_PROXY_DOMAIN}}:${{RAILWAY_TCP_PROXY_PORT}}"
                    },
                    "MONGO_PRIVATE_URL": {
                      "isOptional": false,
                      "defaultValue": "mongodb://mongo:${{mongo1.MONGO_INITDB_ROOT_PASSWORD}}@${{RAILWAY_PRIVATE_DOMAIN}}:27017"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "27017": {}
                    }
                  }
                },
                "79389a54-64cb-4e9c-8459-ce191e09544d": {
                  "icon": null,
                  "name": "mongo2",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "wotonews/mongodb-ha:v9.0.4-2"
                  },
                  "variables": {
                    "KEYFILE": {
                      "isOptional": false,
                      "defaultValue": "${{mongo1.KEYFILE}}"
                    },
                    "MONGO_INITDB_ROOT_PASSWORD": {
                      "isOptional": false,
                      "defaultValue": "${{mongo1.MONGO_INITDB_ROOT_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "79389a54-64cb-4e9c-8459-ce191e09544d": {
                      "mountPath": "/data/db"
                    }
                  }
                },
                "e402bcd4-94c9-4b1f-a6a0-fcafb216b13d": {
                  "icon": null,
                  "name": "mongo1",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "wotonews/mongodb-ha:v9.0.4-2"
                  },
                  "variables": {
                    "KEYFILE": {
                      "isOptional": false,
                      "defaultValue": "{{KEYFILE}}"
                    },
                    "PROXY_HOST": {
                      "isOptional": false,
                      "defaultValue": "${{mongo-proxy.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "REPLICA_SET_PRIVATE_URI": {
                      "isOptional": false,
                      "defaultValue": "mongodb://mongo:${{MONGO_INITDB_ROOT_PASSWORD}}@${{RAILWAY_PRIVATE_DOMAIN}}:27017,${{mongo2.RAILWAY_PRIVATE_DOMAIN}}:27017,${{mongo3.RAILWAY_PRIVATE_DOMAIN}}:27017/?replicaSet=rs0"
                    },
                    "MONGO_INITDB_ROOT_PASSWORD": {
                      "isOptional": false,
                      "defaultValue": "{{MONGO_INITDB_ROOT_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "e402bcd4-94c9-4b1f-a6a0-fcafb216b13d": {
                      "mountPath": "/data/db"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 5,
    "needs_volume": true
  },
  "generated_at": "2026-10-30T10:14:56.137Z",
  "generator_version": "0.1.0"
}
