Hallo. Ich versuche, LibreNMS mit dem Container Station zum Laufen zu bringen. Mit Hilfe eines Forum-Posters habe ich herausgefunden, dass ich die „Applications“-Funktion nutzen muss, um die Informationen aus der docker-compose.yml-Datei einzutragen. Ich versuche, dieses Beispiel zu verwenden, da ich es bereits auf einer Ubuntu-VM bei der Arbeit verwenden konnte: docker/examples/compose at master · librenms/docker · GitHub
Hierfür müssen sich allerdings zwei Variablendateien im selben Verzeichnis wie die docker-compose.yml befinden. Gibt es eine Möglichkeit, dies mit Container Station zu machen? Ich muss die .env und die librenms.env Dateien in diesem gleichen Github-Ordner erstellen. Ich habe auch den Code hier ausprobiert, aber die Datenbank wurde trotzdem nicht korrekt eingerichtet und es kommt zu einem Fehler bei der Datenbank, wenn man ihn verwendet: docker-librenms/docker-compose.yml at master · jarischaefer/docker-librenms · GitHub Dies ist der Fehler: ERROR: DB_HOST must be defined
Kannst du deine verwendete Compose-Datei posten (du kannst natürlich alle verwendeten Passwörter entfernen oder einfach durch Platzhalter ersetzen)
name: librenms
services:
db:
image: mariadb:10
container_name: librenms_db
command:
- "mysqld"
- "--innodb-file-per-table=1"
- "--lower-case-table-names=1"
- "--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
cap_add:
- NET_ADMIN
- NET_RAW
ports:
- target: 8000
published: 8000
protocol: tcp
depends_on:
- db
- redis
#- msmtpd
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"
restart: always
dispatcher:
image: librenms/librenms:latest
container_name: librenms_dispatcher
hostname: librenms-dispatcher
cap_add:
- NET_ADMIN
- NET_RAW
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_syslogng
hostname: librenms-syslogng
cap_add:
- NET_ADMIN
- NET_RAW
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
cap_add:
- NET_ADMIN
- NET_RAW
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
Ich würde zuerst vereinfachen … verwende die YAMLS von hier
Ändere einfach den Port, damit deine QNAP-GUI nicht blockiert wird
version: '3.9'
services:
web:
image: jarischaefer/docker-librenms
hostname: librenms
ports:
- "8000:80"
volumes:
- ./docker-persistence/logs:/opt/librenms/logs
- ./docker-persistence/rrd:/opt/librenms/rrd
environment:
- APP_KEY=base64:7cVDlhFEZ1dyxIuP38Yy72YuXrcGg1ISwAwZ2dKt4Pk=
- DB_HOST=db
- DB_NAME=librenms
- DB_USER=librenms
- DB_PASS=librenms
- POLLERS=16
- BASE_URL=http://localhost
- DAILY_ON_STARTUP=true
links:
- mysql:db
depends_on:
mysql:
condition: service_healthy
mysql:
image: mysql:8.0
command: --sql-mode=""
ports:
- "3306"
volumes:
- ./docker-persistence/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=librenms
- MYSQL_PASSWORD=librenms
- MYSQL_DATABASE=librenms
healthcheck:
test: "mysql -h localhost -u root -p$$MYSQL_ROOT_PASSWORD -e 'USE librenms'"
interval: 5s
timeout: 5s
retries: 20
Wenn diese Minimalversion funktioniert, kannst du sie mit weiteren Optionen erweitern
Du kannst das, was du möchtest, nicht über die Container Station (die GUI) machen. Entweder du schreibst die Werte deiner Umgebungsvariablen direkt in dein Docker-Compose-Skript (wie oben von anderen vorgeschlagen), oder du erledigst das über die Kommandozeile. Verbinde dich per SSH mit deinem QNAP, erstelle einen Ordner in deinem Home-Verzeichnis, in dem du deine docker-compose.yaml-Datei und daneben eine .env-Datei anlegst, in der du deine Umgebungsvariablen definierst. Dann kannst du das Ganze mit docker compose -p your-project-name up -d deployen. Ganz einfach.
Funktioniert bei mir leider nicht:
unbekanntes Flag: --project-name
Obwohl die Hilfe von Docker Compose eindeutig angibt, dass dies ein gültiges Flag ist.