Linux agent for PingPlotter Cloud

This is the package repository for the PingPlotter Cloud Linux agent. Install the setup package for your system, then install the agent.

apt Debian, Ubuntu, Raspberry Pi OS

curl -fsSLO https://packages.pingman.com/pingplotter-repo.deb
sudo dpkg -i pingplotter-repo.deb
sudo apt-get update
sudo apt-get install pingplotter.agent

dnf and yum RHEL, CentOS Stream, AlmaLinux, Rocky, Fedora, Amazon Linux

curl -fsSLO https://packages.pingman.com/pingplotter-repo.rpm
sudo rpm -i pingplotter-repo.rpm
sudo dnf install pingplotter.agent

The setup package installs the signing key and the repository configuration. That's all that's in it: no executable code, no part of the agent. For setting up the agent itself, see the Linux agent documentation.

Repository metadata and rpm packages are signed. The public key is at /pingplotter-agent-signing-key.asc, and the fingerprints are under "Verifying downloads" below.

Supported systems

Packages are published for x86_64, aarch64 and 32-bit Arm (armhf). The agent needs glibc 2.27 or newer (2.34 on 32-bit Arm), which comes from the .NET runtime it's built on. In practice:

Debian                10 and later
Ubuntu                18.04 LTS and later
Raspberry Pi OS       bullseye and later (bookworm on 32-bit)
RHEL / CentOS Stream  8 and later
AlmaLinux / Rocky     8 and later
Fedora                28 and later
Amazon Linux          2023 and later

This list is longer than Microsoft's .NET support table. Theirs covers what they actively test; since the agent bundles its own runtime, what matters here is the glibc floor, and older releases above it work fine.

The packages declare the glibc requirement as a dependency, so on an older system the install fails with a clear error instead of installing an agent that can't start. CentOS 7 and Amazon Linux 2 are below the line and aren't supported.

Setting up the repository by hand

If you'd rather not install the setup package, these commands do the same thing. The end result is identical: the key and one repo config file.

apt Debian, Ubuntu, Raspberry Pi OS

The key goes in /usr/share/keyrings rather than /etc/apt/keyrings so a future key rotation is a normal package update instead of a conffile prompt.

sudo install -d -m 755 /usr/share/keyrings
sudo curl -fsSL https://packages.pingman.com/pingplotter-agent-signing-key.asc \
     -o /usr/share/keyrings/pingplotter.asc
sudo tee /etc/apt/sources.list.d/pingplotter.list >/dev/null <<'EOF'
deb [signed-by=/usr/share/keyrings/pingplotter.asc] https://packages.pingman.com/apt stable main
EOF
sudo apt-get update

dnf and yum RHEL, CentOS Stream, AlmaLinux, Rocky, Fedora, Amazon Linux

sudo install -d -m 755 /etc/pki/rpm-gpg
sudo curl -fsSL https://packages.pingman.com/pingplotter-agent-signing-key.asc \
     -o /etc/pki/rpm-gpg/RPM-GPG-KEY-pingplotter
sudo tee /etc/yum.repos.d/pingplotter.repo >/dev/null <<'EOF'
[pingplotter]
name=PingPlotter Agent
baseurl=https://packages.pingman.com/yum/stable/
enabled=1
repo_gpgcheck=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pingplotter
EOF

If you set this repository up before we signed it, you also have an old entry using [trusted=yes] (apt) or gpgcheck=0 (yum). Disable that one. While it's active, your package manager can still install from the unsigned path.

Verifying downloads

The signing key:

pub   rsa4096 [C]  7496 060E 3434 DD31 1788  C514 9C87 E961 9B54 9CF8
uid   Pingman Tools, LLC (PingPlotter package signing) <info@pingman.com>
sub   rsa4096 [S]  3894 5FED 3D9E 10C7 E4EA  C0C9 F5B4 3CC9 374B 3741

Depending on your tool, you'll see one fingerprint or the other on import: gpg, dnf5 and yum show the first, dnf4 (RHEL 9 family) shows the second. Both are the same key. To check it (ideally also against a second source, since this page and the key come from the same server):

curl -fsSL https://packages.pingman.com/pingplotter-agent-signing-key.asc | gpg --show-keys

The setup packages have a signed checksum list:

gpg --import <(curl -fsSL https://packages.pingman.com/pingplotter-agent-signing-key.asc)

curl -fsSLO https://packages.pingman.com/SHA256SUMS
curl -fsSLO https://packages.pingman.com/SHA256SUMS.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMS

The repository indexes are signed the same way, and every package is checksummed inside the index, so a verified index covers the packages too:

curl -fsSLO https://packages.pingman.com/apt/dists/stable/InRelease
gpg --verify InRelease

curl -fsSLO https://packages.pingman.com/yum/stable/repodata/repomd.xml
curl -fsSLO https://packages.pingman.com/yum/stable/repodata/repomd.xml.asc
gpg --verify repomd.xml.asc repomd.xml

rpms are also signed individually:

rpm --checksig pingplotter-repo.rpm

Debian packages aren't, which is normal for deb repositories: apt's trust comes from the signed index and the checksums in it.

What the setup package changes

The deb installs two files:

/usr/share/keyrings/pingplotter.asc
/etc/apt/sources.list.d/pingplotter.list

The rpm installs two files:

/etc/pki/rpm-gpg/RPM-GPG-KEY-pingplotter
/etc/yum.repos.d/pingplotter.repo

If the machine has a repository entry from before we signed the repository ([trusted=yes] for apt, or a pingman repo with gpgcheck=0 for yum), the install also disables it: apt entries get commented out, the yum repo gets enabled=0. The original file is backed up next to itself with a .pp-migrate-bak suffix. If that old entry stayed active, your package manager could still install from the unsigned path, which would make the signing pointless.

Nothing else on the system is touched and no service is started. Removing the package removes the key and the config file it installed.