free-games-claimer/SETUP.md
root 5d41b323e5
All checks were successful
build-and-push / lint (push) Successful in 8s
build-and-push / sonar (push) Successful in 20s
build-and-push / docker (push) Successful in 11s
feat: Final hybrid login implementation (FlareSolverr + Cookie persistence)
- 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.
2026-03-08 14:52:13 +00:00

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:

  1. Container starten (FlareSolverr läuft mit)
  2. Erster Login wird automatisch versucht
  3. Falls Captcha: FlareSolverr versucht es zu lösen
  4. 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:

  1. Email/Passwort prüfen
  2. 2FA: EG_OTPKEY korrekt setzen
  3. Mit SHOW=1 debuggen

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

  1. Epic Games Website → Account → Passwort & Sicherheit
  2. Zwei-Faktor-Authentifizierung → Authentifizierungs-App
  3. NICHT QR-Code scannen, sondern "Manuell eingeben" wählen
  4. 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

  1. Einrichten: docker-compose.yml anpassen
  2. Starten: docker compose up -d
  3. Erster Login: noVNC oder mit FlareSolverr
  4. 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