Wir haben unseren Server gestern von KatSys auf den ALAMOS MQTT Connector umgestellt. Anbei unsere Konfig:
Hinweis: Die folgende Konfig wurde für einen Raspi unter DietPi erstellt.
Bei Installationen zB. auf einem vServer kann es erforderlich sein, die Konfig anzupassen.
/home/alarmiator/alarmiatorserver/docker-compose.yaml:
networks:
alarmiator-network:
name: alarmiator-network
driver: bridge
services:
alarmiator_service:
networks:
- alarmiator-network
restart: always
image: alarmiator/alarmiator:latest-beta
healthcheck:
test: curl --fail http://localhost:5000 || exit 1
interval: 20s
retries: 5
start_period: 600s
timeout: 10s
volumes:
- alarm-db:/alarmiatorserver/store
- alarm-katsys-uploads:/alarmiatorserver/plugins/inbound/katsys/uploads
- alarm-public-img:/alarmiatorserver/public/assets/img
- alarm-uploads:/alarmiatorserver/uploads
- alarm-logs:/alarmiatorserver/logs
- alarm-backups:/alarmiatorserver/backup
caddy:
networks:
- alarmiator-network
image: vnxme/caddy:2.10
restart: always
depends_on:
alarmiator_service:
condition: service_healthy
ports:
- "80:80"
- "443:443"
- "443:443/udp"
- "8883:8883"
healthcheck:
test: wget -q -O /dev/null http://localhost || exit 1
interval: 20s
retries: 5
start_period: 15s
timeout: 10s
volumes:
- /home/alarmiator/alarmiatorserver/caddy:/etc/caddy
- caddy_data:/data
- caddy_config:/config
mosquitto:
networks:
- alarmiator-network
restart: always
image: eclipse-mosquitto:latest
volumes:
- /home/alarmiator/alarmiatorserver/mosquitto/config:/mosquitto/config
- /home/alarmiator/alarmiatorserver/mosquitto/certs:/mosquitto/certs
- /home/alarmiator/alarmiatorserver/mosquitto/data:/mosquitto/data
- /home/alarmiator/alarmiatorserver/mosquitto/log:/mosquitto/log
volumes:
alarm-db:
alarm-katsys-uploads:
alarm-public-img:
alarm-uploads:
alarm-logs:
alarm-backups:
caddy_data:
caddy_config:
/home/alarmiator/alarmiatorserver/caddy/Caddyfile:
{
email ${caddy_email}
layer4 {
:8883 {
@dot tls sni ${caddy_domain}
route @dot {
tls
proxy mosquitto:1883
}
}
}
}
localhost:80 {
respond 80
}
(proxy_options) {
header_down Strict-Transport-Security "max-age=31536000"
header_down Content-Security-Policy "upgrade-insecure-requests"
header_down Referrer-Policy "strict-origin-when-cross-origin"
header_down X-Content-Type-Options "nosniff"
header_down Permissions-Policy "geolocation=(self \"https://${caddy_domain}\"), microphone=()"
}
${caddy_domain} {
log {
output file /etc/caddy/caddy.log
format json
}
header {
-Server
}
handle_path /api/* {
reverse_proxy alarmiator_service:5010 {
import proxy_options
}
}
handle /socket.io/* {
reverse_proxy alarmiator_service:5020 {
import proxy_options
}
}
handle /spaceport/socket.io/* {
reverse_proxy alarmiator_service:5555 {
import proxy_options
}
}
handle {
reverse_proxy alarmiator_service:5000 {
import proxy_options
}
}
}
/home/alarmiator/alarmiatorserver/mosquitto/config/mosquitto.conf
plugin_load pwd /usr/lib/mosquitto_password_file.so
plugin_opt_password_file /mosquitto/config/passwd
plugin_load acl /usr/lib/mosquitto_acl_file.so
plugin_opt_acl_file /mosquitto/config/aclfile
# External listener configuration
listener 1883
listener_allow_anonymous false
plugin_use pwd
plugin_use acl
# Internal listener configuration
listener 1884
listener_allow_anonymous false
plugin_use pwd
# Persistence
persistence true
persistence_location /mosquitto/data/
# Logging
log_dest file /mosquitto/log/mosquitto.log
#log_type error
#log_type warning
#log_type notice
log_type information
#log_type subscribe
#log_type unsubscribe
#log_type all
/home/alarmiator/alarmiatorserver/mosquitto/config/aclfile
user statusausleitung
topic write alamos/alarmiator
user alarmiator
topic read alamos/alarmiator
/home/alarmiator/alarmiatorserver/mosquitto/config/passwd
alarmiator:$7$1000$0xhRdgLHXLeqgMYzSFTKbkOJi1VSbux3mS2ylDqIplpVVCjqkgwBrlmknH9roaFI3CsMZ3F8tS99mmSRcDnEhw==$ySuO02IltqVfYlTRq/4LXV1A3r8TSwCcbAu6YcKlcRNuRFfJbIpSBFkMq+Zv/zVWY4D7iiq4qy3gUzL/EvWVvA==
statusausleitung:$7$1000$qtrvMIlOtjZE/GD4x3juvylINcRs1CbIRUUzoeRqulv0Wtmy4BdXl05d1CbkzGTPjqMqFWcPNfcXm8SbGR5vlw==$Wy8poJaXCE5p55Cz93eNtHWlNk17rJaz00W4Ke5sWEd2AriZKn/N1BOaFA5yiRoVpzx4UaA88328ONeH4b3wXQ==
Der mosquitto ist etwas wählerisch mit den Dateirechten, folgende Anpassungen sind nötig in der Shell:
chown alarmiator:1883 /home/alarmiator/alarmiatorserver/mosquitto/config
chown alarmiator:1883 /home/alarmiator/alarmiatorserver/mosquitto/log
chmod 775 /home/alarmiator/alarmiatorserver/mosquitto/config
chmod 775 /home/alarmiator/alarmiatorserver/mosquitto/log
chown 1883:1883 /home/alarmiator/alarmiatorserver/mosquitto/config/aclfile
chmod 660 /home/alarmiator/alarmiatorserver/mosquitto/config/aclfile
chown 1883:1883 /home/alarmiator/alarmiatorserver/mosquitto/config/passwd
chmod 660 /home/alarmiator/alarmiatorserver/mosquitto/config/passwd
Das passwd File für Mosquitto definiert die User statusauslietung und alarmiator mit dem Default Passwort feuer. Um dieses zu ändern kann man folgenden Befehl in der Shell verwenden:
docker exec -it alarmiatorserver-mosquitto-1 /bin/su -l mosquitto -s /bin/sh -c "/usr/bin/mosquitto_passwd -b /mosquitto/config/passwd ${mqtt_user} ${mqtt_password}"
Wenn das Ganze gestartet wird, dann haben wir neben dem Alarmiator einen MQTT Broker laufen, der von außen per SSL über Port 8883 (Routerweiterleitung nicht vergessen) erreichbar ist. Der User statusausleitung kann in das Topic alamos/alarmiator schreiben, der User alarmiator kann das Topic lesen. Intern ist der Broker über Port 1883 erreichbar. In der Konfig ist auch der Port 1884 definiert, wo beide User lesen und schreiben können.
Im Alamos MQTT-Connector muss man folgende Werte eingeben:
- Broker URL: mqtt://mosquitto
- Broker Port: 1883
- Username: alarmiator
- Password: feuer (oder neu definiertes Passwort)
- Topic: alamos/alarmiator
Im Container befinden sich die Parser im Verzeichnis
/alarmiatorserver/plugins/inbound/alamos/parsers
Einen Parser für die Statusausleitung der Kreisbrandinspektion ERH kann ich auf persönliche Nachricht gerne weitergeben.