Added manuals: spotify-downlader, zsh, cachyos with snapper, immich podman install, jellyfin podman install, nextcloud install.

This commit is contained in:
2026-07-14 18:51:51 +02:00
parent a80804a295
commit d51a9273d5
8 changed files with 579 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
# Installation von CachyOS mit Snapshot-Unterstützung
CachyOS bietet eine benutzerfreundliche Möglichkeit, Snapshots deines Systems zu erstellen und wiederherzustellen. Dies ist besonders nützlich, um dein System vor größeren Änderungen zu sichern oder um schnell zu einem funktionierenden Zustand zurückzukehren.
Wann immer du dein System aktualisierst oder wichtige Software installierst, wird automatisch ein Snapshot erstellt, um im Falle von Problemen das System auf einen früheren Zustand zurückzusetzen.
### Snapshot manuell erstellen
```bash
$: sudo snapper -c root create --description "[Bescheibung]"
```
### Liste aller verfügbaren Snapshots
```bash
$: sudo snapper list
```
Weitere Informationen zur Verwendung von CachyOS-Snapshots findest du in der offiziellen Dokumentation: [CachyOS Snapshots](https://docs.cachyos.org/snapshots/).
![Auswahl eines Snapshots in Limine](/linux/arch/img/cachyos-limine.png)
Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

+61
View File
@@ -0,0 +1,61 @@
# Spotify-Downloader Installation Guide
Diese Anleitung dient zur Installation und Einrichtung des Spotify-Downloaders auf einem Linux-System. Der Spotify-Downloader ermöglicht das Herunterladen von Musik für den persönlichen Gebrauch.
Spotify-Downloader nutzt der Spotify-API hierbei nur für die Metadaten (Titel, Album, Künstler, etc.) und lädt die Musik über YouTube herunter. Daher ist es notwendig, dass `ffmpeg` installiert ist, um die heruntergeladenen Dateien in das gewünschte Format zu konvertieren.
## 1. Paketübersicht
- `python3`: Die Programmiersprache Python, die für die Ausführung des Spotify-Downloaders erforderlich ist.
- `ffmpeg`: Ein Multimedia-Framework, das für die Verarbeitung von Audio- und Videodateien benötigt wird.
- `deno`: (optional) Ein modernes JavaScript/TypeScript-Laufzeitumgebung, die für bestimmte Funktionen des Spotify-Downloaders erforderlich ist.
- `pip`: Der Paketmanager für Python, der zur Installation von Python-Paketen verwendet wird.
- `pipx`: Ein Tool zum Installieren und Ausführen von Python-Anwendungen in isolierten Umgebungen.
- `spotdl`: Das Hauptpaket des Spotify-Downloaders, das die Funktionalität zum Herunterladen von Musik von Spotify bereitstellt.
## 2. System-Pakete installieren
Zuerst werden die benötigten Basis-Pakete über `pacman` installiert. Da CachyOS einiges bereits vorinstalliert hat, dient dies zur Absicherung.
```bash
sudo pacman -S python3 ffmpeg deno pip pipx
```
## 3. Pipx einrichten
Pipx ermöglicht die Installation von Python-Anwendungen in isolierten Umgebungen. Dies verhindert Konflikte zwischen verschiedenen Python-Paketen und erleichtert die Verwaltung von Anwendungen.
Zunächst teilen wir pipx mit, welcher Pfad für die installierten Anwendungen genutzt werden soll:
```bash
pipx ensurepath
```
## 4. Spotify-Downloader installieren
Nun installieren wir den Spotify-Downloader mit pipx:
```bash
pipx install spotdl
```
## 5. Spotify-Downloader verwenden
Nach der Installation kann der Spotify-Downloader über das Terminal verwendet werden. Um Musik von Spotify herunterzuladen, verwenden wir den folgenden Befehl:
```bash
spotdl <Spotify-URL>
```
*Hierbei die `<Spotify-URL>` durch die URL des gewünschten Spotify-Tracks, Albums oder Playlists ersetzen.*
## 6. Spotify-Downloader aktualisieren
Um den Spotify-Downloader auf die neueste Version zu aktualisieren, wird der folgende Befehl verwendet:
```bash
pipx upgrade spotdl
```
## 7. Troubleshooting
Falls Probleme bei der Installation oder Nutzung des Spotify-Downloaders auftreten, können die folgenden Schritte helfen:
### Explizites Angeben der Bitrate
```bash
spotdl --bitrate 192 <Spotify-URL>
```
+104
View File
@@ -0,0 +1,104 @@
# Zsh & KDE Plasma Setup Guide
Diese Anleitung dient zur schnellen Wiederherstellung eines personalisierten Terminal-Setups (Zsh, Powerlevel10k, Eza, Zsh-Autocomplete) auf einem frisch installierten Arch-basierten System.
## 1. Paketübersicht
- `zsh`: Eine erweiterte, POSIX-kompatible Shell mit starker Autovervollständigung und Plugin-Support.
- `fzf`: Ein extrem schneller, interaktiver Befehlszeilen-Finder für die Historie und Dateien.
- `eza`: Ein moderner, farbenfroher Ersatz für ls, der Datei-Icons und Git-Integration bietet.
- `git`: Das Standard-Versionsverwaltungstool für Softwareprojekte.
- `zsh-autocomplete`: Ein Plugin, das ein interaktives IDE-ähnliches IntelliSense-Menü während des Tippens bereitstellt.
- `powerlevel10k`: Ein hochgradig anpassbares und extrem performantes Theme für den Terminal-Prompt.
## 2. System-Pakete installieren
Zuerst werden die benötigten Basis-Pakete über `pacman` installiert. Da CachyOS einiges bereits vorinstalliert hat, dient dies zur Absicherung.
```bash
sudo pacman -S zsh fzf eza git
```
## 3. Standard-Shell auf Zsh wechseln
Damit das Terminal (Konsole) standardmäßig mit der Zsh startet, muss die Login-Shell geändert werden:
```bash
chsh -s /bin/zsh
```
*Hinweis: Danach einmal aus der KDE Plasma Sitzung abmelden und neu anmelden, damit die Änderung aktiv wird.*
## 4. Zsh-Autocomplete (IntelliSense) installieren
Wir installieren `zsh-autocomplete` für das automatische IDE-ähnliche Vervollständigungsmenü während des Tippens:
```bash
# Ordner für eigene Plugins erstellen und Repository klonen
mkdir -p ~/.zsh
git clone --depth 1 https://github.com/marlonrichert/zsh-autocomplete.git ~/.zsh/zsh-autocomplete
```
## 5. Powerlevel10k Prompt einrichten
Da die `.p10k.zsh` sehr umfangreich ist, wird das Prompt-Design (Icons, Style, Uhrzeit) am besten frisch über den interaktiven Wizard generiert:
```bash
p10k configure
```
## 6. Die Konfigurationsdatei (`~/.zshrc`)
Erstelle oder ersetze `~/.zshrc` mit folgendem Inhalt. Diese Version enthält spezifische Umgebungspfade (Cargo, LM Studio) und korrigierte eza-Aliase:
```bash
# --- Powerlevel10k Initialization ---
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
# --- CachyOS Base Config (falls vorhanden) ---
if [ -f /usr/share/cachyos-zsh-config/zshrc ]; then
source /usr/share/cachyos-zsh-config/zshrc
fi
# --- CachyOS Base Config ---
source /usr/share/cachyos-zsh-config/cachyos-config.zsh
# --- Umgebungsvariablen & Pfade ---
. "$HOME/.cargo/env"
export PATH="$PATH:/home/ghost/.lmstudio/bin"
# --- Powerlevel10k Theme laden ---
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
# --- Plugins laden ---
source ~/.zsh/zsh-autocomplete/zsh-autocomplete.plugin.zsh
# Kollidierende CachyOS-Autosuggestions explizit deaktivieren
unset ZSH_AUTOSUGGEST_STRATEGY
# --- Key-Bindings für KDE Konsole (Pos1 / Ende) ---
bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
# --- Moderne Aliase (eza statt ls) ---
alias ls='eza --icons=always --group-directories-first'
alias ll='eza -lah --icons=always --group-directories-first --git'
alias lt='eza --tree --level=2 --icons=always'
# --- Eigene Komfort-Aliase ---
alias update='sudo pacman -Syu'
alias g='git'
```
## 7. KDE Konsole & "Rice" Profileinstellungen
Um die Optik perfekt auf den Plasma Desktop abzustimmen, wird ein eigenes Konsole-Profil genutzt:
1. Neues Profil erstellen: Öffne `Konsole -> Einstellungen -> Profile verwalten... -> Neues Profil...` (als Standard setzen).
2. Schriftart: Unter Erscheinungsbild sicherstellen, dass die Schriftart auf `Hack 10pt` steht (unterstützt standardmäßig alle benötigten Nerd Font Symbole).
3. Farbschema & Transparenz:
- Im Reiter Erscheinungsbild das Farbschema `Catppuccin Mocha` (oder Macchiato) herunterladen und auswählen.
- Auf Bearbeiten... des Farbschemas klicken und die Hintergrundfarbe auf eine Transparenz von 10% einstellen.
## 7. Setup anwenden
Nachdem alle Schritte abgeschlossen sind, kann die Konfiguration im Terminal direkt live angewendet werden:
```bash
exec zsh
```
+181
View File
@@ -0,0 +1,181 @@
# Dokumentation: Immich Setup auf CachyOS (LXC) mit Podman Quadlets
**Status:** Initiales Setup abgeschlossen, Web-Interface erreichbar.
**Datum:** 24. Mai 2026
**Besonderheit:** Nutzung der Intel Arc A310 für Hardware-Transcoding und KI (OpenVINO), sowie VectorChord als High-Performance Vektorsuche.
---
## 1. Verzeichnisstruktur & Berechtigungen
Die Daten liegen persistent auf einem gemounteten ZFS-Pool (oder Host-Mount) unter `/mnt/immich-data`.
```bash
# Verzeichnisse anlegen
mkdir -p /mnt/immich-data/{upload,database,redis,cache}
# Rechte setzen (LXC-Root entspricht Host-User je nach ID-Mapping)
chown -R root:root /mnt/immich-data
chmod -R 755 /mnt/immich-data
```
---
## 2. Netzwerk-Konfiguration
Ein dediziertes Podman-Netzwerk für die interne Kommunikation der Container.
**Datei:** `/etc/containers/systemd/immich-net.network`
```ini
[Network]
NetworkName=immich-net
```
---
## 3. Datenbank (PostgreSQL + VectorChord)
Einsatz des modernsten Vektor-Index-Algorithmus für die Bildsuche.
**Datei:** `/etc/containers/systemd/immich-db.container`
```ini
[Container]
ContainerName=immich-db
Image=docker.io/tensorchord/vchord-postgres:pg16-v1.1.1
Environment=POSTGRES_USER=postgres
Environment=POSTGRES_PASSWORD=[Dein_Passwort]
Environment=POSTGRES_DB=immich
Volume=/mnt/immich-data/database:/var/lib/postgresql/data:Z
Network=immich-net
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
```
---
## 4. Redis (Cache)
**Datei:** `/etc/containers/systemd/immich-redis.container`
```ini
[Container]
ContainerName=immich-redis
Image=docker.io/library/redis:7-alpine
Volume=/mnt/immich-data/redis:/data:Z
Network=immich-net
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
```
---
## 5. Machine Learning (OpenVINO + Intel GPU)
Optimiert für die Intel Arc A310 GPU zur Gesichtserkennung und Objekterkennung.
**Datei:** `/etc/containers/systemd/immich-ml.container`
```ini
[Container]
ContainerName=immich-ml
Image=ghcr.io/immich-app/immich-machine-learning:release-openvino
Volume=/mnt/immich-data/cache:/cache:Z
Network=immich-net
# GPU-Passthrough
AddDevice=/dev/dri/card0:/dev/dri/card0
AddDevice=/dev/dri/renderD128:/dev/dri/renderD128
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
```
---
## 6. Immich Server (Hauptapplikation)
Hardware-Transcoding aktiviert; OIDC aktuell noch deaktiviert für Ersteinrichtung.
**Datei:** `/etc/containers/systemd/immich-server.container`
```ini
[Container]
ContainerName=immich-server
Image=ghcr.io/immich-app/immich-server:release
Volume=/mnt/immich-data/upload:/usr/src/app/upload:Z
Network=immich-net
PublishPort=2283:2283
# GPU-Passthrough für Video-Transcoding
AddDevice=/dev/dri/card0:/dev/dri/card0
AddDevice=/dev/dri/renderD128:/dev/dri/renderD128
# Umgebungsvariablen
Environment=DB_HOSTNAME=immich-db
Environment=DB_USERNAME=postgres
Environment=DB_PASSWORD=[Dein_Passwort]
Environment=DB_DATABASE_NAME=immich
Environment=REDIS_HOSTNAME=immich-redis
Environment=IMMICH_MACHINE_LEARNING_URL=http://immich-ml:3003
# OIDC Vorbereitung (aktuell deaktiviert)
Environment=IMMICH_OIDC_ENABLED=false
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
```
---
## 7. Management & Monitoring
Portainer Agent zur Überwachung der Container-Struktur.
**Datei:** `/etc/containers/systemd/portainer-agent.container`
```ini
[Container]
ContainerName=portainer_agent
Image=docker.io/portainer/agent:latest
PublishPort=9001:9001
Volume=/run/podman/podman.sock:/var/run/docker.sock
Volume=/var/lib/containers/storage/volumes:/var/lib/docker/volumes
[Service]
Restart=always
[Install]
WantedBy=multi-user.target
```
---
## 8. Befehle zur Verwaltung
* **Neu einlesen:** `systemctl daemon-reload`
* **Starten:** `systemctl start immich-server portainer-agent`
* **Status prüfen:** `podman ps`
* **Logs einsehen:** `podman logs -f immich-server`
+115
View File
@@ -0,0 +1,115 @@
Ja, absolut! Da wir jetzt wissen, dass dein System auf **Podman 5.4.2** läuft und wir den Rechte-Check erfolgreich über **ACLs** (statt komplexer ID-Mappings) gelöst haben, sollten wir die Anleitung präzisieren.
Besonders der Wechsel von `Device` zu `AddDevice` und die Integration des Plugin-Ordners sind entscheidend für die Langzeitstabilität.
Hier ist die aktualisierte und finalisierte **`Jellyfin_Podman_Install.md`**:
---
# Jellyfin Installation mit Podman Quadlets & Intel Arc (A310)
Diese Dokumentation beschreibt das finale, validierte Setup für Jellyfin in einem unprivilegierten Proxmox LXC (ID 305) mit Intel Arc Hardware-Beschleunigung.
## 1. Host-Konfiguration (Proxmox PVE)
### GPU-Zugriff via ACL (Access Control Lists)
Da der LXC unprivilegiert ist, vergeben wir die Rechte direkt auf dem Host an die UID `100000` (der Root-User im Container).
```bash
# Auf dem Proxmox-Host ausführen:
apt-get update && apt-get install -y acl
setfacl -m u:100000:rw /dev/dri/card0
setfacl -m u:100000:rw /dev/dri/renderD128
```
*Hinweis: Diese Einstellungen gehen nach einem Host-Reboot verloren, sofern sie nicht über eine udev-Regel oder ein Startskript persistent gemacht werden.*
### LXC-Konfigurationsdatei (`/etc/pve/lxc/305.conf`)
Stelle sicher, dass diese Zeilen enthalten sind (keine manuellen `idmaps` nötig!):
```text
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.hook.pre-start: sh -c "chown 0:104 /dev/dri/renderD128"
```
---
## 2. Container-Setup (LXC)
### Verzeichnisstruktur
```bash
mkdir -p /opt/jellyfin/config /opt/jellyfin/cache /opt/jellyfin/plugins
```
### Das Quadlet-File (`/etc/containers/systemd/jellyfin.container`)
Wichtig für Podman 5.x: Verwende `AddDevice` statt `Device`.
```ini
[Unit]
Description=Jellyfin Media Server (Intel Arc A310)
After=network-online.target
[Container]
Image=docker.io/jellyfin/jellyfin:latest
ContainerName=jellyfin-app
Environment=TZ=Europe/Berlin
# Hardware Acceleration via oneVPL/QSV
AddDevice=/dev/dri/card0:/dev/dri/card0
AddDevice=/dev/dri/renderD128:/dev/dri/renderD128
# Mounts
Volume=/opt/jellyfin/config:/config:Z
Volume=/opt/jellyfin/cache:/cache:Z
Volume=/opt/jellyfin/plugins:/plugins:Z
Volume=/media/daten1:/media/daten1:ro,Z
Volume=/media/daten2:/media/daten2:ro,Z
Volume=/media/daten3:/media/daten3:ro,Z
Volume=/media/datenhdd3:/media/datenhdd3:ro,Z
PublishPort=8096:8096
[Service]
Restart=always
```
### Deployment
```bash
systemctl daemon-reload
systemctl enable --now jellyfin
```
---
## 3. Hardware-Beschleunigung aktivieren
In der Jellyfin Web-UI (`10.0.0.111:8096`) unter **Dashboard -> Playback**:
1. **Hardware-Beschleunigung:** `Intel QuickSync (QSV)`
2. **Hardware-Kodierung:** Aktivieren (inkl. AV1!)
3. **Intel Low-Power-H.264-Hardware-Encoder:** Aktivieren
4. **Intel Low-Power-HEVC-Hardware-Encoder:** Aktivieren
5. **VPP Tone Mapping:** Aktivieren (für HDR-Inhalte)
---
## 4. Sicherheit: MFA / AAL2
Da native Jellyfin-Apps kein standardmäßiges TOTP unterstützen, nutzen wir das Plugin **JellyfinSecurity**.
1. **Repository-URL:** `https://raw.githubusercontent.com/ZL154/JellyfinSecurity/master/manifest.json`
2. **Installation:** Plugin installieren & Container neu starten (`systemctl restart jellyfin`).
3. **Konfiguration:** TOTP unter Plugin-Einstellungen für gewünschte User aktivieren.
+92
View File
@@ -0,0 +1,92 @@
Hier ist die zusammengefasste Dokumentation für dein Setup. Diese Datei kannst du dir als Backup oder Spickzettel abspeichern.
---
# Nextcloud OIDC Installation & Keycloak Setup
Diese Anleitung dokumentiert die erfolgreiche Konfiguration von Nextcloud (im Podman-Container) mit Keycloak als Identitätsanbieter (SSO) auf einem N100-System unter Proxmox.
## 1. Keycloak Konfiguration
In der Keycloak-Admin-Konsole wurde ein Client für Nextcloud erstellt.
* **Client-ID:** `nextcloud`
* **Root-URL:** `[https://nextcloud.ghostnet.selfhost.eu](https://nextcloud.ghostnet.selfhost.eu)`
* **Valid Redirect URIs:**
* `[https://nextcloud.ghostnet.selfhost.eu/apps/user_oidc/code](https://nextcloud.ghostnet.selfhost.eu/apps/user_oidc/code)`
* `[https://nextcloud.ghostnet.selfhost.eu/index.php/apps/user_oidc/code](https://nextcloud.ghostnet.selfhost.eu/index.php/apps/user_oidc/code)`
* **Backchannel Logout URL:** `[https://nextcloud.ghostnet.selfhost.eu/apps/user_oidc/backchannel-logout/](https://nextcloud.ghostnet.selfhost.eu/apps/user_oidc/backchannel-logout/)`
---
## 2. Nextcloud OIDC App Einstellungen
Innerhalb von Nextcloud wurde die App **"OpenID Connect" (`user_oidc`)** installiert und wie folgt konfiguriert:
* **Identifier:** `Keycloak`
* **Discovery Endpoint:** `[https://auth.ghostnet.selfhost.eu/realms/Ghost.net/.well-known/openid-configuration](https://auth.ghostnet.selfhost.eu/realms/Ghost.net/.well-known/openid-configuration)`
* **User-ID Mapping:** `preferred_username`
* **Display Name Mapping:** `name`
* **Email Mapping:** `email`
---
## 3. Erzwingen des Keycloak-Logins (CLI)
Um das Standard-Login-Formular zu deaktivieren und eine automatische Weiterleitung zu Keycloak zu erzwingen, wurden folgende Befehle im Nextcloud-LXC ausgeführt:
```bash
# 1. Den automatischen Redirect aktivieren
podman exec -u www-data nextcloud-app php occ config:app:set user_oidc auto_redirect --value="1"
# 2. Den Standard-Login ausblenden
podman exec -u www-data nextcloud-app php occ config:app:set user_oidc hide_default_login --value="1"
# 3. Den primären OIDC-Provider festlegen
podman exec -u www-data nextcloud-app php occ config:app:set user_oidc setup_provider --value="Keycloak"
# 4. Mehrere Backends deaktivieren (Zwingt zum Redirect)
podman exec -u www-data nextcloud-app php occ config:app:set user_oidc allow_multiple_user_backends --value="0"
# 5. Container neu starten, um Cache zu leeren
podman restart nextcloud-app
```
---
## 4. Sicherheits-Einstellungen (config.php)
Um sicherzustellen, dass Nextcloud den Login-Prozess nicht unterbricht, wurde folgender Parameter in der `config/config.php` gesetzt:
```php
'allow_user_to_login_with_apps' => false,
```
*(Diesen Wert haben wir via OCC-Befehl gesetzt: `podman exec -u www-data nextcloud-app php occ config:system:set allow_user_to_login_with_apps --value=false --type=bool`)*
---
## 5. Notfall-Login (Bypass)
Sollte Keycloak nicht erreichbar sein oder die OIDC-Konfiguration Probleme bereiten, kann der Standard-Login (lokaler Admin) jederzeit über folgende URL erzwungen werden:
**URL:** `[https://nextcloud.ghostnet.selfhost.eu/login?direct=1](https://nextcloud.ghostnet.selfhost.eu/login?direct=1)`
---
## 6. Wartung & Fehlerbehebung
Falls Änderungen an den Providern vorgenommen werden müssen, kann die aktuelle Konfiguration wie folgt ausgelesen werden:
* **Provider-Liste anzeigen:**
`podman exec -u www-data nextcloud-app php occ user_oidc:providers`
* **App-Konfiguration prüfen:**
`podman exec -u www-data nextcloud-app php occ config:app:get user_oidc`
---
**Status:** ✅ Läuft produktiv auf Proxmox/Podman.