Homelab neu aufgebaut: UGREEN NAS mit Proxmox als Basis

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliate-Links.

Suchergebnisse

Homelab neu aufgebaut: UGREEN NAS mit Proxmox als Basis
Homelab neu aufgebaut: UGREEN NAS mit Proxmox als Basis
  • 21.05.2026
  • Level 4
  • NAS
  • Datenbanken

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.

Info: UGREEN empfiehlt die Nutzung von UGOS Pro. Dort sind für die kommenden Monate viele Neuerungen geplant und es kommen viele neue Features hinzu! Mit dem Wechsel des Betriebssystems übernimmt man deutlich mehr Verantwortung für die Stabilität des Systems und muss sich um alles selbst kümmern.

Video: Homelab neu aufgebaut: UGREEN NAS mit Proxmox als Basis#

Home-Assistant-Master-Kurs

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)
  • 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
Info: Im Video habe ich category.create auf epmfs (existing path, most free space) statt mfs (most free space) gestellt. Das hat dafür gesorgt, dass fast alle Daten auf der gleichen Festplatte gelandet sind (weil der Pfad ja schon existiert hat).

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

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.

» Mehr erfahren

Du willst mehr?

Smart-Home-Trainings von A-Z

Steig' noch tiefer in die Themen ein und meistere Deine Projekte! Über 17.000 Teilnehmer konnten sich schon von der Qualität der Online-Kurse überzeugen.

Abonniere jetzt den Newsletter für
spannende Neuigkeiten! interessante Angebote! neue Kurs-Inhalte!
* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir unregelmäßig Informationen und Produktempfehlungen aus dem Themengebiet »Smart Home« zugesendet werden. Mit dem Eintrag akzeptiere ich die Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.