Das UGREEN AI NAS iDX6011 Pro ist wirklich ein Traum! Extrem viele Ressourcen, gute Erweiterbarkeit und jede Menge Schnittstellen. Aber das UGOS Pro lässt für mich aktuell noch ein paar Wünsche offen. Ich möchte beispielsweise eigene LLMs nutzen (wie Mistral) und diese auch von anderen Systemen aus im Netzwerk nutzen. Und ich möchte die Funktionalität von meinem bisherigen NAS beibehalten: Fotos und Videos anschauen, Daten zwischen mehreren Systemen synchronisieren und Backups für einzelne Verzeichnisse beispielsweise in Google Drive erstellen. Genauso muss aber auch eine Windows VM auf dem System laufen (für die ETS) oder auch meine Entwicklungsumgebung für den ioBroker und weitere Anwendungen. Auch eine Home Assistant VM soll dort produktiv eingebunden werden.
Video: Homelab neu aufgebaut: UGREEN NAS mit Proxmox als Basis#
Mein Wunsch-System#
- Proxmox als Host (installiert auf der internen 128 GB SSD)
- Windows 11 als VM (für die ETS oder Loxone Config)
- Home Assistant als VM + Apps (Add-Ons)
- evcc für Überschussladen
- Frigate zur Videoüberwachung
- ioBroker für alles was nicht in HA existiert
- Mosquitto (MQTT)
- zigbee2mqtt
- knxd Daemon
- Applikationen in LXC
- Immich für Fotos und Videos
- llama.cpp + OpenWeb UI + OpenVINO
- InfluxDB 2.x
- Syncthing für Daten-Sychronisation + rclone zu Cloud Backup (z. B. Google Drive)
- Paperless NGX
- Docker-Container für Grafana, Homer, …
Setup#
Mit Strg + F2 kommt man ins BIOS. Dort muss der Watchdog ausgeschaltet werden, da ansonsten das System regelmäßig neustarten würde, da das originale Betriebssystem nicht gefunden wird. Mit Strg + F12 kommt man danach ins Boot-Menu, um Beispielsweise von einem USB-Stick zu booten um Proxmox zu installieren.
Nachdem Proxmox installiert wurde, kann man sich auf der Weboberfläche über einen beliebigen Browser auf Port 8006 anmelden. Danach ist es ratsam, das Post Install Script der Proxmox Helper Scripts laufen zu lassen. Dieses findest Du hier. Damit werden die Enterprise-Repositories deaktiviert und die Community-Repositories hinzugefügt. Das könnte man auch alles manuell machen, aber so spart man etwas Zeit.
Den ZFS-Pool kann man ganz einfach über die Weboberfläche auf der Samsung 1TB NVMe anlegen. Wichtig ist, dass keine Partitionen mehr auf der Festplatte existieren. Ansonsten lässt sich die Festplatte nicht auswählen und der Pool kann nicht erstellt werden. Ich nenne diesen ganz kreativ nvme-pool. Über die Shell führe ich noch zwei Befehle aus:
zpool set autotrim=on nvme-pool
systemctl enable --now zfs-trim-weekly@nvme-pool.timer
3,5” HDDs hinzufügen#
Die Festplatteneinschübe habe ich vor dem Einsetzen mit der Seriennummer der eingebauten Platte gelabelt. So weiß ich genau, welche Festplatte in welcher Bay sitzt.
mkdir -p /mnt/snapraid/d1 /mnt/snapraid/d2 /mnt/snapraid/parity
lsblk -d -o NAME,SIZE,SERIAL,MODEL
mkfs.xfs -L snap-d1 /dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0182YYD
mkfs.xfs -L snap-d2 /dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0181L2D
mkfs.xfs -L snap-parity /dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B01818SD
nano /etc/fstab
Die Konfiguration für die entsprechenden Platten in die fstab einfügen:
LABEL=snap-d1 /mnt/snapraid/d1 xfs defaults,noatime,nofail 0 2
LABEL=snap-d2 /mnt/snapraid/d2 xfs defaults,noatime,nofail 0 2
LABEL=snap-parity /mnt/snapraid/parity xfs defaults,noatime,nofail 0 2
Danach sollten die Festplatten gefunden werden:
mount -a
df -h /mnt/snapraid/d1 /mnt/snapraid/d2 /mnt/snapraid/parity
Spindown konfigurieren#
Die Festplatten sollen nicht dauerhaft laufen. Am besten sogar so selten wie möglich. Daher möchte ich diese in Proxmox komplett ignorieren und einen Spindown konfigurieren. In der hdparam.conf kann ich den Spindown über die Seriennummer (by-id) für jede Festplatte festlegen:
nano /etc/hdparm.conf
/dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0182YYD {
spindown_time = 240
apm = 127
write_cache = on
}
/dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0181L2D {
spindown_time = 240
apm = 127
write_cache = on
}
/dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B01818SD {
spindown_time = 240
apm = 127
write_cache = on
}
nano /etc/lvm/lvm.conf
Und unter devices { ... folgendes einfügen:
global_filter = [
"r|/dev/zd.*|",
"r|/dev/rbd.*|",
"r|/dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0182YYD.*|",
"r|/dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0181L2D.*|",
"r|/dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B01818SD.*|"
]
Jetzt einen Neustart des Systems durchführen, damit wir nicht alle Dienste usw. manuell neustarten müssen.
Jetzt prüfen, ob die Platten in Standby wechseln. Am besten ~30 Minuten nichts machen und dann testen mit:
hdparm -C /dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0182YYD | tail -1
hdparm -C /dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B0181L2D | tail -1
hdparm -C /dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B01818SD | tail -1
Snapraid LXC#
Neuen Container auf Basis des debian-13-standard_13.1-2_amd64.tar.zst (oder neuer) Templates erstellen. Ich habe ID 100 gewählt.
- Privileged Container
- Nesting aktiv (in Options -> Features)
- Mountpoints in Config hinzufügen
nano /etc/pve/lxc/100.conf
Am Ende ergänzen:
mp0: /mnt/snapraid/d1,mp=/mnt/snapraid/d1
mp1: /mnt/snapraid/d2,mp=/mnt/snapraid/d2
mp2: /mnt/snapraid/parity,mp=/mnt/snapraid/parity
Dann den Container starten und im Container folgendes ausführen:
apt update
apt full-upgrade
apt install -y snapraid mailutils smartmontools curl git python3 python3-markdown jq bc rsync
mkdir -p /var/snapraid /var/log
nano /etc/snapraid.conf
Inhalt der Datei:
parity /mnt/snapraid/parity/snapraid.parity
content /var/snapraid/snapraid.content
content /mnt/snapraid/d1/.snapraid.content
content /mnt/snapraid/d2/.snapraid.content
data d1 /mnt/snapraid/d1
data d2 /mnt/snapraid/d2
exclude *.unrecoverable
exclude /lost+found/
exclude *.tmp
exclude /tmp/
exclude .snapraid.content*
exclude .Trashes
exclude .DS_Store
exclude ._*
autosave 500
blocksize 256
hashsize 16
Initialer sync (manuell): Dabei laufen die Festplatten wieder hoch.
snapraid sync
snapraid status
git clone https://github.com/auanasgheps/snapraid-aio-script.git /opt/snapraid-aio
nano /opt/snapraid-aio/script-config.conf
Ich habe die Felder für E-Mail Notifications leer gesetzt, da mein Container eh keine Mails verschicken darf (fehlende Konfiguration). Außerdem habe ich SMART_LOG=0 gesetzt, da der Container das nicht darf bzw. auflösen kann. SPINDOWN=1 hat aus dem gleichen Grund bei mir im Container nicht funktioniert. hd-idle braucht man also auch nicht im Container installieren.
Das Script kann noch deutlich mehr und man kann extrem viel konfigurieren. Es kann sich also lohnen, die Datei einmal komplett anzuschauen und die Dokumentation zu lesen.
chmod +x /opt/snapraid-aio/snapraid-aio-script.sh
nano /etc/cron.d/snapraid
Inhalt:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# Jede Nacht um 3 Uhr
0 3 * * * root /opt/snapraid-aio/snapraid-aio-script.sh >> /var/log/snapraid-aio.log 2>&1
Danach kann noch ein Testlauf gestartet werden:
/opt/snapraid-aio/snapraid-aio-script.sh
Zwischenstand#
Host
├── /mnt/snapraid/d1 (XFS, 12 TB, schläft)
├── /mnt/snapraid/d2 (XFS, 12 TB, schläft)
├── /mnt/snapraid/parity (XFS, 12 TB, schläft)
│
└── LXC 100 "snapraid" (autostart)
├── Bind-Mounts auf d1/d2/parity
├── snapraid + snapraid-aio-script
└── Cron mit sync um 3 Uhr
Immich für Fotos und Videos#
Um meine Fotos und Videos zu verwalten und anzuschauen, möchte ich Immich nutzen. Das ist mit einem Proxmox Helper Script relativ schnell installiert und konfiguriert. Über den “Advanced Mode” kann man sehr viel einstellen. Dank OpenVINO-Integration kann die Leistung des Systems perfekt genutzt werden, um die Gesichtserkennung usw. auf Fotos zu beschleunigen. Welche Einstellungen ich genau gewählt habe, ist im Video erklärt.
Nach der Einrichtung ist die Anwendung auf Port 2283 erreichbar. Danach werden per Mount Points die Festplatten für die großen Daten in der Konfigurationsdatei des Containers definiert. Parity hat dort nichts verloren! Nur die Daten-Festplatten!
nano /etc/pve/lxc/150.conf
Am Ende ergänzen:
mp0: /mnt/snapraid/d1,mp=/mnt/snapraid/d1
mp1: /mnt/snapraid/d2,mp=/mnt/snapraid/d2
Dann den Container starten und im Container folgende Anpassungen durchführen, um mergerFS zu installieren und die Festplatten zusammenzuführen:
apt update
apt install -y mergerfs
mkdir -p /mnt/storage
nano /etc/fstab
/mnt/snapraid/d1:/mnt/snapraid/d2 /mnt/storage fuse.mergerfs defaults,allow_other,use_ino,cache.files=partial,dropcacheonclose=true,category.create=mfs,minfreespace=50G,fsname=mergerfs 0 0
In meinem Fall sollte das ca. 22 TB ergeben:
mount -a
df -h /mnt/storage
# Gruppe für gemeinsamen Zugriff (auch von SMB-LXC später)
groupadd -g 1001 media
# immich-User in die Gruppe aufnehmen
usermod -aG media immich
# Photos-Verzeichnis
mkdir -p /mnt/storage/photos /mnt/storage/videos
chown immich:media /mnt/storage/photos /mnt/storage/videos
chmod 2775 /mnt/storage/photos /mnt/storage/videos
Danach die Verzeichnisse /mnt/storage/photos/ und /mnt/storage/videos/ als Externe Bibliothek in Immich anlegen. Mit einem periodischen Scan wird nach neuen Dateien geschaut, welche dann in die Datenbank geschrieben werden. Heißt: Thumbnails usw. landen auf der schnellen NVMe SSD und die großen Originaldateien auf den HDDs.
Der Vorteil ist, dass die Festplatten komplett ausgeschaltet bleiben. Auch, wenn nur die Vorschaubilder (Thumbnails) in Immich angezeigt werden. Die Festplatten laufen nur an, wenn neue Dateien gesucht werden (1x in der Nacht) oder wenn man eine große Ansicht eines Fotos oder Videos öffnet.
rsync -av \
--exclude='@eaDir' \
--exclude='@SynoEAStream' \
--exclude='@tmp' \
--exclude='#recycle' \
--exclude='.SynologyWorkingDirectory' \
--exclude='.DS_Store' \
--exclude='.mxc2' \
--exclude='.mxc3' \
--exclude='jpeggeri.dat' \
--exclude='*.lrdata' \
--exclude='*.lrcat-journal' \
--exclude='*.lrcat.lock' \
--exclude='*.lrtemplate' \
/volume1/photo/matthias/ root@172.16.0.12:/mnt/storage/photos/Matthias/
chown -R immich:media /mnt/storage/photos/
Lokale LLM mit Ollama (und OpenVINO)#
Ich hätte gerne Ollama (llama.cpp mit OpenVINO-Backend Support). Zusätzlich Open WebUI für die Verwaltung. Im April 2026 (Pull Request #15307) wurde OpenVINO offiziell als upstream-Backend in llama.cpp aufgenommen. Dafür müssen wir leider einige Schritte manuell durchführen, welche in der offiziellen Dokumentation auch beschrieben sind.
Man kann jetzt die gleichen GGUF-Modelle, die man eh schon kennt (von Hugging Face, Ollama-Format), direkt nutzen. Das OpenVINO-Backend übersetzt die GGML-Graphen on-the-fly in OpenVINO-Operationen und nutzt CPU/iGPU/NPU.
Dafür habe ich als erstes einen Container (wieder auf Basis von ubuntu-24.04) angelegt. 12 Cores, 32.768 MB RAM, 120 GB Festplatte, privilegiert und nesting nachträglich aktiviert. Leider sind alle Anleitungen noch für Ubuntu 24.04 Ubuntu 24.04 ist erst wenige Tage alt und daher gibt es noch keine Pakete.
nano /etc/pve/lxc/155.conf
Am Ende ergänzen:
# iGPU
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
# NPU
lxc.cgroup2.devices.allow: c 261:* rwm
lxc.mount.entry: /dev/accel dev/accel none bind,optional,create=dir
Container starten und im Container geht es weiter mit:
ls -la /dev/dri/
# Erwartet: card0, renderD128
ls -la /dev/accel/
# Erwartet: accel0
apt update
apt upgrade
apt install -y \
curl wget git gnupg \
build-essential cmake \
python3 python3-pip python3-venv \
libtbb12 libtbb-dev \
pciutils tmux htop \
intel-gpu-tools
Jetzt die Paketquellen für OpenVINO hinzufügen und installieren. Am besten auch die offizielle Dokumentation schauen.
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
gpg --output /etc/apt/trusted.gpg.d/intel.gpg --dearmor GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
echo "deb https://apt.repos.intel.com/openvino ubuntu24 main" | sudo tee /etc/apt/sources.list.d/intel-openvino.list
apt update
apt install -y openvino
Bei mir wurde OpenVINO 2026.1.0.21367 installiert.
Das gleiche für die Intel-Abhängigkeiten (iGPU und NPU). Entweder manuell aus diesem GitHub Repository. Am besten auch die offizielle Dokumentation schauen.
apt install -y software-properties-common
add-apt-repository -y ppa:kobuk-team/intel-graphics
apt install -y \
libze1 \
libze-intel-gpu1 \
intel-opencl-icd \
clinfo
Bei mir wurde 26.18.38308.1 installiert (Stand 05/2026).
Das Paket für die NPU muss man leider manuell von GitHub installieren:
wget https://github.com/intel/linux-npu-driver/releases/download/v1.32.1/linux-npu-driver-v1.32.1.20260422-24767473183-ubuntu2404.tar.gz
tar -xf linux-npu-driver-v1.32.1.20260422-24767473183-ubuntu2404.tar.gz
sudo apt update
sudo apt install ./intel-*.deb
# Prüfung ob alles da ist
clinfo -l
python3 -c "from openvino import Core; print(Core().available_devices)"
Dann alle Pakete für llama.cpp installieren, wie der Dokumentation beschrieben:
apt install -y \
build-essential \
cmake \
ninja-build \
git \
pkg-config \
libcurl4-openssl-dev \
libssl-dev \
libtbb12 \
python3-pip \
python3-venv \
tmux \
htop
apt install -y \
ocl-icd-opencl-dev \
opencl-headers \
opencl-clhpp-headers \
intel-opencl-icd
cd /opt
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# Workaround für TBB Lib https://github.com/ggml-org/llama.cpp/issues/21200
sed -i 's|include("${OpenVINO_DIR}/../3rdparty/tbb/lib/cmake/TBB/TBBConfig.cmake")|find_package(TBB REQUIRED)|' ggml/src/ggml-openvino/CMakeLists.txt
cmake -B build/ReleaseOV -G Ninja -DCMAKE_BUILD_TYPE=Release -DGGML_OPENVINO=ON
cmake --build build/ReleaseOV --parallel
ln -sf /opt/llama.cpp/build/ReleaseOV/bin/llama-server /usr/local/bin/llama-server
ln -sf /opt/llama.cpp/build/ReleaseOV/bin/llama-cli /usr/local/bin/llama-cli
ln -sf /opt/llama.cpp/build/ReleaseOV/bin/llama-bench /usr/local/bin/llama-bench
ln -sf /opt/llama.cpp/build/ReleaseOV/bin/llama-simple /usr/local/bin/llama-simple
Test mit einem einfachen 1B Modell Llama-3.2-1B-Instruct:
mkdir -p ~/models/
wget https://huggingface.co/unsloth/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q4_0.gguf \
-O ~/models/Llama-3.2-1B-Instruct-Q4_0.gguf
swapoff -a
export GGML_OPENVINO_DEVICE=GPU
export GGML_OPENVINO_STATEFUL_EXECUTION=1
llama-cli -m ~/models/Llama-3.2-1B-Instruct-Q4_0.gguf -c 1024
Größeres Modell (24B) Mistral-Small-3.2-24B-Instruct-2506-Q4_K_M.gguf:
wget https://huggingface.co/unsloth/Mistral-Small-3.2-24B-Instruct-2506-GGUF/resolve/main/Mistral-Small-3.2-24B-Instruct-2506-Q4_K_M.gguf \
-O ~/models/Mistral-Small-3.2-24B-Instruct-2506-Q4_K_M.gguf
swapoff -a
export GGML_OPENVINO_DEVICE=GPU
export GGML_OPENVINO_STATEFUL_EXECUTION=1
llama-cli -m ~/models/Mistral-Small-3.2-24B-Instruct-2506-Q4_K_M.gguf -c 32768
Das ist mit ca. 3,8 t/s leider etwas träge ! Für so große Modelle fehlt dem System wirklich Luft nach oben.
Also probiere ich es mit dem älteren 12B Mistral Nemo:
wget https://huggingface.co/bartowski/Mistral-Nemo-Instruct-2407-GGUF/resolve/main/Mistral-Nemo-Instruct-2407-Q4_K_M.gguf \
-O ~/models/Mistral-Nemo-Instruct-2407-Q4_K_M.gguf
swapoff -a
export GGML_OPENVINO_DEVICE=GPU
export GGML_OPENVINO_STATEFUL_EXECUTION=1
llama-cli -m ~/models/Mistral-Nemo-Instruct-2407-Q4_K_M.gguf -c 32768
Mit ca. 7,8 t/s kann man gut arbeiten. Gerade für Hintergrundaufgaben mit n8n oder anderen Lösungen, ist die Laufzeit nicht so wichtig. Das nutze ich als Server:
mkdir -p /var/lib/llamacpp/models
wget https://huggingface.co/bartowski/Meta-Llama-3.1-8B-Instruct-GGUF/resolve/main/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
-O /var/lib/llamacpp/models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf
chmod 644 /var/lib/llamacpp/models/*.gguf
mkdir -p /var/cache/openvino
nano /etc/systemd/system/llama.service
[Unit]
Description=llama.cpp server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
TimeoutStartSec=600
Environment="GGML_OPENVINO_DEVICE=GPU"
Environment="GGML_OPENVINO_STATEFUL_EXECUTION=1"
Environment="OV_CACHE_DIR=/var/cache/openvino"
ExecStart=/usr/local/bin/llama-server \
--model /var/lib/llamacpp/models/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
--host 0.0.0.0 \
--port 11435 \
--ctx-size 4096 \
--n-predict 4096 \
--parallel 1 \
--threads 4 \
--alias meta-llama-8b \
--jinja \
--reasoning off \
--no-warmup \
--metrics
Restart=on-failure
RestartSec=10
# Resource-Limits
MemoryHigh=28G
MemoryMax=32G
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=llama
User=root
SupplementaryGroups=video render
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now llama
systemctl status llama
journalctl -u llama -f
Jetzt kann Open Web UI installiert werden:
# Verzeichnis für die Installation
mkdir -p /opt/openwebui
cd /opt/openwebui
# Virtuelle Umgebung anlegen
python3 -m venv venv
source venv/bin/activate
# pip aktualisieren
pip install --upgrade pip wheel
pip install open-webui
deactivate
# Eigener Nutzer
mkdir -p /var/lib/openwebui
useradd -r -d /var/lib/openwebui -s /sbin/nologin openwebui
chown -R openwebui:openwebui /var/lib/openwebui
# venv für openwebui-User lesbar machen
chmod -R o+rX /opt/openwebui/venv
chown -R openwebui:openwebui /opt/openwebui/
nano /etc/systemd/system/openwebui.service
[Unit]
Description=Open WebUI
After=network-online.target llama.service
Wants=network-online.target
[Service]
Type=simple
User=openwebui
Group=openwebui
WorkingDirectory=/opt/openwebui
Environment="DATA_DIR=/var/lib/openwebui"
Environment="WEBUI_AUTH=true"
Environment="ENABLE_OLLAMA_API=false"
Environment="OPENAI_API_BASE_URL=http://localhost:11435/v1"
Environment="OPENAI_API_KEY=dummy"
Environment="WEBUI_NAME=NAS AI"
Environment="DEFAULT_MODELS=meta-llama-8b"
Environment="ENABLE_SIGNUP=true"
ExecStart=/opt/openwebui/venv/bin/open-webui serve --host 0.0.0.0 --port 8080
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=openwebui
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now openwebui
systemctl status openwebui
Generell läuft das Ganze aktuell noch sehr wackelig. Es gibt einige offene Issues zum OpenVINO Backend.
InfluxDB 2 (nicht im Video)#
Wie Du weißt, bin ich ein großer Fan von InfluxDB 2.x. Mittlerweile habe ich wirklich viele Daten gesammelt und möchte diese natürlich auch auf mein neues Proxmox-System migrieren. Dafür habe ich noch einen InfluxDB 2.x Container (LXC) auf Basis des debian-13-standard_13.1-2_amd64.tar.zst erstellt und die Anwendung nativ installiert:
apt install curl gpg net-tools
curl --silent --location -O https://repos.influxdata.com/influxdata-archive.key
gpg --show-keys --with-fingerprint --with-colons ./influxdata-archive.key 2>&1 \
| grep -q '^fpr:\+24C975CBA61A024EE1B631787C3D57159FC2F927:$' \
&& cat influxdata-archive.key \
| gpg --dearmor \
| tee /etc/apt/keyrings/influxdata-archive.gpg > /dev/null
tee /etc/apt/sources.list.d/influxdata.sources << 'EOF'
Types: deb
URIs: https://repos.influxdata.com/debian
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/influxdata-archive.gpg
EOF
apt update
apt install -y influxdb2
systemctl enable --now influxdb
influx backup --host "http://172.16.0.251:8086" --token "cIpimeNDzcZ2eJcdRec..." --org hausautomation --bucket smarthome ~/root/smarthome.bak
influx backup --host "http://172.16.0.251:8086" --token "cIpimeNDzcZ2eJcdRec..." --org hausautomation --bucket smarthome-history ~/root/smarthome-history.bak
influx restore --org hausautomation --bucket smarthome \
--token "39HG4ExXbfR6NSBdUMJ..." ~/root/smarthome.bak
influx restore --org hausautomation --bucket smarthome-history \
--token "39HG4ExXbfR6NSBdUMJ..." ~/root/smarthome-history.bak
rm -r smarthome.bak/
rm -r smarthome-history.bak/
Bonus: LEDs an der Front ansteuern#
Wenn kein UGOS Pro (sondern beispielsweise Proxmox) läuft, laufen die LEDs an der Front der Reihe nach durch. Das ist genau wie bei den anderen Modellen auch. Das Gerät hat 8 LEDs an der Front: LAN 1/2 und Disk 1/2/3/4/5/6. Auf GitHub gibt es ein spannendes Projekt, welche die Ansteuerung dieser LEDs erlaubt. Leider schon länger nicht mehr gepflegt und noch für Debian 12. Das Script funktioniert leider nicht direkt auf dem UGREEN AI NAS iDX6011 Pro. Aber dennoch eine gute Basis um das Konzept zu verstehen.
In die Konfiguration von meinem SnapRAID Container (ID 100) gebe ich noch die Rechte für I2C:
nano /etc/pve/lxc/100.conf
# cgroup2: erlaube Zugriff auf char-major 89 (I2C), rw, mknod
lxc.cgroup2.devices.allow: c 89:* rwm
lxc.mount.entry: /dev/i2c-0 dev/i2c-0 none bind,optional,create=file
Im Container:
apt install -y build-essential git i2c-tools
i2cdetect -y 0
git clone https://github.com/klein0r/ugreen_leds_controller.git
cd ugreen_leds_controller/cli
make
export UGREEN_MODEL=idx6011
./ugreen_leds_cli all -status
# Power LED blau
./ugreen_leds_cli power -color 0 0 255 -brightness 128 -on
# Disk 2,3,4 blinken (1200ms aus, 300ms an)
./ugreen_leds_cli disk2 -color 0 255 0 -breath 1200 300
./ugreen_leds_cli disk3 -color 0 255 0 -breath 1200 300
./ugreen_leds_cli disk4 -color 0 255 0 -breath 1200 300
Fazit#
Die Lösung mit dem großen AI NAS von UGREEN ist sicherlich nicht für jeden etwas. Die Konfiguration ist komplex und man braucht viel Wissen. Aber man lernt auf dem Weg auch viel! Und gerade das macht es für mich interessant. Ich freue mich jeden Tag, wenn ich mit dem System arbeiten kann oder darf. Aber ich habe noch einige offene Themen:
- Sync zwischen Verzeichnissen auf mehreren Geräten (Syncthing?)
- SMB Share um Videos usw. ganz einfach hochladen zu können
- Cloud-Zugriff (nutze erstmal nur VPN via Wireguard)
Und wer weiß, eventuell wechsle ich ja sogar irgendwann wieder auf UGOS Pro zurück, wenn die Entwicklung da etwas weiter ist.
Positiv#
- Extrem flexibel einsetzbare Hardware
- Alle Möglichkeiten mit Proxmox (VMs, Container)
- Keine Änderungen der Hardware möglich (nur Erweiterung)
Negativ#
- Komplexere Einrichtung - man muss deutlich mehr wissen
- Man muss die Hardware nehmen wie sie ist
- llama.cpp mit OpenVINO Backend hat noch ein paar Probleme
Weiterführende Links#
Häufige Fragen
Im BIOS (Strg + F2) den Watchdog deaktivieren, mit Strg + F12 vom USB-Stick booten und Proxmox auf der internen 128-GB-SSD installieren.
Über /etc/hdparm.conf (spindown_time je Platte per by-id) und einen global_filter in der lvm.conf, damit Proxmox die Platten ignoriert. Danach das System neu starten.
Mit SnapRAID in einem LXC-Container (Daten-Platten d1/d2 plus Parity) und nächtlichem Sync per Cron. Die Daten-Platten werden mit mergerfs zu einem Speicher zusammengeführt.
Ja, mit llama.cpp und OpenVINO-Backend (iGPU/NPU). Ein 8B-Modell läuft brauchbar (~7,8 t/s bei Nemo 12B), ein 24B-Modell ist mit ca. 3,8 t/s eher träge.
Für maximale Flexibilität: eigene LLMs (z. B. Mistral), VMs für ETS und Home Assistant, LXC für Immich, InfluxDB und mehr. Im Gegenzug trägt man mehr Eigenverantwortung für die Stabilität.
Immich wird mit einer externen Bibliothek genutzt: Thumbnails liegen auf der schnellen NVMe-SSD, die Originale auf den HDDs. Die Platten laufen nur beim nächtlichen Scan oder beim Öffnen großer Originale an.
Etwa 7,8 t/s bei Mistral Nemo (12B), aber nur rund 3,8 t/s bei Mistral Small (24B) – für sehr große Modelle fehlt dem System Luft.
Unter anderem eine Windows-11-VM (für die ETS), eine Home-Assistant-VM, ioBroker, Mosquitto, zigbee2mqtt sowie LXC-Container für Immich, InfluxDB 2.x, Paperless-NGX und Grafana.
Transparenz-Hinweis (Level 4: Bezahltes Video)
Bei diesem Beitrag handelt es sich um ein bezahltes Videos. Zusätzlich wurden mir eventuell Produkte kostenfrei zur Verfügung gestellt (beispielsweise als Leihgabe). In den meisten Fällen wurden die Inhalte nicht mit dem Auftraggeber abgestimmt. Es handelt sich in jedem Fall um meine persönliche Meinung! In extrem seltenen Fällen findet eine Abnahme der Inhalte durch den Auftraggeber statt, welcher damit falsche oder irreführende Aussagen vor Veröffentlichung verhindern möchte.
