- Shell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| Scripts | ||
| Anleitung für Root-CA erstellen.md | ||
| Heimdall_anpassen.txt | ||
| installer.sh | ||
| LICENSE | ||
| nginx Proxy für HTTPS im LAN.md | ||
| proxmox-vsock-error.md | ||
| README.md | ||
Medienserver
Home-Server (OMV-NAS) mit Erweiterungen.
Installiert viele Erweiterungen.
Vorbereitungen:
Folgende Ordner müssen in OpenMediaVault angelegt werden:
Die ganze Installation wurde bereits auf die neuen Quadlets umgebaut.
Vorbereitung:
-
Openmediavault installieren
-
omv-extras installieren:
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
-
PlugIn "openmediavault-symlinks" installieren
-
Daten-Laufwerk einbinden und einrichten
-
Daten-Laufwerk (/srv/dev-disk-by-uuid-) via SymLinks auf einen sauberen Pfad wie /srv/Disk (oder /srv/Disk01) verlinken
-
Benutzer und lokale NAS-Freigaben für genutzte Laufwerke anlegen:
-> Als Freigaben anlegen
Import
Fotos
Medien
Downloads
... weitere gewünschte Ordner
-> nur via OMV anlegen, NICHT freigeben
AppData
nextCloud
Paperless
AgentDVR #sofern genutzt -
Script herunteladen, bearbeiten und ausführen
apt update && apt install git dos2unix -y
git clone http://192.168.1.100:6080/johannes/Medienserver.git
#git clone -b <branchName> http://192.168.1.100:6080/johannes/Medienserver.git
cd Medienserver
chmod +x installer.sh
dos2unix installer.sh
echo "Pfade und Settings anpassen und mit ./installer.sh die Installation starten"
Wichtiger Hinweis: Passwort-Manager ("Passbolt" und "NextCloud Passwords") benötige eine HTTPS-Verbindung. Da Chrome bzw. die Smartphone-Apps mit selbst signierten Zertifikaten den Dienst verweigern, muss eine Root-CA eingerichtet werden!
Ergänzung:
Aktuell ist das Server-Install-Script darauf aufgebaut, dass als "Unterbau" OpenMediaVault verwendet wird.
Die Pods werden dort als Benutzer "root" gestartet, was im nicht-öffentlichen Heimnetz kein unmittelbares Sicherheitsrisiko darstellt.
Will man allerdings das ganze öffentlich betreiben, empfiehlt es sich, die Pods als "Benutzer mit eingeschränkten Berechtigungen" auszuführen.
Dafür sind aber Änderungen am Installer-Script notwendig.
Im Wesentlichen muss folgendes angepasst werden:
- Benutzer anlegen
- "Linger" für den Benutzer aktivieren (sonst werden die Prozesse beendet wenn sich der Benutzer abmeldet)
- Pfade & Verzeichnisrechte anpassen
- Ports unter Nr. 1024 für Benutzer freigeben (wegen Heimdall/nginx)
- Steuerbefehle sind anders und müssen angepasst werden
zu 1) Rootless Podman verwendet sogenannte Sub-UIDs und Sub-GIDs, um innerhalb des Containers Unter-Benutzer (wie www-data oder nginx) abbilden zu können, ohne Root-Rechte auf dem Host zu benötigen.
# Benutzer anlegen (falls nicht vorhanden), "appuser" nur als Beispiel - beliebiger Name möglich.
useradd -m -s /bin/bash appuser
# Prüfen, ob Einträge in /etc/subuid und /etc/subgid existieren:
grep appuser /etc/subuid
grep appuser /etc/subgid
# Sollte etwas ausgeben wie: appuser:100000:65536
zu 2) Linger aktivieren (Extrem wichtig für Server!):
Standardmäßig beendet systemd alle Prozesse und Quadlets eines Benutzers, sobald dieser sich abmeldet. Damit die Pods als Dienst dauerhaft im Hintergrund laufen, muss "Linger" für den User aktiviert werden:
loginctl enable-linger appuser
zu 3) Ein unprivilegierter Benutzer kann nicht nach /etc/containers/... oder /srv/Disk/... schreiben, wenn die Rechte dort auf root stehen.
- Quadlet-Ordner des Benutzers:
Statt /etc/containers/systemd/ liegen die Quadlet-Dateien beim Rootless-Betrieb im Home-Verzeichnis des Benutzers:
~/.config/containers/systemd/ bzw. /home/appuser/.config/containers/systemd/ - AppData-Pfade:
Entweder wählst du einen Pfad im Home-Verzeichnis des Benutzers (z. B. /home/appuser/appdata/baikal) oder gibst dem Benutzer explizit die Rechte an deinem /srv/Disk/AppData/-Ordner:
mkdir -p /srv/Disk/AppData/<service> chown -R appuser:appuser /srv/Disk/AppData/<service>
zu 4) Aus Sicherheitsgründen dürfen normale Linux-Benutzer standardmäßig keine Ports unterhalb von 1024 anbinden. Wenn dein Baikal-Pod direkt auf Port 80 oder 443 lauschen soll, musst du das System-Limit herabsetzen - der Installer macht dies bereits "ab Standard":
echo "net.ipv4.ip_unprivileged_port_start=80" > /etc/sysctl.d/99-rootless-ports.conf
sysctl --system
zu 5) Unterschiede im Ablauf:
| Thema | Root (OpenMediaVault) | Rootless (Debian 13) |
|---|---|---|
| Quadlet-Pfad | /etc/containers/systemd/ |
~/.config/containers/systemd/ |
| systemd Reload | systemctl daemon-reload |
systemctl --user daemon-reload |
| Service Start | systemctl start container-<servicename>.service |
systemctl --user start container-<servicename>.service |
Volume Security (:Z) |
Optional | Erforderlich (SELinux/AppArmor-Rechte) |
Der Installer sowie die jeweiligen Install-Scripte sind NICHT darauf angepasst - ich habe es auch nicht explizit damit getestet.