- epic-claimer-new.js: Complete rewrite with practical approach - FlareSolverr integration for Cloudflare solving - Cookie persistence (saved to epic-cookies.json) - Auto-load cookies on startup (no login needed if valid) - Manual login fallback via noVNC if needed - Proper 2FA/OTP support - Better error handling and logging - SETUP.md: Complete setup guide - Docker Compose examples - Environment variable reference - Troubleshooting section - 2FA setup instructions - Volume backup/restore - README.md: Add reference to SETUP.md - OAUTH_DEVICE_FLOW_ISSUE.md: Document why OAuth Device Flow doesn't work - Epic Games doesn't provide public device auth credentials - Client credentials flow requires registered app - Hybrid approach is the practical solution How it works: 1. First run: Login via browser (FlareSolverr helps with Cloudflare) 2. Cookies saved to epic-cookies.json 3. Subsequent runs: Load cookies, no login needed 4. If cookies expire: Auto-fallback to login flow 5. Manual login via noVNC if automation fails This is the approach used by all successful Epic Games claimer projects.
7.7 KiB
7.7 KiB
Epic Games Free Games Claimer - Setup Guide
🚀 Quick Start (Docker Compose)
Voraussetzungen
- Docker & Docker Compose
- Epic Games Account (Email, Passwort, optional 2FA)
1. docker-compose.yml erstellen
services:
# FlareSolverr für Cloudflare Bypass
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
ports:
- "8191:8191"
environment:
- LOG_LEVEL=info
- LOG_HTML=false
- CAPTCHA_SOLVER=none
restart: unless-stopped
networks:
- fgc-network
# Free Games Claimer
free-games-claimer:
image: git.sky-net.it/nocci/free-games-claimer:latest
# ODER: build: . # Selbst bauen für neueste Version
container_name: fgc
ports:
- "6080:6080" # noVNC (Web-Browser für Login)
# - "5900:5900" # VNC (optional)
volumes:
- fgc-data:/fgc/data
- fgc-browser:/home/fgc/.cache/browser
- fgc-playwright:/home/fgc/.cache/ms-playwright
environment:
# Epic Games Login
- EG_EMAIL=deine@email.com
- EG_PASSWORD=dein_passwort
- EG_OTPKEY= # Optional: 2FA Secret (Base32)
# Login-Modus
- EG_MODE=new # "new" für API-Modus, "legacy" für Browser
# FlareSolverr Integration
- FLARESOLVERR_URL=http://flaresolverr:8191/v1
# Browser-Einstellungen
- SHOW=0 # 0=headless, 1=visible (für Debugging)
- WIDTH=1920
- HEIGHT=1080
# Timeouts
- TIMEOUT=60 # Standard-Timeout in Sekunden
- LOGIN_TIMEOUT=180 # Login-Timeout (länger für Captchas)
# Optional: Notifications
# - NOTIFY=apprise://...
# Keep-Alive (Container läuft weiter nach Durchlauf)
- KEEP_ALIVE_SECONDS=86400
networks:
- fgc-network
depends_on:
- flaresolverr
restart: unless-stopped
networks:
fgc-network:
driver: bridge
volumes:
fgc-data:
fgc-browser:
fgc-playwright:
2. Environment-Variablen setzen
WICHTIG: Ersetze die Platzhalter:
# .env Datei erstellen (nicht versionieren!)
cat > .env << EOF
EG_EMAIL=deine@email.com
EG_PASSWORD=dein_passwort
EG_OTPKEY= # Optional, wenn 2FA aktiv
NOTIFY= # Optional, für Benachrichtigungen
EOF
3. Starten
# Container starten
docker compose up -d
# Logs ansehen
docker compose logs -f fgc
# Container stoppen
docker compose down
🔐 Erster Login (WICHTIG!)
Mit FlareSolverr (Empfohlen)
FlareSolverr löst Cloudflare Challenges automatisch:
- Container starten (FlareSolverr läuft mit)
- Erster Login wird automatisch versucht
- Falls Captcha: FlareSolverr versucht es zu lösen
- Nach Erfolg: Tokens werden gespeichert
Ohne FlareSolverr (Manuell)
Falls Cloudflare Captchas nicht automatisch lösbar sind:
# Container mit visible Browser starten
docker compose up -d
# noVNC im Browser öffnen
http://localhost:6080
# Manuell bei Epic Games einloggen
# Cookies/Tokens werden automatisch gespeichert!
Beim nächsten Start: Kein Login nötig (gespeicherte Session)!
📋 Environment-Variablen
Epic Games Login
| Variable | Beschreibung | Beispiel |
|---|---|---|
EG_EMAIL |
Epic Games Account Email | user@example.com |
EG_PASSWORD |
Epic Games Passwort | secret123 |
EG_OTPKEY |
2FA Secret (Base32) | JBSWY3DPEHPK3PXP |
EG_PARENTALPIN |
Parental Control PIN | 1234 |
Login-Modus
| Variable | Beschreibung | Werte |
|---|---|---|
EG_MODE |
Login-Methode | new (API), legacy (Browser) |
Browser & Display
| Variable | Beschreibung | Default |
|---|---|---|
SHOW |
Visible Browser | 0 (headless) |
WIDTH |
Browser Breite | 1920 |
HEIGHT |
Browser Höhe | 1080 |
BROWSER_DIR |
Browser Profil Pfad | /fgc/data/browser |
Timeouts
| Variable | Beschreibung | Default |
|---|---|---|
TIMEOUT |
Standard-Timeout (Sekunden) | 60 |
LOGIN_TIMEOUT |
Login-Timeout (Sekunden) | 180 |
LOGIN_VISIBLE_TIMEOUT |
Login Button Detection (ms) | 20000 |
FlareSolverr
| Variable | Beschreibung | Default |
|---|---|---|
FLARESOLVERR_URL |
FlareSolverr API URL | http://flaresolverr:8191/v1 |
Notifications
| Variable | Beschreibung | Beispiel |
|---|---|---|
NOTIFY |
Apprise Notification URL | tgram://... |
NOTIFY_TITLE |
Notification Titel | Free Games Claimer |
Debugging
| Variable | Beschreibung | Default |
|---|---|---|
DEBUG |
Playwright Inspector | 0 |
DEBUG_NETWORK |
Log Network Requests | 0 |
DRYRUN |
Nicht wirklich claimen | 0 |
TIME |
Timing-Informationen | 0 |
🛠️ Troubleshooting
Cloudflare / Captcha Probleme
Symptom: "Incorrect response" oder Captcha-Schleife
Lösung 1: FlareSolverr prüfen
docker compose logs flaresolverr
# Sollte "Serving on http://0.0.0.0:8191" zeigen
Lösung 2: Manuelles Login
# noVNC öffnen
http://localhost:6080
# Einmal manuell einloggen
# Cookies bleiben gespeichert!
Lösung 3: Browser-Profil resetten
docker volume rm fgc-browser
docker compose up -d
Login schlägt fehl
Symptom: "Login failed" oder Timeout
Lösung:
- Email/Passwort prüfen
- 2FA: EG_OTPKEY korrekt setzen
- Mit
SHOW=1debuggen
Container startet nicht
Symptom: Exit Code 1 oder hängt
Logs prüfen:
docker compose logs fgc
Volumes prüfen:
docker volume ls | grep fgc
📊 2FA / OTP einrichten
Epic Games 2FA Secret auslesen
- Epic Games Website → Account → Passwort & Sicherheit
- Zwei-Faktor-Authentifizierung → Authentifizierungs-App
- NICHT QR-Code scannen, sondern "Manuell eingeben" wählen
- Secret kopieren (Base32, z.B.
JBSWY3DPEHPK3PXP)
In docker-compose.yml
environment:
- EG_OTPKEY=JBSWY3DPEHPK3PXP # Dein Secret hier
🔄 Updates
Image Update
# Aktuellen Container stoppen
docker compose down
# Neues Image pullen
docker compose pull
# Neu starten
docker compose up -d
Selbst bauen (neueste Version)
# In docker-compose.yml: build: . statt image: ...
cd /path/to/free-games-claimer
docker compose build --no-cache
docker compose up -d
📁 Volumes (Persistenz)
| Volume | Inhalt | Wichtig |
|---|---|---|
fgc-data |
JSON-Datenbank, Screenshots | ✅ Claim-Status |
fgc-browser |
Browser-Profil, Cookies | ✅ Login-Session |
fgc-playwright |
Playwright Browser | ⚡ Schnellere Starts |
Backup:
# Alle Volumes sichern
docker run --rm -v fgc-data:/data -v $(pwd)/backup:/backup alpine tar czf /backup/fgc-data.tar.gz -C /data .
Restore:
docker run --rm -v fgc-data:/data -v $(pwd)/backup:/backup alpine tar xzf /backup/fgc-data.tar.gz -C /data
🎯 Nächste Schritte
- Einrichten: docker-compose.yml anpassen
- Starten:
docker compose up -d - Erster Login: noVNC oder mit FlareSolverr
- Automatisieren: Cron-Job für regelmäßige Ausführung
Cron-Job Beispiel (alle 6 Stunden)
# In docker-compose.yml
command: >
bash -c "
node epic-games &&
node gog &&
sleep 86400
"
Oder mit Host-Cron:
# Host-Cron bearbeiten
crontab -e
# Alle 6 Stunden
0 */6 * * * docker compose -f /path/to/docker-compose.yml up --rm free-games-claimer
🆘 Support
- Issues: https://git.sky-net.it/nocci/free-games-claimer/issues
- Dokumentation: README.md im Repository
- FlareSolverr: https://github.com/FlareSolverr/FlareSolverr