Kein Abgleich der IP über ddclient

mohamed_hassan / Pixabay

Falls ddclient nicht mehr die IP-Adresse mit dem entsprechenden DynDNS-Anbieter abgleicht, kann das Stoppen des Dienstes und der Neustart mit der Option –force eventuell helfen:

Siehe hierzu auch: https://intux.de/2016/04/raspberry-pi-3-mit-dyndns/

GnuGP Key Gültigkeitsdauer festlegen

tumbledore / Pixabay

Um die Gültigkeitsdauer eines GnuPG-Keys festzulegen bzw. zu editieren führt man folgenden Befehl aus. Die eMail-Adresse ist hier entsprechend anzupassen.

Dann geht es mit

weiter. Im folgenden Beispiel habe ich zwei Jahre gewählt.

Nun wird der Key gesichert

und an einen Keyserver versendet, der diesen dann weiter verteilt.

Es erscheint in meinem Fall folgende Ausgabe:

Fehlermeldungen in Nextcloud 14

kreatikar / Pixabay

Da sind sie wieder! Nach dem Upgrade auf Nextcloud 14 galt es auch hier wieder neu auftauchende Fehlermeldungen zu beseitigen. 

Nextcloud
Fehlermeldungen nach dem Upgrade auf Version 14

Der „X-Frame-Options“-HTTP-Header ist nicht so konfiguriert, dass er „SAMEORIGIN“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.

In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen wird, wurden diese nicht automatisch erzeugt. Durch das Ausführen von „occ db:add-missing-indices“ können die fehlenden Indizes manuell hinzugefügt werden, während die Instanz weiter läuft. Nachdem die Indizes hinzugefügt wurden, sind Anfragen auf die Tabellen normalerweise schneller.

  • Fehlender Index „share_with_index“ in der Tabelle „oc_share“.
  • Fehlender Index „parent_index“ in der Tabelle „oc_share“.
  • Fehlender Index „fs_mtime“ in der Tabelle „oc_filecache“.

Der „Referrer-Policy“ HTTP-Header ist nicht gesetzt auf „no-referrer“, „no-referrer-when-downgrade“, „strict-origin“ oder „strict-origin-when-cross-origin“. Dadurch können Verweis-Informationen preisgegeben werden. Siehe die W3C-Empfehlung.

Um die erste Fehlermeldung zu beseitigen, wurde im Virtual Host mit

die vorhandene Zeile 

entfernt. Darunter fügt man an dieser Stelle

ein und auch die dritte Fehlermeldung verschwindet nach dem Neustart des Webservers.

Um das Datenbank-Problem zu lösen, wechselt man ich das Hauptverzeichnis der Nextcloud

und führt

aus. Die erfolgreiche Bestätigung sollte dann so aussehen:

Zum Schluss sind alle Überprüfungen bestanden und die Nextcloud darf wieder produktiv genutzt werden.

Nextcloud

Fehlermeldungen beseitigt – Alle Überprüfungen bestandenViel Spaß!

Fehlermeldungen nach Nextcloudinstallation

geralt / Pixabay

Nach einer frischen Installation von Nextcloud hat man  i.d.R. mit einigen Fehlermeldungen zu kämpfen. Die Suche nach den Problemlösungen beschäftigt mich dann immer eine ganze Weile. Aus diesem Grund habe ich einfach einmal aufgeschrieben, was ich bei der letzten Installation alles noch erledigen musste.

Nextcloud
Fehlermeldungen nach der Installation

Hier die Sicherheits- & Einrichtungswarnungen nach der Installation:

Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.

Der Zugriff auf diese Site erfolgt über HTTP. Es wird dringend geraten, den Server so zu konfigurieren, dass er stattdessen nur HTTPS akzeptiert, wie es in den Sicherheitshinweisen beschrieben ist.

Es wurde kein PHP-Memory-Cache konfiguriert. Zur Erhöhung der Leistungsfähigkeit kann ein Memory-Cache konfiguriert werden. Weitere Informationen finden Sie in der Dokumentation.
Bitte überprüfen Sie noch einmal die Installationsanleitungen und kontrollieren Sie das Protokoll auf mögliche Fehler oder Warnungen.

Der PHP-OPcache ist nicht richtig konfiguriert. Für eine bessere Leistung empfiehlt es sich folgende Einstellungen in der php.ini vorzunehmen:opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Dem Datenverzeichnis entzieht man wie folgt die Erreichbarkeit aus dem Internet. Dazu öffnet man die /etc/apache2/apache2.conf.

Dort verändert man den bestehenden Eintrag

in

Die Umstellung auf HTTPS wurde nach der Anleitung „Let’s Encrypt auf dem Raspberry Pi“ durchgeführt.

Den PHP-Memory-Cache richtet man ein, indem man die benötigten Pakete via 

installiert. Im Anschluss wird via

folgende Zeile hinzugefügt:

Um die Fehlermeldung zu PHP-OPcache zu eliminieren, öffnet man die php.ini

und trägt Folgendes am Ende der Datei ein:

Zum Schluss wird der Apache-Webserver neu gestartet.

Nun erhielt ich die nächste Fehlermeldung.

Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „15552000“ Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in den Sicherheitshinweisen erläutert ist.
Bitte überprüfen Sie noch einmal die Installationsanleitungen und kontrollieren Sie das Protokoll auf mögliche Fehler oder Warnungen.

Diese beseitigt man indem man das Header-Modul für den Apache2 aktiviert.

Dach trägt man in den Virtualhost der Webseite unter DocumentRoot

ein und startet den Webserver mit

neu.

Nextcloud
Fehlermeldungen beseitigt – Alle Überprüfungen bestanden.

Am Ende waren alle Warnungen beseitigt und alle Tests wurden erfolgreich bestanden.

7″ Touchscreen für den Raspberry Pi

kevinpartner / Pixabay

Gestern habe ich das erste Mal das offizielle 7″ Touchscreen für den Raspberry Pi verbauen dürfen. Das Ganze war recht schnell und unkompliziert bewerkstelligt (siehe Video von Maker-Tutorials.com). Für den späteren Einsatz empfehle ich hierzu das entsprechende Bundle, bestehend aus Gehäuse und Touchscreen.

Zu beachten ist dann, dass das Display per Befehl um 180° zu drehen ist, da es sonst im Gehäuse auf dem Kopf steht. Dazu wird mit 

an das Ende der Datei eingetragen und mit Ctrt + o gespeichert. Nach dem Verlassen des Editors mit Ctrl + x wird der Rpi rebootet.

Quelle: YouTube

Raspberry Pi
Erste Inbetriebnahme des im Gehäuse verbauten Touchscreens + Raspberry Pi 3

Meine Empfehlungen

 

WordPress-Verzeichnis wp-admin absichern

pixelcreatures / Pixabay

Viele Jahre habe habe ich mein Backend von WordPress so abgesichert, dass auffällige IP-Adressen nach drei gescheiterten Login-Versuchen für eine gewisse Zeit keinen Zugang mehr zum Verzeichnis wp-admin bekamen. Da  auf meinem Server schon lange keine IP-Adressen mehr geloggt werden, ist diese Methode nicht mehr praktikabel. 

Aus diesem Grund habe ich nach einer Alternative gesucht. Ganz zufrieden bin ich damit das Login-Verzeichnis via Benutzername und Passwort zu schützen. Ein weiterer Vorteil ist, dass ich ein weiteres Plugin aus meiner überladenen WordPress-Installation entfernen kann.

Verzeichnisschutz WordPress
Verzeichnisschutz

Installation

Zuerst wird via

im Hauptverzeichnis der WordPress-Installation eine versteckte Datei .htpasswd angelegt.

Mit dem htpasswd Generator ist es möglich den Inhalt der .htpasswd zu erstellen. Hierbei wählt man einen Benutzernamen und ein starkes Passwort. Die entsprechende Ausgabe trägt man nun in die .htpasswd ein und spreichert mit Ctrt + o.

.htpasswd
Beispiel .htpasswd

Nach dem Verlassen des Editors mit Ctrt + x öffnet man wiederum mit Nano

die .htaccess und fügt folgende Zeilen hinzu.


Dabei muss auch hier der Pfad der .htpasswd entsprechend angepasst werden. Wenn man nun die Seite https://domain.tld/wp-admin aufruft sollte der Zugang zum Login nur über die Eingabe von dem zuvor ausgewählten Benutzernamen und dem entsprechenden Passwort möglich sein.

Viel Spaß!

VNC-Remote der GNOME-Shell

pixel2013 / Pixabay

Einige VNC-Server hatte ich bereits in der Vergangenheit getestet. Dabei konnte ich keine wirklich vernünftige Lösung für die GNOME-Shell finden. Den einzigen, aus meiner Sicht zufriedenstellende Server, bietet RealVNC. Mit dieser proprietären Lösung kann man für den privaten Gebrauch mit bis zu 5 Remotecomputern über einen zuvor zu erstellenden Account verbinden.

Was unter Ubuntu auf Anhieb läuft, bereitet auf einem Debian im ersten Moment Probleme. Hier lässt sich der Rechner auf dem zuvor VNC Connect mit

installiert wurde nur verbinden, wenn der Benutzer der Gruppe sudo zugewiesen wurde.

Dies geht wie folgt:

„benutzer“ ist hierbei durch den entsprechenden Benutzernamen zu ersetzen. Die Änderung wird nach dem erneuten Anmelden bzw. einem Reboot wirksam.

Im Anschluss wird mit 

der entsprechende Service gestartet und der Rechner via

für den privaten Gebrauch lizensiert. 

RealVNC
Hinzugefügter VNC-Server

Nun sollte die GNOME-Shell via VNC von außen erreichbar sein.

VNC Viewer
Remote via VNC Viewer für Android (Debian 9)
VNC Viewer
Remote via VNC Viewer für Android (Ubuntu 18.04)

Eine komplette Anleitung u.a. wie der VNC-Server in den Autostart des zu remotenden Systems eingetragen wird findet man hier.

Prosody inaktive User löschen

Im Artikel „Prosody – inaktive User ausfindig machen“ hatte ich beschrieben, wie man nach inaktiven XMPP-Accounts in Prosody suchen kann. Eine elegante Möglichkeit diese User wieder loszuwerden zeigt Thomas Leister auf seinem Blog. 

Ich habe mich für meinen XMPP-Server entschieden, Accounts welche drei Monate inaktiv waren zu löschen. Hierzu erstelle ich lt. Anleitung ein Script.

Dieses wird dann im Anschluss ausgeführt. 

Danach sind alle inaktiven User des zuvor erwähnten Zeitraums vom drei Monaten vom Server gelöscht.

Interview mit Daniel Gultsch – Entwickler der App Conversations

Vor einiger Zeit hatte ich Interviews mit diversen Blog-Betreibern rund um die Thematik Open Source geführt. Nun wollte ich auch Entwickler zu Wort kommen lassen, was sie motiviert ihre Projekte als Open Source auf den Markt zu bringen.

Heute steht mir Daniel Gultsch, der Entwickler der App Conversations, Rede und Antwort.

intux: Wie kam es dazu eine App wie Conversations zu programmieren?

Daniel: Ich bin von der Idee getrieben unabhängig von großen Konzernen wie Google zu sein und würde meine wichtigen Daten entweder gerne selber hosten oder einem kleineren Anbieter überlassen. Nicht unbedingt weil ich glaube, dass Google groben Unfug mit meinen Daten betreibt, sondern einfach weil ich längerfristiger denke und mich nicht unbedingt darauf verlassen möchte, dass es Google in 10 Jahren noch gibt. Deshalb ist auch meine E-Mail Adresse auf meiner eigenen Domain. Falls der eine Anbieter seinen Betrieb einstellt, bin ich jeder Zeit in der Lage zu einem anderen zu wechseln, ohne das meine Kontakte davon etwas mitbekommen. Als ich 2012 mein erstes Smartphone gekauft habe, wurde Google Hangouts jedoch zu meinem primären Messenger, da es eines der wenigen Systeme war, dass eine brauchbare UX hatte und einen nahtlosen Wechsel zwischen Desktop und Handy ermöglicht hat. Im Hinterkopf hatte ich aber immer die Frage, ob man so etwas wie Hangouts nicht auch in anbieterunabhängig umsetzen kann. Im Januar 2014 habe ich dann angefangen diese Frage auf ihre Praxistauglichkeit zu überprüfen und daraus ist dann Conversations geworden.

intux: Warum hast Du Dich gerade für Android entschieden?

Daniel: Conversations war und ist immer noch primär ein Tool für mich selbst. Und Android war einfach die Plattform die ich selber genutzt habe. Auf eine gewisse Art und Weise war das aber auch eine glückliche Fügung da Android Apps (damals) in Java programmiert wurden und ich Java zu dem Zeitpunkt schon halbwegs konnte.

intux: Conversations ist als Client für Android in aller Munde. Hast Du mit diesem Erfolg gerechnet?

Daniel: Ist es das? In aller Munde? Ich glaube in der deutschen Free Software Community hat Conversations mittlerweile eine gewisse Bekanntheit erreicht. Außerhalb dieser Bubble und außerhalb des deutsch- und französischsprachigen Raums geht es dann mit dem ‚Erfolg‘ aber auch schnell wieder zurück. Ich denke das ist zum Teil dem Netzwerkeffekt geschuldet der an Sprach- oder Kulturgrenzen immer auf gewissen Widerstand stößt und zum Anderen fällt das Thema Datenschutz im europäischen Raum natürlich auch auf fruchtbareren Boden.

Habe ich mit dem Erfolg gerechnet? Ja, schon irgendwie. Ich glaube einfach, dass Jabber im Allgemeinen und Conversations im Speziellen ein gutes Produkt ist.

intux: Wo lagen die größten Schwierigkeiten?

Daniel: Technisch gesehen bin ich eigentlich nie wirklich gegen eine Wand gelaufen. Nichts in Conversations ist auch nur annähernd Raketenwissenschaft. Vieles ist schlicht relativ nervige Fleißarbeit durch die man einfach durch muss.

Die größten Schwierigkeiten sehe ich darin, die notwendige Aufmerksamkeit der Medien (oder anderer Multiplikatoren) zu bekommen. So habe ich zum Beispiel für das 0.1 Release damals und dann nochmal für das 1.0 Release sämtliche (deutschsprachigen) Nachrichtenseiten angeschrieben. Da ist nie etwas daraus geworden. Das kann richtig frustrierend sein, wenn man sieht welche anderen, wirklich total irrelevanten Messenger, manchmal Newsstories bekommen. Oder noch schlimmer wenn irgendein ‚Celebrity‘ auch nur *ankündigt* eventuell bald mal einen Messenger zu veröffentlichen ist das sofort eine Nachricht wert. Aber Conversations – ein fertiges Produkt – wird komplett ignoriert.

Eine weitere Schwierigkeit, die leider auch nicht direkt in meiner Kontrolle liegt, ist die eher schlechte Qualität der Desktop-Clients. Conversations ist immer nur so gut wie der Rest des Ökosystems. Oder, um es anders auszudrücken – die häufigste Kritik an Jabber die ich höre ist: Conversations ist ja OK aber die anderen Clients sind Mist. Und da haben diese Kritiker auch nicht unrecht. Und aus diesem Problem gibt es auch keinen einfachen Ausweg. Softwareentwicklung kostet vor allem Zeit. Ich glaube, so lang es keinen Desktop-Client gibt der in Vollzeit entwickelt wird – sprich solange es niemand gibt der die Möglichkeit und die Bereitschaft dazu hätte – wird sich daran auch nicht viel ändern.

Das ist einer der Gründe warum ich im Moment Vorträge zum Thema „Wie verdiene ich Geld mit Conversations“ halte. Ich habe die Hoffnung, dass dies vielleicht einen der bestehenden oder einen neuen Entwickler motiviert es mir gleich zu tun.

intux: Unterscheidet sich die App aus dem Playstore von der aus F-Droid?

Daniel: Nicht wirklich. Die Version im Google Play Store kann Google Cloud Messages (Push Notifications) benutzen. Das XMPP ist allerdings nicht darauf angewiesen und funktioniert auch ohne. Der Grund warum das nicht in F-Droid ist, ist nicht damit die kostenpflichtige Variante einen Mehrwert hat, sondern weil die Push Library nur binär vorliegt und F-Droid dies nicht mit in seine Apps einbauen möchte.

intux: Denkst Du XMPP kann in Zukunft gegen Modelle wie Matrix bestehen?

Daniel: Was ist denn das Matrix Modell? Ich glaube die technischen Unterschiede zwischen Matrix und XMPP kann man ignorieren. Klar ist Matrix noch ein recht junges Protokoll und noch finden das alle toll. Aber jeder der schon mal Softwareentwicklung betrieben hat weiß, dass APIs wenn sie noch jung sind immer total super wirken; im Laufe der Zeit ändert sich das dann zu ‚OK‘ und irgendwann wird es dann ein ‚Meine Fresse was haben wir denn da für ein Mist gebaut‘. Der Trick ist dann, sich irgendwie damit zu arrangieren und das Beste daraus zu machen. Der Vorteil den Matrix im Moment hat ist, dass sie 12 Entwickler in Vollzeit beschäftigen können. Klar, dass da zumindest kurzfristig Produkte raus kommen die an der Oberfläche vielleicht etwas schicker aussehen. Wie beständig das langfristig wird, muss sich zeigen. Ob sie es hinbekommen auch langfristig das Protokoll zu pflegen und die Community auch in der Weiterentwicklung mit einbeziehen können wissen wir dann in 10 Jahren. Sollte dem so sein, dass Matrix ein Standard für anbieterunabhängige Kommunikation wird, der auch zukunftssicher ist, dann ist ja auch alles super. Also dann wäre mein persönliches Ziel – anbieterunabhängige Kommunikation zu haben – ja erreicht. 

intux: Lange Zeit habe ich meine Unterhaltungen mit OTR verschlüsselt. OMEMO setzte sich jedoch nach und nach immer mehr durch. Nun wurde OTR aus Conversations verbannt. Was hat Dich dazu bewogen?

Daniel: Da gibt es eine Reihen von Gründen die für sich alleine genommen vielleicht nicht diesen Schritt ausgelöst hätten, in der Summe jedoch ziemlich schwerwiegend sind. Ohne bestimmte Reihenfolge:

  • OTR kann Nachrichten nicht zwischen mehreren Geräten synchronisieren. Die Möglichkeit zwischen Desktop und Handy zu wechseln ist einer der selling Points von Jabber
  • OTR war für Jabber ziemlich schlecht spezifiziert. So haben manche Clients zum Beispiel HTML verschickt ohne irgendwie zu signalisieren das dort gerade HTML verschickt wurde. Conversations weiß dann nicht ob der andere Nutzer gerade <b>fett</b> geschrieben hat oder nur das Wort ‚fett‘ in dicker Schrift. Außerdem war nie ganz klar, wann und unter welchen Umständen denn Sitzungen auf und wieder abgebaut werden, was das Protokoll extrem unzuverlässig gemacht hat.
  • Die Verifikation war nicht blockierend umgesetzt. Wenn ich eine Nachricht schreibe und der Schlüssel des Gesprächspartners sich geändert hat, hat Conversations dies zwar angemerkt aber die Nachricht trotzdem verschickt. Ähnlich wie WhatsApp das tut. Dies erschien mir allerdings nicht mehr zeitgemäß
  • OTR war ziemlich bekannt. OTR war ein Name der vielen Benutzern etwas gesagt hat. Deswegen gab es Nutzer die OTR OMEMO vorgezogen haben, dann über die oben genannten Nachteile gestolpert sind und dann Jabber als Ganzes als ‚unzuverlässig‘ abgeschrieben haben.

Die Idee OTR aus Conversations 2.0 zu entfernen und OMEMO standardmäßig zu aktiveren, gab es schon sehr lange und war lange geplant. Ich hab nur auf den richtigen Zeitpunkt gewartet. Dies war erreicht, nach dem OMEMO eine gewisse Durchsetzung erfahren hat.

intux: Du hast dieses Jahr einen Vortrag auf den Chemnitzer Linux-Tagen gehalten. War das eine Eintagsfliege oder kommst Du wieder?

Daniel: Ich hab auch 2009 schon einen Vortrag auf den Linux Tagen gehalten. 2016 hatten wir einen Stand. Eine Eintagsfliege war das also nicht. Ich muss natürlich eine gute Idee für einen Vortrag haben, die Zeit dafür haben und der Vortrag muss angenommen werden. Aber prinzipiell auf jeden Fall.

intux: Wird es irgendwann Conversations für iOS geben?

Daniel: Wahrscheinlich nicht. Einen Client zu schreiben ist ein Vollzeitjob. Ich müsste also Conversations für Android aufgeben, um Conversations für iOS zu entwickeln. Zudem sind die Einstiegshürden für iOS Entwicklung relativ hoch, da man sowohl ein teures iPhone als auch ein teures MacBook braucht. Und ich kann mir gerade nicht vorstellen einen Mac benutzen zu müssen oder dafür sogar Geld auszugeben.

intux: Ist ein Desktop-Client geplant?

Daniel: Ähnliche Antwort wie zum Thema iOS. Einen Client zu entwickeln ist ein Vollzeitjob und ich kann nicht zwei Vollzeitjobs haben. Im Moment ist wie auch vorher schon erwähnt meine Strategie eher anderer Entwickler dazu zu motivieren Geschäftsmodelle zu finden und selber die Zeit in einen Desktop Client zu stecken.

intux: Vielen Dank für das Interview, Daniel.

Bidirektionale Zwischenablage in VirtualBox

Wenn man ein Betriebssystem in der VirtualBox von Oracle testet, möchte man auch in der Lage sein Code oder Text vom Hostsystem in die Virtualisierung zu kopieren. Von Haus aus geht das ohne eine entsprechende Konfiguration nicht. Dazu ist es nötig die Gasterweiterung auf dem Hostsystem zu installieren. Ist dies erledigt, kann man nachdem man ein paar Einstellungen vorgenommen hat die Virtualisierung starten. In meinem Fall ist ein Ubuntu 18.04 LTS schon vorinstalliert.

Einstellungen VirtualBox

Vor dem Start des Systems wird über Ändern => Erweitert die gemeinsame Zwischenablage und Drag’n’Drop auf bidirektional gesetzt. Somit wird das Kopieren später in beide Richtungen möglich.

VirtualBox
VirtualBox – Einstellungen

Nach dem Start der Virtualisierung

Nun wird in der Virtualisierung wie auf dem Screenshot zu sehen, die Gasterweiterung ins System Geräte => Gasterweiterung einlegen geladen.

VirtualBox
Virtualisierung – Gasterweiterung einlegen

Jetzt öffnet man mit Ctrl+Alt+t das Terminal in Ubuntu 18.04 und wechselt dort in das entsprechende Verzeichnis. In meinem konkreten Beispiel wäre das das Verzeichnis /media/intux/VBox_GAs_5.2.8.

Hier ist jedoch entsprechend des eigenem Systems der Benutzer und die gewählte Version der Gasterweiterung anzupassen. Danach wird die Datei VBoxLinuxAdditions.run wie folgt ausgeführt und installiert.

VirtualBox
Virtualisierung – Installation der Gasterweiterung

Ist dies geschehen, kann man nun Texte vom Hostsystem in die Virtualisierung kopieren. Dies geht natürlich auch in die andere Richtung.

VirtualBox
Virtualisierung – kopierter Dummy-Text

Viel Spaß!