{
  "manifest_version": "1.0.0",
  "template": {
    "id": "ac1f2e67-8ced-4fb9-838a-844f1bffaea9",
    "slug": "influxdb3",
    "name": "InfluxDB",
    "description": "Time-series database for storing and charting metrics and sensor data",
    "url": "https://railway.com/deploy/influxdb3",
    "upstream": {
      "repo_url": "https://github.com/gridalpha/influxdb3-railway"
    }
  },
  "services": [
    {
      "name": "influxdb",
      "source": {
        "repo": "https://github.com/gridalpha/influxdb3-railway"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/influxdb3",
      "http": true
    },
    {
      "name": "gateway",
      "source": {
        "repo": "https://github.com/gridalpha/influxdb3-railway"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "explorer",
      "source": {
        "repo": "https://github.com/gridalpha/influxdb3-railway"
      },
      "needs_volume": true,
      "volume_mount_path": "/db",
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "influxdb",
      "description": "Health-check port, matches the HTTP bind",
      "secret": false,
      "strategy": "default",
      "default": "8181"
    },
    {
      "key": "AWS_ENDPOINT",
      "service": "influxdb",
      "description": "S3-compatible endpoint URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "INFLUXDB3_BUCKET",
      "service": "influxdb",
      "description": "Object storage bucket name",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "AWS_ACCESS_KEY_ID",
      "service": "influxdb",
      "description": "Bucket access key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "INFLUXDB3_NODE_ID",
      "service": "influxdb",
      "description": "Object store path prefix, keep stable",
      "secret": false,
      "strategy": "default",
      "default": "node0"
    },
    {
      "key": "AWS_DEFAULT_REGION",
      "service": "influxdb",
      "description": "Signing region only",
      "secret": false,
      "strategy": "default",
      "default": "us-east-1"
    },
    {
      "key": "INFLUXDB3_LOG_FILTER",
      "service": "influxdb",
      "description": "Log verbosity",
      "secret": false,
      "strategy": "default",
      "default": "info"
    },
    {
      "key": "AWS_SECRET_ACCESS_KEY",
      "service": "influxdb",
      "description": "Bucket secret key",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "INFLUXDB3_ADMIN_TOKEN",
      "service": "influxdb",
      "description": "Operator token, adopted on first boot only",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "INFLUXDB3_OBJECT_STORE",
      "service": "influxdb",
      "description": "Storage backend",
      "secret": false,
      "strategy": "default",
      "default": "s3"
    },
    {
      "key": "INFLUXDB3_DISABLE_AUTHZ",
      "service": "influxdb",
      "description": "Routes the health prober may reach",
      "secret": false,
      "strategy": "default",
      "default": "health,ping"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "influxdb",
      "description": "Dockerfile that builds this service",
      "secret": false,
      "strategy": "default",
      "default": "influxdb/Dockerfile"
    },
    {
      "key": "INFLUXDB3_HTTP_BIND_ADDR",
      "service": "influxdb",
      "description": "Dual-stack listen address",
      "secret": false,
      "strategy": "default",
      "default": "[::]:8181"
    },
    {
      "key": "INFLUXDB3_QUERY_FILE_LIMIT",
      "service": "influxdb",
      "description": "Parquet files one query may read",
      "secret": false,
      "strategy": "default",
      "default": "432"
    },
    {
      "key": "RAILWAY_DEPLOYMENT_DRAINING_SECONDS",
      "service": "influxdb",
      "description": "Clean shutdown window",
      "secret": false,
      "strategy": "default",
      "default": "30"
    },
    {
      "key": "GATEWAY_PASSWORD",
      "service": "gateway",
      "description": "Basic-auth password, hashed at boot",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "GATEWAY_USERNAME",
      "service": "gateway",
      "description": "Basic-auth user for the Explorer UI",
      "secret": false,
      "strategy": "default",
      "default": "admin"
    },
    {
      "key": "EXPLORER_UPSTREAM",
      "service": "gateway",
      "description": "Explorer's private address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "gateway",
      "description": "Dockerfile that builds this service",
      "secret": false,
      "strategy": "default",
      "default": "gateway/Dockerfile"
    },
    {
      "key": "RAILWAY_DEPLOYMENT_DRAINING_SECONDS",
      "service": "gateway",
      "description": "Clean shutdown window",
      "secret": false,
      "strategy": "default",
      "default": "15"
    },
    {
      "key": "PORT",
      "service": "explorer",
      "description": "Node backend port, not the nginx port",
      "secret": false,
      "strategy": "default",
      "default": "8888"
    },
    {
      "key": "DATABASE_URL",
      "service": "explorer",
      "description": "Explorer's own SQLite file on the volume",
      "secret": false,
      "strategy": "default",
      "default": "/db/sqlite.db"
    },
    {
      "key": "INFLUXDB3_HOST",
      "service": "explorer",
      "description": "Private database URL",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "INFLUXDB3_DATABASE",
      "service": "explorer",
      "description": "Database pre-selected in the UI",
      "secret": false,
      "strategy": "default",
      "default": "mydb"
    },
    {
      "key": "SESSION_SECRET_KEY",
      "service": "explorer",
      "description": "Signs Explorer browser sessions",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "INFLUXDB3_ADMIN_TOKEN",
      "service": "explorer",
      "description": "Token for the pre-set connection",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "INFLUXDB3_SERVER_NAME",
      "service": "explorer",
      "description": "Connection label shown in the UI",
      "secret": false,
      "strategy": "default",
      "default": "InfluxDB 3 Core"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "explorer",
      "description": "Dockerfile that builds this service",
      "secret": false,
      "strategy": "default",
      "default": "explorer/Dockerfile"
    },
    {
      "key": "RAILWAY_DEPLOYMENT_DRAINING_SECONDS",
      "service": "explorer",
      "description": "Clean shutdown window",
      "secret": false,
      "strategy": "default",
      "default": "15"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "influxdb3"
      }
    },
    "cli": "railway deploy --template influxdb3",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "ac1f2e67-8ced-4fb9-838a-844f1bffaea9",
            "serializedConfig": {
              "buckets": {
                "3f88e093-b7cf-4ea0-a2a7-de5e6a3544b5": {
                  "name": "influxdb3-storage"
                }
              },
              "services": {
                "370a362c-a27b-424a-950f-590e7242b9e9": {
                  "icon": "https://cdn.simpleicons.org/influxdb/22ADF6.svg",
                  "name": "influxdb",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/influxdb3-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Health-check port, matches the HTTP bind",
                      "defaultValue": "8181"
                    },
                    "AWS_ENDPOINT": {
                      "isOptional": false,
                      "description": "S3-compatible endpoint URL",
                      "defaultValue": "${{influxdb3-storage.ENDPOINT}}"
                    },
                    "INFLUXDB3_BUCKET": {
                      "isOptional": false,
                      "description": "Object storage bucket name",
                      "defaultValue": "${{influxdb3-storage.BUCKET}}"
                    },
                    "AWS_ACCESS_KEY_ID": {
                      "isOptional": false,
                      "description": "Bucket access key",
                      "defaultValue": "${{influxdb3-storage.ACCESS_KEY_ID}}"
                    },
                    "INFLUXDB3_NODE_ID": {
                      "isOptional": false,
                      "description": "Object store path prefix, keep stable",
                      "defaultValue": "node0"
                    },
                    "AWS_DEFAULT_REGION": {
                      "isOptional": false,
                      "description": "Signing region only",
                      "defaultValue": "us-east-1"
                    },
                    "INFLUXDB3_LOG_FILTER": {
                      "isOptional": false,
                      "description": "Log verbosity",
                      "defaultValue": "info"
                    },
                    "AWS_SECRET_ACCESS_KEY": {
                      "isOptional": false,
                      "description": "Bucket secret key",
                      "defaultValue": "${{influxdb3-storage.SECRET_ACCESS_KEY}}"
                    },
                    "INFLUXDB3_ADMIN_TOKEN": {
                      "isOptional": false,
                      "description": "Operator token, adopted on first boot only",
                      "defaultValue": "{{INFLUXDB3_ADMIN_TOKEN}}"
                    },
                    "INFLUXDB3_OBJECT_STORE": {
                      "isOptional": false,
                      "description": "Storage backend",
                      "defaultValue": "s3"
                    },
                    "INFLUXDB3_DISABLE_AUTHZ": {
                      "isOptional": false,
                      "description": "Routes the health prober may reach",
                      "defaultValue": "health,ping"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Dockerfile that builds this service",
                      "defaultValue": "influxdb/Dockerfile"
                    },
                    "INFLUXDB3_HTTP_BIND_ADDR": {
                      "isOptional": false,
                      "description": "Dual-stack listen address",
                      "defaultValue": "[::]:8181"
                    },
                    "INFLUXDB3_QUERY_FILE_LIMIT": {
                      "isOptional": false,
                      "description": "Parquet files one query may read",
                      "defaultValue": "432"
                    },
                    "RAILWAY_DEPLOYMENT_DRAINING_SECONDS": {
                      "isOptional": false,
                      "description": "Clean shutdown window",
                      "defaultValue": "30"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:8181": {
                        "port": 8181
                      }
                    }
                  },
                  "volumeMounts": {
                    "370a362c-a27b-424a-950f-590e7242b9e9": {
                      "mountPath": "/var/lib/influxdb3"
                    }
                  }
                },
                "79642a35-ce1a-42b9-b3ea-a698113f0986": {
                  "icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/caddy.svg",
                  "name": "gateway",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/healthz",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/influxdb3-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "GATEWAY_PASSWORD": {
                      "isOptional": false,
                      "description": "Basic-auth password, hashed at boot",
                      "defaultValue": "{{GATEWAY_PASSWORD}}"
                    },
                    "GATEWAY_USERNAME": {
                      "isOptional": false,
                      "description": "Basic-auth user for the Explorer UI",
                      "defaultValue": "admin"
                    },
                    "EXPLORER_UPSTREAM": {
                      "isOptional": false,
                      "description": "Explorer's private address",
                      "defaultValue": "${{explorer.RAILWAY_PRIVATE_DOMAIN}}:8080"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Dockerfile that builds this service",
                      "defaultValue": "gateway/Dockerfile"
                    },
                    "RAILWAY_DEPLOYMENT_DRAINING_SECONDS": {
                      "isOptional": false,
                      "description": "Clean shutdown window",
                      "defaultValue": "15"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:8080": {
                        "port": 8080
                      }
                    }
                  }
                },
                "c88dbdd9-f7e8-4816-a24c-51de592965b8": {
                  "icon": "https://cdn.simpleicons.org/influxdb/22ADF6.svg",
                  "name": "explorer",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/api/sessions",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/influxdb3-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Node backend port, not the nginx port",
                      "defaultValue": "8888"
                    },
                    "DATABASE_URL": {
                      "isOptional": false,
                      "description": "Explorer's own SQLite file on the volume",
                      "defaultValue": "/db/sqlite.db"
                    },
                    "INFLUXDB3_HOST": {
                      "isOptional": false,
                      "description": "Private database URL",
                      "defaultValue": "http://${{influxdb.RAILWAY_PRIVATE_DOMAIN}}:8181"
                    },
                    "INFLUXDB3_DATABASE": {
                      "isOptional": false,
                      "description": "Database pre-selected in the UI",
                      "defaultValue": "mydb"
                    },
                    "SESSION_SECRET_KEY": {
                      "isOptional": false,
                      "description": "Signs Explorer browser sessions",
                      "defaultValue": "{{SESSION_SECRET_KEY}}"
                    },
                    "INFLUXDB3_ADMIN_TOKEN": {
                      "isOptional": false,
                      "description": "Token for the pre-set connection",
                      "defaultValue": "${{influxdb.INFLUXDB3_ADMIN_TOKEN}}"
                    },
                    "INFLUXDB3_SERVER_NAME": {
                      "isOptional": false,
                      "description": "Connection label shown in the UI",
                      "defaultValue": "InfluxDB 3 Core"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Dockerfile that builds this service",
                      "defaultValue": "explorer/Dockerfile"
                    },
                    "RAILWAY_DEPLOYMENT_DRAINING_SECONDS": {
                      "isOptional": false,
                      "description": "Clean shutdown window",
                      "defaultValue": "15"
                    }
                  },
                  "volumeMounts": {
                    "c88dbdd9-f7e8-4816-a24c-51de592965b8": {
                      "mountPath": "/db"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "influxdb",
      "method": "GET",
      "path": "/health",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 3,
    "needs_volume": true
  },
  "generated_at": "2026-09-14T22:14:43.073Z",
  "generator_version": "0.1.0",
  "status": "degraded",
  "validated_at": "2026-09-14T21:06:32.276Z",
  "success_rate_30d": 0,
  "validation": {
    "last_run_id": "run_0f30d3cdfef847b8947c",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": false,
        "detail": "Your workspace has been restricted. Please contact support to resolve this."
      }
    ]
  }
}
