Install SigNoz on Linux with systemd - Self-Host Guide

Self-Hosted Community - This page applies to self-hosted SigNoz without a license.
Choose SigNoz Cloud for ease, or self-host for control—with the freedom to switch as your needs grow.

Use this page to install SigNoz on a Linux host that runs systemd. The recommended path uses Foundry to create and manage the systemd units for SigNoz, ClickHouse, ClickHouse Keeper, PostgreSQL, the SigNoz OTel Collector, and the database migrator. If you need full control over every service unit and config, use the Manual tab instead.

Prerequisites

  • A Linux host with systemd.
  • Root access or a user with sudo privileges.
  • Open inbound ports: 8080 for the SigNoz UI, and 4317 and 4318 for OpenTelemetry Protocol (OTLP) ingestion.
  • At least 4 GB of memory for a small test installation. For production sizing, see resource planning.

Install SigNoz

Step 1: Install foundryctl

Run the installer on the Linux host:

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

For manual install (Windows PowerShell, air-gapped, etc.) or PATH setup, see the Foundry getting-started guide.

Step 2: Install host dependencies

Install ClickHouse with the official ClickHouse installation guide. The single clickhouse binary serves both the telemetry store and the keeper, so no separate Keeper package is needed. Foundry manages the ClickHouse services after deployment, so stop any package-managed services:

sudo systemctl disable --now clickhouse-server.service clickhouse-keeper.service 2>/dev/null || true

Install PostgreSQL with the official PostgreSQL Linux installation guide, then stop the package-managed service:

sudo systemctl disable --now postgresql.service

PostgreSQL packages install the server binary outside /usr/bin on most distros. Debian and Ubuntu use /usr/lib/postgresql/<version>/bin; RHEL and Fedora use /usr/pgsql-<version>/bin. Note the path to your postgres binary; you point Foundry at it in Step 4.

Step 3: Download SigNoz binaries

Download the SigNoz and SigNoz OTel Collector release archives into the paths that the Foundry systemd casting uses:

ARCH=$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')

sudo mkdir -p /opt/signoz
curl -fsSL "https://github.com/SigNoz/signoz/releases/latest/download/signoz_linux_${ARCH}.tar.gz" \
  | sudo tar -xz --strip-components=1 -C /opt/signoz

sudo mkdir -p /opt/ingester
curl -fsSL "https://github.com/SigNoz/signoz-otel-collector/releases/latest/download/signoz-otel-collector_linux_${ARCH}.tar.gz" \
  | sudo tar -xz --strip-components=1 -C /opt/ingester

foundryctl cast creates the signoz service user and the data directories automatically.

Step 4: Create casting.yaml

Create a working directory outside /root so the generated pours/ files remain readable by the signoz system user:

sudo mkdir -p /opt/signoz-foundry
sudo chown "$(id -u):$(id -g)" /opt/signoz-foundry
cd /opt/signoz-foundry

Create casting.yaml for the systemd binary deployment:

cat <<'EOF' > casting.yaml
apiVersion: v1alpha1
kind: Installation
metadata:
  name: signoz
spec:
  deployment:
    flavor: binary
    mode: systemd
EOF

Step 5: Deploy with Foundry

Run the full deployment pipeline:

sudo foundryctl cast -f casting.yaml

foundryctl cast validates dependencies, generates service files and configs under pours/, installs systemd units, and starts the SigNoz services.

Step 6: Validate the installation

Check that the main services are running:

systemctl status signoz-signoz.service
systemctl status signoz-ingester.service
systemctl status signoz-telemetrystore-clickhouse-0-0.service
systemctl status signoz-telemetrykeeper-clickhousekeeper-0.service
systemctl status signoz-metastore-postgres.service

Each service should show active (running).

View logs for all SigNoz services:

journalctl -u 'signoz-*' -f

View logs for one service:

journalctl -u signoz-signoz.service -f

Open http://<your-server-ip>:8080/ in a browser. The SigNoz setup screen should load.

Step 7: Enable the SigNoz MCP server (optional)

Foundry can also deploy the SigNoz MCP server alongside the stack so AI clients can query your telemetry. It is disabled by default.

  1. Download the MCP server binary into the path the casting expects:

    ARCH=$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')
    sudo mkdir -p /opt/mcp
    curl -fsSL "https://github.com/SigNoz/signoz-mcp-server/releases/latest/download/signoz-mcp-server_linux_${ARCH}.tar.gz" \
      | sudo tar -xz --strip-components=1 -C /opt/mcp
    
  2. Add an mcp block under spec in casting.yaml:

    apiVersion: v1alpha1
    kind: Installation
    metadata:
      name: signoz
    spec:
      deployment:
        flavor: binary
        mode: systemd
      mcp:
        spec:
          enabled: true
    
  3. Re-run cast to add the MCP service on port 8000:

    sudo foundryctl cast -f casting.yaml
    

    Verify it is live:

    curl -fsS localhost:8000/livez && echo " OK"
    
  4. Create an API key from a service account (Settings → Service Accounts, requires Admin role).

  5. Add the server to your AI client. For example, with Claude Code:

    claude mcp add --scope user --transport http signoz http://localhost:8000/mcp \
      --header "SIGNOZ-API-KEY: <your-api-key>"
    
    • <your-api-key>: the key from step 4

    To confirm the connection, run /mcp inside Claude Code and check that the signoz server is listed as connected.

For other clients and example workflows, see SigNoz MCP Server and AI use cases.

Customize the installation

Every change follows the same loop: edit casting.yaml, then re-run foundryctl cast to apply it.

  • Binary locations: if a component lives outside its default path, point Foundry at it with a binary-path annotation under metadata.annotations. The systemd binary example lists every annotation.
  • Anything Foundry does not model: add patches under spec.patches. Do not edit the generated files in pours/ by hand, since forge overwrites them.
  • Pin a version: download a specific SigNoz or SigNoz OTel Collector release in Step 3 instead of latest.

Troubleshooting

foundryctl cast fails

Re-run the failing command with --debug for verbose logs:

sudo foundryctl cast -f casting.yaml --debug

sudo cannot find foundryctl

Run foundryctl through sudo with your current PATH:

sudo env "PATH=$PATH" foundryctl cast -f casting.yaml

You can also install foundryctl into a system path such as /usr/local/bin.

ClickHouse cannot connect to Keeper on Ubuntu

On some Ubuntu hosts, localhost resolves to ::1 first while ClickHouse Keeper listens on IPv4. If signoz-telemetrystore-clickhouse-0-0.service fails to start, replace localhost with 127.0.0.1 in the generated config:

sudo sed -i 's/host: localhost/host: 127.0.0.1/' /etc/clickhouse-server/config-0-0.yaml
sudo systemctl restart signoz-telemetrystore-clickhouse-0-0.service

Check the service logs again:

journalctl -u signoz-telemetrystore-clickhouse-0-0.service -f

A SigNoz service fails after cast

Inspect the unit and logs for the failing service:

systemctl status <service-name>
journalctl -u <service-name> -n 200 --no-pager

Next Steps

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack. If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Last updated: July 20, 2026

Edit on GitHub

Was this page helpful?

Your response helps us improve this page.