git clone https://github.com/KREONET/librenms-docker /opt/librenms
cd /opt/librenms
vi .env
vi librenms.env
vi msmtpd.env
docker compose up -d호스트에서 다음을 ~/.zshrc에 넣어두면 편하게 작업할 수 있다.
alias lnms='docker exec -it librenms lnms'웹에서도 장비를 등록할 수 있지만, CLI를 이용하면 여러 장비를 손쉽게 등록할 수 있다.
lnms device:add --help
C=my_snmp_community
lnms device:add -c $C -d "Dispaly Name 1" ROUTER_IP_1
lnms device:add -c $C -d "Dispaly Name 2" ROUTER_IP_2
....env의 MYSQL_PASSWORD와 librenms.env의 기본 LIBRENMS_SNMP_COMMUNITY 등 환경변수를 적절한 것으로 변경하고 사용한다. Random Password Generator 등을 활용하여 적절한 것으로 변경한다.
LibreNMS의 공식 compose.yml은 latest 버전의 컨테이너를 사용하지만, 본 docker-compose.yml은 패치를 위하여 버전을 고정하였다.
본 Repo가 업데이트된 지 오래된 경우, 공식 GitHub과 Docker Hub에서 버전을 확인하고 패치를 업데이트 하고 사용해야 한다.
db:
image: mariadb:10.5
librenms:
image: librenms/librenms:25.5.0
dispatcher:
image: librenms/librenms:25.5.0
syslogng:
image: librenms/librenms:25.5.0
snmptrapd:
image: librenms/librenms:25.5.0LibreNMS의 기본 문자코드는 UTF-8이다. 장비에 EUC-KR로 접속하고 한글로 포트의 description(ifDesrc)을 설정한 경우, 문자열이 맞지 않아 LibreNMS에서 문자열이 깨져서 나오게 된다.
본 Repo에서는 common.php과 NetSnmpQuery.php는 에서 다음을 추가하였다.
72a73
> $output = mb_convert_encoding($output,"UTF-8","EUC-KR");두 파일은 버전에 따라서 수정이 잦은 파일이다. 최신 버전을 사용하고자 하는 경우, 컨테이너와 동일 버전의 파일을 구하여 패치를 하고 사용해야 한다.
본 Repo의 docker-compose.yml에는 LibreNMS와 함께 유용하게 활용할 수 있는 Oxidized를 주석처리 해 두었다. 이 링크를 참고하여 설정한다.
# oxidized:
# image: oxidized/oxidized:latest
# container_name: oxidized
# ports:
# - 8888:8888/tcp
# environment:
# CONFIG_RELOAD_INTERVAL: 600
# volumes:
# - oxi_cfg:/home/oxidized/.config/oxidized/
# - oxi_ssh:/home/oxidized/.ssh/
# restart: always
volumes:
db:
redis:
libre:
# oxi_cfg:
# oxi_ssh:NocoDB 연동이나 디버깅을 위하여 DB나 phpMyAdmin 포트를 개방할 수 있다. 다만 적절한 보안정책을 수립하여 외부에 노출되지 않아야 한다. 데비안/우분투의 경우 ufw-docker를 적용해 볼 수 있다.
db:
image: mariadb:10.5
# ports:
# - 3306:3306/tcp
# phpmyadmin:
# image: phpmyadmin/phpmyadmin:latest
# container_name: librenms_myadmin
# ports:
# - 8080:80/tcp
# depends_on:
# - db
# environment:
# TZ: "${TZ}"
# PMA_HOST: "db"
# PMA_USER: "librenms"
# PMA_PASSWORD: "${MYSQL_PASSWORD}"
- LibreNMS
- Oxidized
- phpMyAdmin