{
  "manifest_version": "1.0.0",
  "template": {
    "id": "3cbec514-9c31-4d50-89d2-ee4b79a89dc4",
    "slug": "qdrant-vector-store",
    "name": "Qdrant | Open Source Vector Database for AI and RAG",
    "description": "Vector database for AI search and RAG — API key enabled, data on a volume",
    "url": "https://railway.com/deploy/qdrant-vector-store",
    "upstream": {
      "image": "qdrant/qdrant:v1.19.1"
    }
  },
  "services": [
    {
      "name": "Qdrant",
      "source": {
        "image": "qdrant/qdrant:v1.19.1"
      },
      "needs_volume": true,
      "volume_mount_path": "/qdrant/storage",
      "tcp_ports": [
        6334
      ],
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "Qdrant",
      "description": "Railway routes traffic by this variable. Qdrant never reads it, and the image exposes two ports, so it is set explicitly to the REST port.",
      "secret": false,
      "strategy": "default",
      "default": "6333"
    },
    {
      "key": "QDRANT__SERVICE__HOST",
      "service": "Qdrant",
      "description": "Bind address. `::` leaves the socket dual-stack, so the service answers both Railway's IPv6-only private network and the IPv4 edge proxy. Do not change it, and do not add brackets — the gRPC listener parses this value as a bare IP address.",
      "secret": false,
      "strategy": "default",
      "default": "::"
    },
    {
      "key": "QDRANT__SERVICE__API_KEY",
      "service": "Qdrant",
      "description": "API key required on every REST and gRPC request, in the `api-key` header. Generated for you — copy it before you give the URL to a client. Without it the database would accept unauthenticated writes from anyone who has the public domain.",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "QDRANT__SERVICE__GRPC_PORT",
      "service": "Qdrant",
      "description": "gRPC API, exposed through the TCP proxy for native clients. The official SDKs are faster over gRPC than over REST.",
      "secret": false,
      "strategy": "default",
      "default": "6334"
    },
    {
      "key": "QDRANT__SERVICE__HTTP_PORT",
      "service": "Qdrant",
      "description": "REST API and the built-in dashboard at /dashboard. Must stay in step with PORT and with the public domain's target port.",
      "secret": false,
      "strategy": "default",
      "default": "6333"
    },
    {
      "key": "QDRANT__TELEMETRY_DISABLED",
      "service": "Qdrant",
      "description": "Turns off anonymous usage reporting to Qdrant Cloud. Set to false if you would rather help upstream.",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "QDRANT__STORAGE__SNAPSHOTS_PATH",
      "service": "Qdrant",
      "description": "Snapshots are written inside the volume rather than the default /qdrant/snapshots, which lives in the container's ephemeral layer and would be lost on every redeploy.",
      "secret": false,
      "strategy": "default",
      "default": "/qdrant/storage/snapshots"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "qdrant-vector-store"
      }
    },
    "cli": "railway deploy --template qdrant-vector-store",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "3cbec514-9c31-4d50-89d2-ee4b79a89dc4",
            "serializedConfig": {
              "buckets": {},
              "services": {
                "2cf40181-cbf1-4c7c-af14-dc6259f1443f": {
                  "icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/qdrant.svg",
                  "name": "Qdrant",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 2
                  },
                  "source": {
                    "image": "qdrant/qdrant:v1.19.1"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Railway routes traffic by this variable. Qdrant never reads it, and the image exposes two ports, so it is set explicitly to the REST port.",
                      "defaultValue": "6333"
                    },
                    "QDRANT__SERVICE__HOST": {
                      "isOptional": false,
                      "description": "Bind address. `::` leaves the socket dual-stack, so the service answers both Railway's IPv6-only private network and the IPv4 edge proxy. Do not change it, and do not add brackets — the gRPC listener parses this value as a bare IP address.",
                      "defaultValue": "::"
                    },
                    "QDRANT__SERVICE__API_KEY": {
                      "isOptional": false,
                      "description": "API key required on every REST and gRPC request, in the `api-key` header. Generated for you — copy it before you give the URL to a client. Without it the database would accept unauthenticated writes from anyone who has the public domain.",
                      "defaultValue": "{{QDRANT__SERVICE__API_KEY}}"
                    },
                    "QDRANT__SERVICE__GRPC_PORT": {
                      "isOptional": false,
                      "description": "gRPC API, exposed through the TCP proxy for native clients. The official SDKs are faster over gRPC than over REST.",
                      "defaultValue": "6334"
                    },
                    "QDRANT__SERVICE__HTTP_PORT": {
                      "isOptional": false,
                      "description": "REST API and the built-in dashboard at /dashboard. Must stay in step with PORT and with the public domain's target port.",
                      "defaultValue": "6333"
                    },
                    "QDRANT__TELEMETRY_DISABLED": {
                      "isOptional": false,
                      "description": "Turns off anonymous usage reporting to Qdrant Cloud. Set to false if you would rather help upstream.",
                      "defaultValue": "true"
                    },
                    "QDRANT__STORAGE__SNAPSHOTS_PATH": {
                      "isOptional": false,
                      "description": "Snapshots are written inside the volume rather than the default /qdrant/snapshots, which lives in the container's ephemeral layer and would be lost on every redeploy.",
                      "defaultValue": "/qdrant/storage/snapshots"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "6334": {}
                    },
                    "serviceDomains": {
                      "<hasDomain>:6333": {
                        "port": 6333
                      }
                    }
                  },
                  "volumeMounts": {
                    "2cf40181-cbf1-4c7c-af14-dc6259f1443f": {
                      "mountPath": "/qdrant/storage"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": true
  },
  "generated_at": "2026-09-19T10:14:38.021Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-17T10:06:48.404Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_755bd31d0bdc43d19ffa",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 52,
    "typical_build_seconds": 0,
    "typical_start_seconds": 0,
    "slowest_service": "Qdrant"
  }
}
