# StarHero24 – Installationsanleitung für eigenen Server

## Voraussetzungen

Ihr Server benötigt folgende Software:

| Software | Mindestversion | Installation |
|---|---|---|
| Node.js | 22+ | https://nodejs.org |
| pnpm | 10+ | `npm install -g pnpm` |
| MySQL oder MariaDB | 8.0+ / 10.6+ | Über Ihren Hoster oder `apt install mariadb-server` |

---

## Schritt 1 – Dateien auf den Server übertragen

Laden Sie das ZIP-Archiv herunter und entpacken Sie es auf Ihrem Server:

```bash
unzip starhero24.zip -d /var/www/starhero24
cd /var/www/starhero24
```

---

## Schritt 2 – Datenbank anlegen

Melden Sie sich in MySQL/MariaDB an und erstellen Sie die Datenbank:

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

---

## Schritt 3 – Umgebungsvariablen setzen

Erstellen Sie eine Datei namens `.env` im Projektverzeichnis:

```bash
nano /var/www/starhero24/.env
```

Füllen Sie folgende Werte ein:

```
# Datenbank
DATABASE_URL=mysql://starhero24_user:IHR_DB_PASSWORT@localhost:3306/starhero24

# E-Mail / SMTP (für Kontaktformular)
SMTP_HOST=mail.starhero24.com
SMTP_PORT=465
SMTP_USER=kontakt@starhero24.com
SMTP_PASS=IHR_SMTP_PASSWORT
SMTP_TO=kontakt@starhero24.com

# Sicherheit (mindestens 32 zufällige Zeichen)
# Generieren mit: openssl rand -hex 32
JWT_SECRET=HIER_LANGEN_ZUFAELLIGEN_STRING_EINTRAGEN

# Umgebung
NODE_ENV=production
```

---

## Schritt 4 – Abhängigkeiten installieren

```bash
cd /var/www/starhero24
pnpm install --frozen-lockfile
```

---

## Schritt 5 – Datenbank-Schema einrichten

```bash
pnpm db:push
```

---

## Schritt 6 – Produktions-Build erstellen

```bash
pnpm build
```

Der Build wird im Ordner `dist/` abgelegt.

---

## Schritt 7 – Server starten

**Manuell (zum Testen):**

```bash
node dist/index.js
```

**Dauerhaft mit PM2 (empfohlen):**

```bash
npm install -g pm2
pm2 start dist/index.js --name starhero24
pm2 save
pm2 startup
```

Die Website läuft dann standardmäßig auf Port **3000**.

---

## Schritt 8 – Nginx als Reverse Proxy einrichten (empfohlen)

Installieren Sie Nginx und erstellen Sie eine Konfigurationsdatei:

```bash
sudo apt install nginx
sudo nano /etc/nginx/sites-available/starhero24
```

Inhalt der Konfigurationsdatei:

```nginx
server {
    listen 80;
    server_name starhero24.com www.starhero24.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}
```

Aktivieren und starten:

```bash
sudo ln -s /etc/nginx/sites-available/starhero24 /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```

---

## Schritt 9 – SSL-Zertifikat (HTTPS) einrichten

```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d starhero24.com -d www.starhero24.com
```

Certbot richtet HTTPS automatisch ein und erneuert das Zertifikat automatisch.

---

## Schritt 10 – DNS-Einstellungen bei Ihrem Domain-Anbieter

Setzen Sie bei Ihrem Domain-Anbieter (z.B. IONOS, Strato) folgende DNS-Einträge:

| Typ | Name | Wert |
|---|---|---|
| A | @ | IP-Adresse Ihres Servers |
| A | www | IP-Adresse Ihres Servers |

---

## Häufige Probleme

**E-Mails werden nicht gesendet:**
- Prüfen Sie ob Port 465 auf Ihrem Server nicht durch eine Firewall blockiert wird
- Testen Sie die SMTP-Verbindung: `openssl s_client -connect mail.starhero24.com:465`

**Datenbank-Verbindungsfehler:**
- Prüfen Sie ob MySQL läuft: `sudo systemctl status mysql`
- Prüfen Sie die DATABASE_URL in der .env-Datei

**Port 3000 nicht erreichbar:**
- Firewall-Regel hinzufügen: `sudo ufw allow 3000` (nur zum Testen, danach Nginx verwenden)

---

## Support

Bei Fragen zur Website wenden Sie sich an: kontakt@starhero24.com
