Hinter den Kulissen der Netzbegrünung in Zeiten von Corona

Bei der Netzbegrünung stellen wir uns von Anfang an die Frage, wie die Digitalisierung Grüne Politik besser machen kann. Doch weil wir dabei oft mit der Frage konfrontiert waren, wo die entsprechenden Werkzeuge denn sind, ist ein großes Teil unserer Arbeit schon immer sehr praktisch veranlagt. Angefangen mit Livestreaming und Textbegrünung kamen über die Jahre immer mehr Software-Werkzeuge und Online-Dienste hinzu, die wir allein deshalb anbieten, weil wir sehen, dass sie Menschen in der Partei bei ihrer politischen Arbeit helfen. Dass deren Relevanz über die vergangenen Jahre immer weiter zunimmt, ist für uns kein Geheimnis.

Und obwohl wir finden, dass wir mit unserem Angebot für digitale politische Arbeit gut aufgestellt sind, waren die letzten Wochen bei uns schon ziemlich verrückt. Und weil viel dieser Arbeit nicht direkt sichtbar ist, dachten wir, wir geben anhand der Ereignisse der vergangenen Wochen mal einen Überblick, was zum professionellen Betrieb digitaler Infrastruktur für die Partei aus unserer Sicht dazu gehört.

Videokonferenzen

28. Februar, 21:55, im Kanal #netzbegruenung-konferenz:
Christian: „Ich befürchte, wir müssen hier demnächst viele Veranstaltungen elektronisch/aus der Ferne durchführen. Wäre super, wenn das wieder laufen würde.“

Er sollte recht behalten.

Am 6. März erreichte uns die erste Anfrage nach unseren Erfahrungen mit Video-Konferenzen und den verschiedenen Angeboten. Die Netzbegrünung betreibt ihre eigene Jitsi-Meet-Installation schon seit geraumer Zeit, hauptsächlich für interne Zwecke, Vorstandssitzungen oder CERT-Meetings, sowie zum Austausch von Administrator*innen. Wir waren uns bewusst, dass es auf der ursprünglichen Installation in manchen Konstellationen zu Verständigungsproblemen kommen konnte, weshalb wir das Setup von konferenz.netzbegruenung.de nie groß beworben hatten. Das änderte sich nun rasant. Während die Jitsi-Installation bisher von Nutzer*innen der Chatbegrünung beim Klicken auf „Video-Chat beginnen“ begegnete, wurde diese Installation innerhalb weniger Tage zu einem unserer beliebtesten Dienste und langsam hörten wir auch von Problemen und spezielleren Anforderungen.

Uns war klar, konferenz.netzbegruenung.de war den kommenden Ansprüchen noch nicht gewachsen. Am 13. März begannen Christian und Sven in unserem vereinsinternen Wiki und Dokumentations-Tool eine Übersicht über verschiedene Konferenz-Dienste anzulegen, die absolut zur richtigen Zeit kam. Am gleichen Tage entschieden wir uns, einen Mumble-Server für reine Audio-Konferenzen aufzusetzen. Wir wissen zwar, dass Mumble im Vergleich zu anderen Systemen nicht ganz so zugänglich ist, dafür ist es für seine Leistungsfähigkeit bekannt. Mumble funktioniert und wurde außerdem mit einem Web-Client versehen, so dass zur Nutzung nicht zwangsläufig die Installation eines Programms nötig wird und Max baute dafür eine Vorschaltseite, die die technischen Voraussetzungen des Browsers prüft und somit das Verbinden zum Server vereinfacht.

Parallel dazu arbeiteten wir weiter an der Stabilität von konferenz.netzbegruenung.de und lernten dazu, während wir unzählige Probleme recherchierten. Wir empfahlen erst den Verzicht des Firefox und sperrten ihn dann vorerst auch aus und schnell wurde Jitsi-Meet sehr gut benutzbar. Währenddessen evaluierten wir den Einsatz eines Electron-basierenden Desktop-Clients (ein Thema, dem wir uns gerade aktuell wieder widmen). Wir integrierten zusätzliche Metriken des Dienstes in unser Monitoring und konnten am 17. März bereits über hundert Teilnehmer*innen in Videokonferenzen zählen. Der Montag-Abend ist bei den Grünen durch viele Fraktions- und Vorstandssitzungen offensichtliche Peak-Time. Michael Kellners „#Umschalten“-Kampagne machte uns klar, es würde nicht dabei bleiben. Nach umfangreicher Recherche wurde die monolithische Jitsi-Installation schrittweise in ein skalierbares Cluster mehrerer virtueller Maschinen quasi im laufenden Betrieb umgebaut. Ab dem 21. März kamen zusätzliche Maschinen zum Einsatz und wurden zwischenzeitlich noch einmal ergänzt. am 30.3. und 6.4. konferierten in der Spitze jeweils mehr als 330 Menschen gleichzeitig.

Nutzer*innen auf konferenz.netzbegruenung.de

Nutzer*innen auf konferenz.netzbegruenung.de am 6.4.2020

Auf dem Weg dorthin beschäftigten wir uns mit unzähligen Problemen. Testeten mehrfach unterschiedliche Browser, Clients und schließlich unsere Browserwarnung/sperre. Wir untersuchten stundenlang die Komponente zur Telefoneinwahl auf Probleme. Debattierten (und debattieren noch immer) über Authentifizierungsmöglichkeiten und Raum-Passwörter. Das Netzbegrünungs-CERT beschäftigte sich mit weiteren Privacy-Issues und warnte bald vor der Nutzung von Zoom, was möglicherweise auch zum Anstieg der Nutzung von konferenz.netbegruenung.de beigetragen hat. Zwischendurch wurden wir darauf hingewiesen, dass unsere Jitsi-Installation mit STUN-Servern von Google konfiguriert sei, installierten unseren eigenen STUN-Server, nur um festzustellen, dass diese Funktion bei uns gar nicht aktiv ist (und nein, zu verstehen was ein STUN-Server ist, ist nicht allzu wichtig, sofern ihr euch nicht mit den technischen Details von Internettelefonie beschäftigen wollt 😉 ).

Noch warten wir darauf, dass die Entwickler*innen von Firefox und Jitsi die noch existierenden Probleme aus dem Weg räumen und hoffen, dass diese Angebote noch mehr Grüne dazu in die Lage versetzt, ihre politische Arbeit online zu machen. Und auch wenn es in manchen Fällen noch immer ein bisschen hakt und wir unglaublich viele Support-Anfragen betreut haben, so erhalten wir immer mehr Rückmeldungen über hervorragend funktionierende Video-Konferenzen.

Wolkige Aussichten

Unsere Nextcloud-Installation wolke.netzbegruenung.de hat sich über die Jahre bereits zum populärsten Werkzeug entwickelt, das die Netzbegrünung der Partei anbietet und hat dementsprechend auch schon vorher hohe Priorität bei uns. Über 11.000 Nutzer*innen des Grünen Netzes haben sich bei der Wolke mindestens einmal angemeldet, was mutmaßlich einem großen Anteil der aktiveren Parteimitglieder entsprechen dürfte. Die Wolke macht generell den Großteil der uns erreichenden Support-Anfragen aus und stellt auch den größten technologischen Aufwand dar, benötigt außerdem die meisten Hardware-Ressourcen und verursacht so mit die höchsten Kosten.

Das heißt aber auch, dass wir bereits vor dieser Ausnahmesituation, in der wir uns derzeit befinden, die Wolke das Projekt ist, für das bereits die meisten Planungen am Start waren. Bereits seit langer Zeit ist das eigentliche Storage-Backend, auf dem alle Dateien gespeichert werden, ausfallsicher über zwei dedizierte Server verteilt. Die steigende Popularität der Wolke (und durchaus auch rund zwei Terabyte an Aufzeichnungen von Livestreaming-Events) machten hier jedoch ein notwendiges Upgrade schon länger absehbar. Die Vorbereitung dieses Projekts wird bereits seit Monaten vorbereitet und der Umzug stand bereits in den Startlöchern.

Das jedoch seit langer Zeit meist-gewünschte Feature mit entsprechender Sichtbarkeit für unsere Nutzer*innen ist, für Grüne Gliederungen eigene, Personen-unabhängige Gruppenordner zu haben, welche dank der Entwicklungen von Max Ruta bereits in einer ersten Version vor rund einem Jahr an den Start gegangen waren. Für viele Gliederungen war dies jedoch nicht genug, fehlte ja noch die Möglichkeit, Zugriffsrechte auf einzelne Gremien und Mitglieder innerhalb der jeweiligen Gliederungen festlegen zu können. An den Erweiterungen der Möglichkeiten des Plugins hat Max schon im Vorfeld lange gearbeitet.

Wir stellten nun fest, dass der Bedarf jetzt größer ist als je zuvor und so hat Max am Wochenende des 14. und 15. März bis in die frühen Morgenstunden programmiert um das Projekt nun früher fertig zu stellen. 61 Klassen, 6147 Zeilen Code und 1468 Zeilen Kommentare später war es so weit. Am 15. März begannen wir, die neue Funktion in allen möglichen Konstellationen zu testen und behoben auch noch den ein oder anderen Fehler. Damit die neue Funktionalität allen Gliederungen in der aktuellen Krise möglichst schnell zur Verfügung stehen kann, beschlossen wir, die Integration in die Wolke am darauffolgenden Wochenende des 21. und 22. März durchzuführen.

Der Anstieg der Nutzung der Wolke nach Michaels Erwähnung der digitalen Werkzeuge (Twitter-Thread) am 20. März ließ nicht lange auf sich warten. Die Rückfragen und Anfragen der Nutzer*innen auf allen Kanälen zogen an und auch hier begannen wir, mehr Daten in unser Monitoring fließen zu lassen. Statt der rund 900 eingeloggten Anwender*innen Mitte/Ende März, liegen wir nun überwiegend bei mehr als 1200 Nutzer*innen am Tag und etlichen, die ihre Daten für die Parteiarbeit nun ganz regelmäßig mit dem Nextcloud-Client synchronisieren.

Nutzer*innen in der Wolke

Nutzer*innen in der Wolke – Grün: in den letzten 5 Minuten; Gelb: in der letzten Stunde; Blau: in den letzten 24 Stunden

In dieser Phase sollte nun, wie auch bereits im Webinar zur Vorstellung der grünen digitalen Tools des Bundesverbandes versprochen, das neu entwickelte User-Management der Gliederungsordner am besagten Wochenende implementiert werden. Samstag früh ging es los, Backups aus der Produktivumgebung in die Entwicklungsumgebung einspielen, Migration einmal durchtesten. Dann nochmal von vorne: Backup, Migration, Testen. Nach 3 Versuchen sind wir uns sicher das es so funktionieren wird. Mittlerweile ist die Nacht auf Sonntag um 01:14 Uhr, wir starten die Migration auf der Produktivumgebung und melden um 05:38 Uhr Fertigstellung. Aber leider zeigte sich hier wieder einmal, dass alles Testen im Vorfeld einem nicht die möglichen Unwägbarkeiten der Produktionsumgebung nimmt. Nicht nur, dass uns viele Rückfragen erreichten, warum der Zugriff auf die Gliederungsordner nunmehr kein direktes Speichern im Verzeichnis mehr zulässt (leider mit der Struktur der Rechtevergabe nicht vereinbar), auch erzeugten die zusätzlichen Datenbankabfragen leider stark erhöhte Last auf dem Wolke-System. Dies bekamen wir durch eine Vielzahl von Maßnahmen nach einer sehr kurzen Nacht noch im Laufe des Wochenendes vorerst in den Griff. Datenbankabfragen wurden optimiert und mit Caching versehen, das Datenbank-Setup in ein redundantes Galera-Cluster ausgelagert und neue, leistungsstärkere Hardware bestellt. All dies mehr oder weniger im laufenden Betrieb über das gesamte Wochenende hinweg.

Unerwartet hohe CPU-Last um 5 Uhr morgensn nach Aktivierung der neuen Gruppenordner

Unerwartet hohe CPU-Last um 5 Uhr morgens nach Aktivierung der neuen Gruppenordner

Währenddessen sorgten die neuen Gruppenordner für weiterhin wachsendem Speicherbedarf und erste Anfragen von Gliederungen erreichten uns, um den Speicherplatz ihrer Gruppenordner zu erhöhen. Doch stellt der Umzug auf das neu vorgesehene Storage-Backend (ein Gluster-Filesystem auf Basis von ZFS-Pools) eine weitere Herausforderung dar. Wie transferiert man zeitnah 4,2 Terabyte in mehr als 1,7 Millionen Dateien? Dieser Aufgabe widmen wir uns nun seit über einer Woche, die uns viel Kopfzerbrechen bereitet. Aber inzwischen sind wir optimistisch. Wir planen sowohl den Umzug auf die neue Applikations- als auch Storage-Hardware beginnend mit dem verlängertem Osterwochenende und versprechen uns nach Ablauf des Wartungsfensters nicht nur mehr Speicherplatz, sondern auch eine verbesserte Performance.

Zwischenzeitlich wurden noch viele weitere Arbeiten rund um die Wolke erledigt. In der Hoffnung auf verbesserte Performance führten wir im Laufe der Gruppenordner-Implementierung ein Upgrade auf Nextcloud 18 durch und lösten kleinere damit auftretende Probleme. Auf Anregung des Netzbegrünungs-CERT wird die Integration des KeePass-kompatiblen webbasierten Passwortmanagers evaluiert, der gegenüber Passman eine bessere Alternative darstellen könnte. Und das Sicherstellen der Funktionsfähigkeit von OnlyOffice und Libreoffice Online stellt ein fortwährendes Tagesgeschäft bei der Betreuung der Wolke dar. Wir hoffen, mit dem kollaborativen Texteditor mittelfristig eine modernere Alternative zu den Teampads der Textbegrünung realisieren zu können und freuen uns, dass 132 140 Grüne Abgeordnete ihren Aufruf zu mehr europäischer Solidarität der Bundesregierung so verbreiten konnten.

Noch mehr Projekte

Die bisher vorgestellte Arbeit wäre inzwischen vollkommen undenkbar, hätten wir nicht mit Jitsi und der Chatbegrünung Werkzeuge, mit denen wir selbst intensiv kommunizieren können, phasenweise in den vergangenen Wochen schon rund um die Uhr. Trotzdem konnte die Chatbegrünung außerdem auch in diesen Tagen ein Update der Rocket.Chat-Software erfahren. Die Anzahl der Nutzer*innen von Chatbegrünung wuchs innerhalb eines Monats um mehr als 10% auf nun über 8100. Und viele von ihnen haben Fragen.

Ein Großteil dieser Support-Anfragen, die uns via Chatbegrünung oder über unser Support-Formular, sowie support@netzbegruenung.de erreichen, werden hierbei von Willi beantwortet, der hierfür im März nicht nur den größten Teil seines Urlaubs opferte, sondern dies nun seit Kurzem auch offiziell als Supporter tun darf. Dazu kommt die Unterstützung unzähliger weiterer aktiver Mitglieder der Netzbegrünung aber auch anderer engagierter Parteimitglieder, die auf Chatbegrünung regelmäßig immer wieder Antworten, Tipps und Hinweise geben, die alle aufzuzählen mich nur der Gefahr aussetzen würde, jemanden zu vergessen. 🙂

Der Support-Aufwand ist inzwischen so groß, dass wir hierfür ein Ticketsystem betreiben, mit dem wir eure Mails strukturiert beantworten können. Es hat, wie ich mir habe sagen lassen, unter unseren Aktiven sehr große Fans. Zu der Arbeit, die aber außerdem in den vergangenen Wochen extrem vorangetrieben wurde, gehört der Ausbau der allgemeinen Dokumentation unserer Werkzeuge. Nicht nur sorgte Willi dafür, dass zum Start der Gruppenordner in der Wolke eine umfassende Dokumentation zur Verfügung stand. Viele der Werkzeuge haben in den letzten Tagen bessere Beschreibungen, Ergänzungen und Hinweise von einer Vielzahl an Mit-Autor*innen erhalten, oder gar kurze Video-Anleitungen, wie die zur Chatbegrünung von Max Petras.

Zwei Webinare des Bundesverbandes wurden mit Meikels, Christians, Max und Willis Hilfe unterstützt und Thomas, der als Beteiligungsreferent in der BGS und Netzbegrünungsmitglied ebenfalls eine unermüdliche Schnittstellenrolle ausübt, stellte die Aufzeichnungen dieser Webinare für Grüne Mitglieder auf der erst wenige Monate alten Peertube-Instanz der Netzbegrünung online.

Die Grüne Mastodon-Instanz, die Grünen Mitgliedern eine dezentrale Alternative zu Twitter im sogenannten „Fediverse“ ermöglicht, läuft zwar dank Marians und Norberts Engagement bereits seit Ende Februar auf neuer Version, erreichte jedoch außerdem im Laufe des März den Meilenstein von 100 Nutzer*innen, wer einen Account möchte, ist herzlich eingeladen, sich diesen via Einladungslink im Kanal #mastodon auf Chatbegrünung zu klicken. Außerdem erweiterte und optimierte Marian weiterhin das Green-Spider-Projekt.

Das CERT der Netzbegrünung, ein Team von Security-Spezialisten, das Parteigliederungen ihre Unterstützung bei Security-Incidents anbietet, arbeitet parallel auch weiter, beispielsweise an der Dokumentation auf training.cert.netzbegruenung.de, wo ihr euch die wichtigsten Grundlagen zum sicheren Umgang mit digitalen Diensten aneignen könnt.

Und abschließend vielleicht noch ein Blick auf einige technische Details. Die Vielzahl der betriebenen Dienste macht eine rein manuelle Administration inzwischen vollkommen unmöglich. Die Anzahl an virtuellen Maschinen und Hardware-Servern macht den Einsatz von Automatisierungswerkzeugen notwendig. Dies bedeutet jedoch gleichzeitig, dass der Aufbau eines Dienstes nicht allein die Installation und Konfiguration von Software bedeutet, sondern oft auch die Integration in das Automatisierungswerkzeug Saltstack, was oft einigen Programmieraufwand darstellt, sowie die Ergänzung unseres auf Grafana basierenden Monitorings. Diese Werkzeuge erhöhen unsere Fähigkeit, den Überblick zu behalten, bedeuten aber eben auch ein höheres Maß an Komplexität und den Betrieb weiterer Systeme. Das gehört aber auch zu unserem Anspruch an Professionalität und in dieser Richtung liegen auch noch viele Ideen vor uns.

Wie viele andere IT-Teams ist viel von dieser Infrastruktur nicht nur in unserem Wiki, sondern auch in sogenannten Repositories dokumentiert, die auf dem Versionsverwaltungswerkzeug „Git“ basieren. Diesem Werkzeug ordnet sich derzeit die gesamte moderne IT-Welt unter und natürlich betreiben wir auch hierfür einen eigenen Dienst. Und weil wir nicht schon genug zu tun hatten, haben wir auch diesen Dienst in der vergangenen Woche einmal umgezogen – und hierbei von Gitlab auf Gitea gewechselt. Glücklicherweise erfolgreich und ohne dass es Auswirkungen auf unsere Arbeit nach außen hatte.

Es ist kein Geheimnis, dass die Dienste, die wir einsetzen in aller Regel keine von uns geschriebene Software ist, sondern meist weit verbreitete und erfolgreiche Open-Source-Projekte. Trotzdem nutzen wir die Möglichkeiten, diese an unsere Bedürfnisse anzupassen, so wie das Gruppenordner-Plugin in der Wolke, das Informationen aus Sherpa mit Nextcloud verknüpft. Oft betreiben wir intensive Fehlersuche und lösen Probleme oftmals selbst, indem wir den Programmcode selbst anpassen. Nicht selten geben wir diese Änderungen dann in Form sogenannter „Pull-Requests“ an Projekte wie Nextcloud, Rocket.Chat oder kürzlich erst Jitsi-Meet-Electron zurück und tragen somit unseren Teil zur Open-Source-Community bei.

Unsere Bilanz

Alles in allem haben die Aktiven in der Netzbegrünung in den letzten Wochen viele hundert Arbeitsstunden investiert, einige von uns dabei mehr als in unseren hauptberuflichen Verpflichtungen. Die Arbeit der Netzbegrünung wäre zum jetzigen Zeitpunkt weder ohne das Engagement ehrenamtlicher Administratoren, noch ohne bezahlte Arbeit denkbar. Zu hoch sind die Ansprüche unserer Nutzer*innen nach zuverlässigem Betrieb, rascher Problembehebung und der Bedarf nach Hilfe und Support. Lastspitzen und Software-Fehler richten sich auch nicht nach Arbeitszeiten oder der „Lust“ von Freiwilligen, denn bei einem Systemausfall zu jeglicher Tageszeit vergehen kaum mehr als fünf Minuten, bevor dies von Nutzer*innen bemerkt und an uns gemeldet wird, oft nur knapp zeitlich geschlagen von unserem Monitoring. Viele Arbeiten erfordern trotz vorhandener Redundanzen die Unterbrechung von Diensten und erfordern daher Arbeiten spätabends oder in den frühen Morgenstunden. Das aktuelle Ausmaß dieser Arbeiten ist dabei momentan weder arbeitsrechtlich einer*m angestellten Adminstrator*in zumutbar, noch allein mit ehrenamtlicher Arbeit zu leisten, deren Träger hierfür für vergleichbare Arbeit bei ihrer/m Brötchengeber*in meist hohe Zuschläge oder mehrfachen Freizeitausgleich erhalten.

Uns ist sehr daran gelegen, dass die GRÜNEN für haupt- wie ehrenamtliche politische Arbeit digitale Werkzeuge zur Verfügung haben, die sie von vielen großen Anbietern von Cloud-Diensten mit Plattform-Lock-In und oft zweifelhaftem Datenschutz, unabhängiger machen. Wir wollen euch Werkzeuge bereit stellen, bei denen wir euch durch euer Feedback an deren Gestaltung teilhaben lassen können. Denn demokratische Arbeit wird auch definiert durch die Medien, die sie benutzt und da macht es einen Unterschied, dass die Open-Source-Anwendungen, die bei uns zum Einsatz kommen, selbst wiederum Produkt eines offenen Diskurses zwischen den Entwickler*innen und ihren Anwender*innen sind.

Für unsere Arbeit erhalten wir von vielen Seiten sehr viel Dank und sehr viel Lob und wir freuen uns darüber sehr. Wir wissen auch, dass es neben uns noch viele engagierte Menschen mit viel Wissen und Know-How gibt, die vor Ort in ihren Kreis- und Ortsverbänden sowohl unsere Dienste ihren Mitgliedern erklären, aber auch eigene Werkzeuge mit aufbauen und supporten. Auch die leisten tolle Arbeit und wir hoffen, dass es in Zukunft auch noch mehr Raum zum offenen Austausch gibt.

Ab und zu sehen wir aber auch, dass unsere Arbeit mystifiziert wird („Ihr IT-Götter“), oder schnell mal auch als selbstverständlich wahrgenommen wird („die Netzbegrünung macht das doch/kann das doch“). Für uns ist aber die Bereitstellung digitaler Werkzeuge eine gemeinschaftliche Aufgabe für die ganze Partei, zu der wir gerne unser Know-How beitragen, bei der wir aber alle in der Partei unseren Teil der Verantwortung tragen sollten.