
charlocharlie/epicgames-freegamesAutomatically login and find available free games the Epic Games Store. Sends you a prepopulated checkout link so you can complete the checkout after logging in. Supports multiple accounts, login sessions, and scheduled runs.
The tool can be configured with a combination of JSON and environment variables. The config file supports JSON5 syntax (comments, trailing commas, etc). For each property, the JSON config value takes priority over the respective environment variable value.
For details on each option, its defaults, and environment variable key, see the config documentation site.
The config file is stored in the mounted /usr/app/config volume and can be named config.json or config.json5.
config.json or config.json5jsonc{ "runOnStartup": true, "cronSchedule": "0 0,6,12,18 * * *", "logLevel": "info", "webPortalConfig": { "baseUrl": "[***]", }, "accounts": [ { "email": "***", }, ], "notifiers": [ // You may configure as many of any notifier as needed // Here are some examples of each type { "type": "email", "smtpHost": "smtp.gmail.com", "smtpPort": 587, "emailSenderAddress": "***", "emailSenderName": "Epic Games Captchas", "emailRecipientAddress": "***", "secure": false, "auth": { "user": "***", "pass": "abc123", }, }, { "type": "***", "webhookUrl": "[***]", // Optional list of users or roles to mention "mentionedUsers": ["914360712086843432"], "mentionedRoles": ["734548250895319070"], }, { "type": "***", // Optional Custom *** server URL "apiUrl": "[***]", "token": "644739147:AAGMPo-Jz3mKRnHRTnrPEDi7jUF1vqNOD5k", "chatId": "-987654321", "topic": 5, }, { "type": "apprise", "apiUrl": "[***]", "urls": "mailto://user:***", }, { "type": "pushover", "token": "a172fyyl9gw99p2xi16tq8hnib48p2", "userKey": "uvgidym7l5ggpwu2r8i1oy6diaapll", }, { "type": "gotify", "apiUrl": "[***]", "token": "SnL-wAvmfo_QT", }, { "type": "homeassistant", "instance": "[***]", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", "notifyservice": "mobile_app_smartphone_name", }, { "type": "bark", // your bark key "key": "xxxxxxxxxxxxxxxxxxxxxx", // bark title, optional, default: 'epicgames-freegames' "title": "epicgames-freegames", // bark group, optional, default: 'epicgames-freegames' "group": "epicgames-freegames", // bark private service address, optional, default: '[***] "apiUrl": "[***]" }, { "type": "ntfy", "webhookUrl": "[***]", "priority": "urgent", "token": "tk_mytoken" }, { "type":"webhook", //url of your webhook server "url":"[***]", //Optional headers "headers": { "Authentication": "Bearer ***" } }, ], }
This project can occasionally ask you to login via device code authentication. Epic Games's device code session expires after 10 minutes, so this project uses a web server and redirect to prevent from sending you a new link every 10 minutes. There are two options for running the web server:
If you're familiar with hosting web servers and/or reverse proxies, follow this:
-p 81:3000 maps the host machine's port 81 to the container's port 3000)webPortalConfig.baseUrl in the configIf you don't have the ability to port forward/reverse proxy on your network, you can still access the web server remotely by setting:
jsonc{ "webPortalConfig": { "localtunnel": true, }, }
in your config.json.
Each notification method has unique setup instructions. Read its documentation (notification methods) on the config site for exact details and instructions. The example config may also help as an example.
Since user actions may not always be required, the notification methods and web server can be manually tested. Essentially, you just need to add:
jsonc"testNotifiers": true,
to the root of your config.json. For more details check out the config docs.
Note: to optimize for standby memory usage, the web server does not run when the process is not running. The web server will only be available during a scheduled run.
This image is available from both GitHub Container Registry and Docker Hub:
ghcr.io/claabs/epicgames-freegames-node:latestcharlocharlie/epicgames-freegames:latestIf you're experiencing issues with Chromium starting (hangs on login/notification), you can try the Debian image:
ghcr.io/claabs/epicgames-freegames-node:debiancharlocharlie/epicgames-freegames:debianIf you are using full JSON configuration, the only remaining Docker configurables are the port and volume.
Most configuration options can be set via environment variable. Look for the env tag in the config docs for each option's key.
If for whatever reason you want to change the default config directory or config file name, CONFIG_DIR and CONFIG_FILE_NAME are available as environment variables.
| Host port | Container port | Description |
|---|---|---|
3000 | 3000 | Port mapping on which the web server hosting the captcha solving page resides |
| Host location | Container location | Mode | Description |
|---|---|---|---|
/my/host/dir/ | /usr/app/config | rw | Location of the config and cookie file(s) |
It's recommended to add -m 2g as a docker run parameter to set a max memory usage of 2GB. The Chromium processes can sometimes run away, and without a limit your system can eventually lock up.
$ docker run -d -v /my/host/dir/:/usr/app/config:rw -p 3000:3000 -m 2g ghcr.io/claabs/epicgames-freegames-node:latest
Without JSON config, you can only configure one account.
$ docker run -d -e TZ=America/Chicago -e EMAIL=*** -e RUN_ON_STARTUP=true -e BASE_URL=[***] -e SMTP_HOST=smtp.gmail.com -e SMTP_PORT=587 -e EMAIL_SENDER_ADDRESS=*** -e EMAIL_SENDER_NAME="Epic Games Captchas" -e EMAIL_RECIPIENT_ADDRESS=*** -e SMTP_SECURE=true -e SMTP_USERNAME=*** -e SMTP_PASSWORD=abc123 -v /my/host/dir/:/usr/app/config:rw -p 3000:3000 -m 2g ghcr.io/claabs/epicgames-freegames-node:latest
If you're experiencing issues logging in with device code auth, you can import cookies for a temporary session.
[***], and click the export button:
!EditThisCookie export button./config folder, create <email_address>-cookies.json (e.g. ***), and paste in your cookies.If for some reason you don't want to use Docker to run this tool you can run it from source by cloning this repo and installing Node.js.
git clone [***]config folder in the cloned/unpacked directorynpm inpm run startgit pullnpm iIn v5, several options have been added or removed. The added/removed options should not affect existing v4 configs, but may need to change your config.json for a stable solution.
cronSchedule: The default was changed to every six hours. You should change your cron schedule to run more often than every 8 hours, as the device code auth refresh token expires after 8 hours.account.password: login credentials are no longer usedaccount.totp: login credentials are no longer usednoHumanErrorHelp: purchase is no longer automatedhcaptchaAccessibilityUrl: was deprecated in v4email: was deprecated in v4, use notifiers with "type": "email"baseUrl: was deprecated in v4, use webPortalConfig.baseUrlonlyWeekly: was deprecated in v4, use searchStrategyThanks to epicgames-weekly-freegames for the inspiration.
Thanks to EpicResearch for the documentation that made device code auth possible.
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务