{
  "manifest_version": "1.0.0",
  "template": {
    "id": "6fd06fba-9e52-4d47-a99d-9ca865bc608d",
    "slug": "stirling",
    "name": "Stirling-PDF | Open Source PDF Toolkit",
    "description": "Self-host Stirling-PDF. Private PDF processing, split, merge, OCR & more",
    "url": "https://railway.com/deploy/stirling",
    "upstream": {
      "image": "stirlingtools/stirling-pdf:latest-fat"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "Stirling-PDF",
      "source": {
        "image": "stirlingtools/stirling-pdf:latest-fat"
      },
      "needs_volume": true,
      "volume_mount_path": "/configs",
      "http": true
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "Stirling-PDF",
      "description": "Hardcoded internal port (do not change)",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "LANGS",
      "service": "Stirling-PDF",
      "description": "Frontend locale codes",
      "secret": false,
      "strategy": "default",
      "default": "en_GB,en_US"
    },
    {
      "key": "UI_APPNAME",
      "service": "Stirling-PDF",
      "description": "Browser tab + header app name",
      "secret": false,
      "strategy": "default",
      "default": "Stirling-PDF"
    },
    {
      "key": "SHOW_SURVEY",
      "service": "Stirling-PDF",
      "description": "Hide in-app survey banner",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "METRICS_ENABLED",
      "service": "Stirling-PDF",
      "description": "Expose /actuator Prometheus endpoints",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "RAILWAY_RUN_UID",
      "service": "Stirling-PDF",
      "description": "Run as root for Railway volume access",
      "secret": false,
      "strategy": "default",
      "default": "0"
    },
    {
      "key": "JAVA_CUSTOM_OPTS",
      "service": "Stirling-PDF",
      "description": "Cap JVM heap so LibreOffice has headroom",
      "secret": false,
      "strategy": "default",
      "default": "-Xmx3g"
    },
    {
      "key": "UI_APPNAMENAVBAR",
      "service": "Stirling-PDF",
      "description": "Navbar app name",
      "secret": false,
      "strategy": "default",
      "default": "Stirling-PDF"
    },
    {
      "key": "SYSTEM_MAXFILESIZE",
      "service": "Stirling-PDF",
      "description": "Max upload size in MB",
      "secret": false,
      "strategy": "default",
      "default": "200"
    },
    {
      "key": "UI_HOMEDESCRIPTION",
      "service": "Stirling-PDF",
      "description": "Home page tagline",
      "secret": false,
      "strategy": "default",
      "default": "Self-hosted PDF toolkit on Railway"
    },
    {
      "key": "SECURITY_ENABLELOGIN",
      "service": "Stirling-PDF",
      "description": "Force login screen for all users",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "SYSTEM_DEFAULTLOCALE",
      "service": "Stirling-PDF",
      "description": "Default UI locale",
      "secret": false,
      "strategy": "default",
      "default": "en-US"
    },
    {
      "key": "DOCKER_ENABLE_SECURITY",
      "service": "Stirling-PDF",
      "description": "Enable login/security features",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "SYSTEM_GOOGLEVISIBILITY",
      "service": "Stirling-PDF",
      "description": "Block search-engine indexing",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "DISABLE_ADDITIONAL_FEATURES",
      "service": "Stirling-PDF",
      "description": "Keep extra features (Calibre, etc.) on",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "SECURITY_CUSTOMGLOBALAPIKEY",
      "service": "Stirling-PDF",
      "description": "Global REST API key",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "SERVER_FORWARDHEADERSSTRATEGY",
      "service": "Stirling-PDF",
      "description": "Trust Railway X-Forwarded-* headers",
      "secret": false,
      "strategy": "default",
      "default": "NATIVE"
    },
    {
      "key": "SECURITY_INITIALLOGIN_PASSWORD",
      "service": "Stirling-PDF",
      "description": "Initial admin password (ASCII only)",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "SECURITY_INITIALLOGIN_USERNAME",
      "service": "Stirling-PDF",
      "description": "Initial admin username",
      "secret": false,
      "strategy": "ask_user"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "stirling"
      }
    },
    "cli": "railway deploy --template stirling",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "6fd06fba-9e52-4d47-a99d-9ca865bc608d",
            "serializedConfig": {
              "buckets": {},
              "services": {
                "c5f7abc7-4925-45b1-acdb-139d82b8aa66": {
                  "icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/stirling-pdf.svg",
                  "name": "Stirling-PDF",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "stirlingtools/stirling-pdf:latest-fat"
                  },
                  "variables": {
                    "PORT": {
                      "description": "Hardcoded internal port (do not change)",
                      "defaultValue": "8080"
                    },
                    "LANGS": {
                      "isOptional": false,
                      "description": "Frontend locale codes",
                      "defaultValue": "en_GB,en_US"
                    },
                    "UI_APPNAME": {
                      "isOptional": false,
                      "description": "Browser tab + header app name",
                      "defaultValue": "Stirling-PDF"
                    },
                    "SHOW_SURVEY": {
                      "isOptional": false,
                      "description": "Hide in-app survey banner",
                      "defaultValue": "false"
                    },
                    "METRICS_ENABLED": {
                      "isOptional": false,
                      "description": "Expose /actuator Prometheus endpoints",
                      "defaultValue": "true"
                    },
                    "RAILWAY_RUN_UID": {
                      "isOptional": false,
                      "description": "Run as root for Railway volume access",
                      "defaultValue": "0"
                    },
                    "JAVA_CUSTOM_OPTS": {
                      "isOptional": false,
                      "description": "Cap JVM heap so LibreOffice has headroom",
                      "defaultValue": "-Xmx3g"
                    },
                    "UI_APPNAMENAVBAR": {
                      "isOptional": false,
                      "description": "Navbar app name",
                      "defaultValue": "Stirling-PDF"
                    },
                    "SYSTEM_MAXFILESIZE": {
                      "isOptional": false,
                      "description": "Max upload size in MB",
                      "defaultValue": "200"
                    },
                    "UI_HOMEDESCRIPTION": {
                      "isOptional": false,
                      "description": "Home page tagline",
                      "defaultValue": "Self-hosted PDF toolkit on Railway"
                    },
                    "SECURITY_ENABLELOGIN": {
                      "isOptional": false,
                      "description": "Force login screen for all users",
                      "defaultValue": "true"
                    },
                    "SYSTEM_DEFAULTLOCALE": {
                      "isOptional": false,
                      "description": "Default UI locale",
                      "defaultValue": "en-US"
                    },
                    "DOCKER_ENABLE_SECURITY": {
                      "isOptional": false,
                      "description": "Enable login/security features",
                      "defaultValue": "true"
                    },
                    "SYSTEM_GOOGLEVISIBILITY": {
                      "isOptional": false,
                      "description": "Block search-engine indexing",
                      "defaultValue": "false"
                    },
                    "DISABLE_ADDITIONAL_FEATURES": {
                      "isOptional": false,
                      "description": "Keep extra features (Calibre, etc.) on",
                      "defaultValue": "false"
                    },
                    "SECURITY_CUSTOMGLOBALAPIKEY": {
                      "isOptional": false,
                      "description": "Global REST API key",
                      "defaultValue": "{{SECURITY_CUSTOMGLOBALAPIKEY}}"
                    },
                    "SERVER_FORWARDHEADERSSTRATEGY": {
                      "isOptional": false,
                      "description": "Trust Railway X-Forwarded-* headers",
                      "defaultValue": "NATIVE"
                    },
                    "SECURITY_INITIALLOGIN_PASSWORD": {
                      "isOptional": false,
                      "description": "Initial admin password (ASCII only)",
                      "defaultValue": "{{SECURITY_INITIALLOGIN_PASSWORD}}"
                    },
                    "SECURITY_INITIALLOGIN_USERNAME": {
                      "isOptional": false,
                      "description": "Initial admin username",
                      "defaultValue": "{{SECURITY_INITIALLOGIN_USERNAME}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  },
                  "volumeMounts": {
                    "c5f7abc7-4925-45b1-acdb-139d82b8aa66": {
                      "mountPath": "/configs"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": true
  },
  "generated_at": "2026-09-21T22:14:44.200Z",
  "generator_version": "0.1.0"
}
