Christian's Ecke im Web

raspberry_jessie

Raspberry Pi (bis Debian 8 "Jessie")

Vorwort

Durch einen Arbeitskollegen aus der IT-Abteilung hatte ich etwa Mitte 2013 vom Raspberry Pi erfahren, Jänner 2014 wurde kurzerhand mein erster Pi (Model 1, Rev B) bestellt. Als Linux-Neuling waren die Schwierigkeiten vorprogrammiert, mit etwas Unterstützung vom besagten Kollegen (ok: er hat alles gemacht, ich versuchte ihm zu folgen und hab Pizza bestellt) hatte ich aber schon bald meinen eigenen privaten Server! Es gab jedoch so viel zu Entdecken und so viele Möglichkeiten, somit blieb es nicht dabei ....

Diese Webseite soll den Neulingen und Unerfahrenen den Einstieg in die Welt des Raspberry Pi erleichtern. Vielleicht helfen die Tipps und Anleitungen dem einen oder anderen sein eigenes Raspberry Pi - Projekt voran zu bringen :)

 

Einleitung

Mit dem RasPi wurden schon die unglaubigsten Projekte umgesetzt! Wer meint dem Minirechner sind Grenzen gesetzt, der hat vollkommen Recht! Es handelt sich beim Raspberry Pi immer noch um einen Einplatinenrechner zum Basteln und nicht um einen Supercomputer!

Die heutigen Betriebssysteme und auch die meisten Programme sind auf die dreifache Leistung eines RasPis 3 ausgelegt und überfordern somit den Minirechner enorm! Deshalb wurden angepasste bzw. abgespeckte Betriebssysteme, Programme und (Hintergrund-) Dienste entwickelt. Aber auch da gibt es noch Unterschiede, es kommt vor allem auf die Konfiguration an, Beispiele: verwende Nginx statt Apache, verwende SQLite oder PostgreSQL statt MySQL, usw.

 

Das Verfassen einer Schritt-für-Schritt - Anleitung zur Server-Konfiguration, und den dazugehörigen Support bei Fragen zu führen, würde meine Zeit zu sehr beanspruchen. Der Raspberry Pi ist zu meinem Hobby geworden, jedoch möchte ich neben meiner Vollzeitarbeit noch meine Freizeit genießen :)

Ich biete Spickzettel und viele Tipps für Raspberry Pi - Neulinge, Anfänger und Fortgeschrittene an.
Bei entsprechendem Interesse eurerseits kann ich gerne mal eine detailierte Anleitung zu einem Thema verfassen. Du kannst mit mir über den Newsletter in Kontakt treten, wähle als Thema "Anleitung (Anmerkung)" aus und teile mir dein Anliegen im Feld "Anmerkung" mit.

 

Raspberry Pi - Server konfigurieren (2016)

Um den eigenen privaten Server zu konfigurieren benötigt man Zeit - viel Zeit wenn man von der ganzen Linux-Welt noch keine Ahnung hat! Nehmt euch diese Zeit, führt nicht einfach Schritt-zu-Schritt Anleitungen stur aus! Selten entsprechen Anleitungen einen gut konfigurierten Server noch sind diese auf dem aktuellen Stand, denn bedenkt:
den RasPi gibt es seit 2012 und die meisten Anleitungen wurden 2013 / 2014 verfasst und nie auf die aktuellen Versionen von Hardware und Software adaptiert.

Wichtige Themen benötigen mehr Aufmerksamkeit und ggf. auch mehr Meinungen, deshalb besuche weitere Webseiten und lies nach wie andere es machen und dann beschäftige dich warum die es anders machen!

Erläuterung

Es werden die RasPi-Grundlagen und die Linux-Grundlagen vorrausgesetzt. Die wichtigsten Konsolenbefehle (pdf) solltest du ausgedruckt neben dir liegen haben.

Formatierungen dienen zur Darstellung von Code bzw. Befehlen: Tastatur-Eingabe und Bildschirm-Ausgabe
Die Tastatur-Eingabe kann man kopieren und direkt ins Konsolenfenster einfügen!

 

1. Grundkonfiguration (Erste Schritte)

Login (erste Hürde)

Wir beginnen am Anfang: die aktuelle Raspbian Version wurde mittels "Win32 Disk Imager" auf die Speicherkarte übertragen und in den Kartenslot gesteckt; der Raspberry Pi muss nun an Bildschirm (HDMI), Tastatur, Router (Ethernet-Kabel) und am Strom angeschlossen werden.

Nach dem Bootvorgang gelangt man zum Login, der Standardbenutzer ist "pi" und das Passwort lautet "raspberry"
(Vorsicht: es ist noch die englische Tastatur eingestellt, also müsst ihr für das "y" ein "z" tippen).

Einstellungen, Sicherheit und Konfiguration

Nach erfolgtem Login öffnen wir das "Konfigurationsprogramm vom Raspberry Pi" mit dem Befehl sudo raspi-config (Minus vom Nummernblock). Die Navigation erfolgt mit Leertaste, Tabulator, Enter und den Cursor-Tasten.
Wir nehmen folgende Einstellungen vor: Raspberry Pi - Grundkonfiguration (pdf)

Ist das Erledigt kann man sich nun mittels PuTTY verbinden.

 

TOP - TIPP:
Erstell regelmäßig und vor Änderungen und Ergänzungen jeder Art ein komplettes Backup deiner SD-Karte mit Win32 Disk Imager. Damit bist du immer auf der sicheren Seite - ich mach es noch heute so!

 

top

2. Webseite (NGINX und PHP)

Nginx ist ein Webserver-Dienst, um Webseiten und Interfaces von anderen Programmen oder Diensten darzustellen. PHP ist eine Webseiten-Programmiersprache.

Wichtig:
Achtet immer darauf das ihr unter keinen Umständen die Dienste Apache und MySQL installiert! Auch wenn euer RasPi damit klar kommt gehen wichtige Ressourcen verloren bzw. leidet die Gesamtleistung darunter!

 

Pakete installieren

sudo apt-get install nginx php5-fpm php5-sqlite

 

Optimale Nginx-Basiskonfiguration verwenden:

cd /etc/nginx/ # ins Verzeichnis wechseln

sudo mv nginx.conf nginx.conf.backup # vorhandene Konfigurationsdatei umbenennen (Backup)

sudo wget https://www.cenz.at/various/nginx.conf.txt # Konfigurationsdatei vom Server laden

sudo mv nginx.conf.txt nginx.conf # Datei umbenennen und verwenden
Anmerkung: wenn du einen RasPi 1 verwendest, musst du in der Datei den "worker_processes" auf 1 setzen!

 

Umstellen von "socket" auf "fastcgi" (schneller):

sudo nano /etc/php5/fpm/pool.d/www.conf

 

listen = /var/run/php5-fpm.sock

ersetzen durch

;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000

 

Nginx-Konfigurationsdatei für Webseite:

cd /etc/nginx/conf.d

sudo wget https://www.cenz.at/various/website.conf.txt

sudo mv website.conf.txt website.conf

 

PHP-Testseite (index.php) anlegen:

cd /usr/share/nginx/html

sudo wget https://www.cenz.at/various/index.php.txt

sudo mv index.php.txt index.php

 

Service neustarten (neue Einstellungen übernehmen), danach testen wir alles:

sudo service nginx restart

sudo service php5-fpm restart

Öffne nun im Browser die IP-Adresse deines Pis: [IP] (z.B.: http://192.168.0.23), die index.php sollte automatisch aufgerufen werden! Die von Nginx automatisch angelegte Testseite (index.html) kannst du auch testen: [IP]/index.html

 

top

3. DynDNS (inadyn)

Der Server bzw. die Webseite ist übers Heim-Netzwerk erreichbar, damit es auch übers Internet klappt, benötigen wir "DynDNS".

Was ist DynDNS?
Wenn Du eine Website erreichen willst, tippst Du deren Namen in die Adresszeile Deines Browsers ein. Ein DNS-Server im Internet löst diesen Namen dann in eine IP-Adresse auf, und die Seite wird angezeigt.
Willst Du einen Rechner erreichen, der per DSL mit dem Internet verbunden ist, ist das schwieriger, da er keine feste IP-Adresse hat. Da kommt DynDNS ins Spiel, ein Dienst der die wechselnde IP-Adresse des Rechners gemeldet bekommt, und so die Weiterleitung ermöglicht.

Ich selbst verwende das Programm bzw. den Client inadyn, in Verbindung mit einem kostenlosen Account auf FreeDNS und einer Subdomain von pii.at. Um sich zurecht zu finden muss sich etwas durchkämpfen, als kleine Hilfestellung eine Anleitung (leider in Englisch und nicht mehr aktuell - den Schritt mit "DNS updater" (crontab) kannst Du überspringen, die aktuelle inadyn-Version macht das automatisch!). Wem das zu kompliziert ist, kann auch einer alternativen Anleitung folgen.

 

Wenn man sich noch eine Domain kauft (z.B.: AT um € 14,90 im Jahr über easyname inkl. 200 MB Speicherplatz für eMail) und die via CNAME auf die Subdomain schaltet, hat man eine schöne dauerhafte Top-Level-Domain für Webseite und Server.

 

Abschließend muss man in der Nginx-Konfigurationsdatei noch etwas abändern (Domain, IP deines Pis):

sudo /etc/nginx/conf.d/website.conf

server {
       listen 80;
       server_name cenz.at;
       return 301 http://www.$server_name$request_uri;
}

server {
        listen 80;
        server_name www.cenz.at 192.168.0.23;
        root /usr/share/nginx/html;
[...]
}

server {
       listen 80;
       server_name *.cenz.at;
       return 301 http://www.cenz.at;
}

sudo service nginx restart

 

top

4. Portweiterleitung (Router)

Damit dein Router die eben aufgeschaltete Subdomain (oder Top-Level-Domain) akzeptiert, benötigt es eine Portweiterleitung durch den Router auf den Raspberry Pi. Die genaue Vorgehensweise kann Dir niemand beschreiben, weil es bei jedem Hersteller / Modell Unterschiede gibt, eine Anleitung als Beispiel.

Grundsätzlich gilt:

  1. im Browser http://192.168.0.1 oder http://10.0.0.138 aufrufen (Loginbereich vom Router)
  2. Benutzername ist "admin", Passwort sollte unten am Router stehen (oder leer?)
  3. Portweiterleitung suchen: z.B.: "Forwarding", "Port Mapping" (oder so), eventuell unter Einstellungen
  4. Protocol → TCP
    externer Port → 80-80 (Port 80 ist der HTTP-Port, Angabe: von Wert bis Wert)
    lokale IP → 192.168.0.23 (IP-Adresse deines Pis)

 

Wenn das Erledigt ist, gibt es noch zwei wichtige Punkte zu beachten:

  1. wurdest du bereits von deinem Internetanbieter auf das Internet-Protokoll IPv6 umgestellt, funktioniert es nicht. Mache diesen Test, fallst du IPv6 verwendet musst Du dich mit deinem Internetanbieter in Verbindung setzen und ihn bitten das Sie dich auf IPv4 umstellen. Meiner Erfahrung nach ist das ein 5 Minuten - Telefonat und somit kein Problem!
  2. du kannst von zu Hause nicht über deine Domain auf deinen Server zugreifen (Absender Anfrage = Empfänger Anfrage)! Du musst zu Hause weiterhin die IP-Adresse deines Pis verwenden!
    Sollte es doch klappen ist die Software/Hardware veraltet und du solltest den Router von deinem Internetanbieter austauschen lassen (erfolgt in der Regel kostenlos, aber Vorsicht: dann wirst du vermutlich auf IPv6 umgestellt!).

 

Teste nun mittels Smartphone (Datenverbindung!) ob deine Webseite erreichbar ist.

Tipp / Anmerkung:
Solltest du Probleme gehabt haben, erstell dir eine kleine Anleitung wie die Portweiterleitung auf Deinem Router funktioniert! Wir benötigen noch weitere Portweiterleitungen in den kommenden Kapiteln!

 

top

5. Verschlüsselung (OpenSSL)

Kennst du noch den TOP-TIPP?
Backup durchgeführt?? - hoffentlich! :)

Das Thema Verschlüsselung hat seit dem NSA-Skandel immer mehr an Bedeutung gewonnen! Den Datenverkehr einer öffentlichen Webseite zu verschlüsseln macht nur wenig Sinn, jedoch möchten wir auch sensible Daten bzw. Dateien transferieren (Seafile, Baikal, usw.) welche es zu schützen gibt.

 

Eines gleich vorweg:
eine RICHTIGE VERSCHLÜSSELUNG (selbst signiertes Zertifikat) kann NICHT MIT 4 ZEILEN CODE zustande kommen! Auch wenn man auf den meisten Seiten so eine Anleitung findet ist es einfach Falsch!

Dann gibt es da noch:
die ganzen eingetragenen Zertifizierungsstellen bei denen man signierte Zertifakte erhält (egal ob kostenlos oder kostenpflichtig), wo man jedoch nie mit Sicherheit sagen kann ob die nicht den privaten Schlüssel an Behörden weitergeben (egal ob gewollt oder ungewollt) und somit die ganze Verschlüsselung unwirksam ist!

 

Wie gut das Zertifikat ist und welche Mängel es aufweist kann man kostenlos unter QUALYS SSL LABS testen. Da wir unser Zertifikat selbst signieren wird es als nicht vertrauenswürdig eingestuft und wir erhalten automatisch die Note T, jedoch mit der Fußzeile "Wenn Vertrauensprobleme ignoriert werden: Note A". Für uns entscheident ist ein Zertifikat ohne Mängel sowie folgende Bewertung:

SSL Server Test - anständige Verschlüsselung

Protocol Support: 95% Für 100% Protokollunterstützung müsste man veraltete aber durch aus noch gängige Browser, Programme und Betriebssysteme ausschließen (IE 6-10, Safari 5-8, Java 6-7, Android 2.3-4.3, usw.). Somit sind 95% in Ordnung!
Key Exchange: 90% Beim Schlüsselaustausch (DH) wird eine Parameter Stärke von über 2048bits (unter 4096bits) verwendet. Dies ist laut Experten (noch) ausreichend, außerdem würde alles darüber hinaus den RasPi zu sehr beanspruchen!
Cipher Strength: 100%

Die Verschlüsselungsstärke der Kommunikationssitzung schützt vor Ausspähung und ist somit ganz entscheident für eine abhörsichere Verbindung.

 

Für dieses umfangreiche Thema habe ich eine Anleitung verfasst: Raspberry Pi - OpenSSL (pdf)

 

HTTPS-PORT (Port-Weiterleitung):
Der Port 443 ist der zuständige HTTPS-Port (SSL/TLS). Eine Port-Weiterleitung am Router ist erforderlich!

 

top

6. externe Festplatte (Optional - falls gewünscht)

Da Speicherkarten nur wenig Speicherplatz bieten, ist das Auslagern von großen Datenmengen auf eine externe Festplatte (2,5 oder 3,5 Zoll) sinnvoll. Eine 3,5 Zoll Festplatte benötigt eine eigene Stromversorgung (Kosten), deshalb rate ich zu einer 2,5 Zoll welche direkt vom Netzteil (2A) des RasPis versorgt werden kann.

persönliche Anmerkung:
ich selbst habe die PiDrive 314GB von Western Digital in Verwendung, wobei für unsere Zwecke jede ehemalige Laptop-Festplatte bestens geeignet sein dürfte.

 

Eine neu gekaufte Festplatte hat meistens keine Partitionen, somit schaut es aus als ob die Festplatte nicht erkannt wird. Bei Windows wird man automatisch darauf hinwiesen, in der Debian - Konsole muss man selbst aktiv werden! Es gibt eine echt gute Anleitung wie man eine Festplatte partitioniert, einbindet, usw. Deshalb hab ich nachträglich nur einen Verbesserungsvorschlag: ein "nofail" in fstab ergänzen

Schritt: Festplatte in fstab eintragen

UUID=efd48c69-3780-44f2-8262-1f54c1a4aae6 /media/usbdisk ext4 defaults,nofail 0 0

"nofail" verhindert das bei fehlender Festplatte der „emergency mode“ (=Auto-Login als Root) aktiviert wird!

 

top

7. private Cloud (Seafile)

Mit einer Cloud kann man persönliche Daten überall abrufen bzw. Dateien synchronisieren. Das ist sehr nützlich wenn man beispielsweise seine Musik am PC zu Hause, am Laptop für Unterwegs und in der Arbeit auf den gleichen Stand halten möchte, und / oder man seine persönlichen Dokumente übers Smartphone abrufen können möchte.
Eine private, also in der eigenen Wohnung befindlichen, Cloud schützt zusätzlich noch vor fremden Blicken.

 

Ein Backup dieser Daten ist in den meisten Fällen nicht erforderlich, da die Dateien am Server mit dem PC zu Hause (und / oder dem Laptop) synchronisiert werden und somit die Daten doppelt (bis dreifach) vorhanden sind - vorausgesetzt der Wohnung passiert nichts (Brand, Diebstahl, usw.). Wenn man 100%ig sicher gehen möchte, sollte man ein Backup bei einem Freund oder im Elternhaus unterbringen.

 

Anleitungen zu Seafile findet man zur Genüge im WWW
Anleitung von Seafile (Englisch) oder z.B.: Seafile - Blog von Jan Karres (Deutsch, jedoch veraltet!)

 

top

8. Kalender & Kontakte (Baikal)

Anleitungen zu Baikal findet man zur Genüge im WWW
Anleitung von Baikal (Englisch) oder z.B.: Baikal - Blog von Jan Karres (Deutsch, jedoch veraltet!)

 

top

9. Nachrichten - Feeds (Tiny Tiny RSS)

Anleitungen zu Tiny Tiny RSS findet man zur Genüge im WWW
Anleitung von Tiny Tiny RSS (Englisch) oder z.B.: Tiny Tiny RSS - Blog von Jan Karres (Deutsch, jedoch veraltet!)

 

top

10. Speedtest - Script

Seit April 2017 erfasse ich automatisch, im 10 Minuten Intervall, die Geschwindigkeit (Down und Upload) meiner Internetverbindung. Warum? - Wer in Österreich lebt und vielleicht auch noch bei UPC ist braucht sich diese Frage nicht zu stellen - sondern kennt die Antwort!

Auf das Thema wurde ich durch diesen Zeitungsartikel aufmerksam:
http://derstandard.at/2000037596802/2-statt-75-Megabit-Kundin-dokumentiert-Probleme-bei-UPC

 

Installation:

wir starten im Home-Verzeichnis...

git clone https://gitgud.io/J0s3f/speedtest_cron.git

cd speedtest_cron

 

rm –r speedtest_cli

git clone https://github.com/sivel/speedtest-cli.git

sudo python speedtest-cli/setup.py install

 

nano speedtest_cron

 

/path/to/this/folder/speedtest_cli/speedtest_cli.py

ersetzen durch

/home/cenzServer/speedtest_cron/speedtest-cli/speedtest.py

UND

/path/to/this/folder

ersetzen durch

/home/cenzServer/speedtest_cron

UND

folgendes aus der Datei entfernen / löschen:

--source `/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`

 

chmod +x speedtest_cron

chmod +x speedcsv

 

crontab -e

5-59/10 *  * * * /home/cenzServer/speedtest_cron/speedtest_cron

sudo /etc/init.d/cron restart

 

Export (csv):

Mittels des Scriptes speedcsv können die erzeugten Ergebnisse (eine Datei pro Test) ausgewertet und als csv exportiert werden. Die Ergebnisse können auch in eine Datei gespeichert werden:

./speedcsv > results.csv

Wenn man sich dazu noch ein Excel-Diagramm angelegt, hat man eine schöne Darstellung.

Speedest - UPC, 1140 Wien

 

und so sieht meine Internetgeschwindigkeit im gleichen Zeitraum, jedoch nur zwischen 20:00 und 23:00 Uhr aus:

Speedest - UPC, 1140 Wien _ 20-23 Uhr

(Erinnert mich etwas an den Film Matrix, obwohl die Punkte nicht Grün sind!)

top

 

Themen die dich interessieren könnten: