Railway

Deploy SigNoz

Observability tool for your app's traces, metrics and logs

Deploy SigNoz

Just deployed

/var/lib/clickhouse

/var/lib/postgresql/data

clickhouse-keeper

gridalpha/signoz-railway

Just deployed

/var/lib/clickhouse-keeper

Just deployed

Just deployed

/var/lib/signoz

Just deployed

Deploy and Host SigNoz on Railway

SigNoz is an open-source, OpenTelemetry-native observability platform that keeps traces, metrics and logs in one place instead of three. Teams run it as a self-hosted alternative to Datadog and New Relic: APM, distributed tracing, log search, dashboards and alerting, all queried out of a ClickHouse column store that stays fast on high-cardinality data. Because it speaks OpenTelemetry natively, any language SDK you already run can point at it without a proprietary agent.

Deploy SigNoz on Railway and you get the full production topology, not a single container: the SigNoz app (UI, query API and OpAMP server), an OpenTelemetry Collector receiving OTLP over gRPC and HTTP, a one-shot schema migrator for the ClickHouse tables, ClickHouse as the telemetry store, a ClickHouse Keeper node, and a managed Postgres for users, dashboards and alert rules. Your apps send telemetry to the collector, it writes into ClickHouse, and the UI reads back from it. Self-host SigNoz on Railway without wiring six containers together by hand.

Diagram of the six SigNoz services deployed on Railway

Getting Started with SigNoz on Railway

Set SIGNOZ_USER_ROOT_EMAIL and SIGNOZ_USER_ROOT_PASSWORD when you deploy — the app creates that admin on first boot and reconciles it on every restart, so the instance is never left with an open signup page. The password needs 12+ characters with an uppercase letter, a lowercase letter, a digit and a symbol, or the service refuses to start. Open the SigNoz service's public URL, sign in, and you land on a home screen reporting whether ingestion is active.

Next, point an application at the collector. Its public domain accepts OTLP over HTTP on /v1/traces, /v1/logs and /v1/metrics, behind basic auth using OTLP_USERNAME and OTLP_PASSWORD; add a Railway TCP proxy on port 4317 for OTLP over gRPC. Apps in the same project can skip the public hop and use the collector's private hostname on port 4318. Once spans arrive, the Services page lists each application with P99 latency, error rate and throughput, and clicking one opens its APM view. To confirm the deployment end to end, send a handful of spans and check they appear in both Services and the Traces explorer.

SigNoz service list showing P99 latency and error rate

SigNoz APM view with latency percentiles and Apdex charts

SigNoz trace explorer listing spans across three services

SigNoz log explorer filtered by severity and environment

About Hosting SigNoz

SigNoz answers a question most teams hit around their second production incident: why does understanding one request mean opening three tools? It stores traces, metrics and logs in the same ClickHouse database, so a slow endpoint on a dashboard leads to the spans behind it and the logs those spans emitted. Teams self-host it to keep telemetry on their own infrastructure and avoid per-host billing.

  • OpenTelemetry-native ingestion — no proprietary agent, no vendor SDK
  • APM with latency percentiles, error rates, Apdex and database breakdowns
  • Distributed tracing with flamegraphs, trace funnels and span search
  • Log management with severity filtering, live tail and parsing pipelines
  • Dashboards and alerting to Slack, PagerDuty, webhooks or email

The Railway architecture splits the work the way SigNoz's own installer does. SigNoz serves the UI and query API and pushes log-parsing pipelines to the collector over OpAMP. The OTel Collector is the only ingest path; it batches spans, derives span metrics and writes to ClickHouse. The Schema Migrator runs once per deploy to create and upgrade ClickHouse tables. ClickHouse stores the telemetry, with ClickHouse Keeper coordinating its distributed DDL, and Postgres holds accounts, dashboards and alert rules.

Why Deploy SigNoz on Railway

Railway runs the whole stack as one project rather than a hand-assembled compose file.

  • Six services provisioned and wired together in one click
  • Persistent volumes for ClickHouse, Keeper and the app
  • Private networking between the collector, ClickHouse and app
  • A public HTTPS domain for the UI plus an authenticated ingest endpoint
  • Vertical scaling as telemetry grows, with no per-host licence

Common Use Cases

  • Application performance monitoring — track P99 latency, error rate and throughput per service, then drill into the traces behind a regression
  • Debugging production incidents — correlate a failing request's trace with the logs its spans emitted
  • Centralised log management — ship logs from every service into one searchable store with severity and attribute filters
  • Cost-controlled observability — replace per-host APM billing with infrastructure you size yourself

Dependencies for SigNoz

  • signoz/signoz:latest — API server, query service and web UI (GitHub)
  • signoz/signoz-otel-collector:latest — OTLP ingest and the schema migrator
  • clickhouse/clickhouse-server:25.12.5 — telemetry store for traces, metrics, logs
  • clickhouse/clickhouse-keeper:25.12.5 — coordination for distributed DDL
  • Railway managed Postgres — metastore for users, dashboards, alert rules

Environment Variables Reference

VariableServicePurpose
SIGNOZ_USER_ROOT_EMAIL / _PASSWORDSigNozAdmin account created on first boot
SIGNOZ_TOKENIZER_JWT_SECRETSigNozSigns session tokens; keep it stable
SIGNOZ_SQLSTORE_POSTGRES_DSNSigNozMetastore connection string
SIGNOZ_GLOBAL_EXTERNAL__URLSigNozPublic URL used in alert links
OTLP_USERNAME / OTLP_PASSWORDOTel CollectorBasic auth on both OTLP listeners
CLICKHOUSE_PASSWORDallShared ClickHouse credential

Note the double underscore: SigNoz maps _ to a nesting level and __ to a literal underscore, so SIGNOZ_GLOBAL_EXTERNAL_URL silently sets nothing.

Deployment Dependencies

Hardware Requirements for Self-Hosting SigNoz

ResourceMinimumRecommended
CPU2 vCPU4–8 vCPU
RAM4 GB total8–16 GB, most of it ClickHouse
Storage5 GB ClickHouse volume20 GB+, sized to retention
RuntimeLinux containersLinux containers

ClickHouse is the component that grows: storage tracks ingest volume times retention, and query latency depends far more on its memory than on the app service.

Self-Hosting SigNoz

Upstream installs SigNoz through Foundry, a CLI that generates deployment manifests from a casting.yaml:

curl -fsSL https://signoz.io/foundry.sh | bash
foundryctl forge
foundryctl cast

That brings up ClickHouse, a Keeper node, Postgres, the collector and the app. Point any OpenTelemetry SDK at the collector with the standard exporter variables:

OTEL_EXPORTER_OTLP_ENDPOINT=https://your-collector-domain
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Basic 
OTEL_RESOURCE_ATTRIBUTES=service.name=checkout-api,deployment.environment=production

On Railway the same variables apply, with the collector's public domain as the endpoint.

How Much Does SigNoz Cost to Self-Host?

SigNoz is open source and the self-hosted edition is free — no licence fee, seat count or per-host charge. You pay only for the infrastructure it runs on, which on Railway means the compute and volume usage of six services. That is why teams move: managed APM vendors bill per host or per ingested gigabyte, and at 100 GB of logs a day the gap is routinely an order of magnitude. A paid SigNoz Cloud exists if you would rather not operate it.

FAQ

What is SigNoz? SigNoz is an open-source observability platform that collects traces, metrics and logs through OpenTelemetry and stores them in ClickHouse, giving you APM, tracing, log search, dashboards and alerting in one UI.

What does this Railway template deploy? Six services: the SigNoz app, an OpenTelemetry collector, a ClickHouse schema migrator, ClickHouse, ClickHouse Keeper and a managed Postgres metastore, with volumes and private networking configured.

Why does SigNoz need both ClickHouse and Postgres? ClickHouse is the telemetry store — every span, metric point and log line — and its column layout is what makes high-cardinality queries fast. Postgres holds the small relational data: accounts, dashboards and alert rules.

How do I send traces to self-hosted SigNoz from my application? Set OTEL_EXPORTER_OTLP_ENDPOINT to the collector's domain, OTEL_EXPORTER_OTLP_PROTOCOL to http/protobuf and an Authorization: Basic header from OTLP_USERNAME and OTLP_PASSWORD.

Is the OTLP ingest endpoint open to the internet? It is reachable publicly but not anonymous: both listeners sit behind HTTP basic auth and an unauthenticated request is rejected with 401. Rotate it by changing OTLP_PASSWORD on the collector.

Can I run more than one replica of the SigNoz app? No. It runs metastore migrations and the alert ruler in-process without leader election, so keep it at one replica and scale vertically. Retention is set per signal in the UI and enforced by ClickHouse TTLs — size that volume to ingest rate times retention.


Template Content

More templates in this category

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
View Template
Unwrapped Spotify Music Stats
Unwrapped Spotify Music Stats, Estatísticas de músicas disponíveis

Jorge Henrique
1