本文最后更新于 2023-06-01,文章最后在90天前更新,内容可能已经过时。

由于Freenom近期增加了人机验证,所以自动续期不再有效,只能手动进行续期操作

部署至Github

准备

Github 组织账户

个人账户过度使用Github Action会被封禁,使用组织账户更保险

配置

首先克隆 项目仓库组织账户

进入克隆好的仓库,点击 设置 -> Secrets and variables -> Action

添加以下变量:

- [必须] FREENOM_USERNAME Freenom账户邮箱

- [必须] FREENOM_PASSWORD Freenom账户密码

- [可选,强烈推荐] MAIL_USERNAME 发信邮箱也就是准备的闲置邮箱

- [可选,强烈推荐] MAIL_PASSWORD STMP授权密码

- [可选,强烈推荐] TO 接收通知的邮箱

- [可选,强烈推荐] MAIL_ENABLE 是否启用邮件推送功能 true 启用, false 不启用

设为 true 必须要设置 TO MAIL_USERNAME MAIL_PASSWORD

- [可选] FF_TOKEN 用于登录网页控制台的密码

- [可选,推荐] NOTICE_FREQ 通知邮件发送 1 每天按时执行 0 仅在有域名续期操作时执行

- [可选] WECHAT_CORP_ID 企业微信ID

- [可选] WECHAT_CORP_SECRET 应用凭证密钥

- [可选] WECHAT_AGENT_ID 应用ID

- [可选] WECHAT_ENABLE 是否启用企业微信送信功能 1:启用 0:不启用

部署

点击 Actions -> set up a workflow yourself

将下面的代码复制进新建的文件中

######  说明  ######

# 1、Fork 本仓库

# 2、在你 Fork 的本仓库下的 Settings > Secrets 画面追加以下几个 secret 变量:

# FREENOM_USERNAME、FREENOM_PASSWORD、MULTIPLE_ACCOUNTS、MAIL_USERNAME、MAIL_PASSWORD、TO、MAIL_ENABLE、TELEGRAM_CHAT_ID、

# TELEGRAM_BOT_TOKEN、TELEGRAM_BOT_ENABLE、NOTICE_FREQ

# (注:此处列出了所有可用变量,你只用追加你需要用到的变量,变量的具体含义请参考本项目的 .env 文件中的说明,一般情况下,.env 文件中的某些

#  项存在默认值,如果默认值满足你的需求则可不追加到 Secrets,它们会保持默认)

#

# 下面定时任务中的时间是世界时间,每天 10:00 执行,由于创建虚拟环境会消耗时间,故任务会延迟 30 秒左右执行

#

# @Author of yml configuration file: RouRouX <https://github.com/RouRouX> & mybsdc <mybsdc@gmail.com>

#

######  end 说明  ######

name: Run it on action

on:

  workflow_dispatch:

  push:

    branches:

      - master

  schedule:

    - cron: 00 02  *

jobs:

  run-it:

    runs-on: ubuntu-latest

    name: Run it on action

    steps:

      - name: Checkout master

        uses: actions/checkout@v3.1.0

      - name: Setup PHP

        uses: shivammathur/setup-php@v2

        with:

          php-version: '7.2'

      - name: Setting

        run: |

          echo 'Renew freenom domain name automatically.'

          echo '@Author of yml configuration file: RouRouX <https://github.com/RouRouX> & mybsdc <mybsdc@gmail.com>'

          echo '@Url: https://github.com/luolongfei/freenom'

          cp .env.example .env

          sudo mkdir -p logs/$(date +"%Y")-$(date +"%m")

          sudo chmod -Rf 777 logs

          if [[ ('${{ secrets.FREENOM_USERNAME }}'  '' || '${{ secrets.FREENOM_PASSWORD }}'  '') && '${{ secrets.MULTIPLE_ACCOUNTS }}' == '' ]]; then echo '你在 Github 的当前项目的 Settings > Secrets 画面没有设置任何与账户信息相关的 secret 值,无法正常运行,请添加新的 secret 值,设置 FREENOM_USERNAME 与 FREENOM_PASSWORD,或者设置 MULTIPLE_ACCOUNTS,以及 .env 文件中其它必要项,各项的具体含义与格式参考本项目 .env 文件中的说明。'; fi

          if [ '${{ secrets.FREENOM_USERNAME }}' != '' ]; then sed -i "s/^FREENOM_USERNAME=.*$/FREENOM_USERNAME='${{ secrets.FREENOM_USERNAME }}'/" .env; fi

          if [ '${{ secrets.FREENOM_PASSWORD }}' != '' ]; then sed -i "s/^FREENOM_PASSWORD=.*$/FREENOM_PASSWORD='${{ secrets.FREENOM_PASSWORD }}'/" .env; fi

          if [ '${{ secrets.MULTIPLE_ACCOUNTS }}' != '' ]; then sed -i "s/^MULTIPLE_ACCOUNTS=.*$/MULTIPLE_ACCOUNTS='${{ secrets.MULTIPLE_ACCOUNTS }}'/" .env; fi

          if [ '${{ secrets.MAIL_USERNAME }}' != '' ]; then sed -i "s/^MAIL_USERNAME=.*$/MAIL_USERNAME='${{ secrets.MAIL_USERNAME }}'/" .env; fi

          if [ '${{ secrets.MAIL_PASSWORD }}' != '' ]; then sed -i "s/^MAIL_PASSWORD=.*$/MAIL_PASSWORD='${{ secrets.MAIL_PASSWORD }}'/" .env; fi

          if [ '${{ secrets.TO }}' != '' ]; then sed -i "s/^TO=.*$/TO='${{ secrets.TO }}'/" .env; fi

          if [ '${{ secrets.MAIL_ENABLE }}' != '' ]; then sed -i "s/^MAIL_ENABLE=.*$/MAIL_ENABLE='${{ secrets.MAIL_ENABLE }}'/" .env; fi

          if [ '${{ secrets.TELEGRAM_CHAT_ID }}' != '' ]; then sed -i "s/^TELEGRAM_CHAT_ID=.*$/TELEGRAM_CHAT_ID='${{ secrets.TELEGRAM_CHAT_ID }}'/" .env; fi

          if [ '${{ secrets.TELEGRAM_BOT_TOKEN }}' != '' ]; then sed -i "s/^TELEGRAM_BOT_TOKEN=.*$/TELEGRAM_BOT_TOKEN='${{ secrets.TELEGRAM_BOT_TOKEN }}'/" .env; fi

          if [ '${{ secrets.TELEGRAM_BOT_ENABLE }}' != '' ]; then sed -i "s/^TELEGRAM_BOT_ENABLE=.*$/TELEGRAM_BOT_ENABLE='${{ secrets.TELEGRAM_BOT_ENABLE }}'/" .env; fi

          if [ '${{ secrets.NOTICE_FREQ }}' != '' ]; then sed -i "s/^NOTICE_FREQ=.*$/NOTICE_FREQ='${{ secrets.NOTICE_FREQ }}'/" .env; fi

          sed -i "s/^ON_GITHUB_ACTIONS=.*$/ON_GITHUB_ACTIONS=true/" .env

      - name: Setup WARP

        uses: fscarmen/warp-on-actions@v1

      - name: Run

        run: |

          php run

完成后点击 Start commit -> Commit new file 即可

最后,在设置的时间左右就可以收到域名续期的邮件了

设置发信时间

打开Actions的文件,找到 schedule: - cron: 00 02 * ,将表达式改为其他的即可

这里使用UTC时间,北京时间需要加+8小时( 00 10 * 就是下午 18:00 发信)