Technik

Diensteangebot

Allgemeine Hilfe & Infos zu unseren öffentlichen bzw. vereinsöffentlichen Diensten

Diensteangebot

Softwerke-Account

Dein Softwerke-Account ist der zentrale Login für all unsere Dienste. Du kannst deinen Account auf auth.softwerke.md registrieren & verwalten.

Die Erstellung eines Accounts ist kostenlos.
Um unseren Fortbestand und zu sichern kannst du uns mit einer Spende unterstützen oder direkt hier Mitglied werden.

Solltest du größere Projekte haben, bei denen unsere Dienste dir nicht ausreichen solltest, kontaktiere uns bitte unter vorstand@softwerke.md, damit wir eine Lösung finden können.

Diensteangebot

Vault

Auf jeder Seite soll man ein einmaliges, sicheres Passwort verwenden, am besten ein schwer zu merkendes, und dann soll man sich alle merken? Das geht nicht - Abhilfe schaffen Passwort-Manager, bei denen man mit einem Master-Passwort (plus optional weitere Sicherheitsmaßnahmen) einen verschlüsselten Tresor aufschließen kann, in dem man dann alle seine Accounts und Passwörter verwaltet.

Die Softwerke bieten dafür BitWarden (bzw. technisch gesehen bitwarden_rs) an, du findest es unter tresor.magdeburg.jetzt.

Die Logindaten für deinen Tresor sind aus Sicherheitsgründen vollständig getrennt von deinem restlichen Softwerke-Account! Du benötigst jedoch einen Softwerke-Account mit der gleichen E-Mail-Adresse, um dich für den Tresor registrieren zu können.
Ohne deinem Master-Passwort kann niemand auf deine Passwörter zugreifen, merke es dir darum sehr gut! Im Idealfall merkst du dir nur dein Master-Passwort für den Tresor und änderst dein Passwort für den Softwerke-Account direkt auf ein im Tresor generiertes & gespeichertes zufälliges Passwort.

image-1618556800364.png

Einrichtung eines zweiten Faktors für mehr Sicherheit

In den Tresor-Einstellungen gibt es die Option "Zwei-Faktor-Authentifizierung" (2FA), wo du beispielsweise eine Authentifizierungs-App wie den Aegis Authenticator für Android oder den Tofu Authenticator für iOS als zweiten Faktor einrichten kannst. Sicherer sind jedoch FIDO U2F-Sicherheitsschlüssel - das sind kleine USB-Sticks (beispielsweise der SoloKeys Solo V2 oder der Nitrokey FIDO2), die du zusammen mit deinem Passwort quasi wie einen klassischen "Schlüssel" zu deinem Tresor nutzen kannst.

Ein zweiter Faktor bedeutet, dass jemand der dein Passwort (den ersten Faktor) kennt, sich nur anmelden kann, wenn er auch Zugriff auf dein Handy oder deinen U2F-Schlüssel hat. Eine detailliertere Anleitung findest du unter "Alles über Zwei-Faktor-Authentifizierung".

Die Zwei-Faktor-Authentifizierung betrifft deinen Tresor nur logisch, nicht kryptografisch - das bedeutet, dass unsere AG Technik theoretisch trotz 2FA nur dein Master-Passwort benötigt, um deinen Tresor zu entschlüssen. Es schützt jedoch sehr gut gegen viele mögliche Angriffe von außen und ist darum unbedingt zu empfehlen.

Nutzung auf anderen Webseiten & am Handy

Um die Passwörter auf Webseiten und in Apps zu nutzen, gibt es auf der Webseite von BitWarden Apps und Browser-Erweiterungen für die meisten Geräte. Hierbei musst du bei der Anmeldung oben links das Zahnrad image-1618555958682.png anklicken, und dort als "Server-URL" die Adresse https://tresor.softwerke.md angeben:

image-1618556090848.png

 

Diensteangebot

Matrix-Chat

Matrix ist ein verschlüsselter & föderierter Chat-Standard, bei dem du die Kontrolle über deine Daten hast. Tauche mit uns bei chat.magdeburg.jetzt in die Welt von Matrix ein, und kommuniziere sicher mit deinen Freunden!

Bildschirmfoto von 2021-05-15 11-48-31.png

Das technische Grundprinzip von Matrix ist ähnlich wie bei E-Mail: es gibt viele Server (bei E-Mail wird dieser durch den Teil hinter dem @ angegeben), und alle Menschen können sich darüber miteinander unterhalten, egal ob sie ihr Nutzerkonto z. B. bei Google, Mailbox.org oder ihrem Arbeitgeber haben. Auch bei Matrix ist die Adresse zweigeteilt (wenn auch in einem etwas anderen Format als bei E-Mail), mit einem Softwerke-Account mit dem Nutzernamen "max" heißt du bei Matrix @max:magdeburg.jetzt.

Der Nutzername für die Anmeldung bei Matrix muss in jedem Fall klein geschrieben werden! Ist der Nutzername deines Softwerke-Accounts also "Max" oder "MAX", dann heißt du bei Matrix trotzdem "max", also @max:magdeburg.jetzt

Ähnlich wie die Weboberfläche des E-Mail-Anbieters oder E-Mail-Programme oder -Apps gibt es auch bei Matrix sogenannte Clients - wir verwenden bei chat.magdeburg.jetzt die Software Element, die du auch für deinen Computer oder für dein Handy herunterladen kannst. Weitere Clients sind auf der Matrix-Homepage aufgelistet, achte aber darauf dass bei vielen teils noch essentielle Funktionen fehlen.

Wenn du bereits einen Matrix-Account hast, kannst du evtl. das Migrations-Tool von EMS ausprobieren - wie gut dieses funktioniert müssen wir jedoch erst herausfinden.

Diensteangebot

E-Mail & Mailinglisten

E-Mail wird von uns nur für Vereinsmitglieder für die offizielle Vereinskommunikation angeboten.
Wenn du einen Anbieter für deine persönliche E-Mail-Adresse suchst, schau doch einmal bei folgenden datenschutzfreundlichen Alternativen vorbei:
mailbox.org: ab 1€/Monat
Posteo: ab 1€/Monat
Tutanota: vollverschlüsselt, kostenlose Version beschränkt Mail-Suche auf letzte 4 Wochen, sonst ab 1€/Monat
ProtonMail: vollverschlüsselt, kostenlose Version ebenfalls recht stark eingeschränkt, sonst ab 5€/Monat
(vollverschlüsselte Anbieter sind etwas sicherer, aber nicht ganz so einfach und flexibel zu nutzen wie du das von anderen Anbietern kennst, du kannst z.B. nicht mehr beliebige Mail-Apps nutzen)

Für Vereins-E-Mails steht dir unter webmail.softwerke.md die Webmail-Oberfläche zur Verfügung. Anmelden kannst du dich ganz normal mit deinem Softwerke-Account, also Benutzername und Passwort.

Wenn du deine Vereins-Mails an deine private Adresse weiterleiten möchtest, kannst du im Webmail in den Einstellungen unter "Filter" eine Weiterleitung erstellen (neuer Filter mit Aktion "Weiterleiten nach").

Jeder kann E-Mails von den, dem jeweiligen Konto zugewiesenen, Aliasen verschicken, sowie der eigenen Addresse. Das heißt, wenn alias1@softwerke.md auf nutzer1@softwerke.md weiterleitet, kann Nutzer1 sowohl von alias1@ also auch von nutzer1@ verschicken. Das ganze funktioniert auch mit verketteten Aliasen.

Der Vorstand kann über unsere Server E-Mails von jeder Adresse @softwerke.md verschicken, alle anderen nur unter ihrer Vereins-E-Mail-Adresse oder unter explizit freigeschalteten Aliasen. Im Webmail kannst du dafür in den Einstellungen deine Identitäten verwalten.

Wenn du einen externen E-Mail-Client nutzen willst, nutze dafür folgende Daten:

  IMAP (Empfang) SMTP (Versand)
Server mail.softwerke.md mail.softwerke.md
Port & Sicherheit 993 (TLS/SSL) oder
143 (StartTLS)
465 (TLS/SSL) oder
587 (StartTLS)
Benutzername
Dein Nutzername
Passwort
Dein Softwerke-Passwort

Mailinglisten

Das beschriebene Setup für Mailinglisten ist nicht korrekt, und wird angepasst, sobald die Listmonk-Umstellung abgeschlossen ist.

Für Mailinglisten verwenden wir Schleuder, du findest dafür die Weboberfläche auf verteiler.softwerke.md. Die Administration erfolgt ansonsten hauptsächlich über E-Mail-Befehle, mehr Informationen dazu findest du in der Schleuder-Dokumentation.

Aktuell gibt es folgende Mailinglisten:

Für neue Mailinglisten und weitere Fragen kontaktiere bitte die AG Technik (admin@softwerke.md).

Mailrouting

Alias Ziel Bemerkung
accounts@ AG Technik & Vorstand Adresse für Accounts
admin@ AG Technik
finanzen@ AG Finanzen
kontakt@ vorstand@
pr@ AG Öffentlichkeitsarbeit
verein@ Alle Vereinsmitglieder Kann nur vom Mitgliedern benutzt werden.
vorstand@ Vorstand
Diensteangebot

Vereins-Homepage

Dieser Artikel betrifft die Vereins-Webseite, die von Mitgliedern der AG für Öffentlichkeitsarbeit verwaltet wird.
Wenn du einen Anbieter für deine persönliche Homepage suchst, schau doch einmal bei folgenden datenschutzfreundlichen Alternativen vorbei:
hosting.de: ab 2,90€/Monat, klassisches Webhosting
uberspace.de: zahl-was-du-willst, für technisch versierte Nutzer

Die Vereinshomepage softwerke.md wird über ProcessWire verwaltet und kann von allen Mitgliedern der AG Öffentlichkeitsarbeit bearbeitet werden.

Die Adminoberfläche ist über https://softwerke.md/processwire/ zu erreichen.

Caching

Bei Bedarf kann der Cache der Website unter Module → Core → PageRender geleert werden. Das ist zum Beispiel notwendig, um einen Refresh der Vereinsdokumente zu erzwingen.

Infrastruktur-Dokumentation

Die technische Seite der Technik, hauptsächlich intern von der AG Technik genutzt.

Infrastruktur-Dokumentation

Infrastruktur der Softwerke

Der gesamte Code der für den Betrieb unserer Infrastruktur notwendig ist, ist auf https://codeberg.org/softwerke-magdeburg/infrastructure zu finden.

Server, DNS & mehr

Unsere Server laufen bei https://netcup.de. Das Passwort zum CCP kann im Passwort-Manager nachgeschlagen werden; das SCP ist nur über das CCP erreichbar.

Domains, DNS und Speicherplatz (als Object Storage) laufen bei https://ovh.de.

CoreOS als Betriebssystem

CoreOS wurde gewählt, weil es sich selbst updated und kaum Wartung benötigt. Für Updates ist ein Neustart notwendig, dafür wurde als Wartungszeitfenster 05:30 bis 06:25 gewählt.

Die Ignition-Konfiguration kann immer nur bei der (Neu)Installation von CoreOS verwendet werden - kleinere Änderungen dürfen manuell erledigt werden, ansonsten ist eine Neuinstallation meist empfehlenswert.

Für das Deployment von CoreOS ist eine .env-Datei notwendig (im coreos-Verzeichnis dieses Repositories), deren Inhalt im Passwort-Manager zu finden ist.

Mehr Informationen zum Deployment neuer Server ist in der coreos/README.md zu finden.

Docker Swarm + Docker Stack

Docker Swarm kann mehrere Systeme zu einem Cluster zusammenschließen, ist dabei aber deutlich weniger flexibel als Kubernetes.

Docker Stack kann Projekte auf ein Docker-System oder einen Swarm-Cluster deployen, und zwar mit den bekannten Compose-Dateien.

Die Projekte sind im Ordner services zu finden und können mit swarm-make <service>.up clean gestartet und mit swarm-make <service>.down clean gestoppt werden - dafür ist ein erstmaliges Setup erforderlich, wie in der services/README.md beschrieben ist. Ebenfalls ist eine zweite .env-Datei erforderlich, die ebenfalls im Passwort-Manager zu finden ist..

Zur Konfiguration der Dienste werden statt Volumes configs genutzt, da diese automatisch im Cluster verteilt werden.

Infrastruktur-Dokumentation

Backup-Server

Der Borg Backup-Server ist eine Schnittstelle zwischen dem Internet sowie dem - nur intern erreichbaren - Backup-Speicher bei Scaleway (als Block Storage). 

Einrichtung

Erstellung in Scaleway

Der Server wurde mit folgender Konfiguration erstellt:

scw instance server create \
  type=STARDUST1-S \
  zone=nl-ams-1 \
  image=rockylinux_8 \
  root-volume=l:10G \
  additional-volumes.0=b:25G \
  name=backup.s.softwerke.md \
  ip=none \
  project-id=869d0909-f443-424a-8a6d-08c21ed750a8

Durch diese Konfiguration ist der Server nicht per IPv4 sondern nur per IPv6 erreichbar (das spart etwas über 1 € im Monat).
In der zugehörigen Security Group (namens Backup) wird dann ausschließlich SSH-Verkehr aus dem Internet zugelassen und alle anderen eingehenden TCP- und UDP-Verbindungen verworfen.

Aktuell hängt noch eine IP am Server da IPv6 auf unserem Hauptserver noch nicht wirklich funktioniert.

Einrichtung per Ansible

Zu beachten ist, dass (Stand Oktober 2021) bei Rocky Linux 8.4 nur OpenSSH 8.0 verfügbar ist, also noch keine Hardware-Schlüssel unterstützt werden.

Der Server kann über Ansible mithilfe des Playbooks im Ordner backup-server des Infrastruktur-Repos eingerichtet werden - dies erfolgt mit dem folgenden Befehl:

ansible-playbook playbook.yml

Vergrößerung des Speicherplatzes

Wenn der Block Storage vergrößert wird, kann die Partitionstabelle sowie das Dateisystem mit folgendem Befehl vergrößert werden:

{ printf 'w\nY\nY\n' | gdisk /dev/sda; } && \
{ printf "d\nn\n$(cat /sys/block/sda/sda1/partition)\n$(cat /sys/block/sda/sda1/start)\n\n8300\nw\nY\n" | gdisk /dev/sda; } && \
partprobe && \
resize2fs /dev/sda1

Backups & Borg-Repositories

Repository erstellen

Ein verschlüsseltes Backup-Repository wird (auf dem jeweiligen Quellserver) wiefolgt erstellt:

borg init \
  --encryption authenticated-blake2 \
  --append-only \
  backup@backup.s.softwerke.md:/mnt/REPONAME

Backup manuell erstellen

Ein Backup kann dann folgendermaßen durchgeführt werden:

BORG_PASSPHRASE='...' \
  borg create \
  --progress \
  "backup@backup.s.softwerke.md:/mnt/REPONAME::{now:%Y-%m-%d--%H-%M-%S}" \
  /var/lib/docker/volumes

Automatische Backups per systemd-Timer

/etc/systemd/system/backup.service

[Unit]
Description=Backup
After=syslog.target network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/borg create --progress "backup@backup.s.softwerke.md:/mnt/REPONAME::{now:%%Y-%%m-%%d--%%H-%%M-%%S}" /var/lib/docker/volumes
Environment=BORG_PASSPHRASE=...

/etc/systemd/system/backup.timer

[Unit]
Description=Run backup every 3 hours

[Timer]
OnCalendar=*-*-* 00,03,06,09,12,15,18,21:00:00

[Install]
WantedBy=timers.target

Monitoring

TODO: wir sollten (jeweils mit Benachrichtigung) prüfen ob einerseits im Repo die Backups ankommen, und andererseits der "borg create"-Befehl mit erfolgreichem Exit-Code abschließt.

Infrastruktur-Dokumentation

Speicher-Server

Der Speicher-Server stellt die NextCloud zur Verfügung - dafür würde sich zwar theoretisch auch ein Docker-Container mit der NextCloud-S3-Anbindung eignen, letztere ist jedoch unglaublich langsam. Unsere Zwischenlösung ist darum ein RAID-0 aus Block Storage Volumes, wodurch ausschließlich vertikale Skalierung möglich ist. Langfristig ist die NextCloud wohl der Dienst wo sich am ehesten die Anschaffung eigener Hardware in Kombination mit einem GlusterFS-Dateisystem lohnt, hoffentlich ist bis dahin aber OwnCloud Infinite Scale an einem Punkt angekommen, wo das obsolet ist.

Einrichtung

Erstellung in Scaleway

Der Server wurde mit folgender Konfiguration erstellt:

scw instance server create \
  type=DEV1-S \
  zone=fr-par-2 \
  image=rockylinux_8 \
  root-volume=l:20G \
  name=speicher.s.softwerke.md \
  ip=new \
  project-id=473e8c4a-83a4-41f6-a7de-9dd6aa2a3247

Einrichtung per Ansible

Zu beachten ist, dass (Stand Oktober 2021) bei Rocky Linux 8.4 nur OpenSSH 8.0 verfügbar ist, also noch keine Hardware-Schlüssel unterstützt werden.

Der Server kann über Ansible mithilfe des Playbooks im Ordner speicher-server des Infrastruktur-Repos eingerichtet werden - dies erfolgt mit dem folgenden Befehl:

ansible-playbook playbook.yml

 

Infrastruktur-Dokumentation

Mail-Infrastruktur

 

// TODO

Postfix

Rspamd

Dovecot

LDAP

How to AG-Technik

How to AG-Technik

Apps anlegen, verwalten und warten

Unter https://codeberg.org/softwerke-magdeburg/infrastructure/src/branch/main/apps sind alle von uns zur Verfügung gestellten Apps/Dienste zu finden. Jeder Ordner ist dabei ein eigenes Docker-Compose-Projekt, welches auf bestimmte global verfügbare Variablen und andere Dienste (z. B. Traefik, MySQL, PostgreSQL, Mail & LDAP) zurückgreifen kann.

Ein Projekt sieht also beispielsweise wiefolgt aus:

Für die Compose-Datei ist folgendes zu beachten:

Global verfügbare Variablen

Global verfügbare Dienste

TODO: Aktuell fehlt ein allgemeiner Ansatz für den lokalen Test von LDAP, E-Mail, Datenbanken etc. mit TLS-Verschlüsselung. Dies muss noch fertiggestellt und dokumentiert werden.

Traefik

Durch Traefik 2 als Reverse Proxy können HTTP-Endpunkte der App unter einer bestimmten Internetadresse verfügbar gemacht werden. Dies wird über Docker-Label eingestellt, beispielsweise folgendermaßen:

labels:
  traefik.enable: "true"
  traefik.http.services.<APPNAME>.loadbalancer.server.port: "80" # Container-internal port
  traefik.http.routers.<APPNAME>.rule: "Host(`example.${main_domain:-localhost.mock.directory}`)" # Rules for exposed URL
  traefik.http.routers.<APPNAME>.entrypoints: "web"
  traefik.http.routers.<APPNAME>.tls: "true"
  traefik.http.routers.<APPNAME>.middlewares: "hsts"

E-Mail

Für den Versand von E-Mail kann SMTP genutzt werden, wofür folgende Umgebungsvariablen genutzt werden können:

Authentifizierung

OpenID Connect

Dies ist bisher noch nicht implementiert, wird später aber die bevorzugte Methode sein.

SAML

Dies ist bisher noch nicht implementiert.

LDAP

LDAP sollte nur genutzt werden wenn weder OpenID Connect noch SAML genutzt werden können.

Dabei können folgende Umgebungsvariablen genutzt werden:

Das LDAP-Schema hat dabei folgende Eigenschaften:

Datenbanken

PostgreSQL

Das bevorzugte Datenbanksystem ist PostgreSQL - dieses kann mit folgenden Umgebungsvariablen genutzt werden:

MariaDB

Wenn PostgreSQL nicht unterstützt wird, kann eine MariaDB-Datenbank folgendermaßen eingesetzt werden:

Lokale Testmöglichkeit

Mit ./debug.sh <APPNAME> up kann ein Projekt gestartet werden - alles was dafür benötigt wird ist eine POSIX-Shell (wie sie auf jeder handelsüblichen Linux-Distribution vorhanden sein sollte) und Docker + Docker Compose.