ubuntuusers.de

21. Februar 2018

Wenn man eine Alexa inkl. Smart HUB besitzt lassen sich sehr einfach die Lampen von Philips HUE einbinden und per Sprache steuern. Existiert bereits eine Hausautomation über openhab, so können die Aktoren ebenfalls über Alexa angesprochen werden.

Zunächst muss hierfür ein Konto bei https://myopenhab.org eingerichtet werden. Für die Einrichtung wird die openhab UUID und das openhab Secret benötigt.

Die UUID befindet sich unter /var/lib/openhab2/uuid und das Secret unter /var/lib/openhab2/uuid.

Nachdem das Konto eingerichtet wurde muss unter der PaperUI(MISC) das Modul openHAB Cloud Connector installiert werden, im Anschluss erfolgt unter Configuration => Services die Einrichtung. Nach einem Neustart ist es möglich über myopenhab.org die Aktoren zu schalten.

Für die Verbindung von Alexa zum myopenhab wird der entsprechende Skill benötigt.
Damit Aktoren beim Pairing gefunden werden, muss in der items.cfg beim Item der Paramter Lighting hinterlegt werden.

Switch Lampe "Lampe" (flur) ["Lighting"] {fs20="1B1111"}

Für das einfachere Ansprechen der Aktoren kann in der Amazon Alexa App ein anderer Name hingelegt werden als im openhab2.


Update

Ich wurde darauf hingewiesen das eine Integration von Amazon Alexa zu openhab auch möglich ist in dem in openhab die HUE Emulation genutzt wird und auf der Alexa der HUE Skill installiert wird. Somit ist der Onlinezugang zu myopenhab nicht notwendig.

Nachdem der Artikel über den Chromium Kiosk Modus für rege Diskussionen sorgt, möchte ich noch mal kurz auf den Autologin von Raspbian hinweisen.

Dieser funktioniert unter allen aktuellen Versionen, sowohl unter stable als auch beta mit dem Befehl 

sudo raspi-config

Danach muss im Menü unter Bootoptionen

Raspbian-desktop-autologin

der Bootmodus ausgewählt werden. In diesem Fall Desktop / CLI.

raspbian-autologin

Nun kann B4 Autologoin aktiviert werden und Raspbian meldet den User Pi automatisch an.

raspbian_autologinIch empfehle dringend das Standardpasswort des Pi Nutzers mit passwd zu ändern.

Update von Jessie auf Stretch

Falls auf ein neues System umgestellt werden soll, ist ein Update auf das aktuelle System Stretch (Buster ist noch Beta) möglich. Eine Neuinstallation ist aber meist der bessere Weg.

sudo apt-get update
sudo apt-get -y dist-upgrade
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/raspi.list
sudo apt-get update
sudo apt-get -y dist-upgrade

 

Neue Dokumentation

Seit einigen Tagen gibt es eine ausführliche Anleitung zur Installation von linuxmuster.net auf einem KVM-Virtualisierungshost in der offiziellen Dokumentation des Projekts. Wenn man dieser Anleitung folgt, hat man nach wenigen Stunden den KVM-Host, den linuxmuster.net Schulserver, die Firewall und einen Administrations-PC fertig eingerichtet.

Ergänzt wird das Ganze durch Bilder und Videos, welche die einzelnen Schritte noch mal visualisieren. In zwei weiteren Kapiteln stellt der Autor verschiedene Backup-Strategien vor und beschreibt die Einrichtung von VLANs auf dem Server.

Neben dieser neuen Dokumentation gibt es auch Leitfäden für die manuelle Installation sowie die Installation mit einem XenServer.

Neuigkeiten zu Version 7

Die Entwickler arbeiten weiter fleißig an der neuen Version 7 von linuxmuster.net. Aber auch die aktuelle Version 6.2 hat im vergangenen Monat einige Sicherheitsupdates sowie neue Features erhalten (v.a. Linbo).

Noch gibt es keine Beta-Version von linuxmuster.net v7, aber wer sich ein Testsystem installieren will, findet im Github-Wiki eine Installationsanleitung inkl. fertiger Virtualbox-Images. Insgesamt wird es wohl noch einige Monate dauern, bis es ein Release geben wird.

Kommentar hinzufügen

Der Beitrag linuxmuster und KVM – neue Dokumentation erschien zuerst auf .:zefanjas:..

20. Februar 2018

In den letzten Wochen gab es bereits einige Meldungen, welche die unverschlüsselte Übertragung von Daten betreffen. Ganz im Zeichen dieser Meldungen werden zwei Web-Features, welche schon länger Bestandteil der Web-Plattform sind, in Beta-Versionen von Firefox 60 und schließlich ab der finalen Version von Firefox 62 nur noch über HTTPS und nicht länger über HTTP funktionieren.

Zum Schutz der Sicherheits und Privatsphäre der Nutzer sind alle großen Browserhersteller bemüht, die Verschlüsselung von Daten im Web voranzutreiben. Mozilla stellt hierbei keine Ausnahme dar und wird vor allem ab Firefox 60 einige Änderungen bereitstellen, welche die unverschlüsselte Übertragung von Daten betreffen. So wird Firefox ab Version 60 im privaten Modus alle über HTTP aufgerufenen Webseiten als unsicher markieren und außerdem zwei neue Einstellungen zur Verfügung stellen, um die Warnungen bei HTTP noch deutlicher zu machen. Auch zur Deaktivierung des unverschlüsselten FTP-Protokolls wird es ab Firefox 60 eine Einstellung geben. Anfang des Monats hatte Mozilla angekündigt, neue Web-Features nur noch über HTTPS verfügbar zu machen.

Zunächst einmal werden aber zwei Web-Features nur noch über HTTPS verfügbar sein, die nicht neu, sondern schon länger Bestandteil von Firefox sind. Dies betrifft zum einen den AppCache, ein Standard, der bereits seit Firefox 44 deprecated ist und mittelfristig aus Firefox entfernt werden soll. Die modernere und bessere Alternative hierzu sind Service Workers, die seit dem ersten Tag nur über HTTPS verfügbar sind. Das andere Web-Feature ist registerProtocolHandler(), was von Webseiten benutzt werden kann, um einen eigenen Protokoll-Handler zu implementieren, beispielsweise um mailto:-Links in einem Webmailer zu öffnen. Die Nutzung dieses Features liegt laut Telemetrie-Daten von Google für Chrome bei gerade einmal 0,002836 Prozent aller HTTP-Anfragen.

Beide Web-Features werden in jeweils der ersten Hälfte der Beta-Phase von Firefox 60 und Firefox 61 nur noch über HTTPS und nicht länger über HTTP funktionieren. Läuft alles nach Plan, erreicht diese Änderung mit Firefox 62 die finale Version des Mozilla-Browsers.

Dies ist nicht das erste Mal, dass ein bestehendes Web-Feature nachträglich nur noch über HTTPS zugänglich gemacht wird. Seit Firefox 55 kann die Geolocation-API nicht mehr über HTTP genutzt werden.

Basierend auf den Telemetrie-Daten von Firefox erfolgen mittlerweile beinahe 70 Prozent aller Webseiten-Aufrufe über HTTPS. In Deutschland sind es sogar fast 75 Prozent, in den USA über 78 Prozent.

Der Beitrag Firefox 60/62: Zwei bestehende Web-Features nur noch über HTTPS erschien zuerst auf soeren-hentzschel.at.

19. Februar 2018

Die Verschlüsselung von Daten spielt eine wichtige Rolle für die Sicherheit. Dies betrifft nicht nur die Verwendung von HTTPS anstelle von HTTP. Auch über das FTP-Protokoll können Daten unverschlüsselt übertragen werden. Firefox 60 besitzt eine neue Einstellung, um das FTP-Protokoll vollständig in Firefox zu deaktivieren.

Die Browserhersteller machen Ernst bei ihrem Vorhaben, Verschlüsselung voranzutreiben. Ob Chrome, Firefox oder Safari – die Verwendung von HTTP anstelle von HTTPS erzeugt unter immer mehr Voraussetzungen Warnungen im Browser. Vor Kurzem hat Mozilla angekündigt, neue Web-Features nur noch über HTTPS verfügbar zu machen, Firefox 60 markiert im privaten Modus alle über HTTP aufgerufenen Webseiten als unsicher und Firefox 60 kommt ebenfalls mit neuen Einstellungen, um die Warnungen noch deutlicher zu machen.

Basierend auf den Telemetrie-Daten von Firefox erfolgen mittlerweile beinahe 70 Prozent aller Webseiten-Aufrufe über HTTPS. In Deutschland sind es sogar fast 75 Prozent, in den USA über 78 Prozent.

Doch nicht nur über das HTTP-Protokoll können Daten unverschlüsselt übertragen werden, sondern auch über das FTP-Protokoll, welches mittelfristig nicht mehr vom Browser unterstützt werden wird. Mozilla akzeptiert bereits seit über zwei Jahren nur noch Sicherheits-Fixes für die FTP-Unterstützung in Firefox.

In Firefox 60 hat Mozilla nun eine neue Einstellung implementiert, welche die Unterstützung des FTP-Protokolls komplett deaktiviert. Standardmäßig ist die Einstellung noch deaktiviert, das FTP-Protokoll also weiterhin unterstützt. Wer die Unterstützung deaktivieren möchte, kann über about:config den Schalter network.ftp.enabled per Doppelklick auf false setzen. Wird dann eine FTP-URL, zum Beispiel ftp://ftp.de.debian.org, aufgerufen, dann zeigt Firefox nicht länger eine Datei-Auflistung an, sondern behandelt die Eingabe als Suchbegriff und öffnet die Ergebnis-Seite der eingestellten Standard-Suchmaschine, da es sich dann um kein gültiges Protokoll mehr handelt.

Der Beitrag Firefox 60: Neue Einstellung zum Deaktivieren des FTP-Protokolls erschien zuerst auf soeren-hentzschel.at.

Manchmal möchte man ein Playbook bzw. Plays nur auf Hosts laufen lassen, welche gewissen Kriterien entsprechen. In diesem Beitrag möchte ich zwei Beispiele geben, wie sich dies umsetzen lässt.

Playbook nur auf Hosts mit Red Hat Betriebssystem ausführen

Das Modul group_by [1] wird genutzt, um während des Laufs eines Playbooks dynamisch Gruppen von Hosts zu erstellen, auf welche man später weitere Plays anwendet.

---
- hosts: all

  tasks:
    - name: Group by OS

      group_by: key=os_{{ ansible_distribution }}
      changed_when: False

- hosts: os_RedHat
  roles:
    - common

Zu Beginn eines Playbook-Laufs wird das Modul setup [2] ausgeführt, um Variablen mit nützlichen Informationen über die Nodes zu belegen. Die Variable ansible_distribution enthält dabei ein Schlüsselwort für eine bestimmte Distribution.

In obigen Beispiel wird dabei die Gruppe os_RedHat erstellt. Im Folgenden werden dann alle Nodes dieser Gruppe der Rolle common zugeordnet.

Dieses Verfahren lässt sich natürlich auch für weitere Variablen anwenden. Möchte man sehen, welche Variablen belegt werden und genutzt werden können, kann sich die Rückgabe von setup in der Standardausgabe ansehen, wenn man das Modul manuell auf einigen Nodes ausführt.

Plays nur auf bestimmten Nodes ausführen

Ein weiteres Beispiel habe ich auf ITrig [4] gefunden:

---
- name: install open-vm-tools
  hosts: vmwareclients
  gather_facts: True
  become: true
  become_user: root
  tasks:
- name: debian install open-vm-tools
  apt: name=open-vm-tools state=present
  when: ansible_os_family == "Debian" and ansible_virtualization_type == "VMware"

- name: centos install open-vm-tools
  yum: name=open-vm-tools state=present
  when: ansible_os_family == "RedHat" or ansible_distribution == 'CentOS' and ansible_virtualization_type == "VMware"

Hier werden Ansible Conditionals [3] verwendet, um zu bestimmen, auf welchen Nodes ein Play ausgeführt wird. Auch hier werden wieder Variablen ausgewertet, welche durch das Modul setup [2] belegt wurden.

In obigen Beispiel wird dies genutzt, um die open-vm-tools mit einem Playbook sowohl auf Debian und RedHat/CentOS Systemen zu installieren.

Quellen

  1. group_by – Create Ansible groups based on facts {en}
  2. setup – Gathers facts about remote hosts {en}
  3. Conditionals {en}
  4. Ansible Playbooks auf Servern mit SSH Key Authentifizierung verwenden {de}

17. Februar 2018

Normalerweise haben die Links auf Artikel mit Bolt CMS den Aufbau https://fryboyter.de/entry/Titel-des-Artikels. Die habe ich mittels der Routingfunktion auf https://fryboyter.de/Titel-des-Artikels umgebogen. Soweit so gut.

Zum Erzeugen des kompletten RSS-Feeds nutze ich allerdings die Erweiterung bolt-extension-rssfeed. In dieser ist die URL dann allerdings wieder https://fryboyter.de/entries/Titel-des-Artikels. An sich kein Problem, da die Artikel mit und ohne /entries aufgerufen werden können. Wäre da nicht Isso Comment.

Isso Comment verknüpft die Kommentare und Artikel anhand des Titels. Und da ist der mit /entries eben ein andere als ohne. Ruft nun jemand einen Artikel über den globalen RSS-Feed auf und gibt einen Kommentar ab, wird die URL mit /entries in der Isso-Datenbank gespeichert. Da ich aber eben die Artikel dank des Routings ohne /entries veröffentliche tauchen die Kommentare somit auch nicht auf, so dass ich hier immer in der SQLite-Datenbank herumpfuschen muss. An sich kein Problem es nervt aber trotzdem.

Im Template für den RSS-Feed oben genannter Erweiterung gibt es folgende Codezeile.

<link>{{ url('contentlink', { 'contenttypeslug': record.contenttype.singular_slug, 'slug': record.slug } ) }}</link>

In meinem nicht mehr ganz so jugendlichen Leichtsinn habe ich mir gedacht es reich hier einfach ‘contenttypeslug’: record.contenttype.singular_slug, zu entfernen. Pustekuchen. Sobald man versucht den Feed aufzurufen bekommt man eine unschöne Fehlermeldung. Zum einen reichen meine Programmierkenntnisse hier definitiv nicht aus, dass Problem zu lösen und zum anderen müsste ich nach jedem Update der Erweiterung diese anpassen. Also muss, zumindest vorübergehend, eine andere Lösung her.

Schlussendlich habe ich einfach die .htaccess-Datei für Bolt CMS angepasst. In dieser haben ich den Bereich <IfModule mod_rewrite.c> gesucht und in diesem folgende Zeile eingetragen.

RewriteRule ^entrie/(.+)$ https://fryboyter.de/$1 [R=301,L]

Abschließend noch den Cache von Bolt CMS gelöscht und fertig. Ruft nun jemand einen Link mit /entrie/ auf, wird er automatisch auf die Version ohne /entrie/ umgeleitet. Ich denke das ist derzeit die beste Lösung mit der ich nicht an der Erweiterung herumpfuschen muss.

16. Februar 2018

Terminal Shortcuts Beitragsbild

Wer intensiver mit Linux Betriebssystemen arbeitet wird an der Kommandozeile nicht vorbei kommen. Und mit der Zeit wird man sich sicherlich mit ihr anfreunden. Bei der Arbeit mit grafischen Benutzeroberflächen wechselt man mit der Hand ständig zwischen Maus und Tastatur. Die Kommandozeile wird aber nur mit der Tastatur bedient. Was liegt also näher als sich das Leben mit dem Terminal weiter zu erleichtern indem man verschiedene Tastenkombinationen nutzt.

Einige Tastenkombinationen gehen einem schnell in Fleisch und Blut über, wie z.B. Strg +c zum abbrechen von Skripten. Es gibt aber auch eine Vielzahl von Hotkeys, die nicht so gängig sind und deren Vorhandensein ich auch durchaus schon vergessen habe.

Aus diesem Grund schreibe ich nun diesen Notizzettel mit Tastenkombinationen für das Linux Terminal. Untenstehende Shortcuts haben bei mir mit einer BASH im Gnome-Terminal und Tilix funktioniert.

Terminal Hotkeys in der Übersicht

Strg + c bricht den gerade laufenden Befehl, oder das gerade laugfende Skript ab.
Strg + d Schließt das Terminal-Fenster. Entspricht dem Befehl exit.
Strg + l Leert das Terminal-Fenster. Entspricht dem Befehl clear
Strg + u Löscht alle Zeichen vom Zeilenanfang bis zur aktuellen Cursorposition
Strg + k Löscht alle Zeichen von der aktuellen Cursorposition bis zum Zeilenende
Strg + r Durchsucht die Bash-History nach bereits verwendeten Befehlen. Ein gefundener Befehl wird mit Return ausgeführt, oder mit ALT+Return in die Kommandozeile übernommen ohne ihn auszuführen
Strg + p (oder Pfeil nach oben) Scrollt in der Bash-History zurück
Strg + n (oder Pfeil nach unten) Scrollt in der Bash-History vorwärts
TAB Tab-Completion. Vervollständigt Befehle, Dateinamen oder Pfade wenn nur die ersten Zeichen eingegeben wurden.
Strg + Umschalt + c Markierten Text in die Zwischenablage kopieren
Strg + Umschalt + v Test aus der Zwischenablage in das Terminal einfügen.

Dass man den Cursor mit den Pfeiltasten vor- und zurück bewegen kann, ist man auch aus anderen Programmen gewohnt. Auf der Kommandozeile kann der Cursor mit Terminal Hotkeys noch sehr viel flexibler bewegt werden.

Alt + b Bewegt den Cursor um ein Wort nach links
Alt + f Bewegt den Cursor um ein Wort nach rechts
Strg + a (oder Pos1) Bewegt den Cursor an den Zeilenanfang
Strg + e (oder Ende) Bewegt den Cursor an das Zeilenende

Dieser Text ist lizensiert unter einer Creative Commons Namensnennung 4.0 International Lizenz.
Titelbild von Geralt / Pixabay unter Creative Commons CC0

Linux Terminal Hotkeys ist ein Beitrag von techgrube.de.

Manch einer automatisiert seine IT Umgebung via Ansible. Das Orchestrierungstool arbeitet über SSH und benötigt keine Agenten auf den Zielsystemen.

Ansible

 

Da gut konfigurierte Systeme neben einem Passwort durch einen SSH Key geschützt sind, muss beim Ausrollen eines Playbooks über die Kommandozeile theoretisch für jedes System ein Key geladen und ein Passwort eingegeben werden.

Dies lässt sich mit einem kleinen Trick umgehen, bzw. optimieren. Ich setze hier voraus, dass Geräte bereits für SSH Key Auth eingerichtet worden sind.

Ansible Playbooks mit SSH Keys nutzen

Soll ein Playbook ausgerollt werden, muss im Vorfeld der nötige Key eingelesen werden.

eval $(ssh-agent)

Enter passphrase for /home/itrig/.ssh/id_rsa: ******************

                Identity added: /home/itrig/.ssh/id_rsa

Nun kann das gewünschte Playbook ausgerollt werden.

ansible-playbook -l hostliste playbook.yml --ask-become-pass

Ein sudo Passwort wird weiterhin abgefragt, die Abfrage der Passphrase für jede Verbindung fällt nun jedoch weg. 

Nun bleibt noch die Frage, was ist eval?

eval: eval [arg ...]

    Execute arguments as a shell command.

    Combine ARGs into a single string, use the result as input to the shell,

    and execute the resulting commands.

    Exit Status:

    Returns exit status of command or success if command is null.

eval [arg ...]

    The  args  are read and concatenated together into a single com-

    mand.  This command is then read and executed by the shell,  and

    its  exit status is returned as the value of eval.  If there are

    no args, or only null arguments, eval returns 0.

 

Fertige Playbooks oder Beispiele lassen sich in der Ansible Galaxy finden.

Beispielsweise für eine Paketinstallation auf Linuxsystemen:

Ansible Playbook zur Installation der Open VMware Tools

- name: install open-vm-tools
  hosts: vmwareclients
  gather_facts: True
  become: true
  become_user: root
  tasks:
- name: debian install open-vm-tools
  apt: name=open-vm-tools state=present
  when: ansible_os_family == "Debian" and ansible_virtualization_type == "VMware"

- name: centos install open-vm-tools
  yum: name=open-vm-tools state=present
  when: ansible_os_family == "RedHat" or ansible_distribution == 'CentOS' and ansible_virtualization_type == "VMware"

 

Es gibt viele Dinge, die ich an linuxmuster.net toll finde, aber eines der besten Features ist Linbo. Linbo (Linux Network Boot) ist ein Mini-OS, mit dem wir alle unsere Rechner verwalten. Mit Linbo registrieren wir neue Rechner im Netz, erstellen neue Images und verteilen sie wiederum auf andere Computer in unserem Schulnetzwerk. Für Schüler und Lehrer ist Linbo eher ein Bootmanager mit dem sie ihr gewünschtes Betriebssystem auswählen oder zurücksetzen können.

Was an Linbo so besonders ist und warum es uns sehr sehr viel Zeit einspart, möchte ich in diesem Artikel erklären.

Computer registrieren

In linuxmuster.net müssen alle Computer, bevor sie von Linbo verwaltet werden können, registriert werden. Jeder Rechner bekommt eine IP-Adresse, eine Rechner-Gruppe, einen Raum und einen Hostnamen. Dazu bootet man den Rechner einfach über das Netzwerk und wählt in Linbo den Tab „Imaging„. Es erscheint ein Dialog, in dem man alle Infos eintragen kann. Wenn man mehrere Rechner in einem Raum aufnimmt, füllt Linbo die meisten Felder automatisch aus.

register-dialog

Diese Infos sind wichtig, um später Einstellungen für einzelne Räume oder Rechnergruppen vorzunehmen. Ein Beispiel dafür ist die Einrichtung von Epoptes, einer Klassenraummanagement-Software.

Images erstellen

Mit Linbo kann man Abbilder von Partitionen erstellen („Images“), die man dann später auf andere Rechner verteilt. Das erleichtert die Verwaltung von vielen Rechnern enorm, da man i.d.R. nur ein Master-Image erstellt und es dann an mehreren Rechner nutzt. Da Linbo ein Abbild der Partition erstellt, unterstützt es fast jedes Betriebssystem (Ubuntu, Windows, …). Im Reiter „Imaging“ hat man verschiedene Optionen zur Auswahl.

linbo-imagingscreen

Über den Button „Image erstellen“ kann man ein Abbild erstellen und es gleich auf den Server hochladen.

Rechner synchronisieren (auch offline!)

Hat man einmal ein Image erstellt und auf den Server hochgeladen, kann das Image an andere Rechner verteilt werden. Dazu startet man wieder den Rechner über das Netzwerk und drückt einfach den gelben oder roten Button. Der Unterschied ist, dass bei einem Klick auf „Neu und Start“ (roter Button), die Partition vorher noch formatiert wird. Bei einem normalen Sync wird rsync im Hintergrund ausgeführt.

linbo-mainscreen-registered

Linbo lädt vor dem Synchronisieren das komplette Image auf den Rechner herunter. Unser Ubuntu-Image ist ca. 4,1GB groß, unser Windows 10 Image ca. 12 GB (ein weiterer Grund, warum ich lieber auf Ubuntu setze :)). Dadurch, dass das Image heruntergeladen wird, funktioniert die Synchronisation auch offline. Ist das System z.B. durch einen USB-Stick mit einem Virus infiziert worden oder man hat etwas kaputt konfiguriert, synchronisiert man den Rechner einfach neu und schon hat man wieder den gewünschten Ist-Zustand zurück. Ein tolles Features, was vor allem in Schulen enorm wichtig ist, wo mehrere hundert Schüler einen Computer / Woche benutzen.

Linbo Werkzeuge

linuxmuster.net bringt einige Kommandozeilen-Werkzeuge mit, die man vom Server aus benutzen kann: linbo-ssh, linbo-remote und linbo_wrapper.

linbo-ssh

Mit linbo-ssh kann man sich auf jedem Rechner einloggen, auf dem Linbo gestartet wurde. Dazu reicht es, wenn man hinter dem Befehl des Hostnamen des Rechners eingibt, z.B.

$ linbo-ssh r100-pc01

linbo_wrapper

Wenn man sich mit linbo-ssh an einem Rechner angemeldet hat, kann mit linbo_wrapper alle Befehle durchführen, die auch in der GUI verfügbar sind. Um z.B. den Rechner zu formatieren und anschließend das erste Betriebssystem zu synchronisieren, hilft folgender Befehl:

~$ linbo_wrapper partition sync:1

linbo_wrapper help gibt noch weitere Möglichkeiten aus.

linbo-remote

Dieser Befehl gehört für mich zu den besten Features, denn damit kann ich alles vom Server aus steuern, was ich auch manuell in der GUI machen kann. Die Einsatzmöglichkeiten sind sehr vielfältig:

  • einen ganze Rechnergruppe automatisch mit einem neuem Image versorgen (per Wake-on-Lan) z.B. mit
    $ linbo-remote -g fs -w 60 -c partition,format,initcache:torrent,sync:1,start:1
  • Rechner automatisch herunterfahren, die Linbo gestartet haben
  • alle Rechner jeden Morgen synchronisieren und das Betriebssystem der Wahl starten. So hat man immer ein frisches System, welches sofort einsatzbereit ist

Dadurch, dass linbo-remote ein ganz normales Kommandozeilen-Werkzeug ist, kann man es auch in andere Skripte einbauen, was die Anwendungsmöglichkeiten noch mal zusätzlich erweitert.

Wir nutzen dieses Werkzeug sehr gern, da man dadurch sehr viel automatisieren kann und weniger „Turnschuhadministration“ notwendig ist.

Fazit

Wer noch mehr über Linbo wissen möchte, findet in der Dokumentation noch zusätzliche Infos. Für mich ist es das Feature von linuxmuster.net. Ich habe bisher keine andere Möglichkeit kennengelernt, wie man viele Rechner mit so wenig Aufwand verwalten kann.

Welche Werkzeuge nutzt du, um mehrere Rechner zu verwalten? CloneZilla? FOG? FAI? Opsi?

2 Kommentare

Der Beitrag Warum Linbo eines der besten Features von linuxmuster.net ist erschien zuerst auf .:zefanjas:..

15. Februar 2018

Heute morgen hatte ich eine Datei mit 35 Gigabyte kopiert. Nach ein paar Minuten war ich mir unsicher ob der Vorgang noch läuft oder eventuell hängen geblieben ist. Hier wäre mir eine Fortschritsanzeige recht lieb gewesen.

Der Befehl cp bietet diese Funktion leider nicht an, und da er als “feature complete” gilt wird er es auch nie. Nach etwas Google Fu habe ich neben rsync das Projekt pycp gefunden. In diesem sind die Befehle pycp und pymv enthalten. Erster ist ein Ersatz für cp und zweiter für mv. Und alle beide bieten eine Anzeige für den Fortschritt, die Datenübertragungsrate und die geschätzte verbleibende Zeit. Das ganze sieht dann beispielsweise wie folgt aus. Anstelle von pycp kann man auch pymv nutzen um Dateien zu verschieben.

pycp Screenshot

Natürlich kann man das auch mit Konstrukten wie cp “file” “destination” && pv $(pidof cp) oder rsync -avP <Quelle> <Ziel> arbeiten. Aber pycp große_datei ~/Downloads ist mir einfach lieber. Hier siegt die Faulheit und ich installiere mir lieber ein Tool mehr auf den Rechner.

Viele Linux-Admins, die Hosts neu aufgesetzt haben, kennen dies: bei einem Connect über SSH mit der Neuinstallation haben sich natürlich auch die für den SSH-Betrieb nötigen Keys neu generiert und stimmen somit nicht mehr mit denen aus der known_hosts überein. Das Resultat: eine Man-in-the-Middle-Warnung. Die Warnung ist zwar richtig und gut, aber in diesem Fall nicht hilfreich. Unser SSH-Client muss einfach die Keys vergessen.

Hierfür gibt es insbesondere drei Ansätze: einen “sanften”, einen “harten” und einen temporären.

Variante 1: den Key über ssh-keygen entfernen. Klingt zwar etwas komisch, da man bei diesem Kommando lediglich an einen Keygenerator denkt, aber ssh-keygen übernimmt auch das Management der known_hosts.

ssh-keygen -R hostname [-f known_hosts_file]

Das ist die sicherste Methode, zudem wird automatisch ein Backup als .old der bisherigen Datei angelegt. Die Option -f ist nicht nötig, wenn die Standardpfade eingesetzt werden.

Variante 2: der “harte” Weg. Hier löschen wir die Zeile per sed raus. Diese Variante ist eher für erfahrene Admins gedacht. Die Zeilennummer liefert uns die Fehlermeldung.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:123456789.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/user/.ssh/known_hosts:60
ECDSA host key for my.dom.tld has changed and you have requested strict checking.
Host key verification failed.

Löschen geht dann über

sed -i '60d' /home/user/.ssh/known_hosts

Anpassungen bzgl. der Zeilennummer (hier 60) nicht vergessen!

Variante 3: known_hosts-Überprüfung temporär deaktivieren. Ich führe das der Vollständigkeit halber auf, da es in bestimmten Fällen hilfreich ist. Das Kommando ist aber nur für jene gedacht, die wissen, warum sie es abschalten. Immerhin setzt man damit bei dem jeweiligen Connect einen sinnvollen Sicherheitsmechanismus außer Kraft.

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no me@my.machine.tld

Hier wird einfach /dev/null als known_hosts-Pfad gesetzt und mit StrictHostKeyChecking=no eine Nachfrage für das Hinzufügen des Keys übergangen. Der SSH-Client sieht die Verbindung natürlich als erste Verbindung mit dem Host, weil er ja keinen Eintrag in der /dev/null dazu findet.

Weiterführende Infos

man ssh-keygen, man sed, Variante 3

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:oc_permissions[...]Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:
oc_permissions
[...]
Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:oc_permissions[...]Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

Ich wollte am Wochenende mal wieder etwas kaputt machen ausprobieren und habe mich etwas mehr mit PostgreSQL ausgesetzt. Die Einrichtung von PostgreSQL selbst war schnell erledigt. Um eine Grundlage für korrekte Einstellungen von PostgreSQL zu haben, kann ich PGTune empfehlen.

Voraussetzung um nun eine Nextcloud mit MySQL/MariaDB nach PostgreSQL zu migrieren:

  • Laufende Nextcloud-Instanz mit MariaDB/MySQL
  • Datenbank mit DB-Nutzer unter PostgreSQL einrichten

Ein Umschalten in den Maintenance-Modus ist nicht erforderlich/funktioniert auch gar nicht. Die Migration lässt sich sonst nicht durchführen.

Im Hauptverzeichnis der Nextcloud muss lediglich folgender Befehl ausgeführt werden:

./occ db:convert-type --all-apps --password "Passwort_der_PGDB" pgsql pgdbuser localhost nextclouddb

pgdbuser steht für den Datenbankbenutzer in PostgreSQL, nextclouddb ist der Name der Datenbank. Der Befehl wurde damals implementiert um SQLite-Datenbanken nach MariaDB zu konvertieren funktioniert allerdings auch so.
Der Befehlt führt die Konvertierung durch und passt anschließend automatisch die Konfiguration der Nextcloud an. Es kann vorkommen, dass ihr folgende Meldung mit diversen Tabellen erhaltet:

The following tables will not be converted:oc_permissions[...]Continue with the conversion?

Hier muss die Abfrage mit yes bestätigt werden. Weitere Details zur Konvertierung findet ihr in der Manual von Nextcloud. Zur Sicherheit sollte man abschließend noch ein occ maintenance:repair durchführen.

14. Februar 2018

In meinem letzten Artikel habe ich beschrieben, wie man Epoptes installieren und im Unterricht einsetzen kann. Wir verwenden an unserer Schule linuxmuster.net als Schulserver-Lösung. Eines der für mich besten Features in linuxmuster.net ist postsync. Mit Hilfe von Linbo (dem Bootmanager von linuxmuster.net) haben wir genau ein Image für alle unsere Ubuntu-Rechner und können trotzdem individuelle Anpassungen für einzelne Rechner oder ganze Räume vornehmen. Heute möchte ich deshalb beschreiben, wie man Epoptes in linuxmuster.net integriert. Für die Schüler- und Lehrerrechner müssen verschiedene Konfigurationen vorgenommen werden, doch dank postsync brauchen wir weiterhin nur ein „Master-Image“ pflegen.

Installation

Die Installation führen wir an einem Rechner, welcher mit Linbo verwaltet wird, durch. Dazu starten wir unser Ubuntu-Image (in unserem Fall Ubuntu 16.04) synchronisiert (Klick auf gelbes Symbol):

linbo-mainscreen-registered

Nach dem Starten melden wir uns als lokaler Administrator an (z.B. linuxadmin). Danach installieren wir die beiden Pakete epoptes und epoptes-client.

$ sudo apt install epoptes epoptes-client

Mehr ist an dieser Stelle erst einmal nicht zu tun, da wir die Konfiguration später vornehmen.

Vorbereitungen für neues Master-Image

Bevor wir ein neues Master-Image erstellen, müssen wir folgende Dateien auf einen USB-Stick oder gleich auf den linuxmuster.net Server kopieren und auf unserem Master-Image-PC löschen.

/etc/default/epoptes-client
/etc/default/epoptes
/etc/epoptes/server.crt
/etc/epoptes/server.key
/etc/xdg/autostart/epoptes-client.desktop
/etc/init.d/epoptes
/etc/init.d/epoptes-client
/usr/bin/epoptes
/usr/sbin/epoptes-client
/usr/share/applications/epoptes.desktop

Entweder wir verschieben die Dateien auf einen Wechselspeicher (z.B. mit sudo mv /etc/default/epoptes-client /media/linuxadmin/Wechseldatenträger/) oder per scp direkt auf den linuxmuster.net Server (siehe nächster Abschnitt).

Hinweis: Die Ordner, in denen sich die Dateien befinden, werden nicht gelöscht!

Postsync einrichten

Wir wollen nun die nötigen Einstellungen vornehmen, damit der Postsync am Ende auch die richtigen Anpassungen vornimmt. Die genaue Funktionsweise des Postsync-Features ist in der offiziellen Dokumentation erklärt. Deshalb müssen wir alle unserer Anpassungen für unser Ubuntu 16.04 Image (Xenial) unterhalb von /var/linbo/linuxmusterclient/xenial/ vornehmen.

Dazu erstellen wir folgende Verzeichnis:

  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/default/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/epoptes/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/init.d/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/etc/xdg/autostart/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/bin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/sbin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Computerraums/usr/share/applications/

Für unseren Lehrer-PC brauchen wir noch diese Verzeichnisse:

  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/default/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/epoptes/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/init.d/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/etc/xdg/autostart/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/bin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/sbin/
  • /var/linbo/linuxmusterclient/xenial/Name-des-Lehrer-Rechners/usr/share/applications/

Die Ordner können wir auf dem linuxmuster.net Server wie folgt anlegen (Raum und Lehrer-PC anpassen und für alle Ordner aus den Listen oben durchführen):

# Raum r100
$ mkdir -p /var/linbo/linuxmuster-client/xenial/r100/etc/default/
...
# Lehrer-PC r100-pc01
$ mkdir -p /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/
...

Sind alle Ordner angelegt, können wir nun die Epoptes-Dateien von unserem Master-Image-PC oder von unserem USB-Stick in die richtigen Verzeichnisse kopieren. Am einfachsten geht es, wenn man den passwortlosen Zugang zum Master-Image-PC eingerichtet hat.

Master-Rechner (aka Lehrer-PC)

Für den Lehrer-PC müssen wir folgende Dateien kopieren (vom Master-Image-PC):

  • /etc/default/epoptes  → Rechte 644
  • /etc/epoptes/server.key → Rechte 644
  • /etc/init.d/epoptes → Rechte 755
  • /usr/bin/epoptes → Rechte 755
  • /usr/share/applications/epoptes.desktop → Rechte 644

Mit scp sieht da so aus (für alle Dateien wiederholen und Zielpfade anpassen):

$ scp root@r100-pc01:/etc/default/epoptes /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/
...

Die Rechte könne mit chmod angepasst werden:

$ chmod 644 /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/epoptes
...

Da durch den Postsync erst alle Dateien aus dem Ordner /var/linbo/linuxmuster-client/xenial/r100/ synchronisiert werden, landen auch die Dateien des Epoptes Clients auf dem Lehrer-PC, was zu Problemen führt. Deshalb legen wir noch ein paar Dummy-Dateien an, um die Dateien des Epoptes-Clients wieder zu überschreiben:

$ cd /var/linbo/linuxmuster-client/xenial/r100-pc01/
$ touch etc/default/epoptes-client etc/xdg/autostart/epoptes-client.desktop etc/init.d/epoptes-client usr/sbin/epoptes-client

Client-Rechner (aka Schüler-PC)

Ähnlich wir zu unserem Lehrer-PC kopieren wir nun noch die Dateien für unsere Schüler-Rechner. Diese Dateien werden benötigt:

  • /etc/default/epoptes-client → Rechte 644
  • /etc/epoptes/server.crt→ Rechte 644
  • /etc/hosts → Rechte 644
  • /etc/xdg/autostart/epoptes-client.desktop → Rechte 644
  • /etc/init.d/epoptes-client → Rechte 755
  • /usr/sbin/epoptes-client → Rechte 755

Diese können wir wieder nach dem gleichen Muster wie oben per scp auf unseren Server vom Master-Image-Computer kopieren:

$ scp root@r100-pc01:/etc/default/epoptes-client /var/linbo/linuxmuster-client/xenial/r100/etc/default/ 
...

Die Rechte könne mit chmod angepasst werden:

$ chmod 644 /var/linbo/linuxmuster-client/xenial/r100/etc/default/epoptes-client
...

Nun sind alle Dateien am richtigen Ort und wir können Epoptes konfigurieren.

Epoptes konfigurien

Master-Rechner (aka Lehrer-PC)

Für den Lehrer-PC müssen wir nur in der Datei /var/linbo/linuxmuster-client/xenial/r100-pc01/etc/default/epoptes die SOCKET_GROUP von epoptes inSOCKET_GROUP=teachers ändern.

Client-Rechner (aka Schüler-PC)

Für die Schüler-Rechner müssen wir etwas mehr konfigurieren.

  • /var/linbo/linuxmuster-client/xenial/r100/etc/default/epoptes-client
    • SERVER=r100-pc01 – hier müssen wir den Namen des Lehrer-Rechners eintragen
    • Wer Wake-On-Lan nutzen möchte, muss das Kommentarzeichen vor WOL=g entfernen.
  • /var/linbo/linuxmuster-client/xenial/r100/etc/xdg/autostart/epoptes-client.desktop
    • X-GNOME-AutoRestart=true – Damit der Epoptes-Client auch bei einem Neustart des Displayservers neustartet, müssen wir hier wieder das Kommentarzeichen entfernen, .
  • /var/linbo/linuxmuster-client/xenial/r100/etc/hosts
    • Da es manchmal Probleme mit dem Epoptes-Client trotz korrekter Namensauflösung geben kann, ergänzen wir am Ende der Datei die IP des Lehrer-PCs (IP anpassen!):
      #Server für epoptes
      10.16.5.100 r100-pc01

Image erstellen

Jetzt können wir ein neues Master-Image auf unserem Master-Image-PC erstellen. Wichtig ist, dass man vorher alle unnötigen Dateien entfernt, damit das Image nicht unnötig groß wird (z.B. alte Kerneldateien, homes der Schüler und Lehrer löschen, Chronik von Firefox / Chrome bereinigen, …). Das Tool „LMLCC“ ist an dieser Stelle sehr sehr hilfreich.

Wichtig: Unbedingt die Dateien löschen, die unter „Vorbereitungen für neues Master-Image“ aufgelistet sind!

Nach dem Neustart des Rechners können wir in Linbo ein neues Image erstellen und auf den Server hochladen.

Postsync testen

Jetzt, da wir ein neues Image haben und Epoptes konfiguriert ist, müssen wir noch testen, ob auch alles funktioniert, wie es soll. Zuerst brauchen wir das Postsync-Skript. Es sollte in der Regel schon vorhanden sein oder man kann es sich hier herunterladen und nach /var/linbo/xenial.cloop.postsync kopieren (Rechte 664).

$ wget -O /var/linbo/xenial.cloop.postsync https://raw.githubusercontent.com/linuxmuster/linuxmuster-client-servertools/master/usr/lib/linuxmuster-client-servertools/generic.postsync
$ chmod 664 /var/linbo/xenial.cloop.postsync

Nun starten wir einen beliebigen Rechner in unserem Computerraum und synchronisieren ihn mit Linbo, indem wir auf das gelbe oder rote Synchronisationssymbol klicken. Danach startet der Rechner und alles sollte fertig eingerichtet sein.

Leider sieht man in Linbo nicht direkt, ob der Postsync geklappt hat oder nicht. Wir können uns aber vom Server aus in Linbo einloggen. Dazu starten wir wieder einen Rechner aus dem Computerraum und warten bis Linbo fertig gebootet hat. Dann können wir wie folgt den Rechner synchronisieren und dabei beobachten, was passiert:

$ linbo-ssh r100-pc02
# Dann in der Linbo-Shell
$ linbo_wrapper sync:1

Die 1 steht für das 1. Betriebssystem, d.h. wenn man ein Dual-Boot System mit Windows hat und Ubuntu das zweite System ist, müssen wir den Befehl anpassen.

Falls Fehler auftreten, werden sie in der Konsole angezeigt. Vor allem sollte man erkennen können, ob der Postsync überhaupt ausgeführt wird!

Wenn alle Rechner im Computerraum synchronisiert sind, kann Epoptes benutzt werden.

Fazit

Die Integration von Epoptes in linuxmuster.net hat für uns den großen Vorteil, dass wir weiterhin nur ein Ubuntu-Image pflegen müssen, aber trotzdem einzelne Rechner unterschiedlich zu konfigurieren (auch offline!). Für mich persönlich ist dieses eines der Killer-Features von linuxmuster.net (neben der großartigen Community!) Deshalb kann ich jedem, der sich für eine freie Schulserverlösung interessiert, linuxmuster.net sehr ans Herz legen.

Problemlösung

Epoptesdienst startet nach Kernelupdate nicht mehr

Falls nach einem Kernelupdate der Epoptesdienst nicht mehr startet, hilft es Epoptes vor dem Kernelupdate zu deinstallieren mit

$ sudo apt remove --purge eopoptes

Danach alle Updates durchführen, die epoptes Pakete erneut installieren, die notwendigen Dateien wieder entfernen (am besten die Dateien in lmlcc unter Bereinigen mit hinzufügen) und dann das Image neu schreiben.

2 Kommentare

Der Beitrag Wie man Epoptes in linuxmuster.net integrieren kann erschien zuerst auf .:zefanjas:..

13. Februar 2018

Die verschlüsselte Übertragung von Daten wird immer mehr zu einem Muss im Web. In Firefox 60 stellt Mozilla zwei neue Einstellungen bereit, um relativ deutlich zu warnen, wenn eine Webseite über HTTP und nicht über HTTPS übertragen wird.

Basierend auf den Telemetrie-Daten von Firefox erfolgen mittlerweile beinahe 70 Prozent aller Webseiten-Aufrufe über HTTPS. In Deutschland sind es sogar fast 75 Prozent, in den USA über 78 Prozent.

HTTPS-Statistik Februar 2018

Erst vor kurzem hat Mozilla angekündigt, neue Web-Features nur noch über HTTPS verfügbar zu machen. Außerdem werden Webseiten, die über HTTP und nicht über HTTPS übertragen werden, ab Firefox 60 im Privaten Modus mittels durchgestrichenem Schloss in der Adressleiste als unsicher markiert.

Außerdem kommen mit Firefox 60 zwei weitere Einstellungen in about:config dazu, welche die Warnung bei unverschlüsselter Übertragung noch deutlicher machen. Beide werden in Firefox 60 standardmäßig allerdings noch deaktiviert sein.

Wird security.insecure_connection_text.enabled via Doppelklick auf true gestellt, erscheint bei Webseiten, die nur über HTTP übertragen werden, der Schriftzug „Nicht sicher“ in der Adressleiste. Dies gilt sowohl für private als auch für nicht private Fenster. Außerdem kommt mit security.insecure_connection_text.pbmode.enabled noch eine zweite Einstellung dazu. Wird diese auf true gesetzt, dann erscheint dieser Schriftzug nur in privaten Fenstern.

Firefox 60 Unsichere Verbindung

Der Beitrag Firefox 60: Neue Einstellungen für deutliche Warnung bei HTTP anstelle von HTTPS erschien zuerst auf soeren-hentzschel.at.

Nachdem ich eine eigene Instanz von Searx, die searx.site aufgesetzt habe (zu der ich auch mein erstes Firefox-Addon veröffentlicht habe), wurde ich von einigen angesprochen, die Fragen zur Installation hatten oder bei denen es Probleme gab. Des Weiteren gibt es anscheinend bisher keine Anleitung, die z.B. auf das zusätzliche Einrichten des Filtron Proxys zum Schutz von Searx eingeht oder die die Einrichtung von Nginx mit Letsencrypt thematisiert. Daher ich beschlossen mich hier an einer Anleitung zu versuchen.

Hinweisen möchte ich aber mit Nachdruck noch einmal, dass zunächst das von den Entwicklern von Searx herausgegebene Tutorial beachtet werden sollte. Dort werden nötige Änderungen sicherlich schnell eingepflegt, was hier nicht unbedingt der Fall sein muss.

Diesem Tutorial folge ich hier in den ersten Schritten auch komplett. Unterschiede zu diesem mache ich deutlich und erläutere sie. Ich

Zunächst müssen die für Searx nötigen Pakete installiert werden (hier habe ich die Anleitung so verändert, dass ich Paket, die sonst später erst installiert werden, hier schon installiere):

Vorarbeiten

sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-babel zlib1g-dev libffi-dev libssl-dev uwsgi uwsgi-plugin-python nginx letsencrypt

Installation und Einrichtung von Searx

Anschließend kann Searx installiert werden und der Searx-Nutzer angelegt werden:

cd /usr/local
sudo git clone https://github.com/asciimoo/searx.git
sudo useradd searx -d /usr/local/searx
sudo chown searx:searx -R /usr/local/searx

Nun werden die Abhängigkeiten in einem virtualenv installiert:

sudo -u searx -i
cd /usr/local/searx
virtualenv searx-ve
. ./searx-ve/bin/activate
./manage.sh update_packages

Danach kann ein Key für Searx erzeugt und in die Konfigurationsdatei eingefügt werden:

sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml

Nun kann Searx schon gestartet werden, indem man

python searx/webapp.py

eingibt.

Mit Hilfe eines Browsers, der in der Konsole läuft, wie z.B. links2, kann man nun überprüfen, ob alles korrekt läuft. Hierzu einfach http://localhost:8888 eingeben.

Wenn alles korrekt läuft die Debug-Option in der settings.yml deaktivieren:
sed -i -e "s/debug : True/debug : False/g" searx/settings.yml

Nun kann die virtuelle Umgebung und der Searx-Nutzer beendet werden. Hierfür zweimal exit eingeben.

Anschließend folgende UWSGI-Konfig-Datei erstellen (hier habe ich im Gegensatz zu Original-Anleitung noch eine Ergänzung für die Zusammenarbeit mit dem Filtron-Proxy vorgenommen, s. Anmerkung)

nano /etc/uwsgi/apps-available/searx.ini

Dies einfügen:

[uwsgi]
# Who will run the code
uid = searx
gid = searx

# disable logging for privacy
disable-logging = true

# Number of workers (usually CPU count)
workers = 4

# The right granted on the created socket
chmod-socket = 666

# Plugin to use and interpretor config
single-interpreter = true
master = true
plugin = python
lazy-apps = true
enable-threads = true

# Module to import
module = searx.webapp

# Virtualenv and python path
virtualenv = /usr/local/searx/searx-ve/
pythonpath = /usr/local/searx/
chdir = /usr/local/searx/searx/

#filtron
http = 127.0.0.1:8888

Anschließend muss diese Konfiguration aktiviert und gestartet werden:

cd /etc/uwsgi/apps-enabled
ln -s ../apps-available/searx.ini
/etc/init.d/uwsgi restart

Nginx und Let’s Encrypt

Nachdem jetzt Searx als Daemon bereits läuft, wollen wir die Seite natürlich verfügbar machen. Hierfür legen wir zunächst einen Virtual-Host an, der sich erheblich von dem doch sehr einfachen Beispiel in der Original-Anleitung unterscheidet. Wir verlassen an dieser Stelle auch die Originalanleitung. Noch ein Hinweis: example.com natürlich immer durch die eigene Domain ersetzen. Es bietet sich an sich zunächst über sudo su Root-Rechte zu besorgen.

nano /etc/nginx/sites-available/example.com.conf

Und dies dort einfügen:

server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /usr/local/searx;

access_log /dev/null;
error_log /dev/null;
# Useful for Let's Encrypt
location /.well-known/acme-challenge/ { allow all; }
location / { return 301 https://$host$request_uri; }
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;

access_log /dev/null;
error_log /dev/null;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header "X-Content-Security-Policy" "default-src 'self'; object-src 'self'; script-src 'self'";

add_header X-XSS-Protection "1; mode=block";

ssl on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
ssl_dhparam /etc/letsencrypt/dhparams.pem;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:EECDH:EDH:!MD5:!RC4:!LOW:!MEDIUM:!CAMELLIA:!ECDSA:!DES:!DSS:!3DES:!NULL;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
ssl_stapling on;
ssl_stapling_verify on;

root /usr/local/searx;

location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:4004/;
}

}

Anschließend kann diese Konfiguration bereits aktiviert werden (funktionier so aber noch nicht):

cd /etc/nginx/sites-enabled
ln -s ../sites-available/example.com.conf

Wer genau hingesehen hat, dem ist aufgefallen, dass in der Nginx-Konfiguration bereits der Pfad zu Zertifikaten von Letsencrypt angelegt waren. Diese müssen nun aber zunächst erzeugt werden. Hierzu zunächst Nginx stoppen:

systemctl stop nginx

Um dann das Zertifikat zu erzeugen:
letsencrypt certonly --standalone -d example.com

und Nginx wieder starten und das Zertifikat noch einmal neu mit der Webroot-Methode anfragen (Letsencrypt fragt, ob ein neues Zertifikat ausgestellt werden soll. Diese Option wählen):
systemctl start nginx
letsencrypt certonly --webroot -d example.com -w /usr/local/searx

Da die Zertifikate von Let’s Encrypt nur 90 Tage gültig sind, sollte man sie automatisch erneuern lassen. Hierzu legen wir einen Cron-Job an, der täglich läuft:

nano /etc/cron.daily/letsencrypt-renew

Und fügen dies ein und speicher und schließen die Datei:

#!/usr/bin/env bash
letsencrypt renew
systemctl reload nginx

Nun noch Diffie-Hellman-Parameter erzeugen (dies kann dauern!):

openssl dhparam -out /etc/letsencrypt/dhparams.pem 2048

Filtron

Mit der oben beschriebenen Konfiguration läuft Searx immer noch nicht, da die Konfiguration auf den Betrieb mit dem Proxy Filtron ausgelegt ist, der unsere Instanz z.B. vor der Nutzung durch Bots schützen soll, weil dies dazu führen könnte, dass die Suchmaschinen, die Searx anfragt uns nach einiger Zeit ablehnen.

Zunächst muss für den Betrieb von Filtron Go installiert werden (hierwird davon ausgegangen, dass immer noch der Root-Nutzer genutzt wird. Wenn nicht noch einmal „sudo su“ eingeben):

apt-get install golang

Damit wir Go persistent nutzen können, müssen wir die Standard-Shell von Dash auf Bash ändern. Hierzu

dpkg-reconfigure dash

eingeben und bei dem sich öffnenden Dialog „Nein“ wählen (Danke @matze für den Hinweis).

Dann legen wir zunächst einen Nutzer für Filtron an und weisen ihm einen Ordner zu:

cd /usr/local
mkdir filtron
useradd filtron -d /usr/local/filtron
chown filtron:filtron -R /usr/local/filtron

Anschließend machen wir uns zum Nutzer filtron und richten Go für diesen ein:

sudo -u filtron -i
cd /usr/local/filtron
mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc

Anschließend kann Filtron installiert werden:
go get github.com/asciimoo/filtron

Ob die Installation funktioniert hat, kann man z.B. mit der Ausgabe der Hilfe von Filtron ausprobieren:

".go/bin/filtron" --help

Wir benötigen noch ein Regelset für Filtron (wer die folgenden Regeln verändern möchte, findet hier Informationen).

nano rules.json

Hier dies einfügen und an die eigenen Bedürfnisse anpassen:

[
{
"name": "search request",
"filters": ["Param:q", "Path=^(/|/search)$"],
"interval": 60,
"limit": 60,
"actions": [
{"name": "log",
"params": {"destination": "stderr"}},
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
],
"subrules": [
{
"name": "roboagent limit",
"interval": 60,
"limit": 5,
"filters": ["Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "botlimit",
"limit": 0,
"stop": true,
"filters": ["Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "IP limit",
"interval": 60,
"limit": 60,
"stop": true,
"aggregations": ["Header:X-Forwarded-For"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "rss/json limit",
"interval": 60,
"limit": 5,
"stop": true,
"filters": ["Param:format=(csv|json|rss)"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
},
{
"name": "useragent limit",
"interval": 60,
"limit": 15,
"aggregations": ["Header:User-Agent"],
"actions": [
{"name": "block",
"params": {"message": "Rate limit exceeded"}}
]
}
]
}
]

Wer möchte kann nun schon ausprobieren, ob Filtron läuft:

filtron -rules rules.json

Doch wir werden Filtron noch mit Hilfe von Systemd daemonizieren (Sagt man das so?). Daher den Prozess beenden (STRG+C) und den User filtron verlassen:

exit

Nun eine neue Datei erstellen:

nano /etc/systemd/system/filtron.service

Und dies einfügen und wie gehabt speichern und schließen:

[Unit]
Description=filtron proxy

[Service]
Type=simple
User=filtron

ExecStart=/usr/local/filtron/.go/bin/filtron -rules /usr/local/filtron/rules.json

TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Anschließend kann dann der neue Service aktiviert und gestartet werden:

systemctl enable /etc/systemd/system/filtron.service
systemctl start filtron.service

Ob Filtron wunschgemäß läuft, kann nun folgendermaßen überprüft werden:
systemctl status filtron.service

Anpassungen
Jetzt sollte die Metasuchmaschine Searx mit dem Proxy Filtron laufen. Abschließend können noch einige Anpassungen vorgenommen werden. So habe ich z.B. Google als Quelle deaktivieren müssen, da hier immer eine Fehlermeldung auftauchte. Das Problem ist aber bekannt. Suchmaschinen können in der Datei /usr/local/searx/searx/settings.yml aktiviert und deaktivert werden. Nur immer daran denken, nach einer Veränderung UWSGI neu zu starten:

systemctl restart uwsgi

Viel Spaß beim Aufsetzen von Searx! Ich freue mich über (konstruktives) Feedback!

Mir haben beim Verfassen dieser Anleitung folgende Quellen sehr geholfen: