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 freenom
3.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 make
CentOS
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