# YourPart Deployment Anleitung

Diese Anleitung beschreibt, wie Sie die YourPart-Anwendung auf einem Ubuntu 22.04 Server deployen.

## Voraussetzungen

- Ubuntu 22.04 Server
- Node.js 18+ installiert
- MySQL/MariaDB installiert und konfiguriert
- Redis installiert
- Apache2 installiert
- SSL-Zertifikate von Let's Encrypt (bereits vorhanden)

## Installation der Abhängigkeiten

```bash
# Node.js installieren
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# MySQL installieren
sudo apt install mysql-server

# Redis installieren
sudo apt install redis-server

# Apache2 installieren
sudo apt install apache2

# Apache-Module aktivieren
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2enmod rewrite
sudo a2enmod ssl
```

## Konfiguration

### 1. Datenbank einrichten

```bash
sudo mysql_secure_installation
sudo mysql -u root -p
```

```sql
CREATE DATABASE yourpart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'yourpart'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON yourpart.* TO 'yourpart'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```

### 2. Redis konfigurieren

```bash
sudo nano /etc/redis/redis.conf
```

Stellen Sie sicher, dass Redis auf localhost läuft und ein Passwort gesetzt ist.

### 3. Umgebungsvariablen konfigurieren

Erstellen Sie eine `.env`-Datei im Backend-Verzeichnis:

```bash
cd backend
cp .env.example .env
nano .env
```

Wichtige Variablen:
```env
NODE_ENV=production
PORT=2020
DB_HOST=localhost
DB_USER=yourpart
DB_PASS=your_secure_password
DB_NAME=yourpart
REDIS_HOST=localhost
REDIS_PASS=your_redis_password
```

## Deployment

### 1. Skripte ausführbar machen

```bash
chmod +x deploy.sh deploy-backend.sh build-frontend.sh
```

### 2. Deployment ausführen

```bash
./deploy.sh
```

Das Skript wird automatisch:
- Das Frontend bauen
- Den Backend-Service installieren
- Die Apache-Konfiguration einrichten
- Alle Services starten

## Verifizierung

### 1. Service-Status prüfen

```bash
sudo systemctl status yourpart.service
sudo systemctl status apache2
```

### 2. Logs überprüfen

```bash
# Backend-Logs
sudo journalctl -u yourpart.service -f

# Apache-Logs
sudo tail -f /var/log/apache2/yourpart.*.log
```

### 3. Anwendung testen

Öffnen Sie in Ihrem Browser:
- https://www.your-part.de

## Wartung

### Service neu starten

```bash
sudo systemctl restart yourpart.service
sudo systemctl reload apache2
```

### Updates deployen

```bash
git pull origin main
./deploy.sh
```

### Logs rotieren

```bash
sudo logrotate -f /etc/logrotate.d/apache2
```

## Troubleshooting

### Backend startet nicht

```bash
sudo journalctl -u yourpart.service -n 50
```

Prüfen Sie:
- Datenbankverbindung
- Redis-Verbindung
- Port 2020 ist verfügbar
- Berechtigungen in `/opt/yourpart/backend`

### Apache-Fehler

```bash
sudo apache2ctl configtest
sudo tail -f /var/log/apache2/error.log
```

### SSL-Probleme

```bash
sudo certbot certificates
sudo certbot renew --dry-run
```

## Sicherheit

- Firewall konfigurieren (nur Port 80, 443, 22 öffnen)
- Regelmäßige Updates
- Datenbank-Backups
- SSL-Zertifikate erneuern
- Logs überwachen
