All checks were successful
build-and-push / docker (push) Successful in 1m8s
- remove outdated CI/build instructions
- add new environment variable options for configuration
🐛 fix(util): handle notification errors gracefully
- resolve promise instead of rejecting on notification errors
- prevent whole run from failing due to notification issues
3.5 KiB
3.5 KiB
Free Games Claimer (Fork)
Automates claiming of free games for:
- Epic Games Store (and Epic-linked assets)
- Amazon Prime Gaming / Luna claims (including external stores like GOG, Legacy, Microsoft)
- GOG giveaways
- Optional extras: Steam stats, AliExpress dailies (experimental)
This fork adds a Forgejo CI pipeline and instructions for running the pre-built image from the registry at git.sky-net.it/nocci/free-games-claimer.
Requirements
- Docker or Podman (recommended), or Node.js ≥ 20 for local runs
- Optional notifications:
pip install apprise - Playwright dependencies are baked into the container; locally,
npm installdownloads Firefox.
Quickstart (Docker Run)
docker run --rm -it \
-p 6080:6080 \
-v fgc:/fgc/data \
-e SHOW=1 \
git.sky-net.it/nocci/free-games-claimer:latest \
node prime-gaming.js
- Ports 6080/5900: noVNC/VNC (only needed with
SHOW=1) - Data/configs are stored in volume
fgcunder/fgc/data
Docker Compose Example
services:
fgc:
image: git.sky-net.it/nocci/free-games-claimer:latest
container_name: fgc
environment:
- SHOW=1 # show browser via VNC/noVNC
# - PG_EMAIL=...
# - PG_PASSWORD=...
# - PG_OTPKEY=...
volumes:
- fgc:/fgc/data
ports:
- "6080:6080" # noVNC
# - "5900:5900" # VNC optional
command: bash -c "node epic-games; node prime-gaming; node gog"
volumes:
fgc:
Configuration (Environment Variables)
Common options:
SHOW=0/1(0 = headless, 1 = UI)WIDTH,HEIGHT(browser size)TIMEOUT,LOGIN_TIMEOUT(seconds)- Login:
EMAIL,PASSWORDglobal; per storeEG_EMAIL,EG_PASSWORD,EG_OTPKEY,PG_EMAIL,PG_PASSWORD,PG_OTPKEY,GOG_EMAIL,GOG_PASSWORD - Prime Gaming:
PG_REDEEM=1(auto-redeem keys, experimental),PG_CLAIMDLC=1,PG_TIMELEFT=<days>to skip long-remaining offers - Screenshots:
SCREENSHOTS_DIR(defaultdata/screenshots) - Notifications:
NOTIFY='...'(Apprise URL), optionalNOTIFY_TITLE - Browser profile:
BROWSER_DIR(defaultdata/browser) - Recording:
RECORD=1to save videos/HAR todata/record/ - Debugging:
DEBUG=1(opens Playwright inspector),DEBUG_NETWORK=1(logs requests),TIME=1(prints timings) - Dry run / Interaction:
DRYRUN=1(do not claim),INTERACTIVE=1(ask before claiming),HEADLESSis derived fromSHOW/DEBUG - Directories:
SCREENSHOTS_DIR,BROWSER_DIR,DATA_DIR(prefix for data; default underdata/) - VNC/noVNC:
VNC_PASSWORD(for Docker entrypoint),NOVNC_PORT/VNC_PORT(Docker) - General timeouts:
TIMEOUT(per action),LOGIN_TIMEOUT(extra time for login)
You can place a data/config.env; it is loaded via dotenv and is overridden by explicitly set environment variables.
Local Run Without Docker
npm install
SHOW=0 PG_EMAIL=... PG_PASSWORD=... PG_OTPKEY=... node prime-gaming.js
- Playwright downloads Firefox to
~/.cache/ms-playwright. - Use
SHOW=1for a visible browser (requires GUI/Xvfb).
Persistence & Outputs
- Data/status:
data/*.json(per store) - Browser profile:
data/browser - Screenshots:
data/screenshots/<store>/ - Optional videos/HAR:
RECORD=1→data/record/
Tip: For captchas or first-time login, run with SHOW=1 and log in once; cookies stay in the profile. Notifications via NOTIFY help surface errors (e.g., captcha, login).