簡體中文English
使用GitHub Actions 從公開倉庫私密發布GitHub Pages 網站,完全隱藏網站文件列表和歷史記錄,無需付費
GitHub 免費賬戶限制只能從公開倉庫發布GitHub Pages 網站,這會帶來一些隱私問題。任何人都可以:
不在GitHub 倉庫中存儲任何靜態網站文件,而是使用GitHub Actions 遠程下載靜態網站打包文件並直接發佈到GitHub Pages。
效果:
repository name改為想要的名字,一般是<用户名小写>.github.io (官方文檔)Settings - Actions - General - Artifact and log retention設置為最小值1 daySettings - Pages , Source改為GitHub ActionsActions ,首次進入會出現警告Workflows aren't being run on this forked repository ,點擊I understand my workflows, go ahead and enable them按鈕確認該警告。共有3 個參數需要設置:
REMOTE_FILE_URL :必須設置,靜態網站打包文件的URL。REMOTE_FILE_TYPE :必須設置,靜態網站打包文件的格式,可選選項: 7z , tar 。REMOTE_FILE_PASSWORD :可選,靜態網站打包文件的加密解密口令(密碼)。如果未加密,則不需要設置此參數。可以在2 個位置設置參數:
Settings - Secrets - Actions ,點擊New repository secret ,添加為secrets。僅需在此處設置1 次,在運行workflow 時留空,無需設置。建議盡量使用固定的參數並設置為secrets,而不要在每次運行workflow 時指定參數。因為secrets 參數會在workflow run 的日誌中隱藏,而運行workflow 時指定的參數會直接輸出到日誌中,可公開查看,無法隱藏。
共支持4 種打包文件,請按需選擇打包文件類型。各種類型及示例文件如下:
demo/test.7z :使用7-Zip 打包壓縮,未加密demo/test.enc.7z :使用7-Zip 打包壓縮並加密,加密文件名,密碼為123456demo/test.tar.gz :使用tar 打包壓縮,未加密demo/test.tar.gz.enc :使用tar 打包壓縮,然後使用openssl 加密,密碼為123456假設靜態網站文件位於/path/to/static/dir目錄,密碼為YOUR_PASSWORD_123456 。以下是打包的命令示例,運行環境為Ubuntu 20.04。
使用7z 打包壓縮為/path/to/files.7z ,未加密:
cd /path/to/static/dir && 7z a /path/to/files.7z .使用7z 打包壓縮並加密為/path/to/files.7z ,加密文件名,加密解密口令硬編碼到命令參數:
cd /path/to/static/dir && 7z a -mhe=on -pYOUR_PASSWORD_123456 /path/to/files.7z .也可以使用Windows 圖形化界面程序將靜態網站文件打包為7z 格式。
使用tar 打包壓縮為./files.tar.gz ,未加密:
tar --owner 0 --group 0 --numeric-owner -czvf files.tar.gz -C /path/to/static/dir .使用tar 和openssl 打包壓縮並加密為./files.tar.gz.enc ,加密解密口令硬編碼到命令參數:
tar --owner 0 --group 0 --numeric-owner -czvf - -C /path/to/static/dir . | openssl enc -aes-256-cbc -pbkdf2 -pass pass:YOUR_PASSWORD_123456 -in - -out files.tar.gz.enc把打包文件上傳到你的服務器或者文件共享服務。使用命令行將打包文件/path/to/files.7z上傳到file.io 示例:
curl -F ' file=@/tmp/test.bin ' https://file.io/ Actions - Deploy to GitHub Pages - Run workflow ,填寫非固定參數,點擊Run workflow ,等待運行完畢。運行完畢後:
最後刪除服務器上的打包文件,取消文件共享。
建議將以上打包和部署步驟固定為自定義腳本。