Seit vielen Jahren bin ich zufriedener Linux Mint Nutzer. Immer wieder stoße ich auf Software die als Snap-Paket angeboten wird und die dich gerne nutzen möchte. Das ist unter Mint allerdings standardmäßig nicht möglich, denn die Installation dieser Pakete wird von Mint aktiv verhindert. Das Mint entschieden hat, dass sie Snaps doof finden, nicht unterstützen [...]
Andreas hat einen Nextcloud-Server auf Debian-Basis installiert und dabei seine Vorgehensweise dokumentiert. Diese basiert zum großen Teil, aber nicht ausschließlich auf meinem Homeserver-Tutorial zu Ubuntu 18.04 [Homeserver/NAS mit Ubuntu 18.04: Teil 1, Einleitung, Hardware und Kosten]. Jedoch mit einigen Abweichungen, da sich Debian und Ubuntu doch in einigen Details unterscheiden. Die Dokumentation seiner Vorgehensweise hat [...]
Mittlerweile ist Ubuntu 20.04 erschienen. Hierbei handelt es sich wieder um eine LTS-Version (long term support), die 5 Jahre mit Updates versorgt wird. Also bis April 2025. Damit wird Ubuntu 18.04 abgelöst, auf welchem die bisherige Homeserver-Anleitung basiert. Ubuntu 18.04 war ebenfalls eine LTS-Version und wird noch bis April 2023 mit Sicherheitsupdates versorgt. Wer also [...]
Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS Zuerst wird das Betriebssystem Ubuntu Server 20.04 (Focal Fossa) installiert. Mit dieser Version wurde ein neues Installationsprogramm eingeführt, sodass sich die Installation von den Vorgängerversionen unterscheidet. Das Kapitel zur Partitionierung der Festplatten unterteilt sich in zwei Teile. Je nachdem ob man ein System mit internen [...]
Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS In den beiden vorherigen Teilen wurde die Hardware eingerichtet und das Betriebssystem installiert. Bevor es nun an das Installieren und Einrichten der eigentlichen Dienste geht, sollten noch ein paar Grundeinstellungen vorgenommen werden. Außerdem gilt es ein paar grundlegende Dinge bei der Administration zu beachten. Gleichbleibende [...]
Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS Das Betriebssystem wurde in den letzten Teilen installiert und die wichtigsten Grundkonfigurationen vorgenommen. Nun können die ersten Dienste auf dem Homeserver installiert werden. In diesem Teil werden die Ordnerfreigaben für das lokale Heimnetz erstellt. Die Software, die hierfür verwendet wird, ist SAMBA-Server. Damit können über [...]
Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS Nextcloud hat sich mittlerweile zum Quasi-Standard für selbstgehostete Cloudanwendungen entwickelt. Nextcloud kann uneingeschränkt kostenlos genutzt werden. In Nextcloud können Kalender und Kontakte gespeichert und mit dem Smartphone synchronisiert werden. So kann man Dienste wie Google Calender komplett ersetzen. Außerdem gibt es einen Deskop-Client, mit welchem [...]
Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS Zur Organisation und Wiedergabe von Musik und Videos wird Plex verwendet. Plex besteht aus zwei Komponenten, dem Server und den Clients. Die Serverkomponente wird auf dem Homeserver installiert. Hier werden alle Audio- und Videodateien zentral verwaltet und der Mediaserver organisiert. Die Clients sind die Wiedergabegeräte. [...]
Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS Im letzten Kapitel geht es um die Datensicherung. Der Homeserver dient als zentrale Ablage für eine Vielzahl wichtiger Dateien. Eventuell sogar von mehreren Personen. Ein Verlust der Daten wäre daher verheerend. Das RAID-System schützt zwar vor dem Verlust der Daten durch einen Hardwaredefekt an einer [...]
Standardmäßig werden USB-Sticks und andere externe Datenträger unter Linux Mint automatisch eingehängt und in einem neuen Fenster im Dateimanager geöffnet.
Da ich gerade wieder häufig mit dem Raspberry Pi herumspiele, kommt es vor, dass ich häufig dessen SD-Karte am Laptop einstecke. Dabei werden jedes mal zwei neue Dateimanagerfenster geöffnet. Einmal für die Bootpartition und einmal für die Betriebssystempartition auf der SD-Karte. Da ich normalerweise jedoch über das Terminal auf die SD-Karte zugreifen möchte, schließe ich die Fenster immer direkt nachdem sie geöffnet wurden.
In den Systemeinstellungen von Linux Mint habe ich keine Option gefunden um dieses Verhalten zu ändern. Also habe ich in der Vergangenheit das Verhalten des Betriebssystems eben akzeptiert. Immerhin handelt es sich doch nur um ein Luxusproblem.
Heute hat mich dieses Verhalten jedoch so genervt, dass ich mich auf die Suche nach einer Lösung gemacht habe. Und -Taaadaaa- nach Jahren der Nutzung habe ich die Einstellungen des Dateimanagers Nemo entdeckt.
Für den Fall dass ich nicht der einzige bin, der vor lauter Bäumen den Wald nicht sieht, schreibe ich diesen Beitrag.
Automatisches Mounten und Öffnen von externen Datenträgern unter Linux Mint deaktivieren.
Die entsprechende Option findet man nicht in den Systemeinstellungen, sondern in den Einstellungen des Dateimanagers Nemo. In einem geöffneten Fenster klickt man auf Bearbeiten > Einstellungen. Hier wäht man in der linken Menüleiste den Punkt “Verhalten” und scrollt nach unten zu “Handhabung von Datenträgern“.
Hier findet man die beiden gesuchten Optionen “Automatisch entfernbare Medien, beim Einfügen und beim Systemstart, einhängen” sowie “Für automatisch eingehängte Geräte, automatisch einen neuen Ordner öffnen“.
Wenn man bei beiden Optionen den Haken entfernt, werden externe Datenträger zukünftig zwar noch in der Seitenleiste von Nemo angezeigt, jedoch nicht mehr eingehängt und nicht mehr geöffnet.
Normalerweise werden PHP-Skripte zur Laufzeit kompiliert. Das heißt, wenn jemand eine PHP-Seite wie WordPress aufruft, wird der PHP-Quelltext (die PHP-Datei) gelesen und vom PHP-Interpreter in sogenannten Bytecode (vorkompilierter Code) umgewandelt. Dieser Bytecode wird an eine virtuelle Maschine (die Zend Engine) übergeben, die daraus maschinenlesbaren Code erzeugt. Die Zend Engine stellt dabei eine einheitliche Laufzeitumgebung für verschiedene CPU-Architekturen und Betriebssysteme bereit.
Der Bytecode wird daraufhin verworfen und muss bei jedem Aufruf der Webseite neu generiert werden. Dies kostet Rechenzeit und verzögert den Aufruf der Webseite.
Durch die Nutzung von OPCache wird der Bytecode für die spätere Verwendung zwischengespeichert, so dass er nicht bei jedem Aufruf der Webseite neu erzeugt werden muss. Dies kann die Ladezeit von WordPress (oder anderen PHP-Projekten) spürbar beschleunigen.
Der Preis dafür ist, dass zum Zwischenspeichern des vorkompilierten Bytecodes RAM und/oder Festplattenspeicher benötigt wird. Außerdem werden (abhängig von der OPcache Knfiguration) Änderungen am PHP-Code unter Umständen nicht sofort sichtbar, da sich noch eine alte Version im Cache befindet.
OPcache aktivieren und konfigurieren
Um OPCache auf einem Ubuntu-Server zu nutzen, muss das Paket php7.2-opcache installiert werden. Anschließend kann der Cache über die php.ini aktiviert werden. Die php.ini befindet sich bei Ubuntu und der Verwendung von PHP als Apache-Modul unter /etc/php/7.2/apache2/php.ini. Bei Verwendung von PHP-FPM, beispielsweise mit NGINX, findet man die Konfigurationsdatei unter /etc/php/7.2/fpm/php.ini
In der php.ini scrollt man bis zum Abschnitt [opcache].
Um OPcache zu aktivieren muss die Zeile
;opcache.enable=0
abgeändert werden in
opcache.enable=1
Außerdem können und sollten weitere Einstellungen vorgenommen werden. In untenstehender Tabelle sind einige Option beschrieben, die ich für die wichtigsten halte.
Option
Bedeutung
opcache.memory_consumption=256
Die Menge an Speicherplatz die OPcache zur Verfügung steht, in Megabytes.
opcache.interned_strings_buffer=16
Speicherplatz der für string interning zur Verfügung steht, ebenfalls in Megabytes.
opcache.max_accelerated_files=16229
Die maximale Anzahl an Schlüsseln (und damit PHP-Skripte) die gespeichert werden können. Der Wert sollte größer als die Anzahl vorhandener Skripte sein. Der tatsächlich verwendete Wert wird aus einem festen Set aus Primzahlen gewählt (223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987). Es wird die Primzahl verwendet, die größer oder gleich dem gesetzten Wert ist. Gibt man beispielsweise als Wert 10000 an, werden tatsächlich 16229 Schlüssel gecached. Man kann also auch direkt eine der angegebenen Primzahlen als Wert setzen.
opcache.max_wasted_percentage=10
Prozentsatz an verschwendetem Speicherplatz, der akzeptiert wird, becor der Cache komplett geleert wird. “Waste” entsteht, wenn sich der Code ändert, während OPcache läuft. Der alte Cache-Eintrag wird dabei als “waste” markiert.
opcache.validate_timestamps=1
Legt fest, ob OPcache in regelmäßigen Abständen prüfen soll, ob sich der PHP-Code in einer Datei geändert hat. Wenn dies deaktiviert ist, muss nach jeder Änderung am Code (z.B. ein WordPress Update) ein Reset von OPcache durchgeführt werden, oder OPcache neu gestartet werden. Wer WordPress-Updates automatisch einspielen lässt, sollte die Option aktivieren. Wer die manuell macht, kann die Option deaktivieren und zusätzlich Rechenzeit sparen.
opcache.revalidate_freq=300
Zeit in Sekunden, nach der überprüft wird ob sich der PHP-Code in einen Skript keändert hat. “0” bedeutet, dass die Prüfung bei jedem Aufruf vorgenommen wird.
opcache.file_cache=/path/to/cache
OPcache kann Daten im Ram und/oder auf einem Datenträger speichern. Damit kann OPcache z.B. auch in Shared-Hosting Umgebungen genutzt werden. Auf dem eigenen Server hat die Nutzung dieser Option den Vorteil, dass bereits erzeugte Daten nach einem Neustart des Servers nicht verloren gehen. Das Verzeichnis muss vom PHP-Prozess beschrieben werden können.
opcache.file_cache_only=0
Legt fest ob OPcache seine Daten nur auf dem Datenträger speichert (1) oder ob Daten im RAM und zusätzlich auf dem Datenträger gespeichert werden (0)
Wenn der Server von mehreren Benutzern verwendet wird, sind evtl. die Optionen opcache.validate_permission und opcache.validate_root von Bedeutung, die standardmäßig deaktiviert sind. Erstere prüft, ob der User überhaupt Leseberechtigung für das entsprechende Skript hat. Dies verhindert, dass zwischengespeicherte Daten an andere Benutzer geleaked werden. Zweitere verhindert Namenskollisionen bei verschiedenen chroot Umgebungen.
Damit Änderungen wirksam werden, muss Apache, bzw. PHP-FPM neu gestartet werden. Dabei wird außerdem der Cache geleert.
Überprüfen ob OPcache genutzt wird
Eine schöne Möglichkeit zum Steuern von OPcache und zum prüfen, ob OPcache überhaupt genutzt wird ist das Tool opcache-gui das auf Github zu finden ist. Es handelt sich dabei um ein PHP-Skript, das den verwendeten Speicherplatz, die Anzahl der zwischengespeicherten Skripte uvm. anzeigt. Da sich außerdem verschiedene Funktionen von OPcache steuern lassen, sollte man den Zugriff auf das Skript mit einem Passwort sichern.
Um opcache-gui zu nutzen, muss lediglich das PHP-File in den eigenen Webverzeichnis kopiert werden und über den Webbrowser aufgerufen werden.
Wer opcache-gui dauerhaft einsetzen will, der sollte den Zugang unbedingt mit einem Passwortschutz versehen.
Systemd wird häufig kritisiert, weil es größer und komplexer als bisherige Init-Systeme ist. Dafür bringt Systemd aber auch eine ganze Reihe an Tools zur Fehlerbehebung und Systemanalyse mit.
Eines davon ist systemd-analyze, mit dem sich der Bootvorgang des Systems darstellen und analysieren lässt. Die Ausgabe kann dabei textbasiert auf der Kommandozeile erfolgen, oder auch als svg-Grafik exportiert werden.
Bootvorgang mit systemd-analyze untersuchen
Ein simpler Aufruf von
systemd-analyze
zeigt eine Übersicht, welche Systembestandteile wie lange zum booten benötigen. Damit erhält man folgende Ausgabe.
Sofern das Betriebssystem auf einem Computer mit UEFI installiert ist, bekommt man auch die Startzeit des UEFI (firmware) präsentiert. Anschließend wird die Startzeit des Bootloaders ausgegeben (loader). Dass diese bei mir mit knapp 32 Sekunden angegeben ist, liegt (denke ich) an der Wartezeit im Grub Auswahlbildschirm. Anschließend werden die Startzeiten der systemnahen Komponenten (kernel) und der Benutzerumgebung (userland) angegeben.
Eine genauere Ausgabe erhält man mit dem Befehl
systemd-analyze blame
Damit erhält man eine Auflistung aller beim booten gestarteten Dienste, sortiert nach ihrer Startzeit. Damit lassen sich Dienste, die das starten verzögern schnell identifizieren.
Außerdem lässt sich die Ausgabe auch als SVG-Grafik exportieren. Damit erhält man noch detailliertere Ergebnisse. der Export erfolgt mit
systemd-analyze plot > boot.svg
Allerdings ist die exportierte Grafik ziemlich groß, so dass man viel scrollen muss um diese zu analysieren. Horizontal wird dabei die Startzeit in Sekunden angegeben. Vertikal werden die einzelnen Dienste aufgelistet.
Die Ausgaben von systemd-analyze sind nicht nur interessant, sondern ermöglichen auch, auf den ersten Blick zu erkennen, warum der Bootvorgang so lange dauert. Dienste, die den Bootvorgang verlangsamen lassen sich damit direkt identifizieren, wo ansonsten möglicherweise eine langwierige Fehlersuche oder Analyse notwendig wäre.
Der SoC des Raspberry Pi kann bei starker Nutzung sehr heiß werden. Wenn man ihn mit dem Finger berührt kann die Temperatur des Chips doch unangenehm hoch werden.
Ich wollte daher wissen wie hoch die Temperatur des Chips tatsächlich ist und habe nach einer einfachen Möglichkeit gesucht die Temperatur auszulesen.
Erfreulicherweise bringt Raspbian bereits ein Tool mit, mit welchem man die Temperatur und viele weitere Daten des Systems auslesen kann. Das Tool hört auf den Namen vcgencmd. Unter https://github.com/nezticle/RaspberryPi-BuildRoot/wiki/VideoCore-Tools findet man unter der Überschrift “vcgencmd Commands “eine schöne Übersicht über die Möglichkeiten die das Tool bietet.
Die Temperatur lässt sich mit folgendem Befehl auslesen.
Auf meinem Desktop habe ich sowohl Linux, als auch Windows installiert. Zwar ist Linux seit vielen Jahren mein Hauptsystem, beim zocken führt für mich aber leider nach wie vor kein Weg an Windows vorbei.
Da ich Windows fast ausschließlich zum spielen verwende und somit keine Daten zwischen der Linux- und der Windowsinstallation austauschen muss, stört es mich dass die Windowspartitionen im Dateimanager unter Linuxmint angezeigt werden. Zugegeben kein großes Problem, aber mich stört es. Abgesehen davon dass einem ständig vor Augen geführt wird dass auf dem Rechner auch eine Windowsinstallation existiert, erhöht es auch die Gefahr versehentlich Dateien auf der Windowspartition zu löschen, oder die Installation versehentlich zu zerstören.
Schön, dass mit einer udev-Regel der Kernel angewiesen werden kann bestimmte Partitionen zu ignorieren. Das schöne an dieser Lösung ist, dass sie Distributionsübergreifend und unabhängig vom verwendeten Dateimanager funktionierten sollte.
Zuerst muss unter /etc/udev/rules.d eine neue Datei mit der Endung .rules angelegt werden. Beispielsweise /etc/udev/rules.d/hiddendevices.rules
In meinem Fall soll /dev/sdf4 ausgeblendet, bzw. ignoriert werden. Dafür wird die soeben angelegte Datei mit folgendem Inhalt befüllt.
KERNEL=="sda4", ENV{UDISKS_IGNORE}="1"
Nach einem Neustart ist die Windowspartition auf dem Dateimanager verschwunden.