> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bytebase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Production Setup

This page provides a comprehensive checklist for setting up Bytebase in a production environment.

## System Requirements

### CPU and RAM

| Users & Instances             | Bytebase          | [External PostgreSQL](/get-started/self-host/external-postgres/) |
| ----------------------------- | ----------------- | ---------------------------------------------------------------- |
| Up to 5 users / 5 instances   | 1 CPU / 2 GB RAM  | 1 CPU / 2 GB RAM                                                 |
| Up to 20 users / 20 instances | 2 CPU / 4 GB RAM  | 1 CPU / 2 GB RAM                                                 |
| Up to 50 users / 50 instances | 4 CPU / 8 GB RAM  | 2 CPU / 4 GB RAM                                                 |
| 250+ users or 50+ instances   | 8 CPU / 16 GB RAM | 2 CPU / 4 GB RAM                                                 |

### Storage

Bytebase uses a PostgreSQL database to store SQL statements and other metadata.

* If using cloud services (RDS, Cloud SQL) that support disk expansion, you can start with 20 GB and increase the size later as usage grows
* Otherwise, start with 100 GB to avoid running out of space

Teams that frequently work with large SQL files may need more.

## Production Setup Checklist

* Review system requirements (see above)
* [Configure External PostgreSQL](/get-started/self-host/external-postgres/)
* Decide whether you need [High Availability](/get-started/self-host/high-availability/)
* [Configure External Access](/get-started/self-host/external-access)
* [Configure External URL](/get-started/self-host/external-url)
* Pin Docker image to specific version instead of `latest` ([changelog](https://docs.bytebase.com/changelog))

  While version tags like `3.7.0` are better than `latest`, Bytebase may still add patches to existing versions. For a truly fixed version, use the SHA256 digest from [Docker Hub](https://hub.docker.com/r/bytebase/bytebase/tags).

  ```bash theme={null}
  # Pin to exact image using digest (prevents any updates)
  docker pull bytebase/bytebase:3.7.0@sha256:00b436855b08739aad02fd52e41b5d74c03db9c70c49ce5de42376347cd1403c
  ```

## High Availability Checklist

If you plan to run Bytebase with multiple replicas:

* Use external PostgreSQL. HA is not supported with embedded PostgreSQL
* Start every replica with `--ha`
* Put replicas behind one ingress, gateway, or load balancer
* Set the same External URL for the whole deployment
* Confirm your license has HA enabled before scaling above one replica

### Monitoring

* Telemetry metrics available at `/metrics` endpoint

### Cloud Provider Recommendations

If deploying on a cloud provider, use the recommended stack:

#### AWS

* **Compute**: EC2 or ECS/EKS
* **Database**: RDS for PostgreSQL

#### GCP

* **Compute**: GCE or GKE
* **Database**: Cloud SQL for PostgreSQL

#### Azure

* **Compute**: Virtual Machines or AKS
* **Database**: Azure Database for PostgreSQL
