Freenom 域名自动续期
Freenom 域名自动续期
REAIFreenom
- tk域名是南太平洋岛国托克劳的顶级域名
 - ml则是马里的顶级域名
 - cf则是中非共和国的域名
 - gq是赤道几内亚的官方国家顶级域名
 - ga域名是加蓬的国家顶级域名
 - Cloudflare免费套餐不为其提供API服务
 - 搜索引擎基本上已经不收录了
 - 虽然不太适合搭建网站,但是用来给NAS做外网访问绰绰有余
2023 年 3 月 3 日,Meta (即 Facebook) 在美国加利福尼亚州法院起诉 Freenom,指控 Freenom 存在域名抢注和商标侵权行为,同时 Meta 向法院申请要求 Freenom 提供二十多名注册者的身份信息。 这次起诉的主要原因其实就是不少诈骗团伙利用 Freenom 注册域名用于钓鱼网站,这些域名有不少包含 FB、Facebook、INS、Whatsapp 之类的字样,用来迷惑用户。 最让 Meta 生气的是即便 Meta 向 Freenom 发送侵权或钓鱼通知后,Freenom 仍然继续提供这些仿冒域名的注册,同时 Freenom 也不采取适当的措施阻止更多诈骗团伙注册这些免费域名。还有个比较损的是,诈骗团伙不可能还为域名续费,于是在域名到期后 Freenom 在这些域名上挂色情广告或其他广告获利,如果有人要买这些钓鱼域名,Freenom 也会出售。 直到被起诉后 Freenom 才发个简短的说明表示由于技术原因新注册申请暂停,当前正在研究解决方案,希望尽快恢复运营。
 
引言
众所周知,Freenom是地球上唯一一个提供免费顶级域名的商家,不过需要每年续期,每次续期最多一年。由于我申请了一堆域名,而且不是同一时段申请的, 所以每次续期都觉得折腾,于是就写了这个自动续期的脚本。
通过 Docker 部署
如果你有自己的服务器,这是最推荐的部署方式。
Docker 仓库地址为: https://hub.docker.com/r/luolongfei/freenom
同样欢迎 star 。 此镜像支持的架构为linux/amd64,linux/arm64,linux/ppc64le,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6, 理论上支持群晖 、威联通、树莓派以及各种类型的VPS。
1、安装 Docker
1.1 以 root 用户登录,执行一键脚本安装 Docker
升级源并安装软件(下面两行命令二选一,根据你自己的系统)
Debian / Ubuntu
1  | apt-get update && apt-get install -y wget vim  | 
CentOS
1  | yum update && yum install -y wget vim  | 
执行此命令等候自动安装 Docker
1  | wget -qO- get.docker.com | bash  | 
说明:请使用 KVM 架构的 VPS,OpenVZ 架构的 VPS 不支持安装 Docker,另外 CentOS 8 不支持用此脚本来安装 Docker。 更多关于 Docker 安装的内容参考 Docker 官方安装指南 。
1.2 针对 Docker 执行以下命令
启动 Docker 服务
1  | systemctl start docker  | 
查看 Docker 运行状态
1  | systemctl status docker  | 
将 Docker 服务加入开机自启动
1  | systemctl enable docker  | 
2、通过 Docker 部署域名续期脚本
2.1 用 Docker 创建并启动容器
命令如下
1  | docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom  | 
或者,如果你想自定义脚本执行时间,则命令如下
1  | docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs -e RUN_AT="11:24" luolongfei/freenom  | 
上面这条命令只比上上条命令多了个-e RUN_AT="11:24",其中11:24表示在北京时间每天的 11:24 执行续期任务,你可以自定义这个时间。 这里的RUN_AT参数同时也支持 CRON 命令里的时间形式,比如,-e RUN_AT="9 11 * * *",表示每天北京时间 11:09 执行续期任务, 如果你不想每天执行任务,只想隔几天执行,只用修改RUN_AT的值即可。
注意:不推荐自定义脚本执行时间。因为你可能跟很多人定义的是同一个时间点,这样可能导致所有人都是同一时间向 Freenom 的服务器发起请求, 使得 Freenom 无法稳定提供服务。而如果你不自定义时间,程序会自动指定北京时间 06 ~ 23 点全时段随机的一个时间点作为执行时间, 每次重启容器都会自动重新指定。
| 命令 | 含义 | 
|---|---|
| docker run | 开始运行一个容器 | 
| -d 参数 | 容器以后台运行并输出容器 ID | 
| —name 参数 | 给容器分配一个识别符,方便将来的启动,停止,删除等操作 | 
| —restart 参数 | 配置容器启动类型,always 即为 docker 服务重新启动时自动启动本容器 | 
| -v 参数 | 挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径(只支持绝对路径),$(pwd)表示当前目录,如果是 Windows 系统,则可用${PWD}替换此处的$(pwd) | 
| -e 参数 | 指定容器中的环境变量 | 
| luolongfei/freenom | 这是从 docker hub 下载回来的镜像完整路径名 | 
至此,你的自动续期容器就跑起来了,执行ls -a后你就可以看到在你的当前目录下,有一个.env文件和一个logs目录,logs目录里面存放的是程序日志, 而.env则是配置文件,现在直接执行vim .env 将.env文件里的所有配置项改为你自己的并保存即可。然后重启容器,如果配置正确的话,便很快可以收到相关邮件。
.env 文件中部分配置项的含义
| 变量名 | 含义 | 默认值 | 是否必须 | 备注 | 
|---|---|---|---|---|
| FREENOM_USERNAME | Freenom 账户 | ——— | 是 | 只支持邮箱账户,如果你是使用第三方社交账户登录的用户,请在 Freenom 管理页面绑定邮箱,绑定后即可使用邮箱账户登录 | 
| FREENOM_PASSWORD | Freenom 密码 | ——— | 是 | 某些特殊字符可能需要转义,详见.env文件内注释 | 
| MULTIPLE_ACCOUNTS | 多账户支持 | ——— | 否 | 多个账户和密码的格式必须是“<账户1>@<密码1><账户2>@<密码2>\<账户3>@<密码3>”,注意不要省略“<>”符号,否则无法正确匹配。如果设置了多账户,上面的FREENOM_USERNAME和FREENOM_PASSWORD可不设置 | 
| MAIL_USERNAME | 机器人邮箱账户 | ——— | 否 | 支持Gmail、QQ邮箱、163邮箱以及Outlook邮箱 | 
| MAIL_PASSWORD | 机器人邮箱密码 | ——— | 否 | Gmail填应用专用密码,QQ邮箱或163邮箱填授权码 | 
| TO | 接收通知的邮箱 | ——— | 否 | 你自己最常用的邮箱,用来接收机器人邮箱发出的域名相关邮件 | 
| MAIL_ENABLE | 是否启用邮件推送功能 | 0 | 
否 | 1:启用0:不启用默认不启用,如果设为1,启用邮件推送功能,则上面的MAIL_USERNAME、MAIL_PASSWORD、TO变量变为必填项 | 
| TELEGRAM_CHAT_ID | 你的chat_id | 
——— | 否 | 通过发送/start给@userinfobot可以获取自己的id | 
| TELEGRAM_BOT_TOKEN | 你的Telegram bot的token | 
——— | 否 | |
| TELEGRAM_BOT_ENABLE | 是否启用Telegram Bot推送功能 | 
0 | 
否 | 1:启用0:不启用默认不启用,如果设为1,则必须设置上面的TELEGRAM_CHAT_ID和TELEGRAM_BOT_TOKEN变量 | 
| NOTICE_FREQ | 通知频率 | 1 | 
否 | 0:仅当有续期操作的时候1:每次执行 | 
| NEZHA_SERVER | 哪吒探针服务端的 IP 或域名 | ——— | 否 | |
| NEZHA_PORT | 哪吒探针服务端的端口 | ——— | 否 | |
| NEZHA_KEY | 哪吒探针客户端专用 Key | ——— | 否 | 
如何验证配置是否正确呢?
修改并保存.env文件后,执行docker restart freenom重启容器,等待 5 秒钟左右,然后执行docker logs freenom查看输出内容, 观察输出内容中有执行成功 字样,则表示配置无误。如果你还来不及配置送信邮箱等内容,可先停用邮件功能。
如何升级到最新版或者重新部署呢?
在.env所在目录,执行docker rm -f freenom删除现有容器,然后再执行 docker rmi -f luolongfei/freenom 删除旧的镜像,然后再执行上面的 docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom 重新部署即可,这样部署后就是最新的代码了。当然,新版对应的.env文件可能有变动,不必担心,程序会自动更新.env文件内容,并将已有的配置迁移过去。
一句话操作,即在.env文件所在目录下执行以下命令,即可完成更新升级:
1  | docker rm -f freenom && docker rmi -f luolongfei/freenom && docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom  | 
2.2 后期容器管理以及 Docker 常用命令
查看容器在线状态及大小
1  | docker ps -as  | 
查看容器的运行输出日志
1  | docker logs freenom  | 
重新启动容器
1  | docker restart freenom  | 
停止容器的运行
1  | docker stop freenom  | 
移除容器
1  | docker rm -f freenom  | 
查看 docker 容器占用 CPU,内存等信息
1  | docker stats --no-stream  | 
查看 Docker 安装版本等信息
1  | docker version  | 
重启 Docker(非容器)
1  | systemctl restart docker  | 
有关容器部署的内容结束。



