name: librenms #### NETWORKS networks: docker-traefik_front_network: external: true back_network: driver: bridge attachable: true #### SERVICES 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 ## mariadb mariadb: container_name: librenms-mariadb hostname: librenms-mariadb image: mariadb:10 command: - "mysqld" - "--innodb-file-per-table=1" - "--lower-case-table-names=0" - "--character-set-server=utf8mb4" - "--collation-server=utf8mb4_unicode_ci" volumes: - "./mariadb:/var/lib/mysql" networks: - back_network environment: - "TZ=${TZ}" - "MARIADB_RANDOM_ROOT_PASSWORD=yes" - "MYSQL_DATABASE=${MYSQL_DATABASE}" - "MYSQL_USER=${MYSQL_USER}" - "MYSQL_PASSWORD=${MYSQL_PASSWORD}" restart: always healthcheck: test: [ "CMD", "healthcheck.sh", "--su-mysql", "--connect", "--innodb_initialized" ] start_period: 1m start_interval: 10s interval: 1m timeout: 5s retries: 3 ## redis redis: container_name: librenms-redis hostname: librenms-redis image: redis:7.2-alpine networks: - back_network environment: - "TZ=${TZ}" restart: always healthcheck: test: ["CMD", "redis-cli","ping"] interval: 10s timeout: 5s retries: 3 ## msmtpd msmtpd: container_name: librenms-msmtpd hostname: librenms-msmtpd image: crazymax/msmtpd:latest networks: - back_network environment: - "TZ=Europe/Paris" - "PUID=1500" - "PGID=1500" - "SMTP_HOST=10.0.4.52" - "SMTP_PORT=587" - "SMTP_TLS=on" - "SMTP_STARTTLS=on" - "SMTP_TLS_CHECKCERT=off" - "SMTP_AUTH=on" - "SMTP_USER=hostinfo@tips-of-mine.fr" - "SMTP_PASSWORD=Whf2VtLEd2QR4er" - "SMTP_DOMAIN=localhost" - "SMTP_FROM=hostinfo@tips-of-mine.fr" restart: always healthcheck: test: ["CMD-SHELL", "echo EHLO localhost"] interval: 5s timeout: 5s retries: 5 ## librenms librenms: container_name: librenms-app hostname: librenms-app image: librenms/librenms:latest depends_on: - mariadb: condition: service_healthy restart: true - redis: condition: service_healthy restart: true - msmtpd: condition: service_healthy restart: true volumes: - "./librenms:/data" networks: - docker-traefik_front_network - back_network labels: - "traefik.enable=true" - "traefik.docker.network=interne" # HTTP - "traefik.http.routers.librenms-http.rule=Host(`librenms.traefik.me`)" - "traefik.http.routers.librenms-http.entrypoints=http" # HTTPS - "traefik.http.routers.librenms-https.rule=Host(`librenms.traefik.me`)" - "traefik.http.routers.librenms-https.entrypoints=https" - "traefik.http.routers.librenms-https.service=librenms-service" - "traefik.http.routers.librenms-https.tls=true" # - "traefik.http.routers.librenms-https.tls.certresolver=letsencrypt" # - "traefik.http.routers.librenms-https.tls.domains[0].main=librenms.example.com" # Middleware # Service - "traefik.http.services.librenms-service.loadbalancer.server.port=8000" # env_file: # - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" restart: always ## dispatcher dispatcher: container_name: librenms-dispatcher hostname: librenms-dispatcher image: librenms/librenms:latest depends_on: - librenms - redis: condition: service_healthy restart: true volumes: - "./librenms:/data" networks: - back_network # env_file: # - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=mariadb" - "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 syslogng: container_name: librenms-syslog hostname: librenms-syslogng image: librenms/librenms:latest depends_on: - librenms - redis: condition: service_healthy restart: true ports: - target: 514 published: 514 protocol: tcp - target: 514 published: 514 protocol: udp volumes: - "./librenms:/data" networks: - back_network # env_file: # - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_SYSLOGNG=1" restart: always ## snmptrapd snmptrapd: container_name: librenms-snmptrapd hostname: librenms-snmptrapd image: librenms/librenms:latest depends_on: - librenms - redis: condition: service_healthy restart: true ports: - target: 162 published: 162 protocol: tcp - target: 162 published: 162 protocol: udp volumes: - "./librenms:/data" networks: - back_network # env_file: # - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" - "PGID=${PGID}" - "DB_HOST=mariadb" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_SNMPTRAPD=1" restart: always