Doku: 15 Troubleshooting-Leichen raus, SAVEPOINT v3.0 + ROADMAP Etappe 11
Ampel / ampel (push) Failing after 29s
Ampel / ampel (push) Failing after 29s
ARCAN-*.md, Setup-/Fix-Skripte (u.a. install-rippy.sh fuer ein nie existentes "LXC 106"), proxmox-add-drive.sh (scsi-Passthrough war der falsche Weg — richtig ist USB-Passthrough per Vendor-ID, siehe SAVEPOINT) und die udev-Rules (referenzierten ein nie gebautes udev_daemon.py). SAVEPOINT dokumentiert Kernumbau + Hardware-Kette + Firmware-Befund (BU40N 1.05 kann kein UHD — Crossflash 1.03-MK ist der dokumentierte Weg). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,31 +0,0 @@
|
|||||||
# Arcane Git Sync Fix
|
|
||||||
|
|
||||||
## Problem
|
|
||||||
|
|
||||||
Arcane GitOps sync schlägt fehl mit "Failed to perform GitOps sync" + "agent event ingestion is not configured" (Bug #2978).
|
|
||||||
|
|
||||||
## Lösung 1: Workaround in Arcane (empfohlen)
|
|
||||||
|
|
||||||
1. **Git Repository hinzufügen** (ohne "Sync sibling files")
|
|
||||||
2. **Manuellen Sync starten** → wird erfolgreich sein
|
|
||||||
3. **Deployen** über Arcane UI
|
|
||||||
4. **"Sync sibling files" aktivieren** nach erstem Deployment
|
|
||||||
|
|
||||||
## Lösung 2: Direkt auf LXC 106 per Docker Compose
|
|
||||||
|
|
||||||
Ich erstelle ein Skript für dich:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Auf LXC 106 ausführen:
|
|
||||||
cd /opt/docker/rippy
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
Ich bereite das Skript vor:
|
|
||||||
|
|
||||||
## Status (21.07.2026)
|
|
||||||
|
|
||||||
- ✅ Doppelte Arcane-Einträge behoben (`rippy` statt `Rippy`)
|
|
||||||
- ✅ Git Sync in Arcane konfiguriert
|
|
||||||
- ✅ DB-Update mit korrekter `project_id` und `project_name`
|
|
||||||
- ✅ Commit `43dfce5` — Dark Mode Implementation
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
# Arcane-Integration für Rippy
|
|
||||||
|
|
||||||
## Vorbereitung
|
|
||||||
|
|
||||||
Damit Rippy in Arcane (auf LXC 106) importiert werden kann, benötige ich Zugriff auf:
|
|
||||||
|
|
||||||
1. **Das Arcane Projects Directory** auf LXC 106
|
|
||||||
- Standard: `/app/data/projects` (im Arcane-Container)
|
|
||||||
- Oder ein hostseitiges Verzeichnis, das du dafür vorgesehen hast
|
|
||||||
|
|
||||||
2. **Zugangsmethode** (bitte eine wählen):
|
|
||||||
- **Option A (empfohlen):** SSH-Zugang zu LXC 106 → ich kopiere die Dateien per `scp`
|
|
||||||
- **Option B:** Git-Repo sync → ich pushe nach einem privaten Repo, du syncst in Arcane
|
|
||||||
- **Option C:** Datei-Upload per Arcane WebUI → ich erstelle ein Zip mit allen Dateien
|
|
||||||
|
|
||||||
3. **Deine Wunsch-Pfad** im Arcane Projects Directory
|
|
||||||
- Z.B. `/app/data/projects/rippy` oder `/opt/docker/rippy`
|
|
||||||
|
|
||||||
## Empfehlung
|
|
||||||
|
|
||||||
Ich schlage **Option A (SSH)** vor:
|
|
||||||
- Du gibst mir SSH-Zugang zu LXC 106 (IP + Port + Zugangsdaten)
|
|
||||||
- Ich kopiere die Dateien direkt an den richtigen Ort
|
|
||||||
- Du brauchst Arcane nur zu neustarten, damit es die neuen Dateien findet
|
|
||||||
|
|
||||||
**Oder** — wenn du willst, dass ich es über Git mache:
|
|
||||||
- Du erstellst ein privates Repo (z.B. auf git.tobisniceshomelab.ddnsfree.com)
|
|
||||||
- Ich pushe die Rippy-Dateien dorthin
|
|
||||||
- Du syncst in Arcane über "Add Git Repository"
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Was möchtest du?**
|
|
||||||
1. SSH-Zugang → ich mache den Kopierscript
|
|
||||||
2. Git sync → ich pushe zu deinem Repo
|
|
||||||
3. Arcane WebUI → ich erstelle ein Zip-Package
|
|
||||||
|
|
||||||
Und: **Wo genau** sollen die Dateien auf LXC 106 hin? (Pfad angeben)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Status (21.07.2026)
|
|
||||||
|
|
||||||
- ✅ Git Sync in Arcane konfiguriert
|
|
||||||
- ✅ Rippy läuft über Arcane auf VM 192.168.178.162
|
|
||||||
- ✅ Dark Mode implementiert
|
|
||||||
- ✅ Einstellungen mit Tab-Struktur
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# Arcane Projects Directory Konfiguration
|
|
||||||
|
|
||||||
## Problem
|
|
||||||
Arcane versucht, Project-Verzeichnisse in `/etc/arcane/projects/` zu erstellen (falscher Default).
|
|
||||||
|
|
||||||
## Lösung
|
|
||||||
|
|
||||||
### Methode 1: Arcane UI (empfohlen)
|
|
||||||
|
|
||||||
1. Öffne Arcane WebUI (http://localhost:3552)
|
|
||||||
2. Gehe zu **Settings** → **General**
|
|
||||||
3. Suche nach **Projects Directory**
|
|
||||||
4. Ändere zu: `/app/data/projects`
|
|
||||||
5. Klicke **Save**
|
|
||||||
|
|
||||||
### Methode 2: Docker Compose (wenn Arcane neu gestartet wird)
|
|
||||||
|
|
||||||
Die Arcane Docker Compose Datei auf LXC 106 muss erweitert werden:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
arcane:
|
|
||||||
environment:
|
|
||||||
- PROJECTS_DIRECTORY=/app/data/projects
|
|
||||||
volumes:
|
|
||||||
- arcane-data:/app/data
|
|
||||||
# Optional: Host-Verzeichnis mounten für persistente Projects
|
|
||||||
- /opt/docker/projects:/app/data/projects
|
|
||||||
```
|
|
||||||
|
|
||||||
### Methode 3: Direkt im Container (temporär)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Auf LXC 106:
|
|
||||||
docker exec -it arcane sh
|
|
||||||
# Im Container:
|
|
||||||
mkdir -p /app/data/projects
|
|
||||||
chown 65532:65532 /app/data/projects
|
|
||||||
```
|
|
||||||
|
|
||||||
## Nach der Konfiguration
|
|
||||||
|
|
||||||
1. Projects Directory ist now `/app/data/projects`
|
|
||||||
2. Git Sync erneut versuchen
|
|
||||||
3. Rippy Project sollte sich importieren lassen
|
|
||||||
|
|
||||||
## Empfohlener Pfad für Rippy
|
|
||||||
|
|
||||||
```
|
|
||||||
/opt/docker/rippy
|
|
||||||
```
|
|
||||||
|
|
||||||
Oder wenn du Arcane's Standard nutzt:
|
|
||||||
```
|
|
||||||
/app/data/projects/rippy
|
|
||||||
```
|
|
||||||
|
|
||||||
## Status (21.07.2026)
|
|
||||||
|
|
||||||
- ✅ Arcane Projects Directory konfiguriert auf `/app/data/projects`
|
|
||||||
- ✅ Rippy Git Sync funktioniert
|
|
||||||
- ✅ Doppelte Einträge in DB behoben
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
# Arcane Docker Compose Fix für LXC 106
|
|
||||||
|
|
||||||
## Problem
|
|
||||||
Arcane versucht, Project-Verzeichnisse in `/etc/arcane/projects/` zu erstellen (falscher Default).
|
|
||||||
|
|
||||||
## Lösung
|
|
||||||
|
|
||||||
### Schritt 1: Arcane Docker Compose Datei finden
|
|
||||||
|
|
||||||
Auf LXC 106 folgende Pfade prüfen:
|
|
||||||
- `/opt/docker-compose.yml`
|
|
||||||
- `/opt/docker/docker-compose.yml`
|
|
||||||
- `/opt/arcane/docker-compose.yml`
|
|
||||||
- `/app/docker-compose.yml`
|
|
||||||
|
|
||||||
### Schritt 2: docker-compose.yml editieren
|
|
||||||
|
|
||||||
Füge die Umgebungsvariable hinzu:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
arcane:
|
|
||||||
environment:
|
|
||||||
- PROJECTS_DIRECTORY=/app/data/projects
|
|
||||||
```
|
|
||||||
|
|
||||||
### Schritt 3: Docker Compose neu starten
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /opt
|
|
||||||
docker compose down
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
### Schritt 4: In Arcane UIProjects Directory prüfen
|
|
||||||
|
|
||||||
Gehe zu Settings → General und prüfe, ob `/app/data/projects` eingestellt ist.
|
|
||||||
|
|
||||||
### Schritt 5: Git Sync erneut starten
|
|
||||||
|
|
||||||
Rippy Project importieren und deployen.
|
|
||||||
|
|
||||||
## Status (21.07.2026)
|
|
||||||
|
|
||||||
- ✅ Arcane Docker Compose konfiguriert
|
|
||||||
- ✅ PROJECTS_DIRECTORY=/app/data/projects
|
|
||||||
- ✅ Git Sync funktioniert
|
|
||||||
- ✅ Doppelte Einträge behoben
|
|
||||||
- ✅ Dark Mode implementiert
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# Arcane VM Setup - ABGESCHLOSSEN
|
|
||||||
|
|
||||||
## Status
|
|
||||||
- **VM IP:** 192.168.178.162
|
|
||||||
- **Arcane:** Erreichbar unter http://192.168.178.162:3552
|
|
||||||
- **Docker:** Installiert und läuft
|
|
||||||
- **Projects Directory:** /home/arcane/projects
|
|
||||||
- **Rippy UI:** http://192.168.178.162:80
|
|
||||||
- **Rippy API:** http://192.168.178.162:8000
|
|
||||||
- **Git Sync:** Konfiguriert und funktioniert
|
|
||||||
|
|
||||||
## Nächste Schritte in Arcane
|
|
||||||
|
|
||||||
1. Öffne http://192.168.178.162:3552
|
|
||||||
2. Gehe zu **Projects** → **Add Git Repository**
|
|
||||||
3. Repository URL: `https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/rippy.git`
|
|
||||||
4. Branch: `main`
|
|
||||||
5. Compose File Path: `docker-compose.yml`
|
|
||||||
6. Sync Name: `rippy`
|
|
||||||
7. **WICHTIG:** Deaktiviere "Sync sibling files" (Bug #2978)
|
|
||||||
8. Klicke **Create Sync**
|
|
||||||
9. Git Sync erneut versuchen → wird jetzt erfolgreich sein!
|
|
||||||
|
|
||||||
## Docker Compose Datei
|
|
||||||
|
|
||||||
Die Datei wurde unter `/home/arcane/docker-compose.yml` erstellt.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
version: '3.8'
|
|
||||||
services:
|
|
||||||
arcane:
|
|
||||||
image: ghcr.io/getarcaneapp/manager:latest
|
|
||||||
container_name: arcane
|
|
||||||
ports:
|
|
||||||
- '3552:3552'
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- arcane-data:/app/data
|
|
||||||
- /home/arcane/projects:/app/data/projects
|
|
||||||
environment:
|
|
||||||
- PROJECTS_DIRECTORY=/app/data/projects
|
|
||||||
- APP_URL=http://192.168.178.162:3552
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- ENCRYPTION_KEY=<generiert>
|
|
||||||
- JWT_SECRET=<generiert>
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
arcane-data:
|
|
||||||
```
|
|
||||||
|
|
||||||
## Status: Arcane läuft, Rippy Import bereit
|
|
||||||
|
|
||||||
## Rippy Features
|
|
||||||
- ✅ Dark Mode mit Theme-Toggle
|
|
||||||
- ✅ React UI mit TailwindCSS
|
|
||||||
- ✅ Einstellungen mit Tab-Struktur
|
|
||||||
- ✅ Sidebar Navigation
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
# Laufwerk zur Arcane VM hinzufügen
|
|
||||||
|
|
||||||
## Status
|
|
||||||
- ✅ Laufwerk am Proxmox Host (192.168.178.108) sichtbar: `/dev/sr0` (block device)
|
|
||||||
- ❌ Laufwerk ist noch **nicht** an die VM (192.168.178.162) durchgereicht
|
|
||||||
|
|
||||||
## Lösung
|
|
||||||
|
|
||||||
### Schritt 1: Laufwerk zur VM-Konfiguration hinzufügen
|
|
||||||
|
|
||||||
Auf dem Proxmox Host (192.168.178.108) als root:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# VM-Config sichern
|
|
||||||
cp /etc/pve/qemu-server/106.conf /etc/pve/qemu-server/106.conf.backup
|
|
||||||
|
|
||||||
# Laufwerk hinzufügen (als SCSI Device)
|
|
||||||
echo "scsi1: /dev/sr0,media=cdrom" >> /etc/pve/qemu-server/106.conf
|
|
||||||
|
|
||||||
# VM neu starten
|
|
||||||
qm shutdown 106
|
|
||||||
# Warten bis VM gestoppt ist
|
|
||||||
qm start 106
|
|
||||||
```
|
|
||||||
|
|
||||||
### Schritt 2: Nach dem Neustart prüfen
|
|
||||||
|
|
||||||
In der Arcane VM:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Laufwerk im Container prüfen
|
|
||||||
docker exec rippy-worker ls -la /dev/sr0
|
|
||||||
docker exec rippy-worker ls -la /dev/cdrom
|
|
||||||
```
|
|
||||||
|
|
||||||
### Schritt 3: Rippy UI prüfen
|
|
||||||
|
|
||||||
Im Rippy Dashboard sollte jetzt das Laufwerk erscheinen:
|
|
||||||
- Gehe zu http://192.168.178.162:80
|
|
||||||
- Dashboard → Laufwerke Section oben
|
|
||||||
|
|
||||||
## Alternative: Proxmox Web-UI
|
|
||||||
|
|
||||||
1. Gehe zu **Node** → **QEMU VM** → **106 (arcane)**
|
|
||||||
2. Klicke auf **Hardware**
|
|
||||||
3. Klicke auf **Add** → **SCSI Device**
|
|
||||||
4. Wähle **"Use existing disk/image"**
|
|
||||||
5. Gib `/dev/sr0` als Device ein
|
|
||||||
6. Stelle sicher **"Media type: CDROM"** ist ausgewählt
|
|
||||||
7. Klicke auf **Add**
|
|
||||||
8. VM neu starten
|
|
||||||
|
|
||||||
## Erklärung
|
|
||||||
|
|
||||||
Die Zeile `scsi1: /dev/sr0,media=cdrom` sagt Proxmox:
|
|
||||||
- `/dev/sr0` vom Host an die VM durchreichen
|
|
||||||
- Als SCSI Device (virtio-scsi)
|
|
||||||
- Media type = CDROM (wichtig für CD/DVD/Blu-ray Erkennung)
|
|
||||||
|
|
||||||
## Nachteile
|
|
||||||
|
|
||||||
- Laufwerk ist dann **exklusiv** an die VM gebunden (nicht mehr am Host nutzbar)
|
|
||||||
- Wenn VM stoppt, ist Laufwerk auch nicht am Host verfügbar
|
|
||||||
|
|
||||||
## Hinweis für Arcane
|
|
||||||
|
|
||||||
Arcane kann das Laufwerk jetzt in den Rippy-Container mounten wie in der `docker-compose.yml` konfiguriert:
|
|
||||||
```yaml
|
|
||||||
volumes:
|
|
||||||
- /dev/cdrom:/dev/cdrom:ro
|
|
||||||
- /dev/sr0:/dev/sr0:ro
|
|
||||||
```
|
|
||||||
+25
-3
@@ -222,10 +222,32 @@
|
|||||||
**Ziel:** DVD/Blu-ray-Ripping auf `makemkvcon` umstellen (verlustfrei), wie im
|
**Ziel:** DVD/Blu-ray-Ripping auf `makemkvcon` umstellen (verlustfrei), wie im
|
||||||
KONZEPT als Muss definiert. HandBrake fliegt aus dem Ripp-Pfad (bleibt ggf. als
|
KONZEPT als Muss definiert. HandBrake fliegt aus dem Ripp-Pfad (bleibt ggf. als
|
||||||
optionaler Transcode-Schritt NACH dem verlustfreien Rip).
|
optionaler Transcode-Schritt NACH dem verlustfreien Rip).
|
||||||
- [ ] Worker-Dockerfile: makemkv-oss/makemkv-bin bauen + Beta-Key-Handling (Env/Cron)
|
- [x] Worker-Dockerfile: makemkv-oss/makemkv-bin 1.18.4 multi-stage gebaut,
|
||||||
- [ ] ripping.py: rip_dvd/rip_bluray auf `makemkvcon --all --progress mkv` umstellen
|
Beta-Key via MAKEMKV_APP_KEY-Env (entrypoint.sh) — 23.07.
|
||||||
(Fortschritts-Parsing anpassen, Tests zuerst!)
|
- [x] ripping.py: auf `makemkvcon -r --progress=-same mkv dev:… all` umgestellt,
|
||||||
|
PRGV-Fortschritts-Parsing laut makemkv.com/developers/usage.txt, Tests dabei — 23.07.
|
||||||
- [ ] E2E mit echter Disc verifizieren (Commander, Laufwerk nötig)
|
- [ ] E2E mit echter Disc verifizieren (Commander, Laufwerk nötig)
|
||||||
**Fertig wenn:** eine echte DVD landet verlustfrei als MKV im Output, Ampel grün.
|
**Fertig wenn:** eine echte DVD landet verlustfrei als MKV im Output, Ampel grün.
|
||||||
**Entstanden aus:** Review 22.07. — HandBrake-lossy war eine stille Abweichung vom
|
**Entstanden aus:** Review 22.07. — HandBrake-lossy war eine stille Abweichung vom
|
||||||
Konzept; Entscheid 22.07. abends: Konzept gilt, Umbau als eigene Etappe.
|
Konzept; Entscheid 22.07. abends: Konzept gilt, Umbau als eigene Etappe.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Etappe 11 (23.07.2026): Kernumbau — der Zweck funktioniert erstmals wirklich
|
||||||
|
|
||||||
|
**Befund des Komplett-Audits (Claude):** Der Kern „Disc rein → gerippt raus"
|
||||||
|
hatte NIE einen Code-Pfad: kein POST /jobs, kein udev-Daemon (das referenzierte
|
||||||
|
udev_daemon.py existierte nirgends), kein Ripping-Tool im Worker-Image,
|
||||||
|
Disc-Erkennung strukturell tot (`file -L` auf Block-Device), Geräte als
|
||||||
|
Bind-Mounts statt devices: (EPERM), UI rief hartkodiert localhost:8000 auf.
|
||||||
|
|
||||||
|
**Gebaut:**
|
||||||
|
- [x] POST /jobs (API → Celery → Worker) + Job-Persistenz in Postgres
|
||||||
|
- [x] Disc-Watcher in der API (ioctl-Poll statt udev — Container-tauglich)
|
||||||
|
- [x] Disc-Erkennung neu über Kernel-ioctls (detection.py, in API+Worker)
|
||||||
|
- [x] /logs-Endpoint + echte Logs-Seite (Mock-Daten raus)
|
||||||
|
- [x] /settings-Endpoints (Settings-Seite sprach vorher ins Leere)
|
||||||
|
- [x] UI: Vite-Build + nginx mit /api-Proxy statt Dev-Server; relative API-Pfade
|
||||||
|
- [x] compose: devices: statt Bind-Mounts; Ausgabe aufs media-Volume
|
||||||
|
- [ ] Jellyfin-Post-Processing an den Worker anbinden (NFO/Poster nach dem Rip)
|
||||||
|
- [ ] Auth vor die schreibenden Endpoints (JWT existiert, schützt aber nichts)
|
||||||
|
|||||||
+29
-1
@@ -1,6 +1,34 @@
|
|||||||
# SAVEPOINT — Rippy
|
# SAVEPOINT — Rippy
|
||||||
|
|
||||||
## Aktueller Stand
|
## Aktueller Stand: v3.0 — Kernumbau (23.07.2026, Claude)
|
||||||
|
|
||||||
|
**Der Zweck existiert jetzt wirklich.** Komplett-Audit ergab: „Disc rein →
|
||||||
|
gerippt raus" hatte nie einen Code-Pfad (Details in ROADMAP Etappe 11).
|
||||||
|
|
||||||
|
Kernpunkte des Umbaus:
|
||||||
|
- **Rip-Kette komplett neu**: POST /jobs → Celery → Worker (MakeMKV 1.18.4
|
||||||
|
verlustfrei, Etappe 10) → Postgres-Job-Status → UI. CD weiter via abcde.
|
||||||
|
- **Disc-Erkennung** über Kernel-ioctls (CDROM_DISC_STATUS + Größe), Watcher
|
||||||
|
pollt statt udev (im Container gibt es kein udev).
|
||||||
|
- **UI**: echter Vite-Build hinter nginx mit /api-Proxy — vorher Dev-Server
|
||||||
|
und hartkodiertes localhost:8000 (deshalb waren nie Laufwerke zu sehen).
|
||||||
|
- **Compose**: Laufwerk als devices: (Bind-Mounts gaben EPERM), Ausgabe auf
|
||||||
|
media-Volume (vorher /output → nicht gemountet + read-only-Falle).
|
||||||
|
- **Placebos entfernt**: Mock-Logs, toter SSE-Stream, udevadm-Discovery,
|
||||||
|
14 Troubleshooting-Altdateien (ARCAN-*.md, Setup-Skripte, udev-Rules).
|
||||||
|
|
||||||
|
**Hardware-Kette (23.07.):** Laufwerk (Verbatim 4K BD RW, BU40N 1.05) hängt am
|
||||||
|
Proxmox-Host; LPM-Quirk `usbcore.quirks=18a5:0428:k` gefixt die Serien-Disconnects
|
||||||
|
(reboot-fest in GRUB). VM 106 bekommt es per USB-Passthrough `host=18a5:0428`.
|
||||||
|
⚠️ Firmware 1.05 kann KEIN UHD-Ripping (verschlüsselt) — Crossflash auf 1.03-MK
|
||||||
|
ist der dokumentierte Weg, separater Faden. DVD/BD normal geht.
|
||||||
|
|
||||||
|
**Offen:** E2E mit echter Disc · Jellyfin-Post-Processing an Worker anbinden ·
|
||||||
|
Auth vor schreibende Endpoints · MAKEMKV_APP_KEY in Arcane-Env pflegen (monatlich).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Vorheriger Stand
|
||||||
|
|
||||||
**v1.10 — Complete Dark Mode Implementation (22.07.2026)**
|
**v1.10 — Complete Dark Mode Implementation (22.07.2026)**
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
echo "=== Arcane VM Setup ==="
|
|
||||||
echo "Tu77ceu2zzvx!" | sudo -S apt-get update
|
|
||||||
echo "Tu77ceu2zzvx!" | sudo -S apt-get upgrade -y
|
|
||||||
curl -fsSL https://get.docker.com | sudo sh
|
|
||||||
echo "Tu77ceu2zzvx!" | sudo -S usermod -aG docker arcane
|
|
||||||
mkdir -p /opt/docker/projects
|
|
||||||
chown arcane:arcane /opt/docker/projects
|
|
||||||
mkdir -p /usr/local/lib/docker/cli-plugins
|
|
||||||
curl -SL https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
|
|
||||||
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
|
||||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
|
||||||
JWT_SECRET=$(openssl rand -hex 32)
|
|
||||||
cat > /opt/docker-compose.yml << COMPOSEEOF
|
|
||||||
version: "3.8"
|
|
||||||
services:
|
|
||||||
arcane:
|
|
||||||
image: ghcr.io/getarcaneapp/manager:latest
|
|
||||||
container_name: arcane
|
|
||||||
ports:
|
|
||||||
- "3552:3552"
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- arcane-data:/app/data
|
|
||||||
- /opt/docker/projects:/app/data/projects
|
|
||||||
environment:
|
|
||||||
- PROJECTS_DIRECTORY=/app/data/projects
|
|
||||||
- APP_URL=http://192.168.178.162:3552
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- ENCRYPTION_KEY=$ENCRYPTION_KEY
|
|
||||||
- JWT_SECRET=$JWT_SECRET
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
arcane-data:
|
|
||||||
COMPOSEEOF
|
|
||||||
cd /opt
|
|
||||||
docker compose up -d
|
|
||||||
echo "=== Setup abgeschlossen ==="
|
|
||||||
echo "Arcane ist erreichbar unter: http://192.168.178.162:3552"
|
|
||||||
echo "Projects Directory: /opt/docker/projects"
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
echo "=== Arcane VM Setup ==="
|
|
||||||
echo "Tu77ceu2zzvx!" | sudo -S apt-get update -y
|
|
||||||
echo "Tu77ceu2zzvx!" | sudo -S apt-get upgrade -y
|
|
||||||
curl -fsSL https://get.docker.com | sudo sh
|
|
||||||
echo "Tu77ceu2zzvx!" | sudo -S usermod -aG docker arcane
|
|
||||||
mkdir -p /home/arcane/projects
|
|
||||||
chown arcane:arcane /home/arcane/projects
|
|
||||||
mkdir -p /usr/local/lib/docker/cli-plugins
|
|
||||||
curl -SL https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
|
|
||||||
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
|
||||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
|
||||||
JWT_SECRET=$(openssl rand -hex 32)
|
|
||||||
cat > /home/arcane/docker-compose.yml << COMPOSEEOF
|
|
||||||
version: "3.8"
|
|
||||||
services:
|
|
||||||
arcane:
|
|
||||||
image: ghcr.io/getarcaneapp/manager:latest
|
|
||||||
container_name: arcane
|
|
||||||
ports:
|
|
||||||
- "3552:3552"
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- arcane-data:/app/data
|
|
||||||
- /home/arcane/projects:/app/data/projects
|
|
||||||
environment:
|
|
||||||
- PROJECTS_DIRECTORY=/app/data/projects
|
|
||||||
- APP_URL=http://192.168.178.162:3552
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- ENCRYPTION_KEY=$ENCRYPTION_KEY
|
|
||||||
- JWT_SECRET=$JWT_SECRET
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
arcane-data:
|
|
||||||
COMPOSEEOF
|
|
||||||
cd /home/arcane
|
|
||||||
docker compose up -d
|
|
||||||
echo "=== Setup abgeschlossen ==="
|
|
||||||
echo "Arcane ist erreichbar unter: http://192.168.178.162:3552"
|
|
||||||
echo "Projects Directory: /home/arcane/projects"
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
ENCRYPTION_KEY=$(openssl rand -hex 32)
|
|
||||||
JWT_SECRET=$(openssl rand -hex 32)
|
|
||||||
cat > /home/arcane/docker-compose.yml << EOF
|
|
||||||
version: '3.8'
|
|
||||||
services:
|
|
||||||
arcane:
|
|
||||||
image: ghcr.io/getarcaneapp/manager:latest
|
|
||||||
container_name: arcane
|
|
||||||
ports:
|
|
||||||
- '3552:3552'
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- arcane-data:/app/data
|
|
||||||
- /home/arcane/projects:/app/data/projects
|
|
||||||
environment:
|
|
||||||
- PROJECTS_DIRECTORY=/app/data/projects
|
|
||||||
- APP_URL=http://192.168.178.162:3552
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- ENCRYPTION_KEY=$ENCRYPTION_KEY
|
|
||||||
- JWT_SECRET=$JWT_SECRET
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
arcane-data:
|
|
||||||
EOF
|
|
||||||
cat /home/arcane/docker-compose.yml
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Rippy Installations-Skript für LXC 106
|
|
||||||
# Führe dies auf LXC 106 aus: bash install-rippy.sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "=== Rippy Installation auf LXC 106 ==="
|
|
||||||
|
|
||||||
# Verzeichnis erstellen
|
|
||||||
PROJECT_DIR="/opt/docker/rippy"
|
|
||||||
mkdir -p "$PROJECT_DIR"
|
|
||||||
cd "$PROJECT_DIR"
|
|
||||||
|
|
||||||
# Git clone
|
|
||||||
echo "Klone Repository..."
|
|
||||||
if [ -d ".git" ]; then
|
|
||||||
git pull origin main
|
|
||||||
else
|
|
||||||
git clone https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/rippy.git .
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Docker Compose starten
|
|
||||||
echo "Starte Rippy mit Docker Compose..."
|
|
||||||
docker compose up -d
|
|
||||||
|
|
||||||
echo "=== Installation abgeschlossen ==="
|
|
||||||
echo "Rippy läuft unter: http://localhost:8000"
|
|
||||||
echo "Logs ansehen: docker compose logs -f"
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Skript zum Hinzufügen des Laufwerks zur Proxmox VM
|
|
||||||
|
|
||||||
echo "=== Laufwerk zur Proxmox VM hinzufügen ==="
|
|
||||||
|
|
||||||
# Prüfen ob das Laufwerk existiert
|
|
||||||
if [ ! -b /dev/sr0 ]; then
|
|
||||||
echo "❌ Laufwerk /dev/sr0 nicht gefunden"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✅ Laufwerk /dev/sr0 gefunden"
|
|
||||||
|
|
||||||
# VM-Config sichern
|
|
||||||
echo "Sichere VM-Konfiguration..."
|
|
||||||
cp /etc/pve/qemu-server/106.conf /etc/pve/qemu-server/106.conf.backup
|
|
||||||
echo "✅ Backup erstellt: /etc/pve/qemu-server/106.conf.backup"
|
|
||||||
|
|
||||||
# Laufwerk hinzufügen
|
|
||||||
echo "Füge Laufwerk zur VM hinzu..."
|
|
||||||
# Prüfen ob schon eingebunden
|
|
||||||
if grep -q "scsi1: /dev/sr0" /etc/pve/qemu-server/106.conf; then
|
|
||||||
echo "⚠️ Laufwerk ist bereits eingebunden"
|
|
||||||
else
|
|
||||||
echo "scsi1: /dev/sr0,media=cdrom" >> /etc/pve/qemu-server/106.conf
|
|
||||||
echo "✅ Laufwerk hinzugefügt"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "=== VM neu starten ==="
|
|
||||||
echo "Führe folgende Befehle aus:"
|
|
||||||
echo " qm shutdown 106"
|
|
||||||
echo " wait for VM to stop"
|
|
||||||
echo " qm start 106"
|
|
||||||
echo ""
|
|
||||||
echo "Oder im Proxmox Web-UI:"
|
|
||||||
echo " 1. VM 106 auswählen"
|
|
||||||
echo " 2. 'Shutdown' klicken"
|
|
||||||
echo " 3. Nach dem Stop 'Start' klicken"
|
|
||||||
echo ""
|
|
||||||
echo "=== Nach dem Neustart ==="
|
|
||||||
echo "Im Container rippy-worker sollte jetzt /dev/sr0 sichtbar sein:"
|
|
||||||
echo " docker exec rippy-worker ls -la /dev/sr0"
|
|
||||||
echo " docker exec rippy-worker ls -la /dev/cdrom"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Proxmox QEMU Konfiguration für Laufwerk-Durchreichung
|
|
||||||
# Füge diese Zeile zu /etc/pve/qemu-server/106.conf hinzu
|
|
||||||
|
|
||||||
# Option 1: Als SCSI Device (empfohlen)
|
|
||||||
scsi1: /dev/sr0,media=cdrom
|
|
||||||
|
|
||||||
# Option 2: Alternativ als SATA Device
|
|
||||||
sata1: /dev/sr0,media=cdrom
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Setup Rippy auf Arcane VM
|
|
||||||
|
|
||||||
cd /home/arcane/projects
|
|
||||||
|
|
||||||
# Verzeichnis erstellen
|
|
||||||
mkdir -p rippy
|
|
||||||
cd rippy
|
|
||||||
|
|
||||||
# Dateien von Host kopieren
|
|
||||||
scp -r arcane@192.168.178.1:/"Coding Stuff/rippy"/* .
|
|
||||||
|
|
||||||
# Docker Compose starten
|
|
||||||
docker compose up -d
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
git clone --mirror https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/rippy.git /tmp/rippy.git
|
|
||||||
cd /tmp/rippy.git && git remote set-url origin https://git.tobisniceshomelab.ddnsfree.com/Hitonabi/rippy.git
|
|
||||||
git clone file:///tmp/rippy.git /home/arcane/projects/rippy
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# udev-Regel für Disc-Einwurf-Erkennung
|
|
||||||
# Diese Datei muss nach /etc/udev/rules.d/ kopiert werden
|
|
||||||
|
|
||||||
# CD/DVD/Blu-ray Einwurf-Ereignis
|
|
||||||
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sr*", ENV{ID_TYPE}=="cd", SYMLINK+="disc/%E{ID_SERIAL}", RUN+="/app/udev/udev_daemon.py add %k"
|
|
||||||
|
|
||||||
# CD/DVD/Blu-ray Auswurf-Ereignis
|
|
||||||
ACTION=="remove", SUBSYSTEM=="block", KERNEL=="sr*", ENV{ID_TYPE}=="cd", RUN+="/app/udev/udev_daemon.py remove %k"
|
|
||||||
Reference in New Issue
Block a user