{
  "manifest_version": "1.0.0",
  "template": {
    "id": "01525775-55fd-4da6-a894-688784e9930c",
    "slug": "garage-s3-storage",
    "name": "Garage S3 Storage",
    "description": "Ultra-light S3 server: fast, open-source, plug-and-play.",
    "url": "https://railway.com/deploy/garage-s3-storage",
    "upstream": {
      "repo_url": "https://github.com/matheusac19/railway_garage_template"
    }
  },
  "services": [
    {
      "name": "Garage S3",
      "source": {
        "repo": "https://github.com/matheusac19/railway_garage_template"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "Garage S3",
      "description": "Inject the number 3900 into the script and perform the Healthcheck on 3900.",
      "secret": false,
      "strategy": "default",
      "default": "3900"
    },
    {
      "key": "GARAGE_BUCKET",
      "service": "Garage S3",
      "description": "Name of the S3 bucket that will be automatically created on the first server startup. You can create others later, but this will be your primary bucket. (Ex: storage-app, images-site).",
      "secret": false,
      "strategy": "default",
      "default": "my-bucket"
    },
    {
      "key": "GARAGE_KEY_NAME",
      "service": "Garage S3",
      "description": "A user-friendly name for the access key that will be automatically generated. The system will create the credentials by linking this key to the primary bucket with read and write permissions.",
      "secret": true,
      "strategy": "default",
      "default": "my-admin-key"
    },
    {
      "key": "GARAGE_ACCESS_KEY",
      "service": "Garage S3",
      "description": "Must start with GK followed by exactly 24 hexadecimal characters (0-9, a-f), for a total length of 26 characters.",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "GARAGE_SECRET_KEY",
      "service": "Garage S3",
      "description": "(Recommended) Create your S3 Secret Key. It must be EXACTLY 64 hexadecimal characters (letters a-f, numbers 0-9). If left blank, one will be automatically generated in the logs.",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "garage-s3-storage"
      }
    },
    "cli": "railway deploy --template garage-s3-storage",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "01525775-55fd-4da6-a894-688784e9930c",
            "serializedConfig": {
              "services": {
                "7b247bb4-1d2a-4416-8b06-abbf84f244af": {
                  "icon": "https://garagehq.deuxfleurs.fr/images/garage-logo.svg",
                  "name": "Garage S3",
                  "deploy": {
                    "startCommand": "sh /start.sh",
                    "healthcheckPath": ""
                  },
                  "source": {
                    "repo": "matheusac19/railway_garage_template",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Inject the number 3900 into the script and perform the Healthcheck on 3900.",
                      "defaultValue": "3900"
                    },
                    "GARAGE_BUCKET": {
                      "isOptional": false,
                      "description": "Name of the S3 bucket that will be automatically created on the first server startup. You can create others later, but this will be your primary bucket. (Ex: storage-app, images-site).",
                      "defaultValue": "my-bucket"
                    },
                    "GARAGE_KEY_NAME": {
                      "isOptional": false,
                      "description": "A user-friendly name for the access key that will be automatically generated. The system will create the credentials by linking this key to the primary bucket with read and write permissions.",
                      "defaultValue": "my-admin-key"
                    },
                    "GARAGE_ACCESS_KEY": {
                      "isOptional": false,
                      "description": "Must start with GK followed by exactly 24 hexadecimal characters (0-9, a-f), for a total length of 26 characters.",
                      "defaultValue": "{{GARAGE_ACCESS_KEY}}"
                    },
                    "GARAGE_SECRET_KEY": {
                      "isOptional": false,
                      "description": "(Recommended) Create your S3 Secret Key. It must be EXACTLY 64 hexadecimal characters (letters a-f, numbers 0-9). If left blank, one will be automatically generated in the logs.",
                      "defaultValue": "{{GARAGE_SECRET_KEY}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:3900": {
                        "port": 3900
                      }
                    }
                  },
                  "volumeMounts": {
                    "7b247bb4-1d2a-4416-8b06-abbf84f244af": {
                      "mountPath": "/data"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": true
  },
  "generated_at": "2026-09-10T16:14:52.212Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-09T10:04:33.582Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_5e17fe189f9548e39f50",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 150,
    "typical_build_seconds": 30,
    "typical_start_seconds": 10,
    "slowest_service": "Garage S3"
  }
}
