25 Commits
v2.0.0 ... main

Author SHA1 Message Date
Daan Selen
9ab86d9e89 chore: fix name
All checks were successful
Build and push / Build and push (map[name:systemec_piraeus registry:piraeus.systemec.nl]) (push) Successful in 5m12s
2025-12-05 05:38:00 -06:00
Daan Selen
923b65c1e4 fix: workflow for Systemec use
Some checks failed
Build and push / Build and push (map[name:systemec_piraeus registry:piraeus.systemec.nl]) (push) Failing after 34s
2025-12-05 05:36:32 -06:00
Daan Selen
77016209c1 Merge remote-tracking branch 'github-fork/feat-debian-rebase' 2025-12-05 05:29:32 -06:00
e64f6724ab chore: add triggers 2025-10-31 14:12:35 +01:00
46fc633d88 chore: revert image name to paessler 2025-10-31 14:11:43 +01:00
573c54f5e2 Squashed commit of the following:
commit fbdc7b08d91f1cce58f3a25f7438612e09d24bbd
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:25:46 2025 +0100

    fix: logic for github attestant

commit 5db2220ff97ebd41b44328d89f9f593f174d8632
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:17:54 2025 +0100

    chore: add registry prefix

commit 238598047289776d13014739b020d5a5f0e3f182
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:10:25 2025 +0100

    revert: if condition

commit d5906aa4c1ddbe4ce0ab371b697a4935568b0307
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 13:08:53 2025 +0100

    feat: try through computing

commit af7759c24ee24e75be8eff259943192131c86190
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:55:10 2025 +0100

    comment: i am getting sloppy

commit ff57fd9f368bd1d266b16caa076f6055ffdd45ad
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:54:49 2025 +0100

    chore: indent fix

commit 7ece71e954b8d664d21d85ff66b11858b44ee7bf
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:54:12 2025 +0100

    chore: expand workflow but share certain actions

commit 5045ca884f025652f7953acd56dfd5a0ea81967c
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:51:51 2025 +0100

    chore: wrap in quotes

commit b2bd34b0843b7143e23109bfcc9535364efaef20
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:51:16 2025 +0100

    chore: simplify syntax

commit 57d440b286d873a7b8410ac811185be6865e6a66
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:50:19 2025 +0100

    fix: syntax

commit 370ddbb2e05231a6abeb8a2cf8f665681c378bc7
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:49:10 2025 +0100

    fix: logic syntax

commit eb1f6259c26294b82e4aa75ee8a9d77c24d36e1d
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:39:31 2025 +0100

    fix: syntax

commit 48f088b8b110f2db65cec6a2d21ec0e4bc0ae27a
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:36:26 2025 +0100

    chore: try to push with personal account

commit 5052a07164fa3c98c2e8a5a20e4b7290ecd88a22
Author: DaanSelen <dselen@systemec.nl>
Date:   Fri Oct 31 12:35:02 2025 +0100

    chore: rework trigger per variant
2025-10-31 14:10:06 +01:00
8abf3edfcd feat: rewrite workflow 2025-10-31 12:31:25 +01:00
16a7bea45c feat: rebase to Debian 13 with fallback to bookworm repos 2025-10-31 12:11:10 +01:00
Flow86
baa179a41c Merge pull request #8 from PaesslerAG/Flow86-patch-1
fix: allow more parameters to be passed through
2025-05-27 09:00:40 +02:00
Flow86
91a2187ec1 fix: allow more parameters to be passed through
allow short form of --help (-h) and also --version (-V) to be directly used
2025-05-26 11:43:02 +02:00
Flow86
b54bc94716 Merge pull request #7 from PaesslerAG/docu/manual-link
docs: update manual link
2025-04-16 06:55:54 +02:00
Florian Dörsch
44749872c3 docs: update manual link 2025-04-15 07:35:57 +02:00
Benjamin Kästner
b04fc33694 Merge pull request #6 from PaesslerAG/Flow86-patch-1
ci: delete .github/workflows/dockerhub-description.yml
2025-03-18 15:24:19 +01:00
Flow86
198cc27854 ci: delete .github/workflows/dockerhub-description.yml
The job is not used anyway
2025-03-18 14:09:02 +01:00
Benjamin Kästner
94519a402f Merge pull request #4 from PaesslerAG/Flow86-patch-1
docs: fix wrong local volume paths for docker volumes
2024-12-05 15:23:34 +01:00
Flow86
546ee7af5e docs: fix wrong local volume paths for docker volumes
docker expects to have absolute paths for local volume definitions
2024-11-25 10:14:39 +01:00
Flow86
dfdc14a586 Merge pull request #3 from PaesslerAG/fix/entrypoint_service_run_2
fix: broken conditions in run script
2024-10-10 14:22:09 +02:00
Florian Dörsch
8bb3d9b08b fix: broken conditions in run script 2024-10-09 08:32:18 +02:00
Flow86
19ee055f91 Merge pull request #1 from PaesslerAG/fix/entrypoint_service_run
Adapt entrypoint and README
2024-09-13 10:32:32 +02:00
Florian Dörsch
07882452e1 feat: test if the id is set in the config.yml and if so, don't generate an id.txt file aswell as not set PRTGMPPROBE__ID 2024-08-19 10:03:48 +02:00
Florian Dörsch
8a15bb8d94 docs: add information on how to use a custom CA certificate and/or where to obtain it 2024-08-19 10:03:44 +02:00
Florian Dörsch
cb62a9faa3 docs: add clarification on how to find all configuration file options 2024-08-19 10:03:40 +02:00
Florian Dörsch
08ee7e1398 fix: do not always add service-run as argument to the entrypoint
This allows the correct usage of

`docker run -it paessler/multi-platform-probe example-config`
2024-08-19 10:03:34 +02:00
Flow86
29af404991 Merge pull request #2 from PaesslerAG/actions/dockerhub-description
Add workflow to update dockerhub description automatically
2024-08-19 09:46:01 +02:00
Florian Dörsch
fd79b23057 ci: add workflow to update dockerhub description automatically 2024-08-16 11:01:37 +02:00
6 changed files with 147 additions and 41 deletions

85
.github/workflows/docker-build.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
# See https://docs.github.com/en/actions/publishing-packages/publishing-docker-images
name: Build and push # to docker registries
on:
workflow_dispatch:
push:
branches:
- "main"
tags:
- "*"
release:
types: [published]
env:
IMAGE_NAME: prtgprobe/multi-platform-probe
jobs:
docker_build:
name: Build and push
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
attestations: write
id-token: write
strategy:
fail-fast: false
matrix:
variant:
- name: systemec_piraeus
registry: "piraeus.systemec.nl"
steps:
- name: Set image for Docker
id: set-image
run: |
if [ "${{ matrix.variant.name }}" == "systemec_piraeus" ]; then
echo "IMAGE_TO_USE=${IMAGE_NAME}" >> $GITHUB_ENV
else
echo "Failing to resolve."
exit 1
fi
- name: Check out the repository
uses: actions/checkout@v5
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: |
- linux/amd64
- linux/arm64
- linux/arm/v7
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Systemec Piraeus
if: matrix.variant.name == 'systemec_piraeus'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PUSH_TOKEN }}
registry: ${{ matrix.variant.registry }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ matrix.variant.registry }}/${{ env.IMAGE_TO_USE }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=sha,format=short,prefix=
- name: Build and push Docker image
id: push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64,linux/arm/v7

View File

@@ -3,8 +3,8 @@
name: Push to Docker Hub name: Push to Docker Hub
on: on:
release: # release:
types: [published] # types: [published]
env: env:
IMAGE_NAME: paessler/multi-platform-probe IMAGE_NAME: paessler/multi-platform-probe

View File

@@ -3,9 +3,9 @@
name: Push to GitHub name: Push to GitHub
on: on:
push: # push:
branches: ["main"] # branches: ["main"]
tags: ["*"] # tags: ["*"]
env: env:
REGISTRY: ghcr.io REGISTRY: ghcr.io

View File

@@ -1,10 +1,11 @@
FROM debian:11-slim FROM debian:13-slim
LABEL org.opencontainers.image.authors="info@paessler.com" LABEL org.opencontainers.image.authors="info@paessler.com"
LABEL org.opencontainers.image.vendor="Paessler GmbH" LABEL org.opencontainers.image.vendor="Paessler GmbH"
LABEL org.opencontainers.image.licenses="MIT" LABEL org.opencontainers.image.licenses="MIT"
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive
ARG DEBIAN_FB_RELEASE=bookworm
# enforce image to be up to date # enforce image to be up to date
RUN \ RUN \
@@ -21,7 +22,7 @@ RUN \
# - libcap2-bin (for setcap command) # - libcap2-bin (for setcap command)
# #
RUN \ RUN \
apt-get update \ apt-get update && apt-get full-upgrade \
&& apt-get -y install --no-install-recommends --no-install-suggests \ && apt-get -y install --no-install-recommends --no-install-suggests \
ca-certificates \ ca-certificates \
python3-minimal \ python3-minimal \
@@ -29,13 +30,15 @@ RUN \
libcap2-bin \ libcap2-bin \
&& apt-get clean && apt-get clean
# add paessler's official package repository # Add Paessler's official package repository with current release specifications.
# If the current release is not present on Paessler's servers fallback to defined fallback release.
RUN \ RUN \
apt-get update \ apt-get -qq update \
&& apt-get -y install --no-install-recommends --no-install-suggests \ && apt-get -y install --no-install-recommends --no-install-suggests \
curl \ curl \
&& curl --fail --silent https://packages.paessler.com/keys/paessler.asc > /usr/share/keyrings/paessler-archive-keyring.asc \ && curl --fail https://packages.paessler.com/keys/paessler.asc > /usr/share/keyrings/paessler-archive-keyring.asc \
&& curl --fail --silent https://packages.paessler.com/docs/apt-sources/$(. /etc/os-release && echo $VERSION_CODENAME).sources > /etc/apt/sources.list.d/paessler.sources \ && curl --fail https://packages.paessler.com/docs/apt-sources/$(. /etc/os-release && $VERSION_CODENAME).sources \
|| curl --fail https://packages.paessler.com/docs/apt-sources/${DEBIAN_FB_RELEASE}.sources > /etc/apt/sources.list.d/paessler.sources \
&& apt-get -y remove --purge curl \ && apt-get -y remove --purge curl \
&& apt-get clean && apt-get clean
@@ -44,10 +47,11 @@ RUN \
apt-get update \ apt-get update \
&& apt-get -y install --no-install-recommends --no-install-suggests \ && apt-get -y install --no-install-recommends --no-install-suggests \
prtgmpprobe \ prtgmpprobe \
&& apt-get autoremove -y \
&& apt-get clean && apt-get clean
# add entrypoint script # add entrypoint script
COPY --chown=root:root --chmod=0555 run-prtgmpprobe.sh /run-prtgmpprobe.sh COPY --chown=root:root --chmod=0555 run-prtgmpprobe.sh /entrypoint.sh
# specify volumes: # specify volumes:
# - /config : configuration directory for the prtgmpprobe, put your config.yml here. # - /config : configuration directory for the prtgmpprobe, put your config.yml here.
@@ -57,4 +61,5 @@ VOLUME [ "/config", "/opt/paessler/share/scripts" ]
# set WORKDIR to a sane default # set WORKDIR to a sane default
WORKDIR / WORKDIR /
ENTRYPOINT [ "/run-prtgmpprobe.sh", "service-run" ] ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "service-run" ]

View File

@@ -17,7 +17,7 @@ We recommend that you always update to the latest version of PRTG via the Auto-U
Requires a [NATS server](#install-and-configure-a-nats-server) connection configured in PRTG. Requires a [NATS server](#install-and-configure-a-nats-server) connection configured in PRTG.
[prtg-96]: https://www.paessler.com/prtg/history/stable#24.2.96.1315 [prtg-96]: https://www.paessler.com/prtg/history/stable#24.2.96.1315
[manual]: https://paessler.canto.global/direct/document/qvou34dmut1uh0gg6mqee3ip2k/K-e9xGiEiT58XzlH3s_Nf-B3lVk/original?content-type=application%2Fpdf&name=Multi-Platform+Probe+Manual.pdf [manual]: https://manuals.paessler.com/multiplatformprobemanual.pdf
## How to use the multi-platform probe container ## How to use the multi-platform probe container
@@ -37,7 +37,7 @@ Paessler GmbH provides the **NATS Server for Paessler PRTG** Windows installer t
* Configures the NATS server. * Configures the NATS server.
* Installs and starts the NATS server service in the background. * Installs and starts the NATS server service in the background.
For the installer and step-by-step instructions on how to set up a NATS server on Windows, see section **Step 1: Install a NATS server** in the [Multi-Platform Probe for PRTG (PDF)][manual] manual. For the installer and step-by-step instructions on how to set up a NATS server on Windows, see section **Step 1: Install a NATS server** in the [Multi-Platform Probe for PRTG][manual] manual.
If you want to deploy your NATS server on a non-Windows system, see the NATS documentation on their website. If you want to deploy your NATS server on a non-Windows system, see the NATS documentation on their website.
@@ -46,7 +46,7 @@ For the installer and step-by-step instructions on how to set up a NATS server o
Once you set up your NATS server, you must configure PRTG to accept connections to the NATS server. Once you set up your NATS server, you must configure PRTG to accept connections to the NATS server.
This is done from the PRTG web interface via **Setup** | **Cores & Probes** | **[Multi-Platform Probe Connection Settings][prtg-manual:cores]**. This is done from the PRTG web interface via **Setup** | **Cores & Probes** | **[Multi-Platform Probe Connection Settings][prtg-manual:cores]**.
For step-by-step instructions on how to configure PRTG, see section **Step 2: Configure connection in PRTG** in the [Multi-Platform Probe for PRTG (PDF)][manual] manual. For step-by-step instructions on how to configure PRTG, see section **Step 2: Configure connection in PRTG** in the [Multi-Platform Probe for PRTG][manual] manual.
[prtg-manual:cores]: https://www.paessler.com/manuals/prtg/core_and_probes#multi_platform_probe_connection [prtg-manual:cores]: https://www.paessler.com/manuals/prtg/core_and_probes#multi_platform_probe_connection
@@ -66,19 +66,33 @@ nats:
``` ```
You must put the configuration file into the `/config/config.yml` volume of the docker container. You must put the configuration file into the `/config/config.yml` volume of the docker container.
For all available configuration options, see [config.full-example.yml](./config/config.full-example.yml).
The container also used the `/config` volume to store the [multi-platform probe's GID][GID] and therefore cannot be set as read-only (`:ro`) unless you specify the GID as an environment variable. If necessary you can put your custom [CA certificate][TLS] into `/config/certs` and specify it in the `/config/config.yml` as well:
```yaml
access_key: YOUR_PROBE_ACCESS_KEY
nats:
url: tls://localhost:23561
authentication:
user: USER
password: PASSWORD
server_ca: /config/certs/ca.crt
```
The container also used the `/config` volume to store the [multi-platform probe's GID][GID] and therefore cannot be set as read-only (`:ro`) unless you specify the [multi-platform probe's GID][GID] as an environment variable.
You can also use the `/opt/paessler/share/scripts` volume for the scripts of the [Script v2][prtgmanual:scriptv2] sensor. You can also use the `/opt/paessler/share/scripts` volume for the scripts of the [Script v2][prtgmanual:scriptv2] sensor.
[prtgmanual:scriptv2]: https://www.paessler.com/manuals/prtg/script_v2_sensor [prtgmanual:scriptv2]: https://www.paessler.com/manuals/prtg/script_v2_sensor
[TLS]: https://kb.paessler.com/en/topic/91877-how-can-i-create-a-tls-certificate
[GID]: https://www.paessler.com/manuals/prtg/prtg_administration_tool_on_remote_probe_systems#:~:text=GID [GID]: https://www.paessler.com/manuals/prtg/prtg_administration_tool_on_remote_probe_systems#:~:text=GID
```sh ```sh
docker run -it \ docker run -it \
--network bridge \ --network bridge \
-v ./scripts:/opt/paessler/share/scripts:ro \ -v $(pwd)/scripts:/opt/paessler/share/scripts:ro \
-v ./config:/config \ -v $(pwd)/config:/config \
--cap-add NET_ADMIN \ --cap-add NET_ADMIN \
--cap-add NET_RAW \ --cap-add NET_RAW \
paessler/multi-platform-probe:latest paessler/multi-platform-probe:latest

View File

@@ -13,12 +13,12 @@ _passthrough=0
for _arg in "$@" for _arg in "$@"
do do
case "$_arg" in case "$_arg" in
--help|example-config) -h|--help|example-config|-V|--version)
_passthrough=1 _passthrough=1
;; ;;
esac esac
done done
if [ ! $_passthrough -eq 0 ] ; then if [ $_passthrough -ne 0 ] ; then
exec gosu paessler_mpprobe:paessler_mpprobe \ exec gosu paessler_mpprobe:paessler_mpprobe \
${PRTGMPPROBE__BINARY} \ ${PRTGMPPROBE__BINARY} \
"$@" "$@"
@@ -42,19 +42,29 @@ done
# Handling Env vars # Handling Env vars
# Get/Generate a probe id from PRTGMPPROBE__ID_FILE or from PRTGMPPROBE__ID if [ ! -f "${PRTGMPPROBE__CONFIG_FILE}" ] ; then
if [ -z "${PRTGMPPROBE__ID-}" ] ; then error "Configuration file ${PRTGMPPROBE__CONFIG_FILE} does not exist. Please create one."
if [ ! -f "${PRTGMPPROBE__ID_FILE}" ] ; then echo >&2 " "
cat /proc/sys/kernel/random/uuid > ${PRTGMPPROBE__ID_FILE} || ( echo >&2 "Example:"
error "Unable to write to ${PRTGMPPROBE__ID_FILE}. Please either set PRTGMPPROBE__ID in the container environment or make sure the location ${PRTGMPPROBE__ID_FILE} is writable." ${PRTGMPPROBE__BINARY} example-config >&2
echo >&2 " " exit 1
echo >&2 "Example:" fi
echo >&2 "PRTGMPPROBE__ID=$(cat /proc/sys/kernel/random/uuid)"
exit 1 # Get/Generate a probe id from PRTGMPPROBE__ID_FILE or from PRTGMPPROBE__ID if not set in PRTGMPPROBE__CONFIG_FILE
) if ! grep -q "^id:" "${PRTGMPPROBE__CONFIG_FILE}" ; then
if [ -z "${PRTGMPPROBE__ID-}" ] ; then
if [ ! -f "${PRTGMPPROBE__ID_FILE}" ] ; then
cat /proc/sys/kernel/random/uuid > ${PRTGMPPROBE__ID_FILE} || (
error "Unable to write to ${PRTGMPPROBE__ID_FILE}. Please either set PRTGMPPROBE__ID in the container environment, 'id:' in the ${PRTGMPPROBE__CONFIG_FILE} or make sure the location ${PRTGMPPROBE__ID_FILE} is writable."
echo >&2 " "
echo >&2 "Example:"
echo >&2 "PRTGMPPROBE__ID=$(cat /proc/sys/kernel/random/uuid)"
exit 1
)
fi
PRTGMPPROBE__ID=$(cat ${PRTGMPPROBE__ID_FILE})
export PRTGMPPROBE__ID
fi fi
PRTGMPPROBE__ID=$(cat ${PRTGMPPROBE__ID_FILE})
export PRTGMPPROBE__ID
fi fi
export PRTGMPPROBE__NAME=${PRTGMPPROBE__NAME:-"multi-platform-probe@$(hostname)"} export PRTGMPPROBE__NAME=${PRTGMPPROBE__NAME:-"multi-platform-probe@$(hostname)"}
@@ -70,14 +80,6 @@ export PRTGMPPROBE__LOGGING__CONSOLE__WITHOUT_TIME=${PRTGMPPROBE__LOGGING__CONSO
export PRTGMPPROBE__LOGGING__JOURNALD__LEVEL=${PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX:-"off"} export PRTGMPPROBE__LOGGING__JOURNALD__LEVEL=${PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX:-"off"}
export PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX=${PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX:-"PRTGMPPROBE"} export PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX=${PRTGMPPROBE__LOGGING__JOURNALD__FIELD_PREFIX:-"PRTGMPPROBE"}
if [ ! -f "${PRTGMPPROBE__CONFIG_FILE}" ] ; then
error "Configuration file ${PRTGMPPROBE__CONFIG_FILE} does not exist. Please create one."
echo >&2 " "
echo >&2 "Example:"
${PRTGMPPROBE__BINARY} example-config >&2
exit 1
fi
env | grep PRTGMPPROBE__ >&2 env | grep PRTGMPPROBE__ >&2
# add capabilities for icmp to the probe executable # add capabilities for icmp to the probe executable