Deploy Uptimy Agent

Self-hosted uptime monitoring and status page for your Railway services

Deploy Uptimy Agent

Just deployed

/data

Deploy and Host Uptimy Agent on Railway

Uptimy Agent is open-source, self-hosted uptime monitoring with a public status page. It checks websites, APIs, Postgres, MySQL, Redis, DNS, TLS certificates and cron jobs, and alerts you by email, Slack, Teams, Discord, Telegram, ntfy, PagerDuty or webhooks. One small Go binary with a web UI. Apache-2.0.

See it live: demo status page, an agent watching its own Railway project.

About Hosting Uptimy Agent

The agent runs as a single service with a volume at /data for its SQLite database, so keep it at one replica. Because it runs inside your project, it can reach services over private networking (*.railway.internal) that external monitors can't see, and check your databases with a real login and query. Pass connection URLs as reference variables (PG_URL = ${{Postgres.DATABASE_URL}}) and use ${PG_URL} as a monitor's target, so passwords never land in the agent's database. Sign in as admin with the generated ADMIN_PASSWORD from the service's Variables tab. The public status page is served at /status on the generated domain.

Common Use Cases

  • Monitor private services and workers on *.railway.internal without exposing them
  • Check Postgres, MySQL and Redis with real logins and queries, not just an open port
  • Catch missed or failed cron jobs and backups: a Railway cron service pings a heartbeat URL after each run
  • Watch the third-party APIs and websites your app depends on
  • Publish a status page for your customers with your logo, sections and scheduled maintenance notices
  • Replace an Uptime Kuma deploy: import kuma.db with its monitors and notifications

Dependencies for Uptimy Agent Hosting

  • A volume mounted at /data
  • RAILWAY_RUN_UID=0 so the agent can write to the volume

Deployment Dependencies

Implementation Details

Monitors can be added in the UI or defined as config with the MONITORS_YAML variable. Reference variables keep targets correct when services are renamed. This is the demo's setup:

healthchecks:
  - name: Website over private networking
    type: http
    target: http://${{nodejs.RAILWAY_PRIVATE_DOMAIN}}:3000
  - name: Postgres
    type: postgres
    target: ${PG_URL}
  - name: Postgres is the primary
    type: postgres
    target: ${PG_URL}
    config: { query: "SELECT pg_is_in_recovery()", expected: "false" }
heartbeats:
  - name: Database backup
    every: 5m
    grace: 3m

For the heartbeat, a cron service (curlimages/curl, schedule */5 * * * *) runs curl -fsS https://<agent-domain>/ping/<token>, and the agent alerts when a run is missed.

A monitor running on Railway can't tell you when Railway itself is down. Connect the agent to Uptimy (free) under Settings → Watch the watcher, and Uptimy alerts you from outside if the agent stops checking in.

Why Deploy Uptimy Agent on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Uptimy Agent on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Rootprint
Open-source logs and traces with full-text search on object-storage.

Rootprint
1
View Template
Pyroscope profiling
Protected continuous profiling with durable Pyroscope storage.

Anton Orel
1
View Template
SigOnly
Deploy SigNoz with a working demo app & config in one click

zoeyjones
22