Proxmox VEXXV · Proxmox Datacenter ManagerUnderstanding PDM
Installing PDM and connecting clusters
What you'll learn
- Size and place a PDM host, including deciding whether it may live inside a cluster it manages
- Choose between the ISO installer and a Debian Trixie base, and configure the correct repository
- Explain the remote model: authid, token, node list, and what each field costs you when wrong
- Describe how PDM establishes trust in a remote certificate, and recover a remote after a rotation
- Avoid orphaning an API token on a cluster when removing or rebuilding PDM
Prerequisites
Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12
Installing PDM is the least interesting part of this lesson and takes about twenty minutes. The interesting part is what happens immediately afterwards, when you type an address, a username and a password into an “Add remote” dialog and, in doing so, create a durable credential on a production cluster that will still be there in three years.
Get the install wrong and you reinstall. Get the connection model wrong and you find out during a certificate renewal, or during a security review, or on the day someone deletes the PDM VM.
Sizing the host
PDM does very little computationally. It polls remotes, keeps RRD series, and serves an interface. The published requirements reflect that:
| Evaluation minimum | Recommended | |
|---|---|---|
| CPU | 64-bit x86-64/AMD64, 1+ core | Modern 64-bit Intel or AMD, 2+ cores |
| Memory | 1 GiB | 4 GiB minimum for the OS |
| Storage | more than 10 GB | 40 GB or more free |
| Disk resilience | — | Hardware RAID with a battery-backed write cache, or a redundant ZFS setup |
| Network | one NIC | Redundant multi-gigabit NICs |
The evaluation column is explicitly labelled as not for production. The recommended column carries the standard Proxmox warning that ZFS is not compatible with a hardware RAID controller — pick one.
There is only one 64-bit answer available, incidentally: the FAQ states PDM supports 64-bit CPUs only, with no future plans for 32-bit.
Where the PDM host lives
The requirements table tells you what to give PDM. It does not tell you where to put it, and that is the decision with consequences.
PDM is a small Debian host. The obvious place to run it is as a VM on one of your clusters, and that is entirely workable — with one property you must decide about deliberately rather than discover.
Two network facts constrain the placement. PDM’s operators reach it over HTTPS, and PDM reaches every remote over each remote’s own API — port 8006 for Proxmox VE, port 8007 for Proxmox Backup Server. A PDM host behind a firewall that permits inbound management traffic but not outbound connections to your cluster networks is a PDM host that shows every remote as unreachable.
Two ways to install
The ISO. Download the installer image from the Proxmox downloads page. It
is a hybrid image: burn it to a DVD or write it to a USB flash drive of at
least 2 GB. On Linux, dd bs=1M conv=fdatasync writes it; on Windows, Etcher
works directly and Rufus needs DD mode; on macOS, convert with hdiutil first.
The documentation names one tool that does not work at all — do not use
UNetbootin with the Proxmox image.
The interactive installer partitions the disks, sets language, time zone and network, and installs everything. There is also an unattended path driven by an answer file with filter rules for disk and NIC selection, which is worth knowing about because PDM 1.1 can serve exactly those answer files to other Proxmox installations.
On top of Debian. After configuring the repositories, two meta-packages are available and the choice between them is not cosmetic:
apt update
apt install proxmox-datacenter-manager-container-metaapt update
apt install proxmox-datacenter-manager-metaThe first keeps the current Debian kernel and installs the minimum. The second installs the Proxmox default kernel with ZFS support. If PDM is running as a VM or a container on storage that is already redundant underneath it, the Proxmox kernel buys you nothing and costs you a kernel to patch; if PDM is on bare metal and you want a redundant ZFS root, you need it.
Repositories
PDM follows the Proxmox pattern exactly: a Debian base repository plus one
Proxmox repository, in deb822 .sources format under
/etc/apt/sources.list.d/.
The enterprise repository is enabled by default and is the stable, recommended one:
# /etc/apt/sources.list.d/pdm-enterprise.sources
Types: deb
URIs: https://enterprise.proxmox.com/debian/pdm
Suites: trixie
Components: pdm-enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
The no-subscription repository is for testing and non-production use, and goes
in /etc/apt/sources.list.d/proxmox.sources:
Types: deb
URIs: http://download.proxmox.com/debian/pdm
Suites: trixie
Components: pdm-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
There is a third, pdm-test, which the documentation warns should only be used
to test new features or bug fixes. It has no place in an estate you care about.
Two operational notes on Trixie. apt will complain about legacy repository
definitions, and apt modernize-sources converts them. And upgrades must use
apt full-upgrade, never apt upgrade: PDM uses a rolling release model on
top of Debian, and apt upgrade cannot remove packages to satisfy
dependencies, so it can leave a partially upgraded or broken package state.
# sha256sum /usr/share/keyrings/proxmox-archive-keyring.gpg136673be77aba35dcce385b28737689ad64fd785a797e57897589aed08db6e45 /usr/share/keyrings/proxmox-archive-keyring.gpgAfter installation, the interface is at https://<pdm-host>:8443 and the
initial login is root in the pam realm, using the password set during
installation or the existing root password on a Debian-based install.
The remote model
Now the part that matters.
A remote is one entry in /etc/proxmox-datacenter-manager/remotes.cfg. There
are two section types, pve and pbs, and both take the same four required
properties plus one optional:
| Property | Meaning | Why it bites |
|---|---|---|
type | pve or pbs, default pve | Determines which API surface PDM expects |
nodes | A list of cluster node addresses; may be given more than once | A single-entry list makes one node a single point of failure for the whole remote |
authid | The authentication ID PDM authenticates as | This is the identity every PDM action is attributed to in the cluster’s log |
token | The access token secret | Stored on the PDM host, in cleartext, in a config file |
web-url | Optional, for generating Web UI links | What “Open in PVE UI” points at; wrong here means a dead link, not a broken remote |
Read the nodes row twice. PDM talks to a cluster through the node addresses
you gave it. A cluster is quorate and healthy, one node is down for memory
replacement, and if that node was the only address in the list, PDM reports the
entire remote as unreachable. List several — ideally all of them, or at least
three — and PDM has somewhere else to go.
proxmox-datacenter-manager-admin remote add \
--id site-a \
--type pve \
--nodes 192.0.2.11 \
--nodes 192.0.2.12 \
--nodes 192.0.2.13 \
--authid 'pdm@pve!datacenter-manager' \
--token 'REPLACE_ME'# proxmox-datacenter-manager-admin remote list --output-format textThe companion commands are remote update <id> for changing the node list,
authid, token or web URL; remote version <id> to confirm PDM can reach a
remote and see what it is running; remote subscriptions for the fleet
subscription picture; and remote remove <id>, which has a flag worth its own
section.
Trust, and the certificate that will rotate
PDM validates a remote’s TLS certificate against the system certificate store. This produces two quite different operational worlds.
If the remote presents a publicly trusted certificate — for example one issued by Let’s Encrypt through ACME, which Part III covers configuring — then no further trust configuration is needed and certificate renewals are handled transparently. Nothing breaks in ninety days. This is the reason to do the ACME work.
If the remote presents the default self-signed Proxmox certificate, PDM pins the fingerprint you accepted when you added the remote. That pin is a snapshot of a certificate that has an expiry date.
When the remote renews or rotates that certificate, the pinned fingerprint no longer matches and every connection to that remote fails, with an error the interface and CLI both surface:
connection failed: Could not establish a TLS connection. Check whether the
fingerprint matches or the certificate on the remote is valid. OpenSSL Error:
error:0A000086:SSL routines:tls_post_process_server_certificate:certificate
verify failed
The most common cause is a legitimate renewal. It can also mean an expired or otherwise invalid certificate — or, if the change is unexpected, a man-in-the-middle attack. The documentation says to confirm the new certificate through a trusted channel before accepting it, and that instruction is the whole reason pinning exists. An operator who clicks accept reflexively has converted a security control into a dialog box.
# proxmox-datacenter-manager-client remote probe-certificate site-a pve-01FPR='REPLACE_WITH_VERIFIED_FINGERPRINT'
proxmox-datacenter-manager-client remote set-fingerprint site-a pve-01 "$FPR"
# clearing the pin, for a remote that now uses a trusted certificate
proxmox-datacenter-manager-client remote set-fingerprint site-a pve-01In the web interface, the equivalent is the Check Certificate action on the remote. PDM 1.1 improved it into a dialog that re-probes the configured nodes, lets you accept the new fingerprint per node or clear the stored pin, and applies the changes as one batch. It is reachable from the remotes list and is offered directly on a remote whose connection is currently failing.
The system journal on the PDM host records additional detail, including both the fingerprint the remote presented and the one that was expected — which is the evidence you compare against your trusted channel.
The token is the whole permission story
remote add needs an authid and a token. Everything PDM does on that
cluster, forever, it does as that identity, bounded by that identity’s PVE-side
privileges.
That has an immediate design consequence and a deferred one.
The immediate one: the PDM documentation does not prescribe a role for this
token. It tells you the field exists and what shape the value takes. What
privileges to grant is your decision, made once, on a cluster, in a pveum
command — and it is the decision that determines whether a compromised PDM host
can read your estate or reconfigure it.
The deferred one is lesson 5, which treats this properly. For now, three rules that hold regardless of how you resolve the design:
- A dedicated user and token per remote. Not
root@pam. Not one token reused across clusters. One identity per remote means one thing to revoke, and a cluster’s task log that names PDM rather than naming root. - Privilege separation on the PVE side. Part XV covers
--privsep 1: the token carries its own ACLs rather than inheriting the user’s. That is what lets you grant the token less than the user has. - Write down what you granted. In six months, “what can PDM do on site-B”
must be answerable from a document, not from an archaeology session in
user.cfg.
Key takeaways
- PDM is small: 2 cores, 4 GiB, 40 GB is the recommended shape. The decision that matters is placement, and running PDM inside a cluster it manages is a circular dependency you may accept, but must accept on purpose.
- The ISO is the recommended install. The Debian route assumes you have already got the base system, storage and network right.
- Enterprise repository access needs no PDM subscription, but does need at least 80% of configured remote nodes carrying Basic or higher.
- Upgrade with
apt full-upgrade.apt upgradecan leave PDM in a partially upgraded state. - A remote is a node list, an authid, a token and a type. List several node addresses so one node’s maintenance does not take the remote offline.
remote removedeletes the token on the cluster by default. Keep that default, and remove remotes before destroying a PDM host.- A publicly trusted certificate on the remote means renewals are transparent. A self-signed one means PDM pins a fingerprint that will one day stop matching, per node, with a TLS error that also happens to be what an attack looks like.
Knowledge check
Knowledge check · 4 questions
Q1. A five-node PVE cluster is added to PDM with a single node address in the remote configuration. That node is powered down for a DIMM replacement while the cluster stays quorate and healthy. What does PDM report?
Q2. A remote whose PVE nodes use ACME-issued Let’s Encrypt (ACME) certificates will keep working across certificate renewals without any action in PDM, whereas a remote using the default self-signed certificates will break on renewal until the pin is updated.
Q3. PDM is being decommissioned and its host will be deleted. Which of these leave a valid, privileged API token stranded on a production cluster? Select all that apply.
Q4. An operator adds a lab cluster of twelve unsubscribed nodes to a PDM instance that previously managed twenty subscribed production nodes. Enterprise repository access on the PDM host stops working. Why?
Passing score: 75%. Answers are checked in this browser.