Anzeige aller Sensoren, die am Mosquitto angeschlossen sind: (IP-Adresse des BBB 192.168.80.106)
$ mosquitto_sub -h 192.168.80.106 -v -t /#
/Sensor/3B1B3A {"ID": "3B1B3A", "TI": 25.48, "L": 98875.38, "F": 43.48, "T": 21.75}
Im Python Programm für [paho](https://www.eclipse.org/paho/clients/python/ den Sensor eintragen)
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe('/Sensor/3B1B3A')
Tags: beaglebone paho mqtt
Der Raspi4 soll im Internet verfügbar sein.
$ sudo nano /etc/nginx/sites-available/server2020
server {
listen 443;
listen [::]:443;
server_name dev.wlsoft.de;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://192.168.80.20;
}
}
Den neuen Server verfügbar machen
$ sudo ln -s /etc/nginx/sites-available/server2020 /etc/nginx/sites-enabled/
nginx neue starten
$ sudo nginx -s reload
$ sudo certbot --nginx -d dev.wlsoft.de -d bone.nfix.de
Oldscool einen Eintrag in /etc/rc.local
oder als Service
Meinen Wetterserver möchte ich als Service starten, so dass ich Programmupdates ohne Reboot des BBB einspielen kann.
Ich benötige zwei Services
$ sudo nano /etc/systemd/system/wnf_wetter_speicher.service
Da der Service unbedingt eine aktives Netzwerk braucht, wird dieser Service nach dem network-online.target gestartet.
[Unit]
Description=wnfWetterSpeichern
Wants=network-online.target
After=network-online.target syslog.target
[Service]
Type=simple
User=wnf
Group=wnf
WorkingDirectory=/home/wnf/wnfwetter/
ExecStart=/home/wnf/wnfwetter/wnf_wetter_speicher.py
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/wnf_wetter_http.service
[Unit]
Description=wnfWetterHttp
After=syslog.target
[Service]
Type=simple
User=wnf
Group=wnf
WorkingDirectory=/home/wnf/wnfwetter/
ExecStart=/home/wnf/wnfwetter/wnf_wetter_http.py
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable wnf_wetter_speicher.service
$ sudo systemctl enable wnf_wetter_http.service
$ sudo systemctl daemon-reload
$ sudo service wnf_wetter_speicher start
$ sudo service wnf_wetter_http start
Literatur
Von Letsencrypt kommen E-Mails mit der Nachricht
You may need to update your client to the latest version in case it is still using the deprecated TLS-SNI-01 validation method. https://community.letsencrypt.org/t/february-13-2019-end-of-life-for-all-tls-sni-01-validation-support/74209
Mit dem neuen certbot das Zertifikat erneuern:
$ certbot --version || /path/to/certbot-auto --version
certbot 0.28.0
$ sudo sh -c "sed -i.bak -e 's/^\(pref_challs.*\)tls-sni-01\(.*\)/\1http-01\2/g' /etc/letsencrypt/renewal/*; rm -f /etc/letsencrypt/renewal/*.bak"
$ sudo certbot renew --dry-run
Jetzt kommt die Fehlermeldung:
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: bone.nfix.de
Type: connection
Detail: Fetching
http://bone.nfix.de/.well-known/acme-challenge/C1ye-gE-z3kMKFE-UQxZ-pkGaLD19E9FA7bHa6malik:
Error getting validation data
Da certbot den http Zugriff auf bone.nfix.de benötigt, muss in der Fritzbox das Port 80 freigegeben sein.
$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/bone.nfix.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for bone.nfix.de
Waiting for verification...
Cleaning up challenges
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/bone.nfix.de/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/bone.nfix.de/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tags: beaglebone letsencrypt
Nachdem ich auf meinen BBB von Ubuntu 16.04 auf Ubuntu 18.04 gewechselt hatte musste ich feststellen, dass das der Radicale-Server nicht mehr lief.
Der Befehl
$ journalctl --unit radicale.service -e
liefert u.a. diese Fehlermeldung:
OSError: [Errno 30] Read-only file system: '/var/log/radicale/log'
den Radicale-Server anhalten
$ sudo systemctl stop radicale
Da ich nicht herausgefunden habe, warum das Filesystem Read-Only sein soll habe ich in
$ sudo nano /etc/radicale/config
das Logging ausgeschaltet
[logging]
## config = /etc/radicale/logging
## debug = True
den Radicale-Server wieder starten
$ sudo systemctl start radicale
Tags: beaglebone Radicale
Die Installation von Radicale als CalDav und CardDav Server auf meinem BBB war erfolgreich. Radicale kommt mit einem eigenen Http-Server daher und muss deshalb nicht in nginx eingebunden werden.
Leider hatte Thunderbird/Lightning bei der ganzen Probiererei die Zusammenarbeit mit meinem CalDav-Kalender eingestellt. Es gab nur das gelbe Warndreieck: "Der Kalender ist nicht verfügbar". Wie "hier (Kalender syncronisiert nicht - DAV_NOT_DAV - gelbes Warndreieck)": https://www.thunderbird-mail.de/forum/thread/75059-kalender-syncronisiert-nicht-dav-not-dav-gelbes-warndreieck/ zu lesen ist, liegt das daran, dass Thunderbird die Passwörter nur einmal pro Server speichern kann. Deshalb habe ich
https://radicale.fritz.box:5232/user/xxxa40a-84cb-b167-4d4c-06f92db7xxx/
Literatur