收藏的网页说没就没?自己搭个存档站

收藏夹看着靠谱,实际只存了一串网址。原站改版、下架或者干脆关停,点开就是一个 404。技术文档、研究资料、多年前在论坛里翻到的那条冷门解法,丢了往往就再也搜不回来。

MakeUseOf 撰稿人分享了一套自建方案:用开源工具 ArchiveBox 把整页内容留在自己的硬盘上,并做了一次严格验证——先存档,再把原页面彻底下线,看还能不能还原。

一、部署

  1. 准备一台 Ubuntu 26.04 虚拟机,4GB 内存,通过 Docker 安装 ArchiveBox。
  2. 版本选稳定的 0.7.4,而不是仍在改版中的 0.9 开发分支,可以少踩不少坑。
  3. 官方 Compose 文件有 278 行,捆了搜索、计划任务、Nginx 等一堆用不上的组件。实际只需要一个服务:镜像 archivebox/archivebox:0.7.4,启动命令 server --quick-init 0.0.0.0:8000,映射 8000 端口,把 ./data 挂载到容器内 /data,环境变量把 ALLOWED_HOSTS 设为 *、PUBLIC_INDEX 和 PUBLIC_SNAPSHOTS 都设为 False
  4. 依次执行三条命令完成初始化、创建管理员并启动面板:
docker compose run --rm archivebox init
   docker compose run --rm archivebox manage createsuperuser
   docker compose up -d
  1. 关掉向 Archive.org 回传的开关,保证一切留在本地:docker compose run --rm archivebox config --set SAVE_ARCHIVE_DOT_ORG=False

二、一次快照留下七份副本

抓取完成后,ArchiveBox 保留原地址,同时生成带时间戳的快照,里面包含 Wget 抓下的 HTML 副本、SingleFile 单文件页面、PDF、截图、渲染后的 DOM、正文提取版和 WARC 文件。SingleFile 最接近原貌且可正常浏览,正文提取版只留文字,PDF 和截图作为兜底——结果页看起来更像一份恢复菜单,而不是书签列表。

三、把原页面关掉之后

该撰稿人自建了一个含图片、说明文字和一个可下载配置文件的小页面,跑在同一台服务器的 8081 端口,页面里硬编码了标记 COPPER-FINCH-8247 便于核对。以深度 1 抓取快照后,他停掉服务并把源目录整个移走。

刷新浏览器,原地址报连接错误,而 8000 端口的存档照常打开:SingleFile 和 Wget 版本保留了排版与图片,PDF、截图、DOM、正文提取里都能搜到那个标记。存档前后用 sha256sum 对那个配置文件做校验,哈希值完全一致。

四、配上浏览器扩展才真正好用

  1. 安装 ArchiveBox 官方的 Firefox 扩展。
  2. 在扩展设置里填写本地实例地址,例如 http://192.168.91.136:8000
  3. 浏览器里若已登录 ArchiveBox,扩展会直接复用该会话,此后一键就能存下当前页面。

实测存一篇带多张图片、脚本和广告的长文章,SingleFile、Wget、PDF、截图、DOM 和正文提取全部成功,只有 Original 格式因为目标站不允许被嵌入而报了警告。

注意事项

存档掌握在自己手里,责任也一样。虚拟机一旦损坏,没备份 data 目录就前功尽弃。ArchiveBox 也无法保证完美复现需要登录的页面、视频播放器和重度 JavaScript 界面。空间方面:example.com 只占 384KB、17 个文件,加上那个自建测试页涨到 1.5MB、52 个文件,再加一篇长文章就到了 34MB、158 个文件。书签只存网址,存档要存 HTML、图片、PDF、截图、WARC 和元数据,量一大就会明显吃盘,因此值得只留文档、研究资料这类真正需要引用的内容。

来源:MakeUseOf