type
status
date
slug
summary
tags
category
icon
password

📢 注意

  • 之前因为 GitHub Action 事件导致本项目被封禁,而后我短暂将项目转移到了 https://github.com/luolongfei/next-freenom 仓库,然后在 @Mattraks 的提醒下,通过特别的方式恢复了本仓库。
  • 本次封禁导致的直接后果是以前的issues全部丢失,以及近1.8kstar数重新归零,在动力上面确实有受到影响,不过也不会有太大影响,本项目依然长期维护,如果项目有帮到你,欢迎 star。
  • 狡兔三窟,临时仓库 https://github.com/luolongfei/next-freenom 也是备用仓库,如若本仓库再次失联,可以移步到备用仓库获取最新消息,正常情况下以后的开发维护依然在本仓库进行。

📃 引言

众所周知,Freenom是地球上唯一一个提供免费顶级域名的商家,不过需要每年续期,每次续期最多一年。由于我申请了一堆域名,而且不是同一时段申请的, 所以每次续期都觉得折腾,于是就写了这个自动续期的脚本。

🍭 效果

notion image
无论是续期成败或者脚本执行出错,都会收到的程序发出的邮件。如果是续期成败相关的邮件,邮件会包括未续期域名的到期天数等内容。 邮件参考了微信发送的注销公众号的邮件样式。

🎁 事前准备

  • VPS:随便一台服务器都行,系统推荐Centos7或者Debian,另外 PHP 版本需在php7.2及以上。如果你没有服务器,推荐参考下方文档部署到 腾讯云函数
  • 送信邮箱(可选):为了方便理解又称机器人邮箱,用于发送通知邮件。目前针对GmailQQ邮箱163邮箱以及Outlook邮箱,程序会自动判断送信邮箱类型并使用合适的配置。 如果你使用的是其它第三方邮箱或者自建邮件服务,那么请参考 .env.example 文件中与邮件配置相关的注释进行配置。
  • 收信邮箱(可选):用于接收机器人发出的通知邮件。
  • 上面的送信邮箱收信邮箱是可选项,因为目前程序已支持邮件送信 / Telegram Bot / 企业微信 / Server 酱 / Bark等送信方式,仅当你使用邮件送信的时候,送信邮箱收信邮箱 才是必须的,其它送信方式所需请参考下面的 配置送信功能
  • 耐心。

📪 配置送信功能

此处会分别介绍邮件送信 / Telegram Bot / 企业微信 / Server 酱 / Bark送信方式的配置方法,以及其所需的资料,你可以任选一种送信方式进行配置,直接跳到对应的文档查看即可。 如果你是 IOS 用户,推荐使用 Bark 送信方式,一切尽在掌握的感觉很好。其它平台的用户根据自己喜好选择可接受的送信方式即可。这里非常不推荐使用Server 酱送信,Server 酱每日送信条数的限制,以及需要开会员才能直接看到送信内容,否则需要跳到 Server 酱 网站才能查看内容,都是不推荐的原因。同样的配置完全可以直接使用企业微信送信方式,企业微信送信直接在普通微信客户端就能看到信件内容。
快速到文档指定位置:
Server 酱(不推荐)

邮件送信

下面分别介绍GmailQQ邮箱以及163邮箱的设置,你只用看自己需要的部分。注意,QQ邮箱163邮箱均使用账户加授权码的方式登录, 谷歌邮箱使用账户加密码或者账户加授权码的方式登录,请知悉。另外还想吐槽一下,国产邮箱你得花一毛钱给邮箱提供方发一条短信才能拿到授权码。
(点击即可展开或收起) 设置Gmail
1、在设置>转发和POP/IMAP中,勾选
  • 对所有邮件启用 POP
  • 启用 IMAP
notion image
然后保存更改。
2、允许不够安全的应用
登录谷歌邮箱后,访问 谷歌权限设置界面 ,启用允许不够安全的应用。
notion image
另外,若遇到提示
不允许访问账户
登录谷歌邮箱后,去 gmail的这个界面 点击允许。这种情况较为少见。

设置QQ邮箱
设置>账户>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务下,开启POP3/SMTP服务
notion image
此时坑爹的QQ邮箱会要求你用手机发送一条短信给腾讯,发送完了点一下我已发送
notion image
然后你就能看到你的邮箱授权码了,使用邮箱账户加授权码即可登录,记下授权码
notion image
notion image

设置163邮箱
设置>POP3/SMTP/IMAP下,开启POP3/SMTP服务IMAP/SMTP服务并保存
notion image
notion image
现在点击侧边栏的客户端授权密码,并获取授权码,你看到画面可能和我不一样,因为我已经获取了授权码,所以只有重置授权码按钮,这里自己根据网站提示申请获取授权码,网易和腾讯一样恶心,需要你用手机给它发一条短信才能拿到授权码
notion image
163 邮箱送信后,接收方如果没收到可以在垃圾邮件里面找一下。

上面介绍了三种邮箱的设置方法,如果你不想使用邮件送信,而由于程序默认启用邮件送信方式,故不配置邮件送信的话,一定要记得关闭邮件推送方式。 将根目录下的.env文件中的MAIL_ENABLE的值改为0即可关闭邮件推送方式。
邮件 送信部分完。

Telegram Bot

1、将.env文件中的TELEGRAM_BOT_ENABLE的值改为1,即可启用 Telegram Bot 送信功能
2、在 Telegram 客户端中搜索@userinfobot,并打开聊天窗口
3、发送/start@userinfobot即可以获取自己的 Id,将.env文件中的TELEGRAM_CHAT_ID的值改为前面获取到的 Id
4、在 Telegram 客户端中搜索@BotFather,并打开聊天窗口
5、发送/newbot@BotFather,然后根据提示创建,创建完成后根据图示操作获取token
notion image
6、将.env文件中的TELEGRAM_BOT_TOKEN的值改为上一步获取的token
7、在 Telegram 客户端中搜索你创建的机器人的账户,上面示例中机器人账户为@fat_tiger_bot,请替换为你自己的。找到机器人账户并打开聊天对话框,点击聊天输入框中的 /start 按钮或者直接给机器人发送 /start,以启用机器人
8、(可选)为 Telegram Bot 设置代理。针对国内网络环境,可将.env文件中的TELEGRAM_PROXY的值改为代理值,具体参考.env文件中的注释
更多与 Telegram Bot 相关内容请参考:官方文档
Telegram bot 送信部分完。

企业微信

1、在电脑上打开 https://work.weixin.qq.com ,注册一个企业。注册的过程需要填的信息,腾讯已经做了详尽的说明,根据提示操作即可
2、注册成功后,会跳到注册成功画面,点击页面最下方的进入管理后台按钮,将打开管理后台画面
3、在管理后台,点击应用管理,然后往下翻,在自建部分找到并点击创建应用
notion image
4、创建应用,应用名称随意,注意下面的可见范围选公司名,以使得公司下的所有人可见
notion image
5、应用创建完成后,会跳到应用详情页面,在详情页面,你可以拿到AgentIdSecret的值, 在.env文件中,将WECHAT_AGENT_ID的值改为这里拿到的 AgentId 的值,将WECHAT_CORP_SECRET的值改为这里拿到的Secret的值
notion image
注意,此处要查看Secret的值的话,需要先安装企业微信 app,点击发送后会在企业微信 app客户端收到Secret的值,将值记录下来后,便可以卸载企业微信 app,然后记得将 .env 文件中的WECHAT_CORP_SECRET的值改为这里拿到的Secret的值
notion image
notion image
6、获取企业 ID,并将.env文件中WECHAT_CORP_ID的值改为企业 ID的值
notion image
7、推送消息到微信客户端。在管理后台点击我的企业,再点击微信插件,接着往下翻,找到邀请关注部分的二维码,用微信扫码关注即可
notion image
关注后,就可以在微信收到推送消息了
8、将.env文件中的WECHAT_ENABLE的值改为1,以启用微信推送功能
企业微信 送信部分完。

Server 酱

参考 Server 酱 教程之企业微信应用消息配置说明 ,这里的配置过程跟上面的企业微信配置过程一模一样,所以同样的配置,还是建议直接使用上面的企业微信 ,不需要开会员也能直接查看消息,不用跳到Server 酱的网页查看消息,也不会有每天 5 条送信次数的限制,何乐而不为。
上一步配置完成,你会得到一个SendKey,在.env文件中,将SCT_SEND_KEY的值改为这个SendKey所对应的值,然后再将SCT_ENABLE的值改为1,即可启用Server 酱送信。
Server 酱 送信部分完。

Bark 送信

Bark 是一款 IOS 端用于推送自定义通知的 app,是个人开发者在维护,项目地址为 https://github.com/Finb/Bark ,客户端和服务端均开源。
1、前往 App Store 搜索Bark并安装
notion image
2、打开Bark app,点击注册设备,记得允许通知,然后就可以看到,右边红框中两个/之间的字符便是你的BARK_KEY,请将.env文件中的BARK_KEY的值设为此处获取的值
notion image
3、将.env文件中的BARK_ENABLE的值设为1,以启用Bark送信功能
Bark 送信部分完。

与 配置送信功能 相关的篇幅完。下面开始讲本项目的三种使用方式,一种是通过 Docker,另一种是通过腾讯云函数,再一种是直接拉取源码部署,推荐使用 Docker 方式,无需纠结环境。

⛵ 方式一:通过 Docker 部署(推荐,最简单的部署方式)


Docker 仓库地址为: https://hub.docker.com/r/luolongfei/freenom ,同样欢迎 star 。 此镜像支持的架构为linux/amd64linux/arm64linux/ppc64lelinux/s390xlinux/386linux/arm/v7linux/arm/v6, 理论上支持群晖威联通树莓派以及各种类型的VPS

1、安装 Docker

1.1 以 root 用户登录,执行一键脚本安装 Docker

升级源并安装软件(下面两行命令二选一,根据你自己的系统)
Debian / Ubuntu
CentOS
执行此命令等候自动安装 Docker
说明:请使用 KVM 架构的 VPS,OpenVZ 架构的 VPS 不支持安装 Docker,另外 CentOS 8 不支持用此脚本来安装 Docker。 更多关于 Docker 安装的内容参考 Docker 官方安装指南

1.2 对 Docker 的一些命令操作

查看 Docker 安装版本等信息
启动 Docker 服务
查看 Docker 运行状态
将 Docker 服务加入开机自启动

2、通过 Docker 部署域名续期脚本

2.1 用 Docker 创建并启动容器

命令如下
或者,如果你想自定义脚本执行时间,则命令如下
上面这条命令只比上上条命令多了个-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 命令的参数解释
命令
含义
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
多账户支持
-
多个账户和密码的格式必须是“&lt;账户1&gt;@&lt;密码1&gt;|&lt;账户2&gt;@&lt;密码2&gt;|&lt;账户3&gt;@&lt;密码3&gt;”,注意不要省略“<>”符号,否则无法正确匹配。如果设置了多账户,上面的FREENOM_USERNAMEFREENOM_PASSWORD可不设置
MAIL_USERNAME
机器人邮箱账户
-
支持GmailQQ邮箱163邮箱以及Outlook邮箱,尽可能使用163邮箱或者QQ邮箱而非Gmail。因为谷歌的安全机制,每次在新设备登录¨C247C¨C23C¨C248C都会先被限制,需要手动解除限制才行。具体的配置方法参考「¨C249C配置送信功能¨C250C」
MAIL_PASSWORD
机器人邮箱密码
-
¨C24C填密码,¨C25C或¨C26C填授权码
TO
接收通知的邮箱
-
你自己最常用的邮箱,用来接收机器人邮箱发出的域名相关邮件
MAIL_ENABLE
是否启用邮件推送功能
¨C27C
¨C28C:启用¨C29C:不启用默认启用,如果设为¨C30C,不启用邮件推送功能,则上面的¨C31C、¨C32C、¨C33C变量变为非必须,可不设置
TELEGRAM_CHAT_ID
你的¨C34C
-
通过发送¨C35C给¨C36C可以获取自己的¨C37C
TELEGRAM_BOT_TOKEN
你的¨C38C的¨C39C
-
TELEGRAM_BOT_ENABLE
是否启用¨C40C推送功能
¨C41C
¨C42C:启用¨C43C:不启用默认不启用,如果设为¨C44C,则必须设置上面的¨C45C和¨C46C变量
NOTICE_FREQ
通知频率
¨C47C
¨C48C:仅当有续期操作的时候¨C49C:每次执行
更多配置项含义,请参考¨C251C.env.example¨C252C文件中的注释。
如何验证你的配置是否正确呢?
修改并保存.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文件内容,并将已有的配置迁移过去。

2.2 后期容器处理常用命令

查看容器在线状态及大小
查看容器的运行输出日志
重新启动容器
停止容器的运行
移除容器
查看 docker 容器占用 CPU,内存等信息
有关容器部署的内容结束。

🕹 方式二:通过腾讯云函数部署(推荐无服务器的用户使用)


1、下载腾讯云函数版的压缩包

腾讯云函数版将与主版同步维护更新,推荐没有自己服务器的用户使用,最新版本号为v0.4.3。下载地址: https://github.com/luolongfei/freenom/releases/download/v0.4.3/freenom_scf.zip
下载后你将得到一个 zip 文件,将 zip 文件放到你能找到的任意目录,后面我们将以 zip 文件的形式上传到腾讯云函数。

2、创建腾讯云函数

直接访问腾讯云函数控制台创建云函数: https://console.cloud.tencent.com/scf/list-create?rid=5&ns=default&createType=empty ,按照下图所示的说明进行创建。如果无法看清图片,可访问: https://github.com/luolongfei/freenom/blob/main/resources/screenshot/scf.png 或者 https://z3.ax1x.com/2021/10/14/5lMweU.png 查看原图,也可以直接点击图片查看原图。
notion image
按照上图所示部署完成后,可以点击云函数的名称进入云函数管理画面,管理画面点击函数代码,然后往下翻可看到部署测试按钮,点击测试,稍等几秒钟,即可看到输出日志, 根据输出日志判断配置以及部署是否正确。
notion image
如果你在创建腾讯云函数的时候,某些环境变量忘记填了,或者在创建腾讯云函数后想要修改或者新增某些环境变量,可以参考这里操作,无需重建:
notion image
有关腾讯云函数部署的内容结束。

🚧 方式三:直接拉取源码部署


所有操作均在Centos7系统下进行,其它Linux发行版大同小异

1、获取源码

创建文件夹
clone 本仓库源码

2、修改配置

复制配置文件模板
编辑配置文件

3、添加计划任务

3.1 安装 crontabs 以及 cronie

验证 crond 是否安装及启动
验证crontab是否安装

3.2 打开任务表单,并编辑

3.3 重启crond守护进程(每次编辑任务表单后都需此步,以使任务生效)

若要检查计划任务是否正常,你可以将上面的任务执行时间设置在几分钟后,然后等到任务执行完成, 检查/data/wwwroot/freenom/目录下的freenom_crontab.log 文件内容,是否有报错信息。常见的错误信息如下:
  • /bin/sh: php: command not found
  • /bin/sh: /usr/local/php: Is a directory
(点击即可展开或收起) 解决方案
执行
现在我们知道 php 执行文件的路径是/usr/local/php/bin/php(根据你自己系统的实际情况,可能不同),然后修改表单任务里的命令,把
00 09 * * * cd /data/wwwroot/freenom/ &amp;&amp; php run &gt; freenom_crontab.log 2&gt;&amp;1
改为
00 09 * * * cd /data/wwwroot/freenom/ &amp;&amp; /usr/local/php/bin/php run &gt; freenom_crontab.log 2&gt;&amp;1
更多参考:点这里
当然,如果你的计划任务能正确找到php路径,没有错误,那你什么也不用做。
至此,所有的配置都已经完成,下面我们验证一下整个流程是否走通。

3.4 验证

你可以先将.env中的NOTICE_FREQ的值改为1(即每次执行都推送通知),然后执行
不出意外的话,你将收到一封关于域名情况的邮件。
  • Author:zhuzi
  • URL:/article/example-31
  • Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Seafile免费同步云盘安装与使用-自建私有云盘 打造个人云存储系统利用闲置小鸡挖矿
Loading...
zhuzi
zhuzi
一个普通的干饭人🍚
Latest posts
Paperkite-Magnet磁力搜索工具版本更新!【使用教程+自定义规则】
2024-12-10
Paperkite-Magnet磁力搜索工具,吊打传统磁力网站!
2024-12-10
serv00如何获取“root权限”,大大提高可玩性
2024-12-7
EMBY挂载Google Drive 系统建议Ubuntu 18.04
2024-12-7
linux运维监控工具-WGCLOUD
2024-12-7
全网热门公共 BitTorrent Tracker 列表每天更新
2024-12-7
Announcement
 

PIXIV日榜