Sicherlich lässt sich dies alles recht einfach mit einem Laptop realisieren. Doch hat der Laptop an Bord meiner Meinung nach folgende Nachteile:
- relativ hoher Stromverbrauch
- sicherer Standort ist nicht immer gegeben (vor allem bei Kleinkreuzern)
Daher viel die Wahl schnell und leicht auf einen Raspberry PI. Dieser Mikrocomputer bietet ausreichend Performance um die aufgeführten Anforderungen umzusetzen.
System-Dienste
Diese sind sowohl Voraussetzung für die teilweise Umsetzung der Anforderungen und sollen einen möglichst automatisiertes Handling des Systems gewährleisten. Hierzu zählen folgende Dienste
- Datenbereitstellung: Webserver, FTP-Server, VNC-Server, NFS-Server
- Datenbank
- Datenverarbeitung: Backup
- autom. Verarbeitung: Cronjob
Aufgrund der verschiedenen Dienste und OpenCPN (s.u.) sollte es schon ein Raspberry PI 3 b+ sein. Gerade OpenCPN benötigt zur Darstellung der Karten und Overlays schon etwas RAM.
Hardware:
Raspberry PI 3 b+, SD-Karte 16GB, Tastatur USB, Maus USB, Montior per HDMI oder Adapter
Software: aktuelles Image von raspberrypi.org herunterladen
1. Aufbau Raspberry PI
Die heruntergeladene Datei entpacken und das entpackte Image-File mit folgenden Befehlen auf die SD-Karte schreiben:
dd bs=4M if=/home/me/piserver/2018-stretch.img of=/dev/mmcblk0
Wobei der Parameter hinter „if=“ dem Pfad zur Imagedatei entspricht und hinter „of=“ dem Pfad zur SD-Karte. Diese Angaben müsst ihr entsprechend eurer Umgebung anpassen.
sync
Zum Abschliessen des Schreibvorgangs vom Image und leeren des Schreibcaches für die SD-Karte in Linux.
Den PI mit Monitor, Tastatur und Maus verbinden, da beim erstmaligen Aufruf noch keine Server-Dienste aktiv und somit kein Remote-Verbindung möglich ist.
Hinweis:
Wer die SD-Karte unter Windows einrichten will, kann hierfür die Anleitung bei raspberry.org nutzen.
2. Einrichtung der Server-Dienste
SSH
Oben links auf den Ribbon gehen und Einstellungen -> Raspberry-PI-Konfiguration wählen . Unter „Schnittstellen“ den Eintrag SSH aktivieren und speichern. Jetzt besteht schon ein Ferbzugriff auf den PI per SSH-Tools wie „Putty“. Abspeichern und neu starten.
VNC-Server
Zwar bietet Raspbian hier unter den Einstellungen – Schnittstellen auch die Möglichkeit einen VNC-Server zu aktivieren, aber Stretch setzt standardmäßig auf RealVNC. Dieser lässt sich aufgrund der verwendeten Verschlüsselung/Protokollierung allerdings nur mit dem RealVNC Client stabil nutzen. Daher wird der xtightvnserver installiert:
sudo apt-get install xtightvncserver
anschliessend Passwort für VNC-Verbindung setzen
vncpasswd
dann noch den VNC-Dienst fürs automatische Starten beim Booten einrichten
sudo vim /etc/systemd/system/vncserver.service
mit folgendem Inhalt
[Unit]
Description=xtightvncserver
After=syslog.target network.target
[Service]
Type=forking
User=pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:%i.pid
ExecStart=/usr/bin/vncserver -depth 8 -geometry 800x600 :%i
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
anschliessend
sudo systemctl daemon-reload
den neuen VNC-Dienst starten
sudo systemctl start vncserver1.service
und diese neue Datei zum automtischen Starten beim Booten eintragen
sudo systemctl enable vncserver1.service
zum Test den PI neu booten
sudo reboot
danach sollte der PI mit einem VNC-Client übers Netzwerk erreichbar sein
auf dem PI lässt sich der Status des VNC-Dienstes abrufen
sudo systemctl status vncserver1.service
FTP-Server
Mit einem FTP-Server lassen sich Dateien einfach und bequem zwischen PI und beliebigen Endgeräten austauschen. Als FTP-Server bietet sich vsftpd an.
sudo apt-get install vsftpd
Konfigurationsdatei /etc/vsftpd.conf anpassen
- lokale Benutzer zulassen local_enable=YES
- globales Schreiben zulassen write_enable=YES
anschliessend kann der Dienst gestartet werden
sudo service vsftpd start
Web-Server
Als Webserver wird nginx eingerichtet. Das ist schneller und schlanker als Apache.
sudo apt install nginx
dann PHP einrichten
sudo apt-get install php7.0-fpm
nun für nginx die PHP-Funktionalität einrichten, hierzu die Datei /etc/nginx/sites-enabled/default beareiten
sudo vim /etc/nginx/sites-enabled/default
und hierin in der Zeile mit „index index.html index.htm;“ den Eintrag „index.php“ ergänzen
index index.php index.html index.htm;
und weiter den Kommentator # in folgenden Zeilen entfernen
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
anschliessend den Webser neu starten
sudo /etc/init.d/nginx reload
Um zum Schluss zu prüfen ob nginx mit PHP läuft, eine Datei index.php im Verzeichnis /var/www/html erstellen
sudo vim /var/www/html/index.php
mit folgendem Inhalt
<?php
phpinfo();
?>
und dann die Seite aufrufen, indem entweder auf dem PI (per VNC) im Browser einfach die URL „localhost“ aufgerufen wird, oder von einem beliebigen PC im Netz im Browser die IP-Adresse des PI
es sollte die Infoseite von PHP erscheinen
Datenbank-Server
Jetzt noch als Datenbank-Server mySql einrichten:
sudo apt-get install mysql-server mysql-client php-mysql phpmyadmin
in der Datei /etc/php/7.0/fpm/php.ini folgenden Eintrag auskommentieren und auf Null (0) setzen:
cgi.fix_pathinfo=0
anschliessend den PHP Dienst neu starten
sudo systemctl restart php7.0-fpm
AD-HOC Server
Damit wir auch unterwegs auf den PI zugreifen bzw. die Infos aus der Plicht abgerufen werden können, muss noch ein Ad-Hoc Server eingerichtet werden.
Die Vorgehensweise hierzu ist sehr ausführlich und gut auf folgender Seite beschrieben:
https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md
Hierdurch kann der PI per Ethernet-Kabel an einen Routen angeschlossen und in ein bestehendes Netzwerk (z.B. zu Hause) eingebunden werden, oder aber er dient unterwegs als Access Point.
Somit steht auf dem PI der Webserver (nginx) mit PHP und Datenbannk zur Verfügung, und kann jederzeit per WiFi angesprochen werden.
Datensicherung
Jetzt noch eine Lösung, um die angefallenen Daten möglichst einfach zu sichern.
Da an unterschiedlichen Stellen (MySQL-Server, Dateien, etc.) Daten anfallen und zu sichern sind, gehe ich einfach hin, und erstelle vom System automatisch per Cron-Job ein Image. Damit habe ich den kpl. Server immer gesichert. Dieses Image wird auf einen externen Stick geschrieben und kann von dort entweder per FTP oder durch Übernahme des Sticks an einen anderen PC übertragen werden.
dd bs=4M if=/dev/mmblck0 of=/dev/sda
die o.g. Angaben den eigenen Umgebungsbedingungen entsprechend anpassen
Der USB-Stick hat natürlich eine größere Kapazität als die Micro-Karte des Raspberry.