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"
|
||||
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
|
||||
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
|
||||
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.
|
||||
@@ -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,
|
||||
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"
|
||||
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
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
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,
|
||||
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"
|
||||
+++
|
||||
## 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]
|
||||
local_image = "img/server_icon.svg"
|
||||
+++
|
||||
##### Stand 27.03.2026
|
||||
## Einleitung
|
||||
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.
|
||||
|
||||
## 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
|
||||
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
|
||||
|
||||
```
|
||||
____________ ____________ ____________ ____________ ____________
|
||||
| | | | | | | | | |
|
||||
| [ VM1 ] | | [ VM2 ] | | [ VM3 ] | | [ VM4 ] | | [ VM5 ] |
|
||||
| PW-Manager | | benji0x3c | | Monitoring | | Git-Repo | | jumphost |
|
||||
|____________| |____________| |____________| |____________| |____________|
|
||||
+ + + + |+|
|
||||
+ + + + |+|
|
||||
+ + + + |+|
|
||||
+ + + + |+|
|
||||
+ + + + wg-Tunnel&
|
||||
+ + + + SSH
|
||||
++++++++++++++++++++ SSH ++++++++++++++++++++++++++++++ |+|
|
||||
+ + |+|
|
||||
Cloud +++ + |+|
|
||||
--------------------------------------+---------------------+----|+|------
|
||||
On-Premise +____________ +____|+|_____
|
||||
| | | |
|
||||
..........................
|
||||
: ____________ _____:______ ____________
|
||||
: | [ VM1 ] | | [ VM3 ] | | [ VM5 ] |
|
||||
: | PW-Manager | | Monitoring | | jumphost |
|
||||
: |____________| |____________| |____________|
|
||||
: : ____________ : ____________ |:|
|
||||
: : | [ VM2 ] | : | [ VM4 ] | |:|
|
||||
: : | benji0x3c | : | Git-Repo | |:|
|
||||
: : |____________| : |____________| |:|
|
||||
: :..........:.........:........:..... |:|
|
||||
: : wg-Tunnel&
|
||||
:..SSH.......... : SSH
|
||||
: SSH |:|
|
||||
Cloud : : |:|
|
||||
---------------:-----------------------:----|:|--------
|
||||
On-Prem :____________ :____|:|_____
|
||||
| [ Pi2 ] | | [ Pi1 ] |
|
||||
| |+ SSH ++| Backups |
|
||||
| darkstat |...SSH....| Backups |
|
||||
| DiscordBot | | Ansible |
|
||||
|____________| |____________|
|
||||
```
|
||||
Die Ascii-Grafik skizziert den groben Aufbau meiner Infrastruktur und ist relativ selbsterklärend.
|
||||
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
|
||||
+ um mein lokales Netz aus der Distanz warten habe ich eine externe VM per VPN Tunnel mit Pi1 verbunden
|
||||
|
||||
## 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