Seite 6 von 13

Raspberry Pi als Videorekorder

In diesem Projekt wollen wir mit Hilfe von einem Raspberry Pi und einem DVB Stick einen Videorekorder aufbauen. Ich beschreibe die Installation mit einem Terratec Cinergy HTC USB XS HD, der sich heute noch bei Kabel (DVB-C) eignet. Es gibt viele andere DVB USB Sticks, welche sich auch dafür eignen. Eine externe Festplatte mit USB Anschluss dient als Speichermedium.

Als Betriebssystem verwenden ich Raspbian oder Ubuntu Server für den Raspberry Pi.

TVheadend 4.0.8 Raspbian Light
TVheadend 4.2.7 Ubuntu Classic Server 16.04

Nach dem Download sollte das Image entpackt und auf eine SD Karte kopiert werden.
Die SD Karte wird im Raspberry Pi eingesetzt und gestartet. Nach dem Start sollten die aktuellen Updates und Patches installieren werden.

sudo apt update
sudo apt dist-upgrade

Für den Betrieb von dem DVB Stick brauchen wir noch die Firmware und den Kernel 4.4 oder größer.

cd /lib/firmware/
sudo wget https://github.com/OpenELEC/dvb-firmware/raw/master/firmware/dvb-usb-terratec-htc-stick-drxk.fw

Das Update vom Kernel ist schnell gemacht.

sudo apt install rpi-update
sudo rpi-upgrade
sudo reboot
uname -a

Sollte es Probleme geben, dann kann man hiermit die Fehler suchen.

lsusb
dmesg

Unseren Server wollen wir mit eine festen IP Adresse betreiben und nicht per DHCP.

sudo vim /etc/network/interfaces

auto eth0
iface eth0 inet static
  address 192.168.187.100
  netmask 255.255.255.0
  gateway 192.168.187.1
  dns-nameservers 192.168.187.1

Den DHCP Dienst können wir stoppen und deaktivieren.

sudo service dhcpcd stop
sudo systemctl disable dhcpcd

Für den Betrieb als Headless-Server ist SSH notwendig.

sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
sudo touch /boot/ssh

Weitere Einstellung wie Hostname, Ländereinstellung, Tastatur kann man einfach mit dem Konfig-Tool vornehmen.

sudo raspi-config

Diese Tools helfen uns beim Betrieb weiter.

sudo apt install vim htop iotop iftop

Das Swap-File kann man ausschalten und deinstallieren.

sudo dphys-swapfile swapoff
sudo apt purge dphys-swapfile

Wenn die USB Festplatte mit dem NTFS Dateisystem verwendet wird, dann ist die Installation von extra Tools notwendig.

sudo apt install ntfs-3g

Für die Einbingung ist eine Eintragung in der Konfig „fstab“ notwendig.

sudo vim /etc/fstab

/dev/sda1 /media   ntfs  defaults,uid=hts,umask=0022,nosuid,nodev,noexec   0  0

Jetzt erfolgt die Installation von TVheadend.

curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add -
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61

Ab Version 4.2.7 ist dieser Key notwendig.

curl https://doozer.io/keys/tvheadend/tvheadend/pgp | sudo apt-key add -

sudo apt-get install apt-transport-https

Bei Rasbian wird diese Einstellung verwendet.

sudo sh -c 'echo "deb https://dl.bintray.com/tvheadend/deb jessie release" > /etc/apt/sources.list.d/tvheadend.list'

Bei Ubuntu Server 16.04 wird diese Einstellung verwendet.

sudo sh -c 'echo "deb https://dl.bintray.com/tvheadend/deb xenial release-4.2" > /etc/apt/sources.list.d/tvheadend.list'

Ab Version 4.2.7 liegen die Pakete für ARMv7 (armhf) hier:

sudo sh -c 'echo "deb https://apt.tvheadend.org/stable $(lsb_release -sc) main" | tee -a /etc/apt/sources.list.d/tvheadend.list'

sudo apt update
sudo apt install tvheadend

Das Login und Password ist für den Betrieb notwendig.

http://192.168.178.100:9981/

Der Rest der Einrichtung erfolgt per Web-Interface und ist hier beschrieben.

Die Metadaten für die Aufzeichnung werden in dem Verzeichnis /home/hts/.hts/tvheadend/dvr/log gespeichert.

Der Zugriff auf die Kanalliste vom Live Stream mit VLC erfolgt über die Url.

http://login:passwort@192.168.187.100:9981/playlist/channels

Noch ein Hinweis für die Senderlogos. Leider ist die Einrichtung sehr schlecht beschrieben. Hier meine Konfiguration unter dem Menü „Configuration / General / Base / Picon“.

Channel icon path: picon://%C.png
Picon path: file:///home/pi/logos/

Das User Icon lautet dann zum Beispiel „picon://Das_Erste.png“ und „picon“ wird durch den Path ersetzt zu „file:///home/pi/logos/Das_Erste.png“.

Die Senderlogos findet man im Internet.

Als Client Anwendung für den Zugriff auf TVheadend gibt es unterschiedliche Plugins.

Ubuntu enthält im Repository den Kodi Mediaplayer und das Plugin für TVheadend.

sudo apt install kodi kodi-pvr-hts

Die Einstellung der IP-Adresse für Tvheadend ist nicht einfach zu finden.

Add-ons > PVR clients | All > Tvheadend HTSP Client > Enable + Configure

Die Sprache, Tastatur und Zeitzone kann man in Kodi auch ändern.

Settings > Interface settings > Regional > Language, Keyboard layouts, Timezone

Laufzeit von Zertifikaten mit Check_MK prüfen

Mit diesem BASH Script kann man SSL Zertifikate im PEM Format mit Hilfe von Check_MK Monitoring überprüfen. Dazu erstellen Sie das Script im Verzeichnis /usr/lib/check_mk_agent/local/. Der Check prüft die Laufzeit der Letsencrypt Zertifikate.

vim /usr/lib/check_mk_agent/local/check_certificates.sh

#!/bin/bash
# Plugin Return Codes
# = 0   OK
# = 1   Warning
# = 2   Critical
# = 3   Unknown
#
DIR=/etc/letsencrypt/live/*/
FILTER=$DIR/cert.pem

function output {
 NAME=$(basename $1)
 DATE=$(date --date="$2" --iso-8601)
 SUBJECT=$3

 TODAY=$(date +%s)
 DATE_I=$(date -d ${DATE} +%s)
 EXPIRATION=$((15 * 24 * 60 * 60)) # 15 days

 if [[ -z $SUBJECT ]] ; then
  STATUS=3
  STATUS_TEXT="UNKNOWN"
  TEXT="Empty subject value"
 elif [ ${TODAY} -gt ${DATE_I} ] ; then
  STATUS=2
  STATUS_TEXT="CRITICAL"
  TEXT="Certificate has expired since ${DATE}"
 elif [[ $(expr $TODAY + $EXPIRATION) -gt ${DATE_I} ]] ; then
  STATUS=1
  STATUS_TEXT="WARNING"
  TEXT="Certificate will expire on ${DATE}"
 else
  STATUS=0
  STATUS_TEXT="OK"
  TEXT="Certificate will expire on ${DATE}"
 fi

 echo "${STATUS:-1} Certificate_${SUBJECT} Date=${DATE}; Check(${STATUS_TEXT}) - ${TEXT} - ${SUBJECT}"
}

function check {
 FILE=$1
 DATE=$(cat ${FILE} |openssl x509 -noout -enddate|cut -d= -f2-)
 SUBJECT=$(cat ${FILE} |openssl x509 -noout -subject|cut -d= -f3-)
 output "$FILE" "$DATE" "$SUBJECT"
}

for FILE in $FILTER;
do
  # take action on each certificate file.
  check "$FILE"
done

Zertifikatsdateien umwandeln

Es gibt unterschiedliche Dateiformate für ein Server-Zertifikat. Hier eine List von möglichen Umwandlungen.

Konvertiert eine DER Datei (.crt .cer .der) in PEM

openssl x509 -inform der -in certificate.cer -out certificate.pem

Konvertiert eine PEM Datei in DER

openssl x509 -outform der -in certificate.pem -out certificate.der

Konvertiert eine PKCS#12 Datei (.pfx .p12) in PEM

openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

PKCS#12 enthält den privaten Schlüssel und das Zertifikat. Sie können mit dem Parameter -nocerts nur den privaten Schlüssel oder mit Parameter -nokeys nur das Zertifikat speichern.

Konvertiert ein PEM Datei und den privaten Schlüssel zu PKCS#12 (.pfx .p12)

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

Laufzeit von einem Zertifikat prüfen

Wer einen Server mit TLS/SSL Verschlüsslung betreibt, der muss dafür ein Zertifikat mit einer begrenzten Laufzeit erstellen. Das Zertifikat muss vor dem Ende der Laufzeit ersetzt werden, sonst gibt es Fehlermeldungen im Browser. Hier möchte ich einige Beispiel zeigen, wie man die Laufzeit überprüfen kann.

Hiermit können wir uns die Lautzeit ausgeben lassen.

echo Q | openssl s_client -connect www.google.com:443 2>/dev/null | openssl x509 -noout -dates

Hier geben wir uns nur das Laufzeitende vom Zertifikat aus.

date --date="$(echo Q | openssl s_client -connect www.google.com:443 2>/dev/null | openssl x509 -noout -enddate |cut -d= -f 2)" --iso-8601

Wir können auch alle Zertifikate speichern.

echo Q | openssl s_client -connect www.google.com:443 -showcerts > chain.pem

Auch hier kann man sich das Datum ausgeben lassen.

gawk 'BEGIN { pipe="openssl x509 -noout -subject -dates -serial "} \
  /^-+BEGIN CERT/,/^-+END CERT/ { print | pipe }
  /^-+END CERT/                 { close(pipe); printf("\n")}  ' chain.pem

Wir wollen jetzt nur das Server Zertifikat extrahieren und noch einmal prüfen, ob es wirklich zu der CA valide ist.

sed -n '/-BEGIN/,/-END/p;/-END/q' chain.pem > site.pem
openssl verify -verbose -CAfile chain.pem site.pem
cat site.pem |openssl x509 -noout -enddate

Befindet man sich hinter einem Proxy Server, braucht das Programm „proxytunnel“.

proxytunnel -p yourproxy:8080 -d www.google.com:443 -a 7000
openssl s_client -connect localhost:7000 -showcerts

HP Proliant Server SNMP via ESXi Agent

Für das Monitoring von HL Proliant Server ist das Simple Network Management Protocol (SNMP) notwendig. Wenn man auf dem Server ein ESXi Host installiert hat, so bringt das HP Image den Agent schon mit.

Zuerst fragen wir den SNMP ab.

# esxcli system snmp get

   Authentication: 
   Communities: 
   Enable: false
   Engineid: 
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps: 
   Port: 161
   Privacy: 
   Remoteusers: 
   Syscontact: 
   Syslocation: 
   Targets: 
   Users: 
   V3targets:

Jetzt müssen wir den SNMP Agent in VMware ESXi aktivieren.

# esxcli system snmp set -c public -e true

Die Ausgabe sieht jetzt anders aus.

# esxcli system snmp get

   Authentication: 
   Communities: public
   Enable: true
   Engineid: 00000063000000a100000000
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps: 
   Port: 161
   Privacy: 
   Remoteusers: 
   Syscontact: 
   Syslocation: 
   Targets: 
   Users: 
   V3targets: 

SNMP MIB module file download

WebDav mount im Dateisystem

Unter Linux kann man ein WebDav im Dateisystem einbinden und damit direkt Datei speichern. Einige Cloud Speicheranbieter bieten die Möglichkeit von WebDav an.

sudo apt install dav2fs

Nach der Installation sollten wir noch einige Parameter ändern. Zuerst die Mount Einstellungen.

sudo vim /etc/fstab

https://webdav.hidrive.strato.com/ /mnt/hidrive/ davfs noauto,user,rw 0 0
https://webdav.mediencenter.t-online.de/ /mnt/t-online/ davfs noauto,user,rw 0 0

Dann die Zugangsdaten für WebDav bei Beispeil von HiDrive und T-Online Mediencenter.

sudo vim /etc/davfs2/secrets

/mnt/hidrive/ benutzer passwort
/mnt/t-online/ benutzer@t-online.de passwort

Hier noch einige Einstellung für Dav2fs.

sudo vim /etc/davfs2/davfs2.conf

use_locks 0
cache_size 1
table_size 4096
gui_optimize 1
trust_server_cert /etc/davfs2/certs/hidrive.pem

Kommt es zu einem Fehler, so muss das Zertifikat hinterlegt werden.

/sbin/mount.davfs: wir trauen dem Zertifikat nicht
/sbin/mount.davfs: das Einhängen schlug fehl;
Server certificate verification failed: issuer is not trusted

echo|openssl s_client -connect webdav.hidrive.strato.com:443 |openssl x509 -out /etc/davfs2/certs/hidrive.pem

USB Kamera Streamer

Wir wollen eine USB Webcam oder die RaspberryPi Kamera welche unter /dev/video0 bereit steht, im Netzwerk als Stream bereitstellen.

sudo apt-get update
sudo apt-get install build-essential libjpeg-dev imagemagick subversion libv4l-dev checkinstall

Quellcode herunterladen und kompilieren

svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
cd mjpg-streamer/mjpg-streamer
make USE_LIBV4L2=true
VERSION=$( sed -n '/SOURCE_VERSION/s/^.*"\(.*\)".*$/\1/gp' < mjpg_streamer.h )
REVISION=$( svnversion -cn | sed "s/.*://" )
sudo checkinstall --pkgname=mjpg-streamer --pkgversion="$VERSION+$REVISION~checkinstall" --default

MJPG-Streamer kann nun auf der Kommandozeile gestartet werden.

export LD_LIBRARY_PATH=/usr/local/lib
mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -f 15 -r 640x480" -o "/usr/local/lib/output_http.so -p 8090 -w /usr/local/www -c benutzername:passwort"

MJPG-Streamer

Raspberry Pi Zeitraffer Aufnahmen

Dieser kurze Beitrag beschreibt nicht die Installation der Kamera, sondern nur die Zeitraffer-Aufnahmen.

Mit dem Befehl lassen sich über einen definierten Zeitraum in bestimmten Zeitabständen Bilder aufnehmen:

raspistill -o img_%04d.jpg -tl 5000 -t 36000

Das Kommando ist aus mehreren Befehlen zusammengesetzt

Der Parameter -o definiert den Speicherort und den Dateinamen des Bildes. Es benennt die aufgenommenen Bilder mit einer fortlaufenden 4-stelligen Zahl.

Der Parameter -tl 5000 definiert die Zeitabstände zum Aufnehmen der Fotos, alle 5 Sekunden wird ein Bild erstellt.

Der Parameter -t 36000 definiert die Zeitdauer, wie lange das Programm laufen soll.

Die Zeitraffer-Aufnahmen stellen eine Vielzahl an einzelnen Bildern dar, die auch in ein Video zusammengeführt werden können. Dafür verwendet ihr den Befehl, um den Film video.mp4 zu erstellen.

ffmpeg -qscale 5 -r 4 -b 9600 -i img_%04d.jpg video.mp4

Raspberry Pi Kamera als Stream Server

In diesem Projekt verwende ich einen Raspberry Pi (Zero W) mit Raspbian als Betriebssystem und einer Raspberry Pi Kamera.

Das Raspberry Pi wird als Stream-Server konfiguriert. Die Aufnahmen der Kamera werden später von Motion erfasst. Motion kann die Bewegungen im Bild erkennen und einen Alarm auslösen.

Die Vorarbeiten (Installation und Konfiguration) von Raspbian Lite sind grundlage für dieses Projekt.

Mit Raspberry Konfig müssen wir das Kamera Modul aktiviert.

sudo raspi-config

Interfacing Options / Camera -> Enable
Advanced Options / Memory Split = 128MB GPU

Den Neustart bitte nicht vergessen!

Ein erster Snapschuss sollte schon jetzt möglich sein.

raspistill -o /tmp/snapshot.jpg

Jetzt können wir die Installation starten.

Zuerst die PublicKey für Apt-Get hinzufügen.

curl https://www.linux-projects.org/listing/uv4l_repo/lpkey.asc | sudo apt-key add -

Die Installationsquellen für Apt-Get hinzufügen.

sudo sh -c 'echo "deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main" > /etc/apt/sources.list.d/uv4l.list'

Jetzt kann die Installaion starten.

sudo apt-get update
sudo apt-get install uv4l uv4l-raspicam uv4l-raspicam-extras

Der Dienst sollte jetzt laufen.

sudo service uv4l_raspicam status

oder man kann das Device /dev/video0 mit dem Programm uv4l erstellen.

uv4l --driver raspicam --auto-video_nr --width 1280 --height 720 --encoding jpeg

Die Einstellungen kann man in der Konfig Datei speichern.

sudo vim /etc/uv4l/uv4l-raspicam.conf

encoding = h264
width = 1280
height = 720
framerate = 20

Jetzt erstellen wir ein Foto in /tmp/snapshot.jpg.

dd if=/dev/video0 of=/tmp/snapshot.jpg bs=11M count=1

Quelle: Linux-Projects

Weiterlesen

Check_MK Raw Server Edition installation

Diese Anleitung beschreibt die Installation von Check_MK Raw Server Version 1.2.8 auf Ubuntu Server 16.04 LTE.

Die Installation von Ubuntu Server 16.04 wird einfach mit Standardvorgaben installiert.

Zusätzlich installieren wird ein extra Tool, welcher alle Abhängigkeiten zu Check_mk installiert.

sudo apt-get install gdebi-core

Auf der Download Seite von Check_mk finden wir die Version 1.2.8 Raw, welche 100% kostenlos ist.

Wir laden die 64bit Version für Ubuntu 16.04 runter.

wget https://mathias-kettner.de/support/1.2.8p18/check-mk-raw-1.2.8p18_0.xenial_amd64.deb

Jetzt können wir Check_mk mit allen Abhängigkeiten installieren.

sudo gdebi check-mk-raw-1.2.8p18_0.xenial_amd64.deb

Check_mk verwendet den Apache mit mod_proxy, welches aktiviert werden sollte.

sudo a2enmod proxy_http

Nach einem Neustart ist die Installation schon fast abgeschlossen.

sudo service apache2 restart

Wir können die installierte Version ausgeben.

omd version

Check_mk bietet die Möglichkeit unterschiedliche Seiten gleichzeitig zu betreiben. Wir erstellen eine Beispielseite „mysite“.

sudo omd create mysite
sudo omd start mysite

Jetzt kann man die Seite im Browser erreichen. http://HOSTNAME/mysite/ Die Zugangsdaten wurden bei der Erstellung angezeigt oder sind fest voreingestellt. Das Login lautet „omdadmin“ und das Password ist „omd“.

Sollte man die Zugangsdaten vergessen haben, kann man das Passwort zu jeder Zeit ändern.

sudo htpasswd /omd/sites/mysite/etc/htpasswd cmkadmin

Ein Update auf eine neue Check_mk Version ist immer möglich. Das Versionsupdate wird in Schritten durchgeführt.

Copyright © 2025 Weiter.info

Theme von Anders Norén↑ ↑