📚 Deployment-Anleitung hinzugefügt
This commit is contained in:
226
DEPLOYMENT.md
Normal file
226
DEPLOYMENT.md
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
# 🚀 SeCu Deployment Guide
|
||||||
|
|
||||||
|
## Voraussetzungen
|
||||||
|
|
||||||
|
**Server:**
|
||||||
|
- Debian/Ubuntu Server (empfohlen: Debian 12)
|
||||||
|
- Min. 2GB RAM, 20GB Disk
|
||||||
|
- Root-Zugang
|
||||||
|
|
||||||
|
**Domains:**
|
||||||
|
- `secu.deine-domain.de` → Frontend
|
||||||
|
- `api.secu.deine-domain.de` → Backend
|
||||||
|
|
||||||
|
Beide Domains müssen auf die Server-IP zeigen (A-Record im DNS).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schnell-Installation (1 Befehl)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -sSL https://git.kronos-soulution.de/Flux_bot/secu/raw/branch/main/deploy/install.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Manuelle Installation
|
||||||
|
|
||||||
|
### 1️⃣ System vorbereiten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Als root auf dem Server
|
||||||
|
apt update && apt upgrade -y
|
||||||
|
apt install -y git curl nginx certbot python3-certbot-nginx docker.io docker-compose
|
||||||
|
systemctl enable --now docker
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2️⃣ Repo klonen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /srv/secu
|
||||||
|
cd /srv/secu
|
||||||
|
|
||||||
|
# Repos klonen
|
||||||
|
git clone https://git.kronos-soulution.de/Flux_bot/secu.git
|
||||||
|
git clone https://git.kronos-soulution.de/Flux_bot/secu-backend.git
|
||||||
|
git clone https://git.kronos-soulution.de/Flux_bot/secu-frontend.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3️⃣ Umgebungsvariablen setzen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /srv/secu
|
||||||
|
|
||||||
|
# .env erstellen
|
||||||
|
cat > .env << 'EOF'
|
||||||
|
# Datenbank (kann so bleiben für lokale DB)
|
||||||
|
POSTGRES_USER=secu
|
||||||
|
POSTGRES_PASSWORD=SeCu2026!SecureDB
|
||||||
|
POSTGRES_DB=secu
|
||||||
|
|
||||||
|
# JWT Secret (ÄNDERN!)
|
||||||
|
JWT_SECRET=DEIN-GEHEIMER-SCHLUESSEL-HIER-AENDERN
|
||||||
|
|
||||||
|
# Deine Domain
|
||||||
|
DOMAIN=secu.deine-domain.de
|
||||||
|
API_DOMAIN=api.secu.deine-domain.de
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
⚠️ **Wichtig:** `JWT_SECRET` unbedingt ändern! Zufällig generieren:
|
||||||
|
```bash
|
||||||
|
openssl rand -base64 32
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4️⃣ Nginx konfigurieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Domains anpassen
|
||||||
|
nano /srv/secu/secu/deploy/nginx/secu.conf
|
||||||
|
|
||||||
|
# Ersetze alle "secu.kronos-soulution.de" mit deiner Domain
|
||||||
|
# Ersetze alle "api.secu.kronos-soulution.de" mit deiner API-Domain
|
||||||
|
|
||||||
|
# Config kopieren
|
||||||
|
cp /srv/secu/secu/deploy/nginx/secu.conf /etc/nginx/sites-available/secu
|
||||||
|
ln -s /etc/nginx/sites-available/secu /etc/nginx/sites-enabled/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5️⃣ SSL-Zertifikate
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Zertifikate holen (Nginx muss laufen, Domains müssen erreichbar sein)
|
||||||
|
certbot --nginx -d secu.deine-domain.de -d api.secu.deine-domain.de
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6️⃣ Docker starten
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /srv/secu/secu/deploy
|
||||||
|
|
||||||
|
# Frontend API-URL anpassen
|
||||||
|
export VITE_API_URL=https://api.secu.deine-domain.de/api
|
||||||
|
|
||||||
|
# Container starten
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7️⃣ Prüfen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Logs anschauen
|
||||||
|
docker-compose logs -f
|
||||||
|
|
||||||
|
# Health-Check
|
||||||
|
curl http://localhost:8004/health
|
||||||
|
curl http://localhost:3006
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Konfiguration anpassen
|
||||||
|
|
||||||
|
### Eigene Domain verwenden
|
||||||
|
|
||||||
|
1. DNS A-Records setzen für beide Domains
|
||||||
|
2. In `/srv/secu/secu/deploy/nginx/secu.conf`:
|
||||||
|
- Alle `secu.kronos-soulution.de` ersetzen
|
||||||
|
3. In `/srv/secu/secu/deploy/docker-compose.yml`:
|
||||||
|
- `VITE_API_URL` anpassen
|
||||||
|
4. Nginx neu laden: `systemctl reload nginx`
|
||||||
|
|
||||||
|
### Datenbank-Passwort ändern
|
||||||
|
|
||||||
|
In `/srv/secu/secu/deploy/docker-compose.yml`:
|
||||||
|
```yaml
|
||||||
|
POSTGRES_PASSWORD: DeinNeuesPasswort
|
||||||
|
DATABASE_URL: postgres://secu:DeinNeuesPasswort@secu-db:5432/secu
|
||||||
|
```
|
||||||
|
|
||||||
|
Dann: `docker-compose down && docker-compose up -d`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Wichtige Befehle
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /srv/secu/secu/deploy
|
||||||
|
|
||||||
|
# Status prüfen
|
||||||
|
docker-compose ps
|
||||||
|
|
||||||
|
# Logs anzeigen
|
||||||
|
docker-compose logs -f
|
||||||
|
docker-compose logs -f secu-backend # nur Backend
|
||||||
|
|
||||||
|
# Neustart
|
||||||
|
docker-compose restart
|
||||||
|
|
||||||
|
# Komplett neu starten
|
||||||
|
docker-compose down && docker-compose up -d
|
||||||
|
|
||||||
|
# Updates holen
|
||||||
|
cd /srv/secu/secu && git pull
|
||||||
|
cd /srv/secu/secu-backend && git pull
|
||||||
|
cd /srv/secu/secu-frontend && git pull
|
||||||
|
docker-compose down && docker-compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔒 Ports (Firewall)
|
||||||
|
|
||||||
|
Nur diese Ports müssen offen sein:
|
||||||
|
- **80** (HTTP → Redirect zu HTTPS)
|
||||||
|
- **443** (HTTPS)
|
||||||
|
|
||||||
|
Interne Ports (NICHT öffnen):
|
||||||
|
- 3006 (Frontend intern)
|
||||||
|
- 8004 (Backend intern)
|
||||||
|
- 5434 (PostgreSQL intern)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# UFW Firewall
|
||||||
|
ufw allow 80
|
||||||
|
ufw allow 443
|
||||||
|
ufw allow 22 # SSH nicht vergessen!
|
||||||
|
ufw enable
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❓ Troubleshooting
|
||||||
|
|
||||||
|
### Container startet nicht
|
||||||
|
```bash
|
||||||
|
docker-compose logs secu-backend
|
||||||
|
docker-compose logs secu-db
|
||||||
|
```
|
||||||
|
|
||||||
|
### Datenbank-Verbindung fehlgeschlagen
|
||||||
|
```bash
|
||||||
|
docker exec -it secu-db psql -U secu -d secu
|
||||||
|
# Sollte PostgreSQL-Prompt zeigen
|
||||||
|
```
|
||||||
|
|
||||||
|
### SSL-Fehler
|
||||||
|
```bash
|
||||||
|
certbot renew --dry-run
|
||||||
|
nginx -t
|
||||||
|
```
|
||||||
|
|
||||||
|
### Alles zurücksetzen
|
||||||
|
```bash
|
||||||
|
docker-compose down -v # -v löscht auch die Datenbank!
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Support
|
||||||
|
|
||||||
|
Bei Fragen: admin@kronos-soulution.de
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Stand: März 2026*
|
||||||
Reference in New Issue
Block a user