diff --git a/quadlets/librenms/README.md b/quadlets/librenms/README.md new file mode 100644 index 0000000..c5cc604 --- /dev/null +++ b/quadlets/librenms/README.md @@ -0,0 +1,5 @@ +## Create DB password secret + +```bash +printf 'supersecretpassword' | podman secret create librenms-db-pw - +``` diff --git a/quadlets/librenms/data.volume b/quadlets/librenms/data.volume new file mode 100644 index 0000000..6cf52f1 --- /dev/null +++ b/quadlets/librenms/data.volume @@ -0,0 +1,3 @@ +[Volume] +VolumeName=librenms-data + diff --git a/quadlets/librenms/db.env b/quadlets/librenms/db.env new file mode 100644 index 0000000..8838318 --- /dev/null +++ b/quadlets/librenms/db.env @@ -0,0 +1,4 @@ +DB_HOST=librenms-db +DB_NAME=librenms +DB_USER=librenms +DB_TIMEOUT=60 diff --git a/quadlets/librenms/dispatcher.container b/quadlets/librenms/dispatcher.container new file mode 100644 index 0000000..a18152c --- /dev/null +++ b/quadlets/librenms/dispatcher.container @@ -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 diff --git a/quadlets/librenms/librenms.container b/quadlets/librenms/librenms.container new file mode 100644 index 0000000..ab4c0bb --- /dev/null +++ b/quadlets/librenms/librenms.container @@ -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 diff --git a/quadlets/librenms/librenms.env b/quadlets/librenms/librenms.env new file mode 100644 index 0000000..ccad298 --- /dev/null +++ b/quadlets/librenms/librenms.env @@ -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 * * * * diff --git a/quadlets/librenms/mariadb.container b/quadlets/librenms/mariadb.container new file mode 100644 index 0000000..f8ec3a8 --- /dev/null +++ b/quadlets/librenms/mariadb.container @@ -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 diff --git a/quadlets/librenms/mariadb.env b/quadlets/librenms/mariadb.env new file mode 100644 index 0000000..2407677 --- /dev/null +++ b/quadlets/librenms/mariadb.env @@ -0,0 +1,2 @@ +MYSQL_DATABASE=librenms +MYSQL_USER=librenms diff --git a/quadlets/librenms/msmtpd.container b/quadlets/librenms/msmtpd.container new file mode 100644 index 0000000..effa881 --- /dev/null +++ b/quadlets/librenms/msmtpd.container @@ -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 diff --git a/quadlets/librenms/msmtpd.env b/quadlets/librenms/msmtpd.env new file mode 100644 index 0000000..170bec9 --- /dev/null +++ b/quadlets/librenms/msmtpd.env @@ -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 diff --git a/quadlets/librenms/redis.container b/quadlets/librenms/redis.container new file mode 100644 index 0000000..97af9a8 --- /dev/null +++ b/quadlets/librenms/redis.container @@ -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 diff --git a/quadlets/librenms/snmptrapd.container b/quadlets/librenms/snmptrapd.container new file mode 100644 index 0000000..af2a0dd --- /dev/null +++ b/quadlets/librenms/snmptrapd.container @@ -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 diff --git a/quadlets/librenms/syslogng.container b/quadlets/librenms/syslogng.container new file mode 100644 index 0000000..84b2907 --- /dev/null +++ b/quadlets/librenms/syslogng.container @@ -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 diff --git a/quadlets/librenms/tz.env b/quadlets/librenms/tz.env new file mode 100644 index 0000000..24e3832 --- /dev/null +++ b/quadlets/librenms/tz.env @@ -0,0 +1 @@ +TZ=Etc/UTC