Normale Ansicht

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

Experiment: Homeserver/NAS im Eigenbau – Das eBook

Von: Niko
30. September 2018 um 09:00
eBook Beitragsbild

Meine Artikelreihen zum Bau eines eigenen Homeservers gehören zu den mit Abstand beliebtesten Artikeln auf diesem Blog. Allerdings gehören sie auch zu den Artikeln, für die ich mit Abstand am meisten Zeit investieren musste.

Zuerst hatte ich eine Übersicht aufgestellt, welche Anforderungen der Homeserver erfüllen soll. Dann wurde verschiedene Software getestet die ich für eine einsteigerfreundliche Tutorialreihe geeignet halte. Beispielsweise nutze ich für meine eigenen Server Borgbackup, Duplicity oder schlicht Rsync zum erstellen von Backups. Für diese Tutorialreihe habe ich mir mehrere Tools angeschaut und mich dann für Rsnapshots entschieden, da dieses einfach zu konfigurieren ist und Dateien einfach wiederhergestellt werden können, da diese als Kopien vorliegen und nicht in einem speziellen Format verpackt sind.

Nun liegt es mir fern mich zu beklagen. Ich betreibe diese Seite mit großer Begeisterung. Aber ich habe für diese Tutorialreihe doch einige Wochenenden vor dem Rechner verbracht und als alles fertig war war ich doch ziemlich erleichtert. Dass die Reihe dann so gut ankommt und schon viele positive Kommentare geschrieben wurden freut mich natürlich unglaublich.

Was mich ebenfalls sehr freut ist, dass regelmäßig Leute über die Partnerlinks im Artikel Hardware auf Amazon gekauft haben. Und auch wenn manche es verwerflich finden oder bestreiten würden, es ist ebenfalls sehr motivierend wenn ich am Wochenende sagen kann: “Dieses Bier wurde mir von techgrube.de ausgegeben”

Daher habe ich mich nun an ein Experiment gewagt. Ich habe die aktuelle Artikelreihe Homeserver/NAS mit Ubuntu 18.04 genommen, die Texte etwas überarbeitet, alles schön formatiert und um einige Kapitel ergänzt. Die zusätzlichen Kapitel beschäftigen sich vor allem damit was zu tun ist, wenn eine Festplatte ausfällt oder Daten verloren gehen. Daraus wurde ein eBook im PDF- und EPUB-Format was für einen geringen Betrag verkauft wird.

Es ist der Versuch zwei Fliegen mit einer Klappe zu schlagen. Einerseits mich zu motivieren, auch zukünftig Artikelreihen zu schreiben die sich nicht an einem Abend erstellen lassen, sondern viele Tage in Anspruch nehmen. Gleichzeitig sollen interessierte Leserinnen und Leser mit einem Kauf nicht nur dieses Projekt unterstützen (wie mit einer Spende), sondern auch einen Mehrwert zu den Artikeln hier im Blog erhalten.

Inspiriert haben mich hier verschiedene Podcastprojekte die grundsätzlich frei und kostenlos verfügbar sind. Wer das Projekt mit einer Spende oder Kauf unterstützt, bekommt Zugriff auf eine verlängerte Version mit Pre- und Postshow, oder den Livestream. Ein Modell das ich immer sehr fair fand und dementsprechend auch hoffe dass es für alle Seiten funktioniert.

Natürlich werden auch hier einzelne verärgert sein, ich hoffe jedoch dass das Experiment im großen und ganzen auf Interesse und Akzeptanz stößt und es mir zukünftig evtl. sogar ermöglicht meine Aktivitäten auf diesem und anderen Blogs zu verstärken.

Die Details zum eBook findet ihr auf Homeserver/NAS im Eigenbau – Das eBook.

Experiment: Homeserver/NAS im Eigenbau – Das eBook ist ein Beitrag von techgrube.de.

“Matrix”-Code im Terminal erzeugen mit CMatrix

Von: Niko
30. September 2018 um 09:04
CMatrix Beitragsbild

Auch wenn der Film “Matrix” mittlerweile fast 20 Jahre alt ist, ist es immer noch der Film der mich bis heute am meisten fasziniert hat. Dementsprechend gefreut habe ich mich, als ich neulich über das Programm cmatrix gestolpert bin.

Cmatrix erzeugt im Terminal den “Matrix”-Code der im Film häufig über die Bildschirme flimmert und den Code der virtuellen Realität der Matrix darstellt. Aufgrund der Komplexität des Codes, bzw. der Matrix können die Bildwandler des Schiffs den Code nicht in Bilder umwandeln, so dass dieser nur als laufender Buchstabensalat durch die Bildschirme läuft.

Aufgrund der immensen Bedeutung von CMatrix 🙂 befindet sich dieses in den Paketquellen von Ubuntu und lässt sich mit einem einfachen “sudo apt install cmatrix” installieren. Alternativ findet man das Projekt auch auf Github.

Mit dem Befehl cmatrix lässt sich das Programm starten, und muss mit Strg+c wieder beendet werden. Alternativ kann man CMatrix mit cmatrix -s im Screensaver-mode starten. Dann beendet sich das Programm von selbst beim Druck auf eine beliebige Taste.

Während das Programm läuft, lässt sich über die Ziffertasten 0-9 die Laufgeschwindigkeit des Codes verändern. Mit der Taste b werden zufällige Zeichen hell erleuchtet. Drückt man die Taste B (Shift+b) leuchten alle Zeichen. Mit n wird das Glühen der Zeichen wieder deaktiviert.

Auch die Färbung lässt sich ändern mit den Zeichen ! @ # $ % ^ & . Die Zeichen stehen dabei für folgende Farben: ! für rot, @ für Matrix-grün, # für gelb, $ für blau, % magenta, ^ cyan, & für weiß.

Wie kann man CMatrix nun sinnvoll einsetzen? Da kam mir spontan ein Youtube-Tutorial aus dem Jahre 2011 in den Sinn, und zwar How to be a Computer Hacker von protutorialsYT. In diesem Video wird in fünf Minuten erklärt, wie man zu einem Computer-Hacker wird. Natürlich inklusive Begründung. Schließlich haben alle Respekt vor Hackern und die Leute im Internet hören darauf was Hacker sagen.

Hätte der Macher dieses Tutorials cmatrix zur Verfügung gehabt, ich bin mir sicher er hätte es eingesetzt.

CMatrix


 

“Matrix”-Code im Terminal erzeugen mit CMatrix ist ein Beitrag von techgrube.de.

Windows Partitionen unter Linux ignorieren

Von: Niko
14. Oktober 2018 um 12:51
Linux Mint Partition ignorieren Beitragsbild

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.

Ignore Partition vorher/nachher


 

Windows Partitionen unter Linux ignorieren ist ein Beitrag von techgrube.de.

htop – laufende Prozesse und Systemressourcen im Blick

Von: Niko
12. November 2018 um 12:57
Htop Beitragsbild

Vor einiger Zeit habe ich mich im Artikel TOP – Ein Standardprogramm zum Anzeigen von Prozessen und Systemresourcen mit dem Ressourcenmonitor und Prozessmanager top auseinandergesetzt. Da top in der Regel standardmäßig vorinstalliert ist, schadet es nicht sich damit ein bisschen auseinander zu setzen.

Genau wie ich werden die meisten von euch wahrscheinlich eher htop einsetzen. Htop lässt sich mit seiner ncurses-Oberfläche konfortabler bedienen und ist außerdem grafisch ansprechender und übersichtlicher gestaltet. Ein guter Grund sich also auch mit htop etwas genauer zu beschäftigen.

Nach dem Aufruf zeigt einem htop eine Ansicht die standardmäßig etwa so aussieht.

Htop Übersicht

Der Aufbau ist dreigeteilt. Im oberen Bereich findet sich eine Übersicht über die Auslastung des Systems sowie einige Daten zur Anzahl der laufenden Prozesse, der Uptime und der Load average. Der mittlere Bereich besteht aus einer Liste mit Prozessen. Der untere Bereich eine Übersicht der Shortcuts, mit denen sich htop bedienen lässt.

Auf einem Desktopsystem mit Mausunterstützung lassen sich die einzelnen Menüpunkte auch mit der Maus aufrufen.

Bereich 1: Die Systemauslastung

Htop Bereich 1

1 – Die Auslastung der Prozessorkerne.

Hier wird die Anzahl der Prozessorkerne angezeigt. Bei einem Prozessor mit Hyperthreading verdoppelt sich die hier angezeigte Anzahl der Kerne gegenüber den physisch vorhandenen Kernen. Der Auslastungsbalken ist farbig unterteilt und hat folgende Bedeutung.

Htop Farben CPU Bar

  • Blau: Auslastung durch Prozesse mit niedriger Priorität
  • Grün: Auslastung durch Prozesse mit normaler Priorität
  • Rot: Auslastung durch den Kernel des Betriebssystems
  • Türkis: Auslastung durch Virtualisierung/Steal Time. Hierbei handelt es sich um Zeit, in der eine virtuelle CPU darauf wartet dass der Hypervisor ihr Zeit auf der richtigen CPU einräumt.

2 – Auslastung von RAM und Swap

Mem steht für den RAM des Systems. Die Farben haben hier folgende Bedeutung.

Htop Farben Memory

  • Used zeigt den von Programmen belegten Hauptspeicher an.
  • In buffers/cache werden Informationen vorgehalten die schon einmal vom System berechnet und verwendet wurden. Sollten die selben Informationen erneut benötigt werden müssen sie nicht neu berechnet werden sondern können aus dem Buffer gelesen werden. Wenn genug Speicher zur Verfügung steht dient dies der Beschleunigung des Systems. Wenn der Speicherplatz knapp wird kann der Buffer/Cache geleert werden und der Speicherplatz steht anderen Programmen zur Verfügung.

Swp zeigt die Auslastung des Auslagerungsspeichers an.

Htop Farben Swap Bar

Die Farbgebung ist hier einfach. Rot = belegt. Mehr gibt es nicht.

3 – Tasks

  • 46 (die erste Zahl) gibt die Anzahl der gestarteten Prozesse an.
  • 98 thr zeigt die Anzahl der Threads, also Ausführungsstränge, die zu den 46 Prozessen gehören.
  • 1 running ist die Anzahl der Prozesse die gerade Daten verarbeiten, oder in der Warteschlange stehen um Daten zu verarbeiten.

4 – Load Average

load average: 0,02, 0,05, 0,00 gibt die Load Average  für die letzte Minute, die letzten 5 Minuten und die letzten 15 Minuten an. Load Average gibt die durchschnittliche Systemlast an und darf nicht mit der Prozessorauslastung verwechselt werden. Sie kann eher mit einer Warteschlange für Aufgaben verglichen werden, die vom Prozessor abgearbeitet werden müssen. So kann evtl. die Prozessorauslastung sehr niedrig sein, die Load Average jedoch sehr hoch weil die Festplatte ausgelastet ist und nicht in der Lage ist die angeforderten Daten schnell genug zu liefern. Bei einer Load Average von null stehen alle Systemresourcen zur Verfügung. Steigt die Auslastung des Systems, dann steigt auch die Load Average an, wobei es nach oben keine Grenze gibt. Bis zu welchem Wert ein System zuverlässig arbeitet ist abhängig von den Systemresourcen, insbesondere davon wie stark die CPU ausgelastet ist und wie schnell die Festplatte die angeforderten Daten liefern kann.

5 – Uptime

Gibt an wie lange das System bereits läuft. In diesem Fall 9 Tage, 17 Stunden, 7 Minuten und 34 Sekunden.

Bereich 2 – Die Prozesse

Htop Bereich 2 die Prozesse

Der mittlere Bereich listet alle aktiven Prozesse auf und zeigt an welche Systemressourcen diese belegen. Standardmäßig ist die Liste nach CPU-Nutzung sortiert. Die Sortierung kann jedoch angepasst werden. Bei einem System mit Mausunterstützung kann man einfach auf den gewünschten Punkt in der grünen Leiste klicken. Also beispielsweise MEM% um nach Speicherverbrauch zu sortieren. Auf einem System ohne Maus kann die Sortierung über die Taste F6 erfolgen.

Die einzelnen Spalten geben folgende Informationen aus.

  • PID: Die Prozess-ID
  • USER: Der Name des Benutzers der den Prozess gestartet hat.
  • PRI: Die Prozesspriorität wie sie vom Kernel gesehen wird. Standardwert ist 20.
  • NI: Nice Wert zur Anpassung der Priorität durch den User. Der Nice Wert reicht von 19 (niedrige Priorität) bis -20 (hohe Priorität).
  • VIRT: Virtueller Speicher enthält allen Code, Daten und Shared-Libraries, Seiten (Speicher Blöcke) die ausgelagert wurden, sowie Seiten für die eine Nutzung geplant wurde, die derzeit aber noch nicht genutzt werden. VIRT ist somit sehr viel höher als der tatsächlich genutzte Arbeitsspeicher.
  • RES: (resident) Anteil der im physischen Speicher liegt, und nicht ausgelagert wurde. Auch hier kann es zu Überschneidungen kommen, wenn mehrere Programme die gleichen Bibliotheken verwenden. Somit kann auch die Summe von RES höher sein als der tatsächlich belegte Speicher.
  • SHR: (shared) gibt den Speicherplatz an der evtl mit anderen Programmen geteilt wird.
    Der tatsächlich von einem Prozess verwendete Hauptspeicher liegt also irgendwo zwischen RES und RES-SHR, abhängig davon wie viele Prozesse diese gemeinsam genutzten Bibliotheken nutzen.
  • S: Status des Prozesses. Es stehen folgende Status zur Verfügung: ‘D’ = uninterruptible sleep, ‘R’ = running, ‘S’ = sleeping, ‘T’ = traced or stopped, ‘Z’ = zombie.
  • CPU%: Prozentsatz der CPU-Zeit, die gerade von diesem Prozess verwendet wird.
  • MEM%: Prozentsatz des Hauptspeichers den der Prozess belegt. Basierend auf RES.
  • TIME+: Prozessorzeit die der Prozess seit seinem Start genutzt hat in Minuten:Sekunden.Hundertstel Sekunden.
  • Command: Der vollständige Befehl der ausgeführt wird.

Bereich 3 – Tastatur-Shortcuts

Der untere Bereich ist eine Hilfestellung zur Bedienung und Anpassung von htop.

Htop Bereich 3 Keyboard Shortcuts

  • F1 Hilfe: Mit einem Druck auf die F1-Taste öffnet sich eine kurze Hilfeseite von htop. Hier werden vor allem die verschiedenen Tastenkombinationen beschrieben, mit denen htop bedient werden kann.
  • F2 Setup: Htop lässt sich sehr umfangreich Anpassen. Die Anpassungen reichem von der Änderung des Farbschemas, bis hin zum kompletten Neuaufbau der einzelnen Bereiche. So kann beispielsweise im oberen Bereich anstatt der Auslastung der einzelnen CPU-Kerne eine Durchschnittsanzeige eingeblendet werden, oder es kann die aktuelle Uhrzeit oder der Hostname eingeblendet werden.Die Spalten im mittleren Bereich können komplett neu aufgebaut werden. So kann Beispielsweise die Lese- und Schreibrate auf die Datenträger eingeblendet werden. Außerdem lässt sich das Design der Anzeigen verändern.
    Htop AnpassungenHtop Anpassungen
  • F3 Search: Mit F3 kann htop nach Usernamen, Prozessnamen usw. durchsucht werden.
  • F4 Filter: Die Anzeige kann gefiltert werden, so das nicht relevante Prozesse ausgeblendet werden.
  • F5 Tree: Anstatt einer einzelnen Zeile pro Prozess wird ein Prozessbaum angezeigt. Hiermit wird dargestellt welche Prozesse aufeinander aufbauen.
    Htop Prozesstree
  • F6 Sort: Die Anzeige kann nach einzelnen Spalten sortiert werden. Beispielsweise nach CPU-Auslastung, Speicherplatzverbrauch oder I/O.
  • F7 Nice-: Der Nice-Wert kann verringert werden um dem Prozess eine höhere Priorität zu geben (nur Root darf die Prozesspriorität erhöhen)
  • F8 Nice+: Erhöht den Nice-Wert und verringert damit die Prozesspriorität. Dies darf von jedem Nutzer vorgenommen werden.
  • F9 Kill: Zeigt eine Liste mit Signalen die an den Prozess gesendet werden können. Standardmäßig ausgewählt ist SIGTERM zum ordentlichen Beenden von Prozessen.

Schluss

Wer auch nur gelegentlich mit der Kommandozeile von Linux arbeitet kommt früher oder später auch mit htop in Berührung. So ging es natürlich auch mir. Allerdings habe ich mich jahrelang nicht mit dem so häufig eingesetzten Programm befasst. Htop ist schnell aufgerufen und zeigt auf den ersten Blick mit seiner graphischen Darstellung die Systemauslastung an. Dafür habe ich htop genutzt, für mehr nicht.

Wie umfangreich sich htop anpassen lässt und dass sich damit auch Lese- und Schreibzugriffe auf die Datenträger darstellen lassen war mir nicht klar. Hierzu habe ich immer iotop genutzt. Das htop eine Suchfunktion hat war mir zwar bekannt, genutzt habe ich sie aber irgendwie nie. Erst beim schreiben dieses Beitrags habe ich auch mit der Suchfunktion gespielt und entdeckt, wie komfortabel sich htop wirklich bedienen lässt.

Höchst wahrscheinlich werde ich htop in Zukunft noch häufiger einsetzen als bisher.

htop – laufende Prozesse und Systemressourcen im Blick ist ein Beitrag von techgrube.de.

Raspberry Pi Temperatur des Prozessors auslesen

Von: Niko
08. Dezember 2018 um 13:10
Raspberry Pi Temeratur auslesen Beitragsbild

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.

vcgencmd measure_temp

Raspberry Pi Temperatur auslesen


 

Raspberry Pi Temperatur des Prozessors auslesen ist ein Beitrag von techgrube.de.

Bevölkerungsverteilung interaktiv visualisiert

Von: Niko
26. Dezember 2018 um 12:56
Human Terrain Project Beitragsbild

Mich fasziniert es immer wenn es Menschen gelingt, komplexe Sachverhalte und schwer fassbare Zahlen und Statistiken so zu visualisieren, dass diese nicht nur anschaulich, sondern sogar interessant werden. Ein Projekt aus dieser Kategorie ist das Human Terrain Project von The Pudding. The Pudding beschäftigen sich unter anderem mit Datenjournalismus und versuchen kulturelle Themen in “visuelle Essays” umzusetzen.

Das Human Terrain Project visualisiert die Bevölkerungsverteilung auf dem Globus anhand von 3D-Pyramiden auf einer interaktiven Karte.

Die verwendeten Daten kommen aus dem Global Humen Settlement Projekt, welches von der EU-Kommisson unterstützt wird und sich auf Zahlen aus Volkszählungen, Satellitenbilder und andere Quellen stützt.

Die Karte wird nicht nur statisch dargestellt, es lassen sich auch die aktuellen werte (aus 2015) mit dem Stand von 1990 vergleichen. Hierbei wird im linken Browserbereich der Stand aus 1990 dargestellt, den aktuelle Stand der Weltbevölkerung sieht man im rechten Bereich. Außerdem lassen sich Veränderungen zwischen 1990 und 2015 darstellen, indem Wachstum als grüne Pyramide dargestellt wird, Bevölkerungsschwund als rote Pyramide.

Sehr schön ist auch die Funktion, an verschiedene Stellen der Welt zu “fliegen”. Hierbei zoomt die Karte heraus und bewegt sich langsam zum gewünschten Ziel. Dabei “fliegt” man sozusagen über die mit Bevölkerungspyramiden gespickte Welt und kommt dabei an stacheligen Großstädten vorbei, sowie menschenleeren Wüsten.

Wenn man weit in die Karte hineinzoomt stößt man hin und wieder auf seltsame Bevölkerungsspitzen, die den Anschein erwecken, dass an diesem kleinen Punkt mehr Menschen leben als in einer Großstadt. Leider ist nicht ersichtlich auf welchen Daten eine Pyramide genau basiert. Mir kommt es allerdings so vor, als würde die Darstellung ungenauer, je weiter man in die Karte hineinzoomt. Das macht das Projekt allerdings nicht weniger spannend oder gar uninteressant.

So lässt sich beispielsweise sehr schön erkennen, wie sich das Leben in Frankreich sehr stark auf wenige Großstädte, natürlich insbesondere Paris konzentriert. In Deutschland ist die Bevölkerung dagegen stärker in der Fläche verteilt.

Wen solche Dinge ebenfalls interessieren, der wird mit dem Human Terrain Project einiges an Zeit verbringen können.

Human Terrain Project Deutschland Frankreich


 

Bevölkerungsverteilung interaktiv visualisiert ist ein Beitrag von techgrube.de.

Windows 2000 im Browser ausführen

Von: Niko
12. Januar 2019 um 18:31
Windows 2000 VM im Browser Beitragsbild

Dieser Beitrag hat weder mit Linux, noch mit Open Source zu tun. Da mich eine heute gemachte Entdeckung im Internet aber gleichermaßen fasziniert und Spaß gemacht hat, schreibe ich trotzdem einen kurzen Blogbeitrag.

Es geht um das Ausführen von Windows 2000 im Browser. Entwickler Fabrice Bellard hat einen PC-Emulator in Javascript geschrieben und gleich einige VMs erstellt, die man auf seinem Blog direkt im Browser starten kann. Unter anderem findet sich Windows 2000 darunter.

Windows 2000 gehört zu den weniger erfolgreichen Windowsversionen. Es war auch die letzte, auf dem NT-Kernel basierende Windows, das sich primär an Businesskunden richtete. Der Nachfolger WindowsXP hatte Unternehmen und Privatanwender gleichermaßen als Zielgruppe. Für Privatanwender wie mich war damals Windows 98 angesagt. Da Computerspiele zur damaligen Zeit für die Consumerversionen von Windows entwickelt wurden, führte als Computerspieler damals kein Weg an Windows 98 vorbei. Trotzdem schaute ich immer wieder neidische auf Benutzer der NT-Kernel basierten Windowsversionen. Diese liefen extrem viel stabiler als Windows 98 und seine Vorgänger.

Aus diesem Grund habe ich immer wieder mit Windows NT 4.0 und Windows 2000 experimentiert. Daher fand ich es besonders spannend oben genannte Windows 2000 VM im Browser zu testen. Natürlich ist das System nicht besonders schnell, für eine Runde Minesweeper, oder das Klicken durch Menüs und Einstellungen reicht es allemal. Über diverse Parameter in der URL lassen sich Parameter wie RAM oder Bildschirmauflösung anpassen. Informationen hierzu findet man in der FAQ.

Wer Lust hat ein bisschen in Erinnerungen zu schwelgen, ohne sich zuerst eine richtige VM einzurichten, der hat mit Bellards Windows 2000 im Browser sicher auch seine Freude.

Windows 2000 VM im Browser

Windows 2000 im Browser ausführen ist ein Beitrag von techgrube.de.

Publii: Static CMS mit grafischer Benutzeroberfläche

Von: Niko
19. Januar 2019 um 12:53
Publii Beitragsbild

Static Site Generators haben in letzter Zeit stark an Popularität gewonnen. Aus gutem Grund, denn statische Webseiten bieten eine Menge Vorteile gegenüber dynamisch generierten Websites. Statische Seiten sind schnell, erzeugen kaum Last auf dem Server und bieten eine wesentlich geringere Angriffsfläche als PHP-Projekte wie WordPress.

Durch die Verwendung von Static Site Generatoren wird die Erstellung und Wartung statischer Webseiten einfach und komfortabel, ohne dass man sich mit dem HTML-Code der Seite direkt auseinandersetzen muss. Der größte Vorteil der Generatoren ist jedoch, dass man Änderungen an der kompletten Seite vornehmen kann, ohne dutzende HTML-Dateien einzeln zu bearbeiten. Das übernimmt der Generator für einen.

Üblicherweise werden dafür Projekte wie Hugo oder Jekyll verwendet. Diese haben eines gemeinsam, sie werden komplett auf der Kommandozeile bedient und die Formatierung der Texte wird die Auszeichnungssprache Markdown realisiert.

Das mag für technikaffine Menschen sinn- und reizvoll sein. Wenn man aber eine Lösung für weniger technikinteressierte Menschen sucht, scheiden diese Generatoren aus. Hier bietet sich ein Generator mir grafischer Benutzeroberfläche eher an.

Ein solches Projekt ist Publii. Publii bezeichnet sich als Static CMS und bietet im Gegensatz zu den Static Site Generatoren eine grafische Benutzeroberfläche. Das Programm ist Open Source, der Code liegt auf Github. Fertige Builds gibt es für Windows, MacOS und als .Appimage, .rpm und .deb Pakete für Linux. Diese findet man direkt auf der Projektseite getpublii.com.

Publii Backend

Wofür eignet sich Publii?

Natürlich haben statische Webseiten auch Nachteile. Da der Content nicht live generiert wird, lässt sich beispielsweise kein Shop realisieren. Aber auch eine Kommentarfunktion bieten statische Seiten nicht. Hier muss man sich mit Drittanbietern behelfen und deren Dienste einbinden. Wenn man den Dienst Disqus verwenden möchte, bietet Publii eine Schnittstelle über welche sich Disqus-Kommentare in den Blogbeitrag einbinden lassen. Möchte man aus Datenschutzgründen einen anderen, evtl. selbstgehosteten Dienst nutzen, so muss man selber Hand am Theme anlegen.

Derzeit stehen für Publii acht Themes zur Verfügung. Die Aufmachung der Webseite lässt darauf schließen, dass zukünfig auch kostenpflichtige Themes angeboten werden sollen. Im Gegensatz zu aufwendigen WordPress Themes ist die Gestaltung der Seiten recht eingeschränkt. So sind alle Themes mehr oder weniger auf das darstellen von Blogbeiträgen spezialisiert. Auf der Startseite werden die einzelnen Beiträge nach Veröffentlichungsdatum mit Anreissertext dargestellt.

Es lässt sich zwar verhinder dass bestimmte Artikel auf der Startseite aufgeführt werden, ein Magazinartiges darstellen von bestimmten, nach Kategorien sortierten Beiträgen auf der Startseite ist jedoch nicht möglich.

Aus meiner Sicht eignet sich Publii also besonders zum Erstellen von Blogs, eben mit Einschränkungen bei der Kommentarfunktion, oder Portfolioseiten. Für Magazine oder eine Wissensdatenbank wie ein Wiki ist es (zumindest bisher) weniger geeignet.

Publii: Oberfläche und Funktionen

Der Aufbau der Benutzeroberfläche erinnert ein wenig an das Backend von WordPress. So findet man auf der linken Seite eine Menüleiste, über welche sich neue Posts erstellen, das Theme anpassen oder Einstellungen verändern kann. Außerdem lassen sich verschiedene Autoren anlegen, Tags vergeben und Menüs anlegen.

Wer schon mit WordPress gearbeitet hat, der wird sich im Backend von Publii schnell zurecht finden.

Viele Funktionen die man bei WordPress über Plugins realisieren muss, bringt Publii bereits von Haus aus mit. Fehlt hingegen eine Funktion, so wird es mit dem Nachrüsten natürlich schwierig. Beispielsweise bringt Publii bereits eine Funktion mit um die lästigen Cookie-Bars einzublenden. Obwohl sich natürlich gerade eine statische Seite dazu anbietet ohne Cookies eingesetzt zu werden.

Außerdem werden auf Wunsch AMP-Seiten unterstützt, der HTML- und CSS-Code kann komprimiert (also ohne Kommentare, Formatierung usw.) erzeugt werden. Die angebotenen Themes erzeugen alle responsive Webseiten, so dass die Seite sowohl für Desktop-, als auch für Mobilgeräte geeignet sind.

Über den Reiter “Tools” lassen sich Backups der Webseite erstellen. Außerdem kann eigener HTML- und CSS-Code in die Seite eingefügt werden, ohne dass man die Theme-Dateien direkt bearbeiten muss.

Außerdem gibt es ein experimentelles Tool um Beiträge aus WordPress zu importieren.

Über die Vorschaufunktion lässt sich die Seite rendern und im lokalen Webbrowser darstellen, ohne dass die Änderungen direkt veröffentlicht werden.

Hat man eine Webseite erstellt, kann Publii die HTML-Dateien entweder auf der lokalen Festplatte erzeugen, oder diese direkt auf den eigenen Server oder Webspace laden.

Publii edit Post

Themes binden Google Fonts ein

Mit statischen Seiten lassen sich besonders einfach datenschutzfreundliche Webseiten erstellen. Ohne Kommentarfeld, Kontaktformular, Benutzerlogin usw. werden praktisch keine personenbezogenen Daten verarbeitet.

Daher ist es schade, dass über die Themes Schriftarten von Google Fonts eingebunden werden und damit zumindest die IP-Adresse des Benutzers an Google übermittelt wird. Um dies zu verhindern muss man selbst tätig werden, indem man das Theme anpasst.

Geladen werden die Google Fonts über einen Eintrag in der Header-Datei des Themes. Diese befindet sich unter ~/Dokumente/Publii/themes/THEMENAME/partials/head.hbs

Letzendlich handelt es sich um Textdateien, die man mit einem beliebigen Editor ändern kann. Hier entfernt man die Zeilen

 <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
 
 <link href="https://fonts.googleapis.com/css?family= PT+Serif:400,700|Muli:400,600" rel="stylesheet"> 

Publii bringt standardmäßig acht Themes mit, die bereits im oben genannten Installationsverzeichnis vorliegen. In den Einstellungen der Webseite kann man verschiedene Themes für die gerade bearbeitete Webseite “installieren”. Damit wird das Theme aus oben genanntem Ordner für diese Webseite geladen. Die Anpassung muss daher vor der “Installation” erfolgen.

Damit werden keine Google Fonts mehr geladen, der Browser fällt auf die Standardschriftarten zurück. Möchte man die bisher von Google geladenen Schriftarten vom eigenen Server ausliefern lassen, so hilft einem der google webfonts helper. Damit lassen sich die benötigten Dateien zusammen stellen und der CSS-Code zum laden der Schriftarten erzeugen. Diesen kann man im Backend von Publii über Tools > Custom CSS laden.

Fazit

Ich habe schon länger ein Tool wie Publii gesucht und freue mich endlich etwas gefunden zu haben. Mit Publii lässt sich extrem schnell eine schöne, responsive, schnelle und wartungsarme Webseite erstellen.

Zwar bin ich durchaus ein großer Freund von WordPress, für viele Projekte ist es aber absoluter overkill und verursacht viel Wartungsaufwand. Wenn man eine wartungsarme Webseite erstellen möchte, die eventuell auch nur unregelmäßig aktualisiert wird, ist WordPress völlig ungeeignet. Gerade für Portfolio-Seiten oder Gelegenheitsblogger bietet sich Publii geradezu an.

Durch die grafische Benutzeroberfläche ist Publii außerdem extrem nutzerfreundlich.

Und wenn ich mir überlege wie viele Stunden ich mit der Anpassung dieser WordPress-Installation verbracht habe, damit beispielsweise anonyme Kommentare verfasst werden können, dann fällt das Entfernen der Google Fonts bei Publii nicht wirklich ins Gewicht.

Publii Themes

Publii: Static CMS mit grafischer Benutzeroberfläche ist ein Beitrag von techgrube.de.

Mit Dpigs die Größe von installierten Paketen anzeigen

Von: Niko
19. Februar 2019 um 16:31
dpigs Beitragsbild

Als einen großen Vorteil von Linux-Systemen gegenüber Windows habe ich immer die Paketmanager empfunden. Schnell und einfach lässt sich darüber Software installieren und updaten, ohne auf Downloads von irgendwelchen Webseiten zurückgreifen zu müssen.

Genau so schnell wie man eine Software installieren kann, so schnell kann man auch vergessen dass sie installiert ist. Wenn irgendwann der Speicherplatz knapp wird, kann es interessant sein welche Pakete am meisten Platz auf dem Datenträger verbrauchen.

Speicherplatzverbrauch von installieren Pakete unter Debian/Ubuntu/Mint anzeigen

Die Antwort darauf kann das Kommandozeilentool dpigs aus dem Paket debian-goodies liefern.

Wenn man dpigs ohne zusätzliche Parameter aufruft, werden die zehn Speicherhungrigsten Programme aufgelistet. Der Speicherplatzverbrauch wird in Bytes vor dem Paketnamen angezeigt.

Mit der Option -n kann die Liste verlängert werden. Der Befehl “dpigs -n 20” listet 20 Programme auf.

Um die Ausgabe besser lesbar zu machen, kann man die Option -H verwenden. Damit werden die Speicherplatzangaben in Megabyte und Kilobyte angegeben.

Mit dem Befehl

dpigs -n 30 -H

werden die 30 installierten Pakete aufgelistet, die am meisten Speicherplatz verbrauchen. Die Dateigröße wird dabei im menschenlesbaren Format ausgegeben.

dpigs Ausgabe

Mit Dpigs die Größe von installierten Paketen anzeigen ist ein Beitrag von techgrube.de.

Debtree visualisiert die Abhängigkeit von Paketen

Von: Niko
08. März 2019 um 11:05
Debtree Beitragsbild

Vor vielen Jahren habe ich Windows auf meinem Desktop durch Linux ersetzt und mittlerweile einige Distributionen im Einsatz gehabt. Immer habe ich die schnelle und einfache Installation von Software über die Paketmanager als einen der größten Vorteile gegenüber Windows gesehen. Besonders die Möglichkeit zum Einbinden von Drittquellen fand ich immer toll. Damit war die Möglichkeit geboten, Updates an einer einzigen Stelle (dem Paketmanager) durchzuführen, ohne dass man auf den “Store” der Distribution angewiesen ist.

Ja, die Sicherheitsproblematik bei Drittquellen ist mir bewusst, dieses Problem habe ich aber in noch größerem Maße beim Download von Software über irgendwelche Webseiten. Daher hoffe ich, auch in Zeiten von Flatpaks, Snaps und Appimages, dass uns die Paketmanager noch lange erhalten bleiben.

Sicherlich ist die Aufgabe, die Paketmanager zu bewältigen haben, gewaltig. Programme bringen Abhängigkeiten mit, die wiederum Abhängigkeiten haben, die wiederum…

Bei der Installation zeigen einem die Paketmanager an, welche Software durch Abhängigkeiten zusätzlich zum gewünschten Programm installiert wird. Leider zeigen sie nicht an, welches Paket welche Abhängigkeit auslöst.

Dies kann man sehr schön mit dem Programm debtree visualisieren

Debtree – Installation und Funktion

In der Debian/Ubuntu/Mint-Familie lässt sich debtree direkt aus den Paketquellen installieren. Zusätzlich wird graphviz benötigt, um aus den von debtree erzeugten DOT-Files ein Bild zu erstellen.

sudo apt install debtree graphviz

Anschließend kann die erste Grafik erzeugt werden. Zum testen eignet sich ein Paket, das relativ wenige Abhängigkeiten mitbringt. Beispielsweise nano oder openssl.

$ debtree nano | dot -Tpng > nano.png
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen…. Fertig
I: The following dependencies have been excluded from the graph (skipped):
I: libc6

Wie man sieht, hat debtree zuerst die Abhängigkeiten eingelesen, davon allerdings auch welche übersprungen. In diesem Fall die libc6.
Debtree hat in der Datei /etc/debtree/skiplist einige Abhängigkeiten definiert, die standardmäßig ignoriert werden. Es handelt sich dabei um Abhängigkeiten, die so gewöhnlich sind, dass sie in einem Großteil der Grafiken auftauchen würden und diese unnötig aufblasen. Die Liste kann man nach den eigenen Wünschen anpassen.

Mit der Option –no-skip soll sich das Anwenden dieser Liste deaktivieren lassen. Leider hat dies bei mir nicht funktioniert. Das Anwenden von –no-skip hatte keinerlei Auswirkungen. Alternativ kann man die skiplist anpassen, oder mit der Option –show-all alle Abhängigkeiten anzeigen lassen. Diese Möglichkeit hat funktioniert, führt aber bei Paketen mit vielen Abhängigkeiten schnell zu einer riesigen Datei.

Zusätzlich gibt es unter /etc/debtree/endlist eine Liste mit Paketen, deren Abhängigkeiten nicht weiter verfolgt werden. Im Gegensatz zu den Paketen in der Skiplist, die gar nicht in der Grafik auftauchen, werden die Pakete in der endlist in der Grafik angezeigt. Allerdings endet die Linie mit Abhängigkeiten nach diesem Paket.

Nach dem Ausführen des Befehls erhält man folgende Grafik.

Abhängigkeiten von Nano mit Debtree visualisiert

Bei Paketen mit vielen Anhängigkeiten wird die Grafik schnell sehr riesig und unübersichtlich. Dies sieht man beispielsweise, wenn man sich die Abhängigkeiten des Webservers NGINX, ohne das setzen zusätzlicher Optionen, anzeigen lässt. Dabei handelt es sich auch bei NGINX noch um ein Paket mit relativ wenigen Abhängigkeiten. Möchte man die Abhängigkeiten des Pakets gnome-shell anzeigen, kapituliert dot mit folgender Meldung “dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.533022 to fit” Auch angepasste Image ist anschließend noch knapp 55 MB groß.

NGINX Abhängigkeiten mit debtree visualisiert

Debtree Optionen

Um zu vermeiden, dass man riesige und damit unbrauchbare Grafiken erhält, bietet Debtree einige Optionen um die Ausgabe zu beeinflussen.

–no-recommends Empfohlene Pakete werden nicht angezeigt.
–no-alternatives Wenn verschiedene Pakete eine Abhängigkeit erfüllen können, wird nur die erste angezeigt.
–no-provides Keine virtuellen Pakete anzeigen.
–no-conflicts Pakete die mit dem abgefragten Paket in Konflikt stehen werden nicht angezeigt
–max-depth=number Abhängigkeiten werden nur bis zu einer bestimmten Ebene angezeigt

Natürlich finden sich in der Manpage noch eine Vielzahl weiterer Optionen, mit denen sich die Ausgabe beeinflussen lässt. Hierbei handelt es sich meiner Meinung nach um die wichtigsten.

Debtree Grafiken interpretieren

Die verschiedenen Pfeile, Farben und Formen haben folgende Bedeutungen.

Farbe der Pfeile Bedeutung
Blau Direkte Abhängigkeit
Schwarz Empfohlenes Paket (recommends)
Schwarz, gepunktet Vorgeschlagenes Paket (suggests)
Grün Stellt zur Verfügung (provides)
Rot Konflikt
Form der Kästen Bedeutung
Rechteckig, fetter Rand Das Paket, welches untersucht wird
Rechnteckig, normaler Rand Normale Pakete
Rechteckig, direkt untereinander Alternative Pakete mit der selben Funktion
Raute Paket, dessen Abhängigkeit nicht weiter verfolgt wird.
Achteckig Virtuelles Paket

Paketmanager haben ja im Normalfall die tolle Eigenschaft, wie durch Magie die benötigten Abhängigkeiten bereit zu stellen. Mit debtree lässt sich schön darstellen, wie diese Magie funktioniert, wie komplex die Abläufe sind und mit welchen Entscheidungen ein Paketmanager unter Umständen zu kämpfen hat.

Debtree visualisiert die Abhängigkeit von Paketen ist ein Beitrag von techgrube.de.

Stumm schalten, Maus und primärer Bildschirm – Tipps für die Kommandozeile

Von: zefanja
12. November 2018 um 23:21

Letzte Woche kam ein Kollege auf mich zu, der ein paar individuelle Anpassungen für seinen Rechner im Klassenraum haben wollte. Es waren alles Dinge, die man recht schnell in den Systemeinstellungen einstellen konnte, doch wenn man das nach jedem Start machen muss, stört es schon. Es musste also eine Lösung her, wie man diese Dinge über die Kommandozeile lösen kann, damit wir die gewünschten Änderungen in ein Skript packen können, welches dann bei Anmelden ausgeführt wird. Deshalb hier ein paar kleine Tipps für die Kommandozeile.

Ton anschalten / stumm schalten

In unserem Ubuntu-Image ist der Ton standardmäßig stumm geschaltet. Das macht in den meisten Fällen Sinn – v.a. im Computerraum. In manchen Räumen, z.B. im Musikraum oder auch allgemein an den Lehrkraftrechnern, wäre es benutzerfreundlicher, wenn der Ton automatisch eingeschaltet wird. Das geht mit folgendem Befehl:

# Ton einschalten
$ pactl set-sink-mute 0 0

Möchte man den Ton wieder stumm schalten, muss die letzte Null durch eine „1“ ersetzt werden:

# Ton stumm schalten
$ pactl set-sink-mute 0 1

Primären Bildschirm festlegen

In den meisten Räumen wird standardmäßig der Bildschirm gespiegelt, sobald ein Beamer oder Bildschirm über den HDMI-Switch angeschlossen wird. Im konkreten Fall nutzt der Kollege den Rechner in „seinem“ Raum mehr oder weniger allein und er wollte gern ein Setup mit einem erweiterten Bildschirm. Ubuntu platziert allerdings den Launcher / Starter standardmäßig auf dem Bildschirm mit der größeren Auflösung. Hier brauchten wir eine Lösung, wie man den primären Bildschirm per Kommandozeile umstellen kann, sodass der Hauptbildschirm der Monitor am Lehrertisch ist. Das lässt sich leicht mit xrandr lösen.

$ xrandr --output DVI-0 --primary

DVI-0 ist der Ausgang, an dem der Monitor auf dem Lehrertisch hängt. Über xrandr -q kann man sich alle verfügbaren Anschlüsse anzeigen lassen.

Mauszeiger Geschwindigkeit einstellen

Eigentlich geht es weniger um die Geschwindigkeit, als um die Beschleunigung des Mauszeigers. Wie kann man die Geschwindigkeit des Mauszeigers per Kommandozeile einstellen? Es gibt verschiedene Wege z.B. mit xset oder xinput. Wir haben uns über den Weg mit xinput entschieden. Allgemein kann man die Eigenschaften eines Eingabegerätes wie folgt einstellen:

$ xinput --set-prop Geräte-ID Eigenschafts-ID Wert

Die Geräte-ID bekommen wir indem wir xinput ohne Parameter oder mit --list ausführen. Hier im Beispiel ist eine kabellose Maus angeschlossen.

Mauszeiger Geschwindigkeit

Als nächstes brauchen wir noch die richtige Eigenschaft-ID. Diese bekommen wir über folgenden Befehl heraus („9“ ist unsere Geräte-ID):

$ xinput --list-props 9

Maus Beschleunigung

Um die Beschleunigung der Maus einzustellen, müssen wir den Wert bei Accel Speed (Eigenschaft-ID ist 290) verändern. Es sind Werte zwischen -1 und +1 zugelassen. Um z.B. die Mausbeschleunigung zu verlangsamen, können wir das mit diesem Befehl tun:

$ xinput --set-prop 9 290 -1

Fazit

Alle diese kleinen Änderungen haben wir in ein Skript gepackt und dann per Postsync an den entsprechenden Rechner verteilt. Diese Flexibilität, die Ubuntu oder in unserem Fall linuxmuster.net bietet, ist eines der Hauptargumente, warum wir es einsetzen.

Welche netten und nützlichen Tipps für die Kommandozeile kennst du?

4 Kommentare

Der Beitrag Stumm schalten, Maus und primärer Bildschirm – Tipps für die Kommandozeile erschien zuerst auf .:zefanjas:..

Xubuntu – bester Kompromiss für Linux in der Schule?

Von: zefanja
17. November 2018 um 03:53

Auf der Suche nach einem neuen Desktop für unsere Schule möchte ich mir verschiedene Desktopumgebungen anschauen. Die Auswahl ist groß und ich habe einige sehr hilfreiche Kommentare und Vorschläge zu meinem letzten Artikel erhalten. Vielen Dank dafür.  Den Start macht heute Xubuntu. Xubuntu ist ein Derivat von Ubuntu, welches Xfce anstatt GNOME als Desktop nutzt. Auf der Website des Projekt beschreibt sich Xubuntu so:

Xubuntu ist ein elegantes und einfach zu bedienendes Betriebssystem. Es wird mit Xfce ausgeliefert, einer stabilen, leichten und konfigurierbaren Desktop-Umgebung.

Xubuntu ist perfekt für diejenigen, die das Beste aus ihren Desktops, Laptops und Netbooks mit einem modernen Look und genügend Funktionen für den effizienten, täglichen Gebrauch herausholen wollen. Es funktioniert auch auf älterer Hardware gut.

Bietet Xubuntu, was es verspricht? Ist es der beste Kompromiss aus modernem, aber ressourcenarmem Desktop? Das möchte ich mir anhand unserer Kriterien genauer anschauen.

Stabilität

Die Installation verlief ohne Probleme. Das ist heutzutage in den meisten Fällen kein Problem mehr 🙂 . Bei meinen Tests konnte ich bisher keine Stabilitätsprobleme erkennen.

Support

Im Gegensatz zu Ubuntu LTS bietet Xubuntu LTS 3 statt 5 Jahre Support. 5 Jahre sind sicher besser, aber in der Regel werden wir unser Image spätestens nach 3 Jahren updaten. Auf dem Server sind die längeren Support-Zeiträume wichtiger als auf dem Desktop.

Geringe Hardwareanforderungen

Die Hardwareanforderungen sind bei Xubuntu recht gering. Empfohlen werden 1GB Arbeitsspeicher und 20GB freier Speicher auf der Festplatte. Nach dem Start verbraucht Xubuntu ca. 500MB an Arbeitsspeicher. Sobald man aber Firefox mit ein paar Tabs startet steigt der Verbrauch schnell auf über 1GB an. Deshalb sollte man mindestens 2GB installiert haben. Ansonsten ist Xubuntu aber wesentlich genügsamer als Ubuntu mit GNOME oder Unity.

Einfache Bedienbarkeit

Dieser Punkt ist eher subjektiv, denn jeder hat sich im Laufe der Jahre an eine Desktop-Umgebung gewöhnt. Egal ob Windows, macOS, Unity, Gnome, Xfce, KDE – die Liste könnte ich noch lang weiterführen. Ich z.B. habe mich sehr an Unity gewöhnt und komme damit gut zurecht. Eine Umstellung auf GNOME oder eine andere Desktopumgebung fällt mir deshalb schwer. In einer Schule gibt es noch eine viel größere Bandbreite. Ich glaube man kann hier nicht so viel falsch machen, wenn man Linux in der Schule einsetzt. Für die meisten wird die Desktopumgebung neu sein. Es ist viel wichtiger Einführungen, Training und Workshops anzubieten, um die Kollegen an eine neue Umgebung zu gewöhnen. Generell kann man entscheiden, ob man sich eher an Windows 10 oder macOS orientiert.

Xfce hat ein Startmenü und kann mit einem Dock (z.B. Plank) erweitert werden. Dadurch sollten sich die meisten nach einiger Zeit gut zurechtfinden.

Modernes & hübsches Aussehen

Standardmäßig wirkt das Aussehen von Xubuntu eher altbacken, weder hübsch noch sonderlich modern. Über den Paketmanager kann man sich weitere Themes installieren, die dem Xfce-Desktop schöner machen. Das ist zum einen das Arc- oder Numix-Theme. Interessant fand ich auch noch das Qogir-Theme.

Xubuntu

Fazit

Xubuntu wird auf jeden Fall ein Kandidat für unseren Linux-Desktop in der Schule. Dafür sprechen v.a. die geringen Hardwareanforderungen. Sobald linuxmuster.net v7 als Beta veröffentlicht wird, werden wir Xubuntu noch den Praxistest unterziehen. Die meisten Schwierigkeiten und Stolpersteine zeigen sich bekanntlich erst, wenn man es auch tatsächlich einsetzt. Das Aussehen ist ein kleiner Dämpfer, auch wenn man es hübscher machen kann. An das neue Ubuntu-Theme in Ubuntu 18.10 kommt es m.M.n. aber nicht heran.

13 Kommentare

Der Beitrag Xubuntu – bester Kompromiss für Linux in der Schule? erschien zuerst auf .:zefanjas:..

pfSense automatisieren mit pfSsh.php

Von: zefanja
28. November 2018 um 13:29

pfSense hat seit einigen Versionen eine völlig überarbeitete Oberfläche. Damit lassen sich alle Einstellungen i.d.R. gut erreichen und einstellen. Das frei konfigurierbare Dashboard ist ebenfalls eine feine Sache. Trotz allem gibt es manchmal den Fall, dass man Einstellungen gern über eine API oder die Kommandozeile vornehmen möchte. pfSense hat aktuell keine API, diese soll erst in einer der kommenden Versionen integriert werden. Bis dahin kann man sich über die pfSense Entwickler-Shell behelfen, auch pfSsh.php genannt.

Auf pfSsh.php zugreifen

Am schnellsten kommt man in die Entwickler-Shell, wenn man sich per SSH mit pfSense verbindet oder direkt einen Bildschirm an die Firewall anschließt. Wenn SSH noch nicht aktiviert ist, kann man das in der Weboberfläche unter System → Advanced nachholen.

pfSense SSH aktivieren

Besser ist es, wenn man das Einloggen mit Passwort verbietet und nur das Anmelden mit Zertifikat erlaubt.

Ist der SSH-Zugang aktivert, kann man sich nun mit dem Admin-Benutzer anmelden (IP anpassen):

$ ssh admin@192.168.1.254

pfSense CLI

Unter Punkt 12 findet man die Entwickler-Shell, die im Grunde eine PHP-Shell ist.

Beispielbefehle für pfSsh.php

Hier einige Beispielbefehle, die zeigen sollen, wie man die Shell verwenden kann. Jede Eingabe ist normaler PHP Code und muss mit exec; abgeschlossen werden.

DHCP Einstellungen anzeigen

pfSense shell: print_r($config["dhcpd"]);
pfSense shell: exec;
Array
(
    [lan] => Array
        (
            [range] => Array
                (
                    [from] => 10.0.1.7
                    [to] => 10.0.255.245
                )

        )

)

Domain festlegen

pfSense shell: $config['system']['domain'] = 'mydomain.com';
pfSense shell: write_config();
pfSense shell: exec;

Shell – Befehle ausführen

Innerhalb der PHP Shell kann man auch normale Shell-Befehle ausführen, indem man ein „!“ davor setzt:

pfSense shell: ! cat /etc/version 
pfSense shell: exec;
2.4.3-RELEASE

Befehle „aufnehmen“ und „abspielen“

Mit pfSsh.php kann man auch mehrere Befehle „aufnehmen“ und später „abspielen“. Diese sogenannten Sessions sind für wiederkehrende Aufgaben nützlich. Ein Beispiel:

pfSense shell: record echoTest
Recording of echoTest started.
pfSense shell: echo "Das\n";
pfSense shell: echo "ist\n";
pfSense shell: echo "ein\n";
pfSense shell: ! echo "Test\n"
pfSense shell: exec;
pfSense shell: stoprecording 
Recording stopped.

Die Eingaben werden unter /etc/phpshellsessions/ gespeichert und können dort bei Bedarf verändert werden.

Die „Aufnahme“ kann man nun wie folgt wiedergeben:

pfSense shell: playback echoTest

Playback of file echoTest started.

Das
ist
ein
Test

pfSense shell:

oder auch direkt von der root-Shell mit:

$ pfSsh.php playback echoTest

Fazit

pfSsh.php ist ein nützliches Werkzeug, um pfSense mit Skripten zu automatisieren oder Anpassungen vorzunehmen. Gerade, wenn man mehrere Instanzen verwaltet oder ein bestimmtes Setup immer wieder braucht, ist pfSsh.php eine große Hilfe. Man kann z.B. alle Einstellung (sprich PHP-Code) in eine Datei packen, unter /etc/phpshellsessions/ speichern und dann ausführen oder direkt die Ausgabe an pfSsh.php weiterleiten:

$ ssh admin@192.168.1.254 '/usr/local/sbin/pfSsh.php' < MeineConfig.txt

 

2 Kommentare

Der Beitrag pfSense automatisieren mit pfSsh.php erschien zuerst auf .:zefanjas:..

Wie man sein WLAN-Netzwerk mit Freeradius absichern kann

Von: zefanja
09. Dezember 2018 um 03:35

An unserer Schule haben wir ein offenes WLAN mit einem Captive Portal sowie ein weiteres WLAN-Netz (WPA Enterprise, 802.1X), welches nur für Lehrkräfte gedacht ist. Für beide Netze nutzen wir einen RADIUS-Server für die Authentifizierung. Freeradius ist der am weitesten verbreitete OpenSource RADIUS-Server, der auch bei uns zum Einsatz kommt. In diesem Artikel wollen wir einen Freeradius-Server und Zertifikate für eine verschlüsselte Verbindung einrichten. Im Besonderen möchte ich auf die Anbindung an Linuxmuster 6.2 eingehen und die Authentifizierung mit einem LDAP-Server beschreiben.

Ein RADIUS-Server kümmert sich im Allgemeinen um 3 Dinge: Authentifizierung, Autorisierung und Accounting (oft auch als Triple-A oder AAA bezeichnet). Wir werden uns nur mit den ersten beiden „As“ beschäftigen, d.h. ob die Zugangsdaten korrekt sind und ob der Benutzer berechtigt ist, einen Zugang zu erhalten (zum WLAN z.B.).

Installation von freeradius

Die Installation führen wir auf einer aktuellen Linux-Installation (hier Ubuntu 18.04 Server) durch, z.B. in einem LXD Container oder einer virtuellen Maschine.

$ apt install freeradius freeradius-ldap freeradius-utils

Konfiguration

Grundkonfiguration

Um unseren freeradius Server zu testen, kommentieren wir folgende Zeile in /etc/freeradius/3.0/users aus oder fügen sie zu Beginn der Datei ein:

# Das Kommentarzeichen "#" vor dieser Zeile entfernen
steve Cleartext-Password := "testing"

Standardmäßig sollte in der Datei /etc/freeradius/3.0/clients.conf der localhost als Client eingerichtet sein:

client localhost {
  ipaddr = 127.0.0.1
  secret = testing123
}

Nun können wir einen ersten Test durchführen. Dazu stoppen wir den freeradius-Service und starten ihn manuell im Debug-Modus neu:

$ systemctl stop freeradius.service
$ freeradius -X
...
Ready to process request

Wichtig ist, dass am Ende „Ready to process requests“ steht.

Überprüfen der Grundkonfiguration

Als nächstes überprüfen wir, ob unser Test-Benutzer „Steve“ sich am RADIUS-Server anmelden kann (am besten in einem neuen/zweiten Terminal):

$ radtest steve testing 127.0.0.1 10 testing123

Falls alles passt, sollten wir folgende Antwort bekommen:

Sent Access-Request Id 234 from 0.0.0.0:40302 to 127.0.0.1:1812 length 75
    User-Name = "steve"
    User-Password = "testing"
    NAS-IP-Address = 10.18.10.60
    NAS-Port = 10
    Message-Authenticator = 0x00
    Cleartext-Password = "testing"
Received Access-Accept Id 234 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

Wichtig ist, dass wir ein „Received Access-Accept“ bekommen. Hat diese Anfrage geklappt ist der freeradius-Server grundlegend eingerichtet und die folgenden Authentifizierungsverfahren sollten ohne weitere Probleme klappen:

  • PAP
  • CHAP
  • MS-CHAPv1
  • MS-CHAPv2
  • PEAP
  • EAP-TTLS
  • EAP-GTC
  • EAP-MD5

Diese Verfahren sind unterschiedliche Protokolle, die verschieden „sicher“ sind. Alle verwenden einen Benutzernamen und Passwort zur Authentifizierung. Die Bedeutung der (P)EAP Verfahren kann man hier nachlesen. MS-CHAPv1 und v2 sind Verfahren aus dem Hause Microsoft.

Hinweis: Die Zeile mit unserem Benutzer „Steve“ sollten wir jetzt wieder kommentieren oder löschen!

Wir werden im Folgenden das LDAP-Modul konfigurieren und neue Zertifikate für EAP-TTLS erstellen.

LDAP Anbindung einrichten

Die Konfiguration des LDAP-Servers nehmen wir in der Datei /etc/freeradius/3.0/mods-enabled/ldap vor. Falls diese Datei nicht existiert, müssen wir vorher noch einen symbolischen Link erstellen.

$ cd /etc/freeradius/3.0/mods-enabled/
$ ln -s ../mods-available/ldap ./

Ziemlich an Anfang der Datei konfigurieren wir unseren LDAP-Server:

server = "ldaps://linuxmuster.internal.example.com"
identity = "cn=admin,dc=internal,dc=example,dc=com"
password = superSecretPassword
base_dn = "ou=accounts,dc=internal,dc=example,dc=com"

...

group {
    ...
    membership_filter = "(|(member=%{control:Ldap-UserDn})(memberUid=%{%{Stripped-User-Name}:-%{User-Name}}))"
    ...
}

Es muss sichergestellt sein, dass alle nötigen Ports für die Kommunikation zwischen dem RADIUS und LDAP-Server offen sind.

Hinweis: Wenn man Freeradius 3.0 zusammen mit linuxmuster.net v6.2 verwenden möchte, müssen noch folgende Zeilen angepasst werden, damit die Authentifizierung mit Windows klappt (sign…):

update {
            control:Password-With-Header    += 'userPassword'
            control:NT-Password             := 'sambaNTPassword'
            ...
}

LDAP Verbindung testen

Nachdem der LDAP-Server in Freeradius konfiguriert ist, müssen wir ihn einmal neustarten und können anschließend testen, ob sich ein Benutzer aus dem LDAP am RADIUS-Server anmelden kann.

$ systemctl restart freeradius.service
$ radtest testuser password localhost 10 testing123
Sent Access-Request Id 213 from 0.0.0.0:46425 to 127.0.0.1:1812 length 73
    User-Name = "testuser"
    User-Password = "password"
    NAS-IP-Address = 10.18.10.60
    NAS-Port = 10
    Message-Authenticator = 0x00
    Cleartext-Password = "password"
Received Access-Accept Id 213 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

Wenn wir wieder ein „Received Access-Accept“ als Antwort erhalten, klappt die Verbindung zwischen RADIUS und LDAP-Server. Falls es nicht klappt, sollten wir den RADIUS Server manuell starten und schauen, welche Fehler uns der RADIUS-Server ausgibt.

$ systemctl stop freeradius.service 
$ freeradius -X 
... 
Ready to process request

Zertifikate erstellen (für EAP-TTLS)

Standardmäßig verwendet Freeradius sogenannte Snake-Oil-Zertifkate, die natürlich nicht für den produktiven Einsatz gedacht sind. Deshalb erstellen wir in den folgenden Schritten eine neue Root-CA und ein Zertifikat für den Server. Die Zertifikate und die dazugehörigen Konfigurationsdateien befinden sich unter /etc/freeradius/3.0/certs/. Zuerst öffnen wir die Datei ca.cnf und ändern ein paar wenige Einstellungen:

...
[ CA_default ]
...
default_days        = 3650
...
default_md      = sha256
...

[ req ]
....
default_bits        = 2048
input_password      = supersecretandlongpassword
output_password     = supersecretandlongpassword
...

[certificate_authority]
countryName     = US
stateOrProvinceName = My State
localityName        = My Town
organizationName    = My School
emailAddress        = admin@my-school.org
commonName      = "CA Freeradius"
...

Ähnliche Einstellungen nehmen wir nun der Datei server.cnf vor:

...

[ CA_default ]
...
default_days        = 3560
...
default_md      = sha256
...

[ req ]
...
default_bits        = 2048
input_password      = supersecretandlongpassword
output_password     = supersecretandlongpassword

[server]
countryName     = US
stateOrProvinceName = My State
localityName        = My Town
organizationName    = My School
emailAddress        = admin@my-school.org
commonName      = "Freeradius Server Certificate"

Das Passwort muss jetzt auch in der Datei /etc/freeradius/3.0/mods-enabled/eap geändert werden:

tls-config tls-common {
    private_key_password = supersecretandlongpassword
    ...
}

Die Zertifikate erstellen wir mit einem einfachen make:

$ cd /etc/freeradius/3.0/certs/
$ make

EAP-TTLS Anmeldung testen

epol_test kompilieren

radtest unterstützt leider keinen Test für eine EAP-TTLS Authentifizierung. Dazu brauchen wir das Tool eapol_test, welches Teil des wpa_supplicant Pakets ist. Leider wird dieses Tool standardmäßig nicht von wpa_supplicant gebaut, deswegen müssen wir das selbst machen. Wir laden den Quellcode herunter, entpacken ihn und müssen noch einige Abhängigkeiten installieren.

$ wget https://w1.fi/releases/wpa_supplicant-2.7.tar.gz
$ tar -xzvf wpa_supplicant-2.7.tar.gz
$ apt install build-essential pkg-config libnl-3-dev libssl-dev libnl-genl-3-dev
$ cd wpa_supplicant-2.7
$ cp defconfig .config

Danach müssen wir die Datei .config öffnen und die Zeile #CONFIG_EAPOL_TEST=y  finden und das Kommentarzeichen entfernen.

$ nano .config
# Kommentarzeichen "#" entfernen
CONFIG_EAPOL_TEST=y

Mit dem folgenden Befehlen bauen wir nun das Programm und kopieren es noch an die richtige Stelle:

$ make eapol_test
$ cp eapol_test /usr/local/bin

Anmeldung testen

Um EAP-TTLS zu testen, brauchen wir für eapol_test eine kleine Config-Datei, die folgendermaßen aussehen kann:

$ nano eapol_test.conf
network={
        ssid="example"
        key_mgmt=WPA-EAP
        eap=TTLS
        identity="mustermann"
        anonymous_identity="anonymous"
        password="strenggeheim"
        phase2="auth=PAP"
}

Nun können wir eapol_test aufrufen:

$  eapol_test -c eapol_test.conf -a 127.0.0.1 -p 1812 -s testing123

Wenn man am Ende diese Ausgabe erhält, war alles erfolgreich:

MPPE keys OK: 1  mismatch: 0
SUCCESS

Clients einrichten (z.B. Accesspoints)

Bisher haben wir immer nur direkt auf dem RADIUS-Server getestet. Im Normalfall wird die Anfrage für die Authentifizierung aber von einem Accesspoint, Captive Portal oder einem Wireless Controller kommen. Diese müssen auf dem RADIUS-Server als Clients eingerichtet werden. Wir öffnen dazu die Datei /etc/freeradius/3.0/clients.conf und fügen am Ende alle Accesspoints etc. mit ihrer IP und einem Passwort / Secret ein:

$ nano /etc/freeradius/3.0/clients.conf
client AP1 {
    ipaddr = 10.0.0.10
    secret = supersecretsecret
}

Nun kann man auf dem Accesspoint ein WPA Enterprise (802.1X) Netzwerk einrichten und den RADIUS-Server mit seiner IP, den Port (1812) und dem eben festgelegten Passwort/Secret konfigurieren. Nun sollte man sich mit seinem mobilen Gerät im WLAN anmelden können.

Zugang auf bestimmte LDAP Gruppen beschränken

An unserer Schule haben nur Mitarbeiter und Lehrkräfte sowie die Oberstufenschüler Zugang zum WLAN an der Schule. In linuxmuster.net ist das über die Gruppe p_wifi gelöst. Alle, die in dieser Gruppe sind, sollen Zugang bekommen. Bisher ist unser RADIUS-Server aber so konfiguriert, dass jeder Benutzer im LDAP Zugang erhält. Um den Zugang einzuschränken, fügen wir noch folgende Zeilen in der Datei /etc/freeradius/3.0/users hinzu:

DEFAULT Ldap-Group == "cn=p_wifi,ou=groups,dc=internal,dc=example,dc=com"
DEFAULT Auth-Type := Reject
   Reply-Message = "Your are not allowed to access the WLAN!"

Freeradius und linuxmuster.net 6.2

Die Installation von Freeradius für linuxmuster.net 6.2 ist in der Dokumentation beschrieben. Bis auf ein paar wenige Details ist die Konfiguration sehr ähnlich. In Freeradius 2.0 sind die Standardeinstellungen für die Zertifikate nicht mehr zeitgemäß, sodass es zu Verbindungsproblemen mit einigen Clients kommen kann (z.B. mit einem aktuellen macOS). Hier sollte man unbedingt die Vorgaben von Freeradius 3.0 verwenden (siehe oben)!

Unterschiedliche Zugangsbeschränkungen nach WLAN-Netz

An unserer Schule haben wir ein Captive Portal für Gäste und Schüler, sowie ein WPA 802.1X (Enterprise) Netz für Mitarbeiter und Lehrkräfte. Während sich am Captive Portal alle anmelden können, die in der Gruppe p_wifi sind, sollen sie im WPA 802.1X Netzwerk nur Lehrkräfte und Mitarbeiter anmelden dürfen. Die Anfragen vom Captive Portal kommen von einer anderen IP (pfSense) als die für das WPA Enterprise Netzwerk. In der Datei /etc/freeradius/sites-enabled/inner-tunnel haben wir deshalb eine Abfrage eingebaut, die überprüft, von welcher IP die Anfrage kommt und entsprechend entscheidet, ob jemand Zugang bekommt oder nicht:

post-auth {
    ...
    #Only allow Teacher&Staff on WPA 802.1X Teacher and Staff network  
    if (NAS-IP-Address == 10.0.0.10) {
        if (LDAP-Group == "cn=teachers,ou=groups,dc=internal,dc=example,dc=com" || LDAP-Group == "cn=staff,ou=groups,dc=internal,dc=example,dc=com") {
            noop
        } else {
            reject
        }
    }
    ...
}

Fazit

Dieser Artikel beschreibt nur eine von vielen Möglichen Konfigurationen. Ein RADIUS-Server ist komplex, aber dank der guten Standardkonfiguration von Freeradius (v.a. in Version 3) kommt man recht schnell zum Erfolg. Lange Zeit hatten wir nur das Captive Portal im Einsatz und es hat auch gut funktioniert, doch die Benutzerfreundlichkeit und Sicherheit ist mit einem WPA 802.1X (Enterprise) Netzwerk nochmal gestiegen. Ohne den RADIUS-Server wäre das aber nicht möglich gewesen.

Nützliche Links:

2 Kommentare

Der Beitrag Wie man sein WLAN-Netzwerk mit Freeradius absichern kann erschien zuerst auf .:zefanjas:..

pfSense installieren

Von: zefanja
15. Dezember 2018 um 07:17

pfSense gehört zu den am weitesten verbreiteten Open Source Firewalllösungen. Wir setzen sie seit einigen Jahren bei uns in der Schule ein und sind sehr zufrieden damit, weil sie einfach viele Features bietet, für die man woanders viel Geld hinlegen muss. Heute möchte ich deshalb zeigen wie man pfSense installieren und grundlegend einrichten kann. Davor möchte ich kurz auf verschiedene Hardware eingehen, die für den Betrieb von pfSense geeignet ist.

Welche Hardware brauche ich?

Allgemein kann man sagen, dass man für den Betrieb von pfSense theoretisch jeden Rechner nehmen kann, der mindestens zwei Netzwerkkarten hat. Das kann z.B. ein alter Computer sein, welchen man nicht mehr braucht und mit einer zweiten Netzwerkkarte ausstattet. Aber oft ist ein alter Rechner nicht sehr stromsparend und andere Alternativen sind angebrachter. Neben dem Stromverbrauch spielt vor allem der Einsatzzweck eine entscheidende Rolle. Es macht einen Unterschied, ob ich die Firewall zu Hause mit wenigen Benutzern einsetze oder in einer Schule oder einem Unternehmen mit wesentlich mehr Zugriffen.

Für den Heimgebrauch beliebt sind die APU2C4 Board von PC Engine, aber auch Kleinstrechner von Qotom (v.a. im asiatischen Raum). Für eine Schule oder Unternehmen ist – je nach Anforderung – ein Board mit mindestens 4 Netzwerkkarten zu empfehlen. Wir verwenden z.B. eine SG-4860 von Netgate. Wenn man bei Amazon oder AliExpress nach pfSense sucht, findet man viele Angebote. Wichtig ist nur, dass die CPU AES-NI unterstützt, da dieses Feature von pfSense in zukünftigen Versionen unbedingt nötig sein wird.

Auf der Website des pfSense Projekt gibt es noch ein paar allgemeine Hinweise zu den Hardwareanforderungen:

  • Minimal → 512MB RAM, 500 Mhz CPU
  • Empfohlen → 1GB RAM, 1Ghz CPU

Auch die verfügbare Bandbreite sollte bei der Hardwareauswahl berücksichtigt werden, da ansonsten pfSense zum Flaschenhals werden könnte.

  • 10-20 Mbps → Intel oder AMD CPU mit mindestens 500MHz.
  • 21-100 Mbps → aktuelle Intel oder AMD CPU mit 1Ghz
  • 101-500 Mbps → aktuelle Intel oder AMD CPU mit mindestens 2 Ghz und einer PCI-e Netzwarkkarte
  • 501+ Mbps → Serverhardware mit Mehrkern-CPUs mit jeweils mindestens 2 Ghz, PCI-e Netzwerkkarte

pfSense Installation vorbereiten

Image herunterladen

Bevor man mit der Installation beginnt, muss man wissen, welches pfSense Image man braucht. Das hängt z.B. davon ab, ob die verwendete Hardware einen VGA/HDMI Ausgang hat oder nur einen serielle Konsole. Oder ob man per CD, USB-Stick oder direkt auf die Festplatte installieren möchte. Deshalb möchte ich hier ein paar Hinweise geben:

Architektur:

  • Netgate ADI braucht man nur, wenn man auch ein Netgate Produkt verwendet.
  • AMD64 für alles andere (Intel / AMD 64bit CPU)

Art des Image

  • USB Memstick Installer wird für die Installation mit einem USB-Stick benötigt
  • CD Image (ISO) Installer wird für die Installation mit einer CD gebraucht oder für virtuelle Maschinen

Konsole

  • seriell – wenn nur eine Serielle Schnittstelle verfügbar ist (USB oder RS-232)
  • VGA – wenn die verwendete Hardware einen VGA/DVI oder HDMI Ausgang hat.

Wenn man weiß, welches Image man braucht, kann man es von der pfSense-Website herunterladen.

pfSense Download

USB-Stick vorbereiten

Die Dokumentation von pfSense enthält viele Informationen zur Vorbereitung eines USB-Sticks. In unserem Beispiel gehen wir von einen USB Memstick VGA Installer aus. Zuerst sollte man den USB-Stick formatieren oder leeren. Das geht unter Linux sehr einfach mit

$ sudo dd if=/dev/zero of=/dev/sdz bs=1M count=1

Hinweis: Unbedingt darauf achten, welches Gerät man hinter of=/dev/ angibt. Ansonsten kann es passieren, dass man seine Hauptpartition leert und somit Daten unwiederbringlich verloren sind! Um den Gerätenamen herauszufinden, steckt man am besten den USB-Stick an und führt danach dmesg in einem Terminal aus. Dann sieht man, welches Gerätenamen der USB-Stick bekommen hat (oft ist es /dev/sdb).

Anleitungen zum Leeren eines USB-Sticks unter Windows oder macOS finden sich in der oben verlinkten Dokumentation.

Nun kann man als nächstes das heruntergeladene Image auf den USB-Stick schreiben.

$ gzip -dc pfSense-memstick-2.4.4-RELEASE-amd64.img.gz | sudo dd of=/dev/sdz bs=1M
$ sync

Der USB-Stick ist nun fertig vorbereitet. Als nächstes bootet man von diesem USB-Stick und kann die Installation beginnen. Je nach BIOS wird der Stick als USB-Gerät oder weitere Festplatte erkannt. Die Bootreihenfolge muss oft geändert werden, damit nicht von der 1. Festplatte gebootet wird. Die Dokumentation liefert auch einige Ideen, falls das Booten nicht klappen sollte.

pfSense installieren

Nach dem erfolgreichen Booten erscheint der Willkommensbildschirm von pfSense.

pfsense welcome

Hier wählt man „Install„. Im nächsten Dialog kann man das Keyboard Layout festlegen. Für die Partitionierung nimmt man am besten „Auto (UFS)“ und bestätigt wieder mit Enter.

pfSense partitioning

Danach startet die automatische Installation. Ist die Installation beendet, wird man noch gefragt, ob man eine Shell öffnen möchte (kann man verneinen). Zum Schluss muss man das System neu starten („Reboot„). Beim anschließenden Start sollte man unbedingt darauf achten, dass nicht wieder vom USB-Stick gebootet wird, sondern von der Festplatte!

pfsense complete

 

Netzwerk-Schnittstellen einrichten

Netzwerkkarten zuweisen

Während des Neustarts versucht pfSense automatisch die WAN Schnittstelle zu konfigurieren. Die WAN Schnittstelle ist die Netzwerkkarte, die mit dem Router des Internetanbieters oder ganz allgemein mit dem Internet verbunden ist. Falls die automatische Konfiguration erfolgreich ist, erscheint das pfSense Konsolenmenü, ansonsten wird man mit einem Dialog begrüßt.

pfSense menu

Um die WAN und LAN Schnittstellen zu ändern, wählt man Nr. 1 „Assign Interfaces„. Nun muss man einige Fragen beantworten:

  • Should VLANs be set up now? → n (Nein)
  • Enter the WAN interface name or „a“ for auto-detection → hier muss man den Namen der WAN Netzwerkkarte eingeben. Die MAC-Adressen werden zu Beginn des Dialog angezeigt. In unserem Bsp. heißt sie em0
  • Enter the LAN interface name or „a“ for auto-detection → hier muss man den Namen der LAN Netzwerkkarte eingeben. In unserem Bsp. heißt sie em1
  • Do you want to proceed → y (Ja). Vorher wird noch eine kurze Zusammenfassung der Zuordnung angezeigt.

pfsense assign interfaces

IP-Adressen festlegen

Falls an der WAN-Schnittstelle ein DHCP-Server läuft, sollte sie automatisch eine IP-Adresse bekommen haben. Falls nicht muss man sowohl für die WAN als auch die LAN Schnittstelle eine IP Adresse konfigurieren. Beispielhaft werde ich es hier für die LAN Schnittstelle zeigen. Dazu wählt man Nr. 2 „Set interface(s) IP address“ aus.

  • Enter the number of the interface you wish to configure → 2 für die LAN Schnittstelle
  • Enter the new LAN IPv4 address→ z.B. 10.10.10.1 oder 10.10.10.1/24
  • Wenn man im vorherigen Schritt keine Netzwerkmaske angegeben hat, muss man es jetzt tun: Enter the new LAN IPv4 subnet bit count (1 t0 31). → 24 (entspricht 255.255.255.0, d.h. 254 IP Adressen).
  • In der nächsten Frage muss ein Gateway festgelegt werden. Bei einer LAN Schnittstelle ist das nicht nötig, nur bei einer WAN Schnittstelle. → einfach ENTER (für None) drücken
  • Enter the new LAN IPv6 address. Press <ENTER> for none → ENTER (für keine)
  • Do you want to enable the DHCP server on LAN? → y (Ja), außer es gibt bereits einen DHCP-Server im LAN-Netz.
  • Enter the start address of the IPv4 client address range → 10.10.10.10 (erste IP Adresse, die ein Client im LAN Netz bekommen kann)
  • Enter the end address of the IPv4 client address range → 10.10.10.200 (letzte IP Adresse, die ein Client im LAN Netz bekommen kann)
  • Do you want to revert to HTTP as the webConfigurator protocol? → n (nein, soll HTTPS bleiben)

pfsense LAN ip address

Weitere Einstellungen in der Weboberfläche

Mit einem Rechner, der ebenfalls LAN Netz ist, kann man unter https://10.10.10.1 auf Weboberfläche von pfSense zugreifen, um einige wenige Grundeinstellungen vorzunehmen. Beim ersten Mal erscheint eine Zertifikatswarnung. Da es sich um ein selbst signiertes Zertifikat für die HTTPS-Verbindung handelt, muss man es noch akzeptieren. Die Standardzugangsdaten sind admin mit dem Passwort pfsense.

pfsense login

Nachdem Login wird man von einem Assistenten begrüßt. Im zweiten Schritt kann man der Firewall einen Hostname vergeben und die Domain eintragen. Weiterhin wichtig ist der primäre und Sekundäre DNS Server und ob der DNS-Server per DHCP an der WAN-Schnittstelle überschrieben werden darf (um z.B. den DNS des Internetproviders zu verwenden).

pfSense dns setup

In den nächsten Schritten stellt man die Zeitzone ein, überprüft noch einmal die Konfiguration der WAN und LAN Schnittstelle und sollte in Schritt 6 auf jeden Fall ein neues Admin-Passwort vergeben. Damit ist das Setup abgeschlossen.

Fazit

Die Installation von pfSense geht meist leicht von der Hand. Schwierigkeiten gibt es manchmal bei der Auswahl des richtigen Images für die Installation bzw. dem Booten vom USB-Stick oder der Einrichtung der seriellen Verbindung. Die Dokumentation von pfSense geht aber auf viele dieser Probleme ein und bietet Lösungsvorschläge an. Nach der anfänglichen Konfiguration ist die Firewall einsatzbereit. Allerdings kann man die Firewall noch stark erweitern und anpassen. Das soll Thema zukünftiger Artikel sein.

1 Kommentar

Der Beitrag pfSense installieren erschien zuerst auf .:zefanjas:..

Auto-Type in KeeWeb konfigurieren

Von: zefanja
22. Dezember 2018 um 00:15

KeeWeb ist ein Passwortmanager, der kompatibel zu KeePass ist und für sehr viele Plattformen verfügbar ist. Ich verwende ihn privat als auch beruflich seit einigen Jahren. Heute möchte ich ein geniales Feature vorstellen, das ich erst vor kurzem entdeckt habe: Auto-Type. Mit Auto-Type kann man automatisch seine Login-Daten eintragen lassen, egal ob es eine Website oder eine Desktopanwendung ist. Das Schöne ist, dass man kaum etwas tun muss, um Auto-Type in KeeWeb zu konfigurieren.

Wie funktioniert Auto-Type?

Animationen sagen mehr als 1000 Worte, deshalb hier ein kleines GIF, das die Funktionsweise von Auto-Type zeigt (im Bild Check_MK):

keeweb auto type

Wie der Name sagt, füllt KeeWeb automatisch die Eingabefelder aus und meldet einen an. KeeWeb muss dazu (im Hintergrund) geöffnet sein.

Auto-Type in KeeWeb konfigurieren

Auto-Type ist standardmäßig ab Version 1.2 für alle Einträge aktiviert. Die Einstellung dazu findet man unter mehr → Auto-Type Einstellungen.

KeeWeb Einstellungen

Es erscheint ein Eingabefeld in das man nun verschiedenen Platzhalter oder Befehle eingeben kann. Für alle Einträge lautet der Standardeintrag:

{USERNAME}{TAB}{PASSWORD}{ENTER}

Es wird also zuerst der Benutzername automatisch ausgefüllt, dann mit TAB in das Passwortfeld gewechselt und das Passwort eingegeben. Am Ende bestätigt Auto-Type mit Enter den Anmelde-Button.

Für die meisten Websites oder Anwendungen funktioniert diese Einstellung ganz gut. Allerdings gibt es auch Seiten (z.B. GMail), die erst den Benutzernamen überprüfen, bevor sie das Passwortfeld anzeigen. Hier kann man mit {DELAY X} eine Verzögerung einbauen. Statt X muss man einen Wert in Millisekunden angeben, z.B.

{USERNAME}{ENTER}{DELAY 3000}{PASSWORD}{ENTER}

Auto-Type kennt viele Befehle und Platzhalter. Eine Übersicht findet man hier.

Auto-Type verwenden

Damit Auto-Type funktioniert, muss man unter Linux erst noch ein Paket installieren:

$ sudo apt install xdotool

Danach kann man mit UMSCHALT+ALT+T Auto-Type aktivieren (KeeWeb muss (im Hintergrund) geöffnet sein). Falls KeeWeb nur einen passenden Eintrag findet (z.B. anhand des Fenstertitels oder der URL) füllt KeeWeb die Felder automatisch aus. Wenn keine Überstimmung mit einem Eintrag festgestellt wurde, erscheint ein weiteres Fenster. Dort kann man dann manuell den passenden Benutzernamen / Passwort auswählen.

Fazit

KeeWeb schätze ich v.a. aufgrund seiner Verfügbarkeit auf sehr vielen Plattformen als auch die vielen Möglichkeiten der Synchronisation der Passwortdatenbank. Egal ob Nextcloud, Google Drive oder Dropbox – mit KeeWeb hat man seine Passwörter überall zur Hand (auch im Team).

Kommentar hinzufügen

Der Beitrag Auto-Type in KeeWeb konfigurieren erschien zuerst auf .:zefanjas:..

WLAN Access Point mit pfSense verbinden

Von: zefanja
15. Januar 2019 um 13:36

pfSense ist eine Open Source Firewalllösung, die man gut zu Hause, in der Schule oder in einem Unternehmen einsetzen kann (siehe Installation + Hardwareempfehlungen). In den meisten Fällen möchte man Clients nicht ausschließlich per Netzwerkkabel verbinden, sondern auch kabellos. Am einfachsten geht es, wenn man dazu einen WLAN Access Point an die Firewall mit anschließt, die sich um die kabellosen Geräte kümmert (z.B. Smartphones).

Aufbau des Setups

Ein Bild sagt bekanntlich mehr als 1000 Worte:

pfSense AP Setup

 

Die LAN-Schnittstelle von pfSense verbindet man mit einem Switch, an dem man dann den Access Point und weitere kabelgebundene Clients anschließen kann.

Access Point einrichten

Nachdem der Access Point angeschlossen ist (in unserem Beispiel ein Access Point von tp-link), muss er noch eingerichtet werden. Jeder Access Point bringt meistens auch ein Webinterface mit, über dass man Einstellungen vornehmen kann. Die IP-Adresse des Access Point findet man in pfSense unter Status → DHCP-Leases heraus.

pfsense dhcp leases

Nun kann man auf das Webinterface des Access Point zugreifen.

accesspoint login

Nach dem Login (bei tp-link ist der Standardbenutzername und das Passwort admin) richtet man unter Quick Setup alle wichtigen Einstellungen ein:

  • Change the login accountJa (neuer Benutzername und Passwort festlegen)
  • Please select the proper operation mode according to your needsAccess Point
  • Access AP Mode Settings
    • Wireless Network Name(SSID)Name des WLAN-Netzes
    • ChannelAuto
    • Wireless Security ModeWPA2-PSK
    • Wireless PasswordWLAN Passwort
  • Type Static IP
  • IP Address → eine IP Adresse aus dem LAN auswählen, z.B. 10.10.10.253
  • DHCP ServerDisable (Da pfSense sich um die IP-Adressen kümmert).

access point dhcp

Fazit

Es gibt zwar auch Mini-Computer und -router für pfSense, die einen WLAN-Chip mitbringen, doch kann man davon nur sehr wenige im Access Point-Modus betreiben. Meistens unterstützen sie nur den Client-Mode, d.h. man kann sich damit mit einem WLAN-Netz verbinden, aber selbst keines aufspannen. PfSense unterstützt nur wenige Karten im Access Point-Modus. Eine Übersicht findet man hier. Schlussendlich ist es IMHO deutlich einfacher einen Access Point mit pfSense zu verbinden statt den richtigen WLAN Chip zu finden.

 

Kommentar hinzufügen

Der Beitrag WLAN Access Point mit pfSense verbinden erschien zuerst auf .:zefanjas:..

Netzwerkbrücke für LXD Container einrichten

Von: zefanja
07. Februar 2019 um 14:05

Die meisten unserer Webanwendungen laufen in LXD Containern. Nicht ohne Grund ist LXD für mich eines der wichtigsten Features von Ubuntu Server. Es gibt viele Wege um von außen auf eine Webanwendung in einem LXD Container zuzugreifen. So kann man z.B. einen Reverse Proxy nehmen und darüber die Zugriff auf die Container regeln (hier hatte ich schon mal davon berichtet). Eine andere Möglichkeit ist die Einrichtung einer Netzwerkbrücke, sodass sich die Container im gleichen Netz wie der Containerhost (Ubuntu Server) befinden. In diesem Artikel möchte ich kurz beschreiben, wie man eine Netzwerkbrücke für LXD Container einrichtet.

Netzwerkbrücke für LXD Container

Um eine Netzwerkbrücke unter Ubuntu einzurichten, muss man die bridge-utils installieren:

$ apt install bridge-utils

Danach kann man die Netzwerkbrücke einrichten.

bis Ubuntu 16.04

Bis Ubuntu 16.04 nutzt Ubuntu ifupdown um Einstellungen für die Netzwerkverbindungen festzulegen. Die Konfiguration nimmt man in den Dateien unter /etc/network/ vor. Eine einfache Netzwerkbrücke, um die Container in das Host-Netzwerk zu bekommen, könnte so aussehen:

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The main Bridge
auto br0
iface br0 inet dhcp
    bridge-ifaces enp4s0
    bridge-ports enp4s0
    up ip link set enp4s0 up

# The primary network interface
iface enp4s0 inet manual

Hier bekommt die Brücke ihre Adresse vom DHCP-Server mitgeteilt. Die reale Netzwerkkarte enp4s0 wird in den manuellen Modus gesetzt und der Brücke zugewiesen.

ab Ubuntu 18.04

Ab Ubuntu 18.04 wird Netplan für die Konfiguration der Netzwerkverbindungen verwendet. Die Konfigurationsdateien befinden sich unter /etc/netplan/. Eine Definition für die Brücke könnte folgendermaßen aussehen:

$ cat /etc/netplan/50-cloud-init.yaml 
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp3s0:
            dhcp4: no
    version: 2
    bridges:
        br0:
            dhcp4: no
            addresses:
            - 10.10.10.5/24
            gateway4: 10.10.10.254
            nameservers:
                addresses:
                - 10.10.10.254
            interfaces:
            - enp3s0

Im oberen Teil konfiguriert man die reale Netzwerkkarte (enp3s0) und weißt ihr keine Adresse zu. Danach folgt die Definition der Netzwerkbrücke. Sie wird wie eine statische Netzwerkverbindung eingerichtet und enthält zusätzlich den Punkt interfaces. Dort legt man fest, welche reale Netzwerkkarte „überbrückt“ werden soll. Weitere (komplexere) Beispiele zu Netzwerkbrücken gibt es auf der offiziellen Website.

Nun werden mit dem folgenden Befehl die Änderungen an den Netzwerkeinstellungen angewendet:

$ netplan apply  --debug

Netzwerkbrücke zuweisen

Hat man die Netzwerkbrücke fertig eingerichtet und bekommt sie auch die richtige IP-Adresse, muss man dem LXD Container noch mitteilen, dass er seine IP-Adresse über die Netzwerkbrücke beziehen soll. Das erledigt man mit folgendem Befehl:

$ lxc config device add containername eth0 nic nictype=bridged parent=br0 name=eth0

Mit name=eth0 legt man fest, unter welchen Namen man die Netzwerkkarte im Container findet. Nun kann man im Container eth0 nach Belieben konfigurieren. Ab sofort sollte der Container eine IP-Adresse aus dem Host-Netzwerk bekommen.

Fazit

Eine einfache Netzwerkbrücke lässt sich schnell einrichten und man kann sie ohne Probleme einem Container zuweisen. Andere Benutzer im Netzwerk können so ohne die Einrichtungen eines Reverse-Proxys auf eine Webanwendung zugreifen. Auch komplexere Szenarien sind denkbar (VLANs, mehrere Brücken, um die Container in verschiedene Netz zu bekommen etc.), doch das würde den Rahmen dieses kurzen Artikels sprengen.

3 Kommentare

Der Beitrag Netzwerkbrücke für LXD Container einrichten erschien zuerst auf .:zefanjas:..

Wie wichtig ist Hochverfügbarkeit in einem Schulnetzwerk?

Von: zefanja
05. März 2019 um 13:35

Schulnetzwerke werden mit wachsenden Anforderungen komplexer. Ein Schulserver, schulweites WLAN, Einsatz von Tablets und Laptops im Unterricht, eine Schulcloud, einheitliche Logins für alle Dienste – die Anforderungen an einen Netzwerkbetreuer oder Dienstleister in der Schule sind vielfältig. Wenn alles funktioniert, ist meist auch alles gut. Aber was ist, wenn der Server, die Firewall oder ein Switch ausfällt? Die Konsequenzen können sehr unterschiedlich sein. Wie schnell kann der Normalbetrieb wiederhergestellt werden? Wie wichtig ist Hochverfügbarkeit in einem Schulnetzwerk?

Hochverfügbarkeit

Laut Wikipedia definiert sich Hochverfügbarkeit folgendermaßen

Hochverfügbarkeit (englisch high availability, HA) bezeichnet die Fähigkeit eines Systems, trotz Ausfalls einer seiner Komponenten mit einer hohen Wahrscheinlichkeit (oft 99,99 % oder besser) den Betrieb zu gewährleisten.

Es geht also darum, dass ein System („das Schulnetzwerk“) einsatzfähig bleibt, auch wenn eine oder mehrere Komponenten einmal ausfallen sollten. Dabei kann es durchaus zu Unterbrechungen kommen. Je nachdem wie lang so eine Unterbrechung ist, teilt man die Hochverfügbarkeit in verschiedene Klassen ein. Ein Schulnetzwerk muss vor allem an Schultagen einsatzfähig sein (ca. 180-200 Tage pro Jahr). Auch wenn eine 99,999% Verfügbarkeit in den wenigsten Schulen absolut notwendig ist, ist der reibungslose Betrieb für den Unterrichtsalltag sehr wichtig.

Single Point of Failures

Um Hochverfügbarkeit herzustellen, müssen sogenannte „Single Point of Failures“ reduziert werden. Es handelt sich dabei um Komponenten bei deren Ausfall das ganze Schulnetzwerk still stehen würde. Was können solche „Single Point of Failures“ sein?

  • Firewall → fällt sie aus, gibt es kein Zugang mehr zum Internet, je nach Konfiguration funktioniert auch das interne Netz nicht mehr
  • Switche (v.a. Hauptswitch) → siehe Firewall, Komplettausfall
  • Server → fällt er aus, sind viele Anwendungen nicht mehr zu erreichen, d.h. keine Anmeldung mehr im internen Logins, Webanwendungen, Schulcloud, …
  • Internetanschlüsse → fällt der einzige Zugang aus, ist man offline.

Kurze Geschichte am Rande:

Letzte Woche ist unsere Firewall ausgefallen (aufgrund des Atom C2000 Bugs). Das Netzwerk lag still, wir waren offline. Ein erster Versuch die Firewall zu virtualisieren scheiterte, sodass wir auf einen kleinen Minicomputer mit 2 Netzwerkkarten ausgewichen sind. Es waren ein paar zusätzliche Konfigurationen an unserem Hauptswitch nötig um alle WANs und VLANs auf zwei Netzwerkkarten aufzuteilen. Nach einigen Stunden lief das Netzwerk dann wieder (wir konnten das Backup der Konfiguration mit wenig Änderungen problemlos wiederherstellen).

Wie kann man die Ausfallsicherheit erhöhen?

Es gibt mehrere Möglichkeiten, wie man die Ausfallsicherheit erhöhen und das System „Schulnetzwerk“ besser gegen Ausfälle schützen kann. Allgemein geht es darum, dass man möglichst wenige (am besten keine) „Single Point of Failures“ hat und kritische Komponenten bei einem Ausfall fehlertolerant sind. Wie bereits oben erwähnt, hängen die Anforderungen an ein hochverfügbares Schulnetzwerk sehr von den Gegebenheiten und Wünschen des Schulträgers ab. Zum einen ist es eine Frage des Geldbeutels, zum anderen muss auch nicht jedes Netzwerk innerhalb weniger Minuten wieder verfügbar sein.

Hier einige Ideen, wie man die Ausfallsicherheit erhöhen kann:

  • qualitative Hardware → gute Hardware kostet zwar mehr, aber sie läuft oft stabiler
  • Backups, Backups → Konfigurationen, Daten, Virtuelle Maschinen, Container – an Backups führt kein Weg dran vorbei (Backups unbedingt auch testen!)
  • Monitoring → ein gutes Monitoring kann in manchen Fälle Fehler früh erkennen bzw. gibt einen Überblick, wo es im Netzwerk gerade Probleme gibt. So kann man schneller reagieren und ist nicht auf die Hinweise der Benutzer im Netzwerk angewiesen („Das Internet geht nicht mehr“, „Der Drucker ist kaputt“, …)
  • Fehlertoleranz erhöhen → auch „Failover“ genannt, d.h. zwei Netzteile im Server, mehrere Internetanschlüsse („Multi-WAN), zwei Firewalls, RAID, zwei Server, …
  • Ersatzteile vorhalten → Festplatten, Ersatzswitch, …
  • UPS/USW → Hardware bei Stromschwankungen schützen und Weiterbetrieb auch bei einem Stromausfall gewährleisten (für begrenzte Zeit)
  • „personelle Redundanz“ → besser zwei oder mehrere Administratoren bzw. Dienstleister (bei Abwesenheit durch Krankheit, Urlaub, …)
  • vorbeugende Wartungen

Fazit

Ein Schulnetzwerk ist sicher kein hochkritisches System, aber mit der fortschreitenden Digitalisierung der Schulen wird es immer wichtiger, dass die IT-Infrastruktur möglichst ohne Ausfälle erreichbar bleibt. An manchen Schulen wiegt ein Ausfall des Internets so schwer, dass kaum weiter gearbeitet werden kann (Onlinesysteme zur Verwaltung, Schulclouds, Online-Lernsysteme, Student Information Systems). Um die Ausfallsicherheit zu erhöhen, muss man nicht immer viel Geld in die Hand nehmen. Viel wichtiger ist, dass man auf einen Ausfall vorbereitet ist (v.a. bei den Single Point of Failures).

3 Kommentare

Der Beitrag Wie wichtig ist Hochverfügbarkeit in einem Schulnetzwerk? erschien zuerst auf .:zefanjas:..

Wie man ein mobiles Feinstaubmessgerät bauen kann

Von: zefanja
09. März 2019 um 09:45

Vor ca. einem Jahr habe ich beschrieben, wie man mit einem Raspberry Pi und einem Feinstaubsensor die Luftqualität messen kann. Das Setup setzen wir so seit einigen Jahren bei uns in der Schule bzw. auch privat ein. Einen Nachteil hat dieses Projekt allerdings: es ist nicht mobil, sondern abhängig von einem WLAN-Netz bzw. einer Netzwerkverbindung. Wenn der Raspberry Pi und das Smartphone / ein Rechner nicht im gleichen Netz sind, kann man nicht auf die Messdaten zugreifen. Deshalb haben wir vor einiger Zeit den Raspberry Pi um einen kleinen Bildschirm ergänzt, sodass man die Werte direkt am Gerät ablesen kann. Wie man diesen Bildschirm für unser mobiles Feinstaubmessgerät einrichtet und welche zusätzlichen Konfigurationen notwendig sind, möchte ich in diesem Artikel kurz vorstellen.

Bildschirm für den Raspberry Pi einrichten

Auf Amazon oder AliExpress gibt es verschiedene Displays für den Raspberry Pi. Diese reichen von ePaper-Screens bis hin zu LCDs mit Touchfunktion. Wir haben uns für einen 3,5″ LCD mit Touch entschieden, welcher eine Auflösung von 320×480 Pixel hat (Modell MPI3501). Man kann diesen Bildschirm einfach auf die GPIO Pins stecken. Dazu kostet er gerade mal 10-15€. Schön ist auch, dass er mit 3,5″ genauso groß wie ein Raspberry Pi ist.

Wenn man den Bildschirm aufsteckt und den Raspberry Pi startet, bleibt der Bildschirm weiß. Man muss zuerst noch die passenden Treiber für das Display installieren. Dazu meldet man sich per SSH an und führt folgende Befehle aus:

$ rm -rf LCD-show
$ git clone https://github.com/goodtft/LCD-show.git
$ chmod -R 755 LCD-show
$ cd LCD-show/

Je nach Bildschirmmodell muss man nun den passenden Befehl ausführen um die Treiber zu installieren. In unserem Fall (für das Modell MPI3501):

$ sudo ./LCD35-show

Dieser Befehl installiert die entsprechenden Treiber und startet den Raspberry Pi anschließend neu.

Pixel-Desktop installieren und Autostart einrichten

Damit wir die Website mit den Messwerten direkt beim Start auf dem Bildschirm angezeigt bekommen sind noch einige Schritte notwendig. Zuerst muss man die Pixel-Desktopumgebung installieren (falls man bisher Raspian Lite verwendet hat) mit

$ sudo apt install raspberrypi-ui-mods

Dann fehlt noch der Chromium-Browser, um die Website anzuzeigen:

$ sudo apt install chromium-browser

Standardmäßig ist der Autologin für das Benutzer „pi“ nicht eingerichtet. Dies ist aber notwendig, damit die Messwerte direkt nach dem Start angezeigt werden können, ansonsten begrüßt einen nur der Anmeldebildschirm. Den Autologin kann man über das raspi-config Programm einrichten:

sudo raspi-config

Im Menü wählt man dann 3 Boot OptionsB1 Desktop / CLI B4 Desktop Autologin.

Zu guter Letzt fehlt noch die Einrichtung des Autostarts, damit Chromium nach dem Booten automatisch mit der AQI-Seite gestartet wird. Dazu legt man den Ordner /home/pi/.config/lxsession/LXDE-pi/ an:

$  mkdir -p /home/pi/config/lxsession/LXDE-pi/

Anschließend erstellt man in diesem Ordner die Datei autostart

$ nano /home/pi/.config/lxsession/LXDE-pi/autostart

und fügt diesen Inhalt ein:

#@unclutter
@xset s off
@xset -dpms
@xset s noblank

# Chromium im Vollbild beim Start öffnen
@chromium-browser --incognito --kiosk http://localhost

Möchte man noch den Mauszeiger ausblenden, muss man noch das Paket unclutter installieren und am Anfang der autostart das Kommentarzeichen entfernen:

$ sudo apt install unclutter

mobiler Feinstaubsensor

Da ich im letzten Jahr ein paar kleine Änderungen am Code vorgenommen habe, empfiehlt es sich das Skript und die Dateien der AQI-Website neu herunterzuladen (wie das geht, steht im Originalartikel).

Fazit

Durch das Display hat man nun ein mobiles Feinstaubmessgerät. Wir setzen sie an unserer Schule ein um z.B. die Qualität der Luft in den Klassenzimmern zu überprüfen oder um Vergleichsmessungen durchzuführen. Mit diesem Setup ist man nicht mehr auf eine Netzwerkverbindung oder WLAN angewiesen, sondern kann die kleine Messstation überall einsetzen – mit einer Powerbank sogar noch unabhängig vom Stromnetz.

2 Kommentare

Der Beitrag Wie man ein mobiles Feinstaubmessgerät bauen kann erschien zuerst auf .:zefanjas:..

Open Source Digital Signage für Schulen

Von: zefanja
03. April 2019 um 03:43

Digital Signage oder „Digitale Beschilderung“ bietet auch für Schulen neue Möglichkeiten. Was früher mit Aushängen an sogenannten „schwarzen Brettern“ oder Informationstafeln gelöst wurde, wird zunehmend von Monitoren übernommen. Egal ob Hinweise zu kommenden Veranstaltungen, Vertretungspläne, Raumbeschilderung oder sonstige wichtige Informationen – vieles lässt sich flexibler auf Monitoren darstellen. Aktualisierungen kann man von zentraler Stelle aus vornehmen bzw. auch automatisieren (z.B. beim Vertretungsplan). Welche Open Source Digital Signage Lösungen gibt es? Was könnten Anforderungen sein, die man als Schule hat? Ich möchte heute einige Lösungen auflisten, die in späteren Artikeln noch einmal genauer beleuchtet werden sollen.

Was sollte ein Digital Signage System können?

Die Anforderungen werden sicher von Schule zu Schule verschieden sein, aber es gibt doch ein paar wesentliche Eigenschaften, die von einer Open Source Digital Signage Lösung erfüllt sein sollten:

  • einfach zu benutzen (z.B. Editor zum Erstellen von Folien / Slides)
  • einfache und schnelle Darstellung von Bilder, Videos und anderen Dokumenten
  • zentrale Verwaltung mehrerer Monitore (am besten mit verschiedenen Gruppen / Kanälen, um verschiedene Informationen auf verschiedenen Monitoren anzeigen zu können)
  • Möglichkeiten zur Automatisierung / Zeitplan
  • möglichst kostenfrei (Lizenzen oder monatliche Gebühren)

Welche Open Source Digital Signage Lösungen gibt es?

Wenn man sich nach Open Source Digital Signage Lösungen umschaut, wird man schnell fündig. Allerdings sind viele von den sogenannten „Open Source“ Lösungen eher Freemium – Lösungen bzw. nur teilweise Open Source. Ich habe keine dieser Lösungen bisher selbst im Einsatz gehabt. In den kommenden Monaten werde ich mir aber einige dieser Lösungen anschauen, da wir als Schule noch auf der Suche nach einem passenden Digital Signage System sind.

Screenly OSE

Wenn auf Github nach Digital Signage schaut, ist Screenly OSE mit Abstand das populärste System. Screenly OSE ist für den Raspberry Pi konzipiert. Es bietet grundlegende Features, allerdings muss beim Einsatz mehrerer Geräte, jeder Raspberry Pi einzeln verwaltet werden. Die Unterschiede zur Bezahlversion sind hier aufgelistet.auch

Xibo

Direkt hinter Screenly OSE folgt Xibo, wenn man nach der Anzahl der Sterne auf Github geht. Xibo gibt es schon eine ganze Weile. Im Gegensatz zu Screenly gibt es keine Pro vs. Open Source Version, sondern alle Features sind für alle verfügbar. Xibo besteht aus einem CMS, welches man auch in einem Docker-Container installieren kann und den zugehörigen Player, die auf den Anzeigegeräten selbst installiert werden. Der Player für Windows ist kostenfrei und Open Source, für alle anderen Player müssen Lizenzgebühren bezahlt werden. Es gibt den Xibo Player für Windows, Android und webOS. Ein Player für Linux ist wohl geplant, aber noch nicht verfügbar.

Concerto

Ebenfalls schon länger am Markt ist Concerto. Concerto bietet viele Features und kann selbst gehostet werden. Technisch basiert es auf Ruby. Wenn man sich in dem Projekt auf Github etwas umschaut, scheint die Entwicklung etwas zu stocken. Dem Webinterface sieht man sein Alter auch schon etwas an. Insgesamt aber eine 100% Open Source Lösung.

LibreSignage

LibreSignage ist noch recht neue Open Source Lösung und zu 100%, Browser basiert. Es braucht also keine speziellen „Player“, sondern kann über den Browser benutzt werden. Grundlegende Features und auch Mehrbenutzerbetrieb sind vorhanden.

Foyer

Foyer ist ein WordPress-Plugin. Man kann damit verschiedene Seiten erstellen, Kanäle und verschiedene Displays diesen Kanälen zuweisen. Es ist wie LibreSignage Browser basiert und braucht deshalb keinen besonderen Player.

tabula.info

Tabula.info ist die einzige Lösung, die ich gefunden habe, die speziell für Schulen entwickelt wurde. Es bietet viele nette Features, die in man in einer Schule braucht und ist auf die Anzeige von Vertretungsplänen, HTML-Seiten und zusätzlichen Infos spezialisiert.

Weitere Lösungen

Infobeamer

Infobeamer ist nur für den privaten, nicht öffentlichen Gebrauch kostenfrei. Sonst ist wohl eine der leistungsstärksten und flexibelsten Lösungen. Die Hardware eines Raspberry Pi’s wird maximal ausgenutzt (z.B. Hardwarebeschleunigung – ein Nachteil, den alle Browser basierten Lösungen haben).

Display Monkey

Display Monkey ist ebenfalls eine Open Source Lösung, die allerdings einen Windows Server voraussetzt. Die einzelnen Displays brauchen nur einen Browser.

piSignage

Eine weitere Lösung für Digital Signage ist piSignage. Der Server ist OpenSource und kann auch selbst gehostet werden. Für die einzelnen Displays / Players müssen aber Lizenzen gekauft werden (einmalig). Wie der Name vermuten lässt, verwendet piSignage Raspberry Pi’s als Player. Der Code dafür ist nicht Open Source.

Fazit

Auf den ersten Blick gibt es scheinbar viele Open Source Lösungen. Welche kennst du noch, die hier fehlen? Mit welchem Systemen hast du gute Erfahrungen gemacht? Der Praxistest wird zeigen, welche Lösung für unsere Situation am besten geeignet ist.

11 Kommentare

Der Beitrag Open Source Digital Signage für Schulen erschien zuerst auf .:zefanjas:..

Bootzeit mit Systemd analysieren

Von: Niko
07. April 2019 um 12:08
Systemd Analyze Beitrag

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.

Ausgabe von systemd-analyze blame

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.

Ausgabe von systemd-analyze als SVG-Grafik

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.

Bootzeit mit Systemd analysieren ist ein Beitrag von techgrube.de.

PHP-Seiten wie WordPress mit OPCache beschleunigen

Von: Niko
05. Mai 2019 um 10:58
PHP Speed Beitrag

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.

OPcache Gui

PHP-Seiten wie WordPress mit OPCache beschleunigen ist ein Beitrag von techgrube.de.

Xen Orchestra installieren und aktualisieren (Vollversion)

Von: zefanja
10. Mai 2019 um 12:24

An unserer Schule verwenden wir  Citrix Hypervisor (ehemals XenServer) (bald xcp-ng) für die Virtualisierung unseres Schulservers und anderer Anwendungen. Citrix liefert mit XenCenter ein Verwaltungstool für Windows. Damit kann man bequem alle virtuellen Maschienen verwalten und Einstellungen am Citrix Hypervisor vornehmen. Eine andere Möglichkeit ist Xen Orchestra. Es ist ein webbasiertes Tool, was noch einiges mehr als XenCenter kann. Auf der Website kann man sich eine fertig eingerichtete Appliance herunterladen. Diese ist allerdings von den Features stark eingeschränkt (man hat ca. 2 Wochen Zeit alle Features zu testen). Deshalb möchte ich einen kleinen Tipp weitergeben, wie man Xen Orchestra installieren kann – mit allen Features der Enterprice und Premium Edition.

Xen Orchestra installieren

Xen Orchestra ist eine Open Source Projekt, deshalb kann es sich jeder selbst den Quellcode nehmen und installieren. Die Anleitung dazu findet man in der offiziellen Dokumentation. Auf Github findet man auch ein Installationsskript, welches die Installation automatisch durchführt. Damit kann man Xen Orchestra in wenigen Schritten installieren. Auf einem frischen Ubuntu LTS Server muss man nur die folgenden Befehle ausführen:

$ sudo bash
$ curl https://raw.githubusercontent.com/Jarli01/xenorchestra_installer/master/xo_install.sh | bash

Das war es auch schon 🙂 Xen Orchestra kann man nun unter IP des Servers erreichen. Der Standard-Benutzername ist admin@admin.net, das Password admin.

Xen Orchestra installieren

Xen Orchestra aktualisieren

Wenn man Xen Orchestra fertig eingerichtet hat und sollte man es natürlich aktuell halten, um alle Sicherheitsupdates und neue Features zu bekommen. Eigentlich bringt jede Version einige neue Features mit, welche die Arbeit mit dem XenServer (bzw. xcp-ng) erweitern oder erleichtern. Der Autor des Installationsskript stellt ein weiteres Skript für die Aktualisierungen bereit. Zu finden ist es ebenfalls auf Github.

Das Aktualisierungsskript bietet verschiedene Optionen an. Zum einfachen Aktualisieren reicht der folgende Aufruf:

$ sudo bash
$ sudo curl https://raw.githubusercontent.com/Jarli01/xenorchestra_updater/master/xo-update.sh | bash

Nach wenigen Minuten ist Xen Orchestra wieder auf den aktuellen Stand!

Wer sich unwohl dabei fühlt ein Skript aus dem Netz als root laufen zu lassen, kann sich das Skript natürlich vorher noch genau anschauen, was es macht bzw. nicht macht 🙂

Fazit

Xen Orchestra ist ein tolles Projekt. Unser XenServer lässt sich damit leicht verwalten. Backups sind schnell angelegt (seit neustem auch Backups der Konfiguration von Xen Orchestra) inklusiver Benachrichtigungen (eMail oder nach Slack / Mattermost). Diese beiden Skripts haben uns das Leben sehr erleichtert. Ein großes Dankeschön an Jarli01!

1 Kommentar

Der Beitrag Xen Orchestra installieren und aktualisieren (Vollversion) erschien zuerst auf .:zefanjas:..

❌
❌