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>
177 lines
4.0 KiB
Markdown
177 lines
4.0 KiB
Markdown
# 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
|
||
```
|