pointcab_webexport/INSTALLATION.md

291 lines
6.0 KiB
Markdown

# Installation - PointCab Webexport Server
Diese Anleitung beschreibt die komplette Installation auf einem frischen Ubuntu 24.04 Server.
## 📋 Systemanforderungen
| Anforderung | Minimum | Empfohlen |
|-------------|---------|-----------|
| OS | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
| RAM | 2 GB | 4 GB |
| CPU | 2 Kerne | 4 Kerne |
| Speicher | 20 GB | 50 GB+ |
| Netzwerk | Öffentliche IP | Öffentliche IP + Domain |
## 🔧 Schritt 1: System vorbereiten
```bash
# System aktualisieren
sudo apt update && sudo apt upgrade -y
# Grundlegende Pakete installieren
sudo apt install -y curl wget git unzip build-essential
```
## 🐘 Schritt 2: PostgreSQL installieren
```bash
# PostgreSQL installieren
sudo apt install -y postgresql postgresql-contrib
# PostgreSQL starten und aktivieren
sudo systemctl start postgresql
sudo systemctl enable postgresql
# PostgreSQL-Version prüfen
psql --version
```
### Datenbank und Benutzer erstellen
```bash
# Als postgres-Benutzer anmelden
sudo -u postgres psql
# In der PostgreSQL-Shell:
CREATE USER pointcab_user WITH PASSWORD 'IhrSicheresPasswort';
CREATE DATABASE pointcab_db OWNER pointcab_user;
GRANT ALL PRIVILEGES ON DATABASE pointcab_db TO pointcab_user;
\q
```
## 🟢 Schritt 3: Node.js installieren
```bash
# NodeSource Repository hinzufügen (Node.js 18.x LTS)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# Node.js installieren
sudo apt install -y nodejs
# Version prüfen
node --version # sollte v18.x.x zeigen
npm --version
```
## 📦 Schritt 4: Projekt installieren
```bash
# Verzeichnis erstellen
sudo mkdir -p /var/www/pointcab_webexport_server
sudo chown $USER:$USER /var/www/pointcab_webexport_server
# In das Verzeichnis wechseln
cd /var/www/pointcab_webexport_server
# Repository klonen (oder Dateien kopieren)
# git clone https://your-gitea-server/pointcab-webexport.git .
# ODER: Dateien manuell kopieren
# nodejs_space-Ordner verwenden
cd nodejs_space
# Abhängigkeiten installieren
npm install
```
## ⚙️ Schritt 5: Umgebungsvariablen konfigurieren
```bash
# .env-Datei erstellen
cat > /var/www/pointcab_webexport_server/nodejs_space/.env << 'EOF'
# Server-Konfiguration
PORT=3000
NODE_ENV=production
# Datenbank-Verbindung
DATABASE_URL="postgresql://pointcab_user:IhrSicheresPasswort@localhost:5432/pointcab_db"
# Upload-Verzeichnis
UPLOAD_DIR=/var/www/pointcab_webexport_server/nodejs_space/uploads
# Session-Secret (ändern Sie dies!)
SESSION_SECRET=ihr-geheimer-session-schluessel-mindestens-32-zeichen
# Admin-Passwort (ändern Sie dies!)
ADMIN_PASSWORD=IhrAdminPasswort
EOF
```
**Wichtig:** Ändern Sie alle Passwörter und Secrets!
## 🗄️ Schritt 6: Datenbank migrieren
```bash
cd /var/www/pointcab_webexport_server/nodejs_space
# Prisma-Client generieren
npx prisma generate
# Datenbank-Schema anwenden
npx prisma db push
# (Optional) Prisma Studio zur DB-Inspektion
# npx prisma studio
```
## 🔨 Schritt 7: Projekt kompilieren
```bash
cd /var/www/pointcab_webexport_server/nodejs_space
# TypeScript kompilieren
npm run build
# Prüfen ob dist/ erstellt wurde
ls -la dist/
```
## 🚀 Schritt 8: PM2 installieren und konfigurieren
```bash
# PM2 global installieren
sudo npm install -g pm2
# Anwendung starten
cd /var/www/pointcab_webexport_server/nodejs_space
pm2 start dist/main.js --name pointcab-server
# Status prüfen
pm2 status
# Logs anzeigen
pm2 logs pointcab-server
# PM2 Autostart einrichten
pm2 startup
pm2 save
```
## 🔍 Schritt 9: Installation verifizieren
```bash
# Health-Check
curl http://localhost:3000/health
# Sollte ausgeben: {"status":"ok"}
# Admin-Dashboard testen (im Browser)
# http://IHRE-IP:3000/admin/dashboard
```
## 🌐 Schritt 10: Nginx Proxy Manager (Optional)
### Installation via Docker
```bash
# Docker installieren
sudo apt install -y docker.io docker-compose
# Docker starten
sudo systemctl start docker
sudo systemctl enable docker
# Nginx Proxy Manager starten
mkdir -p ~/nginx-proxy-manager
cd ~/nginx-proxy-manager
cat > docker-compose.yml << 'EOF'
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
EOF
sudo docker-compose up -d
```
### Nginx Proxy Manager konfigurieren
1. Öffnen Sie `http://IHRE-IP:81`
2. Standard-Login: `admin@example.com` / `changeme`
3. Passwort ändern
4. Neuen Proxy Host hinzufügen:
- Domain: `pointcab-webexport.ihre-domain.de`
- Forward Host: `localhost`
- Forward Port: `3000`
- SSL aktivieren (Let's Encrypt)
## 📁 Upload-Verzeichnis erstellen
```bash
mkdir -p /var/www/pointcab_webexport_server/nodejs_space/uploads
chmod 755 /var/www/pointcab_webexport_server/nodejs_space/uploads
```
## 🔒 Sicherheitshinweise
1. **Firewall konfigurieren:**
```bash
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
```
2. **Passwörter ändern:**
- PostgreSQL-Passwort
- Admin-Passwort
- Session-Secret
3. **Backups einrichten:**
```bash
# Datenbank-Backup
pg_dump -U pointcab_user pointcab_db > backup.sql
```
## ✅ Checkliste
- [ ] Ubuntu 24.04 installiert
- [ ] System aktualisiert
- [ ] PostgreSQL installiert und konfiguriert
- [ ] Node.js 18.x installiert
- [ ] Projekt-Dateien kopiert
- [ ] .env konfiguriert
- [ ] Datenbank migriert
- [ ] Projekt kompiliert
- [ ] PM2 konfiguriert
- [ ] (Optional) Nginx Proxy Manager konfiguriert
- [ ] Health-Check erfolgreich
## 🆘 Fehlerbehebung
### PostgreSQL-Verbindungsfehler
```bash
# PostgreSQL-Status prüfen
sudo systemctl status postgresql
# Logs prüfen
sudo tail -f /var/log/postgresql/postgresql-*-main.log
```
### PM2-Fehler
```bash
# Logs anzeigen
pm2 logs pointcab-server --lines 50
# Neustart
pm2 restart pointcab-server
```
### Port bereits belegt
```bash
# Prozess auf Port 3000 finden
sudo lsof -i :3000
# Prozess beenden
sudo kill -9 <PID>
```
---
**Nächster Schritt:** [DEPLOYMENT.md](DEPLOYMENT.md)