feat(librenms): add LibreNMS

This commit is contained in:
redbeardymcgee 2025-03-28 18:17:31 -05:00
parent c34bb5d942
commit c5945259e0
14 changed files with 237 additions and 0 deletions

View file

@ -0,0 +1,5 @@
## Create DB password secret
```bash
printf 'supersecretpassword' | podman secret create librenms-db-pw -
```

View file

@ -0,0 +1,3 @@
[Volume]
VolumeName=librenms-data

4
quadlets/librenms/db.env Normal file
View file

@ -0,0 +1,4 @@
DB_HOST=librenms-db
DB_NAME=librenms
DB_USER=librenms
DB_TIMEOUT=60

View file

@ -0,0 +1,30 @@
[Unit]
Description=LibreNMS dispatcher
After=librenms
After=librenms-redis
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/librenms/librenms:latest
ContainerName=librenms-dispatcher
AutoUpdate=registry
Network=
HostName=librenms-dispatcher
Volume=librenms-data:/data
EnvironmentFile=librenms.env
EnvironmentFile=tz.env
EnvironmentFile=db.env
Environment=DISPATCHER_NODE_ID=dispatcher1
Environment=SIDECAR_DISPATCHER=1
Secret=librenms-db-pw,type=env,target=DB_PASSWORD

View file

@ -0,0 +1,32 @@
[Unit]
Description=LibreNMS
After=librenms-db
After=librenms-redis
After=librenms-msmtpd
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/librenms/librenms:latest
ContainerName=librenms
AutoUpdate=registry
AddCapability=NET_ADMIN
AddCapability=NET_RAW
Network=
HostName=librenms
PublishPort=8000:8000/tcp
Volume=librenms-data:/data
EnvironmentFile=librenms.env
EnvironmentFile=tz.env
EnvironmentFile=db.env
Secret=librenms-db-pw,type=env,target=DB_PASSWORD

View file

@ -0,0 +1,16 @@
MEMORY_LIMIT=256M
MAX_INPUT_VARS=1000
UPLOAD_MAX_SIZE=16M
OPCACHE_MEM_SIZE=128
REAL_IP_FROM=0.0.0.0/32
REAL_IP_HEADER=X-Forwarded-For
LOG_IP_VAR=remote_addr
CACHE_DRIVER=redis
SESSION_DRIVER=redis
REDIS_HOST=redis
LIBRENMS_SNMP_COMMUNITY=librenms
LIBRENMS_WEATHERMAP=false
LIBRENMS_WEATHERMAP_SCHEDULE=*/5 * * * *

View file

@ -0,0 +1,28 @@
[Unit]
Description=LibreNMS DB
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/mariadb/mariadb:10
ContainerName=librenms-db
AutoUpdate=registry
Network=
HostName=librenms-db
Volume=librenms-db:/var/lib/mysql
EnvironmentFile=tz.env
EnvironmentFile=mariadb.env
Environment=MARAIADB_RANDOM_ROOT_PASSWORD=yes
Secret=librenms-db-pw,type=env,target=MYSQL_PASSWORD
Exec=mysqld --innodb-file-per-table=1 --lower-case-table-names=0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

View file

@ -0,0 +1,2 @@
MYSQL_DATABASE=librenms
MYSQL_USER=librenms

View file

@ -0,0 +1,19 @@
[Unit]
Description=LibreNMS msmtpd
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/crazymax/msmtpd:latest
ContainerName=librenms-msmtpd
AutoUpdate=registry
Network=
HostName=librenms-msmtpd
EnvironmentFile=msmtpd.env

View file

@ -0,0 +1,10 @@
# https://github.com/crazy-max/docker-msmtpd
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_TLS=on
SMTP_STARTTLS=on
SMTP_TLS_CHECKCERT=on
SMTP_AUTH=on
SMTP_USER=foo
SMTP_PASSWORD=bar
SMTP_FROM=foo@gmail.com

View file

@ -0,0 +1,19 @@
[Unit]
Description=LibreNMS Redis
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/redis/redis:7.2-alpine
ContainerName=librenms-redis
AutoUpdate=registry
Network=
HostName=librenms-redis
EnvironmentFile=tz.env

View file

@ -0,0 +1,34 @@
[Unit]
Description=LibreNMS snmptrapd
After=librenms
After=librenms-redis
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/librenms/librenms:latest
ContainerName=librenms-snmptrapd
AutoUpdate=registry
Network=
HostName=librenms-snmptrapd
PublishPort=162:162/tcp
PublishPort=162:162/udp
AddCapability=NET_ADMIN
AddCapability=NET_RAW
Volume=librenms-data:/data
EnvironmentFile=librenms.env
EnvironmentFile=tz.env
EnvironmentFile=db.env
Environment=SIDECAR_SNMPTRAPD=1
Secret=librenms-db-pw,type=env,target=DB_PASSWORD

View file

@ -0,0 +1,34 @@
[Unit]
Description=LibreNMS syslogng
After=librenms
After=librenms-redis
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/librenms/librenms:latest
ContainerName=librenms-syslogng
AutoUpdate=
Network=
HostName=librenms-syslogng
PublishPort=514:514/tcp
PublishPort=514:514/udp
AddCapability=NET_ADMIN
AddCapability=NET_RAW
Volume=librenms-data:/data
EnvironmentFile=librenms.env
EnvironmentFile=db.env
EnvironmentFile=tz.env
Environment=SIDECAR_SYSLOGNG=1
Secret=librenms-db-pw,type=env,target=DB_PASSWORD

1
quadlets/librenms/tz.env Normal file
View file

@ -0,0 +1 @@
TZ=Etc/UTC