iitwelders/README-Server.md

4.5 KiB

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

# 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

# Mit Git (empfohlen)
git clone <your-repository-url>
cd iitwelders

# Oder mit SCP
scp -r ./iitwelders user@server:/home/user/

3. Deployment ausführen

# Produktions-Deployment
./deploy.sh

# Oder manuell
docker-compose up -d

Detaillierte Anleitung

Option 1: Einfaches Deployment (nur App)

# 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)

# 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)

# Für Produktionsumgebung mit automatischem SSL
# docker-compose.prod.yml erstellen (siehe unten)

Konfiguration

Umgebungsvariablen

# .env Datei erstellen
cp .env.example .env

# Anpassen nach Bedarf
nano .env

Nginx-Konfiguration anpassen

# nginx.conf bearbeiten
nano nginx.conf

# Neustart nach Änderungen
docker-compose restart nginx

SSL-Zertifikate (Let's Encrypt)

# 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

# Alle Logs
./deploy.sh logs

# Nur App-Logs
docker logs iitwelders-web

# Nur Nginx-Logs
docker logs iitwelders-nginx

Health Check

# Automatischer Health Check
./deploy.sh health

# Manueller Check
curl http://localhost:3000

Updates

# Code aktualisieren
git pull origin main

# Neues Deployment
./deploy.sh

# Oder nur App neu starten
docker-compose restart iitwelders-app

Backup

# 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

# Ports prüfen
netstat -tulpn | grep :3000

# Prozess beenden
sudo kill -9 <PID>

Docker-Probleme

# Docker neu starten
sudo systemctl restart docker

# Container bereinigen
docker system prune -a

Speicherplatz

# Speicherplatz prüfen
df -h

# Docker-Images bereinigen
docker image prune -a

Logs prüfen

# System-Logs
journalctl -u docker

# Container-Logs
docker logs iitwelders-web --tail 100

Sicherheit

Firewall konfigurieren

# 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