使用脚本来自动续期freenom免费域名还是很有必要的,很多童鞋都有几十个免费域名,手动续期真是个体力活。之前的教程因为作者提供的git actions方式导致仓库被封,所以这个方式已经不能使用,好在作者更新了docker,目前我们可以使用docker来部署这个脚本。
这篇文章就来说说如何用docker的方式来为freenom免费域名自动续期。
项目:https://github.com/luolongfei/next-freenom
docker:https://hub.docker.com/r/luolongfei/freenom
1)准备一台vps
2)安装好docker管理器
3)配置发信telegram bot,这里就不多讲解了,各位根据自己使用的邮箱服务器进行配置即可。
如果你有自己的服务器,这是最推荐的部署方式。
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
。
升级源并安装软件(下面两行命令二选一,根据你自己的系统)
Debian / Ubuntu
apt-get update && apt-get install -y wget vim
CentOS
yum update && yum install -y wget vim
执行此命令等候自动安装 Docker
wget -qO- get.docker.com | bash
说明:请使用 KVM 架构的 VPS,OpenVZ 架构的 VPS 不支持安装 Docker,另外 CentOS 8 不支持用此脚本来安装 Docker。 更多关于 Docker 安装的内容参考 Docker 官方安装指南 。
启动 Docker 服务
systemctl start docker
查看 Docker 运行状态
systemctl status docker
将 Docker 服务加入开机自启动
systemctl enable docker
1)使用ssh软件链接到你的服务器,在命令行使用如下命令:
docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom
2)或者,如果你想自定义脚本执行时间,则命令如下
docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs -e RUN_AT="11:24" luolongfei/freenom
3)上面这条命令只比上上条命令多了个 -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 点全时段随机的一个时间点作为执行时间, 每次重启容器都会自动重新指定。
4)至此,你的自动续期容器就跑起来了,执行ls -a
后你就可以看到在你的当前目录下,有一个.env
文件和一个logs
目录,logs
目录里面存放的是程序日志, 而.env
则是配置文件,现在直接执行vim .env
将.env
文件里的所有配置项改为你自己的并保存即可。然后重启容器,如果配置正确的话,便很快可以收到相关邮件。
5)如何验证你的配置是否正确呢?
修改并保存.env
文件后,执行docker restart freenom
重启容器,等待 5 秒钟左右,然后执行docker logs freenom
查看输出内容, 观察输出内容中有执行成功
字样,则表示配置无误。如果你还来不及配置送信邮箱等内容,可先停用邮件功能。
6)修改.env文件,具体如下:修改后,参考:【5)如何验证你的配置是否正确呢?】部署
##################################################################### # 注意事项
#
# - 环境变量的格式为“键=值”,顶格写,注意等号两边不能有空格,值可以用单引号或者双引号引起来,不引也行(下面的特殊情况必须引起来)
# - 因为环境变量中“#”代表注释,若密码中存在“#”字符的,一定要使用单引号将整个密码引起来,否则解析会在“#”字符前截止,如果密码中存在单双引号的,
# 需要在单双引号前加“\”转义
# - 配置多账户不可省略单引号,且多个账户和密码的格式必须是“<账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3>”,不要有空格,就算有程序也会给你干掉
# e.g. MULTIPLE_ACCOUNTS='<账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3>'
# 注意不要省略“<>”符号,否则无法正确匹配
# - 若你只有单个账户,只配置FREENOM_USERNAME和FREENOM_PASSWORD就够了
# - 单账户和多账户的配置会被合并在一起读取并去重
#####################################################################
###################### 账户配置 Account config #########################
# Freenom账户 Freenom Account
FREENOM_USERNAME=admin@qq.com
# Freenom密码 Freenom password
FREENOM_PASSWORD='cnboyorg'
# 多账户支持 Support for multiple accounts
MULTIPLE_ACCOUNTS=''
###################### end 账户配置 #########################
###################### 通知邮件配置 Email config #########################
# 机器人邮箱账户 Email of robot
MAIL_USERNAME=llf.push@gmail.com
# 机器人邮箱密码(Gmail填密码,QQ邮箱或163邮箱填授权码) Password of the robot email
MAIL_PASSWORD='ljflasjflsfsfsfsfsaf'
# 用于接收通知的邮箱 Email address used to receive notifications
TO='88888@qq.com'
# 是否启用邮件推送功能 true:启用 false:不启用 Whether to enable email push features true: enabled false: not enabled
MAIL_ENABLE=true
###################### end 通知邮件配置 #########################
###################### Telegram bot #########################
# 可选配置,通过 Telegram bot 发送通知消息 This is an optional configuration to send notification messages via Telegram bot
# 你的chat_id,通过发送“/start”给@userinfobot可以获取自己的id Your chat_id, you can get your own id by sending "/start" to @userinfobot
TELEGRAM_CHAT_ID='123456789'
# 你的Telegram bot的token Token for your Telegram bot
TELEGRAM_BOT_TOKEN='9190:AAHggsghdgdgsdg'
# 是否启用 Telegram Bot 功能 true:启用 false:不启用 Whether to enable Telegram Bot features true: enabled false: not enabled
TELEGRAM_BOT_ENABLE=false
###################### end Telegram bot #########################
# 通知频率 0:仅当有续期操作的时候 1:每次执行 Notification frequency 0: Only when there is a renewal operation 1: Each execution
NOTICE_FREQ=1
# 在 Github Actions 上运行 Run on github actions
ON_GITHUB_ACTIONS=false
# 是否验证服务器证书 Whether to verify server certificate
VERIFY_SSL=false
# 是否开启 Debug 模式 Whether to enable debug mode
DEBUG=false
当然你也可以使用tg来推送消息,在env都有详细介绍!
如果你不想每次执行都收到推送,请将 .env 中 NOTICE_FREQ 的值设为0,使程序只在有续期操作时才推送,其他的也没啥好说的,有需要的童鞋可以折腾起来啦。