Documentation: English version | 中文版
公告
特別感謝Special Thanks
引言
效果
事先準備
設定送信功能(支援郵件送信/ Telegram Bot / 企業微信/ Server 醬/ Bark 等送信方式)
透過Docker Compose 方式部署
透過Docker 方式部署(推薦,最簡單的部署方式之一)
透過Heroku 部署
透過Railway 部署
透過Koyeb 部署(建議沒有自己伺服器的使用者使用此方案,一鍵部署)
透過Mogenius 部署(已不可行)
透過各種雲端函數部署(目前各平台已開啟收費模式,已放棄支援)
直接拉取原始碼部署
贊助名單Donation List
贊助Donation
信仰
作者
所有貢獻者
TODO List
本項目的其它語言實現
鳴謝
開源協議
Freenom 续期事务局群組,可供交流、測試、回饋,加入可直接存取https://t.me/freenom_auto_renew ,或掃碼加入:感謝JetBrains 提供的非商業開源軟體開發授權。
Thanks for non-commercial open source development authorization by JetBrains.
眾所周知,Freenom是地球上唯一提供免費頂級網域的商家,不過需要每年續約,每次續約最多一年。由於我申請了一堆域名,而且不是同一時段申請的, 所以每次續期都覺得折騰,於是就寫了這個自動續期的腳本。
無論是續期成敗或程式執行出錯,都會收到腳本發出的通知。如果是續期成敗相關的通知,通知會包含未續約網域的到期天數等內容。此處顯示的是通知郵件的內容。
Debian 。 PHP版本需在php7.3以上,如果有Docker環境則可無視這個限制。如果你沒有伺服器,可參考本文檔部署到各種免費環境。Gmail 、 QQ邮箱、 163邮箱以及Outlook邮箱,程式會自動判斷寄送郵件信箱類型並使用適當的設定。 如果你使用的是其它第三方郵箱或自建郵件服務,那麼請參考.env.example 檔案中與郵件配置相關的註解進行設定。送信邮箱和收信邮箱是可選項,因為目前程序已支援邮件送信/ Telegram Bot /企业微信/ Server 酱/ Bark等送信方式,僅當你使用邮件送信的時候,送信邮箱和收信邮箱才是必須的,其它送信方式所需請參考下面的配置送信功能。這裡會分別介紹邮件送信/ Telegram Bot /企业微信/ Server 酱/ Bark送信方式的配置方法,以及其所需的資料,你可以任選一種送信方式進行配置,直接跳到對應的文檔查看即可。 如果你是IOS 用戶,推薦使用Bark送信方式,其它平台的用戶依照自己喜好選擇可接受的送信方式即可。不太建議使用Server 酱送信, Server 酱每日送信條數的限制,以及需要開會員才能直接看到送信內容,否則需要跳到Server 酱網站才能查看內容,都是不推薦的原因。同樣的配置完全可以直接使用企业微信送信方式,企业微信送信直接在一般微信客戶端就能看到信件內容。
快速到文檔指定位置:
郵件送信
Telegram Bot
企業微信
Server 醬
Bark 送信
以下分別介紹Gmail 、 QQ邮箱以及163邮箱的設置,你只用看自己需要的部分。注意, QQ邮箱與163邮箱均使用账户加授权码的方式登錄,谷歌邮箱使用账户加密码或账户加授权码的方式登錄,請知悉。另外還想吐槽一下,國產郵箱你得花一毛錢給郵箱提供方發一條短信才能拿到授權碼。
(點擊即可展開或收起)
推薦開啟瀏覽器隱私模式後再登入gmail 進行設置,防止當你有多個gmail 帳戶時無法跳到正確的設定地址。
1、在设置>转发和POP/IMAP中,勾選
然後儲存更改。
2、開啟兩步驟驗證
參考官方文件:開啟兩步驟驗證
3.設定使用應用程式專用密碼登入郵箱
參考官方文件:使用應用程式專用密碼登入
由於Gmail 已不再支援“不安全的登入方式”,故目前只能使用帳號加應用專用密碼的方式登入。
在设置>账户>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务下,開啟POP3/SMTP服务
此時坑爹的QQ信箱會要求你用手機發送一封簡訊給騰訊,發送完了點一下我已发送
然後你就能看到你的郵箱授權碼了,使用郵箱帳戶加授權碼即可登錄,記下授權碼
在设置>POP3/SMTP/IMAP下,開啟POP3/SMTP服务和IMAP/SMTP服务並儲存
現在點擊側邊欄的客户端授权密码,並獲取授權碼,你看到畫面可能和我不一樣,因為我已經獲取了授權碼,所以只有重置授权码按鈕,這裡自己根據網站提示申請獲取授權碼,網易和騰訊一樣噁心,需要你用手機給它發一條短信才能拿到授權碼
163 郵件信箱送信後,接收方如果沒收到可以在垃圾郵件裡面找一下。
上面的動作完成後,在.env檔中,將MAIL_USERNAME和MAIL_PASSWORD設定為你的信箱和密碼(或令牌),將TO設定為你的收信信箱,然後將MAIL_ENABLE的值設為1以啟用信箱送信功能。
上面介紹了三種郵箱的設定方法,如果你不想使用郵件送信,將根目錄下的.env檔案中的MAIL_ENABLE的值改為0即可關閉郵件推送方式。
郵件送信部分完。
有關【Telegram Bot】 的具體設定步驟請參考此處
有關【企業微信】 的具體設定步驟請參考此處
有關【Server 醬】 的具體配置步驟請參考此處
有關【Bark 送信】 的具體設定步驟請參考此處
與設定送信功能相關的篇幅完。下面開始講本項目的幾種使用方式。建議使用Docker 方式,無需糾結環境。
請注意,目前是beta 版本,只支援在amd64 架構的機器上安裝,arm 或其它架構的使用者請稍安勿躁,等後續更新。或者如果你需要一台伺服器,可以考慮美國便宜VPS
Debian / Ubuntu(推薦)
apt-get update -y ;
apt-get install -y wget vim git make ;
wget -qO- get.docker.com | bash ;
systemctl start docker ;
sudo systemctl enable docker.service ;
sudo systemctl enable containerd.service ;
docker version ;
DOCKER_COMPOSE_VER=2.24.3 ;
DOCKER_CONFIG=/usr/local/lib/docker ;
mkdir -p $DOCKER_CONFIG /cli-plugins ;
curl -SL https://github.com/docker/compose/releases/download/v ${DOCKER_COMPOSE_VER} /docker-compose-linux-x86_64 -o $DOCKER_CONFIG /cli-plugins/docker-compose ;
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose ;
docker compose version ;CentOS
yum update -y ;
yum install -y wget vim make ;
wget -qO- get.docker.com | bash ;
systemctl start docker ;
sudo systemctl enable docker.service ;
sudo systemctl enable containerd.service ;
docker version ;
DOCKER_COMPOSE_VER=2.24.3 ;
DOCKER_CONFIG=/usr/local/lib/docker ;
mkdir -p $DOCKER_CONFIG /cli-plugins ;
curl -SL https://github.com/docker/compose/releases/download/v ${DOCKER_COMPOSE_VER} /docker-compose-linux-x86_64 -o $DOCKER_CONFIG /cli-plugins/docker-compose ;
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose ;
docker compose version ; git clone https://github.com/luolongfei/freenom.git && cd freenom3.1.1 訪問https://wit.ai
3.1.2 使用Facebook 帳號登入或使用信箱註冊帳號登入,只需要信箱就可以註冊
3.1.3 前往https://wit.ai/apps 畫面,建立新的app
3.1.4 語言選擇English,名字隨意,類型選擇私有,創作之
3.1.5 前往Management > Settings (https://wit.ai/apps//settings) 畫面
3.1.6 複製Client Access Token,下面需要寫入.env 檔案中,WIT_AI_KEY='你複製的Client Access Token'
將.env 設定檔中的內容修改為你自己的配置,如果是從舊版升級,也可以直接把舊版.env 複製到新版項目根目錄,腳本會自動更新它。配置含義參考.env.example 檔案中的註解。
cp .env.example .env ;
vim .env ;修改完成後,輸入:wq儲存並退出。
注意:以下指令均需要在docker-compose.yml 所在目錄執行才有效。
make up沒錯,就是這麼簡單。然後可以執行make logs查看即時日誌。
啟動或更新到最新版
make up停止
make down查看即時日誌
make logs清理容器所佔的空間
make clear重啟容器
make restart透過docker compose 部署部分結束。
如果你有自己的伺服器,這是最推薦的部署方式。
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 makeCentOS
yum update && yum install -y wget vim make執行此指令等候自動安裝Docker
wget -qO- get.docker.com | bash說明:請使用KVM 架構的VPS,OpenVZ 架構的VPS 不支援安裝Docker,另外CentOS 8 不支援用此腳本來安裝Docker。 更多關於Docker 安裝的內容參考Docker 官方安裝指南。
啟動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 點全時段隨機的一個時間點作為執行時間, 每次重啟容器都會自動重新指定。
| 命令 | 意義 |
|---|---|
| docker run | 開始運行一個容器 |
| -d 參數 | 容器以後台運作並輸出容器ID |
| --name 參數 | 給容器分配一個識別符,方便將來的啟動,停止,刪除等操作 |
| --restart 參數 | 設定容器啟動類型,always 即為docker 服務重新啟動時自動啟動本容器 |
| -v 參數 | 掛載磁碟區(volume),冒號後面是容器的路徑,冒號前面是宿主機的路徑(只支援絕對路徑), $(pwd)表示目前目錄,如果是Windows 系統,則可用${PWD}替換此處的$(pwd) |
| -e 參數 | 指定容器中的環境變數 |
| luolongfei/freenom | 這是從docker hub 下載回來的映像完整路徑名 |
至此,你的自動續期容器就跑起來了,執行ls -a後你就可以看到在你的當前目錄下,有一個.env檔和一個logs目錄, logs目錄裡面存放的是程式日誌, 而.env則是設定文件,現在直接執行vim .env將.env檔案裡的所有設定項改為你自己的並儲存即可。然後重新啟動容器,如果配置正確的話,便很快可以收到相關郵件。
| 變數名 | 意義 | 預設值 | 是否必須 | 備註 |
|---|---|---|---|---|
| FREENOM_USERNAME | Freenom 帳戶 | - | 是 | 只支援郵箱帳戶,如果你是使用第三方社交帳戶登入的用戶,請在Freenom 管理頁面綁定郵箱,綁定後即可使用郵箱帳戶登錄 |
| FREENOM_PASSWORD | Freenom 密碼 | - | 是 | 某些特殊字元可能需要轉義,詳見.env檔內註釋 |
| MULTIPLE_ACCOUNTS | 多帳戶支持 | - | 否 | 多個帳戶和密碼的格式必須是“ <账户1>@<密码1>|<账户2>@<密码2>|<账户3>@<密码3> ”,注意不要省略“<>”符號,否則無法正確配對。如果設定了多個帳戶,則上面的FREENOM_USERNAME和FREENOM_PASSWORD可不設定 |
| MAIL_USERNAME | 機器人信箱帳戶 | - | 否 | 支援Gmail 、 QQ邮箱、 163邮箱以及Outlook邮箱 |
| MAIL_PASSWORD | 機器人信箱密碼 | - | 否 | Gmail填寫應用專用密碼, QQ邮箱或163邮箱填授權碼 |
| TO | 接收通知的信箱 | - | 否 | 你自己最常用的信箱,用來接收機器人信箱發出的網域相關郵件 |
| MAIL_ENABLE | 是否啟用郵件推送功能 | 0 | 否 | 1 :啟用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推送功能 | 0 | 否 | 1 :啟用0 :不啟用預設不啟用,如果設為1 ,則必須設定上面的TELEGRAM_CHAT_ID和TELEGRAM_BOT_TOKEN變量 |
| NOTICE_FREQ | 通知頻率 | 1 | 否 | 0 :僅當有續期操作的時候1 :每次執行 |
| NEZHA_SERVER | 哪吒探針服務端的IP 或域名 | - | 否 | |
| NEZHA_PORT | 哪吒探針服務端的端口 | - | 否 | |
| NEZHA_KEY | 哪吒探針客戶端專用Key | - | 否 | |
| NEZHA_TLS | 哪吒客戶SSL/TLS加密 | - | 否 | 1 :啟用0 :不啟用 |
更多配置項意義,請參考.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查看容器線上狀態及大小
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有關容器部署的內容結束。
Heroku 已於2022-11-28 停止提供免費服務,所以,請忘記本文吧。官方通告:https://blog.heroku.com/next-chapter
有關【透過Heroku 部署】 的具體操作步驟請參考此處
Railway 已更新服務條款,每月增加了使用時間限制,新的服務條款導致每月最多只能運行21 天左右,除非你驗證了信用卡,則沒有這個限制。詳細條款內容參考此處。
有關【透過Railway 部署】 的具體操作步驟請參考此處
推薦沒有自己伺服器的使用者使用此方案部署。此方案完全免費。
有關【透過Koyeb 部署】 的具體操作步驟請參考此處
在看完上行文件的具體內容,並且你確定你行後,便可點擊下方按鈕,嘗試一鍵部署:
已下線免費套餐,不再可用。 #208
所有雲端函數使用的是同一個壓縮包,已做相容處理,下載位址: https://github.com/luolongfei/freenom/releases/download/v0.5.1/freenom_scf.zip 。本文檔會在發布新版的時候同步更新此處的壓縮包下載地址,所以不必擔心,你看到的下載地址指向的包一定是最新版本。
下載後你將得到一個zip 文件,將zip 檔案放到你能找到的任意目錄,後面我們將以zip 檔案的形式上傳到各種雲端函數。
有關【透過騰訊雲函數部署】 的具體操作步驟請參考此處
有關【透過阿里雲函數部署】 的具體操作步驟請參考此處
有關【透過華為雲函數部署】 的具體操作步驟請參考此處
有關【直接拉取原始碼部署】 的具體操作步驟請參考此處
遇到任何問題或Bug 歡迎提issue (請按模板格式提issue ,以便我快速復現你的問題,否則問題會被忽略), 如果Freenom改變演算法導致此項目失效,請提issue 告知,我會及時修復,本工程長期維護。 歡迎star ~
非常感謝「 這些用戶」對本計畫的贊助支持!
如果你覺得本計畫對你有幫助,請考慮贊助本項目,以激勵我投入更多的時間進行維護與開發。 If you find this project helpful, please consider supporting the project going forward. Your support is greatly appreciated.
PayPal: https://www.paypal.me/mybsdc
Every time you spend money, you're casting a vote for the kind of world you want. -- Anna Lappe
題外話:贊助的時候可以留言,留言內容將被展示在贊助清單畫面。如果贊助圖片未能正常顯示,請造訪: https://images.llfapp.com/pay.png
你的star或赞助是我長期維護此計畫的動力所在,由衷感謝每一位支持者,「每一次你花的錢都是在為你想要的世界投票」。 另外,將本計畫推薦給更多的人,也是支持的方式,用的人越多更新的動力越足。
相信未來,保持「理智」。
認真是我們參與這個社會的方式,認真是我們改變這個社會的方式。 ——李志
@anjumrafidofficial
(更多其它語言歡迎提交PR 更新此列表)
MIT