鏡像站一鍵搭建與 Chrome 路徑自定義配置指南)
快速部署 kage Docker 鏡像離線(xiàn)鏡像站一鍵搭建與 Chrome 路徑自定義配置指南【免費(fèi)下載鏈接】kageShadow any website for offline viewing, with the JavaScript stripped out項(xiàng)目地址: https://gitcode.com/gh_mirrors/kage6/kagekage影是一款用真實(shí)無(wú)頭 Chrome 渲染網(wǎng)頁(yè)、剝離全部 JavaScript后把整站克隆為可離線(xiàn)瀏覽文件的鏡像工具。通過(guò)官方 Docker 鏡像你無(wú)需在宿主機(jī)安裝 Chrome一條命令即可搭好離線(xiàn)鏡像站配合KAGE_CHROME環(huán)境變量與--chrome參數(shù)還能精確控制 kage 使用哪個(gè) Chrome 二進(jìn)制。本文面向新手完整講解 kage Docker 部署流程與 Chrome 路徑自定義配置方法。 為什么用 Docker 部署 kagekage 的核心流程是種子 URL → 無(wú)頭 Chrome 渲染 → 快照最終 DOM → 剔除腳本 → 資產(chǎn)本地化 → 落盤(pán)。這意味著它必須有一個(gè)可用的 Chrome/Chromium。直接安裝時(shí)需要你自行解決瀏覽器依賴(lài)而官方容器鏡像把這些全部打包好了鏡像內(nèi)置內(nèi)容作用Alpine 3.21 kage 靜態(tài)二進(jìn)制多平臺(tái)amd64/arm64開(kāi)箱即用Chromium負(fù)責(zé)頁(yè)面渲染無(wú)需宿主裝瀏覽器ca-certificates / tzdataHTTPS 抓取與正確時(shí)間戳font-noto 字體渲染出的頁(yè)面文字不會(huì)缺字鏡像定義見(jiàn) Dockerfile構(gòu)建時(shí)通過(guò) GoReleaser 用 buildx 打包多平臺(tái)版本并把已交叉編譯好的靜態(tài)二進(jìn)制直接COPY進(jìn)鏡像構(gòu)建很快。 Docker 鏡像部署一條命令搞定部署的關(guān)鍵是一個(gè)掛載卷——容器把工作目錄和HOME都指向/out所以只要把宿主機(jī)的目錄掛到/out鏡像產(chǎn)物就直接落在你本地docker run -v $PWD/out:/out ghcr.io/tamnd/kage clone paulgraham.com運(yùn)行結(jié)束后鏡像文件位于宿主機(jī)的./out/paulgraham.com/里面是可離線(xiàn)打開(kāi)的.html頁(yè)面、本地化的 CSS/圖片/字體以及記錄斷點(diǎn)狀態(tài)的_kage/state.json布局詳見(jiàn) docs/content/reference/configuration.md。幾個(gè)新手常踩的點(diǎn)鏡像文件落盤(pán)位置容器內(nèi)默認(rèn)輸出根是$HOME/data/kage而 Dockerfile 已把HOME設(shè)為/out因此產(chǎn)物統(tǒng)一出現(xiàn)在掛載卷里不會(huì)藏在容器內(nèi)部。為什么容器以 root 運(yùn)行這是有意為之。宿主機(jī)綁定的/out屬主隨環(huán)境變化只有 root 能可靠寫(xiě)入若不可寫(xiě)不僅克隆失敗Chrome 還會(huì)因崩潰數(shù)據(jù)庫(kù)路徑為空而整體啟動(dòng)失敗。容器內(nèi) Chrome 沙箱本就會(huì)被自動(dòng)關(guān)閉所以 root 不會(huì)帶來(lái)額外風(fēng)險(xiǎn)詳見(jiàn) Dockerfile 注釋??蓴帱c(diǎn)續(xù)爬kage 的抓取是冪等的中斷后重跑會(huì)讀取_kage/state.json跳過(guò)已完成頁(yè)面。若只是想一次性跑完不留狀態(tài)可加--no-resume。進(jìn)階用法定期刷新鏡像配合--refresh讓舊鏡像原地重渲染、抓到網(wǎng)站更新非常適合放進(jìn)定時(shí)任務(wù)# 每周刷新一次離線(xiàn)鏡像 30 3 * * 0 docker run -v /srv/mirror:/out ghcr.io/tamnd/kage clone example.com --refresh想給大站做范圍控制只抓某個(gè)欄目、限制頁(yè)數(shù)和深度推薦先看 docs/content/guides/scoping-a-crawl.md。 kage 的 Chrome 路徑是怎么找的kage 啟動(dòng)瀏覽器時(shí)的查找順序是固定的實(shí)現(xiàn)見(jiàn) browser/pool.go--chrome命令行參數(shù)優(yōu)先級(jí)最高KAGE_CHROME環(huán)境變量CHROME_BIN環(huán)境變量?jī)?nèi)置查找器 各平臺(tái)常見(jiàn)安裝路徑各平臺(tái)自動(dòng)探測(cè)的默認(rèn)路徑平臺(tái)自動(dòng)探測(cè)位置Linux/usr/bin/google-chrome、/usr/bin/google-chrome-stable、/usr/bin/chromium、/usr/bin/chromium-browsermacOS/Applications/Google Chrome.app/...、/Applications/Chromium.app/...WindowsC:\Program Files\Google\Chrome\Application\chrome.exe等如果以上都沒(méi)找到kage 的啟動(dòng)器可以在首次使用時(shí)自動(dòng)下載一份私有 Chromium——但生產(chǎn)環(huán)境還是建議顯式指定路徑行為更可控。 自定義 Chrome 路徑配置三種方式環(huán)境變量參考見(jiàn) docs/content/reference/configuration.md。方式一--chrome參數(shù)一次性指定kage clone example.com --chrome /path/to/chromium方式二KAGE_CHROME環(huán)境變量推薦全局生效export KAGE_CHROME/opt/chrome/chrome方式三CHROME_BIN回退變量KAGE_CHROME未設(shè)置時(shí)讀取它常與其他工具共用的場(chǎng)景很方便。在 Docker 場(chǎng)景里Dockerfile 已經(jīng)替你設(shè)置好了KAGE_CHROME/usr/bin/chromium-browser指向鏡像內(nèi)置 Chromium所以容器內(nèi)無(wú)需任何額外配置如果你要構(gòu)建自定義鏡像比如換更高版本 Chromium 或加字體只要保證新路徑與KAGE_CHROME一致即可。? 部署后如何驗(yàn)證離線(xiàn)鏡像在宿主機(jī)執(zhí)行kage serve out/paulgraham.com瀏覽器打開(kāi)http://127.0.0.1:8800頁(yè)面應(yīng)能正常點(diǎn)擊跳轉(zhuǎn)、加載本地圖片與樣式且完全不需要外網(wǎng)抽查任意.html文件確認(rèn)沒(méi)有script標(biāo)簽、onclick或javascript:鏈接——這正是 kage 的核心價(jià)值你拿到的是渲染完成后的最終畫(huà)面而不是一個(gè)試圖聯(lián)網(wǎng)的薄客戶(hù)端。 總結(jié)目標(biāo)命令/配置快速部署離線(xiàn)鏡像站docker run -v $PWD/out:/out ghcr.io/tamnd/kage clone 域名指定 Chrome 路徑--chrome/KAGE_CHROME/CHROME_BIN容器內(nèi) Chromium 路徑鏡像已內(nèi)置KAGE_CHROME/usr/bin/chromium-browser定期抓取更新cron --refresh從docker run到離線(xiàn)可讀的整站鏡像只需要一條命令而 Chrome 路徑的三級(jí)配置參數(shù) → 環(huán)境變量 → 自動(dòng)探測(cè)讓你在任何環(huán)境下都能讓 kage 精確使用你想用的瀏覽器。需要源碼級(jí)細(xì)節(jié)時(shí)可參考 browser/pool.go 的啟動(dòng)器實(shí)現(xiàn)與 Dockerfile 的鏡像構(gòu)建說(shuō)明?!久赓M(fèi)下載鏈接】kageShadow any website for offline viewing, with the JavaScript stripped out項(xiàng)目地址: https://gitcode.com/gh_mirrors/kage6/kage創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考