簡體中文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 Actions
Actions
,首次進入會出現警告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 打包壓縮並加密,加密文件名,密碼為123456
demo/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
,等待運行完畢。運行完畢後:
最後刪除服務器上的打包文件,取消文件共享。
建議將以上打包和部署步驟固定為自定義腳本。