---
title: "Deploy Uptime"
description: "Monitor uptime, logs, alerts & status pages in one platform"
category: "Other"
url: https://railway.com/deploy/uptime
---

# Deploy Uptime

Monitor uptime, logs, alerts & status pages in one platform

**[Deploy Uptime on Railway](https://railway.com/template/uptime)**

- **Category:** Other

## Template content

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2.1
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### app

- **Image:** oneuptime/app:11.5.10
- **Health check:** /status/ready

### clickhouse

- **Image:** clickhouse/clickhouse-server:25.7
- **Start command:** `sh -c 'printf "%s" "$ONEUPTIME_CLICKHOUSE_CONFIG_B64" | base64 -d | tar -xz -C / && exec /entrypoint.sh'`
- **Health check:** /ping

### probe

- **Image:** oneuptime/probe:11.5.10
- **Health check:** /status/ready

### ingress

- **Image:** oneuptime/nginx:11.5.10
- **Start command:** `bash -c "until curl -fsS \"http://${SERVER_APP_HOSTNAME}:${APP_PORT}/status/ready\" >/dev/null; do sleep 2; done && export NGINX_LISTEN_ADDRESS=\"${NGINX_LISTEN_ADDRESS:-}\" NGINX_LISTEN_OPTIONS=\"${NGINX_LISTEN_OPTIONS:-}\" PROVISION_SSL=\"${PROVISION_SSL:-}\" && cp run.sh /tmp/run-railway.sh && sed -i '/^NGINX_RESOLVER=/a [[ \"$NGINX_RESOLVER\" == *:* ]] && NGINX_RESOLVER=\"[$NGINX_RESOLVER]\"' /tmp/run-railway.sh && chmod +x /tmp/run-railway.sh && exec /tmp/run-railway.sh"`
- **Health check:** /status/ready
- **Public domain:** Yes

### ai-agent

- **Image:** oneuptime/ai-agent:11.5.10
- **Health check:** /status/ready

## Documentation

# 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:

1. Open the Railway project.
2. Select the service.
3. Open **Settings → Volumes**.
4. Click **Add Volume**.
5. 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:

```env
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 &amp; 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:

1. Open the **ingress** service.
2. Navigate to **Settings → Networking**.
3. Click **Generate Domain**.
4. Visit the generated HTTPS URL.
5. Create the first administrator account.
6. Create your organization.
7. Configure notification providers.
8. 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

```text
                 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.

## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/uptime
