diff --git a/DEPLOY.md b/DEPLOY.md index ff9db8f..c691f9b 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -28,14 +28,13 @@ cat ~/.ssh/hcrb_deploy.pub Den ausgegebenen Schlüssel im Repository unter *Settings → Deploy keys* eintragen (nur Lesezugriff). Dann: -> **Ordner:** Die Anleitung nutzt `/opt/hcrb`. Jeder andere Ordner geht genauso (z. B. `~/docker/hcrb` neben den -> anderen Docker-Projekten) – dann `/opt/hcrb` in den Befehlen unten einfach durch den eigenen Pfad ersetzen. -> Die Skripte in `deploy/` finden ihren Ordner selbst. +> **Ordner:** Das Projekt liegt in `~/festplatte/dockercontainer/hcrb`. Die Skripte in `deploy/` finden ihren +> Ordner selbst – bei einem Umzug muss nur der Pfad in den Befehlen hier angepasst werden. ```bash -sudo mkdir -p /opt/hcrb && sudo chown $USER: /opt/hcrb -GIT_SSH_COMMAND="ssh -i ~/.ssh/hcrb_deploy" git clone git@github.com:guyg1474/hcrb.git /opt/hcrb -cd /opt/hcrb +mkdir -p ~/festplatte/dockercontainer +GIT_SSH_COMMAND="ssh -i ~/.ssh/hcrb_deploy" git clone git@github.com:guyg1474/hcrb.git ~/festplatte/dockercontainer/hcrb +cd ~/festplatte/dockercontainer/hcrb git config core.sshCommand "ssh -i ~/.ssh/hcrb_deploy" chmod +x deploy/*.sh @@ -69,14 +68,14 @@ Wer die bisherigen Mitglieder, Termine und Logins mitnehmen will, kopiert sie vo # lokal ausführen scp data/db.json data/users.json DEIN-USER@SERVER:/tmp/ # auf dem Server -sudo mv /tmp/db.json /tmp/users.json /opt/hcrb/data/ -sudo chown 1000:1000 /opt/hcrb/data/*.json && sudo chmod 600 /opt/hcrb/data/*.json +sudo mv /tmp/db.json /tmp/users.json ~/festplatte/dockercontainer/hcrb/data/ +sudo chown 1000:1000 ~/festplatte/dockercontainer/hcrb/data/*.json && sudo chmod 600 ~/festplatte/dockercontainer/hcrb/data/*.json ``` ## 6. Container starten ```bash -cd /opt/hcrb +cd ~/festplatte/dockercontainer/hcrb docker compose up -d --build docker compose ps # Status sollte nach ca. 30 Sekunden "Up … (healthy)" zeigen ``` @@ -136,7 +135,7 @@ Die NPM-Oberfläche (Port 81) sollte ebenfalls nicht offen im Internet stehen. ```bash sudo crontab -e # Zeile hinzufügen: -30 3 * * * /opt/hcrb/deploy/backup.sh +30 3 * * * /home/DEIN-USER/festplatte/dockercontainer/hcrb/deploy/backup.sh ``` Sichert täglich um 3:30 Uhr `data/` nach `/var/backups/hcrb/` und behält 30 Tage. @@ -153,7 +152,7 @@ git commit -m "Was geändert wurde" git push # auf dem Server -ssh DEIN-USER@SERVER /opt/hcrb/deploy/update-docker.sh +ssh DEIN-USER@SERVER festplatte/dockercontainer/hcrb/deploy/update-docker.sh ``` `update-docker.sh` holt den neuen Stand, baut den Container neu und startet ihn. Die Daten bleiben unverändert, @@ -161,7 +160,7 @@ an NPM muss nichts geändert werden. ## Nützliche Befehle auf dem Server -Alle im Ordner `/opt/hcrb` ausführen: +Alle im Ordner `~/festplatte/dockercontainer/hcrb` ausführen: | Zweck | Befehl | | --- | --- | @@ -172,7 +171,7 @@ Alle im Ordner `/opt/hcrb` ausführen: | Benutzer anlegen | `docker compose exec hcrb npm run user -- add ` | | Passwort ändern | `docker compose exec hcrb npm run user -- passwd ` | | Benutzer auflisten | `docker compose exec hcrb npm run user -- list` | -| Backup zurückspielen | `docker compose down && sudo tar -xzf /var/backups/hcrb/hcrb-DATUM.tar.gz -C /opt/hcrb && sudo chown -R 1000:1000 data && docker compose up -d` | +| Backup zurückspielen | `docker compose down && sudo tar -xzf /var/backups/hcrb/hcrb-DATUM.tar.gz -C ~/festplatte/dockercontainer/hcrb && sudo chown -R 1000:1000 data && docker compose up -d` | ## Fehlersuche @@ -180,5 +179,5 @@ Alle im Ordner `/opt/hcrb` ausführen: | --- | --- | | `network … declared as external, but could not be found` | Netzwerkname in `.env` stimmt nicht – Schritt 4 wiederholen. | | NPM zeigt „502 Bad Gateway“ | Container läuft nicht (`docker compose ps`, `docker compose logs`) oder hängt nicht im NPM-Netz (Schritt 4). | -| Container startet neu mit `EACCES … data` | Rechte am Datenordner: `sudo chown -R 1000:1000 /opt/hcrb/data` | +| Container startet neu mit `EACCES … data` | Rechte am Datenordner: `sudo chown -R 1000:1000 ~/festplatte/dockercontainer/hcrb/data` | | Nach 10 falschen Passwörtern ist der Login für **alle** gesperrt | Die Seite erkennt die echte Besucher-IP nicht – prüfen, ob `TRUST_PROXY` in `docker-compose.yml` gesetzt ist und der Zugriff über NPM erfolgt. |