name: librenms services: traefik: image: traefik:2.5 container_name: traefik command: - "--global.checknewversion=false" - "--global.sendanonymoususage=false" - "--log=true" - "--log.level=INFO" - "--entrypoints.http=true" - "--entrypoints.http.address=:80" - "--entrypoints.http.http.redirections.entrypoint.to=https" - "--entrypoints.http.http.redirections.entrypoint.scheme=https" - "--entrypoints.https=true" - "--entrypoints.https.address=:443" - "--certificatesresolvers.letsencrypt" - "--certificatesresolvers.letsencrypt.acme.storage=acme.json" - "--certificatesresolvers.letsencrypt.acme.email=webmaster@example.com" - "--certificatesresolvers.letsencrypt.acme.httpchallenge" - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=http" - "--providers.docker" - "--providers.docker.watch=true" - "--providers.docker.exposedbydefault=false" ports: - target: 80 published: 80 protocol: tcp - target: 443 published: 443 protocol: tcp volumes: - "./acme.json:/acme.json" - "/var/run/docker.sock:/var/run/docker.sock" restart: always db: image: mariadb:10 container_name: librenms_db command: - "mysqld" - "--innodb-file-per-table=1" - "--lower-case-table-names=0" - "--character-set-server=utf8mb4" - "--collation-server=utf8mb4_unicode_ci" volumes: - "./db:/var/lib/mysql" environment: - "TZ=${TZ}" - "MARIADB_RANDOM_ROOT_PASSWORD=yes" - "MYSQL_DATABASE=${MYSQL_DATABASE}" - "MYSQL_USER=${MYSQL_USER}" - "MYSQL_PASSWORD=${MYSQL_PASSWORD}" restart: always redis: image: redis:7.2-alpine container_name: librenms_redis environment: - "TZ=${TZ}" restart: always msmtpd: image: crazymax/msmtpd:latest container_name: librenms_msmtpd env_file: - "./msmtpd.env" restart: always librenms: image: librenms/librenms:latest container_name: librenms hostname: librenms depends_on: - db - redis - msmtpd volumes: - "./librenms:/data" labels: - "traefik.enable=true" - "traefik.http.routers.librenms.entrypoints=https" - "traefik.http.routers.librenms.rule=Host(`librenms.example.com`)" - "traefik.http.routers.librenms.tls=true" - "traefik.http.routers.librenms.tls.certresolver=letsencrypt" - "traefik.http.routers.librenms.tls.domains[0].main=librenms.example.com" - "traefik.http.services.librenms.loadbalancer.server.port=8000" env_file: - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" restart: always dispatcher: image: librenms/librenms:latest container_name: librenms_dispatcher hostname: librenms-dispatcher depends_on: - librenms - redis volumes: - "./librenms:/data" env_file: - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "DISPATCHER_NODE_ID=dispatcher1" - "SIDECAR_DISPATCHER=1" restart: always syslogng: image: librenms/librenms:latest container_name: librenms_syslog hostname: librenms-syslogng depends_on: - librenms - redis ports: - target: 514 published: 514 protocol: tcp - target: 514 published: 514 protocol: udp volumes: - "./librenms:/data" env_file: - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_SYSLOGNG=1" restart: always snmptrapd: image: librenms/librenms:latest container_name: librenms_snmptrapd hostname: librenms-snmptrapd depends_on: - librenms - redis ports: - target: 162 published: 162 protocol: tcp - target: 162 published: 162 protocol: udp volumes: - "./librenms:/data" env_file: - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_SNMPTRAPD=1" restart: always