iitwelders/README-Server.md

256 lines
4.5 KiB
Markdown

# Server Deployment Guide - IIT Welders
## Voraussetzungen für Server-Deployment
### Server-Anforderungen
- **Betriebssystem**: Ubuntu 20.04+ / CentOS 7+ / Debian 10+
- **RAM**: Mindestens 2GB (4GB empfohlen)
- **CPU**: 1 Core (2 Cores empfohlen)
- **Speicher**: Mindestens 10GB freier Speicher
- **Docker**: Version 20.10+
- **Docker Compose**: Version 2.0+
### Domain & SSL (optional)
- Domain-Name für die Website
- SSL-Zertifikat (Let's Encrypt empfohlen)
## Schnellstart
### 1. Server vorbereiten
```bash
# Docker installieren (Ubuntu/Debian)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Docker Compose installieren
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Neustart erforderlich
sudo reboot
```
### 2. Projekt auf Server übertragen
```bash
# Mit Git (empfohlen)
git clone <your-repository-url>
cd iitwelders
# Oder mit SCP
scp -r ./iitwelders user@server:/home/user/
```
### 3. Deployment ausführen
```bash
# Produktions-Deployment
./deploy.sh
# Oder manuell
docker-compose up -d
```
## Detaillierte Anleitung
### Option 1: Einfaches Deployment (nur App)
```bash
# 1. Projekt klonen/übertragen
git clone <repository-url>
cd iitwelders
# 2. Dependencies installieren
npm install
# 3. Build erstellen
npm run build
# 4. Mit Docker starten
docker-compose up -d
# 5. Status prüfen
./deploy.sh status
```
### Option 2: Vollständiges Deployment (mit Nginx)
```bash
# 1. Alle Schritte aus Option 1
# 2. Nginx-Konfiguration anpassen (falls nötig)
# 3. SSL-Zertifikate hinzufügen (optional)
mkdir ssl
# SSL-Zertifikate in ssl/ Ordner kopieren
# 4. Mit Nginx starten
docker-compose up -d
# 5. Nginx-Konfiguration testen
docker exec iitwelders-nginx nginx -t
```
### Option 3: Mit Reverse Proxy (Traefik/Nginx)
```bash
# Für Produktionsumgebung mit automatischem SSL
# docker-compose.prod.yml erstellen (siehe unten)
```
## Konfiguration
### Umgebungsvariablen
```bash
# .env Datei erstellen
cp .env.example .env
# Anpassen nach Bedarf
nano .env
```
### Nginx-Konfiguration anpassen
```bash
# nginx.conf bearbeiten
nano nginx.conf
# Neustart nach Änderungen
docker-compose restart nginx
```
### SSL-Zertifikate (Let's Encrypt)
```bash
# Certbot installieren
sudo apt install certbot
# Zertifikat erstellen
sudo certbot certonly --standalone -d yourdomain.com
# Zertifikate in Docker-Container kopieren
sudo cp /etc/letsencrypt/live/yourdomain.com/*.pem ./ssl/
```
## Monitoring & Wartung
### Logs anzeigen
```bash
# Alle Logs
./deploy.sh logs
# Nur App-Logs
docker logs iitwelders-web
# Nur Nginx-Logs
docker logs iitwelders-nginx
```
### Health Check
```bash
# Automatischer Health Check
./deploy.sh health
# Manueller Check
curl http://localhost:3000
```
### Updates
```bash
# Code aktualisieren
git pull origin main
# Neues Deployment
./deploy.sh
# Oder nur App neu starten
docker-compose restart iitwelders-app
```
### Backup
```bash
# Container stoppen
./deploy.sh stop
# Backup erstellen
tar -czf backup-$(date +%Y%m%d).tar.gz .
# Container starten
./deploy.sh
```
## Troubleshooting
### Häufige Probleme
#### Port bereits belegt
```bash
# Ports prüfen
netstat -tulpn | grep :3000
# Prozess beenden
sudo kill -9 <PID>
```
#### Docker-Probleme
```bash
# Docker neu starten
sudo systemctl restart docker
# Container bereinigen
docker system prune -a
```
#### Speicherplatz
```bash
# Speicherplatz prüfen
df -h
# Docker-Images bereinigen
docker image prune -a
```
#### Logs prüfen
```bash
# System-Logs
journalctl -u docker
# Container-Logs
docker logs iitwelders-web --tail 100
```
## Sicherheit
### Firewall konfigurieren
```bash
# UFW aktivieren
sudo ufw enable
# Nur notwendige Ports öffnen
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
```
### SSL/TLS
- Let's Encrypt für kostenlose SSL-Zertifikate
- Automatische Erneuerung einrichten
- HSTS-Header aktivieren
### Updates
- Regelmäßige System-Updates
- Docker-Images aktualisieren
- Sicherheits-Patches installieren
## Performance-Optimierung
### Nginx-Optimierung
- Gzip-Kompression aktiviert
- Browser-Caching konfiguriert
- Rate Limiting aktiviert
### Docker-Optimierung
- Multi-stage Builds
- Alpine Linux Images
- Volume-Optimierung
## Support
Bei Problemen:
1. Logs prüfen: `./deploy.sh logs`
2. Health Check: `./deploy.sh health`
3. Status prüfen: `./deploy.sh status`
4. Container neu starten: `./deploy.sh stop && ./deploy.sh`