Initial commit: Filebot Media Browser

Vue 3 + FastAPI Webapp zur Anzeige von Filebot/n8n-Medienmetadaten aus PostgreSQL.
Enthält Frontend, API, Nginx-Config, SQL-Migrationen und Docker-Compose-Setup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Housemann
2026-07-11 05:38:37 +02:00
co-authored by Claude Sonnet 4.6
commit 3f253ffe81
45 changed files with 4791 additions and 0 deletions
+176
View File
@@ -0,0 +1,176 @@
# Deployment auf neuem Server (`/opt/nginx_filebot`)
Anleitung für einen **neuen** Linux-Server oder Umzug vom alten Pfad `/opt/docker/nginx_filebot`.
Einziger User: **`vogto`** (SSH, SMB, Docker).
---
## 1. Rechte für `/opt` (einmalig)
Gruppe **`opt-docker`** nur für Samba (`force group`) und einheitliche Gruppenrechte; Owner überall **`vogto`**.
```bash
sudo groupadd -f opt-docker
sudo usermod -aG opt-docker,docker vogto
```
`vogto` danach **neu anmelden** (SMB trennen/neu verbinden), damit Gruppen greifen.
```bash
# Gesamtes /opt: vogto + Gruppe opt-docker, setgid (neue Dateien erben die Gruppe)
sudo chown vogto:opt-docker /opt
sudo chmod 2775 /opt
# Projektordner (erbt Owner/Gruppe von /opt)
sudo mkdir -p /opt/nginx_filebot
```
| Pfad | Owner | Modus |
|------|--------|--------|
| **`/opt`** | `vogto:opt-docker` | `2775` |
| **`/opt/nginx_filebot`** | (erbt von `/opt`) | (erbt) |
Weitere Docker-Projekte später nur anlegen **kein** extra `chown` nötig:
```bash
sudo mkdir -p /opt/anderes_projekt
# bleibt vogto:opt-docker durch setgid auf /opt
```
`config/config.yaml`:
```bash
chmod 640 /opt/nginx_filebot/config/config.yaml
```
### Samba (Beispiel)
```ini
[opt]
path = /opt
browseable = yes
read only = no
valid users = vogto
force user = vogto
force group = opt-docker
create mask = 0664
directory mask = 2775
```
```bash
sudo testparm
sudo systemctl reload smbd
```
Nach größeren Kopien/Rechten von root:
```bash
sudo chown -R vogto:opt-docker /opt
sudo find /opt -type d -exec chmod 2775 {} \;
sudo find /opt -type f -exec chmod 664 {} \;
```
---
## 2. Projekt auf den neuen Server bringen
### Variante A: Git
```bash
git clone <repository-url> /opt/nginx_filebot
```
### Variante B: rsync vom Mac / altem Server
```bash
rsync -avz --exclude node_modules --exclude '.git' \
--exclude config/config.yaml \
./ vogto@NEUER_SERVER:/opt/nginx_filebot/
scp config/config.example.yaml vogto@NEUER_SERVER:/opt/nginx_filebot/config/config.yaml
```
### Variante C: Umzug vom alten Server
```bash
# Alt
cd /opt/docker/nginx_filebot && docker compose down
# Kopieren
rsync -avz user@ALTER_SERVER:/opt/docker/nginx_filebot/ /opt/nginx_filebot/
# Rechte (ganzes /opt oder nur Projekt)
sudo chown -R vogto:opt-docker /opt
```
**Wichtig:** `config/config.yaml` vom alten Server mitnehmen.
---
## 3. Konfiguration & Datenbank
```bash
cd /opt/nginx_filebot
cp config/config.example.yaml config/config.yaml # falls nötig
nano config/config.yaml
```
PostgreSQL vom neuen Server erreichbar? Migrationen:
```bash
psql -h <DB_HOST> -U <USER> -d n8n_filebot -f /opt/nginx_filebot/sql/001_add_seen_at.sql
psql -h <DB_HOST> -U <USER> -d n8n_filebot -f /opt/nginx_filebot/sql/002_add_cover_url.sql
```
---
## 4. Docker starten
```bash
cd /opt/nginx_filebot
docker compose up -d --build
curl -s http://localhost:8080/api/health
```
Browser: `http://<NEUER_SERVER_IP>:8080`
---
## 5. Checkliste
| Schritt | Erledigt |
|---------|----------|
| `vogto` in `opt-docker` und `docker` | ☐ |
| `/opt``vogto:opt-docker`, `2775` | ☐ |
| Samba `force user` / `force group` | ☐ |
| Repo unter `/opt/nginx_filebot` | ☐ |
| `config/config.yaml` | ☐ |
| `docker compose up -d --build` | ☐ |
---
## 6. Häufige Probleme
| Symptom | Lösung |
|---------|--------|
| `open Dockerfile: no such file` (web) | `nginx/Dockerfile` fehlt auf dem Server siehe unten |
| `load metadata for python:3.12-slim` | Internet/Docker Hub: `docker pull python:3.12-slim` |
| SMB: nicht schreiben | `id vogto`, `chown -R vogto:opt-docker /opt`, neu anmelden |
| `permission denied` | `sudo chown -R vogto:opt-docker /opt` |
| Docker ohne sudo | `usermod -aG docker vogto`, neu anmelden |
| API 503 | DB-Host/Firewall, `curl …/api/status` |
### Build-Fehler: Dockerfile fehlt
```bash
ls -la /opt/nginx_filebot/nginx/Dockerfile
sh /opt/nginx_filebot/scripts/verify-deploy-files.sh
```
Wenn `FEHLT`: kompletten Ordner `nginx/` (und ggf. `frontend/`, `api/`) erneut hochladen. Danach:
```bash
cd /opt/nginx_filebot
docker compose up -d --build
```