2024-07-12 11:19:40 +02:00
|
|
|
{
|
|
|
|
"meta": {
|
|
|
|
"author": "Christian Fraß",
|
|
|
|
"date": "2024-07-11",
|
|
|
|
"title": "Digitale Infrastruktur für DIE LINKE.",
|
|
|
|
"contact": {
|
|
|
|
"email_address": "christian.frass@dielinke-glauchau.de"
|
|
|
|
}
|
|
|
|
},
|
2024-07-13 09:27:24 +02:00
|
|
|
"motivation": {
|
|
|
|
"situation": [
|
|
|
|
"Mitgliedern fehlen Werkzeuge für gemeinschaftliche Partei-Arbeit",
|
|
|
|
"Mitglieder kommunizieren über zweifelhafte Kanäle miteinander",
|
|
|
|
"Mitglieder kommunizieren gar nicht miteinander",
|
|
|
|
"Mitglieder werden nach Eintritt in der Luft hängen gelassen"
|
|
|
|
]
|
|
|
|
},
|
2024-07-12 11:19:40 +02:00
|
|
|
"services": {
|
|
|
|
"theory": [
|
|
|
|
{
|
|
|
|
"text": "Wie setzt man einen Web-Dienst mit ausgelagerter Anmeldung auf?",
|
|
|
|
"image": "services-0"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Zunächst wird eine Datenbank eingerichtet",
|
|
|
|
"image": "services-1"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Weiterhin wird ein Web-Server benötigt",
|
|
|
|
"image": "services-2"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Zudem soll ein Authentifizierungs-Dienst zum Einsatz kommen",
|
|
|
|
"image": "services-3"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… dieser benötigt in der Regel eine Datenbank-Anbindung",
|
|
|
|
"image": "services-4"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… und soll über den Web-Server von außen erreichbar sein",
|
|
|
|
"image": "services-5"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Der eigentliche Dienst …",
|
|
|
|
"image": "services-6"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… benötigt ebenfalls eine Datenbank-Anbindung",
|
|
|
|
"image": "services-7"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… soll den Authentifizierungs-Dienst nutzen",
|
|
|
|
"image": "services-8"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… und über den Web-Server angesprochen werden",
|
|
|
|
"image": "services-9"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"practice": {
|
|
|
|
"example": {
|
|
|
|
"link": "https://linke.sx",
|
|
|
|
"label": "linke.sx"
|
|
|
|
},
|
|
|
|
"technologies": {
|
|
|
|
"pool": {
|
|
|
|
"debian": {
|
|
|
|
"name": "Debian GNU/Linux",
|
|
|
|
"link": "https://www.debian.org/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "Betriebssystem"
|
|
|
|
},
|
|
|
|
"ansible": {
|
|
|
|
"name": "Ansible",
|
|
|
|
"link": "https://www.ansible.com/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "IAC-Plattform"
|
|
|
|
},
|
|
|
|
"keepassxc": {
|
|
|
|
"name": "KeePassXC",
|
|
|
|
"link": "https://keepassxc.org/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "Passwort-Verwaltung"
|
|
|
|
},
|
|
|
|
"letsencrypt": {
|
|
|
|
"name": "Let's Encrypt",
|
|
|
|
"link": "https://letsencrypt.org/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "TLS-Zertifikats-Erstellung"
|
|
|
|
},
|
|
|
|
"inwx": {
|
|
|
|
"name": "INWX",
|
|
|
|
"link": "https://www.inwx.de/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "Domänen-Registrar"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"order": [
|
|
|
|
"debian",
|
|
|
|
"ansible",
|
|
|
|
"keepassxc",
|
|
|
|
"inwx",
|
|
|
|
"letsencrypt"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"basics": {
|
|
|
|
"pool": {
|
|
|
|
"postgresql": {
|
|
|
|
"name": "PostgreSQL",
|
|
|
|
"link": "https://www.postgresql.org/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "Datenbank-Server"
|
|
|
|
},
|
|
|
|
"nginx": {
|
|
|
|
"name": "nginx",
|
|
|
|
"link": "https://nginx.org/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "Web-Server und Lastenverteiler"
|
|
|
|
},
|
|
|
|
"authelia": {
|
|
|
|
"name": "Authelia",
|
|
|
|
"link": "https://www.authelia.com/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "Auth-Server"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"order": [
|
|
|
|
"postgresql",
|
|
|
|
"nginx",
|
|
|
|
"authelia"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"concrete_present": {
|
|
|
|
"pool": {
|
|
|
|
"synapse": {
|
|
|
|
"name": "Synapse",
|
|
|
|
"link": "https://github.com/element-hq/synapse",
|
|
|
|
"icon": "https://matrix.org/images/matrix-favicon.svg",
|
|
|
|
"desc": "Chat-Server"
|
|
|
|
},
|
|
|
|
"element": {
|
|
|
|
"name": "Element",
|
|
|
|
"link": "https://element.io/",
|
|
|
|
"icon": "https://element.io/images/webclip.png",
|
|
|
|
"desc": "Chat-Client für Browser"
|
|
|
|
},
|
|
|
|
"hedgedoc": {
|
|
|
|
"name": "Hedgedoc",
|
|
|
|
"link": "https://hedgedoc.org/",
|
|
|
|
"icon": "https://informatik-box.de/images/hedgedoc.png",
|
|
|
|
"desc": "Notizen"
|
|
|
|
},
|
|
|
|
"gitlab": {
|
|
|
|
"name": "GitLab",
|
|
|
|
"link": "https://about.gitlab.com/",
|
|
|
|
"icon": "https://about.gitlab.com/nuxt-images/ico/favicon-192x192.png",
|
|
|
|
"desc": "Code-Management und Aufgabenverwaltung",
|
|
|
|
"stat": "present"
|
|
|
|
},
|
|
|
|
"forgejo": {
|
|
|
|
"name": "Forgejo",
|
|
|
|
"link": "https://forgejo.org/",
|
|
|
|
"icon": "https://forgejo.org/favicon.png",
|
|
|
|
"desc": "Code-Management und Aufgabenverwaltung"
|
|
|
|
},
|
|
|
|
"vikunja": {
|
|
|
|
"name": "Vikunja",
|
|
|
|
"link": "https://vikunja.io/",
|
|
|
|
"icon": "https://vikunja.io/favicon.svg",
|
|
|
|
"desc": "Aufgabenverwaltung und Kalender"
|
|
|
|
},
|
|
|
|
"dokuwiki": {
|
|
|
|
"name": "Dokuwiki",
|
|
|
|
"link": "https://www.dokuwiki.org/dokuwiki",
|
|
|
|
"icon": "https://www.dokuwiki.org/lib/tpl/dokuwiki/images/logo.png",
|
|
|
|
"desc": "Wissensspeicher"
|
|
|
|
},
|
|
|
|
"owncloud": {
|
|
|
|
"name": "ownCloud",
|
|
|
|
"link": "https://owncloud.com/de/infinite-scale/",
|
|
|
|
"icon": "https://owncloud.com/wp-content/themes/ownCloud/dist/assets/img/favicon/apple-touch-icon.png",
|
|
|
|
"desc": "Datenablage"
|
|
|
|
},
|
|
|
|
"murmur": {
|
|
|
|
"name": "Murmur",
|
|
|
|
"link": "https://www.mumble.info/",
|
|
|
|
"icon": "https://www.mumble.info/css/mumble.svg",
|
|
|
|
"desc": "Audiokonferenzen (bislang ohne Authentifizierung)"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"order": [
|
|
|
|
"synapse",
|
|
|
|
"element",
|
|
|
|
"murmur",
|
|
|
|
"hedgedoc",
|
|
|
|
"dokuwiki",
|
|
|
|
"owncloud",
|
|
|
|
"vikunja",
|
|
|
|
"gitlab",
|
|
|
|
"forgejo"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"concrete_planned": {
|
|
|
|
"pool": {
|
|
|
|
"bigbluebutton": {
|
|
|
|
"name": "BigBlueButton",
|
|
|
|
"link": "https://bigbluebutton.org/",
|
|
|
|
"icon": null,
|
|
|
|
"desc": "Videokonferenzen",
|
|
|
|
"stat": "planned"
|
|
|
|
},
|
|
|
|
"mastodon": {
|
|
|
|
"name": "Mastodon",
|
|
|
|
"link": "https://joinmastodon.org",
|
|
|
|
"icon": "https://creazilla-store.fra1.digitaloceanspaces.com/icons/3204993/logo-mastodon-icon-sm.png",
|
|
|
|
"desc": "Microblogging",
|
|
|
|
"stat": "planned"
|
|
|
|
},
|
|
|
|
"grav": {
|
|
|
|
"name": "grav",
|
|
|
|
"link": "https://getgrav.org/",
|
|
|
|
"icon": "https://getgrav.org/user/themes/planetoid/images/favicon.png",
|
|
|
|
"desc": "Web-Inhaltsverwaltung",
|
|
|
|
"stat": "planned"
|
|
|
|
},
|
|
|
|
"dovecot": {
|
|
|
|
"name": "Dovecot",
|
|
|
|
"link": "https://doc.dovecot.org/",
|
|
|
|
"icon": "https://w2.influxdata.com/wp-content/uploads/dovecot-logo.png",
|
|
|
|
"desc": "E-Mail-Empfang",
|
|
|
|
"stat": "planned"
|
|
|
|
},
|
|
|
|
"postfix": {
|
|
|
|
"name": "Postfix",
|
|
|
|
"link": "https://www.postfix.org/",
|
|
|
|
"icon": "https://webhostinggeeks.com/howto/wp-content/uploads/2012/06/Posfix-Mail.jpg",
|
|
|
|
"desc": "E-Mail-Versand",
|
|
|
|
"stat": "planned"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"order": [
|
|
|
|
"postfix",
|
|
|
|
"dovecot",
|
|
|
|
"mastodon",
|
|
|
|
"grav"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"alternatives": {
|
|
|
|
"list": [
|
|
|
|
"MS Exchange",
|
|
|
|
"Google",
|
|
|
|
"facebook",
|
|
|
|
"WhatsApp/Telegram/Signal",
|
|
|
|
"Dropbox",
|
|
|
|
"Nextcloud",
|
|
|
|
"Humhub",
|
|
|
|
"Zetkin",
|
|
|
|
"…"
|
|
|
|
],
|
|
|
|
"problems": [
|
|
|
|
"zentralisiert",
|
|
|
|
"proprietär",
|
|
|
|
"datenschutzverletzend",
|
|
|
|
"zwielichtig",
|
|
|
|
"überladen",
|
|
|
|
"unterladen",
|
|
|
|
"kompliziert",
|
|
|
|
"unflexibel",
|
|
|
|
"kaputt"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"user_management": {
|
|
|
|
"schema": [
|
|
|
|
{
|
|
|
|
"text": "Die Dienste stehen bereit, aber wer darf sie verwenden?",
|
|
|
|
"image": "user_management-0"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Espe als Nutzerverwaltung …",
|
|
|
|
"image": "user_management-1"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… hat einen typischen technischen Aufbau",
|
|
|
|
"image": "user_management-2"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… und kann den Authentifizierungs-Dienst füttern",
|
|
|
|
"image": "user_management-3"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "MGL …",
|
|
|
|
"image": "user_management-4"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… ist über den Browser bedienbar",
|
|
|
|
"image": "user_management-5"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… hat anscheinend auch einen typischen technischen Aufbau",
|
|
|
|
"image": "user_management-6"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… und kann erweitert werden :)",
|
|
|
|
"image": "user_management-7"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… und damit als Quelle für Espe und den Authentifizierungs-Dienst dienen",
|
|
|
|
"image": "user_management-8"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"processes": {
|
|
|
|
"entry": [
|
|
|
|
{
|
|
|
|
"text": "Bei Eintritt legt ein Mitgliederbeauftragter einen Datensatz in MGL an",
|
|
|
|
"image": "user_management-9"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Datensatz landet in MGL-BE/MGL-DB",
|
|
|
|
"image": "user_management-10"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Syncer liest Mitglieder aus und gleicht in Richtung Espe ab",
|
|
|
|
"image": "user_management-11"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Espe erzeugt für jeden neuen Nutzerdatensatz ein Passwort und sendet E-Mail",
|
|
|
|
"image": "user_management-12"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "… und schickt die neue Nutzerliste an den Authentifizierungs-Dienst",
|
|
|
|
"image": "user_management-13"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"example": {
|
|
|
|
"link": "https://zackeneule.linke.sx/",
|
|
|
|
"label": "zackeneule.linke.sx",
|
|
|
|
"remark": " (keine MGL-Anbindung)"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"realization": {
|
|
|
|
"todos_technical": [
|
|
|
|
{
|
|
|
|
"name": "Entwickler gewinnen",
|
|
|
|
"link": null
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Penetrationstests durchführen",
|
|
|
|
"link": "https://de.m.wikipedia.org/wiki/Penetrationstest_(Informatik)"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Lastverteilung vorsehen",
|
|
|
|
"link": "https://de.m.wikipedia.org/wiki/Lastverteilung_(Informatik)"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Datensicherung einrichten",
|
|
|
|
"link": "https://de.m.wikipedia.org/wiki/Datensicherung"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Überwachung einrichten",
|
|
|
|
"link": "https://de.m.wikipedia.org/wiki/Monitoring"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"todos_social": [
|
|
|
|
{
|
|
|
|
"name": "Kräfte bündeln",
|
|
|
|
"link": null
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Tester gewinnen",
|
|
|
|
"link": null
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Admins gewinnen",
|
|
|
|
"link": null
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Überzeugungsarbeit leisten",
|
|
|
|
"link": null
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"resources": [
|
|
|
|
{
|
|
|
|
"name": "Ansible-Rollen für Dienste",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/misc/ansible-base"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Infrastruktur-Definition für LAG Netzpolitik Sachsen",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/misc/infrastructure"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Espe | Datenmodell",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/espe/datamodel"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Espe | Backend",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/espe/backend"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Espe | Frontend | Web",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/espe/frontend-zackeneule"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Espe | Frontend | CLI",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/espe/frontend-mondvogel"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "Espe | Ansible-Rollen",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/espe/infrastructure"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "MGL-CLI-Client",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/misc/mgl-cli"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "MGL-Espe-Syncer",
|
|
|
|
"link": "https://gitlab.die-linke.cloud/misc/mgl-espe-syncer"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|