
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Automatically 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 https://claabs.github.io/epicgames-freegames-node/classes/AppConfig.html.
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.json5
jsonc{ "runOnStartup": true, "cronSchedule": "0 0,6,12,18 * * *", "logLevel": "info", "webPortalConfig": { "baseUrl": "https://epic.example.com", }, "accounts": [ { "email": "example@gmail.com", }, ], "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": "hello@gmail.com", "emailSenderName": "Epic Games Captchas", "emailRecipientAddress": "hello@gmail.com", "secure": false, "auth": { "user": "hello@gmail.com", "pass": "abc123", }, }, { "type": "discord", "webhookUrl": "https://discord.com/api/webhooks/123456789123456789/A-abcdefghijklmn-abcdefghijklmnopqrst12345678-abcdefghijklmnop123456", // Optional list of users or roles to mention "mentionedUsers": ["914360712086843432"], "mentionedRoles": ["734548250895319070"], }, { "type": "telegram", // Optional Custom TELEGRAM server URL "apiUrl": "https://api.telegram.org", "token": "644739147:AAGMPo-Jz3mKRnHRTnrPEDi7jUF1vqNOD5k", "chatId": "-987654321", "topic": 5, }, { "type": "apprise", "apiUrl": "http://192.168.1.2:8000", "urls": "mailto://user:pass@gmail.com", }, { "type": "pushover", "token": "a172fyyl9gw99p2xi16tq8hnib48p2", "userKey": "uvgidym7l5ggpwu2r8i1oy6diaapll", }, { "type": "gotify", "apiUrl": "https://gotify.net", "token": "SnL-wAvmfo_QT", }, { "type": "homeassistant", "instance": "https://homeassistant.example.com", "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: 'https://api.day.app' "apiUrl": "https://api.day.app" }, { "type": "ntfy", "webhookUrl": "https://ntfy.example.com/mytopic", "priority": "urgent", "token": "tk_mytoken" }, { "type":"webhook", //url of your webhook server "url":"https://webhook.site/my_uuid", //Optional headers "headers": { "Authentication": "Bearer 123456" } }, ], }
This project can occasionally ask you to login via https://github.com/MixV2/EpicResearch/blob/master/docs/auth/grant_types/device_code.md. 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:
Web server config
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 configLocaltunnel setup
If 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 (https://claabs.github.io/epicgames-freegames-node/classes/AppConfig.html#notifiers) on the config site for exact details and instructions. The https://claabs.github.io/epicgames-freegames-node/classes/AppConfig.html 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 https://claabs.github.io/epicgames-freegames-node/classes/AppConfig.html#testNotifiers.
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 https://github.com/claabs/epicgames-freegames-node/pkgs/container/epicgames-freegames-node and https://hub.docker.com/repository/docker/charlocharlie/epicgames-freegames:
ghcr.io/claabs/epicgames-freegames-node:latestcharlocharlie/epicgames-freegames:latestIf you're https://github.com/claabs/epicgames-freegames-node/issues/164 (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.
Environment Variables
Most configuration options can be set via environment variable. Look for the env tag in the https://claabs.github.io/epicgames-freegames-node/classes/AppConfig.html 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.
Ports
| Host port | Container port | Description |
|---|---|---|
3000 | 3000 | Port mapping on which the web server hosting the captcha solving page resides |
Volumes
| Host location | Container location | Mode | Description |
|---|---|---|---|
/my/host/dir/ | /usr/app/config | rw | Location of the config and cookie file(s) |
Memory Limit
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.
With JSON Config
$ 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
Without JSON config, you can only configure one account.
$ docker run -d -e TZ=America/Chicago -e EMAIL=example@gmail.com -e RUN_ON_STARTUP=true -e BASE_URL=https://example.com -e SMTP_HOST=smtp.gmail.com -e SMTP_PORT=587 -e EMAIL_SENDER_ADDRESS=hello@gmail.com -e EMAIL_SENDER_NAME="Epic Games Captchas" -e EMAIL_RECIPIENT_ADDRESS=hello@gmail.com -e SMTP_SECURE=true -e SMTP_USERNAME=hello@gmail.com -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.
https://www.epicgames.com/id, and click the export button:
!https://github.com/claabs/epicgames-freegames-node/blob/master/img/edit-this-cookie.png?raw=true./config folder, create <email_address>-cookies.json (e.g. me@example.com-cookies.json), and paste in your cookies.Cookie Import Notes
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 https://github.com/claabs/epicgames-freegames-node.gitconfig folder in the cloned/unpacked directorynpm inpm run startgit pullnpm iNetwork proxies are configured via the *_PROXY and NO_PROXY environment variables. Details on the environment variables available from https://github.com/Rob--W/proxy-from-env#environment-variables, and the kinds of proxies avaiable from https://github.com/TooTallNate/proxy-agents/tree/main/packages/proxy-agent#maps-proxy-protocols-to-httpagent-implementations.
In 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.
Changed
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.Removed
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 https://github.com/Ricardo-Osorio/epicgames-weekly-freegames for the inspiration.
Thanks to https://github.com/MixV2/EpicResearch for the documentation that made device code auth possible.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务