Security & Monitoring10 min read

SigNoz on VPS: Open-Source APM in 15 Minutes

Datadog charges around $15 per host per month, with additional per-metric fees that balloon as your traffic grows. SigNoz is an open-source observability platform built on ClickHouse and OpenTelemetry that gives you traces, metrics, and logs on your own VPS — no subscription required. In fifteen minutes, you have a complete, self-hosted APM stack under your full control.

Why Replace Datadog or New Relic with SigNoz?

SaaS observability tools follow a punishing pricing model: free for a handful of hosts, then costs spiral with every new service. For a web agency managing ten client projects or an independent developer scaling a SaaS product, the monthly bill can easily exceed $200–500 with no proportional value gain.

SigNoz changes the equation. It is an open-source observability platform (Apache 2.0 license) powered by ClickHouse for high-performance trace and metric storage, and the OpenTelemetry protocol for instrumentation. Your data stays on your infrastructure, you control retention, and you only pay for the VPS running the stack.

What SigNoz Gives You

  • Distributed traces: visualize the full path of an HTTP request across your microservices, with spans, durations, and errors at every hop.
  • Prometheus-compatible metrics: import existing dashboards or build new ones directly in the SigNoz UI.
  • Centralized logs: collect and correlate structured logs from all your applications in a unified interface.
  • Configurable alerts: set thresholds on any metric and receive notifications via Slack, PagerDuty, or webhooks.
  • Customizable dashboards: build business or technical views in a few clicks — no LoQL or PromQL required.
  • Modern UI: responsive React interface accessible on port 8080 of your VPS, with no proprietary client-side agent.

Prerequisites Before You Start

SigNoz relies on ClickHouse, a columnar database engine that is memory-hungry. The recommended minimum is 4 GB of RAM — below that, ClickHouse gets killed by the kernel's OOM killer before the UI even loads. For production use with multiple instrumented applications, target 8 GB.

Full prerequisites:
- A VPS running Ubuntu 22.04 or Debian 12.
- Docker Engine ≥ 24 and Docker Compose V2 installed.
- Port 8080 open in your firewall (SigNoz UI).
- Ports 4317 (OTLP/gRPC) and 4318 (OTLP/HTTP) open to receive traces from your apps.
- Root or sudo access on the VPS.
- At least 20 GB of free disk space for ClickHouse and its data files.

Installing SigNoz via Foundry CLI

01

Step 1 — Install Docker on Your VPS

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker compose version
02

Step 2 — Install Foundry CLI (foundryctl)

Since v0.112.0, SigNoz uses the Foundry CLI as its official deployment method.

curl -L https://get.foundry.so/foundryctl/latest | bash
export PATH="$HOME/.foundry/bin:$PATH"
foundryctl --version
03

Step 3 — Create the casting.yaml File

mkdir -p /opt/signoz && cd /opt/signoz
cat > casting.yaml << 'EOF'
apiVersion: foundry.so/v1
kind: Casting
metadata:
  name: signoz
spec:
  release: stable
  components:
    - name: signoz
      enabled: true
    - name: clickhouse
      enabled: true
EOF
04

Step 4 — Run the Deployment

foundryctl cast -f casting.yaml

Foundry CLI pulls the Docker images, sets up persistent volumes, and starts the containers in the correct order. Full startup takes about 2–3 minutes.

05

Step 5 — Verify SigNoz Is Running

docker compose -f /opt/signoz/docker-compose.yaml ps

Then open your browser at http://<VPS_IP>:8080. The SigNoz interface appears. Create your admin account on first login. Note: the old port 3301 mentioned in older tutorials is obsolete — the current UI port is 8080.

06

Step 6 — Secure Access with a Reverse Proxy

Never expose port 8080 directly in production. Use Nginx as a reverse proxy with TLS:

server {
    listen 443 ssl;
    server_name signoz.yourdomain.com;
    ssl_certificate /etc/letsencrypt/live/signoz.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/signoz.yourdomain.com/privkey.pem;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Block port 8080 from outside: ufw deny 8080.

Instrument Your Application with the OpenTelemetry SDK

SigNoz receives traces via the OTLP protocol. Node.js:

npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node
OTEL_EXPORTER_OTLP_ENDPOINT="http://<VPS_IP>:4318" \
OTEL_SERVICE_NAME="my-api" \
node -r ./tracing.js app.js

Python:

pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install

OTEL_EXPORTER_OTLP_ENDPOINT="http://<VPS_IP>:4318" \
OTEL_SERVICE_NAME="my-python-service" \
opentelemetry-instrument uvicorn main:app

Create Dashboards and Alerts

Once your applications are instrumented, SigNoz automatically populates the Services view with P50/P99 latency, error rate, and throughput for each service.

Create a custom dashboard: go to Dashboards → New Dashboard, add a Time Series panel, select a Prometheus metric, and apply filters by service or environment.

Configure a latency P99 alert: go to Alerts → New Alert Rule, choose Metric Based Alert, enter your condition (e.g., p99(signoz_latency_bucket{service_name="my-api"}) > 500), and configure a Slack or webhook notification channel.

Watch Out for ClickHouse OOM Kills

ClickHouse is the most memory-intensive component in the SigNoz stack. On a VPS with less than 4 GB of available RAM, the Linux kernel may kill the ClickHouse process with exit code 137.

Diagnose it:

dmesg | grep -i oom

You will see a line like Out of memory: Killed process XXXX (clickhouse-serv).

Fixes: upgrade your VPS RAM (recommended), or cap ClickHouse memory by adding max_memory_usage=2000000000 to /etc/clickhouse-server/users.xml.

SigNoz vs Datadog vs Grafana Cloud

CriteriaSigNoz (self-hosted)DatadogGrafana Cloud
Monthly cost (5 services)VPS cost only (~$10-20)~$75-150 + custom metricsFree up to 10k series, then ~$8/1k
Distributed tracesYes (native OpenTelemetry)Yes (proprietary agent)Yes (Tempo, via OTLP)
Data sovereigntyFull — data on your VPSData at Datadog (US/EU)Data at Grafana Labs
Operational complexityMedium (Docker, 1 VPS)None (SaaS)Low (SaaS)
MetricsYes (Prometheus-compatible)Yes (proprietary + Prometheus)Yes (Mimir, Prometheus-compatible)
LogsYes (built-in)Yes (additional cost)Yes (Loki, additional cost)
UpdatesManual (foundryctl)AutomaticAutomatic
SupportCommunity + paid planPaid (included)Community + paid plan

Troubleshooting Common Issues

UI does not load on port 8080: check that the signoz-frontend container is running and that your firewall allows the port.

Traces do not appear: verify that port 4318 (OTLP/HTTP) is reachable from your application: curl -v http://<VPS_IP>:4318. A 405 Method Not Allowed response confirms the collector is listening.

ClickHouse container keeps restarting: almost certainly an OOM kill. Confirm with dmesg | grep -i oom.

Plan Your ClickHouse Data Retention

By default, SigNoz retains traces for 3 days and metrics for 30 days. Adjust retention in the SigNoz UI under Settings → Retention Period. For an agency managing multiple client projects, 7 days of traces and 90 days of metrics strikes a good balance between visibility and disk usage.

A VPS Built for SigNoz and Your DevOps Stack

Our developer plans start at 4 GB RAM with NVMe SSDs and generous bandwidth — exactly what SigNoz needs to run smoothly. Deploy your observability stack in minutes and keep full ownership of your data.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.