ivinco
How To Install PMM Using Linode

How To Install PMM Using Linode

Pavel RykovPavel Rykov··Updated

MM server. In this article, we will describe a solution based on a Linode VPS on which we will install the Docker Engine and run the PMM server in a Docker container. Linode, which is a blend of the words Linux and node, is a cloud hosting provider of Linux-based virtual private servers. Linode makes virtual computing more simple, affordable, and accessible.

How to Install PMM

These are the requirements you’ll need to begin:

  • Registered account on the Linode Cloud platform

  • Any SSH client

  • Any web browser with enabled JavaScript support

Creating Linode Instance

Login to Linode Cloud console.

https://cloud.linode.com/linodes

Click the “Create Linode” button on the top-right side of the page.

Creating Linode Instance - figure 1

Choose distribution and region.

Creating Linode Instance - figure 2

Choose type or VPS.

Creating Linode Instance - figure 3

Set a custom name for the Linode instance, for example, PMM-demo.

Creating Linode Instance - figure 4

Type the root password, and add SSH Keys of allowed users.

Creating Linode Instance - figure 5

Other settings are optional, so if you don’t need them, then you may ignore them.

Creating Linode Instance - figure 6

Click the “Create Linode” button.

Creating Linode Instance - figure 7

Wait some time until the VM will be created and Provisioning status changes to Running.

After starting the virtual machine, we can connect to it via SSH.

Creating Linode Instance - figure 8

Installing Docker Engine

First of all, let’s update the packages list:

apt update

Installing Docker Engine - figure 9

Then install the necessary packages:

apt install ca-certificates curl gnupg lsb-release

Installing Docker Engine - figure 10

Wait some time until the installation process is complete.

Now let’s add the GPG key that signed the packages from the repository:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Then you need to add the repository configuration:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Update the packages list again:

apt update

Install Docker Engine:

apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Installing Docker Engine - figure 11

Installing PMM Server

Pull image from Docker Hub

Most likely you have not yet downloaded the PMM-server image, so download it using the following command:

docker pull percona/pmm-server:2

Installing PMM Server - figure 12

Create persistent volume

The PMM server stores the collected data in databases integrated into the image (not the best practice, but it seemed more convenient to the authors of the image). I’m sure you don’t want to lose this collected data when updating the server, so you need to create a persistent volume, let’s call it PMM-data.

docker volume create pmm-data

Installing PMM Server - figure 13

Run PMM server in container with persistent volume

Now you can safely launch the container with the PMM server and proceed with its direct configuration.

docker run --detach --restart always \
  --publish 443:443 \
  -v pmm-data:/srv \
  --name pmm-server \
  percona/pmm-server:2

Installing PMM Server - figure 14

Check the status of running the PMM server

Let’s check the status of the PMM server – it should be fine, but just in case.

docker ps

Installing PMM Server - figure 15

Reset admin password

Now let’s change the password of the admin user to “new_pass”.

docker exec -t pmm-server bash -c 'grafana-cli --homepath /usr/share/grafana --configOverrides cfg:default.paths.data=/srv/grafana admin reset-admin-password new_pass'

Installing PMM Server - figure 16

Change admin email (optional)

For right now, it’s not possible to change the email of the admin user via PMM CLI, but you can do it via a simple API call. First, you need to generate a Bearer Token, which can be created from login/password pair with the help of base64 decoder:

echo -n "admin:new_pass" | base64

Installing PMM Server - figure 17

Execute a simple cURL request:

curl --location --request PUT "https://127.0.0.1/graph/api/users/1" \
  --insecure \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --header "Authorization: Basic YWRtaW46bmV3X3Bhc3M=" \
  --data "{\"email\":\"ownemail@example.com\",\"login\":\"admin\"}"

Installing PMM Server - figure 18

Login to the admin panel

Now you can open the PMM server page through a browser.

https://<linode-instance-ip>/graph/login

You will most likely see an error about the self-signed certificate that was auto-generated on the first run of the PMM server. Just ignore this message. For the login/password pair, use the admin and password chosen on the “Reset admin password” step.

Installation Complete

Congratulations, you have successfully installed PMM using Linode. PMM – Percona Monitoring and Management – provides database monitoring and management services and helps streamline your business with convenient cloud computing solutions. PMM simplifies cloud computing and helps optimize databases by allowing you to easily find, fix, and prevent issues with scaling, bottlenecks, and potential outages.

If you want to know how to install PMM, there are many options. Linode offers a great option to install PMM. This PMM installation is based on a Linode VPS on which we install the Docker Engine and run the PMM server in a Docker container. To install PMM using Linode you just need a registered account on the Linode Cloud platform, any SSH client, and any web browser with enabled JavaScript support.


Need help with database monitoring and performance? Our DevOps consulting team sets up monitoring for MySQL, PostgreSQL and MongoDB. The first conversation is free.

Frequently Asked Questions

What are the minimum server requirements for a PMM server?

PMM Server needs at least 2 CPU cores, 4GB RAM, and 1GB of storage per monitored database per week. The simplest deployment is Docker on any Linux VPS — Linode, DigitalOcean, or AWS EC2 all work. The Percona easy-install script handles Docker setup and PMM container creation automatically.

How do you persist PMM data across Docker container upgrades?

Create a Docker volume before running the PMM server: docker volume create pmm-data. Mount it with -v pmm-data:/srv when starting the container. This stores all collected metrics, dashboards, and configuration outside the container. When upgrading PMM, stop the old container and start a new one with the same volume — all historical data is preserved.

How do you secure a self-hosted PMM server?

Change the default admin password immediately using grafana-cli admin reset-admin-password. Install proper SSL certificates — the default self-signed cert triggers browser warnings. Restrict port 443 access via firewall rules, allowing only your database host IPs. For production, use API key tokens instead of username/password for agent authentication.