# 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 /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 -U -d n8n_filebot -f /opt/nginx_filebot/sql/001_add_seen_at.sql psql -h -U -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://: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 ```