{"id":13490501,"url":"https://github.com/luolongfei/freenom","last_synced_at":"2025-04-29T18:32:25.906Z","repository":{"id":37444695,"uuid":"404921727","full_name":"luolongfei/freenom","owner":"luolongfei","description":"Freenom 域名自动续期。Freenom domain name renews automatically.","archived":false,"fork":false,"pushed_at":"2025-03-14T02:20:47.000Z","size":11471,"stargazers_count":3338,"open_issues_count":81,"forks_count":1701,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-04-10T00:09:42.145Z","etag":null,"topics":["auto-renewal","bot","docker","domain","freenom","php","php8","renew","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luolongfei.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://www.paypal.me/mybsdc","https://images.llfapp.com/pay.png"]}},"created_at":"2021-09-10T01:39:41.000Z","updated_at":"2025-04-09T22:42:44.000Z","dependencies_parsed_at":"2023-10-15T05:55:30.473Z","dependency_job_id":"1b28f9fd-db28-4260-808d-bfe4cbccb3d0","html_url":"https://github.com/luolongfei/freenom","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luolongfei%2Ffreenom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luolongfei%2Ffreenom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luolongfei%2Ffreenom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luolongfei%2Ffreenom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luolongfei","download_url":"https://codeload.github.com/luolongfei/freenom/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251560162,"owners_count":21609158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-renewal","bot","docker","domain","freenom","php","php8","renew","telegram","telegram-bot"],"created_at":"2024-07-31T19:00:47.644Z","updated_at":"2025-04-29T18:32:25.890Z","avatar_url":"https://github.com/luolongfei.png","language":"PHP","funding_links":["https://www.paypal.me/mybsdc","https://images.llfapp.com/pay.png","https://ko-fi.com/X7X8CA7S1"],"categories":["PHP"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n\r\n![freenom logo](https://s1.ax1x.com/2022/03/10/bhzMG9.png)\r\n\r\n\u003ch3\u003eFreenom：freenom域名自动续期\u003c/h3\u003e\r\n\r\n[![PHP version](https://img.shields.io/badge/php-%3E=7.3-brightgreen.svg?style=for-the-badge)](https://secure.php.net/)\r\n[![Docker pulls](https://img.shields.io/docker/pulls/luolongfei/freenom.svg?style=for-the-badge)](https://hub.docker.com/r/luolongfei/freenom)\r\n[![GitHub stars](https://img.shields.io/github/stars/luolongfei/freenom?color=brightgreen\u0026style=for-the-badge)](https://github.com/luolongfei/freenom/stargazers)\r\n[![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=for-the-badge)](https://github.com/luolongfei/freenom/blob/main/LICENSE)\r\n\r\nDocumentation: [English version](https://github.com/luolongfei/freenom/blob/main/README_EN.md) | 中文版\r\n\u003c/div\u003e \r\n\r\n[📢 公告](#-公告)\r\n\r\n[📃 引言](#-引言)\r\n\r\n[🍭 效果](#-效果)\r\n\r\n[🎁 事前准备](#-事前准备)\r\n\r\n[📪 配置送信功能](#-配置送信功能)（支持 邮件送信 / Telegram Bot / 企业微信 / Server 酱 / Bark 等送信方式）\r\n\r\n[⛵ 通过 Docker Compose 方式部署](#-通过-docker-compose-部署)\r\n\r\n[🐳 通过 Docker 方式部署](#-通过-docker-部署)（推荐，最简单的部署方式之一）\r\n\r\n[🧊 通过 Heroku 部署](#-通过-Heroku-部署)\r\n\r\n[🚈 通过 Railway 部署](#-通过-Railway-部署)\r\n\r\n[📦 通过 Koyeb 部署](#-通过-Koyeb-部署)（没有自己服务器的用户可使用此方案）\r\n\r\n[🧪 通过 Mogenius 部署](#-通过-Mogenius-部署)（已不可行）\r\n\r\n[☁ 通过 各种云函数 部署](#-通过各种云函数部署) （目前各平台已开启收费模式，已放弃支持）\r\n\r\n[🚧 直接拉取源码部署](#-直接拉取源码部署)\r\n\r\n[📋 赞助名单 Donation List](#-赞助名单-donation-list)\r\n\r\n[❤ 赞助 Donation](#-赞助-donation)\r\n\r\n[🪓 信仰](#-信仰)\r\n\r\n[🌚 作者](#-作者)\r\n\r\n[💖 所有贡献者](#-所有贡献者)\r\n\r\n[📝 TODO List](#-TODO-List)\r\n\r\n[🍅 本项目的其它语言实现](#-本项目的其它语言实现)\r\n\r\n[🎉 鸣谢](#-鸣谢)\r\n\r\n[🥝 开源协议](#-开源协议)\r\n\r\n### 📢 公告\r\n\r\n- 热心网友创建了`Freenom 续期事务局`群组，可供交流、测试、反馈， **加入可直接访问 [https://t.me/freenom_auto_renew](https://t.me/freenom_auto_renew) ，或者扫码加入：**\r\n\r\n\u003ca href=\"https://t.me/freenom_auto_renew\"\u003e\u003cimg src=\"https://s2.loli.net/2022/10/11/k4sSoXqMVfpIY3d.png\" alt=\"freenom_tg_group.png\" border=\"0\" width=\"220px\" height=\"280px\" /\u003e\u003c/a\u003e\r\n\r\n### 📃 引言\r\n\r\n众所周知，Freenom是地球上唯一一个提供免费顶级域名的商家，不过需要每年续期，每次续期最多一年。由于我申请了一堆域名，而且不是同一时段申请的， 所以每次续期都觉得折腾，于是就写了这个自动续期的脚本。\r\n\r\n### 🍭 效果\r\n\r\n无论是续期成败或者程序执行出错，都会收到脚本发出的通知。如果是续期成败相关的通知，通知会包括未续期域名的到期天数等内容。*此处展示的是通知邮件的内容。*\r\n\r\n\u003ca href=\"https://s4.ax1x.com/2022/02/26/bZr7WQ.png\"\u003e\u003cimg src=\"https://s4.ax1x.com/2022/02/26/bZr7WQ.png\" alt=\"邮件示例\" border=\"0\" width=\"95%\" height=\"100%\" /\u003e\u003c/a\u003e\r\n\r\n### 🎁 事前准备\r\n\r\n- VPS：随便一台服务器都行，系统推荐`Debian`。`PHP`版本需在`php7.3`及以上，如果有`Docker`环境则可无视这个限制。如果你没有服务器，可参考本文档部署到各种免费环境中。\r\n- 送信邮箱（可选）：为了方便理解又称机器人邮箱，用于发送通知邮件。目前针对`Gmail`、`QQ邮箱`、`163邮箱`以及`Outlook邮箱`，程序会自动判断送信邮箱类型并使用合适的配置。\r\n  如果你使用的是其它第三方邮箱或者自建邮件服务，那么请参考 [.env.example](https://github.com/luolongfei/freenom/blob/main/.env.example)\r\n  文件中与邮件配置相关的注释进行配置。\r\n- 收信邮箱（可选）：用于接收机器人发出的通知邮件。\r\n- 上面的`送信邮箱`和`收信邮箱`是可选项，因为目前程序已支持`邮件送信` / `Telegram Bot` / `企业微信` / `Server 酱` / `Bark`等送信方式，仅当你使用`邮件送信`的时候，`送信邮箱`和`收信邮箱`\r\n  才是必须的，其它送信方式所需请参考下面的 [配置送信功能](#-配置送信功能) 。\r\n- 耐心。\r\n\r\n### 📪 配置送信功能\r\n\r\n此处会分别介绍`邮件送信` / `Telegram Bot` / `企业微信` / `Server 酱` / `Bark`送信方式的配置方法，以及其所需的资料，你可以任选一种送信方式进行配置，直接跳到对应的文档查看即可。 如果你是 IOS\r\n用户，推荐使用 `Bark`\r\n送信方式，其它平台的用户根据自己喜好选择可接受的送信方式即可。不太推荐使用`Server 酱`送信，`Server 酱`每日送信条数的限制，以及需要开会员才能直接看到送信内容，否则需要跳到 `Server 酱`\r\n网站才能查看内容，都是不推荐的原因。同样的配置完全可以直接使用`企业微信`送信方式，`企业微信`送信直接在普通微信客户端就能看到信件内容。\r\n\r\n*快速到文档指定位置：*\r\n\r\n[邮件送信](#邮件送信)\r\n\r\n[Telegram Bot](#Telegram-Bot)\r\n\r\n[企业微信](#企业微信)\r\n\r\n[Server 酱](#Server-酱)\r\n\r\n[Bark 送信](#Bark-送信)\r\n\r\n#### 邮件送信\r\n\r\n下面分别介绍`Gmail`、`QQ邮箱`以及`163邮箱`的设置，你只用看自己需要的部分。注意，`QQ邮箱`与`163邮箱`均使用`账户加授权码`的方式登录，\r\n`谷歌邮箱`使用`账户加密码`或者`账户加授权码`的方式登录，请知悉。另外还想吐槽一下，国产邮箱你得花一毛钱给邮箱提供方发一条短信才能拿到授权码。\r\n\r\n*（点击即可展开或收起）*\r\n\r\n\u003cdetails\u003e\r\n    \u003csummary\u003e设置Gmail\u003c/summary\u003e\r\n\u003cbr\u003e\r\n\r\n*推荐打开浏览器隐私模式后再登录 gmail 进行设置，防止当你有多个 gmail 账户时无法跳到正确的设置地址。*\r\n\r\n1、在`设置\u003e转发和POP/IMAP`中，勾选\r\n\r\n- 对所有邮件启用 POP\r\n- 启用 IMAP\r\n\r\n![gmail配置01](https://s2.ax1x.com/2020/01/31/13tKsg.png \"gmail配置01\")\r\n\r\n然后保存更改。\r\n\r\n2、开启两步验证\r\n\r\n参考官方文档：[开启两步验证](https://support.google.com/accounts/answer/185839)\r\n\r\n3、配置使用应用专用密码登录邮箱\r\n\r\n参考官方文档：[使用应用专用密码登录](https://support.google.com/mail/answer/185833?hl=zh-Hans)\r\n\r\n**由于 Gmail 已不再支持“不安全的登录方式”，故目前只能使用账户加应用专用密码的方式登录。**\r\n\r\n***\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n    \u003csummary\u003e设置QQ邮箱\u003c/summary\u003e\r\n\u003cbr\u003e\r\n\r\n在`设置\u003e账户\u003ePOP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务`下，开启`POP3/SMTP服务`\r\n\r\n![qq邮箱配置01](https://s2.ax1x.com/2020/01/31/13cIKA.png \"qq邮箱配置01\")\r\n\r\n此时坑爹的QQ邮箱会要求你用手机发送一条短信给腾讯，发送完了点一下`我已发送`\r\n\r\n![qq邮箱配置02](https://s2.ax1x.com/2020/01/31/13c4vd.png \"qq邮箱配置02\")\r\n\r\n然后你就能看到你的邮箱授权码了，使用邮箱账户加授权码即可登录，记下授权码\r\n\r\n![qq邮箱配置03](https://s2.ax1x.com/2020/01/31/13cTbt.png \"qq邮箱配置03\")\r\n\r\n![qq邮箱配置04](https://s2.ax1x.com/2020/01/31/13coDI.png \"qq邮箱配置04\")\r\n\r\n***\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n    \u003csummary\u003e设置163邮箱\u003c/summary\u003e\r\n\u003cbr\u003e\r\n\r\n在`设置\u003ePOP3/SMTP/IMAP`下，开启`POP3/SMTP服务`和`IMAP/SMTP服务`并保存\r\n\r\n![163邮箱配置01](https://s2.ax1x.com/2020/01/31/13WKZn.png \"163邮箱配置01\")\r\n\r\n![163邮箱配置02](https://s2.ax1x.com/2020/01/31/13WQI0.png \"163邮箱配置02\")\r\n\r\n现在点击侧边栏的`客户端授权密码`，并获取授权码，你看到画面可能和我不一样，因为我已经获取了授权码，所以只有`重置授权码`按钮，这里自己根据网站提示申请获取授权码，网易和腾讯一样恶心，需要你用手机给它发一条短信才能拿到授权码\r\n\r\n![163邮箱配置03](https://s2.ax1x.com/2020/01/31/13WMaq.png \"163邮箱配置03\")\r\n\r\n163 邮箱送信后，接收方如果没收到可以在垃圾邮件里面找一下。\r\n\r\n***\r\n\r\n\u003c/details\u003e\r\n\r\n上面的动作完成后，在`.env`文件中，将`MAIL_USERNAME`和`MAIL_PASSWORD`设置为你的邮箱和密码（或令牌），将`TO`设置为你的收信邮箱，然后将`MAIL_ENABLE`的值设为`1`以启用邮箱送信功能。\r\n\r\n上面介绍了三种邮箱的设置方法，如果你不想使用邮件送信，将根目录下的`.env`文件中的`MAIL_ENABLE`的值改为`0`即可关闭邮件推送方式。\r\n\r\n*邮件 送信部分完。*\r\n\r\n#### Telegram Bot\r\n\r\n有关 【Telegram Bot】 的具体配置步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/Telegram-Bot)\r\n\r\n#### 企业微信\r\n\r\n有关 【企业微信】 的具体配置步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1)\r\n\r\n#### Server 酱\r\n\r\n有关 【Server 酱】 的具体配置步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/Server-%E9%85%B1)\r\n\r\n#### Bark 送信\r\n\r\n有关 【Bark 送信】 的具体配置步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/Bark-%E9%80%81%E4%BF%A1)\r\n\r\n***\r\n\r\n*与 配置送信功能 相关的篇幅完。下面开始讲本项目的几种使用方式。推荐使用 Docker 方式，无需纠结环境。*\r\n\r\n***\r\n\r\n### ⛵ 通过 Docker Compose 部署\r\n\r\n**注意，目前是 beta 版本，只支持在 amd64 架构的机器上安装，arm 或其它架构的用户请稍安勿躁，等后续更新。或者如果你需要一台服务器，可以考虑** [美国便宜 VPS](https://go.llfapp.com/cc)\r\n\r\n#### 1、一键安装 docker 和 docker compose\r\n\r\nDebian / Ubuntu（推荐）\r\n\r\n```shell\r\napt-get update -y;\r\napt-get install -y wget vim git make;\r\nwget -qO- get.docker.com | bash;\r\nsystemctl start docker;\r\nsudo systemctl enable docker.service;\r\nsudo systemctl enable containerd.service;\r\ndocker version;\r\nDOCKER_COMPOSE_VER=2.24.3;\r\nDOCKER_CONFIG=/usr/local/lib/docker;\r\nmkdir -p $DOCKER_CONFIG/cli-plugins;\r\ncurl -SL https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VER}/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose;\r\nsudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose;\r\ndocker compose version;\r\n```\r\n\r\nCentOS\r\n\r\n```shell\r\nyum update -y;\r\nyum install -y wget vim make;\r\nwget -qO- get.docker.com | bash;\r\nsystemctl start docker;\r\nsudo systemctl enable docker.service;\r\nsudo systemctl enable containerd.service;\r\ndocker version;\r\nDOCKER_COMPOSE_VER=2.24.3;\r\nDOCKER_CONFIG=/usr/local/lib/docker;\r\nmkdir -p $DOCKER_CONFIG/cli-plugins;\r\ncurl -SL https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VER}/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose;\r\nsudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose;\r\ndocker compose version;\r\n```\r\n\r\n#### 2、下载本项目\r\n\r\n```shell\r\ngit clone https://github.com/luolongfei/freenom.git \u0026\u0026 cd freenom\r\n```\r\n\r\n#### 3、配置\r\n\r\n##### 3.1、申请 wit.ai 的 token\r\n\r\n3.1.1 访问 https://wit.ai\r\n\r\n3.1.2 使用 Facebook 账户登录或者使用邮箱注册账户登录，只需要邮箱就可以注册\r\n\r\n3.1.3 前往 https://wit.ai/apps 画面，创建一个新的 app\r\n\r\n3.1.4 语言选择 English，名字随意，类型选择私有，创建之\r\n\r\n3.1.5 前往 Management \u003e Settings (https://wit.ai/apps/\u003cApp ID\u003e/settings) 画面\r\n\r\n3.1.6 复制 Client Access Token，下面需要写入 .env 文件中，WIT_AI_KEY='你复制的 Client Access Token'\r\n\r\n##### 3.2、修改 .env 配置文件\r\n\r\n将 .env 配置文件中的内容修改为你自己的配置，如果是从旧版升级，也可以直接把旧版 .env 复制到新版项目根目录，脚本会自动更新它。配置含义参考 .env.example 文件中的注解。\r\n\r\n```shell\r\ncp .env.example .env;\r\nvim .env;\r\n```\r\n\r\n修改完成后，输入 `:wq` 保存并退出。\r\n\r\n#### 4、启动\r\n\r\n注意：以下命令均需要在 docker-compose.yml 所在目录执行才有效。\r\n\r\n```shell\r\nmake up\r\n```\r\n\r\n没错，就是这么简单。然后可以执行 `make logs` 查看实时日志。\r\n\r\n##### 4.1、常用命令\r\n\r\n启动或者更新到最新版\r\n\r\n```shell\r\nmake up\r\n```\r\n\r\n停止\r\n\r\n```shell\r\nmake down\r\n```\r\n\r\n查看实时日志\r\n\r\n```shell\r\nmake logs\r\n```\r\n\r\n清理容器占用的空间\r\n\r\n```shell\r\nmake clear\r\n```\r\n\r\n重启容器\r\n\r\n```shell\r\nmake restart\r\n```\r\n\r\n*通过 docker compose 部署部分结束。*\r\n\r\n### 🐳 通过 Docker 部署\r\n\r\n*如果你有自己的服务器，这是最推荐的部署方式。*\r\n\r\nDocker 仓库地址为： [https://hub.docker.com/r/luolongfei/freenom](https://hub.docker.com/r/luolongfei/freenom) ，同样欢迎 star 。\r\n此镜像支持的架构为`linux/amd64`，`linux/arm64`，`linux/ppc64le`，`linux/s390x`，`linux/386`，`linux/arm/v7`，`linux/arm/v6`， 理论上支持`群晖`\r\n、`威联通`、`树莓派`以及各种类型的`VPS`。\r\n\r\n#### 1、安装 Docker\r\n\r\n##### 1.1 以 root 用户登录，执行一键脚本安装 Docker\r\n\r\n升级源并安装软件（下面两行命令二选一，根据你自己的系统）\r\n\r\nDebian / Ubuntu\r\n\r\n```shell\r\napt-get update \u0026\u0026 apt-get install -y wget vim make\r\n```\r\n\r\nCentOS\r\n\r\n```shell\r\nyum update \u0026\u0026 yum install -y wget vim make\r\n```\r\n\r\n执行此命令等候自动安装 Docker\r\n\r\n```shell\r\nwget -qO- get.docker.com | bash\r\n```\r\n\r\n说明：请使用 KVM 架构的 VPS，OpenVZ 架构的 VPS 不支持安装 Docker，另外 CentOS 8 不支持用此脚本来安装 Docker。 更多关于 Docker\r\n安装的内容参考 [Docker 官方安装指南](https://docs.docker.com/engine/install/) 。\r\n\r\n##### 1.2 针对 Docker 执行以下命令\r\n\r\n启动 Docker 服务\r\n\r\n```shell\r\nsystemctl start docker\r\n```\r\n\r\n查看 Docker 运行状态\r\n\r\n```shell\r\nsystemctl status docker\r\n```\r\n\r\n将 Docker 服务加入开机自启动\r\n\r\n```shell\r\nsystemctl enable docker\r\n```\r\n\r\n#### 2、通过 Docker 部署域名续期脚本\r\n\r\n##### 2.1 用 Docker 创建并启动容器\r\n\r\n命令如下\r\n\r\n```shell\r\ndocker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom\r\n```\r\n\r\n或者，如果你想自定义脚本执行时间，则命令如下\r\n\r\n```shell\r\ndocker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs -e RUN_AT=\"11:24\" luolongfei/freenom\r\n```\r\n\r\n上面这条命令只比上上条命令多了个` -e RUN_AT=\"11:24\"`，其中`11:24`表示在北京时间每天的 11:24 执行续期任务，你可以自定义这个时间。 这里的`RUN_AT`参数同时也支持 CRON\r\n命令里的时间形式，比如，` -e RUN_AT=\"9 11 * * *\"`，表示每天北京时间 11:09 执行续期任务， 如果你不想每天执行任务，只想隔几天执行，只用修改`RUN_AT`的值即可。\r\n\r\n**注意：不推荐自定义脚本执行时间。因为你可能跟很多人定义的是同一个时间点，这样可能导致所有人都是同一时间向 Freenom 的服务器发起请求， 使得 Freenom 无法稳定提供服务。而如果你不自定义时间，程序会自动指定北京时间 06 ~\r\n23 点全时段随机的一个时间点作为执行时间， 每次重启容器都会自动重新指定。**\r\n\r\n\u003cdetails\u003e\r\n    \u003csummary\u003e点我查看上方 Docker 命令的参数解释\u003c/summary\u003e\r\n\u003cbr\u003e\r\n\r\n| 命令 | 含义 |\r\n| :--- | :--- |\r\n| docker run | 开始运行一个容器 |\r\n| -d 参数 | 容器以后台运行并输出容器 ID |\r\n| --name 参数 | 给容器分配一个识别符，方便将来的启动，停止，删除等操作 |\r\n| --restart 参数 | 配置容器启动类型，always 即为 docker 服务重新启动时自动启动本容器 |\r\n| -v 参数 | 挂载卷（volume），冒号后面是容器的路径，冒号前面是宿主机的路径（只支持绝对路径），`$(pwd)`表示当前目录，如果是 Windows 系统，则可用`${PWD}`替换此处的`$(pwd)` |\r\n| -e 参数 | 指定容器中的环境变量 |\r\n| luolongfei/freenom | 这是从 docker hub 下载回来的镜像完整路径名 |\r\n\r\n\u003c/details\u003e\r\n\r\n至此，你的自动续期容器就跑起来了，执行`ls -a`后你就可以看到在你的当前目录下，有一个`.env`文件和一个`logs`目录，`logs`目录里面存放的是程序日志， 而`.env`则是配置文件，现在直接执行`vim .env`\r\n将`.env`文件里的所有配置项改为你自己的并保存即可。然后重启容器，如果配置正确的话，便很快可以收到相关邮件。\r\n\r\n\u003cdetails\u003e\r\n    \u003csummary\u003e点我查看 .env 文件中部分配置项的含义\u003c/summary\u003e\r\n\u003cbr\u003e\r\n\r\n| 变量名 | 含义 | 默认值 | 是否必须 |                                             备注                                              |\r\n| :---: | :---: |:---:|:----:|:-------------------------------------------------------------------------------------------:|\r\n| FREENOM_USERNAME | Freenom 账户 |  -  |  是   |                只支持邮箱账户，如果你是使用第三方社交账户登录的用户，请在 Freenom 管理页面绑定邮箱，绑定后即可使用邮箱账户登录                 |\r\n| FREENOM_PASSWORD | Freenom 密码 |  -  |  是   |                                 某些特殊字符可能需要转义，详见`.env`文件内注释                                  |\r\n| MULTIPLE_ACCOUNTS | 多账户支持 |  -  |  否   |                                 多个账户和密码的格式必须是“`\u003c账户1\u003e@\u003c密码1\u003e\\|\u003c账户2\u003e@\u003c密码2\u003e\\|\u003c账户3\u003e@\u003c密码3\u003e`”，注意不要省略“\u003c\u003e”符号，否则无法正确匹配。如果设置了多账户，上面的`FREENOM_USERNAME`和`FREENOM_PASSWORD`可不设置 |\r\n| MAIL_USERNAME | 机器人邮箱账户 |  -  |  否   |                            支持`Gmail`、`QQ邮箱`、`163邮箱`以及`Outlook邮箱`                            |\r\n| MAIL_PASSWORD | 机器人邮箱密码 |  -  |  否   |                              `Gmail`填应用专用密码，`QQ邮箱`或`163邮箱`填授权码                              |\r\n| TO | 接收通知的邮箱 |  -  |  否   |                                你自己最常用的邮箱，用来接收机器人邮箱发出的域名相关邮件                                 |\r\n| MAIL_ENABLE | 是否启用邮件推送功能 | `0` |  否   | `1`：启用\u003cbr\u003e`0`：不启用\u003cbr\u003e默认不启用，如果设为`1`，启用邮件推送功能，则上面的`MAIL_USERNAME`、`MAIL_PASSWORD`、`TO`变量变为必填项 |\r\n| TELEGRAM_CHAT_ID | 你的`chat_id` |  -  |  否   |                           通过发送`/start`给`@userinfobot`可以获取自己的`id`                            |\r\n| TELEGRAM_BOT_TOKEN | 你的`Telegram bot`的`token` |  -  |  否   ||\r\n| TELEGRAM_BOT_ENABLE | 是否启用`Telegram Bot`推送功能 | `0` |  否   |    `1`：启用\u003cbr\u003e`0`：不启用\u003cbr\u003e默认不启用，如果设为`1`，则必须设置上面的`TELEGRAM_CHAT_ID`和`TELEGRAM_BOT_TOKEN`变量     |\r\n| NOTICE_FREQ | 通知频率 | `1` |  否   |                                 `0`：仅当有续期操作的时候\u003cbr\u003e`1`：每次执行                                  |\r\n| NEZHA_SERVER | 哪吒探针服务端的 IP 或域名 |  -  |  否   ||\r\n| NEZHA_PORT | 哪吒探针服务端的端口 |  -  |  否   ||\r\n| NEZHA_KEY | 哪吒探针客户端专用 Key |  -  |  否   ||\r\n| NEZHA_TLS | 哪吒客户SSL/TLS加密 |  -  |  否   |  `1`：启用\u003cbr\u003e`0`：不启用  |\r\n\r\n**更多配置项含义，请参考 [.env.example](https://github.com/luolongfei/freenom/blob/main/.env.example) 文件中的注释。**\r\n\r\n\u003c/details\u003e\r\n\r\n\u003e 如何验证你的配置是否正确呢？\r\n\u003e\r\n\r\n修改并保存`.env`文件后，执行`docker restart freenom`重启容器，等待 5 秒钟左右，然后执行`docker logs freenom`查看输出内容， 观察输出内容中有`执行成功`\r\n字样，则表示配置无误。如果你还来不及配置送信邮箱等内容，可先停用邮件功能。\r\n\r\n\u003e 如何升级到最新版或者重新部署呢？\r\n\u003e\r\n\r\n在`.env`所在目录，执行`docker rm -f freenom`删除现有容器，然后再执行 `docker rmi -f luolongfei/freenom`\r\n删除旧的镜像，然后再执行上面的 `docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom`\r\n重新部署即可，这样部署后就是最新的代码了。当然，新版对应的`.env`文件可能有变动，不必担心，程序会自动更新`.env`文件内容，并将已有的配置迁移过去。\r\n\r\n一句话操作，即在`.env`文件所在目录下执行以下命令，即可完成更新升级：\r\n\r\n```shell\r\ndocker rm -f freenom \u0026\u0026 docker rmi -f luolongfei/freenom \u0026\u0026 docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom\r\n```\r\n\r\n##### 2.2 后期容器管理以及 Docker 常用命令\r\n\r\n查看容器在线状态及大小\r\n\r\n```shell\r\ndocker ps -as\r\n```\r\n\r\n查看容器的运行输出日志\r\n\r\n```shell\r\ndocker logs freenom\r\n```\r\n\r\n重新启动容器\r\n\r\n```shell\r\ndocker restart freenom\r\n```\r\n\r\n停止容器的运行\r\n\r\n```shell\r\ndocker stop freenom\r\n```\r\n\r\n移除容器\r\n\r\n```shell\r\ndocker rm -f freenom\r\n```\r\n\r\n查看 docker 容器占用 CPU，内存等信息\r\n\r\n```shell\r\ndocker stats --no-stream\r\n```\r\n\r\n查看 Docker 安装版本等信息\r\n\r\n```shell\r\ndocker version\r\n```\r\n\r\n重启 Docker（非容器）\r\n\r\n```shell\r\nsystemctl restart docker\r\n```\r\n\r\n*有关容器部署的内容结束。*\r\n\r\n***\r\n\r\n### 🧊 通过 Heroku 部署\r\n\r\n**Heroku 已于 2022-11-28 停止提供免费服务，所以，忘掉本文吧。官方通告：[https://blog.heroku.com/next-chapter](https://blog.heroku.com/next-chapter)**\r\n\r\n有关 【通过 Heroku 部署】 的具体操作步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E9%80%9A%E8%BF%87-Heroku-%E9%83%A8%E7%BD%B2)\r\n\r\n***\r\n\r\n### 🚈 通过 Railway 部署\r\n\r\n*Railway 已更新服务条款，每月增加了使用时长限制，新的服务条款导致每月最多只能运行 21 天左右， **除非你验证了信用卡，则没有这个限制** 。详细条款内容参考 [此处](https://docs.railway.app/reference/pricing#execution-time-limit) 。*\r\n\r\n有关 【通过 Railway 部署】\r\n的具体操作步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E9%80%9A%E8%BF%87-Railway-%E9%83%A8%E7%BD%B2)\r\n\r\n***\r\n\r\n### 📦 通过 Koyeb 部署\r\n\r\n*推荐没有自己服务器的用户使用此方案部署。此方案完全免费。*\r\n\r\n有关 【通过 Koyeb 部署】 的具体操作步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E9%80%9A%E8%BF%87-Koyeb-%E9%83%A8%E7%BD%B2)\r\n\r\n**在看完上行文档的具体内容，并且你确定你行后**，便可点击下方按钮，尝试一键部署：\r\n\r\n[![Deploy to Koyeb](https://www.koyeb.com/static/images/deploy/button.svg)](https://app.koyeb.com/deploy?type=docker\u0026name=freenom\u0026ports=80;http;/\u0026env[FF_TOKEN]=20190214\u0026env[SHOW_SERVER_INFO]=1\u0026env[MOSAIC_SENSITIVE_INFO]=1\u0026env[FREENOM_USERNAME]=\u0026env[FREENOM_PASSWORD]=\u0026env[MULTIPLE_ACCOUNTS]=\u0026env[MAX_REQUEST_RETRY_COUNT]=200\u0026env[TELEGRAM_CHAT_ID]=\u0026env[TELEGRAM_BOT_TOKEN]=\u0026env[TELEGRAM_BOT_ENABLE]=0\u0026env[NEZHA_SERVER]=[OPTION]%20Nezha%20server\u0026env[NEZHA_PORT]=[OPTION]%20Nezha%20port\u0026env[NEZHA_KEY]=[OPTION]%20Nezha%20key\u0026env[NEZHA_TLS]=[OPTION]%20Enable%20tls\u0026image=docker.io/luolongfei/freenom:koyeb)\r\n\r\n***\r\n\r\n### 🧪 通过 Mogenius 部署\r\n\r\n已下线免费套餐，不再可用。 [https://github.com/luolongfei/freenom/discussions/208](https://github.com/luolongfei/freenom/discussions/208) \r\n\r\n***\r\n\r\n### ☁ 通过各种云函数部署\r\n\r\n所有云函数使用的是同一个压缩包，已做兼容处理，下载地址：\r\n[https://github.com/luolongfei/freenom/releases/download/v0.5.1/freenom_scf.zip](https://github.com/luolongfei/freenom/releases/download/v0.5.1/freenom_scf.zip)\r\n。本文档会在发布新版的时候同步更新此处的压缩包下载地址，所以不必担心，你看到的下载地址指向的包一定是最新版本。\r\n\r\n下载后你将得到一个 zip 文件，将 zip 文件放到你能找到的任意目录，后面我们将以 zip 文件的形式上传到各种云函数。\r\n\r\n有关 【通过腾讯云函数部署】\r\n的具体操作步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E9%80%9A%E8%BF%87%E8%85%BE%E8%AE%AF%E4%BA%91%E5%87%BD%E6%95%B0%E9%83%A8%E7%BD%B2)\r\n\r\n有关 【通过阿里云函数部署】\r\n的具体操作步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E9%80%9A%E8%BF%87%E9%98%BF%E9%87%8C%E4%BA%91%E5%87%BD%E6%95%B0%E9%83%A8%E7%BD%B2)\r\n\r\n有关 【通过华为云函数部署】\r\n的具体操作步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E9%80%9A%E8%BF%87%E5%8D%8E%E4%B8%BA%E4%BA%91%E5%87%BD%E6%95%B0%E9%83%A8%E7%BD%B2)\r\n\r\n***\r\n\r\n### 🚧 直接拉取源码部署\r\n\r\n有关 【直接拉取源码部署】\r\n的具体操作步骤请参考 [此处](https://github.com/luolongfei/freenom/wiki/%E7%9B%B4%E6%8E%A5%E6%8B%89%E5%8F%96%E6%BA%90%E7%A0%81%E9%83%A8%E7%BD%B2)\r\n\r\n***\r\n\r\n遇到任何问题或 Bug 欢迎提 [issue](https://github.com/luolongfei/freenom/issues) （请按模板格式提`issue`，以便我快速复现你的问题，否则问题会被忽略）， 如果`Freenom`\r\n改变算法导致此项目失效，请提 [issue](https://github.com/luolongfei/freenom/issues) 告知，我会及时修复，本项目长期维护。 欢迎`star`~\r\n\r\n### 📋 赞助名单 Donation List\r\n\r\n非常感谢「 [这些用户](https://github.com/luolongfei/freenom/wiki/Donation-List) 」对本项目的赞助支持！\r\n\r\n### ❤ 赞助 Donation\r\n\r\n如果你觉得本项目对你有帮助，请考虑赞助本项目，以激励我投入更多的时间进行维护与开发。\r\nIf you find this project helpful, please consider supporting the project going forward. Your support is greatly\r\nappreciated.\r\n\r\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/X7X8CA7S1)\r\n\r\nPayPal: [https://www.paypal.me/mybsdc](https://www.paypal.me/mybsdc)\r\n\r\n\u003e Every time you spend money, you're casting a vote for the kind of world you want. -- Anna Lappe\r\n\r\n![pay](https://images.llfapp.com/pay.png \"Donation\")\r\n\r\n![每一次你花的钱都是在为你想要的世界投票。](https://s2.ax1x.com/2020/01/31/13P8cF.jpg)\r\n\r\n题外话：赞助的时候可以留言，留言内容将被展示在 [赞助列表画面](https://github.com/luolongfei/freenom/wiki/Donation-List) 。如果赞助图片未能正常显示，请访问： [https://images.llfapp.com/pay.png](https://images.llfapp.com/pay.png)\r\n\r\n**你的`star`或者`赞助`是我长期维护此项目的动力所在，由衷感谢每一位支持者，“每一次你花的钱都是在为你想要的世界投票”。 另外，将本项目推荐给更多的人，也是一种支持的方式，用的人越多更新的动力越足。**\r\n\r\n### 🪓 信仰\r\n\r\n相信未来，保持“理智”。\r\n\r\n\u003e 认真是我们参与这个社会的方式，认真是我们改变这个社会的方式。 ——李志\r\n\r\n![南京市民李先生](https://s1.ax1x.com/2022/03/10/bhP7FO.jpg \"南京市民李先生\")\r\n\r\n### 🌚 作者\r\n\r\n- 主程序以及框架：[@luolongfei](https://github.com/luolongfei)\r\n- 英文版文档：[@肖阿姨](#)\r\n\r\n### 💖 所有贡献者\r\n\r\n\u003ca href=\"https://github.com/luolongfei/freenom/graphs/contributors\"\u003e\r\n  \u003cimg alt=\"All Contributors\" src=\"https://contrib.rocks/image?repo=luolongfei/freenom\" /\u003e\r\n\u003c/a\u003e\r\n\r\n[@anjumrafidofficial](https://github.com/anjumrafidofficial)\r\n\r\n### 📝 TODO List\r\n\r\n- 支持交互式安装，免去手动修改配置的繁琐操作\r\n- 支持自动升级\r\n- 多个账户的续期结果通知合并为同一条消息\r\n\r\n### 🍅 本项目的其它语言实现\r\n\r\n- [https://github.com/PencilNavigator/Freenom-Workers](https://github.com/PencilNavigator/Freenom-Workers) （JavaScript）\r\n- [https://github.com/Oreomeow/freenom-py](https://github.com/Oreomeow/freenom-py) （Python） \r\n\r\n*(更多其它语言欢迎提交 PR 更新此列表)*\r\n\r\n### 🎉 鸣谢\r\n\r\n- 项目依赖 [PHPMailer](https://github.com/PHPMailer/PHPMailer/) 、 [guzzle](https://github.com/guzzle/guzzle) 等第三方库\r\n- 本项目 Docker 相关文档有参考 [秋水逸冰](https://teddysun.com/569.html) 的文章\r\n- [@anjumrafidofficial](https://github.com/anjumrafidofficial) 完善英文版邮件内容\r\n\r\n### 🥝 开源协议\r\n\r\n[MIT](https://opensource.org/licenses/mit-license.php)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluolongfei%2Ffreenom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluolongfei%2Ffreenom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluolongfei%2Ffreenom/lists"}