finalize blog v1
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
public/
|
||||||
@@ -14,7 +14,7 @@ Mir fällt auf, dass sich die meisten Talking Points unter zwei Erzählungen ein
|
|||||||
#### "Die jetzige KI ist nur Blendwerk"
|
#### "Die jetzige KI ist nur Blendwerk"
|
||||||
Eine relativ große Gruppe, darunter viele Akademiker, scheinen sich vor allem auf die Probleme und Schwächen
|
Eine relativ große Gruppe, darunter viele Akademiker, scheinen sich vor allem auf die Probleme und Schwächen
|
||||||
der großen Sprachmodelle zu konzentrieren. Im Grunde ist dieser Ansatz wichtig, besonders da viele Benchmarks
|
der großen Sprachmodelle zu konzentrieren. Im Grunde ist dieser Ansatz wichtig, besonders da viele Benchmarks
|
||||||
und Metriken von der Industrie erstellt werden, die ihre Produkte damit testen will. Jedoch fällt mir auf, dass
|
und Metriken von der KI-Industrie erstellt werden und deshalb nicht ganz ohne Bias auskommen. Jedoch fällt mir auf, dass
|
||||||
es einigen Kritikern eher darum geht KI gesamthaft zu diskreditieren. Persönlich glaube ich, dass diese Reaktion
|
es einigen Kritikern eher darum geht KI gesamthaft zu diskreditieren. Persönlich glaube ich, dass diese Reaktion
|
||||||
bei vielen Menschen mit Angst zu tun hat. Denn anzuerkennen, dass wir der Modellierung von Intelligenz
|
bei vielen Menschen mit Angst zu tun hat. Denn anzuerkennen, dass wir der Modellierung von Intelligenz
|
||||||
ein ganzes Stück näher gekommen sind, ist extrem besorgniserregend.
|
ein ganzes Stück näher gekommen sind, ist extrem besorgniserregend.
|
||||||
@@ -33,13 +33,14 @@ Intelligenz-Gap zwischen uns und den Tieren, von denen uns viele ja sogar physis
|
|||||||
|
|
||||||
All das illustriert nur, dass die Bedenken gegenüber KI mehr als berechtigt sind. Diese ändern jedoch nichts am Fakt,
|
All das illustriert nur, dass die Bedenken gegenüber KI mehr als berechtigt sind. Diese ändern jedoch nichts am Fakt,
|
||||||
dass auch aktuelle Sprachsysteme beeindruckende und nützliche Fähigkeiten haben, die über reines Googlen hinausgehen.
|
dass auch aktuelle Sprachsysteme beeindruckende und nützliche Fähigkeiten haben, die über reines Googlen hinausgehen.
|
||||||
Das heißt aber nicht, dass die Superintelligenz bereits unter uns ist.
|
Ich glaube nicht, dass die AGI bereits erreicht wurde, aber die neueren Entwicklungen der kognitiven Algorithmen sind
|
||||||
|
trotzdem extrem disruptiv und die ersten Anzeichen von einem neuen Zeitalter.
|
||||||
#### "Die Revolution ist da"
|
#### "Die Revolution ist da"
|
||||||
Der andere Standpunkt zu den aktuellen Entwicklungen im Feld der KI ist deutlich optimistischer. Zu optimistisch für
|
Der andere Standpunkt zu den aktuellen Entwicklungen im Feld der KI ist deutlich optimistischer. Zu optimistisch für
|
||||||
meinen Geschmack. Alles ist jetzt KI oder KI-Assisted, für jede Aufgabe gibt es einen Agent und KI-Startupgründer
|
meinen Geschmack. Alles ist jetzt KI oder KI-Assisted, für jede Aufgabe gibt es einen Agent und KI-Startupgründer
|
||||||
unterbieten sich mit Prognosen für das Aussterben diverser Berufszweige. LLMs sind sehr praktisch und nützlich aber
|
unterbieten sich mit Prognosen für das Aussterben diverser Berufszweige. LLMs sind sehr praktisch und nützlich aber
|
||||||
haben immer noch sehr starke Limitierungen. Momentan kann niemand wirklich prognostizieren, ob Sprachmodelle irgendwann
|
haben immer noch sehr starke Limitierungen. Momentan kann niemand wirklich prognostizieren, ob Sprachmodelle irgendwann
|
||||||
an eine gläserne Decke prallen werden. Denn aktuell passieren Verbesserungen vor allem durch Skalierung, also mehr Daten
|
an eine gläserne Decke prallen werden. Denn aktuell werden Verbesserungen vor allem durch Skalierung erreicht, also mehr Daten
|
||||||
mehr Hardware, mehr Daten, mehr Hardware etc.
|
mehr Hardware, mehr Daten, mehr Hardware etc.
|
||||||
|
|
||||||
Die Auswirkungen auf die Umwelt sind natürlich absolut Katastrophal. Abgesehen
|
Die Auswirkungen auf die Umwelt sind natürlich absolut Katastrophal. Abgesehen
|
||||||
@@ -74,4 +75,4 @@ wie disruptiv diese Revolution sein könnte. Die Technologie wird zugleich unter
|
|||||||
aber die eigentlich zentrale Frage bleibt: wer entscheidet darüber wie diese Modelle eingesetzt werden. Ich finde es falsch, dass private Unternehmen
|
aber die eigentlich zentrale Frage bleibt: wer entscheidet darüber wie diese Modelle eingesetzt werden. Ich finde es falsch, dass private Unternehmen
|
||||||
mit Profitinteressen entscheiden wie diese Modelle umgesetzt und eingesetzt werden. Das abgebildete Wissen in den Modellen wurde von der gesamten Gesellschaft
|
mit Profitinteressen entscheiden wie diese Modelle umgesetzt und eingesetzt werden. Das abgebildete Wissen in den Modellen wurde von der gesamten Gesellschaft
|
||||||
produziert, weshalb ihr meiner Meinung ein Mitspracherecht zusteht. Außerdem ist die Technologie existenziell zu relevant,
|
produziert, weshalb ihr meiner Meinung ein Mitspracherecht zusteht. Außerdem ist die Technologie existenziell zu relevant,
|
||||||
um sie in die Obhut von ein paar Silicon Valley "Strategen" zu geben.
|
um sie nur in die Obhut von ein paar Silicon Valley "Strategen" zu geben.
|
||||||
|
|||||||
@@ -11,4 +11,41 @@ tags = ["programming","linux"]
|
|||||||
local_image = "img/code.svg"
|
local_image = "img/code.svg"
|
||||||
+++
|
+++
|
||||||
## Einleitung
|
## Einleitung
|
||||||
Dieser Artikel soll meine Programmiererfahrungen abbilden und einige Beispiele liefern.
|
In diesem Artikel liste ich Programmiersprachen auf, mit welchen ich schon gearbeitet habe und ordne sie nach Erfahrungslevel (1-am wenigsten Erfahrung bis 5-am meisten Erfahrung). Ich gebe jeder Sprache außerdem eine Note abhängig davon wie gerne ich mit der Sprache Programmiere und wie gut ich ihr Design finde.
|
||||||
|
|
||||||
|
## Level 1:
|
||||||
|
#### ein kleineres Projekt
|
||||||
|
- **C#** - vor einiger Zeit ein paar Berührungspunkte, als ich mit der Unity Engine experimentiert habe *(4+)*
|
||||||
|
- **Go** - kleines Tool geschrieben, dass Daten von einer öffentlichen Bundesliga API abgerufen hat um diese im Terminal anzuzeigen *(2-, relativ einfach aber sehr effektiv)*
|
||||||
|
- **Haskell** - ein simples Spiel implementiert *(2, macht Spaß)*
|
||||||
|
- **Lua** - einfaches neovim Plugin geschrieben um die Funktionen einiger Plugins abzubilden, die ich auf meinem Arbeitsrechner nicht installieren wollte *(2)*
|
||||||
|
## Level 2:
|
||||||
|
#### mehrere kleinere Projekte
|
||||||
|
- **Java** - mit Java habe ich für die Uni einiges Programmiert und zudem ein einfaches Spiel mit GUI, in welchem die Tipp-Geschwindigkeit gemessen wurde *(3-, nicht meins aber besser als C#)*
|
||||||
|
- **JavaScript** - ich habe einiges mit JavaScript und TypeScript gemacht, auch mit dem Framework VueJS und der Grafikengine ThreeJS *(4-, der JavaScript Kosmos ist wirklich sehr suspekt)*
|
||||||
|
- **Rust** - ich habe mit Rust einige kleine Projekte umgesetzt, darunter ein Discord Bot und einen API-Client *(2+, harte Lernkurve, aber sehr gutes Design und guter Compiler)*
|
||||||
|
## Level 3:
|
||||||
|
#### ein größeres Projekt oder viele kleinere Projekte
|
||||||
|
- **C** - mit C habe ich Programmieren gelernt und benutze die Sprache gerne für unterschiedlichste kleine Projekte *(1, eine geniale Sprache, die mangels vieler Abstraktionen großen Spaß macht, bei der man sich aber auch leicht ins Knie schießen kann)*
|
||||||
|
- **C++** - mit C++ habe ich in der Uni ein komplexes Konzept(b-spline Oberflächen) aus der Computergrafik implementiert und dabei die pmp Bibliothek benutzt *(2, macht viel Spaß, C auf Steroiden mir aber zum Teil etwas zu überladen)*
|
||||||
|
## Level 4:
|
||||||
|
#### Shell
|
||||||
|
Unter Shell fasse ich sowohl Wissen über Shellskripte als auch generelles Wissen über die Unix Kommandozeile zusammen.
|
||||||
|
Für diese Dinge habe ich schon Shellskripte geschrieben:
|
||||||
|
- Backupskript mit rsync
|
||||||
|
- Diverse selbstgeschriebene Checks für CheckMK
|
||||||
|
- Automationsskripte für Cloudsysteme, Cluster und Benchmarking
|
||||||
|
*(1+, ich gebe dem Shellskript stellvertretend für die Unix-Philosophie eine perfekte Note, weil sich in dem Design das großartige Unix Design fortsetzt)*
|
||||||
|
## Level 5:
|
||||||
|
#### Python
|
||||||
|
Mit Python habe ich am Abstand am meisten gearbeitet. Die Sprache schlägt eine Brücke zwischen simplen Skripten und komplexen Anwendungen. Sie ist sehr einfach zugänglich,
|
||||||
|
muss aber wegen den Performance-Limitationen richtig eingesetzt werden um nicht zu langsame Software zu erzeugen. Meine Erfahrungen mit der Sprache sehen wie folgt aus:
|
||||||
|
- professionell Python-Django als Server Backend-Entwickler
|
||||||
|
- Automationsskripte mit verschiedenen APIs für Netzwerkadministration
|
||||||
|
- Datenauswertung und Visualisierung per Jupyter Notebook
|
||||||
|
- Implementierung Kognitiver Algorithmen mit numpy
|
||||||
|
- Bildbearbeitung mit Pillow
|
||||||
|
*(2-, eine sehr vielseitige Sprache, braucht allerdings für Typisierung und Performance einige Tweaks)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
content/projects/self_hosting/checkmk-login.png
Normal file
BIN
content/projects/self_hosting/checkmk-login.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.5 KiB |
BIN
content/projects/self_hosting/checkmk-status.png
Normal file
BIN
content/projects/self_hosting/checkmk-status.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
@@ -10,9 +10,10 @@ tags = ["selfhosting","linux"]
|
|||||||
[extra]
|
[extra]
|
||||||
local_image = "img/server_icon.svg"
|
local_image = "img/server_icon.svg"
|
||||||
+++
|
+++
|
||||||
|
##### Stand 27.03.2026
|
||||||
## Einleitung
|
## Einleitung
|
||||||
Der folgende Artikel gibt einen Überblick zur aktuellen Architektur meiner privaten IT-Infrastruktur.
|
Der folgende Artikel gibt einen Überblick zur aktuellen Architektur meiner privaten IT-Infrastruktur.
|
||||||
Ich hatte mir am Anfang meines Studiums einen Raspberry Pi 4 gekauft und als ich mit dem experimentieren
|
Ich hatte mir am Anfang meines Studiums einen Raspberry Pi 4 gekauft und als ich mit dem Experimentieren
|
||||||
fertig war, suchte ich nach einem sinnvollen Verwendungszweck. So bin ich zum Self-Hosting gekommen.
|
fertig war, suchte ich nach einem sinnvollen Verwendungszweck. So bin ich zum Self-Hosting gekommen.
|
||||||
|
|
||||||
## Warum Self-Hosting?
|
## Warum Self-Hosting?
|
||||||
@@ -28,36 +29,80 @@ restlichen Servern handelt es sich um Raspberry Pis verschiedener Generationen.
|
|||||||
über einen kleinen Netgear Switch per Ethernet verkabelt, da ich großen Wert auf stabile
|
über einen kleinen Netgear Switch per Ethernet verkabelt, da ich großen Wert auf stabile
|
||||||
Verbindungen und geringe Latenzen lege.
|
Verbindungen und geringe Latenzen lege.
|
||||||
|
|
||||||
|
Auf den VMs läuft überall Debian, auf den Raspberries Arch.
|
||||||
|
Ich komme eigentliche mit jedem Linux Distro gut zurecht,
|
||||||
|
aber ich nutze privat am liebsten Arch, weil mich das Rolling-Release Modell überzeugt und
|
||||||
|
ich das Paketmanagement mit Arch (pacman, AUR usw.) mag.
|
||||||
|
|
||||||
## Architektur
|
## Architektur
|
||||||
|
|
||||||
```
|
```
|
||||||
____________ ____________ ____________ ____________ ____________
|
..........................
|
||||||
| | | | | | | | | |
|
: ____________ _____:______ ____________
|
||||||
| [ VM1 ] | | [ VM2 ] | | [ VM3 ] | | [ VM4 ] | | [ VM5 ] |
|
: | [ VM1 ] | | [ VM3 ] | | [ VM5 ] |
|
||||||
| PW-Manager | | benji0x3c | | Monitoring | | Git-Repo | | jumphost |
|
: | PW-Manager | | Monitoring | | jumphost |
|
||||||
|____________| |____________| |____________| |____________| |____________|
|
: |____________| |____________| |____________|
|
||||||
+ + + + |+|
|
: : ____________ : ____________ |:|
|
||||||
+ + + + |+|
|
: : | [ VM2 ] | : | [ VM4 ] | |:|
|
||||||
+ + + + |+|
|
: : | benji0x3c | : | Git-Repo | |:|
|
||||||
+ + + + |+|
|
: : |____________| : |____________| |:|
|
||||||
+ + + + wg-Tunnel&
|
: :..........:.........:........:..... |:|
|
||||||
+ + + + SSH
|
: : wg-Tunnel&
|
||||||
++++++++++++++++++++ SSH ++++++++++++++++++++++++++++++ |+|
|
:..SSH.......... : SSH
|
||||||
+ + |+|
|
: SSH |:|
|
||||||
Cloud +++ + |+|
|
Cloud : : |:|
|
||||||
--------------------------------------+---------------------+----|+|------
|
---------------:-----------------------:----|:|--------
|
||||||
On-Premise +____________ +____|+|_____
|
On-Prem :____________ :____|:|_____
|
||||||
| | | |
|
| [ Pi2 ] | | [ Pi1 ] |
|
||||||
| [ Pi2 ] | | [ Pi1 ] |
|
| darkstat |...SSH....| Backups |
|
||||||
| |+ SSH ++| Backups |
|
| DiscordBot | | Ansible |
|
||||||
| DiscordBot | | Ansible |
|
|____________| |____________|
|
||||||
|____________| |____________|
|
|
||||||
```
|
```
|
||||||
Die Ascii-Grafik skizziert den groben Aufbau meiner Infrastruktur und ist relativ selbsterklärend.
|
Die Ascii-Grafik skizziert den groben Aufbau meiner Infrastruktur und ist relativ selbsterklärend.
|
||||||
Einige Details möchte ich dennoch hervorheben:
|
Einige Details möchte ich dennoch hervorheben:
|
||||||
+ da Pi1 der die Maschine ist von der Ansible Automationen gestartet werden, liegt sein public-key auf jedem anderen Server
|
+ da Pi1 der die Maschine ist von der Ansible Automationen gestartet werden können, liegt sein public-key auf jedem anderen Server
|
||||||
+ da Pi1 und Pi2 nicht vom Monitoring Server erreicht werden können, pushen sie ihre Telemetrie-Daten selbstständig per SSH
|
+ da Pi1 und Pi2 nicht vom Monitoring Server erreicht werden können, pushen sie ihre Telemetrie-Daten selbstständig per SSH
|
||||||
+ um mein lokales Netz aus der Distanz warten habe ich eine externe VM per VPN Tunnel mit Pi1 verbunden
|
+ um mein lokales Netz aus der Distanz warten habe ich eine externe VM per VPN Tunnel mit Pi1 verbunden
|
||||||
|
|
||||||
## Anwendungen
|
## Anwendungen
|
||||||
Im folgenden werde kurz Auflisten welche
|
Im folgenden werde kurz Auflisten welche Anwendungen ich betreibe.
|
||||||
|
#### Passwort-Manager: Vaultwarden
|
||||||
|
Ich betreibe [Vaultwarden](https://github.com/dani-garcia/vaultwarden), ein Passwort-Management-Server für den Selbstbetrieb.
|
||||||
|
Der Server ist mit Bitwarden Clients kompatibel und wird inoffiziell auch von Bitwarden Entwicklern unterstützt. Außerdem
|
||||||
|
läuft auf der VM Fail2Ban um Clients mit zu vielen falschen Passworteingaben zu sperren.
|
||||||
|

|
||||||
|
#### Webseite: benji0x3c
|
||||||
|
Auf einer anderen VM läuft diese statische Webseite. Dafür nutze ich [Zola](https://github.com/getzola/zola) mit dem [tabi](https://github.com/welpo/tabi) Theme.
|
||||||
|
Ich finde statische Seiten sehr praktisch und glaube, dass sie für viele Anwendungsfälle völlig ausreichen.
|
||||||
|
Dadurch ließe sich auch die Menge an unsicheren Webauftritten drastische reduzieren.
|
||||||
|
#### Monitoring: Checkmk
|
||||||
|
Natürlich braucht jede Infrastruktur ein Monitoring. Ich nutze dafür [Checkmk](https://checkmk.com/), weil mir die Benutzeroberfläche gefällt und es für mich gut funktioniert.
|
||||||
|
Da ich auf meinem Router kein Port-Forwarding aktivieren möchte, aber der Monitoring-Server die Agents kontaktieren muss, pushen die Raspberries ihren Output
|
||||||
|
selbständig per SCP auf den Server. Ich habe außerdem eine Reihe an eigenen Checks per Shell-Script gebaut, die z.B. den Wireguard Tunnel oder das Alter der Backups überwachen.
|
||||||
|

|
||||||
|
#### Git-Repo: Gitea
|
||||||
|
Ich hoste eine [Gitea](https://about.gitea.com/) Instanz für meine Repositories. Ich habe lange Github benutzt, aber einerseits finde ich die Repo-Verwaltung dort relativ umständlich,
|
||||||
|
anderseits möchte weiß man bei Github mittlerweile nicht mehr wofür die eigenen Repositories genutzt werden.
|
||||||
|
#### jumphost
|
||||||
|
Ich habe eine sehr kleine VM die ich ausschließlich als Jumphost benutze, um aus dem WAN auf mein lokales Netzwerk zugreifen zu können.
|
||||||
|
#### Backups: rsync
|
||||||
|
Auf einem der Raspberries läuft täglich ein Backupscript, welches die Backups von meinem Desktop-Rechner und den VPS Maschinen in der Cloud schreibt.
|
||||||
|
Dafür nutze ich rsync um nur das Delta schreiben zu müssen und nicht bei jedem Durchlauf alles zu kopieren.
|
||||||
|
Dabei werden aber nur für Daten mit sinnvollem Kosten-Nutzen Verhältnis Backups geschrieben, da ich Platz sparen möchte. Perspektivisch möchte ich regelmäßige
|
||||||
|
Snapshots dieses Backups in ein Cloud schreiben, das ist aber aktuell aus Budget-Gründen noch nicht implementiert.
|
||||||
|
#### Netzwerkanalyse: Darkstat
|
||||||
|
Außerdem läuft auf einem der Pis [darkstat](https://unix4lyfe.org/darkstat/), ein Netzwerkanalyse-Tool, dass ich ausprobiert habe weil es extrem wenig Ressourcen benötigt und sehr praktisch ist,
|
||||||
|
wenn man mehrere Geräte in einem Netzwerk verwaltet.
|
||||||
|
#### DiscordBot
|
||||||
|
Des weiteren läuft ein DiscordBot auf einem RaspberryPi, den ich selbst in Rust geschrieben habe. Der Bot wird nur von meinen Freunden und mir verwendet und braucht deshalb
|
||||||
|
nicht viele Ressourcen.
|
||||||
|
|
||||||
|
## Fazit& Ausblick
|
||||||
|
Es macht mir großen Spaß Anwendungen selbst zu hosten und die dafür benötigte Infrastruktur zu warten. An meinem aktuellen Setup gibt es aber noch vieles zu verbessern
|
||||||
|
und ich lerne fast jede Woche dazu. Einige Pläne habe ich schon, sobald ich Geld für die benötigte Hardware übrig habe:
|
||||||
|
* redundante Backups mit RAID
|
||||||
|
* ein Intrusion-Detection-System auf einem Pi mit etwas mehr RAM (z.B. [Suricata](https://suricata.io/))
|
||||||
|
* einen kleinen Bildschirm mit Monitoring Informationen (z.B. Per Pi Zero)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
content/projects/self_hosting/vaultwarden.png
Normal file
BIN
content/projects/self_hosting/vaultwarden.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
Reference in New Issue
Block a user