Rechenmaschinen/bigbrother

Aus C3MAWiki
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.