{
  "manifest_version": "1.0.0",
  "template": {
    "id": "e34f464a-f000-4a27-be8b-43b9f9115c38",
    "slug": "NTiUyT",
    "name": "Infisical",
    "description": "The open-source secret management platform",
    "url": "https://railway.com/deploy/NTiUyT",
    "upstream": {
      "image": "infisical/infisical:latest-postgres"
    }
  },
  "services": [
    {
      "name": "Postgres",
      "source": {
        "image": "ghcr.io/railwayapp-templates/postgres-ssl:16"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/postgresql/data",
      "tcp_ports": [
        5432
      ],
      "http": false
    },
    {
      "name": "Infisical",
      "source": {
        "image": "infisical/infisical:latest-postgres"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "Redis",
      "source": {
        "image": "bitnami/redis:7.2.5"
      },
      "needs_volume": true,
      "volume_mount_path": "/bitnami",
      "tcp_ports": [
        6379
      ],
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "PGDATA",
      "service": "Postgres",
      "description": "Location where the database will be initialized",
      "secret": false,
      "strategy": "default",
      "default": "/var/lib/postgresql/data/pgdata"
    },
    {
      "key": "PGHOST",
      "service": "Postgres",
      "description": "Railway Private Domain Name.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "PGPORT",
      "service": "Postgres",
      "description": "Port to connect to Postgres.",
      "secret": false,
      "strategy": "default",
      "default": "5432"
    },
    {
      "key": "PGUSER",
      "service": "Postgres",
      "description": "Required variable for Data panel",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PGDATABASE",
      "service": "Postgres",
      "description": "Required variable for the data panel.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PGPASSWORD",
      "service": "Postgres",
      "description": "Required variable for Data panel",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "POSTGRES_DB",
      "service": "Postgres",
      "description": "Default database created when image is started.",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "DATABASE_URL",
      "service": "Postgres",
      "description": "URL to connect to Postgres database.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "POSTGRES_USER",
      "service": "Postgres",
      "description": "User to connect to Postgres DB",
      "secret": false,
      "strategy": "default",
      "default": "postgres"
    },
    {
      "key": "SSL_CERT_DAYS",
      "service": "Postgres",
      "description": "SSL certificate expiry in days.",
      "secret": false,
      "strategy": "default",
      "default": "820"
    },
    {
      "key": "POSTGRES_PASSWORD",
      "service": "Postgres",
      "description": "Password to connect to DB",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "DATABASE_PUBLIC_URL",
      "service": "Postgres",
      "description": "Public URL to connect to Postgres database, used by the Data panel.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "RAILWAY_DEPLOYMENT_DRAINING_SECONDS",
      "service": "Postgres",
      "description": "Allow Postgres to cleanly shut down",
      "secret": false,
      "strategy": "default",
      "default": "60"
    },
    {
      "key": "PORT",
      "service": "Infisical",
      "description": "Specifies the internal port on which the application listens.",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "SITE_URL",
      "service": "Infisical",
      "description": "Must be an absolute URL including the protocol (e.g. https://app.infisical.com ).",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "REDIS_URL",
      "service": "Infisical",
      "description": "Redis connection string.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_HOST",
      "service": "Infisical",
      "description": "Hostname to connect to for establishing SMTP connections",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "SMTP_PORT",
      "service": "Infisical",
      "description": "Port to connect to for establishing SMTP connections",
      "secret": false,
      "strategy": "default",
      "default": "587"
    },
    {
      "key": "AUTH_SECRET",
      "service": "Infisical",
      "description": "Must be a random 32 byte base64 string. Can be generated with openssl rand -base64 32",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "SMTP_PASSWORD",
      "service": "Infisical",
      "description": "Credential to connect to host",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "SMTP_USERNAME",
      "service": "Infisical",
      "description": "Credential to connect to host (e.g. team@infisical.com )",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "ENCRYPTION_KEY",
      "service": "Infisical",
      "description": "Must be a random 16 byte hex string. Can be generated with openssl rand -hex 16",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "SMTP_FROM_NAME",
      "service": "Infisical",
      "description": "Name label to be used in From field (e.g. Team)",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_AZURE",
      "service": "Infisical",
      "description": "OAuth2 client id for Azure integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "SMTP_IGNORE_TLS",
      "service": "Infisical",
      "description": "If this is true and SMTP_PORT is not 465 then TLS is not used even if the server supports STARTTLS extension.",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "CLIENT_ID_GITHUB",
      "service": "Infisical",
      "description": "OAuth2 client ID for GitHub integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_GITLAB",
      "service": "Infisical",
      "description": "OAuth2 client id for Gitlab integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_HEROKU",
      "service": "Infisical",
      "description": "OAuth2 client ID for Heroku integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_VERCEL",
      "service": "Infisical",
      "description": "OAuth2 client ID for Vercel integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "OTEL_EXPORT_TYPE",
      "service": "Infisical",
      "description": "Supported types are prometheus and otlp. If export type is set to prometheus, metric data will be exposed in port 9464 in the /metrics path. If export type is set to otlp, you will have to configure a value for OTEL_EXPORT_OTLP_ENDPOINT.",
      "secret": false,
      "strategy": "default",
      "default": "prometheus"
    },
    {
      "key": "SMTP_REQUIRE_TLS",
      "service": "Infisical",
      "description": "If this is true and SMTP_PORT is not 465 then Infisical tries to use STARTTLS even if the server does not advertise support for it. If the connection can not be encrypted then message is not sent.",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "URL_GITLAB_LOGIN",
      "service": "Infisical",
      "description": "URL of your self-hosted instance of GitLab where the OAuth application is registered",
      "secret": false,
      "strategy": "default",
      "default": "https://gitlab.com"
    },
    {
      "key": "CLIENT_ID_NETLIFY",
      "service": "Infisical",
      "description": "OAuth2 client ID for Netlify integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "DB_CONNECTION_URI",
      "service": "Infisical",
      "description": "Postgres database connection string.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_FROM_ADDRESS",
      "service": "Infisical",
      "description": "Email address to be used for sending emails",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "TELEMETRY_ENABLED",
      "service": "Infisical",
      "description": "Telemetry helps us improve Infisical but if you want to disable it you may set this to false.",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "CLIENT_SLUG_VERCEL",
      "service": "Infisical",
      "description": "OAuth2 slug for Vercel integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_BITBUCKET",
      "service": "Infisical",
      "description": "OAuth2 client ID for BitBucket integration",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_AZURE",
      "service": "Infisical",
      "description": "OAuth2 client secret for Azure integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_GITHUB",
      "service": "Infisical",
      "description": "OAuth2 client secret for GitHub integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_GITLAB",
      "service": "Infisical",
      "description": "OAuth2 client secret for Gitlab integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_HEROKU",
      "service": "Infisical",
      "description": "OAuth2 client secret for Heroku integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_VERCEL",
      "service": "Infisical",
      "description": "OAuth2 client secret for Vercel integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_NETLIFY",
      "service": "Infisical",
      "description": "OAuth2 client secret for Netlify integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_GITHUB_LOGIN",
      "service": "Infisical",
      "description": "OAuth2 client ID for GitHub login",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_GITLAB_LOGIN",
      "service": "Infisical",
      "description": "OAuth2 client ID for GitLab login",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_GOOGLE_LOGIN",
      "service": "Infisical",
      "description": "OAuth2 client ID for Google login",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_BITBUCKET",
      "service": "Infisical",
      "description": "OAuth2 client secret for BitBucket integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_AWS_INTEGRATION",
      "service": "Infisical",
      "description": "The AWS IAM User access key for assuming roles.",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_GITHUB_LOGIN",
      "service": "Infisical",
      "description": "OAuth2 client secret for GitHub login",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_GITLAB_LOGIN",
      "service": "Infisical",
      "description": "OAuth2 client secret for GitLab login",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_GOOGLE_LOGIN",
      "service": "Infisical",
      "description": "OAuth2 client secret for Google login",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_ID_GCP_SECRET_MANAGER",
      "service": "Infisical",
      "description": "OAuth2 client id for GCP secrets manager integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "SMTP_TLS_REJECT_UNAUTHORIZED",
      "service": "Infisical",
      "description": "If this is true, Infisical will validate the server's SSL/TLS certificate and reject the connection if the certificate is invalid or not trusted. If set to false, the client will accept the server's certificate regardless of its validity, which can be useful in development or testing environments but is not recommended for production use.",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ALLOW_INTERNAL_IP_CONNECTIONS",
      "service": "Infisical",
      "description": "Determines whether App Connections and Dynamic Secrets are permitted to connect with internal/private IP addresses.",
      "secret": false,
      "strategy": "default",
      "default": "false  "
    },
    {
      "key": "CLIENT_SECRET_AWS_INTEGRATION",
      "service": "Infisical",
      "description": "The AWS IAM User secret key for assuming roles.",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "CLIENT_SECRET_GCP_SECRET_MANAGER",
      "service": "Infisical",
      "description": "OAuth2 client secret for GCP secrets manager integration",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_GITHUB_APP_ID",
      "service": "Infisical",
      "description": "The ID of the GitHub App",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "OTEL_TELEMETRY_COLLECTION_ENABLED",
      "service": "Infisical",
      "description": "Whether or not to collect and expose telemetry data.",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "INF_APP_CONNECTION_GITHUB_APP_SLUG",
      "service": "Infisical",
      "description": "The slug of the GitHub App",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_AWS_ACCESS_KEY_ID",
      "service": "Infisical",
      "description": "The AWS IAM User access key ID for assuming roles",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_GITHUB_APP_CLIENT_ID",
      "service": "Infisical",
      "description": "The client ID for the GitHub App",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_AWS_SECRET_ACCESS_KEY",
      "service": "Infisical",
      "description": "The AWS IAM User secret key for assuming roles",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_GITHUB_APP_PRIVATE_KEY",
      "service": "Infisical",
      "description": "The private key for the GitHub App",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_GITHUB_OAUTH_CLIENT_ID",
      "service": "Infisical",
      "description": "The OAuth2 client ID for GitHub OAuth Connection",
      "secret": false,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_GITHUB_APP_CLIENT_SECRET",
      "service": "Infisical",
      "description": "The client secret for the GitHub App",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "INF_APP_CONNECTION_GITHUB_OAUTH_CLIENT_SECRET",
      "service": "Infisical",
      "description": "The OAuth2 client secret for GitHub OAuth Connection",
      "secret": true,
      "strategy": "default",
      "default": "none"
    },
    {
      "key": "REDISHOST",
      "service": "Redis",
      "description": "Railway Private Domain Name.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "REDISPORT",
      "service": "Redis",
      "description": "Port to connect to Redis.",
      "secret": false,
      "strategy": "default",
      "default": "6379"
    },
    {
      "key": "REDISUSER",
      "service": "Redis",
      "description": "Default user to connect to Redis.",
      "secret": false,
      "strategy": "default",
      "default": "default"
    },
    {
      "key": "REDIS_URL",
      "service": "Redis",
      "description": "URL to connect to Redis over the private network.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "REDISPASSWORD",
      "service": "Redis",
      "description": "Password to connect to Redis.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "REDIS_PASSWORD",
      "service": "Redis",
      "description": "Password to connect to Redis.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "RAILWAY_RUN_UID",
      "service": "Redis",
      "description": "Start Redis process as root to allow for writing to the volume",
      "secret": false,
      "strategy": "default",
      "default": "0"
    },
    {
      "key": "REDIS_PUBLIC_URL",
      "service": "Redis",
      "description": "Public URL to connect to Redis, needed for the Data panel.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "REDIS_RDB_POLICY",
      "service": "Redis",
      "description": "Set a RDB snapshot policy.",
      "secret": false,
      "strategy": "default",
      "default": "3600#1 300#100 60#10000"
    },
    {
      "key": "REDIS_AOF_ENABLED",
      "service": "Redis",
      "description": "Disable writing to AOF file.",
      "secret": false,
      "strategy": "default",
      "default": "no"
    },
    {
      "key": "RAILWAY_RUN_AS_ROOT",
      "service": "Redis",
      "description": "Start Redis process as root to allow for writing to the volume",
      "secret": false,
      "strategy": "default",
      "default": "true"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "NTiUyT"
      }
    },
    "cli": "railway deploy --template NTiUyT",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "e34f464a-f000-4a27-be8b-43b9f9115c38",
            "serializedConfig": {
              "services": {
                "1e2373ab-27b4-42d4-8278-99b5ca06fb6d": {
                  "icon": "https://devicons.railway.app/i/postgresql.svg",
                  "name": "Postgres",
                  "build": {},
                  "deploy": {},
                  "source": {
                    "image": "ghcr.io/railwayapp-templates/postgres-ssl:16"
                  },
                  "variables": {
                    "PGDATA": {
                      "isOptional": false,
                      "description": "Location where the database will be initialized",
                      "defaultValue": "/var/lib/postgresql/data/pgdata"
                    },
                    "PGHOST": {
                      "isOptional": false,
                      "description": "Railway Private Domain Name.",
                      "defaultValue": "${{RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "PGPORT": {
                      "isOptional": false,
                      "description": "Port to connect to Postgres.",
                      "defaultValue": "5432"
                    },
                    "PGUSER": {
                      "isOptional": false,
                      "description": "Required variable for Data panel",
                      "defaultValue": "${{ POSTGRES_USER }}"
                    },
                    "PGDATABASE": {
                      "isOptional": false,
                      "description": "Required variable for the data panel.",
                      "defaultValue": "${{POSTGRES_DB}}"
                    },
                    "PGPASSWORD": {
                      "isOptional": false,
                      "description": "Required variable for Data panel",
                      "defaultValue": "${{POSTGRES_PASSWORD}}"
                    },
                    "POSTGRES_DB": {
                      "isOptional": false,
                      "description": "Default database created when image is started.",
                      "defaultValue": "railway"
                    },
                    "DATABASE_URL": {
                      "isOptional": false,
                      "description": "URL to connect to Postgres database.",
                      "defaultValue": "postgresql://${{PGUSER}}:${{POSTGRES_PASSWORD}}@${{RAILWAY_PRIVATE_DOMAIN}}:5432/${{PGDATABASE}}"
                    },
                    "POSTGRES_USER": {
                      "isOptional": false,
                      "description": "User to connect to Postgres DB",
                      "defaultValue": "postgres"
                    },
                    "SSL_CERT_DAYS": {
                      "isOptional": true,
                      "description": "SSL certificate expiry in days.",
                      "defaultValue": "820"
                    },
                    "POSTGRES_PASSWORD": {
                      "isOptional": false,
                      "description": "Password to connect to DB",
                      "defaultValue": "{{POSTGRES_PASSWORD}}"
                    },
                    "DATABASE_PUBLIC_URL": {
                      "description": "Public URL to connect to Postgres database, used by the Data panel.",
                      "defaultValue": "postgresql://${{PGUSER}}:${{POSTGRES_PASSWORD}}@${{RAILWAY_TCP_PROXY_DOMAIN}}:${{RAILWAY_TCP_PROXY_PORT}}/${{PGDATABASE}}"
                    },
                    "RAILWAY_DEPLOYMENT_DRAINING_SECONDS": {
                      "isOptional": false,
                      "description": "Allow Postgres to cleanly shut down",
                      "defaultValue": "60"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "5432": {}
                    },
                    "serviceDomains": {}
                  },
                  "volumeMounts": {
                    "1e2373ab-27b4-42d4-8278-99b5ca06fb6d": {
                      "mountPath": "/var/lib/postgresql/data"
                    }
                  },
                  "haTemplateCode": "postgres-ha",
                  "haConversionConfig": {
                    "edge": {
                      "label": "Reverse Proxy",
                      "options": [
                        2,
                        3,
                        4,
                        5
                      ],
                      "nodeLabel": "HAProxy",
                      "description": "Routes traffic to the primary",
                      "defaultValue": 3
                    },
                    "replica": {
                      "label": "Replicas",
                      "options": [
                        2,
                        3,
                        4,
                        5,
                        6,
                        7
                      ],
                      "nodeLabel": "Postgres",
                      "description": "Streaming replicas for automatic failover",
                      "defaultValue": 2
                    },
                    "internal": {
                      "label": "Coordinator Nodes",
                      "options": [
                        3,
                        5,
                        7,
                        9
                      ],
                      "nodeLabel": "etcd",
                      "defaultValue": 3
                    },
                    "description": "This will convert your Postgres database to an HA cluster with Patroni failover and etcd consensus."
                  }
                },
                "88da982c-d08b-4b10-bcc1-dae59c01f964": {
                  "icon": "https://mintlify.s3-us-west-1.amazonaws.com/infisical/_generated/favicon/favicon-32x32.png?v=3",
                  "name": "Infisical",
                  "source": {
                    "image": "infisical/infisical:latest-postgres"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": true,
                      "description": "Specifies the internal port on which the application listens.",
                      "defaultValue": "8080"
                    },
                    "SITE_URL": {
                      "description": "Must be an absolute URL including the protocol (e.g. https://app.infisical.com ).",
                      "defaultValue": "https://${{RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "REDIS_URL": {
                      "description": "Redis connection string.",
                      "defaultValue": "${{Redis.REDIS_URL}}?family=0"
                    },
                    "SMTP_HOST": {
                      "isOptional": true,
                      "description": "Hostname to connect to for establishing SMTP connections",
                      "defaultValue": "none"
                    },
                    "SMTP_PORT": {
                      "isOptional": true,
                      "description": "Port to connect to for establishing SMTP connections",
                      "defaultValue": "587"
                    },
                    "AUTH_SECRET": {
                      "description": "Must be a random 32 byte base64 string. Can be generated with openssl rand -base64 32",
                      "defaultValue": "{{AUTH_SECRET}}"
                    },
                    "DB_ROOT_CERT": {
                      "isOptional": true,
                      "description": "Configure the SSL certificate for securing a Postgres connection by first encoding it in base64. Use the command below to encode your certificate: echo \"\" | base64",
                      "defaultValue": ""
                    },
                    "SMTP_PASSWORD": {
                      "isOptional": true,
                      "description": "Credential to connect to host",
                      "defaultValue": "none"
                    },
                    "SMTP_USERNAME": {
                      "isOptional": true,
                      "description": "Credential to connect to host (e.g. team@infisical.com )",
                      "defaultValue": "none"
                    },
                    "ENCRYPTION_KEY": {
                      "isOptional": false,
                      "description": "Must be a random 16 byte hex string. Can be generated with openssl rand -hex 16",
                      "defaultValue": "{{ENCRYPTION_KEY}}"
                    },
                    "SMTP_FROM_NAME": {
                      "isOptional": true,
                      "description": "Name label to be used in From field (e.g. Team)",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_AZURE": {
                      "isOptional": true,
                      "description": "OAuth2 client id for Azure integration",
                      "defaultValue": "none"
                    },
                    "SMTP_IGNORE_TLS": {
                      "isOptional": true,
                      "description": "If this is true and SMTP_PORT is not 465 then TLS is not used even if the server supports STARTTLS extension.",
                      "defaultValue": "false"
                    },
                    "CLIENT_ID_GITHUB": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for GitHub integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_GITLAB": {
                      "isOptional": true,
                      "description": "OAuth2 client id for Gitlab integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_HEROKU": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for Heroku integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_VERCEL": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for Vercel integration",
                      "defaultValue": "none"
                    },
                    "DB_READ_REPLICAS": {
                      "isOptional": true,
                      "description": "Postgres database read replica connection strings. It accepts a JSON string.",
                      "defaultValue": ""
                    },
                    "OTEL_EXPORT_TYPE": {
                      "isOptional": true,
                      "description": "Supported types are prometheus and otlp. If export type is set to prometheus, metric data will be exposed in port 9464 in the /metrics path. If export type is set to otlp, you will have to configure a value for OTEL_EXPORT_OTLP_ENDPOINT.",
                      "defaultValue": "prometheus"
                    },
                    "SMTP_REQUIRE_TLS": {
                      "isOptional": true,
                      "description": "If this is true and SMTP_PORT is not 465 then Infisical tries to use STARTTLS even if the server does not advertise support for it. If the connection can not be encrypted then message is not sent.",
                      "defaultValue": "true"
                    },
                    "URL_GITLAB_LOGIN": {
                      "isOptional": true,
                      "description": "URL of your self-hosted instance of GitLab where the OAuth application is registered",
                      "defaultValue": "https://gitlab.com"
                    },
                    "CLIENT_ID_NETLIFY": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for Netlify integration",
                      "defaultValue": "none"
                    },
                    "DB_CONNECTION_URI": {
                      "description": "Postgres database connection string.",
                      "defaultValue": "${{Postgres.DATABASE_URL}}"
                    },
                    "SMTP_FROM_ADDRESS": {
                      "isOptional": true,
                      "description": "Email address to be used for sending emails",
                      "defaultValue": "none"
                    },
                    "TELEMETRY_ENABLED": {
                      "isOptional": true,
                      "description": "Telemetry helps us improve Infisical but if you want to disable it you may set this to false.",
                      "defaultValue": "true"
                    },
                    "CLIENT_SLUG_VERCEL": {
                      "isOptional": true,
                      "description": "OAuth2 slug for Vercel integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_BITBUCKET": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for BitBucket integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_AZURE": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for Azure integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_GITHUB": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for GitHub integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_GITLAB": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for Gitlab integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_HEROKU": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for Heroku integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_VERCEL": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for Vercel integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_NETLIFY": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for Netlify integration",
                      "defaultValue": "none"
                    },
                    "DEFAULT_SAML_ORG_SLUG": {
                      "isOptional": true,
                      "description": "When set, all visits to the Infisical login page will automatically redirect users of your Infisical instance to the SAML identity provider associated with the specified organization slug.",
                      "defaultValue": ""
                    },
                    "CLIENT_ID_GITHUB_LOGIN": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for GitHub login",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_GITLAB_LOGIN": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for GitLab login",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_GOOGLE_LOGIN": {
                      "isOptional": true,
                      "description": "OAuth2 client ID for Google login",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_BITBUCKET": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for BitBucket integration",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_AWS_INTEGRATION": {
                      "isOptional": true,
                      "description": "The AWS IAM User access key for assuming roles.",
                      "defaultValue": "none"
                    },
                    "OTEL_EXPORT_OTLP_ENDPOINT": {
                      "isOptional": true,
                      "description": "Where telemetry data would be pushed to for collection. This is only applicable when OTEL_EXPORT_TYPE is set to otlp.",
                      "defaultValue": ""
                    },
                    "CLIENT_SECRET_GITHUB_LOGIN": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for GitHub login",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_GITLAB_LOGIN": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for GitLab login",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_GOOGLE_LOGIN": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for Google login",
                      "defaultValue": "none"
                    },
                    "CLIENT_ID_GCP_SECRET_MANAGER": {
                      "isOptional": true,
                      "description": "OAuth2 client id for GCP secrets manager integration",
                      "defaultValue": "none"
                    },
                    "SMTP_TLS_REJECT_UNAUTHORIZED": {
                      "isOptional": true,
                      "description": "If this is true, Infisical will validate the server's SSL/TLS certificate and reject the connection if the certificate is invalid or not trusted. If set to false, the client will accept the server's certificate regardless of its validity, which can be useful in development or testing environments but is not recommended for production use.",
                      "defaultValue": "true"
                    },
                    "ALLOW_INTERNAL_IP_CONNECTIONS": {
                      "isOptional": true,
                      "description": "Determines whether App Connections and Dynamic Secrets are permitted to connect with internal/private IP addresses.",
                      "defaultValue": "false  "
                    },
                    "CLIENT_SECRET_AWS_INTEGRATION": {
                      "isOptional": true,
                      "description": "The AWS IAM User secret key for assuming roles.",
                      "defaultValue": "none"
                    },
                    "CLIENT_SECRET_GCP_SECRET_MANAGER": {
                      "isOptional": true,
                      "description": "OAuth2 client secret for GCP secrets manager integration",
                      "defaultValue": "none"
                    },
                    "INF_APP_CONNECTION_GITHUB_APP_ID": {
                      "isOptional": true,
                      "description": "The ID of the GitHub App",
                      "defaultValue": "none"
                    },
                    "OTEL_TELEMETRY_COLLECTION_ENABLED": {
                      "isOptional": true,
                      "description": "Whether or not to collect and expose telemetry data.",
                      "defaultValue": "false"
                    },
                    "INF_APP_CONNECTION_GITHUB_APP_SLUG": {
                      "isOptional": true,
                      "description": "The slug of the GitHub App",
                      "defaultValue": "none"
                    },
                    "OTEL_COLLECTOR_BASIC_AUTH_PASSWORD": {
                      "isOptional": true,
                      "description": "The password for authenticating with the telemetry collector.",
                      "defaultValue": ""
                    },
                    "OTEL_COLLECTOR_BASIC_AUTH_USERNAME": {
                      "isOptional": true,
                      "description": "The username for authenticating with the telemetry collector.",
                      "defaultValue": ""
                    },
                    "INF_APP_CONNECTION_AWS_ACCESS_KEY_ID": {
                      "isOptional": true,
                      "description": "The AWS IAM User access key ID for assuming roles",
                      "defaultValue": "none"
                    },
                    "INF_APP_CONNECTION_GITHUB_APP_CLIENT_ID": {
                      "isOptional": true,
                      "description": "The client ID for the GitHub App",
                      "defaultValue": "none"
                    },
                    "INF_APP_CONNECTION_AWS_SECRET_ACCESS_KEY": {
                      "isOptional": true,
                      "description": "The AWS IAM User secret key for assuming roles",
                      "defaultValue": "none"
                    },
                    "INF_APP_CONNECTION_GITHUB_APP_PRIVATE_KEY": {
                      "isOptional": true,
                      "description": "The private key for the GitHub App",
                      "defaultValue": "none"
                    },
                    "INF_APP_CONNECTION_GITHUB_OAUTH_CLIENT_ID": {
                      "isOptional": true,
                      "description": "The OAuth2 client ID for GitHub OAuth Connection",
                      "defaultValue": "none"
                    },
                    "INF_APP_CONNECTION_GITHUB_APP_CLIENT_SECRET": {
                      "isOptional": true,
                      "description": "The client secret for the GitHub App",
                      "defaultValue": "none"
                    },
                    "INF_APP_CONNECTION_GITHUB_OAUTH_CLIENT_SECRET": {
                      "isOptional": true,
                      "description": "The OAuth2 client secret for GitHub OAuth Connection",
                      "defaultValue": "none"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "9cbd07e2-4834-4076-a619-d6f76ea75b69": {
                  "icon": "https://devicons.railway.app/i/redis.svg",
                  "name": "Redis",
                  "build": {},
                  "deploy": {},
                  "source": {
                    "image": "bitnami/redis:7.2.5"
                  },
                  "variables": {
                    "REDISHOST": {
                      "isOptional": false,
                      "description": "Railway Private Domain Name.",
                      "defaultValue": "${{ RAILWAY_PRIVATE_DOMAIN }}"
                    },
                    "REDISPORT": {
                      "isOptional": false,
                      "description": "Port to connect to Redis.",
                      "defaultValue": "6379"
                    },
                    "REDISUSER": {
                      "isOptional": false,
                      "description": "Default user to connect to Redis.",
                      "defaultValue": "default"
                    },
                    "REDIS_URL": {
                      "isOptional": false,
                      "description": "URL to connect to Redis over the private network.",
                      "defaultValue": "redis://default:${{ REDIS_PASSWORD }}@${{ RAILWAY_PRIVATE_DOMAIN }}:6379"
                    },
                    "REDISPASSWORD": {
                      "isOptional": false,
                      "description": "Password to connect to Redis.",
                      "defaultValue": "${{ REDIS_PASSWORD }}"
                    },
                    "REDIS_PASSWORD": {
                      "isOptional": false,
                      "description": "Password to connect to Redis.",
                      "defaultValue": "{{REDIS_PASSWORD}}"
                    },
                    "RAILWAY_RUN_UID": {
                      "isOptional": false,
                      "description": "Start Redis process as root to allow for writing to the volume",
                      "defaultValue": "0"
                    },
                    "REDIS_PUBLIC_URL": {
                      "description": "Public URL to connect to Redis, needed for the Data panel.",
                      "defaultValue": "redis://default:${{ REDIS_PASSWORD }}@${{ RAILWAY_TCP_PROXY_DOMAIN }}:${{ RAILWAY_TCP_PROXY_PORT }}"
                    },
                    "REDIS_RDB_POLICY": {
                      "description": "Set a RDB snapshot policy.",
                      "defaultValue": "3600#1 300#100 60#10000"
                    },
                    "REDIS_AOF_ENABLED": {
                      "description": "Disable writing to AOF file.",
                      "defaultValue": "no"
                    },
                    "RAILWAY_RUN_AS_ROOT": {
                      "isOptional": false,
                      "description": "Start Redis process as root to allow for writing to the volume",
                      "defaultValue": "true"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "6379": {}
                    },
                    "serviceDomains": {}
                  },
                  "volumeMounts": {
                    "9cbd07e2-4834-4076-a619-d6f76ea75b69": {
                      "mountPath": "/bitnami"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 3,
    "needs_volume": true
  },
  "generated_at": "2026-09-22T10:14:47.278Z",
  "generator_version": "0.1.0",
  "status": "degraded",
  "validated_at": "2026-09-21T07:51:07.818Z",
  "success_rate_30d": 0,
  "validation": {
    "last_run_id": "run_079865a3f30c4e0fa678",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": false,
        "detail": "FAILED,QUEUED,DEPLOYING"
      }
    ]
  }
}
