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

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions