Skip to content

[SELF-HOSTED] Monitor endpoint not reachable with "Checker response is not valid." #1722

@bradub

Description

@bradub

Reproduction / Replay Link (Optional)

No response

Description

After starting all required containers, when trying to create a new monitor, it constantly fails with the following error Checker response is not valid. Please try again. If the problem persists, please contact support.
I've been spending the last 5 hours trying to debug this unsuccessfully.

docker ps

0fa2b697101b   openstatus/private-location:latest                    "/opt/bin/private-lo…"   20 minutes ago   Up 20 minutes (healthy)      0.0.0.0:8081->8080/tcp, [::]:8081->8080/tcp                                                openstatus-private-location
e3264d1d2518   openstatus/dashboard:latest                           "docker-entrypoint.s…"   38 minutes ago   Up 38 minutes (healthy)      0.0.0.0:3002->3000/tcp, [::]:3002->3000/tcp                                                openstatus-dashboard
fcea39e0b584   openstatus/status-page:latest                         "docker-entrypoint.s…"   38 minutes ago   Up 38 minutes (healthy)      0.0.0.0:3003->3000/tcp, [::]:3003->3000/tcp                                                openstatus-status-page
838669c6b796   openstatus/server:latest                              "/bin/app"               38 minutes ago   Up 38 minutes (healthy)      0.0.0.0:3001->3000/tcp, [::]:3001->3000/tcp                                                openstatus-server
a2922bf2adde   openstatus/workflows:latest                           "/app/apps/workflows…"   38 minutes ago   Up 38 minutes (healthy)      0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp                                                openstatus-workflows
7c7da0401980   ghcr.io/tursodatabase/libsql-server:latest            "/usr/local/bin/dock…"   38 minutes ago   Up 38 minutes (healthy)      0.0.0.0:5001->5001/tcp, [::]:5001->5001/tcp, 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   openstatus-libsql
252c0b8c7341   tinybirdco/tinybird-local:latest                      "/usr/bin/supervisord"   38 minutes ago   Up 38 minutes (healthy)      0.0.0.0:7181->7181/tcp, [::]:7181->7181/tcp, 7182/tcp                                      openstatus-tinybird

docker logs openstatus-dashboard

Checker HTTP test failed for https://www.google.com/: [
  {
    "code": "invalid_union",
    "errors": [
      [
        {
          "expected": "number",
          "code": "invalid_type",
          "path": [
            "status"
          ],
          "message": "Invalid input: expected number, received undefined"
        },
        {
          "expected": "number",
          "code": "invalid_type",
          "path": [
            "latency"
          ],
          "message": "Invalid input: expected number, received undefined"
        },
        {
          "expected": "record",
          "code": "invalid_type",
          "path": [
            "headers"
          ],
          "message": "Invalid input: expected record, received undefined"
        },
        {
          "expected": "number",
          "code": "invalid_type",
          "path": [
            "timestamp"
          ],
          "message": "Invalid input: expected number, received undefined"
        },
        {
          "expected": "object",
          "code": "invalid_type",
          "path": [
            "timing"
          ],
          "message": "Invalid input: expected object, received undefined"
        },
        {
          "code": "invalid_value",
          "values": [
            "ams",
            "arn",
            "atl",
            "bog",
            "bom",
            "bos",
            "cdg",
            "den",
            "dfw",
            "ewr",
            "eze",
            "fra",
            "gdl",
            "gig",
            "gru",
            "hkg",
            "iad",
            "jnb",
            "lax",
            "lhr",
            "mad",
            "mia",
            "nrt",
            "ord",
            "otp",
            "phx",
            "qro",
            "scl",
            "sjc",
            "sea",
            "sin",
            "syd",
            "waw",
            "yul",
            "yyz",
            "koyeb_fra",
            "koyeb_was",
            "koyeb_sin",
            "koyeb_tyo",
            "koyeb_par",
            "koyeb_sfo",
            "railway_europe-west4-drams3a",
            "railway_us-east4-eqdc4a",
            "railway_asia-southeast1-eqsg3a",
            "railway_us-west2"
          ],
          "path": [
            "region"
Error in tRPC handler (edge)
          ],
          "message": "Invalid option: expected one of \"ams\"|\"arn\"|\"atl\"|\"bog\"|\"bom\"|\"bos\"|\"cdg\"|\"den\"|\"dfw\"|\"ewr\"|\"eze\"|\"fra\"|\"gdl\"|\"gig\"|\"gru\"|\"hkg\"|\"iad\"|\"jnb\"|\"lax\"|\"lhr\"|\"mad\"|\"mia\"|\"nrt\"|\"ord\"|\"otp\"|\"phx\"|\"qro\"|\"scl\"|\"sjc\"|\"sea\"|\"sin\"|\"syd\"|\"waw\"|\"yul\"|\"yyz\"|\"koyeb_fra\"|\"koyeb_was\"|\"koyeb_sin\"|\"koyeb_tyo\"|\"koyeb_par\"|\"koyeb_sfo\"|\"railway_europe-west4-drams3a\"|\"railway_us-east4-eqdc4a\"|\"railway_asia-southeast1-eqsg3a\"|\"railway_us-west2\""
        }
      ],
      [
        {
          "expected": "string",
          "code": "invalid_type",
          "path": [
            "message"
          ],
          "message": "Invalid input: expected string, received undefined"
        }
      ]
    ],
    "path": [],
    "message": "Invalid input"
  }
]
Checker HTTP test failed TRPCError: Checker response is not valid. Please try again. If the problem persists, please contact support.
    at edT (.next/server/edge/chunks/_6b96e0cf._.js:562:36585)
    at async (.next/server/edge/chunks/_6b96e0cf._.js:564:34175)
    at async ea6.middlewares (.next/server/edge/chunks/_6b96e0cf._.js:556:6685)
    at async ea8 (.next/server/edge/chunks/_6b96e0cf._.js:559:70)
    at async ea8 (.next/server/edge/chunks/_6b96e0cf._.js:559:70)
    at async (.next/server/edge/chunks/_6b96e0cf._.js:559:13045)
    at async ea8 (.next/server/edge/chunks/_6b96e0cf._.js:559:70)
    at async t (.next/server/edge/chunks/_6b96e0cf._.js:556:6924)
    at async (.next/server/edge/chunks/_6b96e0cf._.js:17:242293) {
  cause: undefined,
  code: 'BAD_REQUEST'
}
TRPCError: Checker response is not valid. Please try again. If the problem persists, please contact support.
    at edT (.next/server/edge/chunks/_6b96e0cf._.js:562:36585)
    at async (.next/server/edge/chunks/_6b96e0cf._.js:564:34175)
    at async ea6.middlewares (.next/server/edge/chunks/_6b96e0cf._.js:556:6685)
    at async ea8 (.next/server/edge/chunks/_6b96e0cf._.js:559:70)
    at async ea8 (.next/server/edge/chunks/_6b96e0cf._.js:559:70)
    at async (.next/server/edge/chunks/_6b96e0cf._.js:559:13045)
    at async ea8 (.next/server/edge/chunks/_6b96e0cf._.js:559:70)
    at async t (.next/server/edge/chunks/_6b96e0cf._.js:556:6924)
    at async (.next/server/edge/chunks/_6b96e0cf._.js:17:242293) {
  cause: undefined,
  code: 'BAD_REQUEST'
}

.env.docker

# ============================================================================
# MINIMAL CONFIGURATION - OpenStatus Docker Setup
# ============================================================================
# This is a streamlined configuration with only essential variables.
# Generated for: Core services + Public status pages
# ============================================================================

# DATABASE
# ============================================================================
# LibSQL database connection - points to the libsql container
# This is auto-configured in docker-compose.yaml but included for reference
DATABASE_URL=http://libsql:8080
DATABASE_AUTH_TOKEN=basic:token

# AUTHENTICATION
# ============================================================================
# [REQUIRED] NextAuth secret for session encryption
AUTH_SECRET=<actual-auth-secret>

# [REQUIRED] Self-hosted mode - enables magic link authentication
SELF_HOST="true"

# [REQUIRED] Resend API key for email authentication
# Using "test" for local development - emails won't actually send
# Get real API key from: https://resend.com
RESEND_API_KEY=test

# SERVICE CONFIGURATION
# ============================================================================
NODE_ENV=production

# [REQUIRED] Public URL for the application
NEXT_PUBLIC_URL=http://<actual-ip>:3002

# Server region identifier
FLY_REGION=otp

# UPSTASH REDIS
# ============================================================================
# [REQUIRED] Upstash Redis connection for rate limiting and caching
# Using placeholder for self-hosted - you'll need to set up your own Redis
UPSTASH_REDIS_REST_URL=http://localhost:8079
UPSTASH_REDIS_REST_TOKEN=test

# QSTASH (Queue Management)
# ============================================================================
# [OPTIONAL] Upstash QStash for background job processing
# Using placeholders for self-hosted - these features will be disabled
QSTASH_CURRENT_SIGNING_KEY=
QSTASH_NEXT_SIGNING_KEY=
QSTASH_TOKEN=
QSTASH_URL=https://qstash.upstash.io/v1/publish/

# GOOGLE CLOUD PLATFORM
# ============================================================================
# [OPTIONAL] GCP credentials for Cloud Tasks scheduling
# Using dummy values for self-hosted deployment
GCP_PROJECT_ID=openstatus-selfhosted
GCP_CLIENT_EMAIL=openstatus@openstatus-selfhosted.iam.gserviceaccount.com
GCP_PRIVATE_KEY=<pk>
GCP_LOCATION=us-central1
CRON_SECRET=

# TINYBIRD (Analytics)
# ============================================================================
# [OPTIONAL] Tinybird API key for monitor analytics
# Leave empty to disable - local Tinybird instance doesn't need API key
TINY_BIRD_API_KEY=

# CLICKHOUSE (Real User Monitoring)
# ============================================================================
# [OPTIONAL] ClickHouse for RUM data
# Leave empty if not using RUM features
CLICKHOUSE_URL=
CLICKHOUSE_USERNAME=
CLICKHOUSE_PASSWORD=

# STORAGE
# ============================================================================
# [OPTIONAL] Vercel Blob storage for file uploads
# Leave empty to disable file upload features
BLOB_READ_WRITE_TOKEN=

# ANALYTICS & OBSERVABILITY
# ============================================================================
# [OPTIONAL] OpenPanel for analytics tracking
# Leave empty to disable analytics
NEXT_PUBLIC_OPENPANEL_CLIENT_ID=
OPENPANEL_CLIENT_SECRET=

# [OPTIONAL] Sentry for error tracking
NEXT_PUBLIC_SENTRY_DSN=
SENTRY_AUTH_TOKEN=

# API KEY MANAGEMENT
# ============================================================================
# [OPTIONAL] Unkey for API key management
UNKEY_API_ID=
UNKEY_TOKEN=

# PAYMENTS
# ============================================================================
# [OPTIONAL] Stripe for payment processing
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET_KEY=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=

# CUSTOM DOMAINS
# ============================================================================
# [OPTIONAL] Vercel for custom domain management
PROJECT_ID_VERCEL=
TEAM_ID_VERCEL=
VERCEL_AUTH_BEARER_TOKEN=

# PRIVATE LOCATION
# ============================================================================
# [REQUIRED] API key for private location authentication
OPENSTATUS_KEY=<actual-key>

# [REQUIRED] Self-hosted mode - point to local private-location service instead of cloud
# For self-hosted deployment, use the private-location container URL
OPENSTATUS_INGEST_URL=http://server:3000

# DEVELOPMENT
# ============================================================================
# Turbo build mode
TURBO_ENV_MODE=loose

Environment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions