Redis Server und HSTS für ownCloud

Im Backend vermeldete ownCloud schon längere Zeit, dass es einen funktionierenden PHP Memory Cache vermisse. Bisher war mir das relativ egal, weil ich nicht viele Dateien und auch nicht viele Nutzer/innen hatte. Das hatte sich in den letzten Wochen und Monaten aber gründlich geändert, so dass ich bei drei meiner oC Installationen tätig werden musste. Nach dem Update auf oC 8.2.2 und Dank etwas freier Zeit ging ich das Problem endlich an.

APC und APCu waren zwar bei allen Servern an Bord, aber unter Ubuntu 14.04 und PHP5 „zu alt“. Ich probierte es mit Redis. Hier ist das PHP5 Modul von Ubuntu 14.04 zwar ebenfalls zu alt, aber es gibt in den PECL Repositories einfach zu installierenden Ersatz.

Ein

dpkg -l | grep php5-redis

klärt, ob ein solches PHP Modul installiert ist. Wenn ja, dann muss dieses zuerst runter vom Server. Danach kann der Redis Server an Bord:

apt-get install redis-server

Ein Blick in

/etc/redis/redis.conf

sollte ergeben, dass Redis an 127.0.0.1 lauscht und somit nicht von außen zu erreichen ist. Wer sich nicht sicher ist, kann von außen mit telnet nachsehen. Weiter sollte ein

service redis-server status

zeigen, dass der Redis-Server auch läuft.

Um PECL nutzen zu können benötigen wir noch die folgenden Pakete

apt-get install php-pear php5-dev

Wer, wie ich hier, Horde5 über PEAR bezieht, hat die Pakete schon. Ein

pecl install redis

bringt dann ein frischeres php Modul für Redis an Bord. Am Ende der Installation weißt PECL darauf hin, dass dieses Modul der vorhandenen PHP Umgebung bekannt gegeben werden muss. Da hilft

echo 'extension=redis.so' > /etc/php5/mods-available/redis.ini
php5enmod redis
service apache2 restart

Dann wird der Memory Cache ownCloud in

/pfad/zu/owncloud/config/config.php

bekannt gegeben, indem der folgenden Code ans Ende gehängt wird (vor die letzte schließende Klammer):

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

Im Backend von ownCloud herrscht nun etwas mehr Ruhe.

Was ownCloud leider nicht überprüft ist, ob es überhaupt über HTTP zu erreichen ist. Es schimpft immer über eine fehlende HSTS Konfiguration, bis eine solche eingerichtet ist.

Das ist mit

a2enmod headers

und dem Eintrag

Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"

für die ownCloud Domain dann nach einem Neustart des Apachen auch erledigt, hat aber Nebenwirkungen: HTTP Verbindungen sind hiermit für die gesamte Domain ab dem ersten Aufruf über HTTPS für den Client-Browser erledigt. Muss man wollen.

Geholfen beim Einrichten haben mir die folgenden empfehlenswerten Quellen: 1, 2, 3, 4

HWS, Korrekturen und Schwerkraft

IMG_20151129_105834

Menschen mit HWS-Schäden sollten nicht lange nach Unten blicken. Und: Es gibt Tage (leider auch Wochen) in denen der Blick nach Unten überhaupt nicht geht. Die Krümmung der Halswirbelsäule erzeugt umgehend starke Schmerzen und auch Ausfallerscheinungen neurologischer Art.

Am Rechner kann man sich seinen Arbeitsplatz dann so einrichten, dass der Bildschirm oben steht. Die Arbeit am Laptop (Blick geht da meist nach Unten) muss ja nicht sein und wenn kein anderes Arbeitsgerät vorhanden ist, dann hilft ein externer, höher gestellter Monitor.

Dumm nur, wenn man korrigieren sollte und das zu Korrigierende lediglich in Papierform vorliegt. Denn: Alle von mir bisher verwendeten Korrekturstifte (ich hab eine Vorliebe für die Tintenroller von Mitsubishi, wenn ich nicht mit Füller arbeite) brauchen Schwerkraft, um die Tinte von der Patrone zur Spitze zu bringen. Man kann mit derartigen Geräten nicht im Stehen arbeiten (waagrechte Stiftausrichtung, Klemmbrett an der Wand mit der Schülerarbeit daran) und selbst die Neigung des Stiftes beim Arbeiten mit Klemmbrett auf den hochgestellten Knien im Sitzen, was zumindest die HWS-Krümmung reduziert, führt schnell zu Aussetzern beim Tintenfluss. Der Korrekturgriffel muss schnell pausieren, wieder nach unten gerichtet eingeschrieben werden und erst nach einer Weile darf man weitermachen. Das nervt. Drei bis vier Stifte im Paralleleinsatz sowie ein Stiftständer kompensieren dies ein wenig. Das Einschreiben entfällt jedoch nicht zuverlässig. Also: Alle Arbeiten zuerst auf den Scanner legen und dann mit der Bildbearbeitung korrigieren? Das klang für mich nach der allerletzten Möglichkeit. Den enormen Arbeits- und Zeitaufwand hätte ich gerne vermieden.

Mir scheint, es gibt nur zwei Schreibgeräte, mit denen man dem Zusammenhang zwischen Tinte und Schwerkraft ein Schnippchen schlagen kann: Buntstifte (Blei) und Weltraum-Kugelschreiber.

Buntstifte, dachte ich, fallen aus, weil diese nicht Dokumentenecht sind. Da kam ich heute Morgen ins Umdenken.  Ich beschloss, dass mir das egal ist. Ich wollte die Arbeiten schlicht fotografieren und so den Korrekturstand sichern. Außerdem zeigten erste Radiertests, dass weiche Buntstifte so ölig sind, dass Löschungen sichtbar bleiben. Also auf in den Schreibwarenladen. Und da stellte ich dann fest: Es gibt dokumentenechte Buntstifte. In rot! Die Rettung für den Moment war gefunden.

Das Problem bleibt für die Zweit- und Drittkorrektur bestehen. Grüne dokumentenechte Stifte sind zwar auch vorhanden – aber braun fehlt und außerdem ist mir das zu heikel für das rechtliche Tamtam rund ums Abitur.

Bestellt habe ich mir nun den Fisher Space Pen. Außerdem soll es mit dem Mitsubishi SNP-7 einen weitaus günstigeren uniball Stift mit Gasdruckmine geben, den ich auch noch auftreiben will. Für beide gibt es zumindest rot, für den Fisher auch noch die anderen benötigten Farben. Weiter habe ich bei meiner Suche noch eine Firma “nebenan” gefunden. Schmidt sitzt in St. Georgen und stellt Gasdruckminen mit farbigem Inhalt unter der Bezeichnung Schmidt MegaLIne Pressurized Refills her, die allerdings hier kaum im Handel zu finden sind.

Gasdruckminen müssten Korrekturen auf der ISS möglich machen. Da fühlt man sich nach einigen Klausuren so oder so besser aufgehoben.

Nexus 4 black screen

Die Zahl an Nexus 4 Geräten in unserer Familie ist in den letzten Monaten stark gestiegen, schlicht weil diese inzwischen günstig auf ebay zu haben sind, perfomant reagieren und vor allem: sich hervorragend mit Cyanogenmod flashen lassen.

Lewin berichtete mir heute, dass er nach dem Wählen einer Rufnummer einen schwarzen Bildschirm bekommt, der nicht mehr weggeht, bis der Anruf beendet ist. Dumm für einen Prepaid-Karten-Benutzer wird es dann, wenn die Gegenseite einen AB laufen hat, der vieeeeeel Platz bietet und das Gespräch von sich aus nicht abbricht.

Der erste Workaround war, die Aus-Taste am Nexus für das Beenden des Anrufs zu konfigurieren. Man findet diese Option im CM12 unter /Einstellungen /Tasten /Ein-Aus-Taste.

Technisch dürfte hier seine Bildschirmfolie dazwischen funken, die den Annäherungssensor stört. Denn: Ich verwende eine andere Folie und habe das Problem nicht. Britta hat keine Folie – und auch kein Problem. Bei Janis stehen die Tests noch aus – er ist SIM-frei.

Ich muss das noch genauer prüfen, aber für den Moment sieht es so aus, als wäre die ansonsten hervorragende Folie „Urcover Panzerfolie Anti Shock Series“ die Ursache des Problems.

Talheimer Wasserfall

Herbst. Wald ist bunt. Ich musste in den Kalk und entschied mich für einen kurzen Ausflug zum Talheimer Wasserfall. Die Ansammlung von Kalktuff sieht wirklich so aus, als würde hier mit Moos bewachsener Stein den Hang hinunter fließen – aber von Wasser kaum eine Spur. Es war die letzten Wochen zu trocken.

Ein wenig weiter den Hang runter befinden sich momentan die Reste eines kleinen Bächleins, das aber zu besseren Zeiten einen beeindruckenden Graben geschaffen hat.

7ZIP Gui

7-ZipDateimanager_001

Ich kann kaum einem meiner Kollegen zumuten, Befehlsfolgen wie

7za a archiv.7z -mhe -p datei.end

einzugeben, nur um ein verschlüsseltes Archiv mit 7ZIP zu erstellen und nicht einmal ein

7za x archiv.7z

würde sich verkaufen lassen. Shell ist schwarz. Schwarz ist böse. Was sich nicht klicken lässt, geht nicht. Also muss ein GUI her.

Da wir schulisch KDE einsetzen (mit einem Theme, das so schwer nach Win7 aussieht, dass sicherlich manche noch nicht einmal gemerkt haben, dass es gar kein Windows ist) war auch die Integration in das Kontextmenü gewünscht.

Alles das wird geliefert von: http://tomtomtom.org/p7zip-gui/

Eine evtl. auftretende Fehlermeldung ala

Fehler traten auf beim Bearbeiten von:

wird mit einem

sudo apt-get install -f

beantwortet, das die fehlenden Pakete nachzieht.

Bonding

IMG_20150805_162906-cut

Zwischenstadium beim Einrichten. Ein Upllink zu BelWue und der erste 4-er-Bond/Trunk zum Server.

Mit vier Netzwerkkabeln vom Server zum Core-Switch und vom dem aus weiter mit jeweils 4 Kabeln zum nächsten …

apt-get install ifenslave-2.6 net-tools ethtool

Die /etc/network/interfaces dazu

# The loopback network interface
auto lo
iface lo inet loopback

# Erst alle echten Interfaces hochziehen
auto eth0
iface eth0 inet manual
        bond-master bond0

auto eth1
iface eth1 inet manual
        bond-master bond0

auto eth2
iface eth2 inet manual
        bond-master bond0

auto eth3
iface eth3 inet manual
        bond-master bond0

# Trunk0 / Bond0
auto bond0
iface bond0 inet manual
        bond-slaves eth0 eth1 eth2 eth3
        bond-mode 0

# VLAN   FARBE   INHALT
# 100    BLACK   KABEL BW / Fritz BOX
# 101    GREY    Infrastruktur (Switches etc.)
# 102    RED     BELWUE Netze
# 20     BROWN   VWNetz
# 40     GREEN   paedagogisches Netz
# 41     BLUE    WLAN public (päd. Netz)
# 50     PINK    WLAN lehrer

# The LINK to BELWUE
auto bond0.102
iface bond0.102 inet static
        address xxx.xx.xx.194
        netmask 255.255.255.240
        network xxx.xx.xx.192
        broadcast xxx.xx.xx.207
        gateway xxx.xx.xx.193
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers xxx.xx.xx.4
        dns-search domain.tld
        # iptables vorbereiten - evtl. unnoetig
        up sysctl -w net.ipv4.ip_forward=1
        up modprobe ip_tables iptable_nat
        # Portweiterleitung von K9393 auf B443 fuer OMD
        up iptables -t nat -A PREROUTING -p tcp -i bond0.102 --dport 9393 -j DNAT --to-destination 192.168.0.2:443
        up iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 9393 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


auto bond0.101
iface bond0.101 inet static
        vlan-raw-device bond0
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        dns-nameservers 127.0.0.1
        dns-search grey
        # add NAT / Masquerade for grey network
        up sysctl -w net.ipv4.ip_forward=1
        up modprobe ip_tables iptable_nat
        up iptables -A FORWARD -o bond0.102 -i bond0.101 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
        up iptables -A FORWARD -o bond0.102 -i bond0.101 -s 192.168.0.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
        up iptables -t nat -A POSTROUTING -o bond0.102  -j MASQUERADE

auto bond0.40
iface bond0.40 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

auto bond0.41
iface bond0.41 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

auto bond0.50
iface bond0.50 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

auto bond0.20
iface bond0.20 inet manual
        vlan-raw-device bond0
        up ifconfig $IFACE up
        down ifconfig $IFACE down

Im Switch die Trunks einrichten und die VLANs den Trunks zuweisen. Reboot. Tut.

IMG_20150810_165043-2

Die zentralen Switches sind nun verkabelt und auch der Neubau hängt mit immerhin 2 Glasfasterleitungen an der Strippe.

Zuerst hatten wir Mode 4 eingerichtet. Die Geschwindigkeit war aber enttäuschend. Mit Round Robin / Mode 0 geht jetzt aber heftig mehr durch die Leitungen, wenn auch nicht das 4-fache. Außerdem: Einzelne Räume bleiben etwas magerer angebunden – z.B. der Neubau, der nun mit „nur“ 2 Glasfaserleitungen am Core-Switch hängt.

Moodle 2.9.x Teil I

Moodle 2.9.x braucht als DB-Engine zwingend InnoDB und läuft nicht mehr mit MyISAM. Im Verlauf des Updates meldet sich deswegen Moodle mit der Meldung

unsupported_db_storage_engine

Erster Schritt ist die Kontrolle, ob die eigene mySQL DB InnoDB überhaupt unterstützt. Hierzu z.B. in phpmyadmin anmelden und dort auf dem Reiter SQL

SHOW ENGINES

absetzen [1]. Meist zeigt die Ausgabe das hier:

showengines

und alles ist gut. Wenn nicht, dann hat man richtig Arbeit an der Backe und muss zuerst die MySQL Installation auf Vordermann bringen.

Dann im Backend von Moodle (als Administrator) die URL wie folgt anpassen:

https://www.meinmoodle.tld/admin/tool/innodb/index.php

und der Migrationsprozess rattert los. Das kann dauern. Lange.

Moodle schimpft dann evtl. über Tabellen im Antelope Format, statt des gewünschten Barracuda:

unsupported_db_table_row_format

Hier ist man nun auf die Shell gezwungen, wenn ich das richtig sehe. DB-Experten mögen mich korrigieren.

Erst einmal nachschauen, welche Tabellen überhaupt bearbeitet werden müssen. Das geht mit einem Script, das Moodle mitbringt und das über dem Moodle-Stammverzeichnis ausgeführt werden muss:

sudo -u www-data /usr/bin/php moodle/admin/cli/mysql_compressed_rows.php --list

Bei mir ergab das

mdl_data                        Compact     (needs fixing)
mdl_data_fields                 Compact     (needs fixing)
mdl_enrol_paypal                Compact     (needs fixing)
mdl_lti                         Compact     (needs fixing)
mdl_user                        Compact     (needs fixing)
mdl_user_info_field             Compact     (needs fixing)

was sich mit Hilfe des oben genannten Scripts durch den Schalter –fix jedoch nicht reparieren lässt, weil man hierzu mehr Rechte innerhalb der MySQL-DB benötigt, als bei mir hier der Apache hat.

Moodle selbst läuft auch unter Version 2.9.x noch mit Antelope – das Upgrade kann also stattfinden. Da ich die Nebenwirkungen von Barracuda schlecht abschätzen kann, wenn ich mit der DB-Kompression spiele (da hängen auch noch WordPresse und Typos mit dran), bespreche ich mich mal lieber zuerst mit Frank. Mal sehen, was der meint – und dann geht es weiter.

 

 

Eins an der Waffel

kruppsrezepte

Krups hat gelinde gesagt eines an der Waffel: Da verticken die ein sehr brauchbares Waffeleisen zusammen mit einer unsäglich schlechten Rezept-CD.

Die CD ist nur für Windows und MacOS gedacht / gemacht. Mit Hilfe von wine bekommt man /DE/Rezepte.exe zwar auch unter Linux zum Laufen – allerdings erklärt das nicht, wie Krups überhaupt auf so einen Quatsch gekommen ist: Flash liefert für die Rezeptesammlung lediglich eine Umblätterfunktion, die leidlich nett aussieht und heute auch in HTML+CSS+JavaScript zu machen wäre. So oder so: Wer will in der Küche mit seinem Laptop werkeln? Wenn, dann befindet sich dort vielleicht ein Tablet und das hat kein CD-Laufwerk.

Die Druckfunktion der Flash-App für Einzelrezepte ist ebenfalls unbrauchbar: Sie erstellt Screenshots der Flashseiten. Zum Glück muss man sich nicht alle Rezepte einzeln per Screenshot-Export holen, sondern kann sich auch ein komplettes PDF aus der Flashoberfläche heraus exportieren. Um Flash herum kommt man nicht. Im Gesamt-PDF ist der Text dann auch als solcher enthalten – nicht nur Bilder. Allerdings: Man erhält auch hier ein PDF mit weißem Text auf braun-grauem Hintergrund, so dass der Spaß beim Drucken schnell vergeht. Offensichtlich arbeitet Krups mit den Herstellern von Tonern und Tinten zusammen.

einsanderwaffel

Überhaupt. Unter Windows würde die CD versuchen, so die Einstellungen in der autorun.inf, die Rezeptsammlung zu installieren, was auch wieder keiner, dem Systemsicherheit ein wenig wichtig ist, wollen kann. Da wundert es mich wenig, dass ClamAV einen PUA.Win32.Packer.Upx-28 in der setup.exe meldet. Auch wenn die Datei selbst harmlos ist (eine Suche bei virustotal zeigt 0 Schädlinge), ist das ein weiteres Indiz für die Strategie „Hauptsache es tut auf dem Rechner des Chefs der Marketingabteilung, der von Technik Gott sei Dank keine Ahnung hat“.

Und hier enden die Seltsamkeiten nicht: Auf der CD befindet sich im Ordner /AutoPlay/Videos eine Datei Magnolia.mpg in der ein Haus auf Englisch beworben wird. Ein Haus? Auf einer Waffel-Rezepte-CD? Wo haben die das Ding nur her?

Die Waffeleisen wurde vom ETM-Testmagazin mit der Note „sehr gut“ ausgezeichnet und erhielt 93,8% aller möglichen Punkte. Einen großen Anteil hieran wird die Dokumentation bzw. Beilage zum Waffeleisen nicht gehabt haben – oder ETM ist bei derartigen Dingen unkritisch. Die bei Testberichte verlinkten Amazon-Kommentare sind hier ebenfalls blind – oder beziehen sich offensichtlich auf eine ältere Version der ausgelieferten Ware, weil stellenweise noch von Rezepte-PDFs die Rede ist, was eindeutig die bessere Wahl wäre.

Im Ergebnis: Die Rezepte-CD ist voll mit sinnlosem Chichi und obendrein technisch grottenschlecht gemacht. Krups gibt hier kein gutes Bild ab.

Jetzt hoffe ich, dass bei Krups die Ingenieure mehr im Hirn haben als das Personal in der Marketing- und Verpackungsabteilung, denn die Idee des Waffeleisens ist an und für sich gut: Die Pfannen können einfach entfernt und gespült werden und für eine gleichmäßige Verteilung des Teigs sorgt ein händisch zu bedienender Drehmechanismus. Dazu kommt ein ebenfalls einfach zu spülender weil entfernbarer Teigtropfenfänger, der darüber hinaus magnetisch am Gehäuse befestigt werden kann, so dass dieser im Schrank am senkrecht gestellten Eisen bleibt.

Etwas kritisch bin ich, was das Material der Pfannen angeht. Diese sind aus Aluminium und können somit kaum Wärme speichern. Eisen wäre besser, Gußeisen ideal. Auch da ist noch Raum nach oben, bis man das hier elektrisch bekommt.

XMPP continued

Der XMPP Server unter Prosody läuft einfach. Etwas hakelig erwies sich die Konfiguration der Chaträume, die meinem Eindruck nach auch von den Fähigkeiten der mit dem Server verbundenen Clients abhängig ist: deren Zusammenspiel mit Prosody erzeugt einige Inkonsistenzen. Bei den folgenden Einstellungen für Prosody

# /etc/prosody/prosody.cfg.lua
Component "blabla.domain.tld" "muc"
         restrict_room_creation = "local"
         max_history_messages = 20

erlaubte es mir Conversations nicht, einen Chatraum einzurichten. Leider klappt das auch nicht mit

restrict_room_creation = true

das ja eigentlich das Recht zur Raumerstellung auf die Admins beschränken sollte. Das funktionierte bei meinen Versuchen ein einziges mal – danach dann nicht mehr. Warum, war den Logs für mich nicht zu entnehmen. Da stand

Out of connection options, can't connect to blabla
Sending error replies for 2 queued stanzas because of failed outgoing connection to blabla

(blabla steht hier für den gewählten Raumnamen) aber ich googlete mich in die Ecke ohne schlau zu werden. Ich stellte deswegen auf

restrict_room_creation = false

um und überwache zur Sicherheit das Verzeichnis mit den Raumdefinitionen, auf dass ich mitbekomme, was mein Server so alles hostet. Diese liegen hier:

/var/lib/prosody/blabla%2edomain%2etld/config/

Eine weitere Hürde auf dem Weg zu eigenen MUCs war, dass mein Zertifikat für den Server nur auf domain.tld und www.domain.tld läuft. Der Standard für MUCs scheint aber conference.domain.tld zu sein. Ich hätte mir demnach ein extra Zertifikat besorgen oder richtig Geld in die Hand nehmen müssen, was mir schlicht zu blöd war. Startssl muss reichen. Also sind die Chaträume nun eben unter www zu finden. Für die eigenen Bedürfnisse geht das.

Überhaupt: Die Clients.

Meine Erfahrungen beschränken sich auf xabber, tigase, yaxim und conversations. Von diesen beherrscht nur conversations in Zusammenspiel mit Prosody den (fast) reibungslosen Versand von Dateien und Bildern, den Austausch von OTR-verschlüsselten Nachrichten sowie nun auch die Einrichtung und Verwaltung (privat / öffentlich, Einladungen verschicken und annehmen) von Räumen.

Screenshot_2015-06-04-09-11-42

Beim Versand von Bildern und Dateien mit Conversations / Prosody muss man allerdings darauf achten, dass die Beteiligten gegenseitig ihren Online-Status sehen dürfen und auch beide online sind (grüner send / camera button) – sonst fällt der Prozess kommentarlos auf die Nase.

Eine Option zur Zwischenspeicherung von Dateien und Bildern auf dem Server habe ich in Prosody nicht gefunden und dafür scheint es auch kein Modul zu geben. Das Modul mod_storage_internal kann nur mit Text umgehen und auch mod_offline behandelt lediglich Text. Ich muss mir mal mod_storage_sql ansehen. Evtl geht ja da was (auch wenn die Beschreibung der DB-Felder für mich nicht so aussieht).

Dazu kommt: Verschickt man über Conversations dickere Dateien (getestet habe ich mit bis zu 16MB), dann fällt auch dies gelegentlich auf die Nase, obwohl sich die Beteiligten gegenseitig sehen. Hier scheint das Zusammenspiel zwischen Conversations und Cyanogenmod (Energieeinstellungen) eine Fehlerquelle zu sein: schaltet sich der Bildschirm ab, dann bricht häufig auch die Dateiübertragung zusammen.

Insgesamt betrachtet: Die grundlegenden Dinge funktionieren nun – bei vielen Details ist noch Luft nach oben.