
Deploy Uptime
Monitor uptime, logs, alerts & status pages in one platform
Redis
Just deployed
/data
Just deployed
/var/lib/postgresql/data
Just deployed
clickhouse
Just deployed
/var/lib/clickhouse
Just deployed
ingress
Just deployed
ai-agent
Just deployed
Deploy and Host OneUptime on Railway
OneUptime is an open-source observability platform that brings uptime monitoring, incident management, status pages, on-call scheduling, logging, metrics, distributed tracing, error tracking, and application performance monitoring (APM) together in one application. Instead of managing multiple SaaS products, teams can self-host OneUptime to monitor infrastructure, respond to incidents, collect telemetry, and communicate system health from a centralized dashboard.
About Hosting OneUptime
This Railway template deploys a complete OneUptime stack using multiple containerized services. The deployment includes the OneUptime App, NGINX Ingress, Monitoring Probe, AI Agent, PostgreSQL, Redis, and ClickHouse. Railway automatically provisions each service, connects them over a private network, generates secure internal DNS, manages secrets through Variables, provides HTTPS via Railway Domains, and supports persistent storage using Railway Volumes.
PostgreSQL stores application and configuration data, Redis powers caching and background workers, and ClickHouse stores observability data such as logs, traces, metrics, and telemetry. Railway manages service networking and health checks, making it easy to deploy, update, and scale the entire observability platform without managing infrastructure manually. After deployment, simply generate a Railway domain for the Ingress service and create the first administrator account.
Common Use Cases
- Monitor websites, APIs, SSL certificates, DNS records, TCP ports, and synthetic transactions.
- Manage production incidents with on-call schedules, alert escalations, and public status pages.
- Collect logs, distributed traces, metrics, and application performance data using OpenTelemetry.
Dependencies for OneUptime Hosting
| Dependency | Purpose |
|---|---|
| PostgreSQL | Primary relational database |
| Redis | Cache, queues, scheduled jobs, background workers |
| ClickHouse | Logs, metrics, traces, observability storage |
Deployment Dependencies
| Resource | URL |
|---|---|
| Official Website | https://oneuptime.com |
| Documentation | https://docs.oneuptime.com |
| GitHub Repository | https://github.com/OneUptime/oneuptime |
| Docker Hub | https://hub.docker.com/u/oneuptime |
| ClickHouse | https://clickhouse.com |
| Redis | https://redis.io |
| PostgreSQL | https://www.postgresql.org |
Implementation Details
Template Services
This Railway template deploys the following services:
| Service | Docker Image | Purpose |
|---|---|---|
| app | oneuptime/app:11.5.10 | Main OneUptime application |
| ingress | oneuptime/nginx:11.5.10 | Public HTTP gateway and reverse proxy |
| probe | oneuptime/probe:11.5.10 | Executes uptime and synthetic monitoring checks |
| ai-agent | oneuptime/ai-agent:11.5.10 | AI-powered observability and automation |
| Postgres | ghcr.io/railwayapp-templates/postgres-ssl:18 | Application database |
| Redis | redis:8.2.1 | Cache and background jobs |
| clickhouse | clickhouse/clickhouse-server:25.7 | Observability database |
Docker Images
The template deploys official pre-built Docker images, so Railway pulls the images directly without building from source.
| Service | Image |
|---|---|
| App | oneuptime/app:11.5.10 |
| Ingress | oneuptime/nginx:11.5.10 |
| Probe | oneuptime/probe:11.5.10 |
| AI Agent | oneuptime/ai-agent:11.5.10 |
| PostgreSQL | ghcr.io/railwayapp-templates/postgres-ssl:18 |
| Redis | redis:8.2.1 |
| ClickHouse | clickhouse/clickhouse-server:25.7 |
No custom build commands are required because every service uses a published Docker image.
Public Networking
Only the Ingress service should be exposed publicly.
| Setting | Value |
|---|---|
| Public Service | ingress |
| Proxy Type | HTTP Proxy |
| HTTPS | Enabled automatically |
| Internal Services | Private Railway Network |
The remaining services communicate only through Railway's internal networking.
Railway Volumes
Persistent storage should be attached to the following services.
| Service | Mount Path |
|---|---|
| PostgreSQL | /var/lib/postgresql/data |
| ClickHouse | /var/lib/clickhouse |
| Redis | /data |
To configure a volume:
- Open the Railway project.
- Select the service.
- Open Settings → Volumes.
- Click Add Volume.
- Use the mount path listed above.
The App, Probe, AI Agent, and Ingress services do not require persistent storage.
Database Services
PostgreSQL
Stores:
- Organizations
- Users
- Monitors
- Incidents
- Status pages
- Configuration
- Alert policies
Use Railway reference variables for the database connection.
Redis
Handles:
- Background workers
- Cache
- Task queues
- Scheduled jobs
- Rate limiting
Persistence is recommended.
ClickHouse
Stores:
- Logs
- Metrics
- Distributed traces
- Telemetry
- Time-series data
Persistent storage is required to retain observability data.
Environment Variables
Most required variables are automatically generated by the Railway template.
Typical configuration includes:
| Variable | Required | Description |
|---|---|---|
| DATABASE_URL | Yes | PostgreSQL connection string |
| REDIS_URL | Yes | Redis connection string |
| CLICKHOUSE_URL | Yes | ClickHouse HTTP connection |
| APP_SECRET | Yes | Application secret |
| JWT_SECRET | Yes | JWT signing secret |
| BASE_URL | Yes | Public Railway domain |
| SMTP_HOST | Optional | SMTP server |
| SMTP_USERNAME | Optional | SMTP username |
| SMTP_PASSWORD | Optional | SMTP password |
| OPENAI_API_KEY | Optional | Enables AI features |
Example:
DATABASE_URL=${{Postgres.DATABASE_URL}}
REDIS_URL=${{Redis.REDIS_URL}}
CLICKHOUSE_URL=http://clickhouse:8123
APP_SECRET=
JWT_SECRET=
BASE_URL=https://your-app.up.railway.app
Secrets should always be stored using Railway Variables.
Build & Start
Since every service uses published Docker images, Railway does not perform any application builds.
No custom build or start commands are required.
Accessing the Application
After deployment:
- Open the ingress service.
- Navigate to Settings → Networking.
- Click Generate Domain.
- Visit the generated HTTPS URL.
- Create the first administrator account.
- Create your organization.
- Configure notification providers.
- Create uptime monitors, dashboards, incidents, and status pages.
Platform Limitations
The following features are not available in Railway's standard runtime:
- ICMP (Ping) monitoring
- Docker socket monitoring
- Host-level container discovery
- Inbound UDP collectors
SMTP is only available on Railway plans that support outbound email. On lower plans, configure an external transactional email provider that exposes an HTTPS API.
Custom domains for status pages can be configured through Railway → Settings → Networking after deployment.
Service Architecture
Internet
│
▼
Railway Domain
│
▼
ingress (NGINX)
│
┌───────────┼───────────┐
│ │
▼ ▼
app probe
│ │
├──────────────┐ │
▼ ▼ ▼
PostgreSQL Redis AI Agent
│
▼
ClickHouse
Why Deploy OneUptime 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 OneUptime 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
Redis
redis:8.2.1clickhouse
clickhouse/clickhouse-server:25.7ingress
oneuptime/nginx:11.5.10ai-agent
oneuptime/ai-agent:11.5.10