Architektur der Systeme und Applikationen
Heimnetz, Server, Dienste, Datenflüsse und Sicherungen auf einen Blick. Alle Angaben sind aus den Systemen selbst gelesen (SSH, UniFi-API, TrueNAS lesend, Home-Assistant-Supervisor) – Stand 18.09.2026. Keine Zugangsdaten auf dieser Seite.
Heimnetz 192.168.178.0/24 Server-VLAN 200 DMZ-VLAN 250 docker-lab aipi TrueNAS extern / Internet
System = Rechner, VM, NAS, VPS oder Router. Applikation = Dienst oder Programm, das auf einem System läuft. Detaildokumente je System: Git
semaphore/infrastruktur/<system>/ARCHITEKTUR.md.
Gesamtbild: Netze und Systeme
Welches System steht in welchem Netz, welche VMs laufen auf Proxmox und wie hängen die Server am TrueNAS.
Weg einer Anfrage aus dem Internet
Netzwerk
UniFi Dream Machine SE als Router, Firewall und Controller. Internet über PPPoE (NetCom BW, dynamische IP), zweiter WAN-Anschluss angelegt, aber nicht belegt. Zwei Switches und vier Access Points.
Netze und VLANs
Portweiterleitungen (UDM)
| Name | Ports | Ziel |
|---|---|---|
| ngnx | 80, 443 | 192.168.250.5 (NPM) |
| Plex | 32400 | 192.168.200.10 kein Plex dort |
| minecraft | 19132 | 192.168.200.10 |
| minecraft2 | 19130 | 192.168.210.10 |
| satisfactory | 7777, 8888, 15000, 15777, 16261–16262 | 192.168.178.69 |
| Fritz SIP | 5060, 7078–7109 | 192.168.178.173 |
| minecraft java | 25565 | 192.168.178.250 · aus |
Alle tcp/udp. Firewall: nur Standardregeln plus „WireGuard erlauben“; keine eigenen Zonen-Regeln.
Namen und Domains
| Name | zeigt auf |
|---|---|
*.prod.local, *.lab.local, *.dmz.local | 192.168.250.5 → Nginx Proxy Manager → Backend |
aipi.local, homeassistant.local | mDNS (Avahi) im Heimnetz |
| fischer-lab.de, fischer-lab.eu | DNS bei netcup, DynDNS alle 10 min von docker-dmz |
| fischer.ipv64.de, sda.ipv64.de, cfischer.ipv64.net | DynDNS ipv64 alle 15 min von docker-dmz |
| gallery.fischer-lab.de | öffentlich → NPM → Picpeak (docker-lab) |
| fischer-lab.de | NPM-Host deaktiviert offline |
Systeme
Hardware, virtuelle Maschinen und externe Server. Die drei Docker-VMs sind Klone derselben Vorlage und identisch eingerichtet.
docker-prod
- OS
- Ubuntu 26.04.1, Kernel 7.0
- Ressourcen
- 4 vCPU, 3,3 GB RAM, 48 GB (32 %)
- Netz
192.168.200.5(VLAN 200)- Ablage
- NFS
/mnt/docker_prod,/mnt/plex - Zugang
ssh ai@192.168.200.5
docker-lab
- OS
- Ubuntu 26.04.1, Kernel 7.0
- Ressourcen
- 2 vCPU, 7,1 GB RAM, 48 GB (23 %)
- Netz
192.168.200.10(VLAN 200)- Ablage
- NFS
/mnt/docker_lab,/mnt/plex - Zugang
ssh ai@docker-lab
docker-dmz
- OS
- Ubuntu 26.04.1, Kernel 7.0
- Ressourcen
- 2 vCPU, 1,6 GB RAM, 24 GB (42 %)
- Netz
192.168.250.5(VLAN 250)- Ablage
- NFS
/mnt/docker_dmz - Zugang
ssh ai@docker-dmz
aipi
- OS
- Debian 13 (Raspberry Pi OS Lite), arm64
- Ressourcen
- 4 Kerne, 7,6 GB RAM, SD 29 GB (43 %)
- Netz
192.168.178.205, WLAN aus- Ablage
- lokal auf der SD-Karte
- Zugang
ssh ai@aipi
TrueNAS
- OS
- TrueNAS SCALE 24.10.2.4
- Hardware
- Celeron N5105, 31 GB RAM
- Pools
- DataStorage 8 TB (4,45 TB belegt), backup 1 TB (0,17 TB)
- Netz
- .178.225, .178.80, .200.21, .250.79
- Dienste
- NFS, SMB (kein SMB1), Cloud-Sync
Proxmox VE
- Adresse
192.168.178.220, Web-UI :8006- VMs
- docker-prod, docker-lab, docker-dmz, Home Assistant und weitere (7 VM-IDs werden gesichert: 100, 103–106, 108, 109; Zuordnung nicht dokumentiert)
- Sicherung
- vzdump nachts → TrueNAS
NFSproxmox
Home Assistant OS
- Version
- OS 18.2, Core 2026.9.2
- Adresse
192.168.178.230, :8123- Zugang
ssh hassio@homeassistant.local
UniFi Dream Machine SE
- Adresse
192.168.178.1- Software
- UniFi OS 5.1, Network 10.6.106
- Zugang
- API-Key über aipi
netcup-VPS
- Adresse
185.207.104.205- OS
- Debian 13
- Zweck
- geplanter Mailserver für fischer-lab.de/.eu
- Zugang
- derzeit nur Konsole im netcup-Portal
Arbeitsplätze
| Rechner | macOS-Benutzer | Rolle |
|---|---|---|
| Mac mini M4 | christophfischer | Claude Code, SSH-Schlüssel auf allen Servern |
| Mac mini M2 | christoph | Claude Code, SSH-Schlüssel auf allen Servern |
Applikationen
Alle Dienste mit dem System, auf dem sie laufen. Filter nach System oder Suche nach Name.
| Applikation | System | Container | Adresse | Daten |
|---|
Abhängigkeiten und Datenflüsse
Wer mit wem spricht. Ein Ausfall links trifft alles rechts davon.
| Von | Nach | Wozu | |
|---|---|---|---|
| Internet | → | UDM → Nginx Proxy Manager (docker-dmz) | alle öffentlichen Namen (Picpeak, MeshCentral, ipv64-Hosts) |
| Nginx Proxy Manager | → | docker-prod, docker-lab, docker-dmz | interne Namen *.prod/lab/dmz.local |
| docker-prod, -lab, -dmz | → | TrueNAS (NFS) | sämtliche Container-Daten; Docker startet nicht ohne NFS |
| Marktanalyse (aipi) | → | PostgreSQL 18 (docker-lab :5432) | Kursdaten und Analysen |
| Paperless-Assistent (aipi) | → | Paperless (docker-prod) · Ollama (.100) | Dokumente lesen · Auswertung und Vektoren |
| Scanner ADS-1700W | → | TrueNAS SMB → docker_prod/paperless/consume | Paperless holt neue Scans per Polling |
| Paperless-Backup | → | TrueNAS docker_prod/paperless/export | täglicher Export |
| Proxmox | → | TrueNAS NFS NFSproxmox | VM-Sicherungen |
| Home Assistant | → | KNX-IP .21 · HomeKit · Overkiz · Netatmo · VW | Hausautomation |
| Homebridge (docker-lab) | → | Apple Home | zusätzliche HomeKit-Geräte |
| DynDNS-Container (docker-dmz) | → | netcup-DNS, ipv64 | öffentliche Namen auf die wechselnde WAN-IP |
| Watchtower (3 VMs) | → | Docker Hub, GHCR · Discord | tägliche Image-Updates und Meldung |
| Alle Macs, Claude | → | aipi ~/<dienst>/.env | zentrale Zugangsdaten per SSH |
| TrueNAS | → | pCloud | Kopie außer Haus |
Speicher
Alle Container-Daten der VMs liegen auf dem TrueNAS. Nur aipi und die VM-Systemplatten speichern lokal.
| Dataset (DataStorage) | belegt | genutzt von |
|---|---|---|
NFSproxmox | 1,79 TB | Proxmox-Sicherungen, Vorlagen |
plex | 1,88 TB | Plex (docker-prod), NFS + SMB |
TimeMachine | 209 GB | Time Machine der Macs (SMB) |
docker_home | 76 GB | NFS (Heimnetz) |
docker_lab | 48 GB | docker-lab |
docker_prod | 30 GB | docker-prod |
EigeneDateien | 12 GB | persönliche Dateien |
docker_dmz | 5,4 GB | docker-dmz |
docker_paperless | 2,7 GB | älterer Paperless-Bestand |
backup | 1 GB | u. a. ioBroker-Sicherung |
| Pool | Aufbau | Größe |
|---|---|---|
| DataStorage | 2 × Mirror aus 4 × Samsung 870 EVO 4 TB | 8 TB, 4,45 TB belegt |
| backup | 1 × WD My Passport 1 TB (USB), ohne Redundanz | 1 TB, 0,17 TB belegt |
| boot-pool | 2 × Samsung 970 EVO Plus 1 TB (NVMe) | System |
| Scrub beider Pools sonntags 00:00. NFS-Freigaben je VLAN freigegeben (178/200/250). | ||
Backup
Vier Stufen: Die Dienste sichern sich selbst auf das NAS, das NAS hält Snapshots, spiegelt auf einen zweiten Pool und synchronisiert nach pCloud.
- Paperless-Export täglich 04:30 →
paperless/export(7 T / 4 W / 12 M) - Proxmox vzdump nachts ~03:00 →
NFSproxmox(7 VMs aktiv gesichert, bis 14 Stände je VM) - MeshCentral täglich →
meshcentral/backups(10 Stände) - Home Assistant automatisch täglich ~03:00, lokal in HA (10 Stände)
- Time Machine der Macs → SMB
TimeMachine
docker_proddocker_labdocker_dmzEigeneDateien- nicht: plex, NFSproxmox, TimeMachine
backup (USB 1 TB)- docker_prod, docker_lab, docker_dmz
- docker_home, EigeneDateien
- eigene Snapshots auf backup/docker_prod, backup/EigeneDateien (2 Wochen)
- letzter Lauf: FINISHED
- docker_prod, docker_lab, docker_dmz
- docker_home, docker_paperless
- EigeneDateien
- Ziel
/TSBackup/… - letzter Lauf: SUCCESS · SYNC spiegelt auch Löschungen
Abdeckung je Datenbestand
| Daten | Snapshot | 2. Pool | pCloud | Bemerkung |
|---|---|---|---|---|
| Container-Daten docker-prod (Paperless, Gitea, Firefly) | ja | ja | ja | zusätzlich Paperless-Export |
| Container-Daten docker-lab (u. a. Postgres der Marktanalyse) | ja | ja | ja | Postgres als Dateikopie, kein Dump |
| Container-Daten docker-dmz (NPM, WordPress, MeshCentral) | ja | ja | ja | |
| EigeneDateien | ja | ja | ja | |
| VM-Sicherungen (NFSproxmox) | nein | nein | nein | nur auf DataStorage |
| Plex-Medien | nein | nein | nein | nur Mirror |
| Home Assistant | in der VM, über vzdump auf dem NAS | HA-Backups selbst nur lokal | ||
| aipi (SD-Karte) | keine Sicherung | Quellcode in Gitea, Zugangsdaten nur hier | ||
| Gitea-Repos | liegen in docker_prod → alle Stufen | Arbeitskopien zusätzlich auf den Macs | ||
Zeitplan
Alle wiederkehrenden Jobs, deutsche Zeit. Die Docker-VMs laufen intern in UTC, die Jobs sind aber auf Europe/Berlin eingestellt.
| Zeit | Job | System | Art |
|---|---|---|---|
| alle 10 min | DynDNS fischer-lab.de/.eu | docker-dmz | Container |
| alle 15 min | DynDNS ipv64 (Prüfung alle 30 min) | docker-dmz | Container |
| alle 15 min | Paperless-Assistent-Abgleich | aipi | Container |
| alle 15 min | Massage-Wacht | aipi | systemd-Timer |
| 00:00 | ZFS-Snapshots, Replikation auf backup, pCloud-Sync | TrueNAS | TrueNAS-Aufgaben |
| So 00:00 | Scrub DataStorage und backup | TrueNAS | TrueNAS-Aufgabe |
| ~01:00 | MeshCentral-Autobackup | docker-dmz | Container |
| So 01:04 | vzdump VM 104 | Proxmox | Proxmox-Job |
| Di–Sa 01:20 | Marktanalyse: Abruf | aipi | Planer im Container |
| Di–Sa 01:35 | Marktanalyse: Analyse | aipi | Planer im Container |
| 03:00 | vzdump der übrigen VMs | Proxmox | Proxmox-Job |
| 03:00 | Marktanalyse: Intraday-Abruf | aipi | Planer im Container |
| 03:00 | Firefly-III-Cron | docker-prod | Container |
| ~03:00 | Home-Assistant-Backup (automatisch) | Home Assistant | HA |
| 04:30 | Paperless-Backup (Export + ZIP) | docker-prod | systemd-Timer |
| 05:00 | Watchtower: Image-Updates | docker-prod, -lab, -dmz | Container |
| täglich | apt: Sicherheitsupdates (unattended-upgrades) | docker-prod, -lab, -dmz | systemd-Timer |
Kein cron auf den Docker-VMs installiert; auf aipi nur die Paket-Standardjobs.
Zugang und Sicherheit
Anmeldung
- Server per SSH als
aimit Schlüssel; je Mac ein eigener Schlüssel, auf allen Servern freigeschaltet. aihat überall sudo ohne Passwort. Passwort-Anmeldung per SSH ist überall zusätzlich erlaubt.- Home Assistant nur per Schlüssel (
hassio), API über den Supervisor-Token in der Sitzung. - Gitea per SSH (Port 222) mit Schlüssel am Konto
ai. - TrueNAS: Konto
ai, ausschließlich lesend.
Zugangsdaten
Zentral auf aipi unter ~/<dienst>/.env (Ordner 700, Datei 600), genutzt per SSH von jedem Rechner. Nie lokal, nie in Git.
Absicherung der Systeme
- Keine Host-Firewall und kein fail2ban auf den Servern; Trennung über VLANs und die UDM.
- Aus dem Internet offen: nur 80/443 zum Proxy Manager sowie die Spiele-/SIP-Weiterleitungen.
- Container auf aipi mit Speicher-/CPU-Grenzen; Containerseite und Architektur-Seite read-only ohne Rechte.
- Docker-Logs begrenzt (VMs 20 MB × 3, aipi je Compose), Journal 200 MB.
Updates
- Docker-VMs: unattended-upgrades täglich; Images per Watchtower 05:00.
- aipi: keine automatischen Updates.
- Home Assistant: nur nach Freigabe, vorher Backup.
- Docker Engine 29.8, Compose 5.5 überall aus dem offiziellen Archiv.
Quellen und Git
Gitea auf docker-prod (http://gitea.prod.local). Alle Repos gehören christoph, Claude schreibt als ai.
| Repo | Inhalt |
|---|---|
software | eigene Programme: marktanalyse, paperless-assistent, containerseite, architektur-seite, monitoring-portal, wp-fischer-lab |
skripte | paperless-backup (Skript + systemd-Units), paperless-korrespondenten, massage-wacht |
docker | Stacks aus fertigen Images: obsidian inkl. smb.conf |
semaphore | Compose-Dateien der Docker-VMs (docker-compose/), Architektur-Dokumente (infrastruktur/), Ansible-Archiv |
claude-gedaechtnis | Anweisungen und Gedächtnis für Claude (Systeme, Applikationen, Regeln) |
Auffälligkeiten im Ist-Stand
Beobachtungen beim Erfassen – nichts davon wurde geändert.
backup ist eine einzelne USB-Platte ohne Redundanz.semaphore.prod.local (Semaphore läuft nicht mehr), netbox.fischer-lab.de, kuma.dmz.local.