feat(docker): update ports to 10001 (frontend) and 10002 (backend)

This commit is contained in:
Andrej Spielmann
2026-03-26 15:31:58 +01:00
parent 7210d09821
commit 0721cbf879
4 changed files with 287 additions and 0 deletions
+202
View File
@@ -0,0 +1,202 @@
# Docker Deployment Guide für Unraid
Diese Anleitung beschreibt die Deployment von WrestleDesk auf einem Unraid-Server mit Docker Compose. **Nginx Proxy Manager läuft bereits zentral.**
## Voraussetzungen
- Unraid Server mit Docker Compose Plugin
- Domain (z.B. rce.playman.top) mit DNS A-Record auf Unraid-IP
- Nginx Proxy Manager läuft bereits (Port 81 für Admin-UI)
## Schnellstart
### 1. Repository klonen
```bash
cd /mnt/user/appdata/
mkdir wrestledesk && cd wrestledesk
git clone http://192.168.101.42:3023/PlayMan/WrestleDesk.git .
git checkout feature/pwa # Wichtig: PWA Branch verwenden
```
### 2. Umgebungsvariablen konfigurieren
```bash
cp .env.example .env
nano .env # Oder dein bevorzugter Editor
```
**Wichtige Werte in .env ändern:**
```env
# Backend
SECRET_KEY=dein-sehr-langer-zufälliger-schlüssel-mindestens-50-zeichen
DATABASE_URL=sqlite:///db.sqlite3
```
**Tipp für SECRET_KEY:**
```bash
openssl rand -base64 50
```
### 3. Docker Container starten
```bash
docker-compose up -d --build
```
Das erste Bauen kann 5-10 Minuten dauern.
### 4. Im Nginx Proxy Manager konfigurieren
1. Öffne deinen Nginx Proxy Manager (normalerweise `http://deine-unraid-ip:81`)
2. **Proxy Hosts****Add Proxy Host**
**Einstellungen für Frontend:**
- **Domain Names:** `rce.playman.top`
- **Scheme:** `http`
- **Forward Hostname / IP:** `deine-unraid-ip`
- **Forward Port:** `3000`
- **Block Common Exploits:** ✅ Aktivieren
**Einstellungen für Backend (API):**
- **Domain Names:** `rce.playman.top`
- **Scheme:** `http`
- **Forward Hostname / IP:** `deine-unraid-ip`
- **Forward Port:** `8000`
- **Advanced Tab** → **Custom Locations**:
- Location: `/api/v1`
- Forward Hostname: `deine-unraid-ip`
- Forward Port: `8000`
**SSL Tab:**
- **SSL Certificate:** `Request a new SSL Certificate`
- **Force SSL:** ✅ Aktivieren
- **HTTP/2 Support:** ✅ Aktivieren
- **Save**
### 5. DNS einrichten
In deinem Domain-Provider:
- **Type:** A
- **Name:** rce (oder @ für Root)
- **Value:** Deine Unraid Server IP
- **TTL:** 300
### 6. Fertig!
Nach wenigen Minuten sollte WrestleDesk erreichbar sein unter:
- **https://rce.playman.top**
## Wartung
### Updates durchführen
```bash
cd /mnt/user/appdata/wrestledesk
git pull origin feature/pwa # Oder main
docker-compose down
docker-compose up -d --build
```
### Logs ansehen
```bash
# Alle Services
docker-compose logs -f
# Nur Frontend
docker-compose logs -f frontend
# Nur Backend
docker-compose logs -f backend
```
### Backup
```bash
# Datenbank + Media Backup erstellen
cd /mnt/user/appdata/wrestledesk
tar czf backup-$(date +%Y%m%d).tar.gz backend/db.sqlite3 backend/media/
# Backup zu Unraid Array verschieben
mv backup-*.tar.gz /mnt/user/backups/wrestledesk/
```
### Container stoppen
```bash
docker-compose down
```
## Port-Belegung
| Service | Port | Beschreibung |
|---------|------|--------------|
| Frontend | 3000 | Next.js App |
| Backend | 8000 | Django API |
**Wichtig:** Diese Ports müssen von außen NICHT erreichbar sein - nur über Nginx Proxy Manager!
## Fehlerbehebung
### Frontend zeigt "Backend not reachable"
Prüfe ob die API-URL korrekt ist:
```bash
docker-compose exec frontend env | grep API_URL
# Sollte zeigen: NEXT_PUBLIC_API_URL=https://rce.playman.top/api/v1
```
### CORS Fehler im Browser
Backend .env prüfen:
```bash
docker-compose exec backend env | grep CORS
# Sollte zeigen: CORS_ALLOWED_ORIGINS=https://rce.playman.top
```
### Container starten nicht
```bash
# Prüfen was den Port blockiert
netstat -tlnp | grep -E '(:3000|:8000)'
# Oder: Container logs prüfen
docker-compose logs --tail 50
```
### SSL Zertifikat wird nicht erstellt
- Prüfe ob Port 80 und 443 von außen erreichbar sind
- Prüfe DNS A-Record (sollte auf Unraid-IP zeigen)
- Warte 24h nach DNS-Änderungen
- Versuche "Renew" im Nginx Proxy Manager
## Sicherheitshinweise
1. **Ändere das Nginx Proxy Manager Passwort** nach dem ersten Login
2. **Verwende ein starkes SECRET_KEY** in .env (min. 50 Zeichen)
3. **Aktiviere "Block Common Exploits"** im Nginx Proxy Manager
4. **Halte Docker Images aktuell:** `docker-compose pull && docker-compose up -d`
5. **Backup regelmäßig durchführen**
## Architektur
```
Internet
Nginx Proxy Manager (auf Unraid, zentral)
↓ (Reverse Proxy)
┌──────────────┐ ┌──────────────┐
│ Frontend │←──→│ Backend │
│ Port 3000 │ │ Port 8000 │
└──────────────┘ └──────────────┘
```
## Support
Bei Problemen:
1. Logs prüfen: `docker-compose logs`
2. Container Status: `docker-compose ps`
3. Netzwerk prüfen: `docker network ls`
+23
View File
@@ -0,0 +1,23 @@
FROM python:3.11-slim
WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN mkdir -p /app/media /app/staticfiles
EXPOSE 8000
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "4", "--threads", "2", "--timeout", "60", "wrestleDesk.wsgi:application"]
+36
View File
@@ -0,0 +1,36 @@
version: '3.8'
services:
backend:
build: ./backend
container_name: wrestledesk-backend
restart: unless-stopped
ports:
- '10002:8000'
volumes:
- ./backend/media:/app/media
- ./backend/staticfiles:/app/staticfiles
environment:
- SECRET_KEY=${SECRET_KEY}
- DEBUG=False
- ALLOWED_HOSTS=localhost,127.0.0.1,rce.playman.top,nginx-proxy-manager
- CORS_ALLOWED_ORIGINS=https://rce.playman.top
- DATABASE_URL=${DATABASE_URL}
networks:
- wrestledesk-network
frontend:
build: ./frontend
container_name: wrestledesk-frontend
restart: unless-stopped
ports:
- '10001:3000'
environment:
- NEXT_PUBLIC_API_URL=https://rce.playman.top/api/v1
- NODE_ENV=production
networks:
- wrestledesk-network
networks:
wrestledesk-network:
driver: bridge
+26
View File
@@ -0,0 +1,26 @@
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
ENV PORT=3000
ENV HOSTNAME="0.0.0.0"
CMD ["node", "server.js"]