Skip to content
Open
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ RUN apk --update --no-cache add \
php83-sockets \
php83-tokenizer \
php83-xml \
php83-xmlwriter \
php83-zip \
python3 \
py3-pip \
Expand Down
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,13 @@ linux/s390x
* `DB_PASSWORD`: MySQL password (default `librenms`)
* `DB_TIMEOUT`: Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default `60`)

### Plugins
* `INSTALL_PLUGINS`: Space-separated list of plugins to install

> This environment variable allows you to specify which plugins should be installed
> in your LibreNMS container. It's particularly useful for enabling SAML authentication.
> The value should be a space-separated list of plugin names.

### Misc

* `LIBRENMS_BASE_URL`: URL of your LibreNMS instance (default `/`)
Expand Down
34 changes: 34 additions & 0 deletions rootfs/etc/cont-init.d/09-install-plugins.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/usr/bin/with-contenv sh
# shellcheck shell=sh
set -e

INSTALL_PLUGINS=${INSTALL_PLUGINS:-0}
SIDECAR_DISPATCHER=${SIDECAR_DISPATCHER:-0}
SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0}
SIDECAR_SNMPTRAPD=${SIDECAR_SNMPTRAPD:-0}

# Exit if any sidecar is enabled
if [ "$SIDECAR_DISPATCHER" = "1" ] || [ "$SIDECAR_SYSLOGNG" = "1" ] || [ "$SIDECAR_SNMPTRAPD" = "1" ]; then
exit 0
fi

# Exit if plugins are not needed
if [ "$INSTALL_PLUGINS" = "0" ]; then
exit 0
fi

echo ">> Plugin configuration detected"

echo "Fixing permissions..."
chown librenms:librenms \
"${LIBRENMS_PATH}"/composer.* \
"${LIBRENMS_PATH}/logs/librenms.log" \
"${LIBRENMS_PATH}/scripts/composer_wrapper.php"

chown -R librenms:librenms \
"${LIBRENMS_PATH}/scripts" \
"${LIBRENMS_PATH}/vendor" \
"${LIBRENMS_PATH}/bootstrap"

# Install plugins
lnms plugin:add "$INSTALL_PLUGINS"
43 changes: 43 additions & 0 deletions rootfs/etc/cont-init.d/09-plugin-add.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/with-contenv sh
# shellcheck shell=sh
set -e

INSTALL_PLUGINS=${INSTALL_PLUGINS:-0}

# Continue only if plugins are needed
if [ "$INSTALL_PLUGINS" = "0" ]; then
exit 0
fi

echo ">>"
echo ">> Plugin configuration detected"
echo ">>"

# Fix perms
echo "Fixing perms..."
chown librenms:librenms \
${LIBRENMS_PATH}/composer.* \
${LIBRENMS_PATH}/logs/librenms.log \
${LIBRENMS_PATH}/scripts/composer_wrapper.php
chown -R librenms:librenms \
${LIBRENMS_PATH}/scripts \
${LIBRENMS_PATH}/vendor \
${LIBRENMS_PATH}/bootstrap

# Create service
IFS=, read -ra PLUGINS <<< "$INSTALL_PLUGINS"

for plugin in "${PLUGINS[@]}"; do
echo "Installing plugin: $plugin"

if ! lnms plugin:installed "$plugin"; then
Copy link
Member

Choose a reason for hiding this comment

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

This command does not exist :)

if ! lnms plugin:add "$plugin"; then
echo "Error installing $plugin" >&2
exit 1
fi
echo "Installed $plugin"
else
echo "$plugin already installed"
fi

done