Thomas Bella
uDomainFlag

Erhältlich via:
Chrome Web Store
Microsoft Edge-Add-Ons
Firefox Add-Ons

uDomainFlag on GitHub

Juli 2013 - heute
8k+ Nutzer pro Tag
170k+ Abfragen pro Tag
uDomainFlag ist eine Open Source Browsererweiterung zur Anzeige von zusätzlichen Informationen wie den Serverstandort direkt im Browser.
Direkt beim Aufruf einer Webseite wird der Serverstandort in Form einer Flagge angezeigt. Durch Klick auf diese Flagge werden zusätzliche Informationen wie der Serverstandort, vom Server erkannte und vom Browser benutze IP-Adresse, Betreiberinformationen sowie weitere Informationen angezeigt.

uDomainFlag Historie
uDomainFlag startete 2013 als Erweiterung für Google Chrome und entwickelte sich von Version zu Version mit Zusatzfunktionen und Optimierungen weiter.
Jänner 2015 wurde Version 1.0 veröffentlicht, wobei für die Standorterkennung erstmals die IP verwendet wurde, welche der Client bei Verbindungsherstelltung zum Server empfangen hat.
Mai 2015 wurde uDomainFlag in Version 1.1 in einem komplett überarbeitetem Design veröffentlicht. Zudem wurde von HTTP zu HTTPS für verschlüsselten Datentransfer gewechselt.
Juli 2015 wurde Version 1.2 veröffentlicht. Dabei wurde ein neues Logo eingeführt und ein Gefahrenindikator basierend auf WoT-Bewertungen direkt in der Flagge angezeigt.
Juli 2019 gab es ein Bugfix-Release, womit bekannte Fehler behoben wurden um die Stabilität der Erweiterung zu verbessern.
Juli 2020 wurde uDomainFlag 2.0 für Google Chrome und erstmals Microsoft EDGE und Mozilla Firefox veröffentlicht. Die Erweiterung wurde zur Modernisierung und Ressourcenoptimierung komplett neu geschrieben.
Die komplette Änderungshistorie ist unter GitHub > Releases verfügbar.

Backend
uDomainFlag nutzt als Datenschittstelle dfdata.bella.network (früher udfdata.unterhaltungsbox.com).
Mit uDomainFlag 2.0 wurde serverseitig von PHP zu Go gewechselt. Damit ist die Serverauslastung deutlich reduziert worden, während die Verarbeitungsgeschwindigkeit und Reaktionszeit erhöht wurde. Die bereitgestellten Daten sind zudem deutlich aktueller und werden regelmäßig automatisch aktualisiert.
Durch Änderung der Schnittstelle müssen nicht mehr mehrere Abfragen pro Domain durchgeführt werden. Ein neues Backend vereinfacht die Abfrage von Informationen, verarbeitet Anfragen mit deutlich höherer Geschwindigkeit bei gleichzeitig geringerer Ressourcenauslastung. Dadurch können künftig weitaus mehr Benutzer versorgt werden, ohne dass mit Hardware skaliert werden muss.
Mittels einem modularen und modernen Aufbau ist es möglich, das Backend im aktiven Betrieb auszutauschen ohne dass Abfragen beeinträchtigt werden. Kommt es zu unüblich hohen auslastungen findet eine automatische Skalierung statt. Fällt eine Teilkomponente aus, wird hier automatisch gegengesteuert um weiter Abfragen verarbeiten zu können.

Eine Änderungshistorie des Backends ist unter dfdata.bella.network verfügbar.
Portfolio (diese Seite)

Closed Source

Juli 2015 - heute
50 Commits
Automatisches Deployment
6k+ Zeilen Code
Diese Webseite geht über ein schlichtes Portfolio hinaus und zeigt neben meinem Profil auch weitere Details.
Geschrieben ist diese Seite in HTML, CSS, JavaScript und PHP ohne zusätzliche Libraries (ausgenommen FontAwesome). Durch GitLab CI werden statische Daten vorab komprimiert, vorbereitet und am Zielserver deployed.

Verwendete Technologien
GitLab CI automatisiert das Deployment und erstellt reproduzierbare Versionen dieser Webseite.
Statische Ressourcen wie .svg-Icons, CSS, JavaScript, Fonts und andere Daten werden mit GitLab CI vorab mit gzip und brotli komprimiert. Mittels gzip_static/brotli_static werden so in NGINX vorab komprimierte Daten ausgeliefert, wodurch Rechenkapazität und Latenz reduziert wird.
Erweiterungen wie OCSP, CSP, HSTS (Preload), Expect-CT, Referer-Policy, Permission-Policy usw. erweitern zusätzlich die Sicherheit der Webseite und schützen vor Manipulation.
Mit 0-RTT wird der Zeitaufwand einer Verbindung bei reinem Datenaufruf reduziert. Durch effizientes Caching sowie prefetching wird so die Ladezeit auf weit unter einer Sekunde reduziert.
Durch Verzicht auf Bibliotheken und Frameworks wie Smarty, jQuery, Bootstrap, Angular, React usw. müssen keine nicht genutzten Codes eingebunden werden. Dadurch wird die Verarbeitungsgeschwindigkeit deutlich erhöht und in Lighthouse ein Bestwert erzielt.

Die meisten dynamischen Daten dieser Webseite werden von proxy.bella.network via HTTPS (AJAX & WebSocket) bezogen. Diese Domain löst auf einen eigenständigen Server auf, welcher via WireGuard VPN und BGP über mein Multi-WAN Heimnetz in ein eigenes VLAN verbunden ist.
Mehr dazu im nächsten Projekt "Homelab & Homeautomation".

Wieso gibt es auf dieser Seite keinen Cookie-Banner?
Diese Seite nutzt kein seitenübergreifendes Tracking und setzt keine identifizierbaren persistenten Daten, wodurch auch keine Zustimmung eingeholt werden muss. Bei einem erfolgreichen Login wird ein Cookie gesetzt, wobei ein entsprechender Hinweis zuvor angezeigt wird.
Homelab & Homeautomation
Unterseite Homelab

8 Server
108+ TB Storage
286+ GB RAM
5x Raspberry Pi (Sensor Nodes)
15kWh Batteriekapazität PV
300/30 Mbps DSL
25+ BGP Routen
10+ VPN Tunnel
9 AccessPoints
60+ IoT Geräte
50+ VMs/LXC Container

DualStack mit fonira:
static IPv4/32 & IPv6/60
Mein Homelab ist über die letzten Jahre deutlich gewachsen und ich habe bereits an einigen Stellen deutlich reduziert, unter anderem um Stromkosten zu sparen.
Eine Übersicht über mein Homelab ist unter Homelab verfügbar. Dort gehe ich auch im Detail auf die verwendeten Geräte ein.
Mehrere VPN Tunnel verbinden mein lokales Netzwerk mit anderen lokalen Netzwerken an verschiedenen Standorten, wobei dynamisches Routing mit BGP eingesetzt wird.

Zur (Heim-)Automatisierung verwende ich ein selbsterstelltes Programm Namens pv-proxy geschrieben in Go, an welchem ich regelmäßig arbeite und welches bereits über 10k Zeilen Code umfasst:
Dieses Programm ist die Hauptdatenverarbeitung und Zentrale meiner Automatisierung. Unter anderem wird sekündlich der aktuelle Stromverbrauch und Stromproduktion vom kompletten Haushalt erfasst. Anhand dieser Daten sowie weiterer Sensordaten, stammend von meiner Wetterstation, mehreren DS18B20-Temperatursensoren, BME280-Sensoren, usw., werden verschiedene Geräte automatisch gesteuert.
So wird bei Überproduktion der Heizstab angesteuert um den Warmwasserspeicher zu erhitzen. Die Lüftersteuerung der Server wird ebenfalls automatisch gesteuert, wobei neben der Umgebungstemperatur und Stromkapazität auch die Wetterprognose miteinberechnet wird.
Da das Programm viele Informationen verwaltet und ich es ständig erweitere, her ein Auszug welche Daten/Geräte erfasst/verarbeitet/usw. werden:
433MHz/868MHz Erfassung mit RTL-SDR, Spannungsüberwachung, Warmwassersteuerung und Überwachung, Wetterprognosen u.a. basierend auf Zambretti, Schaltzustandsüberwachung IoT-Geräte, Temperaturerfassung mehrerer Räume, Gerätesteuerung bei Stromausfall, Steuerung Gartenbewässerungsanlage, Weiterverarbeitung von Fitbit Vitaldaten (Puls, Schritte, Kalorienaufnahme, ...), Steuerung Solaranlage, Auto-Standorterfassung, Chromecast-Mediensteuerung, VM-Autoscaling, Raumlichtsteuerung und -überwachung, uvm.
Sonstige (Mini-)Projekte und in Planung
PassBeyond Product - Closed Source (Veröffentlichung geplant) - Go
Ein Reverse Proxy mit eingebauter Authentifizierung via SAML (ADFS) und LDAP zur Cross-Domain-Verwendung. Sichert Ressourcen hinter *.bella.pm und anderen Domains ab und reicht Anfragen erst nach erfolgreicher Anmeldung transparent weiter. Rollenbasierte Zugriffsrechte mit Möglichkeit für Gästezugriff. Lokaler Netzwerkzugriff wird automatisch erkannt und freigegeben.

Mr. Fitness Bot Product - Closed Source - Go
Erfassung, Verarbeitung und Auswertung von Aktivitätsdaten, Lauf- und Krafttraining, physische und psychische Gesundheit, automatische und manuelle (Messwert-)Datenerfassung, Wasser-, Kalorien-, Nahrungsergänzungsmittel- und Medizintracking, uvm. Weitere Informationen unter https://bella.network/fitness-bot.

go-fitbit Library - Open Source on GitHub - Go
Library zur Nutzung der Fitbit API, um Daten automatisiert abzurufen und hinzuzufügen. Primär habe ich die Schnittstelle für ein anderes Projekt (später mit Mr. Fitness Bot) gebraucht, wo ich von Fitbit meine Vitaldaten in MySQL/InfluxDB exportiere zur Anzeige in Grafana.

GoBouncerBot Product - Closed Source - Go
Telegram Bot, welches Chaträume überwacht und neu einsteigene Benutzer den Zugriff auf Chatfunktionen blockiert. Erst nach Lösung eines Captchas wird der Zugriff auf die Chatgruppe erlaubt. bouncer.bella.pm - @GoBouncerBot.

snigen Product - Closed Source - Go
Erweiterung für DNS basierte Sperren. Wird eine Domain per einem DNS-Filter blockiert, wird die DNS-Zieladresse auf eine spezielle IP umgeschrieben. Via HTTP/HTTPS wird eine entsprechende Fehlermeldung angezeigt mit weiteren Informationen über die Sperre. Dabei besteht die Möglichkeit, die gesperrte Webseite wieder freizugeben. Mit snigen wird mithilfe eines Intermediate Zertifikates meiner internen CA, während dem Aufruf, via HTTPS ein temporäres, gültiges Zertifikat ausgestellt. Dadurch werden Sperren benutzerfreundlich angezeigt.

certdog.eu SaaS - Closed Source - Planungsphase
Zertifikatsüberwachung für verschiedene Dienste und Domains mit zentraler Verwaltung, Validitätsprüfung gegen öffentlich vertrauten Zertifizierungsstellen sowie privaten Zertifizierungsstellen, Erneuerungserinnerung und Ausstellungsbenachrichtigung. Dienst wird kostenlos sowie kostenpflichtig bereitgestellt.

maildog.eu SaaS - Closed Source - Initiationsphase
Erweiterung von certdog.eu mit zusätzlichen Funktionen speziell für E-Mail mit Blacklisterkennung, Spamchecks, Gegenstelle für rspamd-Überprüfungen und DNS-Records Checks.

Tasmota Deploy Automation - Closed Source - Bash + GitLab CI
Automatische erstellung von Firmwareimages für IoT-Geräte auf Basis von Tasmota. Erlaubt individuelle Konfiguration von Images sowie automatische Verteilung und Installaton der Firmware auf den Geräten im Netzwerk.

uTeleBot Product - Open Source on GitLab - Go
Telegram Bot, welches nütztliche Funktionen für System- und Netzwerkadministratoren zur Verfügung stellt. Erstellt zudem Chat-Statistiken in Räumen in denen sich der Bot befindet. Erreichbar unter @uTeleBot.
Beispielbefehle: /mac 00:20:91:00:BE:EF, /dns bella.pm MX, /sshscan bella.network.

DDInstaller Product - Closed Source - Bash + Python + GitLab CI
Ein eigenes Linux-Betriebssystem auf Basis von Debian, welches automatisiert via PXE Windows (Server + Desktop) installiert und einrichtet. Einrichtung ist mit KVM automatisiert und funktioniert sowohl auf Hardware und virtuell.

Certificate Monitor Product - Discontinued - Open Source on selfhosted GitLab - PHP
Certificate Monitor ist ein Webinterface mit automatischer Überprüfung von SSL-Zertifikaten. Dabei wird von einer angegebenen Domain mit IP-Adresse das aktuelle Zertifikat bezogen und überprüft. Hinterlegung einer eigenen CA möglich. Auswertung von FTPS, SMTP/S, IMAP/S, POP3/S, RDP, IRC, LDAP/S, DNS-over-TLS, XMPP/S usw.
Neuentwicklung als SaaS-Produkt geplant. - Siehe certdog.eu

Dyn A DNS Product - Discontinued (2014-2021) - Closed Source - PHP + Python
Ein kostenloser Dienst unter dynadns.eu zur Bereitstellung von dynamischem DNS (inklusive Wildcard-Support). Via HTTP-Request konnte die Ziel-IP der eigenen Domain mit einer TTL von 60 Sekunden beliebig geändert werden. Mögliche Alternative ist noip.com oder Cloudflare API.

Weitere Projekte
Weitere Projekte sind unter GitLab und GitHub abrufbar.