[{"data":1,"prerenderedAt":200},["ShallowReactive",2],{"seo-verification":3,"blog-signoz-on-vps-open-source-apm-in-15-minutes-ma-en":6,"promo-bar-likely":199},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-signoz-on-vps-open-source-apm-in-15-minutes-ma-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":140,"ctaBody":141,"ctaButton":142,"ctaUrl":143,"relatedPosts":144},265,"signoz-on-vps-open-source-apm-in-15-minutes",{"fr":12,"en":10,"ar":13,"es":14},"signoz-apm-vps","signoz-على-vps-apm-مفتوح-المصدر-في-15-دقيقة","signoz-en-vps-apm-open-source-en-15-minutos","SigNoz on VPS: Open-Source APM in 15 Minutes","Deploy SigNoz on your VPS and instrument Node.js, Python and Go apps via OpenTelemetry SDK. Traces, metrics, logs, alerts and ClickHouse retention configured end to end.",10,0,false,"2026-08-15T00:00:00+00:00","2026-10-02T14:03:20+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Security & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fsignoz-apm-vps-poster.svg","Datadog charges around $15 per host per month, with additional per-metric fees that balloon as your traffic grows. SigNoz (v0.144.0, September 2026) 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.",[35,39,49,52,74,77,80,83,86,90,137],{"type":36,"title":37,"body":38},"h2","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.\n\nSigNoz 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.",{"type":40,"title":41,"items":42},"ul","What SigNoz Gives You",[43,44,45,46,47,48],"**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.",{"type":36,"title":50,"body":51},"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.\n\nFull prerequisites:\n- A VPS running Ubuntu 22.04 or Debian 12.\n- **Docker Engine ≥ 24** and Docker Compose V2 installed.\n- Port **8080** open in your firewall (SigNoz UI).\n- Ports **4317** (OTLP\u002FgRPC) and **4318** (OTLP\u002FHTTP) open to receive traces from your apps.\n- Root or sudo access on the VPS.\n- At least **20 GB of free disk space** for ClickHouse and its data files.",{"type":53,"title":54,"steps":55},"steps","Installing SigNoz via Foundry CLI",[56,59,62,65,68,71],{"title":57,"body":58},"Step 1 — Install Docker on Your VPS","```bash\ncurl -fsSL https:\u002F\u002Fget.docker.com | sh\nsystemctl enable --now docker\ndocker compose version\n```",{"title":60,"body":61},"Step 2 — Install Foundry CLI (foundryctl)","Since **v0.112.0**, SigNoz uses the **Foundry CLI** as its official deployment method.\n\n```bash\ncurl -L https:\u002F\u002Fget.foundry.so\u002Ffoundryctl\u002Flatest | bash\nexport PATH=\"$HOME\u002F.foundry\u002Fbin:$PATH\"\nfoundryctl --version\n```",{"title":63,"body":64},"Step 3 — Create the casting.yaml File","```bash\nmkdir -p \u002Fopt\u002Fsignoz && cd \u002Fopt\u002Fsignoz\ncat > casting.yaml \u003C\u003C 'EOF'\napiVersion: foundry.so\u002Fv1\nkind: Casting\nmetadata:\n  name: signoz\nspec:\n  release: stable\n  components:\n    - name: signoz\n      enabled: true\n    - name: clickhouse\n      enabled: true\nEOF\n```",{"title":66,"body":67},"Step 4 — Run the Deployment","```bash\nfoundryctl cast -f casting.yaml\n```\n\nFoundry CLI pulls the Docker images, sets up persistent volumes, and starts the containers in the correct order. Full startup takes about 2–3 minutes.",{"title":69,"body":70},"Step 5 — Verify SigNoz Is Running","```bash\ndocker compose -f \u002Fopt\u002Fsignoz\u002Fdocker-compose.yaml ps\n```\n\nThen open your browser at `http:\u002F\u002F\u003CVPS_IP>:8080`. Create your admin account on first login. **Note**: the old port 3301 mentioned in older tutorials is obsolete — the current UI port is **8080**.",{"title":72,"body":73},"Step 6 — Secure Access with a Reverse Proxy","Never expose port 8080 directly in production. Use Nginx as a reverse proxy with TLS:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name signoz.yourdomain.com;\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fsignoz.yourdomain.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fsignoz.yourdomain.com\u002Fprivkey.pem;\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n}\n```\n\nBlock port 8080 from outside: `ufw deny 8080`.",{"type":36,"title":75,"body":76},"Instrumenting Node.js, Python and Go","SigNoz receives traces via the OTLP protocol. Here is how to wire up three common environments.\n\n**Node.js (Express\u002FFastify):**\n\n```bash\nnpm install @opentelemetry\u002Fsdk-node @opentelemetry\u002Fauto-instrumentations-node\n```\n\n```bash\nOTEL_EXPORTER_OTLP_ENDPOINT=\"http:\u002F\u002F\u003CVPS_IP>:4318\" \\\nOTEL_SERVICE_NAME=\"my-api\" \\\nnode -r .\u002Ftracing.js app.js\n```\n\n**Python (FastAPI\u002FFlask):**\n\n```bash\npip install opentelemetry-distro opentelemetry-exporter-otlp\nopentelemetry-bootstrap -a install\n\nOTEL_EXPORTER_OTLP_ENDPOINT=\"http:\u002F\u002F\u003CVPS_IP>:4318\" \\\nOTEL_SERVICE_NAME=\"my-python-service\" \\\nopentelemetry-instrument uvicorn main:app\n```\n\n**Go — manual spans:**\n\n```bash\ngo get go.opentelemetry.io\u002Fotel \\\n       go.opentelemetry.io\u002Fotel\u002Fexporters\u002Fotlp\u002Fotlptrace\u002Fotlptracehttp \\\n       go.opentelemetry.io\u002Fotel\u002Fsdk\u002Ftrace\n```\n\nInitialize the tracer in your `main.go`, then create spans around critical operations:\n\n```bash\ntracer := otel.Tracer(\"my-go-service\")\nctx, span := tracer.Start(ctx, \"fetch-user-details\")\ndefer span.End()\nspan.SetAttributes(attribute.String(\"user.id\", userID))\n```\n\nIn all three cases, traces appear in the SigNoz **Services** view within seconds of the first HTTP call.",{"type":36,"title":78,"body":79},"Configuring ClickHouse Retention and Cold Storage","On a VPS with limited disk space, the default SigNoz retention (3 days for traces, 30 days for metrics) can fill storage within weeks at moderate trace volume.\n\n**Adjust retention from the UI:** go to **Settings → Retention Period** to set different durations for traces, metrics, and logs. For an agency managing multiple projects, **7 days of traces and 90 days of metrics** strikes a good balance.\n\n**ClickHouse TTL with a cold volume:**\n\nIf your VPS has a second, cheaper block volume mounted at `\u002Fmnt\u002Fcold`, you can configure ClickHouse to move aging data automatically:\n\n```bash\n\u003Cstorage_configuration>\n  \u003Cdisks>\n    \u003Cdefault\u002F>\n    \u003Ccold_disk>\n      \u003Ctype>local\u003C\u002Ftype>\n      \u003Cpath>\u002Fmnt\u002Fcold\u002Fclickhouse\u002F\u003C\u002Fpath>\n    \u003C\u002Fcold_disk>\n  \u003C\u002Fdisks>\n  \u003Cpolicies>\n    \u003Ctiered>\n      \u003Cvolumes>\n        \u003Chot>\u003Cdisk>default\u003C\u002Fdisk>\u003C\u002Fhot>\n        \u003Ccold>\u003Cdisk>cold_disk\u003C\u002Fdisk>\u003C\u002Fcold>\n      \u003C\u002Fvolumes>\n    \u003C\u002Ftiered>\n  \u003C\u002Fpolicies>\n\u003C\u002Fstorage_configuration>\n```\n\nThen apply a TTL policy on the SigNoz traces table:\n\n```bash\nALTER TABLE signoz_traces.distributed_signoz_index_v2\n  MODIFY TTL toDateTime(timestamp) + INTERVAL 7 DAY\n  TO VOLUME 'cold',\n  toDateTime(timestamp) + INTERVAL 30 DAY DELETE;\n```\n\nClickHouse moves data to the cold volume after 7 days and deletes it after 30 — no manual intervention required.",{"type":36,"title":81,"body":82},"Custom Alerts in SigNoz","Once your applications are instrumented, SigNoz automatically populates the **Services** view with P50\u002FP99 latency, error rate, and throughput for each service. You can alert on any of these signals.\n\n**Latency P99 alert:** go to **Alerts → New Alert Rule**, choose **Metric Based Alert**, and enter the condition `p99(signoz_latency_bucket{service_name=\"my-api\"}) > 500`.\n\n**Error rate alert:** use `rate(signoz_calls_total{service_name=\"my-api\",status_code=\"STATUS_CODE_ERROR\"}[5m]) > 0.05` to fire when more than 5% of calls fail over 5 minutes.\n\n**Anomaly detection:** SigNoz supports **Anomaly** alert rules — define a reference window (e.g. 7 days) and an acceptable deviation threshold. Any unusual spike in throughput or latency triggers the alert — useful for catching slow degradations that fixed thresholds miss.\n\n**Custom dashboard:** go to **Dashboards → New Dashboard**, add a Time Series panel, select a Prometheus metric, and apply filters by service or environment.",{"type":36,"title":84,"body":85},"Scaling: Standalone vs Cluster","SigNoz in **standalone** mode (a single VPS, a single ClickHouse instance) handles up to roughly ten instrumented services generating a few thousand spans per second without effort. That is the target use case for a developer VPS.\n\n**When to consider a cluster:**\n- Your VPS regularly hits **80% CPU usage** on the ClickHouse process.\n- Trace ingestion exceeds **5,000 spans\u002Fs** at sustained peak.\n- You need **high availability** with zero downtime during updates.\n\n**Vertical scaling first:** before distributing, double the VPS RAM. ClickHouse is designed to leverage large amounts of memory; moving from 8 to 16 GB RAM often shifts the bottleneck from CPU to network.\n\n**Horizontal scaling:** SigNoz provides Helm charts for a Kubernetes deployment with distributed ClickHouse (shards + replicas). Reserve this for stacks that genuinely exceed standalone limits. On a VPS, the simplest approach is a second VPS dedicated to ClickHouse, connected to the first via a private network.",{"type":87,"title":88,"body":89},"tip","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**.\n\n**Diagnose it:**\n\n```bash\ndmesg | grep -i oom\n```\n\nYou will see a line like `Out of memory: Killed process XXXX (clickhouse-serv)`.\n\n**Fixes**: upgrade your VPS RAM (recommended), or cap ClickHouse memory by adding `max_memory_usage=2000000000` to `\u002Fetc\u002Fclickhouse-server\u002Fusers.xml`.",{"type":91,"title":92,"headers":93,"rows":98},"comparison","SigNoz vs Datadog vs Grafana Cloud",[94,95,96,97],"Criteria","SigNoz (self-hosted)","Datadog","Grafana Cloud",[99,104,109,114,119,124,129,133],[100,101,102,103],"Monthly cost (5 services)","VPS cost only (~$10-20)","~$75-150 + custom metrics","Free up to 10k series, then ~$8\u002F1k",[105,106,107,108],"Distributed traces","Yes (native OpenTelemetry)","Yes (proprietary agent)","Yes (Tempo, via OTLP)",[110,111,112,113],"Metrics","Yes (Prometheus-compatible)","Yes (proprietary + Prometheus)","Yes (Mimir, Prometheus-compatible)",[115,116,117,118],"Logs","Yes (built-in)","Yes (additional cost)","Yes (Loki, additional cost)",[120,121,122,123],"Data sovereignty","Full — data on your VPS","Data at Datadog (US\u002FEU)","Data at Grafana Labs",[125,126,127,128],"Operational complexity","Medium (Docker, 1 VPS)","None (SaaS)","Low (SaaS)",[130,131,132,132],"Updates","Manual (foundryctl)","Automatic",[134,135,136,135],"Support","Community + paid plan","Paid (included)",{"type":36,"title":138,"body":139},"Deep Troubleshooting","**UI does not load on port 8080**: check that the `signoz-frontend` container is running and that your firewall allows the port.\n\n**Traces do not appear**: the most common cause is an incorrect `OTEL_EXPORTER_OTLP_ENDPOINT`. Make sure the URL points to the **public IP** of the VPS (not `localhost`), uses port **4318** for OTLP\u002FHTTP, and that no firewall blocks this port. Quick test from your application server:\n\n```bash\ncurl -v http:\u002F\u002F\u003CVPS_IP>:4318\n```\n\nA `405 Method Not Allowed` response confirms the collector is listening.\n\n**ClickHouse OOM — container restart loop**: confirm with `dmesg | grep -i oom`. If RAM is insufficient, cap ClickHouse memory usage:\n\n```bash\necho '\u003Cmax_memory_usage>2000000000\u003C\u002Fmax_memory_usage>' \\\n  >> \u002Fetc\u002Fclickhouse-server\u002Fusers.xml\ndocker compose restart clickhouse\n```\n\n**SigNoz startup timeout**: if `docker compose ps` shows the `signoz` container stuck in `starting` for more than 5 minutes, ClickHouse is not yet ready. SigNoz waits for a ClickHouse response before initializing. Check ClickHouse container logs:\n\n```bash\ndocker compose logs clickhouse --tail=50\n```\n\nA full disk or insufficient permissions on the data volume are the most common causes.","A VPS Built for SigNoz and Your DevOps Stack","Our developer plans start at 4 GB RAM with SSD storage and generous bandwidth — exactly what SigNoz needs to run smoothly. Deploy your observability stack in minutes and keep full ownership of your data.","See our developer plans","\u002Fsolutions\u002Fdeveloppeurs",[145,165,183],{"id":146,"slug":147,"slugs":148,"title":152,"excerpt":153,"readTime":154,"views":155,"isPinned":19,"noindex":19,"publishedAt":156,"updatedAt":157,"category":158,"categories":159,"featuredImage":30,"bgImage":31,"posterImage":161,"relatedSolution":162},243,"centralize-docker-logs-on-your-vps-with-loki-and-grafana",{"fr":149,"en":147,"ar":150,"es":151},"loki-grafana-logs-centralises-vps","مركزة-سجلات-docker-على-vps-باستخدام-loki-وgrafana","centralizar-logs-docker-en-vps-con-loki-y-grafana","Centralize Docker logs on your VPS with Loki and Grafana","Aggregate logs from all your Docker containers into a single Grafana dashboard using Loki and Promtail on your VPS. No Datadog, no quota.",11,1,"2026-08-10T00:00:00+00:00","2026-09-08T22:00:02+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[160],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Floki-grafana-logs-centralises-vps-poster.svg",{"categorySlug":163,"appSlug":164},"monitoring-observability","grafana",{"id":166,"slug":167,"slugs":168,"title":172,"excerpt":173,"readTime":174,"views":175,"isPinned":19,"noindex":19,"publishedAt":176,"updatedAt":177,"category":178,"categories":179,"featuredImage":30,"bgImage":31,"posterImage":181,"relatedSolution":182},220,"grafana-tempo-and-opentelemetry-distributed-tracing-on-vps",{"fr":169,"en":167,"ar":170,"es":171},"opentelemetry-grafana-tempo-vps","grafana-tempo-وopentelemetry-التتبع-الموزع-على-خادم-vps","grafana-tempo-opentelemetry-trazado-distribuido-vps","Grafana Tempo and OpenTelemetry: distributed tracing on VPS","Deploy OpenTelemetry + Grafana Tempo on your VPS: complete architecture, step-by-step setup, Node.js\u002FPython instrumentation, S3 retention, and TraceQL queries.",12,2,"2026-08-04T00:00:00+00:00","2026-11-04T16:30:26+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[180],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fopentelemetry-grafana-tempo-vps-poster.svg",{"categorySlug":163,"appSlug":164},{"id":184,"slug":185,"slugs":186,"title":190,"excerpt":191,"readTime":154,"views":155,"isPinned":19,"noindex":19,"publishedAt":192,"updatedAt":193,"category":194,"categories":195,"featuredImage":30,"bgImage":31,"posterImage":197,"relatedSolution":198},106,"vps-monitoring-with-grafana-and-prometheus",{"fr":187,"en":185,"ar":188,"es":189},"monitoring-vps-grafana-prometheus","مراقبة-الخادم-الافتراضي-vps-باستخدام-grafana-و-prometheus","monitorizacion-vps-grafana-prometheus","VPS Monitoring with Grafana and Prometheus","Deploy Prometheus 3.x, Grafana 13.x, Node Exporter and Alertmanager on your VPS with Docker Compose. Dashboards, alerts and hardening.","2026-03-06T00:00:00+00:00","2026-10-05T14:05:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[196],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fmonitoring-vps-grafana-prometheus-poster.svg",{"categorySlug":163,"appSlug":164},true,1794270503446]