|
|
4 лет назад | |
|---|---|---|
| .github | 4 лет назад | |
| app | 4 лет назад | |
| libs | 4 лет назад | |
| logs | 4 лет назад | |
| resources | 4 лет назад | |
| vendor | 4 лет назад | |
| .dockerignore | 4 лет назад | |
| .env.example | 4 лет назад | |
| .gitignore | 4 лет назад | |
| Dockerfile | 4 лет назад | |
| LICENSE | 4 лет назад | |
| README.md | 4 лет назад | |
| README_EN.md | 4 лет назад | |
| composer.json | 4 лет назад | |
| composer.lock | 4 лет назад | |
| config.php | 4 лет назад | |
| docker-entrypoint.sh | 4 лет назад | |
| index.php | 4 лет назад | |
| run | 4 лет назад |
(下面三种部署方式,选择其中一种即可)
⛵ 通过 Docker 方式部署(最简单的方式,推荐)
📰 更新日志 (每次新版本发布,可以参考此日志决定是否更新)
issues全部丢失,以及近1.8k的star数重新归零,在动力上面确实有受到影响,不过也不会有太大影响,本项目依然长期维护,如果项目有帮到你,欢迎 star。众所周知,Freenom是地球上唯一一个提供免费顶级域名的商家,不过需要每年续期,每次续期最多一年。由于我申请了一堆域名,而且不是同一时段申请的, 所以每次续期都觉得折腾,于是就写了这个自动续期的脚本。
无论是续期成败或者脚本执行出错,都会收到的程序发出的邮件。如果是续期成败相关的邮件,邮件会包括未续期域名的到期天数等内容。 邮件参考了微信发送的注销公众号的邮件样式。
Gmail、QQ邮箱、163邮箱以及Outlook邮箱,程序会自动判断发信邮箱类型并使用合适的配置。
如果你使用的是其它第三方邮箱或者自建邮件服务,那么请参考 .env.example
文件中与邮件配置相关的注释进行配置。QQ邮箱,QQ邮箱唯一的好处只是收到邮件会在QQ弹出消息。Centos7或者Debian,另外 PHP 版本需在php7.2及以上。如果你没有服务器,推荐参考下方文档部署到 腾讯云函数 。下面分别介绍Gmail、QQ邮箱以及163邮箱的设置,你只用看自己需要的部分。注意,QQ邮箱与163邮箱均使用账户加授权码的方式登录,
谷歌邮箱使用账户加密码的方式登录,请知悉。另外还想吐槽一下,国产邮箱你得花一毛钱给邮箱提供方发一条短信才能拿到授权码。
(点击即可展开或收起)
上面介绍了三种邮箱的设置方法,如果你不想使用邮件推送,也可以使用 Telegram bot,灵活配置。在.env文件中, 将TELEGRAM_BOT_ENABLE的值改为1,即可启用 Telegram
bot,同样的,将MAIL_ENABLE的值改为0即可关闭邮件推送方式。 Telegram bot 有两个配置项,一个是chat_id(对应.env文件中的TELEGRAM_CHAT_ID), 通过使用你的
Telegram 账户发送/start给@userinfobot即可以获取自己的id, 另一个是token(对应.env文件中的TELEGRAM_BOT_TOKEN),你的 Telegram bot 令牌,你会创建
Telegram bot 就知道怎么获取, 不多赘述。如何创建一个 Telegram bot 请参考:官方文档
与通知相关的设置到此就完成了,下面开始讲本项目的三种使用方式,一种是通过 Docker,另一种是通过腾讯云函数,再一种是直接拉取源码部署,推荐使用 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。
升级源并安装软件(下面两行命令二选一,根据你自己的系统)
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 安装版本等信息
docker version
启动 Docker 服务
systemctl start docker
查看 Docker 运行状态
systemctl status docker
将 Docker 服务加入开机自启动
systemctl enable 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 点全时段随机的一个时间点作为执行时间, 每次重启容器都会自动重新指定。
至此,你的自动续期容器就跑起来了,执行ls -a后你就可以看到在你的当前目录下,有一个.env文件和一个logs目录,logs目录里面存放的是程序日志, 而.env则是配置文件,现在直接执行vim .env
将.env文件里的所有配置项改为你自己的并保存即可。然后重启容器,如果配置正确的话,便很快可以收到相关邮件。
如何验证你的配置是否正确呢?
修改并保存.env文件后,执行docker restart freenom重启容器,等待 5 秒钟左右,然后执行docker logs freenom查看输出内容, 观察输出内容中有执行成功
字样,则表示配置无误。如果你还来不及配置送信邮箱等内容,可先停用邮件功能。
查看容器在线状态及大小
docker ps -as
查看容器的运行输出日志
docker logs freenom
重新启动容器
docker restart freenom
停止容器的运行
docker stop freenom
移除容器
docker rm $name
查看 docker 容器占用 CPU,内存等信息
docker stats --no-stream
有关容器部署的内容结束。
此版本为特别版,支持通过腾讯云函数部署,并且将与主分支同步维护更新,推荐没有自己 VPS 服务器的用户使用,最新版本号为v0.3.1_scf。下载地址:
https://github.com/luolongfei/freenom/releases/download/v0.3.1_scf/freenom-0.3.1_scf.zip
下载后你将得到一个 zip 文件,将 zip 文件放到你能找到的任意目录,后面我们将以 zip 文件的形式上传到腾讯云函数。
直接访问腾讯云函数控制台创建云函数: https://console.cloud.tencent.com/scf/list-create , 按照下图所示的说明进行创建。如果无法看清图片,可访问: https://github.com/luolongfei/freenom/blob/main/resources/screenshot/scf.png 或者 https://z3.ax1x.com/2021/10/14/5lMweU.png 查看原图。
按照上图所示部署完成后,可以点击云函数的名称进入云函数管理画面,管理画面点击函数代码,然后往下翻可看到部署与测试按钮,点击测试,稍等几秒钟,即可看到输出日志, 根据输出日志判断配置以及部署是否正确。
有关腾讯云函数部署的内容结束。
所有操作均在Centos7系统下进行,其它Linux发行版大同小异
创建文件夹
mkdir -p /data/wwwroot/freenom && cd /data/wwwroot/freenom
clone 本仓库源码
git clone https://github.com/luolongfei/freenom.git ./
复制配置文件模板
cp .env.example .env
编辑配置文件
vim .env
# 注意事项
# .env 文件里每个项目都有详细的说明,这里不再赘述,简言之,你需要把里面所有项都改成你自己的。需要注意的是多账户配置的格式:
# e.g. MULTIPLE_ACCOUNTS='<账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3>'
# (注意不要省略“<>”符号,否则无法正确匹配)
# 当然,若你只有单个账户,只配置 FREENOM_USERNAME 和 FREENOM_PASSWORD 就够了,单账户和多账户的配置会被合并在一起读取并去重。
# 编辑完成后,按“Esc”回到命令模式,输入“:wq”回车即保存并退出,不会用 vim 编辑器的可以谷歌一下:)
yum -y install cronie crontabs
验证 crond 是否安装及启动
yum list cronie && systemctl status crond
验证crontab是否安装
yum list crontabs $$ which crontab && crontab -l
crontab -e
# 任务内容如下
# 此任务的含义是在每天早上 9点 执行 /data/wwwroot/freenom/ 路径下的 run 文件,最佳实践是将这个时间修改为一个非整点的时间,防止与很多人在同一时间进行续期操作导致 freenom 无法稳定提供服务
# 注意:某些情况下,crontab 可能找不到你的 php 路径,下面的命令执行后会在 freenom_crontab.log 文件输出错误信息,你应该指定 php 路径:把下面的 php 替换为 /usr/local/php/bin/php (根据实际情况,执行 whereis php 即可看到 php 执行文件的真实路径)
00 09 * * * cd /data/wwwroot/freenom/ && php run > freenom_crontab.log 2>&1
systemctl restart crond
若要检查计划任务是否正常,你可以将上面的任务执行时间设置在几分钟后,然后等到任务执行完成, 检查/data/wwwroot/freenom/目录下的freenom_crontab.log
文件内容,是否有报错信息。常见的错误信息如下:
(点击即可展开或收起)
<summary>解决方案</summary>
执行
> whereis php > ``` > ```shell script > # 上面的命令可确定 php 执行文件的位置,一般输出为“php: /usr/local/php /usr/local/php/bin/php”,选长的那个即:/usr/local/php/bin/php > ``` > > 现在我们知道 php 执行文件的路径是`/usr/local/php/bin/php`(根据你自己系统的实际情况,可能不同),然后修改表单任务里的命令,把 > > `00 09 * * * cd /data/wwwroot/freenom/ && php run > freenom_crontab.log 2>&1` > > 改为 > > `00 09 * * * cd /data/wwwroot/freenom/ && /usr/local/php/bin/php run > freenom_crontab.log 2>&1` > > 更多参考:[点这里](https://stackoverflow.com/questions/7397469/why-is-crontab-not-executing-my-php-script) > </details> 当然,如果你的`计划任务`能正确找到`php路径`,没有错误,那你什么也不用做。 *至此,所有的配置都已经完成,下面我们验证一下整个流程是否走通。* ##### 3.4 验证 你可以先将`.env`中的`NOTICE_FREQ`的值改为1(即每次执行都推送通知),然后执行shell script cd /data/wwwroot/freenom/ && php run ```
不出意外的话,你将收到一封关于域名情况的邮件。
遇到任何问题或 Bug 欢迎提 issue (请按模板格式提issue,以便我快速复现你的问题,否则问题会被忽略), 如果Freenom
改变算法导致此项目失效,请提 issue 告知,我会及时修复,本项目长期维护。 欢迎star~
非常感谢「 这些用户 」对本项目的捐赠支持!
如果你觉得本项目真的有帮助到你并且想回馈作者,感谢你的捐赠。
Every time you spend money, you're casting a vote for the kind of world you want. -- Anna Lappe
你的 star 或者小额打赏是我长期维护此项目的动力所在,由衷感谢每一位支持者,“每一次你花的钱都是在为你想要的世界投票”。 另外,将本项目推荐给更多的人,也是一种支持的方式,用的人越多更新的动力越足。
认真是我们参与这个社会的方式,认真是我们改变这个社会的方式。 ——李志
此处省略了很多较为久远的记录,以前的日志只记录了比较大的变更,以后的日志会尽可能详尽一些。
(版本在 v0.1 到 v0.2 期间代码有过很多次变更,之前没有发布版本,故此处不再赘述相关变更日志)