+-
实操教程:Github actions为freenom域名免费自动续期

本教程适合有一定互联网基础的用户使用,可能更适合站长级用户操作,那样会更容易操作一些。

▍如何白嫖freedom的免费域名
之前分享过教程,超链接文章如下:
实战教程:白嫖服务器、免费建站、免费域名申请
【白嫖tk、cf、ga域名】
tk、cf、ga域名,最长可以白嫖一年时间,到期了继续再申请呗;今天神器每日推送一次申请了3个tk、cf、ga域名,可以看到到期时间为2023年9月02日,足足可以白嫖一年之久。
利用Github actions为freenom域名免费自动续期
github actions执行php续期脚本(不需要有机器执行,有github账号就行),玩法也很简单,只要fork一下再配置一下就可以开玩了。
免费域名自动续期php项目:
https://github.com/luolongfei/freenom

【操作教程】
1、 Fork仓库(GitHub平台)
打开上面的GitHub项目仓库,fork到自己的GitHub。


2 . 转到“Actions”,点击“Or skip this and set up a workflow yourself”

3、 复制以下内容到Actions文件创建页面,可以适当修改Cron定时任务的时间

  •   
      
    ###### 说明 ###### # 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 <[email protected]> # ###### end 说明 ######
    name: Run it on action
    on: schedule: - cron: 20 20 * * 3 workflow_dispatch:
    jobs: run-it: runs-on: ubuntu-latest name: Run it on action steps: - name: Checkout master uses: actions/[email protected] - 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 <[email protected]>' 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

  • 设置Secrets变量,这里是Actions变量说明


  • 变量名
    含义
    默认值
    是否必须
    备注





    FREENOM_USERNAME
    freenom 账户

    只支持邮箱账户,不支持也不打算支持第三方社交账户登录
    FREENOM_PASSWORD
    freenom 密码

    某些特殊字符可能需要转义,在Github actions环境,请在除字母数字以外的字符前加上“\”,否则可能无法正确读取密码,此举是防止某些字符在shell命令行被解析,举个例子,比如我密码是fei.,:! @#$%^&*?233-_abcd^$$,那么写到秘密变量时就应写为fei.,:!\@#$%^&*?233-_abcd^$$。而在普通VPS环境,则只用在密码中的“#”或单双引号前加“\”,请参考.env.example文件内的注释,应该没人会设置那么变态的密码吧
    MULTIPLE_ACCOUNTS
    多账户支持

    多个账户和密码的格式必须是“<账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3>”,如果设置了多账户,上面的FREENOM_USERNAME和FREENOM_PASSWORD可不设置
    MAIL_USERNAME
    机器人邮箱账户

    支持Gmail、QQ邮箱以及163邮箱,尽可能使用163邮箱或者QQ邮箱,而非之前推荐的Gmail。因为谷歌的安全机制,每次在新设备登录 Gmail 都会先被限制,需要手动解除限制才行,而Github Actions每次创建的虚拟环境都会分配一个新的设备IP,相当于每次都是从新设备登录Gmail,而我们不可能每次都去手动为Gmail解除登录限制,所以这种机制会导致无法发出通知邮件。具体的配置方法参考「 配置发信邮箱 」
    MAIL_PASSWORD
    机器人邮箱密码

    Gmail填密码,QQ邮箱或163邮箱填授权码
    TO
    接收通知的邮箱

    你自己最常用的邮箱,推荐使用QQ邮箱,用来接收机器人邮箱发出的域名相关邮件
    MAIL_ENABLE
    是否启用邮件推送功能
    true
    true:启用 false:不启用。默认启用,如果设为false,不启用邮件推送功能,则上面的MAIL_USERNAME、MAIL_PASSWORD、TO变量变为非必须,可不设置
    TELEGRAM_CHAT_ID
    你的chat_id

    通过发送 /start 给 @userinfobot 可以获取自己的TG userid
    TELEGRAM_BOT_TOKEN
    你的Telegram bot的token


    TELEGRAM_BOT_ENABLE
    是否启用Telegram Bot推送功能
    false
    true:启用 false:不启用。默认不启用,如果设为true,则必须设置上面的TELEGRAM_CHAT_ID和TELEGRAM_BOT_TOKEN变量
    NOTICE_FREQ
    通知频率
    1
    0:仅当有续期操作的时候 1:每次执行
  • 在Actions页面,按照截图步骤调试,提示Workflow run was successfully requested.,就说明代码跑通了,然后就是更改一些Actions变量了。

  • 如运行成功,将会通过你设置的通知方式、收到域名续期通知


  • Secrets 页面secret变量基本上都差不多。
    这几个变量是必须的。
  • FREENOM_USERNAME   # Freenom账户 Freenom Account

  • FREENOM_PASSWORD   # Freenom账户密码

  • MAIL_USERNAME          #机器人邮箱,就是上一步中设置的163邮箱。

  • MAIL_PASSWORD         #这里填写你获得的授权密码

  • TO                                 #接收通知的邮箱

  • MAIL_ENABLE               #是否启用邮件推送功能 true:启用 false:不启用

  • 设置>POP3/SMTP/IMAP下,开启 POP3/SMTP服务IMAP/SMTP服务并保存