Skip to content

Latest commit

 

History

226 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# Verfeinerte KI-Anweisung zur Planung der Software

## Ziel

Entwirf eine moderne, skalierbare und wartbare Enterprise-Webanwendung auf Basis von Spring Boot 4, MySQL und React/TypeScript.

Die Anwendung kombiniert Kernfunktionen aus:

* Datei- und Medienverwaltung wie Nextcloud
* Digital Asset Management wie ResourceSpace
* Medienstreaming wie Jellyfin

Der Fokus liegt auf:

* Verwaltung großer Medien- und Dokumentbestände
* Rollen- und Rechteverwaltung
* Streaming von Videos mit Untertiteln
* Durchsuchbaren Metadaten
* Skalierbarer Architektur
* Moderner API-basierter Frontend-/Backend-Trennung

---

# Technologiestack

## Backend

* Java 21+
* Spring Boot 4
* Spring Security
* Spring Data JPA
* Hibernate
* MySQL 8
* Flyway oder Liquibase für Datenbankmigrationen
* JWT oder OAuth2 Authentication
* FFmpeg für Vorschau-Generierung
* Apache Tika zur Dokumentanalyse
* Elasticsearch oder OpenSearch für Volltextsuche
* Maven oder Gradle

## Frontend

* React
* TypeScript
* Vite
* React Query / TanStack Query
* Zustand oder Redux Toolkit
* Material UI oder Ant Design
* Video.js oder Shaka Player für Videostreaming
* i18n-Unterstützung
* Responsive Design

## Infrastruktur

* Docker
* Docker Compose
* Optional Kubernetes-Support
* Nginx Reverse Proxy
* MinIO oder lokales Filesystem als Storage
* Optional S3-kompatibler Storage

---

# Hauptziel der Architektur

Die KI soll eine modulare Enterprise-Architektur planen mit:

* sauberer Schichtenarchitektur
* Domain-getriebenem Design
* REST API oder GraphQL
* hoher Erweiterbarkeit
* klarer Rechteverwaltung
* skalierbarer Dateiverarbeitung
* asynchronen Jobs
* hoher Performance bei großen Dateien

---

# Fachliche Kernfunktionen

## 1. Benutzer- und Rechteverwaltung

### Funktionen

* Benutzer anlegen
* Benutzer deaktivieren
* Passwortverwaltung
* Rollenverwaltung
* Gruppenverwaltung
* Benutzer Gruppen zuordnen
* Rechte auf:

  * Ordner
  * Dateien
  * Metadaten
  * Downloads
  * Uploads
  * Streams
  * Bearbeitung

### Rechtearten

* Lesen
* Schreiben
* Löschen
* Download
* Upload
* Teilen
* Metadaten bearbeiten
* Untertitel verwalten
* Administration

### Anforderungen

* Rechtevererbung über Ordnerstruktur
* Direkte Benutzerrechte + Gruppenrechte
* Priorisierung von Deny-Regeln möglich
* ACL-System bevorzugt

---

# 2. Ordnerverwaltung

## Funktionen

* Ordner erstellen
* Ordner löschen
* Ordner umbenennen
* Verschieben
* Verschachtelte Unterordner
* Breadcrumb-Navigation
* Favoriten
* Papierkorb

## Anforderungen

* Rechte pro Ordner
* Rekursive Rechtevererbung
* Sehr große Ordnerstrukturen performant verwalten
* Lazy Loading im Frontend

---

# 3. Datei-Upload

## Anforderungen

* Upload großer Dateien bis mindestens 1 GB
* Chunked Upload
* Resume-fähige Uploads
* Mehrfach-Uploads
* Drag & Drop
* Fortschrittsanzeige

## Unterstützte Dateien

* Videos
* Bilder
* Dokumente
* Präsentationen
* Textdateien
* PDFs

## Backend-Anforderungen

* Streaming Upload
* Kein vollständiges Laden in RAM
* Asynchrone Verarbeitung nach Upload
* Event-basierte Verarbeitung

---

# 4. Metadaten-System

## Anforderungen

Jede Datei besitzt:

* Titel
* Beschreibung
* Tags
* Kategorien
* Upload-Datum
* Uploader
* Dateityp
* Größe
* Sprache
* Benutzerdefinierte Metadaten

## Erweiterungen

* Frei definierbare Metadatenfelder
* Metadaten-Schemas
* Mehrsprachige Metadaten
* Versionierung von Metadaten

## Durchsuchbarkeit

Die Suche muss unterstützen:

* Titel
* Beschreibung
* Tags
* Dateiname
* Ordnername
* OCR-Texte
* Dokumentinhalte
* Untertiteltexte

---

# 5. Videoverwaltung

## Funktionen

* HTML5-Streaming
* Adaptive Streams optional
* Untertitelverwaltung
* Vorschaubilder
* Kapitelmarken optional

## Untertitelregeln

Automatische Zuordnung über Dateinamen:

* Video1.mp4
* Video1.de.srt
* Video1.en.srt

## Anforderungen

* Mehrsprachige Untertitel
* Dynamisches Laden
* Auswahl im Player
* Unterstützung:

  * SRT
  * VTT

## Videoplayer

Der Player soll:

* Untertitel umschalten können
* Playback-Speed unterstützen
* Qualität wechseln können
* Resume-Position speichern
* Rechte prüfen vor Streaming

---

# 6. Vorschau-Generierung

## Bilder

* Thumbnails
* Mehrere Größen

## Videos

* FFmpeg-basierte Vorschau
* Timeline-Screenshots
* Poster-Images

## Dokumente

* PDF-Vorschau
* Office-Dokumente rendern
* Erste Seiten als Bild

## Anforderungen

* Asynchrone Queue-Verarbeitung
* Retry-Mechanismus
* Job-Status speichern

---

# 7. Dokumentenansicht

## Unterstützte Typen

* Word
* Excel
* PowerPoint
* PDF
* Textdateien
* Markdown

## Funktionen

* Browserbasierte Vorschau
* Inline-Anzeige
* Syntax Highlighting für Textdateien

## Optional

* Integration:

  * OnlyOffice
  * Collabora
  * LibreOffice Headless

---

# 8. Texteditor

## Funktionen

* Bearbeiten von:

  * TXT
  * JSON
  * XML
  * YAML
  * Markdown

## Anforderungen

* Autosave
* Versionierung
* Rechteprüfung
* Kollisionsschutz

---

# 9. Suche

## Anforderungen

Globale Suche über:

* Dateien
* Metadaten
* Ordner
* Inhalte
* Untertitel
* OCR
* Benutzer

## Features

* Volltextsuche
* Filter
* Facettensuche
* Sortierung
* Relevanzranking

## Technologie

Bevorzugt:

* Elasticsearch
* OpenSearch

---

# 10. API-Anforderungen

## Architektur

* REST API
* Optional GraphQL Gateway

## Anforderungen

* Versionierung
* OpenAPI / Swagger
* Pagination
* Filterung
* Sorting
* Rate Limiting

## Sicherheit

* JWT Access Tokens
* Refresh Tokens
* CSRF Schutz
* Audit Logging

---

# 11. Nichtfunktionale Anforderungen

## Performance

* Große Dateimengen
* Viele parallele Uploads
* Streaming optimiert
* CDN-fähig

## Skalierbarkeit

* Horizontale Skalierung
* Stateless Backend
* Separater Storage-Service möglich

## Sicherheit

* Virenscan optional
* MIME-Type-Prüfung
* Upload-Limits
* Schutz vor Path Traversal
* Verschlüsselung sensibler Daten

## Wartbarkeit

* Modulare Architektur
* Testbarkeit
* Hohe Codequalität
* Klare Trennung von Verantwortlichkeiten

---

# 12. Erwartete Architekturartefakte der KI

Die KI soll erzeugen:

## Fachliche Modelle

* Domainmodell
* ER-Diagramm
* Rechtekonzept
* Objektmodell

## Technische Architektur

* Komponentenübersicht
* Service-Struktur
* API-Design
* Storage-Konzept
* Suchindex-Konzept

## Datenmodell

Tabellen für:

* User
* Rollen
* Gruppen
* ACLs
* Dateien
* Ordner
* Metadaten
* Untertitel
* Vorschaugrafiken
* Upload-Jobs

## Frontend-Architektur

* Seitenstruktur
* Komponentenstruktur
* State-Management
* Routing-Konzept

## Backend-Architektur

* Module
* Services
* Repositories
* Security-Konzept
* Event-System

## Infrastruktur

* Docker Setup
* CI/CD
* Backup-Strategie
* Monitoring
* Logging

---

# Wichtige Architekturvorgaben

## Die KI soll:

* keine Monolithen ohne Modulgrenzen erzeugen
* keine Dateien in der Datenbank speichern
* große Dateien streamen
* asynchron arbeiten
* klare DTO-Trennung nutzen
* keine Businesslogik im Controller platzieren
* Security First denken
* Erweiterbarkeit priorisieren

---

# Erweiterungen für spätere Versionen

Die Architektur soll zukünftige Features ermöglichen:

* Sharing-Links
* Öffentliche Freigaben
* Kommentare
* Versionierung
* KI-gestützte Verschlagwortung
* Gesichtserkennung
* OCR
* Transcoding
* Mobile Apps
* WebDAV
* Desktop Sync Clients
* Activity Feed
* Benachrichtigungen
* Multi-Tenant-Betrieb

---

# Erwartete Ausgabe der KI

Die KI soll:

1. Eine vollständige Systemarchitektur entwerfen
2. Das Datenmodell definieren
3. Backend-Module strukturieren
4. Frontend-Struktur planen
5. Sicherheitskonzept definieren
6. Upload-/Streaming-Architektur erklären
7. Rechtekonzept detaillieren
8. Skalierungsstrategie erklären
9. API-Struktur definieren
10. Deployment-Architektur entwerfen
11. Risiken und Engpässe identifizieren
12. Konkrete Technologieempfehlungen begründen



Nach Mainboard Umbau prüfen:
root@pve:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vmbr0 state UP group default qlen 1000
    link/ether 70:85:c2:3f:9c:e1 brd ff:ff:ff:ff:ff:ff
    altname enx7085c23f9ce1
3: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 70:85:c2:3f:9c:e1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.99/24 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::7285:c2ff:fe3f:9ce1/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever
4: veth106i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr0 state UP group default qlen 1000
    link/ether fe:6a:37:f7:0b:7e brd ff:ff:ff:ff:ff:ff link-netnsid 0
5: veth105i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr0 state UP group default qlen 1000
    link/ether fe:de:b6:68:92:78 brd ff:ff:ff:ff:ff:ff link-netnsid 1
6: veth107i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr0 state UP group default qlen 1000
    link/ether fe:c3:1a:11:5c:b2 brd ff:ff:ff:ff:ff:ff link-netnsid 2
7: veth109i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr0 state UP group default qlen 1000
    link/ether fe:00:99:ed:94:88 brd ff:ff:ff:ff:ff:ff link-netnsid 3
8: veth102i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master fwbr102i0 state UP group default qlen 1000
    link/ether fe:5b:25:31:b3:7c brd ff:ff:ff:ff:ff:ff link-netnsid 4
9: fwbr102i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 4a:9d:bf:67:01:2e brd ff:ff:ff:ff:ff:ff
10: fwpr102p0@fwln102i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr0 state UP group default qlen 1000
    link/ether 12:4c:b4:6b:03:e7 brd ff:ff:ff:ff:ff:ff
11: fwln102i0@fwpr102p0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master fwbr102i0 state UP group default qlen 1000
    link/ether 4a:9d:bf:67:01:2e brd ff:ff:ff:ff:ff:ff
16: veth110i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master fwbr110i0 state UP group default qlen 1000
    link/ether fe:fd:49:4f:af:5a brd ff:ff:ff:ff:ff:ff link-netnsid 5
17: fwbr110i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 92:c5:47:a3:b0:5c brd ff:ff:ff:ff:ff:ff
18: fwpr110p0@fwln110i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr0 state UP group default qlen 1000
    link/ether 7e:32:48:02:24:85 brd ff:ff:ff:ff:ff:ff
19: fwln110i0@fwpr110p0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master fwbr110i0 state UP group default qlen 1000
    link/ether 92:c5:47:a3:b0:5c brd ff:ff:ff:ff:ff:ff
root@pve:~#

root@pve:~# lsblk
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0                7:0    0   450G  0 loop
loop1                7:1    0     8G  0 loop
loop2                7:2    0     2G  0 loop
loop3                7:3    0     8G  0 loop
loop4                7:4    0    25G  0 loop
loop5                7:5    0   256G  0 loop
loop6                7:6    0   500G  0 loop
sda                  8:0    0   1.8T  0 disk
└─sda1               8:1    0   1.8T  0 part /mnt/data1
sdb                  8:16   0   1.8T  0 disk
└─sdb1               8:17   0   1.8T  0 part /mnt/data2
sdc                  8:32   0   7.3T  0 disk
└─sdc1               8:33   0   7.3T  0 part /mnt/data3
nvme0n1            259:0    0 465.8G  0 disk
├─nvme0n1p1        259:1    0  1007K  0 part
├─nvme0n1p2        259:2    0     1G  0 part /boot/efi
└─nvme0n1p3        259:3    0 464.8G  0 part
  ├─pve-swap       252:0    0     8G  0 lvm  [SWAP]
  ├─pve-root       252:1    0    96G  0 lvm  /
  ├─pve-data_tmeta 252:2    0   3.4G  0 lvm
  │ └─pve-data     252:4    0 337.9G  0 lvm
  └─pve-data_tdata 252:3    0 337.9G  0 lvm
    └─pve-data     252:4    0 337.9G  0 lvm
root@pve:~#

root@pve:~# pveversion -v
proxmox-ve: 9.2.0 (running kernel: 7.0.6-2-pve)
pve-manager: 9.2.3 (running version: 9.2.3/d0fde103346cf89a)
proxmox-kernel-helper: 9.2.0
proxmox-kernel-7.0: 7.0.6-2
proxmox-kernel-7.0.6-2-pve-signed: 7.0.6-2
proxmox-kernel-6.17: 6.17.13-13
proxmox-kernel-6.17.13-13-pve-signed: 6.17.13-13
proxmox-kernel-6.17.13-1-pve-signed: 6.17.13-1
proxmox-kernel-6.14: 6.14.11-9
proxmox-kernel-6.14.11-9-pve-signed: 6.14.11-9
proxmox-kernel-6.14.8-2-pve-signed: 6.14.8-2
amd64-microcode: 3.20251202.1~bpo13+1
ceph-fuse: 19.2.3-pve1
corosync: 3.1.10-pve2
criu: 4.1.1-1
frr-pythontools: 10.6.1-1+pve2
ifupdown2: 3.3.0-1+pmx12
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-5
libproxmox-acme-perl: 1.7.1
libproxmox-backup-qemu0: 2.0.2
libproxmox-rs-perl: 0.4.1
libpve-access-control: 9.1.1
libpve-apiclient-perl: 3.4.2
libpve-cluster-api-perl: 9.1.6
libpve-cluster-perl: 9.1.6
libpve-common-perl: 9.1.13
libpve-guest-common-perl: 6.0.3
libpve-http-server-perl: 6.0.5
libpve-network-perl: 1.6.6
libpve-notify-perl: 9.1.6
libpve-rs-perl: 0.15.3
libpve-storage-perl: 9.1.5
libspice-server1: 0.15.2-1+b1
lvm2: 2.03.31-2+pmx1
lxc-pve: 7.0.0-2
lxcfs: 7.0.0-pve1
novnc-pve: 1.7.0-1
proxmox-backup-client: 4.2.1-1
proxmox-backup-file-restore: 4.2.1-1
proxmox-backup-restore-image: 1.0.0
proxmox-firewall: 1.2.3
proxmox-kernel-helper: 9.2.0
proxmox-mail-forward: 1.0.3
proxmox-mini-journalreader: 1.6
proxmox-offline-mirror-helper: 0.7.4
proxmox-widget-toolkit: 5.2.3
pve-cluster: 9.1.6
pve-container: 6.1.10
pve-docs: 9.2.2
pve-edk2-firmware: 4.2025.05-2
pve-esxi-import-tools: 1.0.1
pve-firewall: 6.0.4
pve-firmware: 3.18-4
pve-ha-manager: 5.2.4
pve-i18n: 3.7.5
pve-qemu-kvm: 11.0.0-4
pve-xtermjs: 6.0.0-1
qemu-server: 9.1.16
smartmontools: 7.5-pve2
spiceterm: 3.4.2
swtpm: 0.8.0+pve3
vncterm: 1.9.2
zfsutils-linux: 2.4.2-pve1



Für die neue 6-TB-Platte

Die würde ich nach dem Umbau komplett neu initialisieren.

Beispiel:

lsblk

Neue Platte identifizieren.

Partition anlegen:

fdisk /dev/sdX

Dateisystem erstellen:

mkfs.ext4 /dev/sdX1

UUID ermitteln:

blkid /dev/sdX1

Mountpunkt anlegen:

mkdir /mnt/data4

In die fstab aufnehmen:

UUID=<UUID> /mnt/data4 ext4 defaults 0 2
Reihenfolge des Umbaus

Ich würde es so machen:

Backup der Proxmox-Konfiguration
Server herunterfahren
B350 → B550 tauschen
neues Seasonic-Netzteil einbauen
RTX 3050 einbauen
alte 2-TB-Platten entfernen
neue 6-TB-Platte einbauen
starten
BIOS prüfen (SVM, IOMMU)
Proxmox booten
Netzwerk testen
NVIDIA-Treiber prüfen
neue Platte einrichten:
. Richtige Platte ermitteln
lsblk

Angenommen die neue Platte ist:

/dev/sdb
2. GPT-Partition anlegen
fdisk /dev/sdb

In fdisk:

g
n
Enter
Enter
Enter
w

Erklärung:

g = GPT-Partitionstabelle anlegen
n = neue Partition
Enter = Partitionsnummer 1
Enter = erster Sektor (Standard)
Enter = letzter Sektor (gesamte Platte)
w = speichern
3. Dateisystem erstellen
mkfs.ext4 /dev/sdb1
4. UUID ermitteln
blkid /dev/sdb1

Beispiel:

/dev/sdb1: UUID="b812fd0d-1b59-4cd0-b468-1f32412db8db" TYPE="ext4"
5. Mountpunkt anlegen
mkdir -p /mnt/data4
6. In fstab eintragen
nano /etc/fstab

Zeile ergänzen:
UUID=12345678-abcd-1234-efgh-123456789abc /mnt/data4 ext4 defaults 0 2

Natürlich die echte UUID verwenden.

7. Testen
mount -a
8. Prüfen
df -h

Du solltest dann etwas sehen wie:

/dev/sdb1    5.5T   ...   /mnt/data4

Proxmox VE GNU/Linux, with Linux 6.14.11-9-pve

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages