Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
# Install PMM Server with Docker

Deploy PMM Server as a Docker container for a fast, flexible and isolated setup.

While PMM Server runs independently, we highly recommend that you streamline [upgrades via the PMM user interface](../../../../pmm-upgrade/ui_upgrade.md) by installing [Watchtower](https://containrrr.dev/watchtower/) alongside PMM Server.

With Watchtower installed, you can easily update PMM Server directly from the **Upgrade** page or by clicking the **Upgrade Now** button on the **Home** dashboard.
Deploy PMM Server as a Docker container for a fast, flexible and isolated setup.

## Prerequisites
Before installation, ensure you have:
Expand All @@ -13,17 +9,6 @@ Before installation, ensure you have:
- CPU with `x86-64-v2` support
- [Sufficient system resources](../../../plan-pmm-installation/hardware_and_system.md) (recommended: 2+ CPU cores, 4+ GB RAM, 100+ GB disk space)

### Watchtower security requirements

Watchtower requires access to the Docker socket to monitor and update containers. Since the Docker socket provides root-level access to the host system, it's critical to limit Watchtower's exposure to prevent potential security vulnerabilities.

To ensure a secure setup when using Watchtower:

- limit Watchtower's access to Docker network or localhost to prevent unauthorized external connections. See [Container network isolation guide](https://docs.docker.com/network/drivers/bridge/#use-user-defined-bridge-networks).
- configure network to ensure only PMM Server is exposed externally. See [Docker networking best practices](https://docs.docker.com/network/bridge/#manage-a-user-defined-bridge).
- secure Docker socket access for Watchtower. See [Docker socket security](https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface).
- place both Watchtower and PMM Server on the same Docker network. See [Watchtower network configuration](https://containrrr.dev/watchtower/usage-overview/#docker_host).

## Installation options

### Container setup summary
Expand All @@ -35,14 +20,13 @@ To ensure a secure setup when using Watchtower:
- **Access the UI**: Navigate to `https://SERVER_IP_ADDRESS` in your browser
- **Log in**: Default credentials `admin` / `admin`

### Install PMM Server + Watchtower

You can install PMM Server with Watchtower using one of two methods:
### Install PMM Server

You can install PMM Server using one of two methods:

=== "Easy-install script (Recommended for simplicity)"

The [Easy-install script](../docker/easy-install.md) simplifies setup by including Watchtower commands, enabling a one-step installation of PMM with Watchtower. Run the following command:
The [Easy-install script](../docker/easy-install.md) provides a one-step installation of PMM Server. Run the following command:

```sh
curl -fsSL https://www.percona.com/get/pmm | /bin/bash
Expand All @@ -51,36 +35,8 @@ You can install PMM Server with Watchtower using one of two methods:
=== "Manual installation (For customization)"
For a more customizable setup, follow these steps:
{.power-number}

1. Create a Docker network for PMM and Watchtower:
```sh
docker network create pmm-network
```

2. (Optional but recommended) Install Watchtower to enable PMM Server upgrades via the UI:

- Create a user-defined token to secure Watchtower's HTTP API. You can use any value or generate a secure token using `openssl` or another method. Ensure the same token is used in both the Watchtower and PMM Server configurations:

```sh
openssl rand -hex 16
# Example output:
e09541c81e672bf0e48dbc72d4f92790
```

- Install Watchtower using your token:

```sh
docker run --detach \
--restart always \
--network=pmm-network \
-e WATCHTOWER_HTTP_API_TOKEN=your_token \
-e WATCHTOWER_HTTP_API_UPDATE=1 \
--volume /var/run/docker.sock:/var/run/docker.sock \
--name watchtower \
percona/watchtower:latest
```

3. Run PMM Server with Docker based on your preferred data storage method:

1. Run PMM Server with Docker based on your preferred data storage method:
- [Run Docker with host directory](../docker/run_with_host_dir.md)
- [Run Docker with volume](../docker/run_with_vol.md)

Expand Down Expand Up @@ -110,7 +66,7 @@ You can install PMM Server with Watchtower using one of two methods:
|----------|---------|-------------|
| `PMM_DATA_RETENTION` | `30d` | Duration to retain metrics data |
| `PMM_METRICS_RESOLUTION` | `1s` | Base metrics collection interval |
| `PMM_ENABLE_UPDATES` | `true` | Allow version checks and UI updates |
| `PMM_ENABLE_UPDATES` | `true` | Allow version checks |
| `PMM_ENABLE_TELEMETRY` | `true` | Send usage statistics |

For a complete list, see the [environment variables](../docker/env_var.md).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,13 @@ Upgrade your PMM Server Docker container to the latest version, ensuring you ben

Before you start upgrading, check current PMM Server version:

=== "Via command line"

@fabio-silva fabio-silva Jul 22, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shoud this one should be kept?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this tab existed to show the CLI vs UI difference. Since there's no UI option for this any more, the tabbed format isn't needed so i've replace with a single code block.


```sh
docker exec -it pmm-server \
curl -ku admin:admin https://localhost/v1/version
```

For remote access, replace `localhost` with your PMM Server's address.

=== "Via web UI"

Use the **PMM Upgrade** panel on the **Home Dashboard** to check for available updates.

## Upgrade procedure

To upgrade the container:
Expand Down Expand Up @@ -85,10 +79,6 @@ If you encounter issues after upgrading:
docker rename pmm-server-backup pmm-server
docker start pmm-server
```
## Automated upgrades with Watchtower

If you installed [PMM Server with Watchtower](../docker/index.md#install-pmm-server--watchtower), you can [upgrade directly from the PMM UI](../../../../pmm-upgrade/ui_upgrade.md). This method handles the entire upgrade process automatically, including pulling the new image and restarting the container.

## Related topics

- [Create a backup](../docker/backup_container.md) before upgrading
Expand Down
3 changes: 0 additions & 3 deletions documentation/docs/pmm-upgrade/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
!!! caution alert alert-warning "Upgrade PMM Server before Clients"
- When upgrading PMM, always upgrade the PMM Server before upgrading any PMM Clients.
- Make sure that the PMM Server version is higher than or equal to the PMM Client version. Mismatched versions can lead to configuration issues and failures in Client-Server communication, as the PMM Server may not recognize all parameters in the client configuration.
- For the UI upgrade option, Watchtower must be installed with PMM Server

## Available upgrade methods

Choose your preferred upgrade method based on your setup:

* [Upgrade PMM Client](upgrade_client.md)
* [Upgrade PMM Server using Docker](upgrade_docker.md)
* [Upgrade PMM Server using Helm](upgrade_helm.md)
* [Upgrade PMM Server from the UI](ui_upgrade.md) (deprecated)
* [Migrate from PMM 2](migrating_from_pmm_2.md) (direct migration deprecated)
37 changes: 0 additions & 37 deletions documentation/docs/pmm-upgrade/ui_upgrade.md

This file was deleted.

6 changes: 2 additions & 4 deletions documentation/docs/pmm-upgrade/upgrade_docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@
Before starting the upgrade, complete these preparation steps to ensure you can recover your system if needed and confirm compatibility with the new version:
{.power-number}

1. If you are switching from [UI-based upgrades](ui_upgrade.md), stop and remove the Watchtower container before moving to manual Docker upgrades. UI-based upgrades used Watchtower to apply PMM images automatically. If Watchtower is still running, it may update PMM during your manual upgrade and cause conflicts.
1. [Create a backup](../install-pmm/install-pmm-server/deployment-options/docker/backup_container.md) before upgrading, as downgrades are not possible. Therefore, reverting to a previous version requires a backup made prior to the upgrade.

2. [Create a backup](../install-pmm/install-pmm-server/deployment-options/docker/backup_container.md) before upgrading, as downgrades are not possible. Therefore, reverting to a previous version requires an backup made prior to the upgrade.

3. Verify your current PMM version: Check your current PMM version by navigating to **Configuration > Updates** or by running the following command:
2. Verify your current PMM version: Check your current PMM version by navigating to **Configuration > Updates** or by running the following command:

```sh
docker exec -it pmm-server curl -ku admin:admin https://localhost:8443/v1/version
Expand Down
6 changes: 2 additions & 4 deletions documentation/docs/pmm-upgrade/upgrade_podman.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@
Before starting the upgrade, complete these preparation steps to ensure you can recover your system if needed and confirm compatibility with the new version:
{.power-number}

1. If you are switching from [UI-based upgrades](ui_upgrade.md), stop and remove the Watchtower container before moving to manual Podman upgrades. UI-based upgrades used Watchtower to apply PMM images automatically. If Watchtower is still running, it may update PMM during your manual upgrade and cause conflicts.
1. [Create a backup](../install-pmm/install-pmm-server/deployment-options/podman/backup_container_podman.md) before upgrading, as downgrades are not possible. Therefore, reverting to a previous version requires a backup made prior to the upgrade.

2. [Create a backup](../install-pmm/install-pmm-server/deployment-options/podman/backup_container_podman.md) before upgrading, as downgrades are not possible. Therefore, reverting to a previous version requires an backup made prior to the upgrade.

3. Verify your current PMM version: Check your current PMM version by navigating to **Configuration > Updates** or by running the following command:
2. Verify your current PMM version: Check your current PMM version by navigating to **Configuration > Updates** or by running the following command:

```sh
podman exec -it pmm-server \
Expand Down
2 changes: 1 addition & 1 deletion documentation/docs/reference/ui/ui_components.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ You'll find these options in the left-side menu:

| Icon | Name | What you can do |
|:----:|------|-----------------|
| :material-home-outline: | Home | Access the main dashboard with overview panels for database connections, queries, anomaly detection, and upgrade status. |
| :material-home-outline: | Home | Access the main dashboard with overview panels for database connections, queries, and anomaly detection. |
| :simple-mysql: | MySQL | View specialized dashboards for MySQL database performance monitoring. |
| :simple-postgresql: | PostgreSQL | Access PostgreSQL-specific monitoring dashboards and metrics. |
| :material-monitor-dashboard:| Operating System | Monitor server-level metrics including CPU, memory, disk, and network performance. |
Expand Down
18 changes: 16 additions & 2 deletions documentation/docs/release-notes/3.9.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,18 @@ You can now export a snapshot of the RTA view to a CSV file. Because QAN only re

See [Export RTA data](../use/qan/QAN-realtime-analytics.md#export-data) for step-by-step instructions and a reference of all exported fields.

### PMM Server UI upgrade removed

As announced in [PMM 3.7.0](../release-notes/3.7.0.md#added-support-and-deprecations), PMM 3.9.0 removes the **Upgrade Now** button, UI-based upgrade functionality, and Watchtower from the PMM Server image.

PMM still notifies you when a new version is available, but you must now upgrade from the command line using one of the supported methods:

* **[Docker upgrade](../pmm-upgrade/upgrade_docker.md) (recommended)**: pull the latest image and restart the container
* [Podman upgrade](../pmm-upgrade/upgrade_podman.md): same container workflow with rootless execution
* [Helm upgrade](../pmm-upgrade/upgrade_helm.md): Kubernetes-native upgrade path

If you were running Watchtower as a standalone container, you can remove it.

## 🔒 Security updates

### Go standard library symlink traversal vulnerability (CVE-2026-39822)
Expand Down Expand Up @@ -132,9 +144,12 @@ To lower your exposure in the meantime:
- ([PMM-13306](https://perconadev.atlassian.net/browse/PMM-13306)): Added data size panels to the **MongoDB ReplSet Summary** and **MongoDB Sharded Cluster Summary** dashboards to help you monitor data growth and plan capacity.
- ([PMM-14609](https://perconadev.atlassian.net/browse/PMM-14609)): Added CSV export option under **Query Analytics > Real-Time** to preserve a snapshot of in-progress query data that would otherwise be lost when queries are killed before completing.

- [PMM-14969](https://perconadev.atlassian.net/browse/PMM-14969): Removed the UI-based upgrade functionality and Watchtower from PMM Server. PMM Server can now only be upgraded via CLI or container runtime.


## ✅ Fixed issues

- [PMM-15130](https://perconadev.atlassian.net/browse/PMM-15130): Fixed an issue where `pmm-admin inventory change agent` would save new database credentials without validating them. When rotating credentials from the command line. PMM now returns an error if the credentials are invalid. To bypass validation when the database is temporarily unreachable, use [--skip-connection-check](../use/commands/pmm-admin/inventorymd#connection-and-authentication).
- [PMM-15130](https://perconadev.atlassian.net/browse/PMM-15130): Fixed an issue where `pmm-admin inventory change agent` accepted invalid credentials without validation when rotating database credentials. PMM now tests the connection before saving changes and returns an error if the credentials are invalid. To bypass validation when the database is temporarily unreachable, use [`--skip-connection-check`](../use/commands/pmm-admin/inventory.md#connection-and-authentication).

- [PMM-14921](https://perconadev.atlassian.net/browse/PMM-14921): Clarified the [Configure Nomad](../reference/nomad.md) instructions. Nomad won't start if `PMM_ENABLE_NOMAD=1` is set without `PMM_PUBLIC_ADDRESS`. The prerequisites section and Docker examples now show that both variables are required together.

Expand All @@ -157,4 +172,3 @@ To lower your exposure in the meantime:
- [PMM-15118](https://perconadev.atlassian.net/browse/PMM-15118): Fixed the **Oplog GB/Hour** panels in the **MongoDB ReplSet Summary**, **MongoDB Sharded Cluster Summary**, and **MongoDB Oplog Details** dashboards showing an empty metric name in the legend instead of the service name.

- [PMM-15114](https://perconadev.atlassian.net/browse/PMM-15114): Fixed the **Scanned and Moved Objects** panel in the **MongoDB Instance Summary** dashboard showing blank labels in the legend instead of the operation type (`scanned`, `scanned_objects`).

34 changes: 3 additions & 31 deletions documentation/docs/troubleshoot/upgrade_issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,10 @@

## PMM Server not updating correctly

If the automatic update process isn't working, you can force an update using the API:
{.power-number}
If PMM Server is not updating correctly, check the container logs for errors:

1. Open your terminal.
2. Run the update command, replacing <username>:<password> with your credentials and <pmm-server-address> with your PMM server address:
```sh
curl -X POST \
--user <username>:<password> \
'http://<pmm-server-address>/v1/server/updates:start' \
-H 'Content-Type: application/json'
docker logs pmm-server
```
3. Wait 2-5 minutes and refresh the PMM Home page to verify the update.

## Watchtower fails with "client version is too old" error

When upgrading PMM Server via the UI, Watchtower may fail with the following error:

```
client version X.XX is too old. Minimum supported API version is X.XX, please upgrade your client to a newer version
```

This occurs when your Docker installation requires a newer API version than Watchtower supports.

**Solution**
To resolve this issue:
{.power-number}

1. Update to the latest Watchtower image:
```
docker pull percona/watchtower:latest
```
2. If the error persists, add the `DOCKER_API_VERSION` environment variable matching your Docker's minimum API version:
```
-e DOCKER_API_VERSION=1.45
```
If the issue persists, restore from a backup and retry the upgrade. See [Restore PMM Server](../install-pmm/install-pmm-server/deployment-options/docker/restore_container.md).