Skip to content

Kiosk Systeme für alle - kein Problem mit FullPageOS

Nicht nur im professionellen Bereich sind Kiosk Systeme gerne gesehen, auch im privaten Bereich erfüllen sie durchaus ihren Zweck.
In Firmen dienen sie der steten Überwachung im Netzwerkbereich oder einer ersten Firmenpräsentation in der Lobby. Im privaten Sektor können damit aktuelle Wetter- und Temperaturdaten auf den Bildschirm oder neuerdings den Spiegel gebracht werden.

Meistens steckt hinter solchen Systemen nicht mehr als ein RaspberryPi oder andere Mini Computer. Diese werden mit einem schlichten System bestückt und booten in die gewünschte Umgebung. Doch bis zum fertigen Kiosksystem sind oft mehrere Handgriffe notwendig, hier setzt FullPageOS an.

FullPageOS

FullPageOS - Kiosk System fürs Volk

FullPageOS ist ein Fork von OctoPi, welches im 3D Druckbereich verbreitet ist. Beide Systeme basieren auf Raspbian und bringen lediglich einige Scripte mit, welche das System zu einem reinen Kiosk System umwandeln.
Das FullPageOS bootet in diesem Fall einen Chromium Browser im Vollbildmodus, nicht mehr und nicht weniger, fast ganz ohne manuellen Eingriff ist aber auch das nicht möglich.
Die gewünschte Webseite zur Präsentation kann individuell festgelegt werden.

Installation FullPageOS

Konfiguration von FullPageOS

Auch wenn das System als fertiges Kiosk System angepriesen wird, sind ein paar wenige Handgriffe für die Erstkonfiguration notwendig.

Zunächst sollten die Lan- oder Wlan Einstellungen unter "/boot/fullpageos-network.txt" angepasst werden.

Ist dieser Schritt erledigt, wird das System nochmal gebootet.

Nun erfolgt eine Einwahl über SSH auf das Gerät (am besten mit Putty). Ein Login ist mit "pi" und "raspberry" möglich. Nach der ersten Verbindung sollte das Passwort des Standardnutzers mit "passwd pi" geändert werden. Weitere Konfigurationen können mit "sudo raspi-config" erfolgen.

Die Startseite eures Kiosk Systems kann unter "boot/fullpageos.txt" angepasst werden.

raspi-config

Auf dem System ist ein VNC Server zur Wartung vorinstalliert, solltet ihr diesen nicht benötigen, schaltet ihn besser ab.

sudo apt-get remove x11vnc

Je nach Sicherheitslevel können weitere Härtungsmaßnahmen ergriffen und unnötige Pakete oder Dienste deaktiviert werden.

Nach diesen letzten Schritten sollte ein fertiges Kiosk System vorhanden und funktionstüchtig sein.

Weitere Infos sind auf der Entwickler Webseite zu finden.



Für ein Kiosk System ist sicherlich nicht zwingend ein extra Betriebsystem notwendig, denn auch vorhandene Raspbians lassen sich einfach in ein Präsentations System umwandeln.

Kiosk System auf einem vorhandenen Raspbian installieren

Hier gilt, wie so oft, viele Wege führen ans Ziel, den einfachsten für ein vorhandenes Raspbian System möchte ich hier kurz aufzeigen.

Iceweasel installieren

Ein Kiosk System ist mit jedem Browser möglich, in diesem Beispiel wird Iceweasel verwendet, welches dem bekannten Firefox entspricht.

apt-get install iceweasel iceweasel-l10n-de

Beim zweiten Paket handelt es sich um das deutsche Sprachpaket

Verknüpfung von Iceweasel im Autostart erstellen und die Startseite anpassen

sudo cp /usr/share/applications/iceweasel.desktop /home/pi/.config/autostart/iceweasel.desktop

sudo nano /home/pi/.config/autostart/iceweasel.desktop
    Exec=iceweasel https://kioskmodus.online

Bildschirmschoner deaktivieren

Hier ist der einfachste Weg, einen vollwertigen Bildschirmschoner zu installieren und zu deaktivieren, damit erspart man sich die Suche nach den genauen Einstellungen.

sudo apt-get install xscreensaver

Unter den Einstellungen des Xscreensavers kann nach der Installation einfach auf  "deaktivieren" geklickt werden.  Als Alternative hier noch die Einstellungen via Kommandozeile.

sudo nano /etc/xdg/lxsession/LXDE/autostart

#@xscreensaver -no-splash

@xset s off #(Screensaver ausschalten) Geht alternativ auch über die Oberfläche.
@xset -dpms #(Energiesparmodus deaktivieren) Geht alternativ auch über die Systemeinstellungen
@xset s noblank #(Screensaver ausschalten)

Der Energiesparmodus sollte in jedem Fall ausgeschaltet werden, unabhängig davon wie der Bildschirmschoner deaktiviert wird.

Vollbildmodus via Plugin oder F11

Für Iceweasel/Firefox gibt es zwei Plugins, welche einen Kioskmodus verwalten, bzw. unterstützen. Unter dem Namen mKiosk oder rKiosk sind diese zu finden. Beide erfüllen ihren Zweck und bieten alles, was es zur Verwaltung eines Kiosksystems braucht.
 

firefox-kiosk


Sollten ihr damit nicht zurechtkommen, reicht es aus den Browser so zu konfigurieren, dass er nach einen Neustart mit den alten Einstellungen wieder hoch kommt. Danach startet ihr Iceewasel  mit F11 im Vollbild, diese Einstellungen wird er sich merken und nach dem nächsten Neustart habt ihr immer noch ein Vollbild (Hier besteht allerdings die Möglichkeit, dass andere Nutzer in das System eingreifen, da kein Password hinterlegt werden kann).

Manche Nutzer stören sich sicherlich am Mauszeiger, dieser kann mit Unclutter ausgeblendet werden.

sudo apt-get install unclutter

sudo nano /etc/xdg/lxsession/LXDE/autostart

@unclutter -idle 5

Fazit

FullPageOS ist eine praktische Variante für einen Kiosk Modus, wenn noch kein System vorhanden ist. Bei installiertem Raspbian ist der Betrieb als Kiosksystem mit wenigen Handgriffen auf gleichem Niveau möglich.

Bei Varianten erfüllen ihren Zweck, wobei sich FullPageOS auf Chromium eingeschossen hat. Der händische Kiosk Modus erlaubt den Einsatz verschiedener Browser und Einstellungen, egal ob Midori, Iceweasel oder Chrome. Hier wäre eine Auswahlmöglichkeit bei der Installation von FullPageOS sicherlich eine feine Sache.

Node.js 4.2 LTS Argon auf Ubuntu 14.04 LTS Trusty installieren

Ein Node.js Release ist nicht gerade eine bahnbrechende Meldung. Da es sich aber um eine sogenanntes LTS Version handelt, soll diese auf dem Blog nicht fehlen.

Node.js

Node.js 4.2 LTS auf Ubuntu 14.04 LTS installieren

Die Entwickler der nun wieder vereinten Lager Node.js und Io.js haben mit 4.2 eine Version mit Lang Zeit Support veröffentlicht. Das bedeutet, diese Version wird 18 Monate mit Bug- und Sicherheitsfixes versorgt, danach folgt eine 12 monatige Wartungsphase  in der nur noch Sicherheitsupdates gefixt werden.

Alle die auf Sicherheits bedacht sind und einen stabilen Node.js benötigen, können sich über diese neue Release Politik freuen. Ähnlich wie bei Canoical sollen die LTS Releases unabhängig von den üblichen Releases laufen, darum auch der Zusatzname "Argon".

Die Installation unter Ubuntu 14.04 LTS ist leicht zu bewältigen

curl --silent --location https://deb.nodesource.com/setup_4.x | sudo bash -
apt-get install nodejs

Falls zusätzlich Buildtools benötigt werden, fehlt noch folgender Befehl

apt-get install build-essential

Die Überprüfung der installierten Version erfolgt mit

node -v

Der komplette Changelog ist hier zu finden, ebenso Verweise auf Binaries oder Windows Installationspakete.


Das könnte dich auch interessieren

Mehrere Ubuntu Kernel Images auf einmal entfernen

Vor Jahren hatte ich einen kleinen Beitrag über das Entfernen alter Kernels aus einem Linux System geschrieben (Artikel).

Bei diesem Vorgehen hat sich nicht viel geändert, ich möchte die Anleitung lediglich um den folgenden Punkt erweitern.

Entfernen mehrerer Kernel Images auf einmal

Suche nach installierten Kernels

dpkg -l |grep linux-image*

dpkg -l |grep linux-header*

Einzelnes Image entfernen

sudo apt-get purge linux-image-3.16.0-40.54

sudo apt-get purge linux-header-3.16.0-40.54


logo-ubuntu

Mehrere Images auf einmal entfernen

Oft haben sich mehrere alte Kernels angesammelt, welche auf einmal entfernt werden könnten, mit einem kleinen Trick ist dies in der Bash ohne weiteres möglich

sudo apt-get purge linux-image-3.16.0-{54,55,56,57,58}

sudo apt-get purge linux-header-3.16.0-{54,55,56,57,58}

Die beiden Befehle entfernen alle Images mit den genannten Versionsnummern in einem Rutsch.

Ubuntu, CentOS oder Fedora - Pakete auf eine ältere Version downgraden

Die neuesten Programm Pakete müssen nicht immer die besten sein, denn durch Änderungen kann es vorkommen, dass Systeme nicht mehr das machen, was sie sollen. In diesem Fall hilft nur der Weg zurück zur alten Version, dieser Weg muss nicht zwingend beschwerlich sein.

CentOS  - Pakete auf eine ältere Version downgraden

Unter CentOS ist es relativ einfach, Pakete auf eine alte Version zu setzen.

Letzte Updates auflisten und altes Paket installieren

yum list recent

Ab Yum Version 3.2.25 sind auf folgende Befehle möglich

yum history oder yum history list

Ist das gewünschte Paket gefunden, kann durch Angabe der Version auf eine bestimmte Version downgegraded werden.

yum downgrade paket-1-2.i386

Wird keine Paketnummer angegeben, setzt das System das Paket auf die letzte bekannte Version zurück

yum downgrade paketname

yum-downgrade

Fedora - Pakete auf eine alte Version zurücksetzen

Fedoras RPM verhält sich ähnlich wie yum, hat aber eine praktische Zusatzfunktion

Auch hier können Pakete gesucht werden

rpm –q paketname

oder 

rpm -qa |grep paketname

Downgrade oder Rollback mit rpm

Hier wird es interessant, denn rpm kann alle Pakete, die in einer bestimmten Zeit aktualisiert wurden zurücksetzen. Der folgenden Befehl setzt alle aktualisierten Pakete der letzten 2 Stunden zurück, alternativ kann hier auch "3 month" oä. angegeben werden.

rpm -Uhv –rollback '2 hours ago'

Ebenso ist es mit rpm möglich ein bestimmtes Paket zurückzurollen, beziehungsweise auf ein älteres Paket zu aktualisieren

rpm -Uvh --oldpackage paket-1-2.i386.rpm


Downgrade unter Ubuntu mit apt-get 

Leider gibt es unter Debian Systemen wie Ubuntu oder Mint  mit der Paketverwaltung apt-get keine Downgrade Funktion. Hier kann nur mit Angabe der Versionsnummer gearbeitet werden.

Zunächst werden ebenfalls Pakete gesucht

apt-cache showpkg paketname

oder

dpgk -l |grep paket

Downgrade eines Pakets unter Ubuntu

Eine Downgrade ist hier nur mit Angabe der Versionsnummer möglich. 

sudo apt-get install postfix=2.11.0-1ubuntu1

Ist das System auf das alte Paket geeicht, können zukünftige Updates eines Pakets verhindert werden.

sudo echo “package postfix” | sudo dpkg –-set-selections

Um zu überprüfen, ob dieser Schritt erfolgreich war kann wiederum mit "dpkg" gearbeitet werden.

sudo dpkg --get-selections

Selbstsignierte Zertifikate mit Subject Alternative Names (SANs) für Apache, Nginx oder Tomcat erstellen

Um Zertifikate und deren Erstellung oder Einbindung gab es auf ITrig schon öfters Beiträge (siehe SHA-256Tomcat, Nginx oder Apache). Heute soll es um die Einbindung von so genannten Alternativen Namen in das Zertifikat gehen.
Das heißt ein so erstelltes Zertifikat ist für mehr als eine Adresse, Subdomain oder IP gültig (Wildcard) gültig.

SANs
So eine Vorgehensweise bietet sich an, da mit einem Zertifikat mehrere Subdomainadressen erschlagen werden können.

Beispiel
Hauptdomain donald.entenhausen.stadt
Subdomain1 tick.entenhausen.stadt
Subdomain1 trick.entenhausen.stadt
Subdomain1 track.entenhausen.stadt

Gleiches lässt sich alternativ für IP Adressen eintragen

IP1 313.entenhausen.stadt

Alle oben erwähnten Einträge, egal ob IP oder DNS werden mit einem Zertifikat, welches auf  "donald.entenhausen.stadt" ausgestellt wurde, als gültig angesehen.

Folgende Einträge werden bei Subject Alternative Names unterstützt E-Mail, URI, DNS, RID, IP, dirName und otherName

Erstellung von SANs Einträgen in SSL Zertifikaten für Apache oder Nginx

Prinzipiell muss bei der Verwendung von OpenSSL und SANs eine Konfigurationsdatei angelegt oder die vorhandene angepasst werden.

Ist ersteres der Fall, muss diese beim Ausführen per Befehl mitgegeben werden.
Bei der zweiten Option, welche hier Verwendung findet, wird die OpenSSL Config Datei direkt bearbeitet. 

Hier sollte darauf geachtet werden, vorher eine Sicherung zu erstellen und die Änderungen nach dem Erstellen wieder in den Originalzustand zurückzuführen, da sie sonst bei Folgeaktionen weiterhin greifen.

Folgende Werte (fett markiert) müssen in einer Konfigurationsdatei oder direkt in der OpenSSL Config gesetzt werden.

cp /etc/ssl/openssl.cnf /home/user/openssl.cnf.orig

sudo nano /etc/ssl/openssl.cnf

# Festlegen der gewünschten Zusatzeintraege, egal ob IP, DNS oder Mail, die Eintraege muessen nummeriert werden
[ alternate_names ]
DNS.1        = tick.entenhausen.stadt
DNS.2        = trick.entenhausen.stadt
DNS.3        = track.entenhausen.stadt
IP1             = 313.313.313.313

# Damit bei der Zertifikats Anfrage ebenfalls Ruecksicht auf die neuen Werte genommen wird, muss unter [req] der Wert req_extensions = v3_req hinterlegt werden.

#Fuer ein selbstsigniertes Zertifikat ist das nicht noetig
[ req ]
default_bits            = 1024
default_keyfile         = privkey.pem
distinguished_name      = req_distinguished_name
attributes              = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
req_extensions = v3_req

# Im jeweiligen Bereich muss ein Verweis hinterlegt werden
[ v3_req ]
subjectAltName          = @alternate_names

# Im jeweiligen Bereich muss ein Verweis hinterlegt werden
[ v3_ca ]
subjectAltName      = @alternate_names


Als kurze Erinnerung hier noch einmal die Vorgehensweise, wie ein Schlüssel oder eine Anfrage erstellt werden.
Sollte die Konfiguration in eine Extra Datei geschrieben worden sein, darf die Angabe "-config /pfad/zur/config/sanconf.cnf" im Befehl nicht fehlen.
In unserem Beispiel werden die Werte direkt von der openssl.conf geladen.

Schlüssel erstellen

sudo openssl genrsa -out /etc/ssl/private/ssl.key.pem 4096

CSR erstellen

sudo openssl req -new -x509 -sha256 -key /etc/ssl/private/ssl.key.pem -out /etc/ssl/certs/ssl.cert.pem -days 3650  

Selbstsigniertes Zertifikat mit SAN Einträge erstellen

sudo openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/ssl/private/ssl.key.pem -out /etc/ssl/certs/ssl.cert.pem

Bei dieser Art der Erstellung erhaltet ihr ein Abfrage für die Daten, es lassen sich aber auch alle Informationen direkt mit geben:

sudo openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/ssl/private/ssl2.key.pem -out /etc/ssl/certs/ssl2.cert.pem -subj "/C=DE/ST=Unknown/L=Unknown/O=Unknown EG/OU=Unknown/CN=donald.entenhausen.stadt"

 

Zertifikat ausgeben und prüfen

Eine Überprüfung des Ergebnisses sollte nie fehlen.

openssl x509 -in /etc/ssl/certs/ssl.cert.pem -noout -text

                    ce:47:8e:f2:80:45:48:f0:9d:e2:34:a4:07:22:31:
                    34:48:59:47:20:2b:c2:58:5e:c8:6b:0c:c2:90:eb:
                    12:96:9e:da:4c:aa:63:a3:8c:9d:09:29:40:b9:20:
                    93:9c:8a:fc:9d:a5:c7:5e:43:7d:cd:69:6d:0c:56:
                    a5:da:99
                Exponent: 62237 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:tick.entenhausen.stadt, DNS:trick.entenhausen.stadt, DNS:track.entenhausen.stadt,IP Address:313.313.313.313
            X509v3 Subject Key Identifier:
                45:7E:30:3D:BC:62:AF:4C:20:6C:F1:48:C0:4C:DE:64:
            X509v3 Authority Key Identifier:
                keyid:45:7E:00:3D:BC:62:AF:4C:20:6C:F1:48:C0:4C:DE

Zertifikate umwandeln

Falls das PEM Format nicht beliebt, kann es jederzeit umgewandelt werden.

PEM zu DER umwandeln

openssl x509 -outform der -in ssl.cert.pem -out ssl.cert.der

PEM zu P7B umwandeln

openssl crl2pkcs7 -nocrl -certfile ssl.cert.cer -out ssl.cert.p7b

PEM zu PFX umwandeln

openssl pkcs12 -export -out ssl.cert.pfx -inkey pssl.key.pem -in ssl.cert.crt


Subject Alternative Names auf Tomcat Server erstellen und mit Keytool einbinden

Bei Tomcat Servern ist das Vorgehen leicht anders, da hier das Zertifikat in den Keystore geladen werden muss.

tomcat

Am einfachsten kreiert sich ein selbsigniertes Zertifikat mit einem einzigen Befehl in dem die gewünschten SAN Einträge mitgegeben werden. Hier im Beispiel mit nur einem zusätzlichen DNS Eintrag und einer extra IP.

keytool -genkeypair -keystore keystoreName -validity 3650 -dname "CN=donald.entenhausen.stadt, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown"  -storepass xxxx -keyalg RSA -alias tomcat -ext SAN=dns:trick.entenhausen.stadt,ip:313.313.313.313

Zur Kontrolle können auch hier Zertifikate aus dem Keystore angezeigt werden.

keytool -list -v -keystore keystoreName