---
title: "Deploy OpenTelemetry LGTM with Faro"
description: "Deploy and Host the LGTM stack with Opentelemetry and Faro RUM"
category: "Observability"
url: https://railway.com/deploy/opentelemetry-lgtm-with-faro
---

# Deploy OpenTelemetry LGTM with Faro

Deploy and Host the LGTM stack with Opentelemetry and Faro RUM

**[Deploy OpenTelemetry LGTM with Faro on Railway](https://railway.com/template/opentelemetry-lgtm-with-faro)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/opentelemetry-lgtm-with-faro/manifest.json

- **Creator:** Jonas Atienza's Projects
- **Category:** Observability

## Template content

### Grafana https://devicons.railway.app/grafana

- **Source:** https://github.com/jratienza65/otel-lgtm-railway
- **Health check:** /api/health
- **Public domain:** Yes

### Prometheus https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/prometheus.svg

- **Source:** https://github.com/jratienza65/otel-lgtm-railway
- **Health check:** /metrics

### Loki https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/loki.svg

- **Source:** https://github.com/jratienza65/otel-lgtm-railway
- **Health check:** /ready

### Alloy https://grafana.com/media/oss/alloy/alloy-logo.svg

- **Source:** https://github.com/jratienza65/otel-lgtm-railway
- **Health check:** /ready
- **Public domain:** Yes

### OpenTelemetry Collector https://devicons.railway.app/opentelemetry

- **Source:** https://github.com/jratienza65/otel-lgtm-railway
- **Health check:** /ready
- **Public domain:** Yes

### Tempo https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/tempo.svg

- **Source:** https://github.com/jratienza65/otel-lgtm-railway
- **Health check:** /ready

## Documentation

# Deploy and Host OpenTelemetry LGTM with Faro on Railway

OpenTelemetry LGTM with Faro is the full observability stack — Loki, Grafana, Tempo, Prometheus and an OpenTelemetry Collector — with a Grafana Alloy service added in front to receive browser and mobile telemetry. Backend services send OTLP to the collector as usual, while frontends send Faro payloads to Alloy, which normalizes and forwards them through the same pipeline.

## About Hosting OpenTelemetry LGTM with Faro

Hosting this stack means running six services: an OpenTelemetry Collector as the ingest hub, an Alloy service dedicated to the Faro protocol, and Loki, Tempo, Prometheus and Grafana behind them. Alloy is needed because the Faro Web SDK posts its own JSON payload that no collector build can accept; it parses that and hands OTLP to the collector, so every signal still passes through one place before reaching storage.

On Railway the backends take volumes, the collector and Alloy get public domains for ingest, and Grafana arrives with datasources, correlation and a frontend dashboard already provisioned.

## Common Use Cases

- OTLP-first observability that also needs browser RUM, without splitting into two stacks
- Debugging a user-reported frontend error through to the backend trace that caused it
- Monitoring services and frontends against a single retention and alerting policy
- Migrating off a hosted observability vendor while keeping both server and browser telemetry

## Dependencies for OpenTelemetry LGTM with Faro Hosting

- OpenTelemetry Collector
- Grafana Alloy
- Grafana
- Prometheus
- Loki
- Tempo

### Deployment Dependencies

- OpenTelemetry: https://opentelemetry.io/docs/
- OpenTelemetry Collector: https://opentelemetry.io/docs/collector/
- Grafana Alloy: https://grafana.com/docs/alloy/latest/
- Grafana: https://grafana.com/docs/
- Prometheus: https://prometheus.io/docs/introduction/overview/
- Loki: https://grafana.com/docs/loki/latest/
- Tempo: https://grafana.com/docs/tempo/latest/

### Implementation Details

OpenTelemetry Collector endpoints (internal Railway networking):

```
RAILWAY_LOKI_ENDPOINT="http://${{Loki.RAILWAY_PRIVATE_DOMAIN}}:3100/otlp"
RAILWAY_TEMPO_ENDPOINT="http://${{Tempo.RAILWAY_PRIVATE_DOMAIN}}:4318"
RAILWAY_PROMETHEUS_ENDPOINT="http://${{Prometheus.RAILWAY_PRIVATE_DOMAIN}}:9090/api/v1/otlp"
```

The collector's OTLP ingest requires credentials, one `user:password` line per producer so any single one can be revoked or rotated alone:

```
RAILWAY_OTEL_HTPASSWD="railway:${{ secret(32) }}"
```

The Alloy service receives Faro on port **12347** and forwards to the collector with its own credential line. `PORT` points Railway's health probe at Alloy's own HTTP server:

```
PORT=12345
FARO_API_KEY="${{ secret(32) }}"
FARO_CORS_ALLOWED_ORIGINS="https://app.example.com,http://localhost:3000"
OTEL_EXPORTER_OTLP_ENDPOINT="http://${{OpenTelemetry Collector.RAILWAY_PRIVATE_DOMAIN}}:4318"
OTEL_UPSTREAM_USERNAME="faro"
OTEL_UPSTREAM_PASSWORD="${{ secret(32) }}"
```

Grafana auto-wired data sources — the same variable names, but base URLs rather than OTLP paths:

```
RAILWAY_LOKI_ENDPOINT="http://${{Loki.RAILWAY_PRIVATE_DOMAIN}}:3100"
RAILWAY_TEMPO_ENDPOINT="http://${{Tempo.RAILWAY_PRIVATE_DOMAIN}}:3200"
RAILWAY_PROMETHEUS_ENDPOINT="http://${{Prometheus.RAILWAY_PRIVATE_DOMAIN}}:9090"
```

Frontend telemetry lands under `service.namespace="faro"`, so it can be given its own retention and is what the bundled Frontend Observability dashboard queries.

## Why Deploy OpenTelemetry LGTM with Faro 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 OpenTelemetry LGTM with Faro 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

- [Pyroscope profiling](https://railway.com/deploy/pyroscope-profiling) — Protected continuous profiling with durable Pyroscope storage.
- [SigOnly](https://railway.com/deploy/sigonly) — Deploy SigNoz with a working demo app & config in one click
- [Unwrapped Spotify Music Stats](https://railway.com/deploy/wide-bold) — Unwrapped Spotify Music Stats, Estatísticas de músicas disponíveis

Open this page in a browser: https://railway.com/deploy/opentelemetry-lgtm-with-faro
