Vertragsverwaltung_Plusfit24/README.md

7.3 KiB
Raw Blame History

PlusFit24 Mitgliedschafts-Anmeldesystem

Vollständige Installationsanleitung


🏗️ Übersicht deiner Server-Infrastruktur

Internet
    │
    ▼
NGINX (192.168.0.157) ← SSL Zertifikat hier
    │  plusfit24.software-joksch.com
    │  Proxy → Port 3100
    ▼
Node.js App Server (192.168.0.163:3100)
    │
    ▼
MariaDB (85.215.63.122:3306)

SCHRITT 1: Datenbank einrichten (MariaDB 85.215.63.122)

Verbinde dich mit deinem MariaDB Server:

mysql -h 85.215.63.122 -u root -p

Führe das Schema aus:

mysql -h 85.215.63.122 -u root -p < database/schema.sql

Erstelle einen dedizierten DB-User (sicherer als root):

CREATE USER 'plusfit24'@'192.168.0.163' IDENTIFIED BY 'DEIN_SICHERES_PASSWORT';
GRANT ALL PRIVILEGES ON plusfit24.* TO 'plusfit24'@'192.168.0.163';
FLUSH PRIVILEGES;

⚠️ Wichtig: Ersetze DEIN_SICHERES_PASSWORT mit einem echten starken Passwort!


SCHRITT 2: App auf Node.js Server einrichten (192.168.0.163)

2.1 Projekt auf den Server übertragen

Option A via Gitea (empfohlen):

# Auf dem Gitea-Server (192.168.0.221): Neues Repository anlegen
# Dann auf dem App-Server:
ssh user@192.168.0.163
cd /var/www
git clone http://192.168.0.221/dein-user/plusfit24.git
cd plusfit24

Option B direkt per SCP:

# Von deinem lokalen Rechner:
scp -r /pfad/zu/plusfit24 user@192.168.0.163:/var/www/plusfit24

2.2 Node.js installieren (falls noch nicht vorhanden)

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

# Version prüfen
node --version   # sollte v20.x.x zeigen
npm --version

2.3 Abhängigkeiten installieren

cd /var/www/plusfit24
npm install

2.4 Umgebungsvariablen konfigurieren

cp .env.example .env   # oder direkt:
nano .env

Fülle die .env aus:

DB_HOST=85.215.63.122
DB_PORT=3306
DB_USER=plusfit24
DB_PASSWORD=DEIN_SICHERES_PASSWORT    ← gleich wie in Schritt 1
DB_NAME=plusfit24

SESSION_SECRET=ein-sehr-langer-zufaelliger-string-hier-aendern

ADMIN_USER=admin
ADMIN_PASSWORD=DeinSicheresAdminPasswort123!

PORT=3100

🔐 Tipp: Session Secret generieren:

node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"

2.5 Test-Start (einmalig zum Prüfen)

node app.js
# Ausgabe: 🚀 PlusFit24 Server läuft auf Port 3100
# Ausgabe: ✅ Admin Account erstellt: admin

Mit Ctrl+C stoppen.


SCHRITT 3: PM2 installieren (Prozess-Manager)

# PM2 global installieren
sudo npm install -g pm2

# App mit PM2 starten
cd /var/www/plusfit24
pm2 start ecosystem.config.js

# Status prüfen
pm2 status

# Logs ansehen
pm2 logs plusfit24

# PM2 beim Systemstart automatisch starten
pm2 startup
# Den angezeigten Befehl kopieren und ausführen, dann:
pm2 save

Wichtige PM2 Befehle:

pm2 restart plusfit24   # App neu starten
pm2 stop plusfit24      # App stoppen
pm2 logs plusfit24      # Live-Logs anzeigen
pm2 monit               # Monitor-Ansicht

SCHRITT 4: NGINX konfigurieren (192.168.0.157)

4.1 NGINX Konfiguration kopieren

# Auf dem NGINX Server einloggen
ssh user@192.168.0.157

# Konfigurationsdatei erstellen
sudo nano /etc/nginx/sites-available/plusfit24

Inhalt aus der Datei nginx/plusfit24.conf einfügen.

⚠️ SSL Pfade anpassen! Suche im File nach:

ssl_certificate     /etc/ssl/certs/...
ssl_certificate_key /etc/ssl/private/...

Passe die Pfade auf deine tatsächlichen Zertifikat-Dateien an.

4.2 Site aktivieren

# Symlink erstellen
sudo ln -s /etc/nginx/sites-available/plusfit24 /etc/nginx/sites-enabled/

# Konfiguration prüfen
sudo nginx -t

# Bei "syntax is ok": NGINX neu laden
sudo systemctl reload nginx

4.3 Firewall prüfen (falls aktiv)

# Auf App-Server: Port 3100 für NGINX-Server freigeben
sudo ufw allow from 192.168.0.157 to any port 3100

SCHRITT 5: DNS einrichten

Bei deinem DNS-Anbieter einen A-Record erstellen:

Typ:   A
Name:  plusfit24.software-joksch.com
Ziel:  [Öffentliche IP deines NGINX-Servers]
TTL:   300

SCHRITT 6: Testen

  1. Datenbank-Verbindung: node -e "require('./config/database').query('SELECT 1').then(()=>console.log('DB OK')).catch(console.error)"

  2. App läuft: pm2 status → Status sollte "online" sein

  3. Webseite: https://plusfit24.software-joksch.com aufrufen

  4. Admin-Bereich: https://plusfit24.software-joksch.com/admin/login

    • Benutzername: admin (oder was du in .env gesetzt hast)
    • Passwort: aus der .env Datei

📋 Admin-Bereich Anleitung

Tarife verwalten

  • Neuer Tarif: Button "+ Neuer Tarif" → Formular ausfüllen
  • Deaktivieren: Tarif-Card → "⏸ Deaktivieren" (Tarif bleibt erhalten, erscheint nicht mehr auf der Webseite)
  • Preis ändern: Alten Tarif deaktivieren → Neuen Tarif mit neuem Preis erstellen
  • Löschen: Nur möglich wenn keine Mitglieder den Tarif haben

Mitglieder ansehen

  • Vollständige Liste aller angemeldeten Mitglieder
  • Suchfunktion nach Name oder E-Mail
  • ⚠️-Symbol zeigt Minderjährige

Passwort ändern

  • Admin → Einstellungen → Passwort ändern

🔧 Troubleshooting

App startet nicht:

pm2 logs plusfit24 --lines 50
# Häufige Ursachen: DB nicht erreichbar, .env fehlt, Port belegt

DB-Verbindungsfehler:

# Verbindung testen
mysql -h 85.215.63.122 -u plusfit24 -p plusfit24

NGINX 502 Bad Gateway:

# Prüfen ob App läuft
pm2 status
# Prüfen ob Port erreichbar
curl http://192.168.0.163:3100

Nach Code-Updates:

cd /var/www/plusfit24
git pull          # falls Gitea genutzt
npm install       # falls neue Dependencies
pm2 restart plusfit24

📁 Projektstruktur

plusfit24/
├── app.js                    # Haupt-Einstiegspunkt
├── package.json
├── .env                      # ⚠️ Nicht in Git einchecken!
├── ecosystem.config.js       # PM2 Konfiguration
├── config/
│   └── database.js           # DB-Verbindung
├── middleware/
│   └── auth.js               # Admin-Authentifizierung
├── routes/
│   ├── index.js              # Öffentliche Routen (Tarife, Anmeldung)
│   ├── admin.js              # Admin-Routen
│   └── api.js                # API (E-Mail-Prüfung, Formular-Submit)
├── views/
│   ├── index.ejs             # Tarif-Auswahl
│   ├── signup.ejs            # Anmelde-Formular (4 Schritte)
│   ├── success.ejs           # Erfolgsseite
│   ├── error.ejs             # Fehlerseite
│   └── admin/
│       ├── login.ejs         # Admin Login
│       └── dashboard.ejs     # Admin Dashboard
├── public/
│   ├── css/style.css         # Alle Styles
│   └── pdfs/
│       └── Einverstaendniserklaerung.pdf
├── database/
│   └── schema.sql            # Datenbank-Schema
└── nginx/
    └── plusfit24.conf        # NGINX Konfiguration

🔐 Sicherheitshinweise

  1. .env niemals in Git einchecken (ist in .gitignore)
  2. Starke Passwörter für DB und Admin verwenden
  3. DB-User nur von App-Server-IP Zugriff erlauben
  4. SESSION_SECRET muss ein langer, zufälliger String sein
  5. Admin-URL ist /admin/login nicht öffentlich bewerben