# Self-hosting Uptrace

> Deploy self-hosted Uptrace on your own infrastructure — choose Docker, Kubernetes, Ansible, or a manual install, then configure, scale, and troubleshoot.

Uptrace is an [open source APM and observability platform](/get/hosted/open-source-apm) that you can run on your own infrastructure. A self-hosted deployment keeps all telemetry in your own databases and consists of the Uptrace binary plus three dependencies:

- **ClickHouse** — stores traces, logs, and metrics.
- **PostgreSQL** — stores users, projects, and dashboards.
- **Redis** — caches data and coordinates background jobs.

```mermaid
graph TD
    A[OpenTelemetry SDKs & Collector] -->|OTLP| U[Uptrace]
    B[Browser UI] --> U
    U --> CH[ClickHouse — traces, logs, metrics]
    U --> PG[PostgreSQL — users, projects, dashboards]
    U --> R[Redis — cache & background jobs]
```

This page helps you pick a deployment method, then points to the configuration, scaling, and troubleshooting guides you'll need afterwards.

## Quick decision guide

**Want to try Uptrace or run a small deployment?**<br />


Use [Docker Compose](/get/hosted/docker) — every dependency is pre-configured, so you get a working instance in minutes.

**Already running Kubernetes?**<br />


Install the [Helm chart](/get/hosted/k8s) to deploy Uptrace and its dependencies into your cluster.

**Deploying to bare-metal or VM servers?**<br />


Use the [Ansible playbook](/get/hosted/ansible) to automate provisioning and upgrades across hosts.

**Need full control over every component?**<br />


Follow the [manual installation](/get/hosted/install) to wire up ClickHouse, PostgreSQL, and Redis yourself.

**Prefer not to manage infrastructure at all?**<br />


Use [Uptrace Cloud](https://app.uptrace.dev/join) or a [Managed edition](/editions) and let our team handle hosting, scaling, and upgrades.

---

## Configure and operate

Once Uptrace is running, use these guides to tune and maintain it:

<table>
<thead>
  <tr>
    <th>
      Guide
    </th>
    
    <th>
      Purpose
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="/get/hosted/config">
        Configuration reference
      </a>
    </td>
    
    <td>
      Every option in <code>
        uptrace.yml
      </code>
      
       — databases, networking, TLS, auth, and pipelines.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/get/hosted/scale">
        Scaling
      </a>
    </td>
    
    <td>
      Tune processing pipelines and ClickHouse inserts, and add Kafka for high volume.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="/get/hosted/debug">
        Troubleshooting
      </a>
    </td>
    
    <td>
      Check versions, read service logs, and enable verbose diagnostics.
    </td>
  </tr>
</tbody>
</table>

## Hardware requirements

Self-hosted Uptrace scales from a single VM to large clusters. As a starting point, 30 TB of spans and logs with 2 million time series needs roughly 24 vCPUs, 48 GB RAM, 1 TB SSD, and 6 TB HDD. See the [installation guide](/get/hosted/install#hardware-requirements) for the full sizing table.

## Send your first data

With Uptrace running, finish the loop and start ingesting telemetry:

1. Open the Uptrace UI and create a project to obtain its [DSN](/get#dsn) — a connection string that bundles the endpoint and access token.
2. Point an OpenTelemetry SDK or the [Collector](/ingest/collector) at your instance using that DSN.
3. See [Getting started](/get) for language-specific distributions and how to confirm that traces, metrics, and logs are arriving.

## Not ready to self-host?

[Uptrace Cloud](https://app.uptrace.dev/join) gives you the same platform without the operational overhead — usage-based [pricing](/pricing), no installation, and no scaling to manage. Compare every deployment option on the [editions](/editions) page.
