4.5 KiB
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:
- Logs prüfen:
./deploy.sh logs - Health Check:
./deploy.sh health - Status prüfen:
./deploy.sh status - Container neu starten:
./deploy.sh stop && ./deploy.sh