Ollo (Diskussion | Beiträge) (Steckbrief) |
Ollo (Diskussion | Beiträge) |
||
Zeile 42: | Zeile 42: | ||
Folgender Anleitung folgen: | Folgender Anleitung folgen: | ||
http://mosquitto.org/2013/01/mosquitto-debian-repository/ | http://mosquitto.org/2013/01/mosquitto-debian-repository/ | ||
=== Bridge === | |||
Mit einer '''Brücke''' werden alle Informationen auf einen Server in unserer Internet-Infrastruktur gespiegelt. | |||
==== Ordner im RAM-Dateisystem ==== | |||
Datei: ''/etc/tmpfiles.d/mosquitto.conf'' | |||
<pre> | |||
# This file is generated by /var/lib/dpkg/info/screen.postinst upon package configuration | |||
d /data/ramdisk/mosquitto 0755 pi pi | |||
</pre> | |||
==== Konfiguration ==== | |||
Datei: ''/etc/mosquitto/conf.d/bridge.conf'' | |||
<pre> | |||
connection bridge-c3ma-room | |||
address $SERVER_DNS_NAME | |||
topic /# out | |||
cleansession true | |||
remote_username $SUPER_GEHEIMER_BENUTZER | |||
remote_password $SUPER_GEHEIMES_PASSWORT | |||
#bridge_cafile /etc/ssl/certs/ca-certificates.crt | |||
bridge_cafile /data/ramdisk/mosquitto/ca-certificates.crt | |||
bridge_insecure false | |||
</pre> | |||
==== Service ==== | |||
Zum Start müssen immer die passenden Zertifikate heruntergeladen werden: | |||
<pre>ExecStartPre=/home/pi/admin/updateSSLmqtt.sh</pre> | |||
Siehe nächstes Kapitel. | |||
Die ganze Datei ''/etc/systemd/system/mosquitto.service'' sieht folgendermaßen aus: | |||
<pre> | |||
[Unit] | |||
Description=Mosquitto MQTT Broker | |||
Documentation=man:mosquitto.conf(5) man:mosquitto(8) | |||
Requires=systemd-tmpfiles-setup.service | |||
After=network.target | |||
Wants=network.target | |||
[Service] | |||
Type=simple | |||
NotifyAccess=main | |||
ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf | |||
ExecReload=/bin/kill -HUP $MAINPID | |||
Restart=on-failure | |||
ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto | |||
ExecStartPre=/bin/chown mosquitto /var/log/mosquitto | |||
ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto | |||
ExecStartPre=/bin/chown mosquitto /run/mosquitto | |||
ExecStartPre=/home/pi/admin/updateSSLmqtt.sh | |||
[Install] | |||
WantedBy=multi-user.target | |||
</pre> | |||
==== Zertifikat ==== | |||
<pre> | |||
#!/bin/bash | |||
tmpRamDisk=/data/ramdisk/mosquitto | |||
/bin/echo "Update Certificate $(date)" > $tmpRamDisk/SSLmqtt.log | |||
/bin/echo -n | openssl s_client -connect $SERVER_DNS_NAME:443 2>> $tmpRamDisk/SSLmqtt.log | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $tmpRamDisk/cert.pem | |||
while [ $(date +%Y) -lt 2022 ]; do | |||
sleep 5 | |||
echo "Year is $(date +%Y)" >> $tmpRamDisk/SSLmqtt.log | |||
done | |||
/usr/bin/wget --quiet -O $tmpRamDisk/lets-encrypt.pem https://letsencrypt.org/certs/lets-encrypt-r3.pem >> $tmpRamDisk/SSLmqtt.log | |||
/usr/bin/wget --quiet -O $tmpRamDisk/isrgrootx1.pem https://letsencrypt.org/certs/isrgrootx1.pem >> $tmpRamDisk/SSLmqtt.log | |||
# https://serverfault.com/questions/476576/how-to-combine-various-certificates-into-single-pem | |||
/bin/cat $tmpRamDisk/cert.pem $tmpRamDisk/lets-encrypt.pem $tmpRamDisk/isrgrootx1.pem > $tmpRamDisk/ca-certificates.crt | |||
exit 0 | |||
</pre> | |||
=== Webserver === | === Webserver === |
Version vom 24. August 2022, 19:48 Uhr
BigBrother | ||
---|---|---|
Typ | Raspberry Pi | |
Betriebsystem | Raspbian | |
Zubehör | keines | |
Hersteller Webseite | http://raspberry.org/ | |
Wikipedia | Raspberry Pi | |
Besitzer | ?? |
Temp Dateisystem aufm Raspberry
Weitere Dateisystem einhängen
Folgende Zeilen in /etc/fstab anhängen:
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=50m 0 0 tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=30m 0 0 tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=50m 0 0 tmpfs /var/run tmpfs defaults,noatime,nosuid,mode=0755,size=2m 0 0
Quelle
- [Expand the Life of a SDCard
http://www.zdnet.com/article/raspberry-pi-extending-the-life-of-the-sd-card/]
System
Netzwerk Schnittstelle
IP-Adresse auf folgendes setzen:
auto eth0 #allow-hotplug eth0 #iface eth0 inet manual iface eth0 inet static address 10.23.42.10 netmask 255.255.254.0 gateway 10.23.42.1
Dienste
Mosqiutto
Folgender Anleitung folgen: http://mosquitto.org/2013/01/mosquitto-debian-repository/
Bridge
Mit einer Brücke werden alle Informationen auf einen Server in unserer Internet-Infrastruktur gespiegelt.
Ordner im RAM-Dateisystem
Datei: /etc/tmpfiles.d/mosquitto.conf
# This file is generated by /var/lib/dpkg/info/screen.postinst upon package configuration d /data/ramdisk/mosquitto 0755 pi pi
Konfiguration
Datei: /etc/mosquitto/conf.d/bridge.conf
connection bridge-c3ma-room address $SERVER_DNS_NAME topic /# out cleansession true remote_username $SUPER_GEHEIMER_BENUTZER remote_password $SUPER_GEHEIMES_PASSWORT #bridge_cafile /etc/ssl/certs/ca-certificates.crt bridge_cafile /data/ramdisk/mosquitto/ca-certificates.crt bridge_insecure false
Service
Zum Start müssen immer die passenden Zertifikate heruntergeladen werden:
ExecStartPre=/home/pi/admin/updateSSLmqtt.sh
Siehe nächstes Kapitel. Die ganze Datei /etc/systemd/system/mosquitto.service sieht folgendermaßen aus:
[Unit] Description=Mosquitto MQTT Broker Documentation=man:mosquitto.conf(5) man:mosquitto(8) Requires=systemd-tmpfiles-setup.service After=network.target Wants=network.target [Service] Type=simple NotifyAccess=main ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto ExecStartPre=/bin/chown mosquitto /var/log/mosquitto ExecStartPre=/bin/mkdir -m 740 -p /run/mosquitto ExecStartPre=/bin/chown mosquitto /run/mosquitto ExecStartPre=/home/pi/admin/updateSSLmqtt.sh [Install] WantedBy=multi-user.target
Zertifikat
#!/bin/bash tmpRamDisk=/data/ramdisk/mosquitto /bin/echo "Update Certificate $(date)" > $tmpRamDisk/SSLmqtt.log /bin/echo -n | openssl s_client -connect $SERVER_DNS_NAME:443 2>> $tmpRamDisk/SSLmqtt.log | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $tmpRamDisk/cert.pem while [ $(date +%Y) -lt 2022 ]; do sleep 5 echo "Year is $(date +%Y)" >> $tmpRamDisk/SSLmqtt.log done /usr/bin/wget --quiet -O $tmpRamDisk/lets-encrypt.pem https://letsencrypt.org/certs/lets-encrypt-r3.pem >> $tmpRamDisk/SSLmqtt.log /usr/bin/wget --quiet -O $tmpRamDisk/isrgrootx1.pem https://letsencrypt.org/certs/isrgrootx1.pem >> $tmpRamDisk/SSLmqtt.log # https://serverfault.com/questions/476576/how-to-combine-various-certificates-into-single-pem /bin/cat $tmpRamDisk/cert.pem $tmpRamDisk/lets-encrypt.pem $tmpRamDisk/isrgrootx1.pem > $tmpRamDisk/ca-certificates.crt exit 0
Webserver
- nginx
Folgenden Teil der ConfigurationsDatei aktualisieren:
server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /tmp/www;
Der Log-Ordner muss bei jedem Start im Temp-Dateisystem angelegt werden. Dazu folgende Zeilen in /etc/rc.local einfügen: (Vor dem exit 0)
mkdir /var/log/nginx/ chown www-data /var/log/nginx/
Raum Status
Der Raumstatus besteht aus Bash-Skripten. Diese bnötigen folgende Pakete:
- mosquitto-clients
- rrdtool
Der Raumstatus ist unter /home/pi/raumdaemon/ zu finden. Um auf die Temperatur zuzugreifen muss query-rs485 installiert werden.