AnsibleFest 2015 in London

Es ist wahrscheinlich gar kein Geheimnis mehr, dass wir uns seit einiger Zeit intensiver mit Ansible befassen. Dabei wollen wir unsere Infrastruktur Schritt für Schritt mit Ansible modernisieren, um die Provisionierung neuer Uberspace-Hosts zu automatisieren und um einfacher neue Features zu verteilen, die wir dann auch verlässlich mit Updates versehen können.

Um also ein wenig die Community zu beschnuppern und dabei noch einige interessante Vorträge mitzunehmen, hatte ich die Gelegenheit das erste AnsibleFest außerhalb der Vereinigten Staaten zu besuchen. So kam ich in den Genuss, mich einige Tage im mir bis dato unbekannten London umzuschauen und mich an Kleinigkeiten wie der unerwartet hohen Zahl von Radfahrern zu erfreuen.


Kuck mal, wer da hört - OpenSSH 6.8

Nachdem wir nun drei Monate lang OpenSSH 6.7 getestet haben, sind wir jetzt so mutig und tauschen sshd, der auf Port 22 lauscht, gegen eine aktuelle Version aus: OpenSSH 6.8.

Wir verwenden dabei die folgende Konfiguration:

KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com

Netter Nebeneffekt: Wir unterstützten nun ed25519. Alle Hosts haben bereits entsprechende Keys:

HostKey /etc/ssh/ssh_host_ed25519_key

Weiterhin unterstützen wir natürlich noch RSA:

HostKey /etc/ssh/ssh_host_rsa_key

Wir unterstützen kein DSA (mehr) und kein ECDSA. Das Datenblatt ist entsprechend angepasst, hier findet ihr wie gewohnt die Fingerprints. Ebenso werden wir das Host Manifest um die ed25519-Keys erweitern (hier gibt’s dann ein Update im Artikel).


Interview mit ½ Uberspace

Bei der Garage Bilk ist es üblich, den dort arbeitenden Coworkern die Gelegenheit zu geben, sich einfach mal vorzustellen und ein paar Fragen über die eigene Arbeit zu beantworten. Seit einem Monat arbeiten Mic und ich dort aus einem Startup-Büro heraus und so ergab es sich dann, dass wir auch mal Rede und Antwort stehen sollten. Wie’s der Zufall wollte, waren Jonas und Kim ohnehin auch gerade in Düsseldorf.

So hatten wir also Gelegenheit zu erklären, was wir denn genau tun und warum wir plötzlich ein Büro haben, obwohl wir bisher immer damit angegeben haben, überall arbeiten zu können, wo Platz genug ist um ein Laptop aufzuklappen und wo halbwegs taugliches Internet bereit steht. Die Antworten darauf gibt’s in der Garage Bilk-Community.


Uberspace Host Manifest

Als wir angefangen haben, alle unsere Uberspace-Hosts mit Ansible zu managen, hat uns etwas genervt: das manuelle Abgleichen von SSH-Fingerprints.

Da dachten wir, man könnte ja mal die Liste der Uberspace-Hosts mit ihren IP-Adressen und SSH-Fingerprints automatisch generieren. Diese kann man nun herunterladen, die Signatur überprüfen und die Liste der bekannten SSH-Hosts übernehmen.

Dies kommt nun auch dir zu Gute; denn so hast du auf einen Schlag alle Uberspace-Hosts vorliegen und kannst dich fröhlich auf jeden davon verbinden – ohne nervige Fingerprint-Abfrage.


Feature: MySQL Read-Only User

Ein User hat uns gefragt, ob er nicht einen zusätzlichen MySQL-Zugang haben könne, dessen Zugriffsrechte sich auf lesende Operationen beschränken. Für einen Workshop mit Schülern möchte er Anwendungen auf die Datenbank seines Uberspace loslassen, die dort keine Veränderungen vornehmen sollen.

Keine schlechte Idee – dachten wir uns. Denn für diesen Zweck oder ähnliche Szenarien kann dies durchaus nützlich sein. Aber wenn wir eine solche Funktion realisieren, dann soll sie allen Usern zu Gute kommen. Also haben wir ein neues Feature in Uberspace eingebaut: den MySQL Read-Only User.


node.js 0.12.2

Kurz und schmerzlos: Ein frisches node.js ist auf allen Servern verteilt, weitere Informationen dazu wie gewohnt im Wiki.

Unter den Symlinks unter /package/host/localhost haben wir angepasst:

nodejs-0.12 -> nodejs-0.12.2

Wie gehabt bleibt vorerst:

nodejs-0 -> nodejs-0.10

Wenn ihr also nodejs-0.12 in eueren Scripten benutzt reicht es, den Dienst einfach neu zu starten.


Ruby auf 2.2.2 aktualisiert

Kurz zwischendurch: Wir stellen nun auch die Ruby-Version 2.2.2 bei uns bereit, die einen Fix für CVE-2015-1855 beinhaltet. Wer als Pfad zum Ruby-Interpreter den /package/host/localhost/ruby-2.2-Symlink verwendet, braucht nichts weiter zu tun; jener zeigt bereits auf die neueste Version. Wer als Pfad die konkrete Versionsangabe /package/host/localhost/ruby-2.2.0 verwendet, sollte seine .bash_profile entsprechend auf die Version 2.2.2 (oder noch besser auf den 2.2-Symlink) anpassen.


Arbeit am ersten Eindruck

Wir haben ein bisschen gefeilt und die Seite überarbeitet, die einen neuen User direkt nach der Registrierung erwartet. Dabei haben wir versucht, drei wichtige Bereiche abzudecken und jene dahingehend zu verbessern, dass wir eben nicht nur Experten-User haben, sondern auch User, die eben erstmal was lernen wollen und müssen, und denen der Einstieg dafür leicht gemacht werden soll, ohne dabei aber den versierteren Usern Möglichkeiten zu nehmen.

Die Sache mit der E-Mail-Adresse

Wir machen ja bekanntlich durchaus ernst damit, keine persönlichen Daten zu erheben und damit auch keine E-Mail-Adresse. Es liegt aber auf der Hand, dass wir User durchaus auch mal initiativ kontaktieren müssen: Um sie zu informieren, wenn sie ihr Konto aufladen müssen, oder wenn ihr Speicherplatz knapp wird, oder wenn wir z.B. einen ihrer Mailaccounts oder auch ihre Website wegen einer Kompromittierung sperren müssen - ganz besonders aber dann, wenn User keinen Zugang mehr zum Dashboard haben und einen Passwort-Wiederherstellungslink brauchen. Unser Konzept war (und ist weiterhin) das der “primären E-Mail-Adresse” in der Form user@host.uberspace.de, die man sich zwar an eine externe Mailadresse weiterleiten lassen kann, aber eben auch via IMAP abrufen kann, ohne uns dazu irgendwelche Daten von sich bereitzustellen. User, die keine externe Mailadresse hinterlegt haben, haben wir bisher im Dashboard unter dem Punkt “Wichtig” mit dem Titel “Wir erreichen dich noch nicht!” darauf hingewiesen, dass sie ihre primäre Mailadresse abrufen sollten (der Hinweis verschwindet automatisch, wenn die Mailbox in den letzten 30 Tagen einmal abgerufen wurde). Dennoch gibt es im Support leider immer wieder Fälle, wo User ihren Zugang zum Dashboard verloren haben und dann konsterniert feststellen, dass wir tatsächlich keine hellseherischen Fähigkeiten haben und eben wirklich nicht überprüfen können, wem ein Account gehört - eben eine der unpraktischeren Seiten der Datensparsamkeit: Wer keine Daten angibt, was ja legitim ist, sollte dann eben auch wirklich, wirklich sein Passwort nicht vergessen.


Updates: ezmlm-idx 7.2.2

Wer bei uns Mailinglisten betreiben möchte, dem steht es natürlich frei, sich selbst Software wie Mailman oder Sympa zu installieren. Out of the box und mit geladenen Batterien gibt es bei uns seit dem Start von Uberspace aber bereits den Community-Fork ezmlm-idx der von Daniel J. Bernstein geschriebenen Mailinglistenverwaltung ezmlm. Natürlich gibt’s dazu bei uns auch gleich die passende Dokumentation im Wiki, so dass die Installation einer eigenen Mailinglistenverwaltung gar nicht nötig ist, zumal sich ezmlm-idx ganz prima in unser netqmail-Setup integriert. Aber das schöne an freier Software ist ja unter anderem auch die Auswahl, nicht wahr?


Updates: kleiner Versionssprung für adminer

Als schlanke Alternative zu phpMyAdmin hat adminer bei uns gerade ein kleines Update erfahren. Aktuell ist nun die Version 4.2.1. Die (nicht sicherheitsrelevanten) Änderungen findet ihr im offiziellen Changelog.

Wie gewohnt erreicht ihr die jeweilige adminer-Instanz eures Uberspace immer über adminer.$host.uberspace.de. Unsere Testaccounts liegen z.B. auf dem Host andromeda, also erreiche ich die dortige adminer-Installation über adminer.andromeda.uberspace.de. Diese und weitere Angaben gibt’s aber auch immer im Datenblatt.