Deploy Uptimy Agent
Self-hosted uptime monitoring and status page for your Railway services
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.internalwithout 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.dbwith its monitors and notifications
Dependencies for Uptimy Agent Hosting
- A volume mounted at
/data RAILWAY_RUN_UID=0so the agent can write to the volume
Deployment Dependencies
- Source and docs: https://github.com/uptimy/agent
- Image:
ghcr.io/uptimy/agent - Railway setup notes: https://github.com/uptimy/agent/blob/main/deploy/railway.md
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
Uptimy Agent
ghcr.io/uptimy/agent:latest
