之前用的是安卓手机的Termux安装qemu虚拟机,之后再套一个虚拟机,然后安装Docker,进行freenom免费域名的自动续期,当时没有设置推送,而且因为被封在实验楼,很久没管那个手机,最后手机自动关机,后来续期失败,导致好几个域名被删了,现在再注册需要花钱,所以决定重新进行自动续期,一开始用的是LXC的VPS,但是好像不支持Docker,后来只好放弃,之后用的是woiden的免费VPS,安装WARP之后再安装Docker,之后成功实现续期,并进行了Telegram Bot推送,因为这个推送是最简单的,邮箱的设置似乎有些复杂,具体的过程完全是按照官网来的:

https://github.com/luolongfei/freenom

1、安装 Docker

首先是安装docker,这里还是按照教程里面的方法,如果安装失败可以去官网找对应的方法。

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

升级源并安装软件(下面两行命令二选一,根据你自己的系统)

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 官方安装指南

1.2 针对 Docker 执行以下命令

启动 Docker 服务

systemctl start docker

查看 Docker 运行状态

systemctl status docker

将 Docker 服务加入开机自启动

systemctl enable docker

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

2.1 用 Docker 创建并启动容器

命令如下

docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom

或者,如果你想自定义脚本执行时间,则命令如下

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 命令的参数解释

命令含义
docker run开始运行一个容器
-d 参数容器以后台运行并输出容器 ID
--name 参数给容器分配一个识别符,方便将来的启动,停止,删除等操作
--restart 参数配置容器启动类型,always 即为 docker 服务重新启动时自动启动本容器
-v 参数挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径(只支持绝对路径),$(pwd)表示当前目录,如果是 Windows 系统,则可用${PWD}替换此处的$(pwd)
-e 参数指定容器中的环境变量
luolongfei/freenom这是从 docker hub 下载回来的镜像完整路径名

.env 文件中部分配置项的含义

变量名含义默认值是否必须备注
FREENOM_USERNAMEFreenom 账户-只支持邮箱账户,如果你是使用第三方社交账户登录的用户,请在 Freenom 管理页面绑定邮箱,绑定后即可使用邮箱账户登录
FREENOM_PASSWORDFreenom 密码-某些特殊字符可能需要转义,详见.env文件内注释
MULTIPLE_ACCOUNTS多账户支持-由于符号冲突,这里无法进行介绍,可参见官网
MAIL_USERNAME机器人邮箱账户-支持Gmail、QQ邮箱、163邮箱以及Outlook邮箱
MAIL_PASSWORD机器人邮箱密码-Gmail填应用专用密码,QQ邮箱或163邮箱填授权码
TO接收通知的邮箱-你自己最常用的邮箱,用来接收机器人邮箱发出的域名相关邮件
MAIL_ENABLE是否启用邮件推送功能01:启用 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推送功能01:启用 0:不启用, 默认不启用,如果设为1,则必须设置上面的TELEGRAM_CHAT_ID和TELEGRAM_BOT_TOKEN变量
NOTICE_FREQ通知频率10:仅当有续期操作的时候, 1:每次执行
NEZHA_SERVER哪吒探针服务端的 IP 或域名-
NEZHA_PORT哪吒探针服务端的端口-
NEZHA_KEY哪吒探针客户端专用 Key-

更多配置项含义,请参考 .env.example 文件中的注释。

如何验证你的配置是否正确呢?

修改并保存.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文件所在目录下执行以下命令,即可完成更新升级:

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 常用命令

查看容器在线状态及大小

docker ps -as

查看容器的运行输出日志

docker logs freenom

重新启动容器

docker restart freenom

停止容器的运行

docker stop freenom

移除容器

docker rm -f freenom

查看 docker 容器占用 CPU,内存等信息

docker stats --no-stream

查看 Docker 安装版本等信息

docker version

重启 Docker(非容器)

systemctl restart docker