Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeIntux

Raspberry Pi OS Bullseye -> Bookworm

30. April 2024 um 04:00

Da ich einiges an Zeit in meine auf dem Raspberry Pi 4 laufende Nextcloud investiert habe, wäre es schade, für das aktuelle Raspberry Pi OS 12, alles noch einmal aufsetzen und konfigurieren zu müssen. Obwohl die Entwickler des Betriebssystems von einem Upgrade generell abraten, habe ich mich auf die Suche nach einer guten und funktionierenden Anleitung gemacht und bin auf den vielversprechenden Artikel „Raspberry Pi OS – Update von Bullseye (11) auf Bookworm (12)“ von Sascha Syring gestoßen.

Um das Ganze ausgiebig zu testen, habe ich das Upgrade zuerst auf einem Raspberry Pi 4 durchgeführt, auf dem ein Mumble-Server läuft, den unsere Community produktiv zum Erfahrungsaustausch nutzt. Nachdem dies alles problemlos funktioniert hat, habe ich mich an meinen Nextcloud-RasPi gewagt. Was es weiter zu beachten gab, darauf gehe ich am Ende des Artikels noch ein.

Systemupgrade

Bevor es los geht muss das System auf den aktuellsten Stand unter Raspberry Pi OS 11 Bullseye gebracht werden. Hierzu führt man Folgendes aus:

sudo apt update && sudo apt upgrade && sudo apt dist-upgrade

Paketquellen

Danach werden die Paketquellen auf das neue System Bookworm angepasst. Hierzu öffnet man die /etc/apt/sources.list

sudo nano /etc/apt/sources.list

und kommentiert alle aktiven Quellen, indem man vor jede aktive Zeile eine Raute „#“ setzt. Danach fügt man die drei Zeilen

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

am Anfang ein und speichert die Datei mit Ctr + o ab und verlässt dann den Editor mit Ctr + x.

Paketquellen
Paketquellen

Das Gleiche Spiel wiederholt man mit den zusätzlichen Paketquellen.

sudo nano /etc/apt/sources.list.d/raspi.list

Hier wird nun folgende Zeile an den Anfang gesetzt:

deb http://archive.raspberrypi.org/debian/ bookworm main

Die Datei wird mit Ctr + o gespeichert und der Editor mit Ctr + x verlassen. Ist dies geschehen, können die Paketquellen neu eingelesen werden.

Zusätzliche Paketquellen
Zusätzliche Paketquellen
sudo apt update

Bootpartition

Nun kommt der kniffligste Teil. Die Bootpartition muss an die neuen Gegebenheiten angepasst werden. Dazu wird die alte Boot-Partition ausgehängt.

sudo umount /boot

Dann wird das neue Verzeichnis /boot/firmware erstellt.

sudo mkdir /boot/firmware

Jetzt bearbeitet man die Partitionstabelle:

sudo nano /etc/fstab

Hier wird der Eintrag der Bootpartition entsprechend eingetragen. Bei mir sieht das so aus:

Datei zum Einbinden der Datenträger
Datei zum Einbinden der Datenträger

Die Datei wird wieder mit Ctr + o gespeichert und der Editor mit Ctr + x verlassen. Damit die Änderungen wirksam werden, wird systemd neu geladen

sudo systemctl daemon-reload

und die neue Boot-Partition gemountet.

sudo mount /boot/firmware

Bootloader und Kernel

Im Nachgang werden die aktuelle Firmware und der aktuelle Kernel für das Raspberry Pi OS 12 (Bookworm) installiert

sudo apt install raspi-firmware linux-image-rpi-v8

und der alte Bootloader und Linux-Kernel entfernt.

sudo apt remove raspberrypi-kernel raspberrypi-bootloader

Ist dies geschehen, müssen die Paketquellen nochmalig mit

sudo apt update

eingelesen werden.

Upgrade

Nun kann das eigentlich Upgrade durchgeführt werden. Hierbei stoppt der Vorgang bei den wichtigsten Konfigurationsdateien. Diese werden in der Regel alle beibehalten.

sudo apt full-upgrade

System aufräumen

Nun wird das System noch aufgeräumt.

sudo apt autoremove
sudo apt clean

Neustart

Nach dem Neustart

sudo reboot now

sollte nun das aktuelle Raspberry Pi OS 12 laufen. Das installierte Betriebssystem lässt man sich mit

cat /etc/os-release

anzeigen.

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Mit

uname -a

kann man nun den aktuellen Kernel checken. Meine Ausgabe sieht wie folgt aus:

Linux nextcloud 6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux

(„nextcloud“ in dieser Zeile ist der Hostname)

Abschließend sei darauf hingewiesen, dass das Upgrade einige Gefahren in sich birgt. Bitte vorher unbedingt an ein Backup denken, was im Bedarfsfall wieder eingespielt werden kann!

Noch zu erwähnen

Eingangs des Artikels hatte ich erwähnt, dass es Weiteres zu beachten gibt. Durch das Upgrade wurden die Einstellungen des Dienstes zu meinem Turn-Server zurück gesetzt. Ein funktionierender Turn-Server ist wichtig, um reibungslosen Verlauf in Videokonferenzen zu ermöglichen.

Wer also wie ich eine Nextcloud auf dem Raspberry Pi installiert hat und bisher meinen Anleitungen gefolgt ist, muss den zeitverzögerten Start des Turnservers, wie im Artikel „coTurn zeitverzögert auf Raspberry Pi starten“ beschrieben, wieder neu konfigurieren. Dazu editiert man die Datei /lib/systemd/system/coturn.service:

sudo nano /lib/systemd/system/coturn.service

Nun fügt man den folgenden Eintrag unter [Service] ein und speichert die Änderung mit Ctlr + o.

ExecStartPre=/bin/sleep 30

Den Editor verlässt man dann wieder mit Ctrl + x. Durch den Eintrag wird nun eine Verzögerung von 30 Sekunden erzwungen. Mit 

sudo service coturn restart

wird der Turnserver zeitverzögert neu gestartet. jetzt arbeitet coTURN nach dem nächsten Reboot des Raspberry Pi wie gewünscht.

Viel Erfolg!

Umzug der Nextcloud von 32-Bit auf 64-Bit

16. Februar 2024 um 05:30

Nachdem unsere Community-Cloud das vorab letzte Software-Upgrade und eine neue SSD erhalten hatte, wurde es nun Zeit auch die Hardware auf eine neue Stufe zu heben. Da wir der Meinung waren, dass hierzu ein Raspberry P4 4 Modell B mit 8GB völlig ausreicht, haben wir uns bewusst für dieses Gerät entschieden. Eingepackt in ein passiv gekühltes Metallgehäuse wird uns diese Kombination, so hoffe ich, die nächste Zeit zuverlässig begleiten.

Da ein Upgrade der installierten Software vom Raspberry Pi 3 auf den Raspberry Pi 4 wenig sinnvoll und auch fast unmöglich umzusetzen ist, war die Idee, die Datenbank und das Datenverzeichnis der Nextcloud in eine Neuinstallation (64-Bit) einzubinden.

Für den Wechsel auf 64-Bit hätte eigentlich parallel zum bestehenden System eine Neuinstallation auf dem erwähnten Raspberry Pi durchgeführt werden müssen. Hier konnte ich mir die Arbeit aber ein wenig erleichtern, indem ich die MicroSD meiner eigenen Cloud klonen konnte. Auf dem geklonten System waren so nur einige Anpassungen vorzunehmen, bevor das neue Gerät an Stelle des 32-Bit-Systems in Betrieb genommen werden konnte.

Aufnahme mit Wärmebildkamera (passiv gekühltes Gehäuse für Raspberry Pi 4)
Aufnahme mit Wärmebildkamera (Raspberry Pi 4 – passive Kühlung)

Die aus dem Raspberry Pi 3 gesicherte Datenbank wurde in den Raspberry Pi 4 eingelesen und die Daten-SSD in die /etc/fstab eingebunden. Danach wurde der ddclient mit der DynDNS neu konfiguriert. Ein neues Zertifikat wurde erstellt und die automatische Upgrade-Routine hierzu angepasst. Zum Schluss mussten nur noch die Ports im Speedport-Router für die neue Hardware freigegeben werden.

Fazit

Der Aufwand hat sich in dem Sinne gelohnt, da dieses nun mittlerweile über fünfeinhalb Jahre existierende Projekt, zukunftssicher weiterbetrieben werden kann.

Bruteforce-Einträge in Nextcloud-Datenbank löschen

13. Februar 2024 um 05:00

Nachdem nun unsere Community-Cloud endlich wieder lief, habe ich versucht innerhalb der Gemeinschaft unseren Cloud-Speicher etwas zu bewerben. Bei einigen Nutzern war dieser inzwischen etwas in Vergessenheit geraten, samt den nötigen Passwörtern.

Es kommt natürlich immer wieder vor, dass Zugangsdaten nicht richtig verwahrt werden oder gar ganze Passwörter nicht mehr auffindbar sind. Mehrfache fehlerhafte Eingaben können jedoch, wie im Fall der Nextcloud, dazu führen, dass Nutzer-IPs ausgesperrt bzw. blockiert werden. Diesen Schutz nennt man Bruteforce-Schutz.

Bruteforce-Schutz

Nextcloud bietet einen eingebauten Schutzmechanismus gegen Bruteforce-Angriffe, der dazu dient, das System vor potenziellen Angreifern zu sichern, die wiederholt verschiedene Passwörter ausprobieren. Diese Sicherheitsvorkehrung ist standardmäßig in Nextcloud aktiviert und trägt dazu bei, die Integrität der Daten zu wahren und unautorisierten Zugriff auf das System zu verhindern.

Wie es funktioniert

Die Funktionsweise des Bruteforce-Schutzes wird besonders deutlich, wenn man versucht, sich auf der Anmeldeseite mit einem ungültigen Benutzernamen und/oder Passwort anzumelden. Bei den ersten Versuchen mag es unauffällig erscheinen, doch nach mehreren wiederholten Fehlversuchen wird man feststellen, dass die Überprüfung des Logins mit zunehmender Häufigkeit länger dauert. An dieser Stelle tritt der Bruteforce-Schutz in Kraft, der eine maximale Verzögerung von 25 Sekunden für jeden Anmeldeversuch einführt. Nach erfolgreicher Anmeldung werden sämtliche fehlgeschlagenen Versuche automatisch gelöscht. Wichtig zu erwähnen ist, dass ein ordnungsgemäß authentifizierter Benutzer von dieser Verzögerung nicht mehr beeinträchtigt wird, was die Sicherheit des Systems und die Benutzerfreundlichkeit gleichermaßen gewährleistet.

Bruteforce-Schutz kurzzeitig aushebeln

Hat nun einmal die Falle zugeschnappt und ein Anwender wurde aus der Nextcloud ausgesperrt, so kann sich das Problem über die Zeit von selbst lösen. Es gibt aber auch die Möglichkeit die Datenbank entsprechend zurückzusetzen.

Zuerst wechselt man in das Nextcloud-Verzeichnis. Danach werden über den folgenden OCC-Befehl die Bruteforce-Einträge der Datenbank resetet.

cd /var/www/html/nextcloud/
sudo -u www-data php occ security:bruteforce:reset 0.0.0.0

Neue Bruteforce-Attacken werden natürlich danach wieder geloggt und verdächtige IPs ausgesperrt.

Viel Erfolg!

Raspberry Pi OS Buster -> Bullseye

27. Januar 2024 um 09:40

Heute möchte ich noch einmal ein Thema aus der Mottenkiste holen, welches ja eigentlich schon abgehakt sein sollte. Es geht um das Upgrade von Raspbian 10 auf das Raspberry Pi OS 11.

Anlass des Ganzen ist unsere Community-Cloud mit über 25 Nutzern. Diese Cloud wurde vor über fünfeinhalb Jahren zum Zwecke des Datenteilens ins Leben gerufen. Durch einen bedingten öfteren Standortwechsel verblieb das System auf einem Softwarestand von vor über zwei Jahren. Jetzt im neuen Zuhause stand dadurch ein gründlicher Tapetenwechsel an. D.h., dass im ersten Schritt das Betriebssystem auf Raspberry Pi OS 11 Bullsleye angehoben werden musste, bevor die Nextcloud von Version 22 auf 27 aktualisiert wurde. Weiterhin musste parallel PHP 7.3 auf Version 8.1 gezogen werden, um wieder in sicheres Fahrwasser zu gelangen. Bei der Hardware handelt es sich um einen Raspberry Pi 3 Model B. Auch dieses Gerät soll im laufe des Jahres noch ein Refresh erhalten.

Nun zum Upgrade auf das erwähnte Raspberry Pi OS 11.

Installation

Hilfreich bei der Installation war die Anleitung von linuxnews.de, die ich abschließend noch um zwei Punkte ergänzen musste. Hierbei konnte ich mich noch an mein erstes Upgrade dieser Art erinnern, dass es zu Unverträglichkeiten mit dem Desktop kam. Dieses Problem wird ganz am Ende des Artikels behandelt.

Zuerst wurde ein vollständiges Upgrade auf die aktuellste Version Raspbian 10 durchgeführt.

sudo apt update
sudo apt full-upgrade
sudo rpi-update

Danach wurden die Quellen auf Bullseye angepasst.

sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list
sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list.d/raspi.list

Im Anschluss folgte ein Update der Quellen und die erforderliche Installation von gcc-8.

sudo apt update && sudo apt install libgcc-8-dev gcc-8-base
sudo apt full-upgrade 
sudo apt -f install

Danach wurden unnötige Pakete und verbliebene heruntergeladene Pakete entfernt.

sudo apt autoremove
sudo apt clean

Nun mussten noch die Kernelbased Mode-Setting (KMS) in der /boot/config.txt angepasst werden. Hierzu wurden folgende zwei Befehle ausgeführt:

sudo sed -i 's/dtoverlay=vc4-fkms-v3d/#dtoverlay=vc4-fkms-v3d/g' /boot/config.txt
sudo sed -i 's/\[all\]/\[all\]\ndtoverlay=vc4-kms-v3d/' /boot/config.txt

Desktop aufräumen

Nach dem Reboot mit angeschlossenem Monitor fiel auf, dass sich das Programm Parcellite in der Menüleiste verewigt hatte. Parcellite war vor dem Systemupgrade auf Raspberry Pi OS 11 Bullseye nicht an Bord. Aus diesem Grund konnte es auch ohne Bedenken gelöscht werden.

sudo apt remove parcellite

Weiterhin fiel auf, dass die ganze Menüleiste des Desktops etwas vermurkst aussah. Diese wurde auf die Grundeinstellungen mit

cd ~/
sudo rm -rf .cache

zurückgesetzt.

Nach einem erneuten Reboot läuft Raspberry Pi OS 11 wie gewünscht.

sudo reboot
Nextcloud 27 - Raspberry Pi Modell B Rev 1.2
Nextcloud 27 – Raspberry Pi Modell B Rev 1.2
Nextcloud 27 - PHP 8.1
Nextcloud 27 – PHP 8.1

Fazit

Um unsere Community-Cloud wieder sicher zu machen, war ein wenig Wochenendarbeit nötig. Die so investierte Zeit hat sich aber durchaus gelohnt. Im nächsten Schritt erfolgt dann der Tausch des Raspberry Pi und ein Wechsel der Daten-SSD gegen ein größeres Modell.

Chemnitzer Linux-Tage 2024

09. Januar 2024 um 17:41

Unter dem Motto „Zeichen setzen“ finden am 16. und 17. März 2024 wieder die Chemnitzer Linux-Tage statt. Die Veranstalter hoffen wieder auf einen großen Zuspruch im Hörsaalgebäude der TU Chemnitz an der Reichenhainer Straße.

Eintrittskarten zur Veranstaltung wird es im Vorverkauf geben. Da die Anzahl der Tickets aber begrenzt ist, wird es an der Tageskasse nur Restkarten geben.

Auch 2024 haben sich die Chemnitzer Linux-Tage einen Platz an einem März-Wochenende gesucht. Also Kalender gezückt und den 16. und 17. März 2024 dick einkreisen! Es lohnt sich bestimmt.

Eintrittskarten sind an der Tageskasse erhältlich.

Wir freuen uns sehr, euch im März vor Ort in Chemnitz in gewohnter Umgebung wiederzusehen. Über unsere Pressemitteilungen, Social Media könnt ihr euch diesbezüglich auf dem Laufenden halten.

Quelle: chemnitzer.linux-tage.de

PHP8.2-fpm für Nextcloud 28

27. Dezember 2023 um 14:00

Dieser Beitrag baut auf dem Artikel „PHP7.4-fpm auf PHP8.1-fpm für Nextcloud“ auf.

Im Januar 2023 hatte ich erklärt, wie ich mein Raspberry Pi OS 11 (basierend auf Debian 11 Bullseye), durch Einbinden einer Fremdquelle, von PHP7.4-fpm auf PHP8.1-fpm aktualisiert habe. Warum ich zu diesem Zeitpunkt die Version 8.1 installiert habe, ist recht einfach zu beantworten. Die aktuelle Version Nextcloud 25 war noch nicht kompatibel zu PHP 8.2. Erst mit Nextcloud 26 war ein Upgrade möglich.

Nun habe ich mich nach der Aktualisierung auf Nextcloud 28 entschieden auf PHP 8.2 zu wechseln. Da ich den FastCGI-Prozessmanager FPM bevorzuge, unterscheidet sich das Upgrade etwas von einer herkömmlichen PHP-Installation.

Unterstützungszeiträume der aktuellen PHP-Versionen
Quelle: https://www.php.net/supported-versions.php

Installation

Zuerst wird das System auf den aktuellen Stand gebracht.

sudo apt update && sudo apt upgrade -y

Ein Check zeigt, welche PHP-Version momentan aktiv ist.

php -v

Hier die Ausgabe:

PHP 8.1.27 (cli) (built: Dec 21 2023 20:17:59) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.27, Copyright (c) Zend Technologies
with Zend OPcache v8.1.27, Copyright (c), by Zend Technologies

Jetzt werden alle benötigten Pakete nachinstalliert (auch das von Nextcloud 28 verlangte bz2 und der von mir eingesetzte Redis-Server).

sudo apt install php8.2 php8.2-mbstring php8.2-gd php8.2-curl php8.2-imagick php8.2-intl php8.2-bcmath php8.2-gmp php8.2-mysql php8.2-zip php8.2-xml php8.2-apcu libapache2-mod-php8.2 php8.2-bz2 php8.2-redis

Nun wird via CLI die PHP-Version von 8.1 auf 8.2 mit

sudo update-alternatives --config php

umgestellt.

sudo update-alternatives --config php
Es gibt 5 Auswahlmöglichkeiten für die Alternative php (welche /usr/bin/php bereitstellen).

  Auswahl      Pfad                  Priorität Status
------------------------------------------------------------
  0            /usr/bin/php.default   100       automatischer Modus
  1            /usr/bin/php.default   100       manueller Modus
  2            /usr/bin/php7.4        74        manueller Modus
* 3            /usr/bin/php8.1        81        manueller Modus
  4            /usr/bin/php8.2        82        manueller Modus
  5            /usr/bin/php8.3        83        manueller Modus
sudo update-alternatives --config php
Es gibt 5 Auswahlmöglichkeiten für die Alternative php (welche /usr/bin/php bereitstellen).

  Auswahl      Pfad                  Priorität Status
------------------------------------------------------------
  0            /usr/bin/php.default   100       automatischer Modus
  1            /usr/bin/php.default   100       manueller Modus
  2            /usr/bin/php7.4        74        manueller Modus
  3            /usr/bin/php8.1        81        manueller Modus
* 4            /usr/bin/php8.2        82        manueller Modus
  5            /usr/bin/php8.3        83        manueller Modus

Ein abschließender Check zeigt die aktuelle Version.

php -v
PHP 8.2.14 (cli) (built: Dec 21 2023 20:18:00) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.14, Copyright (c) Zend Technologies
with Zend OPcache v8.2.14, Copyright (c), by Zend Technologies

Ist die Ausgabe korrekt, kann PHP8.1-fpm deaktiviert, PHP8.2-fpm installiert und aktiviert werden.

sudo a2disconf php8.1-fpm
sudo apt install php8.2-fpm
sudo a2enconf php8.2-fpm

Der Restart des Webservers führt nun die Änderungen aus.

sudo service apache2 restart

Nextcloud-Konfiguration

Da in der Nextcloud nun wieder die bekannten Fehlermeldungen auftauchen, heißt es, diese schrittweise abzuarbeiten. Dazu wird die neue php.ini geöffnet

sudo nano /etc/php/8.2/fpm/php.ini

und die Werte für memory_limit sowie session_lifetime wie empfohlen angepasst.

memory_limit = 512M
session.gc_maxlifetime = 3600

Der Block

opcache.enable=1
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=10000
opcache.memory_consumption=256
opcache.save_comments=1
opcache.revalidate_freq=1

für den Zwischenspeicher OPchache wird ans Ende der php.ini gesetzt.

Zur Optimierung von PHP8.2-fpm werden speziell für das Modell Raspberry Pi 4 mit 4GB RAM in der Datei www.conf mit

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

folgende Werte von

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

auf

pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

angepasst und der Dienst neu gestartet.

sudo service php8.2-fpm restart

Danach muss in der apcu.ini das Command Line Interface des PHP Cache noch aktiviert werden, indem

sudo nano /etc/php/8.2/mods-available/apcu.ini

folgende Zeile am Ende eingetragen wird.

apc.enable_cli=1

Ist dies geschehen, wird der Webserver ein letztes Mal neu gestartet.

sudo service apache2 restart

Fazit

Die Umstellung bringt zwar im Moment keine erkennbaren Vorteile, jedoch verschafft es wieder ein wenig Zeit und senkt den Druck das eigentliche Raspberry Pi OS 11 Bullseye durch die aktuelle Version 12 Bookworm zu ersetzen.

Nextcloud AntiVirus for Files

23. November 2023 um 19:08

Heute möchte ich zeigen, wie ich meine Nextcloud mit dem Virenscanner ClamAV ausgerüstet habe. Da eine Cloud ja ein guter Verteiler von Daten ist, kann es schnell vorkommen, dass man mit einer Synchronisation viele Endgeräte unbeabsichtigt mit einem Virus infiziert. Um dies zu verhindern, bietet Nextcloud die App Antivirus for files aus dem hauseigenen App store an. Zur Nutzung der App sind jedoch ein paar Vorbereitungen auf dem Server nötig.

Da ich im privaten Alltag ausschließlich mit Linux arbeite, mache ich mir i.d.R. kaum wirkliche Sorgen um Viren, Trojaner und Co. Trotzdem möchte ich meine Cloud im höchsten Maße absichern und das System weiter härten.

Diese Anleitung bezieht sich auf eine Nextcloud-Instanz, welche auf einem Raspberry Pi mit Rasberry Pi OS gehostet ist und zeigt einen guten Ansatz, um die Verteilung von Viren zu verhindern.

Installation

Zuerst installiert man die Pakete clamav, clamav-freshclam und clamav-daemon mit folgendem Befehl.

sudo apt install clamav clamav-freshclam clamav-daemon -y

Im Anschluss muss der Dienst clamav-freshclam nochmals gestoppt werden, um die Virus-Datenbank aufzufrischen. Danach wird der Service erneut gestartet.

sudo service clamav-freshclam stop
sudo freshclam
sudo service clamav-freshclam start

Die Abfrage der Datenbank wird per Standard nun 12 Mal pro Tag automatisch ausgeführt.

Ein Check via

sudo service clamav-freshclam status

zeigt, ob der Dienst ordnungsgemäß läuft. Die Ausgabe sollte wie im Screenshot aussehen.

Terminalausgabe Service clamav-freshclam
Service clamav-freshclam

Ein weiterer Test gibt Aufschluss, ob der clamav-daemon ebenfalls korrekt arbeitet.

sudo service clamav-daemon status
Terminalausgabe Service clamav-daemon
Service clamav-daemon

Da dies bei mir nicht auf Anhieb funktionierte, musste ich diesen Service nochmals neu starten.

Dies erledigt man mit dem Befehl:

sudo service clamav-daemon restart

Natürlich sollte jetzt noch einmal der Status, wie zuvor erwähnt, abgefragt werden. Wenn beide Dienste fehlerfrei durchlaufen, kann man sich nun der Konfiguration der zuvor erwähnten App in der Nextcloud widmen.

Konfiguration

Nachdem beide Dienste korrekt arbeiten, installiert man die App Antivirus for files (Antivirus für Dateien). Unter Verwaltung -> Sicherheit wählt man folgende Einstellungen. Im Feld „Wenn infizierte Dateien während eines Hintergrund-Scans gefunden werden“ kann zwischen „Nur loggen“ oder „Datei löschen“ gewählt werden, wie mit einer infizierten Datei umgegangen werden soll.

Nextcloud Einstellungen Verwaltung Antivirus for files
Einstellungen – Antivirus for files

Das Abspeichern der Einstellungen sollte mit einem grünen „Gespeichert“ protokolliert werden. Wer das Ganze testen möchte, kann sich hierzu (Vorsicht: auf eigene Gefahr) einen Testvirus von eicar.org herunterladen und diesen in die Nextcloud hochladen.

Auf Windows-Systemen ist äußerste Vorsicht geboten, da man hier schnell vom eigenen Virenscanner in Quarantäne gesetzt wird. Diesen Test sollten nur Experten durchführen!

Nextcloud Auto Logout

16. November 2023 um 16:57

Heute möchte ich über ein sinnvolles und relativ schnell nachzurüstendes Feature zur Nextcloud berichten. Der zeitliche Aufwand beträgt nur wenige Minuten, ist aber zum Schutz der eigenen Daten eine gut investierte Zeit.

Ab und zu kam es vor, dass ich mich aus meiner Cloud nicht richtig abgemeldet, sondern nur den Browser geschlossen hatte. Beim nächsten Aufruf meiner Nextcloud stellte ich fest, dass ich plötzlich im Datenbereich bin, ohne mich vorher eingeloggt zu haben.

Mein Gedanke: Was würde passieren, wenn ein Unberechtigter so Zugriff auf alle in einer Cloud abgelegten Daten bekommt? Nicht auszudenken, der Schaden wäre wohl immens.

Damit dies nicht vorkommt, ist es sinnvoll ein Auto Logout einzurichten. Hierzu öffnet man als Erstes die config.php der Nextcloud

sudo nano /var/www/html/nextcloud/config/config.php

und trägt die folgenden Werte am Ende ein.

'remember_login_cookie_lifetime' => 1296000,
'session_lifetime' => 3600,
'session_keepalive' => false,
'auto_logout' => true,

Eine Session wird auf 30 Minuten sowie die Lebensdauer des Login-Cookies auf 15 Tage begrenzt. Diese Werte können natürlich den eigenen Wünschen und Gegebenheiten angepasst werden.

Dabei gilt zu beachten, dass die session.gc_maxlifetime in der php.ini >= der eingestellten session_lifetime sein muss. Dazu öffne ich die php.ini von PHP 8.1 FPM

sudo nano /etc/php/8.1/fpm/php.ini

und setze den Wert auf 3600.

session.gc_maxlifetime = 3600

Nun muss PHP bzw. der Webserver neu gestartet werden, um die Änderungen wirksam umzusetzen.

sudo service php8.1-fpm restart

Ein geschlossener Browser führt nun, wie gewünscht, zu einem Auto Logout.

Was ist ein eigentlich ein Raspberry Pi?

17. August 2023 um 16:56

Der Raspberry Pi ist ein kleiner und günstiger Computer, der viele spannende Möglichkeiten bietet, um zu lernen, zu basteln und zu programmieren. In diesem Artikel werde ich einige grundlegende Informationen über den Raspberry Pi geben, wie er entstanden ist, was er kann und wie du ihn nutzen kannst.

Der Raspberry Pi wurde von der Raspberry Pi Foundation entwickelt, einer gemeinnützigen Organisation aus Großbritannien, die sich zum Ziel gesetzt hat, die digitale Bildung weltweit zu fördern. Die Idee für den Raspberry Pi kam von Eben Upton, einem Informatiker und Dozenten an der Universität Cambridge, der feststellte, dass die Zahl der Studienanfänger in seinem Fach stark zurückgegangen war. Er vermutete, dass dies daran lag, dass die Schüler die Lust am Experimentieren mit Computern verloren hatten. Er wollte daher einen einfachen und billigen Computer schaffen, der die Neugier und Kreativität der jungen Generation wieder wecken sollte.

Der erste Raspberry Pi wurde im Jahr 2012 veröffentlicht und kostete nur 35 US-Dollar. Er bestand aus einer einzigen Platine mit einem Broadcom-Chip, der eine ARM-CPU, eine GPU, einen RAM-Speicher und verschiedene Anschlüsse hatte. Der Raspberry Pi hat kein Gehäuse, kein Netzteil, keine Tastatur, keine Maus und keinen Bildschirm. Diese Teile müssen separat gekauft werden. Der Raspberry Pi kann über den verbauten SD-Karten-Slot oder einen USB-Stick gestartet werden, auf dem ein Betriebssystem wie das Raspberry Pi OS installiert ist.

Der Raspberry Pi war ein großer Erfolg und wurde schnell von Hobbyisten, Lehrern, Schülern und sogar professionellen Entwicklern auf der ganzen Welt angenommen. Er wurde und wird für viele verschiedene Zwecke eingesetzt, wie zum Beispiel für Spiele, Musik, Kunst, Robotik, Wetterstationen, Heimautomation und vieles mehr. Die Raspberry Pi Foundation veröffentlicht regelmäßig neue Modelle und Versionen des Raspberry Pi, die leistungsfähiger sind als die vorherigen. Bis heute wurden mehr als 40 Millionen Raspberry Pi verkauft.

Der Raspberry Pi ist nicht nur ein Computer zum Spielen und Lernen, sondern auch eine Plattform zum Erstellen und Erfinden. Mit dem Raspberry Pi kannst du deine eigenen Projekte verwirklichen, indem du ihn mit Sensoren, Motoren, LEDs, Kameras oder anderen Geräten verbindest und ihn mit einer Programmiersprache wie Python steuerst. Du kannst auch die vielen Online-Ressourcen nutzen, die dir die Raspberry Pi Foundation oder die Raspberry Pi Community zur Verfügung stellen. Dort findest du Anleitungen, Beispiele, Tipps und Inspirationen für deine eigenen Ideen.

Spannende Projekte lassen sich so, dank der GPIO-Schnittstelle, problemlos umsetzen. GPIO steht für General Purpose Input Output und bezeichnet programmierbare Ein- und Ausgänge, die du für unterschiedliche Zwecke nutzen kannst. Der Raspberry Pi hat eine Reihe von GPIO-Pins entlang der oberen Kante der Platine. Diese Pins dienen als Schnittstelle zu anderen Systemen, Schaltungen oder Bauteilen, um diese über den Raspberry Pi zu steuern oder Daten auszutauschen.

GPIO-Schnittstelle Raspberry Pi 1

Mit den GPIO-Pins kannst du zum Beispiel LEDs, Taster, Sensoren, Motoren oder Displays anschließen und programmieren. Du kannst verschiedene Programmiersprachen wie Python, C oder Scratch verwenden, um mit den GPIO-Pins zu interagieren.

Es gibt viele spannende Projekte, die du mit dem Raspberry Pi verwirklichen kannst. Der Raspberry Pi ist ein kleiner und günstiger Computer, der sich für viele verschiedene Zwecke eignet. Hier sind einige Beispiele für Projekte, die du mit dem Raspberry Pi umsetzen kannst:

  • Webserver: Du kannst den Raspberry Pi als Webserver nutzen, um deine eigene Website zu hosten oder Daten zu speichern.
  • Videokonferenz-Station: Du kannst den Raspberry Pi mit einem Monitor, einer Kamera und einem Mikrofon ausstatten, um eine Videokonferenz-Station für Zoom, Skype und Co. zu erstellen.
  • Luftqualitätsmonitor: Du kannst den Raspberry Pi mit einem Sensor verbinden, um die Luftqualität in deiner Umgebung zu messen und anzuzeigen.
  • 3D-Drucker: Du kannst den Raspberry Pi mit einem 3D-Drucker verbinden, um ihn fernzusteuern, zu überwachen und zu optimieren.
  • Retro-Spielekonsole: Du kannst den Raspberry Pi mit einem Gehäuse, einem Controller und einer Software ausstatten, um eine Retro-Spielekonsole zu bauen, die viele klassische Spiele emulieren kann.
  • Smart Home: Du kannst den Raspberry Pi mit verschiedenen Sensoren, Aktoren und Geräten verbinden, um dein Zuhause smarter zu machen. Zum Beispiel kannst du Lichter, Heizung, Sicherheit oder Musik steuern.

Memory Caching mit Redis für Nextcloud 27

14. Juli 2023 um 16:00

Wer bisher meinen Anleitungen zur Installation der Nextcloud auf dem Raspberry Pi gefolgt ist, setzt im Moment das Raspberry Pi OS (64-bit) basierend auf Debian 11 mit dem Webserver Apache 2 und PHP 8.1 aus einer Fremdquelle ein. Nach dem Upgrade auf Nextcloud Version 27 erscheint neben dem Hinweis, die Datenbank mit fehlenden Inidizes zu fixen, folgende Fehlermeldung in den Sicherheits- & Einrichtungswarnungen:

Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern, richte bitte, sofern verfügbar, Memcache ein. Weitere Informationen findest du in der Dokumentation ↗.

Sicherheits- & Einrichtungswarnungen

Bisher bin ich allein mit APCu als Memcache recht gut gefahren. Nun möchte jedoch die Nextcloud in Version 27 einen funktionellen Redis-Server aufgesetzt bekommen.

Da ich, wie oben erwähnt, im Moment PHP 8.1 verwende, muss ich neben Redis auch das entsprechende Paket für diese PHP-Version herunterladen und installieren.

sudo apt install redis-server php8.1-redis

Ist dies geschehen, wird die /etc/redis/redis.conf konfiguriert.

sudo nano /etc/redis/redis.conf

Hierbei sind die entsprechenden Einträge zu suchen, auszukommentieren und anzupassen. Mit Ctrl + o wird die Konfiguration gespeichert mit Ctrl + x der Editor wieder verlassen.

unixsocket /var/run/redis/redis.sock
unixsocketperm 770

Nun kann der Redis-Server gestartet werden.

sudo service redis start

Jetzt wird noch redis der Gruppe www-data hinzugefügt.

sudo usermod -aG redis www-data

Damit das alles funktioniert, muss Redis in die Konfiguration der Nextcloud eingetragen werden.

sudo nano /var/www/html/nextcloud/config/config.php

In meinem Fall wird dann folgender Block unter die Zeile ‚memcache.local‘ => ‚\\OC\\Memcache\\APCu‘, gesetzt:

'filelocking.enabled' => true,
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
     'timeout' => 0.0,
      ),

Nach dem Abspeichern via Ctrl + o und dem Verlassen des Editors mit Ctrl + x wird der FastCGI-Prozessmanager PHP-FPM neu gestartet.

sudo service php8.1-fpm restart

Nun sollte die Fehlermeldung verschwunden sein.

Viel Spaß!

Die richtige IP im Netzwerk finden

03. April 2023 um 16:00

Serveranwendungen sind oft Thema in meinen Vorträgen und Workshops. I.d.R werden diese Anwendungen für den Zugriff aus dem Internet aufgebaut und konfiguriert. Steht die Hardware später an einem anderen Ort, wird diese dann über eine DynDNS-Adresse angesprochen.

Da die erwähnte Software oft keine großen Anforderungen an die Hardware stellt, auf der diese installiert wird, arbeite ich gern mit Mini-PCs oder Einplatinencomputern, wie dem Raspberry Pi.

Auf diese Geräte wird zuerst das Betriebssystem installiert. Geschieht das jedoch in einem fremden Netzwerk, so ist die lokale IP-Adresse dieses Rechners meist unbekannt. Den Zugriff auf den Router verweigert der Admin und an den Server ist i.d.R. auch kein Monitor angeschlossen.

Wie man aber trotzdem die IP-Adresse der im Netzwerk befindlichen Geräte identifizieren kann, beschreibt dieser Beitrag.

arp-scan verrät IP der WordPress-Installation

Ich nutze in solchen Fällen das Netzwerk-Scanning-Tool arp-scan.

Installation

arp-scan ist eine reine CLI-Anwendung (Command Line Interface). Diese kann unter Ubuntu oder Debian recht leicht über das Terminal installiert werden.

sudo apt install arp-scan

Anwendung

Das Netzwerk wird mit dem Befehl

sudo arp-scan -l

gescannt. Die im Netzwerk für arp-scan sichtbaren Geräte werden im Anschluss (siehe Grafik) aufgelistet.

Dieses kleine Tool erleichtert mir die Arbeit ungemein, wenn ich z.B. in einem fremden lokalen Netzwerk etwas über das Content Management System WordPress oder Nextcloud zeigen möchte.

Mumble auf dem Raspberry Pi

24. März 2023 um 18:53

In den Zeiten der Pandemie hatte fast jeder den Drang danach, Kontakte weiter aufrecht zu erhalten und zu pflegen. Die meisten traf das Kontaktverbot völlig unvorbereitet. Das man Videokonferenzen abhalten konnte, war bekannt, aber wer nutzte so etwas schon im Alltag. Viele von uns suchten plötzlich nach Möglichkeiten sich irgendwo online zu treffen. Große Softwarekonzerne ermöglichten einem plötzlich diese Funktionen kostenlos zu nutzen, mit dem Hintergrund spätere Kunden zu gewinnen. Zwar war die Nutzung dieser Dienste kostenlos, jedoch nicht umsonst. Nutzer bezahlten für diese Art der Nothilfe mit ihren Daten.

Da ich schon lange zuvor Open-Source-Lösungen dieser Art wie Nextcloud Talk nutzte, brauchte ich nur die Leute mit denen ich mich nicht treffen konnte, dort hin einzuladen. Für kleine Gesprächsrunden eignete sich meine Nextcloud durchaus. Für eine größere Anzahl von Nutzern war dies jedoch problematisch. Deshalb suchte ich nach einer anderen Lösung.

Perfekt für reine Audio-Treffen war Mumble, welches die ganze Pandemie-Zeit auf einem meiner Server lief. Die Nutzung meines Mumble-Servers verhielt sich aber umgekehrt proportional zur Aufhebung der Kontaktbeschränkung. Reale Treffen waren wieder möglich und man traf sich weniger online. Da ich aber die Technik doch hin und wieder nutzen möchte, habe ich den Versuch gewagt, einen Mumble-Server auf einem Raspberry Pi aufzusetzen. Wie das ganze geht, zeige ich in diesem Artikel.

Installation

Als Server dient ein Raspberry Pi 4 mit 4 GB RAM. Auf diesem wurde ein Raspberry Pi OS mit 64-Bit installiert. Der Mumble-Server wird wie folgt aufgesetzt:

sudo apt install mumble-server

Während der Installation wird abgefragt, ob der Server automatisch starten soll. Diese Frage beantwortet man mit „Ja“. Danach wird abgefragt, ob der Mumble-Server mit einer höheren Priorität zu nutzen ist. Diese Frage habe ich in meinem speziellen Fall mit „Nein“ beantwortet. Danach vergibt man noch ein SuperUser-Passwort und widmet sich dann der erweiterten Konfiguration.

Konfiguration

In der Konfigurationsdatei können nun gewünschte Anpassungen vorgenommen werden, wie z.B. Begrüßungstext, Port etc. Hier habe ich aber nur ein Passwort für die Nutzung meines Server vergeben, um die Kontrolle über den Server zu behalten. Weiterhin kann hier die maximale Anzahl der Besucher festgelegt werden.

sudo nano /etc/mumble-server.ini

Damit der Server jedoch aus dem Internet erreichbar ist, muss der Raspberry Pi mit einer DynDNS verbunden sein. Hier ein Beispiel für den Hoster all-inkl.com. Weiterhin muss der Port im heimischen Router freigegeben werden. Ich nutze den voreingestellten Standard-Port „64738“. Für das Forwarding muss TCP und UDP aktiviert werden.

Portforwarding – 64738

Sind diese Voraussetzungen erfüllt, kann der Mumble-Server gestartet werden.

sudo service mumble-server start

Client

Als Client auf dem PC und Notebook verwende ich Mumble.

Besuch bei den Chemnitzer Linux-Tagen 2023

11. März 2023 um 20:25

Am 11. und 12 März 2023 finden nach dreijähriger Zwangspause endlich wieder die Chemnitzer Linux-Tage an der TU Chemnitz statt. Unter dem Motto „Bewusst sein“ treffen sich zahlreiche Aussteller, Vortragende und Besucher zum Thema Linux und freie Software auf dem Uni-Campus.

TU Chemnitz
Chemnitzer Linux-Tage
Halbleiter von Chemnitz

Ich freute mich riesig dieses Event nach 2019 wieder besuchen zu können, um interessante Leute zu treffen und Gedanken auszutauschen. Am ersten Tag verabredete ich mich mit meinem Mitstreiter Andi alias Waldstepper aus Berlin, um gemeinsam einige Vorträge zu besuchen.

Das Highlight war einmal mehr der lebendige Beitrag „Nachhaltiges Computing mit KNOPPIX“ von Prof. Dipl.-Ing. Klaus Knopper. Überlegungen zu CO2-Fußabdrücken des von Knopper entwickelten Betriebssystems sowie Einblicke in das Innenleben dieser Live-Distribution stießen auf reges Interesse.

Vortrag Nachhaltiges Computing mit KNOPPIX

Natürlich konnte ich noch weiteren interessanten Vorträgen lauschen, wie VPN via WireGuard, Programmierung mit Scratch und Ausführungen zur komplexen Thematik Linux-Desktop, wo darüber philosophiert wurde, warum sich das OS bis heute noch nicht im Desktopbereich durchsetzen konnte und was nötig wäre, um ein solches Projekt zu realisieren. Hier gab es natürlich interessante und praxisnahe Ansätze, die zum Nachdenken anregten.

Einige gute Gespräche konnte ich auch an den Ständen von den Ubuntuusers, der FSFE, TUXEDO, Linuxnews, LibreOffice und den CMS Gardeners führen.

Besuch bei den Ubuntuusers
FSFE-Stand

Alles in allem war es heute ein interessanter und informativer Tag an der TU, der morgen seine Fortsetzung findet.

Internetgeschwindigkeit mit dem Raspberry Pi messen

08. März 2023 um 19:15

Über mein Smartphone führe ich hin und wieder einen Speedtest durch, um die Geschwindigkeit meines Internetanschlusses zu ermitteln. Wie das Ganze aber via Terminal unter Linux auf dem Raspberr Pi geht, erkläre ich im folgenden kurzen Artikel.

Speedtest via command-line interface

Ein Test über den RasPi macht bei mir zu Hause Sinn, da dieser fest über ein LAN-Kabel mit dem Router verbunden ist. Derartige Messungen über eine Direktverbindung sind genauer als Messungen über WiFi. Drahlose Prüfungen mit einem mobilen Endgerät wie Smartphone oder Tablet sind hingegen immer verlustbehaftet.

Die Internetgeschwindigkeit lässt sich mit einem Raspberry Pi relativ einfach über die Konsole ermitteln. Große Programmpakete werden hierfür nicht benötigt.

Installation

Zuerst wird das Paket speedtest-cli installiert.

sudo apt install speedtest-cli

Speedtest durchführen

Wenn das Package eingespielt ist, reicht die Eingabe des folgenden Befehls:

speedtest-cli

Hierbei wird der Test über den nächsten Server ausgeführt. Ist man mit dem Resultat nicht zufrieden, kann ein anderer Server angesteuert werden. Dazu lässt man sich die 10 nächsten Standorte anzeigen.

speedtest-cli --list

Retrieving speedtest.net configuration...
53128) WOBCOM GmbH (Wolfsburg, Germany) [132.61 km]
49459) FNOH-DSL (Uetze, Germany) [163.37 km]
47786) WebseitenDesigner.com (Hannover, Germany) [183.20 km]
45664) WEMACOM Telekommunikation GmbH (Schwerin, Germany) [242.14 km]
 8827) Marco Bungalski GmbH (Verden, Germany) [246.12 km]
45822) WEMACOM Telekommunikation GmbH (Hamburg, Germany) [266.29 km]
53256) LWLcom GmbH (Hamburg, Germany) [267.38 km]
 5733) LWLcom GmbH (Bremen, Germany) [279.95 km]
16596) Bremen Briteline GmbH (Bremen, Germany) [279.95 km]
 4556) TNG Stadtnetz GmbH (Kiel, Germany) [339.23 km]

Der Test über einen anderen Server wird dann mit dem Befehl

speedtest-cli --server 49459

angestoßen. In diesem Fall habe ich mich für den Server FNOH-DSL (Uetze, Germany) entschieden.

Grafische Ausgabe

Möchte man noch eine grafische Ausgabe des Ergebnis, setzt man einfach den entsprechenden Schalter (share) und bekommt am Ende der Ausgabe den Link zum Ergebnis (PNG-Datei).

speedtest-cli --share

Speedtest über OOKLA

Docker und Docker-Compose auf dem RaspberryPi

03. März 2023 um 16:00

Heute möchte ich zeigen, wie man Docker und Docker-Compose auf dem RaspberryPi installiert, um WordPress als Testumgebung im heimischen Netzwerk zu betreiben. Docker-Container haben durchaus einen gewissen Reiz, wenn man nicht allzu intensiv in die Auswahl und Konfiguration von Server-Anwendungen eintauchen möchte. Man muss jedoch ein gewisses Vertrauen gegenüber des Maintainers mitbringen.

Eine gute Basis, um Docker auf einem Raspberry Pi laufen zu lassen, bietet das Raspberry Pi OS Lite (64-bit). Dieses ist schnell mit dem Raspberry Pi Imager auf die MicroSD geflasht.

Installation Docker und Docker-Compose

Nach dem ersten Start des Betriebssystems führt man nun ein komplettes Upgrade durch. Dies sollte man tun, um alle Pakete auf dem neuesten Stand zu bringen, damit es keine Probleme während der Installation gibt und alle Anwendungen richtig miteinander arbeiten.

sudo apt update && sudo apt upgrade

Raspberry Pi 4

Nach dem Upgrade installiert man Docker.

curl -fsSL test.docker.com -o get-docker.sh && sh get-docker.sh

Nun muss der aktuelle User der Gruppe Docker hinzugefügt werden, i.d.R. ist das der User pi. In meinem Fall ist es der Benutzer intux.

sudo usermod -aG docker ${USER}

Ein erster Test checkt, ob dies funktioniert.

groups ${USER}

Nun wird der Raspberry Pi neu gebootet, damit die Installation und die Konfiguration umgesetzt werden kann.

sudo reboot now

Im nächsten Schritt wird Python 3 mit den entsprechenden Abhängigkeiten eingespielt.

sudo apt install libffi-dev libssl-dev python3-dev python3 python3-pip

Jetzt kann Docker-Compose aufgesetzt werden.

sudo pip3 install docker-compose

Der Dienst Docker wird aktiviert

sudo systemctl enable docker

und mit dem Image hello-world kann getestet werden, ob Docker läuft.

docker run hello-world

Installation WordPress

Nun erstellt man das Verzeichnis wordpress

mkdir wordpress

und wechselt dort hinein.

cd wordpress

Mit dem Editor Nano wird nun eine docker-compose.yml erstellt

nano docker-compose.yml

und mit folgendem Inhalt befüllt.

version: '3.6'

services:
  wordpress:
    image: wordpress:5.7.2
    ports:
      - 80:80
    environment:
      - "WORDPRESS_DB_USER=root"
      - "WORDPRESS_DB_PASSWORD=vFvpKjJ7HUbkD3wyLDp4"
    restart: always
    dns: 8.8.8.8
    volumes: 
      - /srv/wordpress:/var/www/html

  mysql:
    image: jsurf/rpi-mariadb
    volumes:
    - /srv/wordpress-mysql:/var/lib/mysql
    environment:
    - "MYSQL_ROOT_PASSWORD=vFvpKjJ7HUbkD3wyLDp4"
    - "MYSQL_DATABASE=wordpress"
    restart: always

  phpmyadmin:
    image: phpmyadmin:apache
    environment:
     - PMA_ARBITRARY=1
    restart: always
    ports:
     - 9999:80
    volumes:
     - /sessions

Zum Schluss wird das Image geladen und die Container gestartet.

docker-compose up -d

Die fertige WordPress-Installation ist nun über die IP (http://IP-Adresse) des Raspberry Pi erreichbar. Die Einrichtung von WordPress erfolgt über das Webinterface.

Viel Spaß beim Nachbauen!

PHP7.4-fpm auf PHP8.1-fpm für Nextcloud

08. Januar 2023 um 17:00

Einige Leser haben eine Nextcloud nach meinen Anleitungen und Vorgaben auf einem Raspberry Pi installiert, um ihre Daten nicht in fremde Hände zu geben, sondern diese in den eigenen vier Wänden zwischenzuspeichern. Seit Ende November verhangenen Jahres besteht hier jedoch ein Sicherheitsrisiko, da PHP 7.4 nicht mehr mit Sicherheits-Updates versorgt wird. Im Artikel „PHP 8.2 auf Raspberry Pi OS“ hatte ich bereits darauf hingewiesen.

Quelle: https://www.php.net/supported-versions.php

Da sich PHP 8.2 nicht mit der aktuellen Version Nextcloud 25 verträgt, möchte ich heute zeigen, wie man PHP7.4-fpm mit PHP8.1-fpm ersetzen kann. Dabei gehe ich auch noch auf die spezifische Konfiguration der Nextcloud auf dem Raspberry Pi ein.

Installation

Zuerst wird der Key für die neu einzubindende Paketquelle heruntergeladen.

sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Danach wird diese in das System eingebunden.

sudo echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Es erfolgt ein Upgrade.

sudo apt update && sudo apt upgrade -y

Ein erster Check zeigt die neue PHP-Version.

php -v

Hier wird im Moment noch PHP 8.2 ausgegeben. Um jedoch auf PHP 8.1 downzugraden, lädt man die entsprechenden Pakete nach.

sudo apt install php8.1 php8.1-mbstring php8.1-gd php8.1-curl php8.1-imagick php8.1-intl php8.1-bcmath php8.1-gmp php8.1-mysql php8.1-zip php8.1-xml php8.1-apcu libapache2-mod-php8.1

Mit folgendem Befehl muss nun die Version 8.1 manuell als aktuelle Version gesetzt werden.

sudo update-alternatives --config php

in meinem Fall ist das die Option 3.

php -v

Ein erneuter Check zeigt die gesetzte PHP-Version.

Nun wird PHP7.4-fpm deaktiviert, PHP8.1-fpm heruntergeladen und aktiviert.

sudo a2disconf php7.4-fpm
sudo apt install php8.1-fpm
sudo a2enconf php8.1-fpm

Ein nachfolgender Restart des Webservers führt die Änderungen abschließend aus.

sudo service apache2 restart

Nextcloud-Konfiguration

Jetzt muss die Nextcloud noch an die neue PHP-Version angepasst werden, um alle internen Checks zu bestehen. Dazu öffnet man die neue php.ini

sudo nano /etc/php/8.1/fpm/php.ini

setzt das memory_limit hoch auf 512MB

memory_limit = 512M

und fügt folgende Einträge am Ende für den Zwischenspeicher OPchache ein.

opcache.enable=1
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Zur Optimierung von PHP8.1-fpm werden speziell für das Modell Raspberry Pi 4 mit 4GB RAM in der Datei www.conf mit

sudo nano /etc/php/8.1/fpm/pool.d/www.conf

folgende Einträge angepasst.

pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

Ein Restart des Dienstes aktiviert diese anschließend.

sudo service php8.1-fpm restart

Jetzt wird in der apcu.ini

sudo nano /etc/php/8.1/mods-available/apcu.ini

noch am Ende diese Zeile eingetragen

apc.enable_cli=1

und abschließend der Webserver ein letztes Mal neu gestartet.

sudo service apache2 restart

Fazit

Mit ein wenig zeitlichem Aufwand lässt sich die eigene Cloud seitens der Skriptsprache wieder absichern. Auf das neue Release von Raspberry Pi OS zu warten, welches wieder eine mit Sicherheitspatches unterstützte PHP-Version mitbringt, wäre nicht ratsam.

PHP 8.2 auf Raspberry Pi OS

28. Dezember 2022 um 14:23

Wer einen Raspberry Pi zu Hause als Webserver betreibt, wird sicher schon bemerkt haben, dass die Skriptsprache PHP 7.4 nur noch bis zum 28.11.2022 mit Security-Updates versorgt wurde. Das heißt konkret, PHP 7.4 ist End of Live (EOL). Das ist natürlich unschön, da die nächste Version des Raspberry Pi OS der Raspberry Pi Foundation auf Basis von Debian GNU/Linux 12 wahrscheinlich erst im Sommer 2023 veröffentlicht wird.

Quelle: https://www.php.net/supported-versions.php

Was kann man nun tun?

Eine Möglichkeit wäre zu warten und zu hoffen, dass Sicherheitslücken, die sich noch auftun, nicht auf dem Home-Server für Einbrüche sorgen. Eine andere und weitaus sicherere Alternative ist, das Raspberry Pi OS mit der aktuellen PHP-Version 8.2 zu versorgen.

Es folgt eine kleine Anleitung.

Installation

Zuerst lädt man den Key für die neu einzubindende Paketquelle herunter.

sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Danach wird diese ins System eingetragen.

sudo echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Nun liest man die neue Quelle ein und führt das Upgrade durch.

sudo apt update && sudo apt upgrade -y

Ein abschließender Check zeigt die neue PHP-Version im Terminal.

php -v

Viel Spaß!

Nachtrag für Nextcloud-User

Nextcloud 25 ist leider noch nicht kompatibel mit PHP 8.2. Dies ist aber ab Version 26 vorgesehen.

Chemnitzer Linux-Tage 2023

05. Dezember 2022 um 15:30

Unter dem Motto „Bewusst sein“ finden am 11. und 12. März 2023 endlich wieder die Chemnitzer Linux-Tage statt. Nach zwei Jahren als Online-Veranstaltung ist die Freude riesengroß, die CLT wieder im Hörsaalgebäude der Technischen Universität Chemnitz abhalten zu können.

Auch 2023 haben sich die Chemnitzer Linux-Tage einen Platz an einem März-Wochenende gesucht. Also Kalender gezückt und den 11. und 12. März 2023 dick einkreisen! Es lohnt sich bestimmt.

Wir wünschen uns sehr, euch vor Ort wiederzusehen und hoffen, dass die Lage im März es zulässt, dass wir Linux- und Open-Source-Freunde Anfang 2023 nach Chemnitz einladen können. Aktuell planen wir für eine Präsenzveranstaltung iN gewohnter Umgebung. Über unsere Pressemitteilungen, Sozialen-Median und Themenseite könnt ihr euch diesbezüglich auf dem Laufenden halten.

ddclient für ALL-INKL.COM konfigurieren

25. November 2022 um 19:00

Mit dem Umzug meiner Webseite und meiner Domains zum Hoster all-inkl.com war es nötig die DynDNS meines Home-Servers anzupassen. Auf diesem nutze ich zum Abgleich, der sich ständig ändernden öffentlichen IP-Adressen, das Tool ddclient. Die neue Konfiguration muss in der Datei /etc/ddclient.conf entsprechend gespeichert werden.

Das für all-inkl.com angelegte Konfigurationsfile für ddclient sieht hierfür wie folgt aus:

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
daemon=5m
protocol=dyndns2
use=web, web=checkip.dyndns.org/
server=dyndns.kasserver.com/
login=dyn0000000, password='passwort'
dyndns.example.de
ssl=no

In dieser Config sind die beim Hoster hinterlegten DynDNS-Daten (Login, Passwort, Host Name) zu ersetzen.

Standort in Flightradar festlegen

28. Januar 2022 um 16:58

Vor einiger Zeit hatte ich schon einmal einen Artikel zum Thema Luftraumüberwachung mit Flightradar24  geschrieben. An der eigentlichen Vorgehensweise der Installation und der einzusetzenden Hardware hat sich nichts gravierend geändert.

Der Befehl zur Installation des entsprechenden Pakets setzt jetzt allerdings SSL voraus.

sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"

Ich habe mich allerdings inzwischen für einen stärkeren Empfänger der Firma Nooelec mit RTL2832U/R820T2-Chip entschieden, was ein wenig mehr Reichweite bringt.

Standort sichtbar machen

Heute möchte ich zeigen, wie man auf der lokalen Karte den Standort der Station als Punkt markiert und Radien im Abstand von 50 NM um die Station einzeichnet (siehe Screenshot).

lokale Darstellung der empfangenen Flugzeuge

Hierfür ist es nötig die Konfigurationsdatei /etc/dump1090-mutability/config.js entsprechend anzupassen. Dazu werden die Einträge wie folgt geändert:

alte Konfiguration

// -- Map settings ----------------------------------------
...
// Default center of the map.
DefaultCenterLat = 45.0;
DefaultCenterLon = 9.0;
...
SiteShow = false; // true to show a center marker
SiteLat = 45.0; // position of the marker
SiteLon = 9.0;
SiteName = "My Radar Site"; // tooltip of the marker
...
// -- Marker settings -------------------------------------
...
SiteCircles = true; // true to show circles (only shown if the center marker is shown)
// In nautical miles or km (depending settings value 'Metric')
SiteCirclesDistances = new Array(100,150,200);
...

Unter DefaultCenterLat und DefaultCenterLon trägt man nun die Koordinaten der Empfangsstation ein, um die Karte bei Aufruf auf den entsprechenden Standort zu zentrieren. Die gleiche Vorgehensweise erfolgt unter SiteShow. Hierbei muss die Vorgabe jedoch noch von false auf true geändert werden. Die Radien legt man unter SiteCircles fest. In meinem Fall 50, 100 und 150 NM.

neue Konfiguration

// -- Map settings ----------------------------------------
...
// Default center of the map.
DefaultCenterLat = 51.44871;
DefaultCenterLon = 11.98762;
...
SiteShow = true; // true to show a center marker
SiteLat = 51.44871; // position of the marker
SiteLon = 11.98762;
SiteName = "My Radar Site"; // tooltip of the marker
...
// -- Marker settings -------------------------------------
...
SiteCircles = true; // true to show circles (only shown if the center marker is shown)
// In nautical miles or km (depending settings value 'Metric')
SiteCirclesDistances = new Array(50,100,150);
...

Viel Spaß!

NextcloudPi angesehen

04. Januar 2022 um 17:18

Wie schön wäre es doch, seine Daten sicher zu Hause aufzubewahren, sie immer und überall verfügbar zu haben und diese nicht an zweifelhafte Cloud-Dienstleister auszulagern. Geht das? Na klar, mit der Nextcloud!

Hierzu benötigt man nicht viel. Ein Raspberry Pi mit Internetanschluss und etwas Interesse sich mit dieser interessanten Materie zu beschäftigen reicht völlig aus. Ich bevorzuge generell die klassische Installation der Cloud-Software auf einem LAMP-Server.

Einen etwas einfacheren Weg zur eigenen Cloud geht OWN YOUR BITS. Die Entwickler stellen komplette Images zur Verfügung, um die Cloud ohne Linux-Erfahrung in den eigenen vier Wänden zu realisieren.

Installation

Ich habe mir nun einmal NextcloudPi für den Raspberry Pi etwas genauer angesehen. Das Image hierzu ist 4,3GB groß und kann direkt von der Webseite kostenlos heruntergeladen und eingesetzt werden. Dabei muss man natürlich aufpassen, dass das richtige Download-Paket ausgewählt wird. Ist dies geschehen, wird das Image entpackt und z.B. mit dem Raspberry Pi Imager auf eine mindestens 16GB-große MicroSD geschrieben.

Der erste Kontakt

Nachdem die MicroSD in den Raspberry Pi eingelegt und dieser gestartet wurde (ohne Bildschirm, Tastatur und Maus), erreicht man NextcloudPi über die lokale Adresse https://nextcloudpi.local im heimischen Netzwerk. Voraussetzung ist jedoch der vorherige Anschluss des Einplatinencomputers über LAN-Kabel an den Router.

Wenn alles funktioniert, wird man nach dem Booten von folgendem Bildschirm begrüßt. 

NextcloudPi – Erstkontakt

Hier bekommt man Benutzernamen und Passwörter für das NextcloudPi Webinterface sowie die Nextcloud. Nach der Aktivierung gelangt man nun in den NextcloudPi-Maschinenraum. Dazu wird das erste Passwort benötigt, welches später auch geändert werden kann. Weiter geht es mit einem Installations-Wizard, welcher dabei hilft die Cloud mit einer Festplatte oder SSD über USB zu erweitern. Außerdem hat man nun die Möglichkeit das System über einen DynDNS-Anbieter von außen über das Internet erreichbar zu machen.

NextcloudPi – Installations-Wizard

Im Webinterface lassen sich serverseitig einige Einstellungen erledigen, ohne jedoch wirklich selbst Serverkenntnisse besitzen zu müssen. Das birgt allerdings die Gefahr, dass das System ungewollt beschädigt werden kann, was mir tatsächlich einige Male gelungen ist. Um nun in solch einer Situation zur Reparatur selbst Hand anzulegen, muss an den Raspberry Pi ein Monitor und eine Tastatur angeschlossen werden, damit auf den eigentlichen Server zugegriffen werden kann. Dies geht nun direkt auf dem Raspberry Pi oder nach SSH-Aktivierung von einem anderen Computer. Im letzteren Fall kann der RasPi wieder von den zuvor angeschlossenen Peripheriegeräten getrennt werden. Ohne ein wenig Linux-Erfahrung ist man aber hier aufgeschmissen.

Die Nextcloud

Die Nextcloud erreicht man nach erfolgreicher Beendung der Installationsroutine über https://nextcloudpi oder die vom Router für den Raspberry Pi vergebene IP-Adresse. In meinem Fall: https://192.168.178.32. Falls die DynDNS-Adresse zu diesem Zeitpunk schon eingerichtet und in die config.php über das Webinterface aufgenommen wurde, wäre die Nextcloud-Instanz auch über die vergebene Web-Adresse erreichbar, vorausgesetzt die Ports 80 und 443 sind am Router auf Port Forwarding gesetzt.  Das Login erfolgt nun über das am Anfang vergebene zweite Passwort. Begrüßt wird der neue Nutzer nun erstmalig von der eigenen Cloud-Instanz. Ratsam wäre es hier, einen neuen Benutzer als Administrator anzulegen und den User ncp später zu löschen.

Nextcloud - Login

Auch in der Nextcloud sind Änderungen am System mit äußerster Vorsicht vorzunehmen! Die Erstellung eines Backups ist aus meiner Sicht vorher ebenfalls unverzichtbar. So wurde ich z.B. nach einem App-Upgrade komplett ausgesperrt, da die Cloud dauerhaft im Wartungsmodus verharrte.

Auch anzumerken ist, dass die verwendete Nextcloud-Version nicht up to date ist, wie auch das auf Debian basierende Raspberry Pi OS. Das ist aber nicht weiter schlimm, da diese Versionen eine Langzeitunterstützung seitens der Entwickler erfahren. Die aktuelle Nextcloud-Version ist die 23. Auf NextcloudPi läuft Version 21 und Raspberry Pi OS 10, aktuell v11.

Nextcloud – Fehlermeldungen

Wie man oben im Bild sehen kann, kommt es noch zu diversen Fehlermeldungen, die ebenfalls ohne Serverkenntnisse nicht beseitigt werden können. Es müssen Pakete nachinstalliert werden, bzw. sind Eingriffe in die Konfigurationsdatei der Nextcloud-Instanz notwendig.

Fazit

NextcloudPi ist mit Sicherheit ein interessantes Projekt, welches es dem User erlaubt, schnell eine eigene Nextcloud-Instanz auf dem Einplatinencomputer Raspberry Pi einzurichten und in Betrieb zu nehmen. Die Erreichbarkeit aus dem Internet wird bei Bedarf über eine DynDNS-Adresse realisiert. Wer nicht die neueste Version der Nextcloud einsetzen muss und bereit zu Abstrichen ist, für den ist das System durchaus empfehlenswert.

Meinen Zugang zur Cloud konnte ich problemlos via 2FA mit einem YubiKey absichern.

Leider fehlt ein Turn-Server im System, welcher es quasi unmöglich macht Videokonferenzen via nachinstallierter App Talk zu führen. Ein Turn-Server kann aber im Nachhinein auf dem Raspberry Pi noch nachinstalliert werden. Auch hierzu sind Linux-Kenntnisse von Vorteil.

SWAP des Raspberry Pi vergrößern

03. November 2021 um 17:39

Neulich hatte ich Bedarf den SWAP eines Raspberry Pi, auf dem ein Raspberry Pi OS läuft, zu erweitern, da dieser ständig überlief. Hier sind per Standard 100MB eingerichtet. Diesen Wert galt es nun auf 1000MB anzuheben.

Diese Änderung kann ganz einfach wie folgt umgesetzt werden. Dazu ruft man mit dem Editor Nano die Datei  /etc/dphys-swapfile auf

sudo nano /etc/dphys-swapfile

sucht den entsprechenden Eintrag und ändert den Wert, wie im Beispiel auf 1000.

CONF_SWAPSIZE=1000

Nach dem Abspeichern via Ctrl + o, dem Verlassen des Editors mit Ctrl + x und einem anschließenden Reboot, steht die neue Größe des SWAP-Speichers zur Verfügung.

sudo reboot

❌
❌