Architektur¶
Beispielseite, die zeigt, wie sich die Cloud-Infrastruktur mit Mermaid
dokumentieren lässt — angelehnt an den tatsächlichen Aufbau in diesem Repo
(DNS, Reverse Proxy, S3-kompatibler Object Storage, Backups). Details zu den
einzelnen Stacks stehen weiterhin in docs/ARCHITECTURE.md im Repo-Root.
Überblick¶
graph TD
User((Nutzer)) -->|HTTPS| DNS[Hetzner DNS<br/>jxbit.de]
DNS -->|A/AAAA Record| Traefik[Traefik<br/>Reverse Proxy + TLS]
subgraph Apps["Anwendungen"]
Authentik[Authentik<br/>SSO]
Nextcloud[Nextcloud]
Duplicati[Duplicati]
MkDocs[MkDocs]
end
Traefik -->|Host-Routing per Label| Authentik
Traefik --> Nextcloud
Traefik --> Duplicati
Traefik --> MkDocs
Authentik --> AuthDB[(Postgres<br/>authentik-internal)]
Nextcloud --> NcDB[(Postgres + Redis<br/>nextcloud-internal)]
Nextcloud -->|Primary Storage| S3[(S3 Object Storage<br/>jxcloud-data)]
Duplicati -->|verschlüsseltes Backup| S3Backup[(S3 Bucket<br/>Backup-Ziel)]
Duplicati -->|liest| HostFS[/Host-Verzeichnis<br/>DUPLICATI_SOURCE_DIR/]
Zertifikatsausstellung (DNS-01)¶
Traefik löst Zertifikate für *.jxbit.de per DNS-01-Challenge über die
Hetzner-DNS-API, statt Ports 80/443 des ACME-Providers zu brauchen:
sequenceDiagram
participant T as Traefik
participant LE as Let's Encrypt
participant DNS as Hetzner DNS API
T->>LE: Zertifikatsanfrage für *.jxbit.de
LE->>T: DNS-01 Challenge Token
T->>DNS: TXT-Record _acme-challenge.jxbit.de setzen
DNS-->>LE: TXT-Record ist propagiert
LE->>DNS: TXT-Record prüfen
LE-->>T: Zertifikat ausgestellt
T->>DNS: TXT-Record wieder entfernen
Nextcloud: Storage- und Backup-Pfad¶
Zwei getrennte S3-Buckets: einer als primärer Objektspeicher für Nextcloud-Nutzdaten, einer als Backup-Ziel für Duplicati.
graph LR
NC[Nextcloud App] -->|Primary Object Store| S3[(S3 Bucket<br/>jxcloud-data)]
NC --> DB[(Postgres)]
NC --> Redis[(Redis Cache)]
Dup[Duplicati] -->|verschlüsseltes Backup| S3B[(S3 Bucket<br/>Backup-Ziel)]
Dup -->|liest| Src[/Host-Verzeichnis<br/>DUPLICATI_SOURCE_DIR/]
Weitere Diagrammtypen (Klassen-, Zustands-, ER-Diagramme, Gantt) siehe Erste Schritte.