stephan.hadan.de/docs/techstack/myfoss-stack/index.md
Stephan Hadan 2464c60260
All checks were successful
ci / deploy (push) Successful in 43s
some changes
2025-03-08 13:44:21 +01:00

230 lines
No EOL
30 KiB
Markdown

---
pdf: false
comments: false
status: new
---
# Mein persönlicher FOSS-Stack
Da ich auch privat weitestgehend auf FOSS (Freie und Open-Source-Software) setze, möchte ich meine persönlichen Präferenzen und mein Setup nicht unerwähnt lassen.
!!! info
FOSS bedeutet Freie und Open-Source-Software. Das bedeutet nicht, dass die Software kostenlos ist. Das bedeutet, dass der Quellcode der Software für alle offen ist und jeder den Code frei verwenden, studieren und ändern kann. Dieses Prinzip ermöglicht es anderen, wie in einer Community zur Entwicklung und Verbesserung einer Software beizutragen.
## Mein Hardware-Setup für meine Services
### Interne (Server-)Systeme
Ich habe zwei zentrale (Server-)Systeme, welche ich für besonders kritische Anwendungen daheim nutze und ich unbedingt die Datenhoheit darüber behalten möchte.
Alle Services werden in Docker-Compose-Stacks bzw. Podman-Compose-Stacks bereitgestellt (wenn nicht anderweitig erwähnt). Einige Docker-Compose-Stacks sind auf allen VPS identisch:
* [Borgmatic](https://torsion.org/borgmatic/) - Borg Backup & Restore für meine Instanzen und die zugehörigen Datenbanken.
* [Diun](https://crazymax.dev/diun/) - **D**ocker **I**mage **U**pdate **N**otifier zur Überwachung der Aktualität der Docker-Images
* [Node exporter](https://github.com/prometheus/node_exporter) - Exporter für Node-Metriken (Prometheus)
* [Cadvisor](https://github.com/google/cadvisor) - Metriken zu laufenden Docker Containern für Prometheus
* Wenn Podman im Einsatz ist: [Podman exporter](https://github.com/containers/prometheus-podman-exporter) - Exporter für Podman-Metriken (Prometheus)
* [Nginx Proxy Manager](https://nginxproxymanager.com/) - - der Reverse-Proxy für die Bereitstellung der Services und Zertifikate. Intern verwende ich die DNS-Challenge zur Bereitstellung der Zertifikate.
Das zentrale System ist ein leider schon etwas betagtes [Lenovo ThinkCentre M93p Tiny](https://www.thinkstore24.de/pc-workstation/529/lenovo-thinkcentre-m93p-tiny-intel-core-i5-4570t-2.9-ghz-8gb-ram-256gb-ssd-windows-10?srsltid=AfmBOoonBoVP0jvYFLmkRprVyHXqpHdyR8b_a9MybbTpQx1LJ1djZ6Vj), welches ich ein wenig aufgerüstet habe. Hierauf befinden sich folgende Anwendungen:
* **Betriebssystem:**
* [Debian](https://www.debian.org) 12 (Bookworm)
* **Software:**
* [Docker](https://www.docker.com/) für die Bereitstellung nachfolgender Softwarestacks:
* [Pi-hole](https://pi-hole.net/) als Tracking- und Werbeblocker sowie als lokaler DNS-Server.
* [Open WebUI](https://openwebui.com/) - mein Web UI für meine private Ollama- und LocalAI-Instanz.
* [OpenProject](https://www.openproject.org/) - mein privates Projekt- und Time-Tracking-Tool.
* [Nextcloud](https://nextcloud.com/) - mein privater Microsoft 365 - Ersatz (inkl. Online-Office Collabora CODE und Whiteboard auf Basis von Excalidraw).
* [MediaWiki](https://www.mediawiki.org/) - mein privates Wiki für interne Dokumentationen.
* [BorgWarehouse](https://borgwarehouse.com/) - eine BorgWarehouse-Instanz für die Sicherung aller meiner internen und externen Instanzen via Borgmatic auf mein internes NAS.
* [Borgmatic](https://torsion.org/borgmatic/) - sichert die Daten meines Stacks entsprechend auf mein internes NAS.
* [SearXNG](https://docs.searxng.org/) - meine private Suchmaschine.
* [Semaphore UI](https://semaphoreui.com/) - meine UI für Ansible, OpenTofu, Bash, Powershell und Python.
* [Calibre Web](https://github.com/janeczku/calibre-web) - mein privater E-Book-Manager und -Viewer.
* [Cops](https://github.com/mikespub-org/seblucas-cops) - mein OPSD-Feed um die E-Books auf meinen Tablets bereitstellen zu können.
Für Nextcloud setze ich zusätzlich verschiedene Erweiterungen (Apps) ein.
??? info "Meine Nextcloud Apps"
* [Activity](https://github.com/nextcloud/activity/) - Diese App ermöglicht es Personen, Aktionen in Bezug auf ihre Dateien und Daten in Nextcloud zu sehen. Jede Person kann ihre individuellen Aktivitätseinstellungen in den persönlichen Einstellungen konfigurieren, um zu wählen, welche Aktivitäten auf Mobiltelefone gepusht werden sollen, per E-Mail gesendet werden sollen oder ob jeden Morgen eine tägliche Zusammenfassung gesendet werden soll.
* [AppAPI](https://github.com/nextcloud/app_api) - Die AppAPI ist ein Projekt innerhalb des Nextcloud-Ökosystems, das den Prozess der Anwendungsentwicklung, -bereitstellung und -verwaltung rationalisieren und verbessern soll. Es führt eine neue Methodik ein, die es Entwicklern ermöglicht, Anwendungen mit einer Vielzahl von Programmiersprachen zu erstellen, die nicht auf PHP beschränkt sind, das traditionell in der Nextcloud-Entwicklung verwendet wurde.
* [Automated PDF conversion ](https://github.com/nextcloud/workflow_pdf_converter) - Eine Anwendung zum Auslösen der automatischen Konvertierung von Dokumenten in PDF. Basierend auf vom Administrator definierten Regeln wird eine Hintergrunddatei eingerichtet, wenn eine passende Datei erstellt oder geschrieben wurde oder ein Tag zugewiesen wurde. Dann wird LibreOffice für die Konvertierung des Dokuments verwendet.
* [Brute-force settings](https://github.com/nextcloud/bruteforcesettings) - Der Brute-Force-Schutz soll die Nextcloud-Server vor Versuchen schützen, Kontopasswörter auf verschiedene Weise zu erraten. Neben dem offensichtlichen "Versuchen wir es mit einer großen Liste häufig verwendeter Passwörter"-Angriff erschwert er auch etwas ausgefeiltere Angriffe über das Formular zum Zurücksetzen des Passworts oder den Versuch, App-Passwort-Tokens zu finden. Wenn der Brute-Force-Schutz ausgelöst wird, werden Anfragen, die von einer IP eines Brute-Force-geschützten Controllers mit derselben API kommen, für einen Zeitraum von 24 Stunden verlangsamt. Mit dieser App kann der Administrator eine IP-Adresse oder einen Bereich von diesem Schutz ausnehmen, was für Testzwecke oder bei Fehlalarmen aufgrund vieler Konten auf einer IP-Adresse nützlich sein kann.
* [Calendar](https://github.com/nextcloud/calendar/) - Die Kalender-App ist eine Benutzeroberfläche für den CalDAV-Server von Nextcloud. Synchronisieren Sie ganz einfach Ereignisse von verschiedenen Geräten mit Ihrer Nextcloud und bearbeiten Sie sie online.
* 🚀 Integration mit anderen Nextcloud-Apps! Derzeit Kontakte - weitere werden folgen.
* 🌐 WebCal Unterstützung! Du möchtest die Spieltage deiner Lieblingsmannschaft in deinem Kalender sehen? Kein Problem!
* 🙋 Teilnehmer! Laden Sie Leute zu Ihren Veranstaltungen ein
* ⌚️ Frei/Gebucht! Sehen Sie, wann Ihre Teilnehmer Zeit für ein Treffen haben
* ⏰ Erinnerungen! Erhalten Sie Alarme für Veranstaltungen in Ihrem Browser und per E-Mail
* 🔍 Suche! Finden Sie Ihre Veranstaltungen ganz einfach
* ☑️ Aufgaben! Sehen Sie Aufgaben mit einem Fälligkeitsdatum direkt im Kalender
* 🙈 Wir erfinden das Rad nicht neu! Basierend auf der großartigen c-dav Bibliothek, ical.js und fullcalendar Bibliotheken.
* [Calendar Resource Management](https://apps.nextcloud.com/apps/calendar_resource_management) - Verwaltung für Kalenderressourcen und Räume.
* Collaborative tags - Kollaborative Tagging-Funktionalität, die Tags zwischen Personen austauscht. Ideal für Teams.
* Comments - Files-App Plugin zum Hinzufügen von Kommentaren zu Dateien
* [Contacts](https://github.com/nextcloud/contacts#readme) - Die Nextcloud-Kontakte-App ist eine Benutzeroberfläche für den CardDAV-Server von Nextcloud. Synchronisieren Sie ganz einfach Kontakte von verschiedenen Geräten mit Ihrer Nextcloud und bearbeiten Sie sie online.
* 🚀 Integration mit anderen Nextcloud-Apps! Derzeit Mail und Kalender - weitere werden folgen.
* 🎉 Vergessen Sie nie wieder einen Geburtstag! Sie können Geburtstage und andere wiederkehrende Ereignisse mit Ihrem Nextcloud-Kalender synchronisieren.
* 👥 Teilen von Adressbüchern! Sie möchten Ihre Kontakte mit Ihren Freunden oder Kollegen teilen? Kein Problem!
* 🙈 Wir erfinden das Rad nicht neu! Basierend auf der großartigen und offenen SabreDAV-Bibliothek.
* Contacts Interaction - Sammle Daten über Konten und Kontaktinteraktionen und stelle ein Adressbuch für die Daten bereit.
* [Mail](https://github.com/nextcloud/mail#readme) - 💌 Eine Mail-App für Nextcloud
* 🚀 Integration mit anderen Nextcloud-Apps! Derzeit Kontakte, Kalender und Dateien - weitere werden folgen.
* 📥 Mehrere Mailkonten! Persönliches und Firmenkonto? Kein Problem, und ein schöner einheitlicher Posteingang. Verbinde jedes IMAP-Konto.
* 🔒 Sende und empfange verschlüsselte Mails! Mit der großartigen Browsererweiterung Mailvelope.
* 🙈 Wir erfinden das Rad nicht neu! Basierend auf den großartigen Horde-Bibliotheken.
* [Music](https://github.com/owncloud/music) - Eine eigenständige Musikplayer-App und ein "lite"-Player für die Files-App
* Unterstützt auf modernen Browsern die Audiotypen .mp3, .ogg, .m4a, .m4b, .flac, .wav und mehr
* Unterstützung von Wiedergabelisten mit Import von m3u-, m3u8- und pls-Dateien
* Durchsuchen nach Künstlern, Alben, Genres oder Ordnern
* Lückenlose Wiedergabe
* Filtern der angezeigten Inhalte mit der Suchfunktion
* Erweiterte Suche zur freien Verwendung und Kombination von Dutzenden von Suchkriterien
* Internetradio und Podcast-Kanäle abspielen
* Last.fm-Verbindung einrichten, um Hintergrundinformationen zu Künstlern, Alben und Songs zu sehen
* Steuerung mit Mediensteuerungstasten auf der Tastatur oder dem OS
* Die App kann Bibliotheken mit Tausenden von Alben und Zehntausenden von Songs verwalten
* Enthält ein Server-Backend, das mit den Protokollen Subsonic und Ampache kompatibel ist und die Wiedergabe und das Durchsuchen der Bibliothek auf Dutzenden von externen Apps auf Android, iOS, Windows, Linux usw. ermöglicht
* Widget für das Nextcloud Dashboard
* [Nextcloud Assistant ](https://github.com/nextcloud/assistant) - Diese App bietet eine Benutzeroberfläche zur Nutzung der Nextcloud-Textverarbeitungsfunktion. Sie ermöglicht es Nutzern, KI-Aufgaben zu starten, benachrichtigt zu werden, wenn sie beendet sind und die Ergebnisse zu sehen. Der Assistent erscheint auch in anderen Apps wie Text, um Teile eines Dokuments einfach zu verarbeiten.
* [Nextcloud Assistant Context Chat ](https://github.com/nextcloud/context_chat) - Stelle dem Nextcloud Assistant Fragen zum Inhalt Deiner Dokumente.
* [Nextcloud Office ](https://collaboraoffice.com/) - Diese Anwendung kann sich mit einem Collabora Online (oder einem anderen) Server verbinden (WOPI-ähnlicher Client). Nextcloud ist der WOPI-Host. Man kann seine Dokumente auch offline mit der Collabora Office-App aus dem [Android](https://play.google.com/store/apps/details?id=com.collabora.libreoffice)- und [iOS](https://apps.apple.com/us/app/collabora-office/id1440482071)-Store bearbeiten.
* [Talk](https://github.com/nextcloud/spreed) - Chat, Video- und Audiokonferenzen mit WebRTC
* 💬 Chat - Nextcloud Talk verfügt über einen einfachen Text-Chat, mit dem man Dateien aus der Nextcloud Files App oder dem lokalen Gerät teilen oder hochladen und andere Teilnehmer erwähnen kann.
* 👥 Private, Gruppen-, öffentliche und passwortgeschützte Anrufe! Lade jemanden oder eine ganze Gruppe ein oder sende einen öffentlichen Link, um zu einem Anruf einzuladen.
* 🌐 Föderierte Chats - Chatte mit anderen Nextcloud-Nutzern auf deren Servern
* 💻 Bildschirmfreigabe! Teile den Bildschirm mit den Teilnehmern des Anrufs.
* 🚀 Integration mit anderen Nextcloud-Apps wie Dateien, Kalender, Benutzerstatus, Dashboard, Flow, Maps, Smart Picker, Kontakte, Deck, und viele mehr.
* 🌉 Synchronisierung mit anderen Chat-Lösungen - Da Matterbridge in Talk integriert ist, kann man viele andere Chat-Lösungen einfach mit Nextcloud Talk synchronisieren und umgekehrt.
* [Whiteboard](https://github.com/nextcloud/whiteboard) - Die offizielle Whiteboard-App für Nextcloud. Sie ermöglicht es Nutzern, Whiteboards zu erstellen und mit anderen Nutzern zu teilen und in Echtzeit zusammenzuarbeiten.
* 🎨 Zeichnen von Formen, Schreiben von Text, Verbinden von Elementen
* 📝 Zusammenarbeit in Echtzeit
* 🖼️ Bilder durch Ziehen und Ablegen hinzufügen
* 📊 Einfaches Hinzufügen von Meerjungfrauen-Diagrammen
* ✨ Verwenden Sie den Smart Picker, um andere Elemente aus Nextcloud einzubetten
* 📦 Bilder exportieren
* 💪 Starke Grundlage: Wir verwenden Excalidraw als Basisbibliothek
Für meinen lokalen AI-Stack verwende ich einen [Mac mini mit M1-Prozessor und 16 GB RAM sowie 512 GB SSD](https://support.apple.com/en-us/111894), dieser ist für meine damit verbundenen Use-Cases völlig ausreichend und es laufen schon einige spannende Modelle darauf. Natürlich verwende ich ihn ebenso als Desktop-System. Folgende Anwendungen für meinen Stack kommen zum Einsatz:
* **Betriebssystem:**
* [macOS](https://www.apple.com/de/macos/macos-sequoia/) "Sequoia" 15
* **Software:**
* [Podman](https://podman.io/) zur Bereitstellung folgender Services:
* [LibreTranslate](https://libretranslate.com/) - Meine Übersetzungs-API.
* Meine AI-Services lasse ich (noch) nicht via Podman laufen, obwohl die GPU von macOS an die Container durchgereicht werden kann, ist die Geschwindigkeit noch recht langsam.
* [Ollama](https://ollama.com/) - Stellt die von mir verwendeten Large-Language-Models (LLMs) bereit
* [LocalAI](https://localai.io/) - Stellt mir kleinere LLMs, Whisper (Speech-to-Text), Vision-Modelle, Reranker-Modelle, Embeddings-Modelle und Modelle zur Bilderzeugung über eine OpenAI-kompatible Schnittstelle bereit
* [Homebridge](https://homebridge.io/) - Homebridge ermöglicht mir die Integration von Smart Home-Geräten, die HomeKit nicht von Haus aus unterstützen. Mein zentraler HomeKit-Server ist ein Apple TV 4k (2. Generation mit Wifi+Ethernet).
* [Emby Server](https://emby.media) - Emby bringt meine persönlichen Videos, Musik, Fotos, Podcasts und Live-Fernsehen zusammen.
Einzelne Services kann ich aus dem Internet erreichen, hierzu habe ich [Wireguard](https://www.wireguard.com/)-Tunnel bereitgestellt, um die DS-Lite-Einschränkungen hinsichtlich mangelnder Public-IPs zu umgehen.
Beide o.g. Systeme sind mit einem QNAP-NAS der Baureihe [TS-212P](https://www.qnap.com/de-de/product/ts-212p) verbunden, welches mir als zusätzlicher Storage (auch für Backups) dient.
### Externe VPS-Systeme
Als Betriebssystem setze ich grundsätzlich bei allen Systemen auf [Debian](https://www.debian.org) 12 (Bookworm). Alle Services werden in Docker-Compose-Stacks bereitgestellt auf sechs VPS.
Einige Docker-Compose-Stacks sind auf allen VPS identisch:
* [Borgmatic](https://torsion.org/borgmatic/) - Borg Backup & Restore für meine Instanzen und die zugehörigen Datenbanken.
* [Diun](https://crazymax.dev/diun/) - **D**ocker **I**mage **U**pdate **N**otifier zur Überwachung der Aktualität der Docker-Images
* [Node exporter](https://github.com/prometheus/node_exporter) - Exporter für Node-Metriken (Prometheus)
* [Cadvisor](https://github.com/google/cadvisor) - Metriken zu laufenden Docker Containern für Prometheus
* [Nginx Proxy Manager](https://nginxproxymanager.com/) - der Reverse-Proxy für die Bereitstellung der Services und Zertifikate, wenn nicht anders erwähnt.
Mein favorisierter Hosting-Dienstleister ist [ETH-Services](https://www.eth-services.de/), welcher mir die entsprechenden virtualisierten Systeme unkompliziert, schnell und kostengünstig bereitstellt. Ein VPS läuft noch bei [OVH](https://www.eth-services.de/). Die Services werden in Rechenzentren in Deutschland bereitgestellt.
Meine Domains beziehe und verwalte ich über [OVH](https://www.ovhcloud.com/de/). Zusätzlich verwende ich die Optionen [Domain Name System Security Extension (DNSSEC)](https://de.wikipedia.org/wiki/Domain_Name_System_Security_Extensions) und [Anycast DNS](https://www.ovhcloud.com/en/domains/options/dns-anycast/).
#### Mein Mailserver
Mein Mailsetup besteht aus einem [Mailcow-dockerized-Stack](https://mailcow.email/de/). Alle Komponenten werden mittels Docker-Containern bereitgestellt. Diese umfassen:
* [ACME](https://letsencrypt.org/) - Automatische Generierung von Let's Encrypt Zertifikaten
* [ClamAV](https://www.clamav.net/) - Antiviren-Scanner
* [Dovecot](https://www.dovecot.org/) - IMAP/POP-Server zum Abrufen von E-Mails mit integrierter Volltextsuchmaschine "Flatcurve"
* [MariaDB](https://mariadb.org/) - Datenbank zur Speicherung von Benutzerinformationen etc.
* [Memcached](https://www.memcached.org/) - Cache für den Webmailer SOGo
* [Netfilter](https://github.com/mkuron) - Fail2ban-ähnliche Integration
* [Nginx](https://nginx.org/) - Webserver für Komponenten des Stacks
* [Olefy](https://github.com/HeinleinSupport/olefy) - Analyse von Office-Dokumenten auf Viren, Makros, etc.
* [PHP](https://php.net/) - Programmiersprache der meisten webbasierten mailcow-Anwendungen
* [Postfix](http://www.postfix.org/) - MTA (Mail Transfer Agent) für den E-Mail-Verkehr im Internet
* [Redis](https://redis.io/) - Speicher für Spam-Informationen, DKIM-Schlüssel, etc.
* [Rspamd](https://www.rspamd.com/) - Spamfilter mit automatischem Lernen von Spam-Mails
* [SOGo](https://sogo.nu/) - Integrierter Webmailer und Cal-/Carddav-Schnittstelle
* [Unbound](https://unbound.net/) - Integrierter DNS-Server zur Überprüfung von DNSSEC usw.
* Watchdog - Zur grundlegenden Überwachung des Container-Status innerhalb von mailcow
Zur weiteren Absicherung meiner Instanz verwende ich [CrowdSec](https://www.crowdsec.net/), welches mit Mailcow verbunden ist. Ebenso habe ich einige empfohlene Hardening-Maßnahmen durchgeführt.
[DomainKeys Identified Mail (DKIM)](https://de.wikipedia.org/wiki/DomainKeys_Identified_Mail), [Domain-based Message Authentication, Reporting, and Conformance (DMARC)](https://de.wikipedia.org/wiki/DMARC) und [Sender Policy Framework (SPF)](https://de.wikipedia.org/wiki/Sender_Policy_Framework) sind für alle meine Domains eingerichtet.
Daneben habe ich auch [MTA-STS (Strict Transport Security)](https://www.frankysweb.de/mta-sts-strict-transport-security/) für jede Domain bereitgestellt und natürlich [DNS-based Authentication of Named Entities (DANE)](https://de.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities).
Meine E-Mails werden grundsätzlich mit [Pretty Good Privacy (PGP)](https://de.wikipedia.org/wiki/Pretty_Good_Privacy) signiert und bei Bedarf auch verschlüsselt, für primäre und wichtige E-Mail-Adressen stelle ich zusätzlich [Secure / Multipurpose Internet Mail Extensions (S/MIME)](https://de.wikipedia.org/wiki/S/MIME) bereit.
#### Meine Services
Im folgenden beschreibe ich die durch mich derzeit aufgebauten Services nach Kategorien:
* **Automation & Workflows & KI-Agenten**
* [n8n](https://n8n.io/) - Die weltweit beliebteste Plattform zur Workflow-Automatisierung für technische Teams. Ich baue mir damit entsprechend KI-Agenten, welche bestimmte Tasks für mich durchführen (bspw. Basic Content für Blogposts erstellen oder für mich Termine vereinbaren). Interagieren kann ich mit den Diensten via [NocoDB](https://nocodb.com/) (bspw. indem ich Informationen hinzufüge und diese dann gescheduled abgearbeitet werden durch n8n), durch manuelles Triggern in n8n selbst, durch [Telegram](https://telegram.org/) (bietet einige Vorteile, da n8n dadurch getriggert werden kann, suche noch eine OSS-Alternative) oder [Open Web UI](https://openwebui.com/). Sehr schön ist es ebenso, dass ich Forms/Chatfenster aus n8n auch auf meine Websites integrieren kann. In diesem Stack sind weitere Komponenten enthalten:
* [SearXNG](https://docs.searxng.org/) - meine private Suchmaschine (welche so konfiguriert ist, dass sie JSON ausgibt um damit in n8n weiterarbeiten zu können)
* [Qdrant](https://qdrant.tech/) - Die führende Open-Source-Vektordatenbank und Ähnlichkeitssuchmaschine zur Verarbeitung hochdimensionaler Vektoren für leistungsstarke und umfangreiche KI-Anwendungen. Dies werde ich vmtl. demnächst durch [Supabase](https://supabase.com/) ersetzen, da ich damit sehr sauber Dokumente im Vektorstore ersetzen/aktualisieren kann - natürlich [selbst gehosted](https://supabase.com/docs/guides/self-hosting).
* [openai-edge-tts](https://git.hadan-it.com/ai/openai-edge-tts) - Dieses Projekt bietet eine lokale, OpenAI-kompatible Text-to-Speech (TTS) API unter Verwendung von edge-tts. Es emuliert den OpenAI-TTS-Endpunkt (/v1/audio/speech) und ermöglicht es Benutzern, Sprache aus Text mit verschiedenen Sprachoptionen und Wiedergabegeschwindigkeiten zu erzeugen, genau wie die OpenAI-API. Sehr schöne Beispiele sind hier zu finden: [https://tts.travisvn.com/](https://tts.travisvn.com/)
* [Valkey](https://valkey.io/) - Der Redis-Fork Valkey wird von mir in n8n hptsl. für das "Kurzzeitgedächtnis" verwendet, damit sich KI-Agents auch an Gesprächsinhalte erinnern können.
* Dasselbe gilt für [PostgreSQL](https://www.postgresql.org/), welches neben dem "Kurzzeitgedächtnis" auch Informationen von n8n selbst speichert.
* **Benachrichtigungsdienste:**
* [ntfy](https://ntfy.sh/) - ntfy (sprich: notify) ist ein einfacher HTTP-basierter Pub-Sub-Benachrichtigungsdienst. Mit ihm kann ich von jedem Computer aus über Skripte und/oder über eine REST-API Benachrichtigungen an mein Telefon oder meinen Desktop senden. Es ist unendlich flexibel und 100% freie Software.
* **Identitätsmanagement (IdM):**
* [Keycloak](https://www.keycloak.org/) - Keycloak ist ein Open-Source-Softwareprodukt, das Single Sign-On mit Identitäts- und Zugriffsmanagement für moderne Anwendungen und Dienste ermöglicht. Dies baue ich gerade auf, es soll SSO für die von mir bereitgestellten Services erlauben, da hptsl. ich alleine diese Services verwende, ist es ausreichend, wenn ich die Benutzerinformationen in einer [PostgreSQL](https://www.postgresql.org/)-Datenbank vorhalte. Keycloak ist derzeit auch der einzige Host auf dem ich bereits [Traefik](https://traefik.io/) einsetze. Um mit Keycloak zu experimentieren verwende ich den [Notion](https://www.notion.so/)-Clone [Outline](https://www.getoutline.com/), welcher eine Anmeldung via Keycloak erlaubt.
* **Kommentar-Service:**
* [Isso](https://isso-comments.de/) - Isso ist ein Kommentar-Service vergleichbar mit Disqus. Ohne Cookies mit Moderatorfunktion.
* **Monitoring & Observability:**
* [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) - Der Alertmanager verarbeitet Alarme, die von Client-Anwendungen wie dem Prometheus-Server gesendet werden. Er kümmert sich um die Deduplizierung, Gruppierung und Weiterleitung an die richtige Empfängerintegration wie E-Mail oder ntfy. Er kümmert sich auch um das Stummschalten und Sperren von Alarmen.
* [Grafana](https://github.com/grafana/grafana) - Die offene und komponierbare Observabilitäts- und Datenvisualisierungsplattform. Visualisieren Sie Metriken, Protokolle und Traces aus verschiedenen Quellen wie Prometheus, Loki, Elasticsearch, InfluxDB, Postgres und vielen mehr.
* [Healthchecks](https://healthchecks.io/) - Dieser Dienst erlaubt mir einfache und effektive Cron-Job-Überwachung. Ich werde benachrichtigt, wenn meine Backups (inkl. Log-Übergabe), wöchentlichen Berichte, Cron-Jobs und geplanten Aufgaben nicht pünktlich ausgeführt werden. Benachrichtigt werde ich via E-Mail oder ntfy. Das die Software auch [selbst gehosted](https://healthchecks.io/docs/self_hosted/) werden kann ist ebenso sensationell!
* [Prometheus](https://prometheus.io/) - Ein Open-Source-Überwachungssystem mit einem dimensionalen Datenmodell, einer flexiblen Abfragesprache, einer effizienten Zeitreihendatenbank und einem modernen Alarmierungskonzept. Neben dem bereits oben genannten [Node exporter](https://github.com/prometheus/node_exporter) und [Cadvisor](https://github.com/google/cadvisor) kommen weitere Exporter zum Einsatz um Metriken einzusammeln:
* [Blackbox exporter](https://github.com/prometheus/blackbox_exporter) - Der Blackbox-Exporter ermöglicht Blackbox-Sondierungen von Endpunkten über HTTP, HTTPS, DNS, TCP, ICMP und gRPC.
* [Fritz!Box Upnp statistics exporter](https://github.com/sberk42/fritzbox_exporter) - Zur Überwachung und statistischen Erfassung meiner Fritz!Box für Prometheus
* [Pi-hole Prometheus Exporter](https://github.com/eko/pihole-exporter) - Pi-hole Prometheus Exporter
* [Uptime Kuma](https://uptime.kuma.pet/) - Uptime Kuma ist ein einfach zu bedienendes, selbst gehostetes Überwachungstool. Neben dem ausführlichen Monitoring durch Prometheus bediene ich mich hier eines einfachen zusätzlichen selbst-gehosteten Dienstes. Es monitored mir hptsl. die Verfügbarkeit und die User Experience. Ebenso erstelle ich damit leicht Statusseiten, wie [diejenige](https://status.hadan-it.com/status/myprivatepage) für meine persönliche Website.
* **No-/Low-Code-Anwendungen:**
* [FlowiseAI](https://flowiseai.com/) - FlowiseAI ist ein Open-Source-Low-Code-Tool für Entwickler zur Erstellung von kundenspezifischen LLM-Orchestrierungsabläufen und KI-Agenten. Ich verwende es ergänzend, um Dinge zu realisieren, die ich mit [n8n](https://n8n.io/) nicht erstellen kann.
* [NocoDB](https://nocodb.com/) - NocoDB ermöglicht den Aufbau von No-Code-Datenbanklösungen mit der Leichtigkeit von Tabellenkalkulationen. Ich setze das hptsl. in Verbindung mit [n8n](https://n8n.io/) ein um Informationen bereitzustellen und von [n8n](https://n8n.io/) abzuspeichern/anzureichern. Ebenso dient es mir in einigen KI-Agents als "Langzeitgedächtnis" (bspw. über meine Person).
* **Projekt- & Aufgabenverwaltung:**
* [WeKan](https://wekan.github.io/) - Das Open-Source-Kanban (erstellt mit Meteor). Eine Software, welche ich seit Jahren begleite und die ein wunderbarer Ersatz für Trello ist. Derzeit verwende ich es hptsl. in Verbindung mit [n8n](https://n8n.io/) und KI-Agenten.
* **Quellcode-Verwaltung und Build-Pipelines:**
* [Forgejo](https://forgejo.org/) - Forgejo ist ein selbst gehostetes, leichtgewichtiges SCM-Werkzeug. Es ist einfach zu installieren und wartungsarm und erfüllt einfach seine Aufgabe. Ebenso verwende ich Forgejo als Artefakt-Repository (bspw. als Docker Registry). Forgejo ist ein Fork von Gitea.
* [Forgejo Actions](https://forgejo.org/docs/latest/user/actions/) - Forgejo Actions bietet Continuous Integration (CI), die von den Dateien im Verzeichnis .forgejo/workflows eines Repositorys gesteuert wird, mit einer Webschnittstelle zur Anzeige der Ergebnisse. Die Syntax und Semantik der Workflow-Dateien wird den Benutzern von GitHub Actions vertraut sein.
* [Renovate Bot](https://github.com/renovatebot) - Ein Bot für automatische Aktualisierungen von Abhängigkeiten.
* **Servicemanagement:**
* [FreeScout Help Desk](https://freescout.net/) - FreeScout ist ein superleichter und leistungsstarker Open-Source-Helpdesk und ein gemeinsamer Posteingang, geschrieben in PHP (Laravel-Framework). Es ist ein selbst gehosteter Klon von HelpScout. Dient bei mir als Posteingang für meine Support-Adressen und meine Non-Personal-Mailboxes (NPM).
* **Social Media:**
* [Postiz](https://postiz.com/) - Postiz bietet alles, was man braucht, um Beiträge in den sozialen Medien zu verwalten, ein Publikum aufzubauen, Leads zu gewinnen und mein Geschäft auszubauen.
* **Sonstige (nicht kategorisierbar) Dienste:**
* [FreshRSS](https://freshrss.org/index.html) - FreshRSS ist ein selbstgehosteter RSS- und Atom-Feed-Aggregator. Er ist leichtgewichtig, einfach zu bedienen, leistungsstark und anpassbar. Hiermit verwalte ich interessante RSS-Feeds und erhalte die neuesten Informationen zu für mich interessante Themengebiete.
* [Heimdall](https://heimdall.site/) - Heimdall ist meine persönliche Browser-Startseite, mit integrierter Suchmaske (leider noch nicht mit SearXNG) und all meinen Anwendungen und Zugängen.
* [Kutt](https://kutt.it/) - URL-Shortener. Ich verkürze hiermit bspw. meine Blog-URLs. Beispiel: [https://hadan.li/fh52Ww](https://hadan.li/fh52Ww)
* [LinkStack](https://linkstack.org/) - LinkStack ist meine selbstgehostete Open-Source-Linktree-Alternative. LinkStack ist eine hochgradig anpassbare Link-Sharing-Plattform mit einer intuitiven, einfach zu bedienenden Benutzeroberfläche. Mangels Feldern und Feldlänge in Social Media Netzwerken stelle ich hierüber meine wichtigsten Links bereit, mein Impressum, meine Datenschutzerklärung und meine Kontaktinformationen. Ein Testimonial gibt es [hier](https://linkstack.hadan-it.com/@stiebke).
* [Linkwarden](https://linkwarden.app/) - Kollaboratives All-in-One-Tool zum Sammeln und Aufbewahren nützlicher Webseiten und Dokumente.
* [Shields.io](https://github.com/badges/shields) - Prägnante, konsistente und lesbare Badges. Beispiel: ![Mastodon Follow](https://shields.hadan-it.com/mastodon/follow/109288171286108793?domain=freiburg.social)
* **Web-Analytics:**
* [umami](https://umami.is/) - Umami ist ein datenschutzorientiertes Open-Source-Webanalysetool, das als Alternative zu Google Analytics dient. Es bietet wichtige Einblicke in den Website-Traffic, das Nutzerverhalten und die Leistung, wobei der Datenschutz im Vordergrund steht. Im Gegensatz zu vielen herkömmlichen Analyseplattformen sammelt und speichert Umami keine personenbezogenen Daten, sodass keine Cookies erforderlich sind, und ist GDPR- und PECR-konform. Umami ist leichtgewichtig und einfach einzurichten und kann selbst gehostet werden, sodass die Nutzer die volle Kontrolle über ihre Daten haben.
### Planung für die Zukunft
Natürlich ist mein FOSS-Stack noch nicht final und wird es sicherlich auch nie sein. Ich habe folgende zukünftige Änderungen geplant:
* [ ] [Pi-hole](https://pi-hole.net/) redundant auf zwei [Raspberry Pi](https://www.raspberrypi.com/)s auslagern
* [ ] Mein [Wireguard](https://www.wireguard.com/)-Setup für DS-Lite auf [Pangolin](https://github.com/fosrl/pangolin) umstellen
* [ ] Umstellung ThinkCentre von [Docker](https://www.docker.com/) auf [Podman](https://podman.io/)
* [ ] Umstellung von [Nginx Proxy Manager](https://nginxproxymanager.com/) auf [Traefik](https://traefik.io/)
* [ ] Upgrade des Mac Mini (mehr RAM), besserer Mx-Prozessor
* [ ] Mehr Raspberry Pis oder Klein-PCs ... Jeff Geerling's [Blog-Post](https://www.jeffgeerling.com/blog/2025/intel-n100-better-value-raspberry-pi) ist spannend hierzu.
* [ ] Trend geht zu Mini-Racks ... ebenso Blog-Posts [1](https://www.jeffgeerling.com/blog/2025/project-mini-rack-compact-and-portable-homelabs) und [2](https://www.jeffgeerling.com/blog/2025/project-mini-rack-what-have-we-started) von Jeff Geerling, sieht irgendwie cool und aufgeräumt aus.