{
  "manifest_version": "1.0.0",
  "template": {
    "id": "e732693d-d71a-42b9-82ec-925b529fa4cd",
    "slug": "Ndyq3N",
    "name": "drosera-operator",
    "description": "Drosera solo operator node for running traps. Checkout dev.drosera.io",
    "url": "https://railway.com/deploy/Ndyq3N",
    "upstream": {
      "image": "ghcr.io/drosera-network/drosera-operator:latest"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "drosera-operator",
      "source": {
        "image": "ghcr.io/drosera-network/drosera-operator:latest"
      },
      "needs_volume": true,
      "volume_mount_path": "/app/.data/drosera.db",
      "tcp_ports": [
        31313
      ],
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "DRO__DB_FILE_PATH",
      "service": "drosera-operator",
      "description": "The path to the database file to use for persistence when not in dev mode",
      "secret": false,
      "strategy": "default",
      "default": "/app/.data/drosera.db"
    },
    {
      "key": "DRO__ETH__RPC_URL",
      "service": "drosera-operator",
      "description": "The node used for querying and sending transactions",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "DRO__SERVER__PORT",
      "service": "drosera-operator",
      "description": "The TCP port to bind the HTTP server to",
      "secret": false,
      "strategy": "default",
      "default": "31314"
    },
    {
      "key": "DRO__LISTEN_ADDRESS",
      "service": "drosera-operator",
      "description": "The network interface to bind the Operators HTTP and P2P server to",
      "secret": false,
      "strategy": "default",
      "default": "0.0.0.0"
    },
    {
      "key": "DRO__ETH__PRIVATE_KEY",
      "service": "drosera-operator",
      "description": "The private key used to sign transactions",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "DRO__NETWORK__P2P_PORT",
      "service": "drosera-operator",
      "description": "The TCP port to bind the P2P server to",
      "secret": false,
      "strategy": "default",
      "default": "31313"
    },
    {
      "key": "DRO__DISABLE_DNR_CONFIRMATION",
      "service": "drosera-operator",
      "description": "Disables the DNR confirmation. Only set this if you are running this node behind a NAT, and you are receiving a 'Failed to confirm DNR' error message. Verify the public address setting is correct and any firewall walls are opened for the configured ports before turning this setting on.",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DRO__BLOCK_POLLING_INTERVAL_MS",
      "service": "drosera-operator",
      "description": "The number of milliseconds to wait between polling for new blocks",
      "secret": false,
      "strategy": "default",
      "default": "1000"
    },
    {
      "key": "DRO__NETWORK__EXTERNAL_P2P_ADDRESS",
      "service": "drosera-operator",
      "description": "The external address to reach the Operator node at for p2p communications",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "DRO__NETWORK__EXTERNAL_RPC_ADDRESS",
      "service": "drosera-operator",
      "description": "The external address to reach the Operator node's rpc server. Useful for proxies. Default is the network external p2p address. If provided and starts with either http or https, the value will be used as is by the seed node to retrieve liveness data. Otherwise, if a dns or ip is provided without a protocol, http is assumed and the server port will be appended.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "Ndyq3N"
      }
    },
    "cli": "railway deploy --template Ndyq3N",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "e732693d-d71a-42b9-82ec-925b529fa4cd",
            "serializedConfig": {
              "services": {
                "8540b4c5-bfb8-4679-801c-bea1990cb57a": {
                  "icon": null,
                  "name": "drosera-operator",
                  "deploy": {
                    "startCommand": "./drosera-operator node",
                    "healthcheckPath": null
                  },
                  "source": {
                    "image": "ghcr.io/drosera-network/drosera-operator:latest"
                  },
                  "variables": {
                    "DRO__DB_FILE_PATH": {
                      "isOptional": false,
                      "description": "The path to the database file to use for persistence when not in dev mode",
                      "defaultValue": "/app/.data/drosera.db"
                    },
                    "DRO__ETH__RPC_URL": {
                      "isOptional": false,
                      "description": "The node used for querying and sending transactions",
                      "defaultValue": "{{DRO__ETH__RPC_URL}}"
                    },
                    "DRO__SERVER__PORT": {
                      "isOptional": false,
                      "description": "The TCP port to bind the HTTP server to",
                      "defaultValue": "31314"
                    },
                    "DRO__LISTEN_ADDRESS": {
                      "isOptional": false,
                      "description": "The network interface to bind the Operators HTTP and P2P server to",
                      "defaultValue": "0.0.0.0"
                    },
                    "DRO__ETH__PRIVATE_KEY": {
                      "isOptional": false,
                      "description": "The private key used to sign transactions",
                      "defaultValue": "{{DRO__ETH__PRIVATE_KEY}}"
                    },
                    "DRO__NETWORK__P2P_PORT": {
                      "isOptional": false,
                      "description": "The TCP port to bind the P2P server to",
                      "defaultValue": "31313"
                    },
                    "DRO__DISABLE_DNR_CONFIRMATION": {
                      "isOptional": false,
                      "description": "Disables the DNR confirmation. Only set this if you are running this node behind a NAT, and you are receiving a 'Failed to confirm DNR' error message. Verify the public address setting is correct and any firewall walls are opened for the configured ports before turning this setting on.",
                      "defaultValue": "true"
                    },
                    "DRO__BLOCK_POLLING_INTERVAL_MS": {
                      "isOptional": false,
                      "description": "The number of milliseconds to wait between polling for new blocks",
                      "defaultValue": "1000"
                    },
                    "DRO__NETWORK__EXTERNAL_P2P_ADDRESS": {
                      "isOptional": false,
                      "description": "The external address to reach the Operator node at for p2p communications",
                      "defaultValue": "${{RAILWAY_TCP_PROXY_DOMAIN}}"
                    },
                    "DRO__NETWORK__EXTERNAL_RPC_ADDRESS": {
                      "isOptional": false,
                      "description": "The external address to reach the Operator node's rpc server. Useful for proxies. Default is the network external p2p address. If provided and starts with either http or https, the value will be used as is by the seed node to retrieve liveness data. Otherwise, if a dns or ip is provided without a protocol, http is assumed and the server port will be appended.",
                      "defaultValue": "https://${{RAILWAY_PUBLIC_DOMAIN}}"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "31313": {}
                    }
                  },
                  "volumeMounts": {
                    "8540b4c5-bfb8-4679-801c-bea1990cb57a": {
                      "mountPath": "/app/.data/drosera.db"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": true
  },
  "generated_at": "2026-09-15T22:14:40.394Z",
  "generator_version": "0.1.0"
}
