)
永久免费持有Freenom域名的自动化续签方案你是否曾经因为忘记续期而丢失心仪的免费域名对于使用Freenom免费域名的开发者来说手动续期不仅繁琐还容易因疏忽导致域名失效。本文将介绍一套基于GitHub Actions的自动化解决方案让你彻底告别手动操作实现一次配置永久免费的域名持有体验。1. 为什么需要自动化续签Freenom提供的免费域名最长有效期为12个月到期后需要手动续期。但实际操作中存在几个痛点遗忘风险域名到期前没有及时续期可能导致域名被回收操作繁琐需要定期登录Freenom账户进行手动续期验证问题Freenom的验证机制可能导致续期失败传统续期方式与自动化方案对比对比项手动续期自动化方案操作频率每年至少一次一次配置可靠性依赖人工记忆系统自动执行复杂度需要登录网站操作配置后无需干预失败风险较高可设置失败通知提示自动化续签不仅能解决续期问题还能通过日志记录每次操作结果便于后续排查问题。2. 核心工具与原理实现自动化续期的核心是开源项目luolongfei/freenom它通过模拟用户登录Freenom网站完成续期操作。配合GitHub Actions的定时任务功能可以定期执行续期检查。2.1 技术栈组成freenom脚本Python编写的自动化续期工具GitHub Actions提供免费的定时任务执行环境Secrets存储安全保存Freenom账户凭证# 示例freenom脚本的核心功能 def renew_domain(username, password, domain): # 模拟登录Freenom session login(username, password) # 检查域名状态 status check_domain_status(session, domain) # 如果即将到期则续期 if status[expiring_soon]: return renew(session, domain) return False2.2 工作流程定时触发GitHub Actions按设定时间如每周执行任务凭证获取从Secrets中读取Freenom账户信息续期检查脚本检查域名到期状态自动续期对即将到期的域名执行续期操作结果通知通过邮件或Telegram发送执行结果3. 详细配置指南3.1 前期准备在开始配置前请确保具备以下条件有效的Freenom账户及至少一个免费域名GitHub账户基本的命令行操作知识3.2 配置步骤第一步Fork续期仓库访问 https://github.com/luolongfei/freenom点击右上角Fork按钮将仓库复制到你的账户下第二步设置账户Secrets在你的仓库页面点击Settings → Secrets → Actions添加以下SecretsFREENOM_USERNAME你的Freenom登录邮箱FREENOM_PASSWORD你的Freenom密码NOTIFICATION可选通知配置如Telegram bot token# 示例.github/workflows/renew.yml 关键部分 env: FREENOM_USERNAME: ${{ secrets.FREENOM_USERNAME }} FREENOM_PASSWORD: ${{ secrets.FREENOM_PASSWORD }} NOTIFICATION: ${{ secrets.NOTIFICATION }}第三步调整执行频率默认配置是每天检查一次你可以修改.github/workflows/renew.yml中的schedule部分schedule: - cron: 0 0 */7 * * # 每7天执行一次注意过于频繁的执行可能导致Freenom账户被限制建议间隔不少于7天。4. 高级配置与优化4.1 多域名管理如果你有多个Freenom域名可以通过修改.env文件来配置# .env 示例 FREENOM_MULTIPLE_ACCOUNTSaccount1mail.com:password1,account2mail.com:password2 DOMAIN_1example1.tk DOMAIN_2example2.ml4.2 通知设置配置执行结果通知可以让你及时了解续期状态邮件通知设置MAIL_USERNAME和MAIL_PASSWORDTelegram通知提供TELEGRAM_BOT_TOKEN和TELEGRAM_CHAT_ID# 通知功能示例代码 def send_notification(message): if config.telegram_enabled: telegram_send(config.telegram_token, config.telegram_chat_id, message) if config.mail_enabled: send_mail(config.mail_to, 域名续期通知, message)4.3 日志与监控GitHub Actions提供了详细的执行日志你可以在仓库的Actions标签下查看成功续期显示续期成功的域名和新的到期日失败情况记录失败原因如登录失败、验证码问题等无需续期显示域名尚未到期无需操作5. 常见问题排查5.1 续期失败的可能原因账户验证问题检查Freenom账户是否正常确认密码是否正确注意特殊字符IP限制Freenom可能对某些IP段有限制尝试更换GitHub Actions的运行地区验证码问题Freenom可能要求验证码验证需要更新脚本以支持验证码识别5.2 解决方案更新脚本定期pull原仓库获取最新修复调整执行时间避开Freenom的高峰期手动验证先通过浏览器手动续期一次确认账户状态正常# 本地测试命令需Python环境 python3 freenom.py -u youremail.com -p yourpassword -d example.tk5.3 长期维护建议定期检查GitHub Actions的执行状态关注原仓库的更新通知为重要域名设置备用提醒如日历提醒6. 安全注意事项自动化续期虽然方便但也需要注意账户安全Secrets保护不要将账户信息直接写入代码权限最小化使用专用密码而非主账户密码日志审查定期检查执行日志确认无异常双因素认证为GitHub账户启用2FA重要建议为Freenom账户设置独立密码不要与其他重要账户共用相同密码。7. 替代方案比较除了GitHub Actions还有其他自动化方案可供选择方案优点缺点适用场景GitHub Actions免费、无需服务器依赖GitHub个人开发者自建服务器完全可控需要维护成本企业/多域名第三方服务简单易用可能有费用非技术用户在实际使用中我发现GitHub Actions方案最适合个人开发者既免去了服务器维护的麻烦又能保证足够的灵活性和可靠性。特别是对于技术博客或个人项目使用的域名这套方案已经稳定运行了两年多时间期间成功续期了7次从未出现域名丢失的情况。