當連結變成 404:數位衰退(Digital Decay)與我們的記憶保衛戰

封面圖:搶救消失的網頁資料

(本篇為「貢獻閒置資源」系列第二期。上一篇討論物理與醫學運算,本篇專注於網路歷史保存。)

網址會過期。你曾在某個論壇寫下的萬字長文、收藏的神級軟體教學,只要站長一忘記繳信用卡費,這些心血就會瞬間從世界上蒸發。

這就是數位衰退(Digital Decay)。而你的閒置電腦,可以參與搶救。本文教你怎麼做。

正在消失的網路歷史

Pew Research Center 2024 年的報告指出,2013 年存在的網頁中,高達 38% 已無法連線。連維基百科的參考文獻,都有超過一半包含死連結。

那些用愛發電的獨立網站、早期社群與免費空間,背後沒有大公司的雲端備份撐腰。一旦關站,連屍骨都找不到。

Google 關閉 goo.gl 短網址服務時,數以億計的短連結面臨永久失效。這類事件催生了一批開源搶救工具——以下三套,你今晚就能跑起來。

1. ArchiveTeam Warrior:網路歷史搶救車

當大型網站宣布關閉,ArchiveTeam 會發起備份任務。

ArchiveTeam Warrior 把你家閒置的網路頻寬變成一台分散式爬蟲節點。目標網站被拔插頭前,它會衝進去把資料全數抓下來,自動上傳到網際網路檔案館 (Internet Archive)。

部署方式 1:Docker Compose

使用 Docker 啟動是最輕量也最便捷的方式:

services:
  warrior:
    image: atdr.meo.ws/archiveteam/warrior-dockerfile
    container_name: archiveteam-warrior
    restart: unless-stopped
    ports:
      - "8001:8001"
    environment:
      - DOWNLOADER=your_nickname_here  # 替換為你在排行榜上的暱稱
      - SELECTED_PROJECT=auto          # 'auto' 會自動選擇最急迫的專案

將上述內容存為 docker-compose.yml 後,執行 docker compose up -d 即可在背景啟動。打開 http://localhost:8001,就能看到網頁控制台,觀察節點正在抓取哪些頁面。

ArchiveTeam Warrior 網頁控制台設定畫面 初次啟動時,需要進入設定頁面輸入你的暱稱 (Your nickname),讓你的貢獻記錄在排行榜上。

ArchiveTeam Warrior 正在運作的畫面 Warrior 實際運作中的畫面:左側顯示當前任務狀態(“The warrior is working on a project.”),右側則是正在抓取的大量 URL 清單與上傳進度。

部署方式 2:虛擬機 (VirtualBox / VMware)

如果你不想處理 Docker 或指令,官方也提供了開箱即用的虛擬機映像檔:

  1. 前往 ArchiveTeam 官網 下載副檔名為 .ova 的虛擬機檔案。
  2. 下載並安裝 VirtualBox(官方最推薦)或 VMware。
  3. 點擊「匯入應用裝置 (Import Appliance)」,選擇下載的 .ova 檔案。
  4. 啟動該虛擬機。開機完成後,畫面上會顯示一組內部 IP(例如 192.168.x.x)。
  5. 在你電腦的瀏覽器輸入該 IP,就能進入網頁控制台設定你的暱稱並開始運作。

2. ArchiveBox 與 pywb:你的私人檔案館

有時候你只想備份自己珍藏的論壇教學或考據文章。ArchiveBox 是一套開源的自架網頁存檔方案,支援抓取書籤、RSS 訂閱、社群貼文與影音檔案。

輸出格式涵蓋 HTML、PDF、PNG、WARC、MP4——全部存在你自己的硬碟裡。

部署方式 (ArchiveBox)

官方推薦使用 Docker Compose 進行初始化與啟動:

mkdir -p ~/archivebox/data && cd ~/archivebox
curl -fsSL 'https://docker-compose.archivebox.io' > docker-compose.yml

# 初始化並設定管理員帳號密碼
docker-compose run archivebox init --setup

# 啟動服務
docker-compose up -d

啟動後,造訪 http://localhost:8000 並登入,你就能開始貼上網址,建立個人的網際網路檔案館。

ArchiveBox 封存網頁的介面 ArchiveBox 的管理介面,輸入網址後它會在背景自動抓取,並產生 PDF 與 WARC 格式的備份。

部署 pywb 解析 WARC 檔案

ArchiveBox 儲存的 WARC 檔案是業界標準格式,但你需要工具來「重播」它。pywb (Python Wayback) 就是為此設計——在本地端建立一個時光機環境,忠實重現網頁被封存時的排版與互動。

官方推薦透過 Docker 快速啟動。假設你已經有一個 WARC 檔案放在 ./source 資料夾,你可以這樣掛載並匯入:

# 初始化 Collection 並匯入 WARC 檔案
docker run --rm \
  -e INIT_COLLECTION=my-archive \
  -v ./pywb-data:/webarchive \
  -v ./source:/source \
  webrecorder/pywb wb-manager add my-archive /source/my_warc.warc.gz

# 啟動 pywb 時光機伺服器
docker run -d -p 8080:8080 -v ./pywb-data:/webarchive webrecorder/pywb wayback

如果你偏好使用 Python 環境,也可以直接透過 pip 安裝:

pip install pywb

# 初始化資料夾並匯入檔案
wb-manager init my-archive
wb-manager add my-archive ./source/my_warc.warc.gz

# 啟動服務
wayback

pywb Collection 搜尋介面 pywb 啟動後的 Collection Search Page:輸入 URL 即可搜尋已封存的網頁快照,支援在本地端完整重播 WARC 檔案中的歷史頁面。

3. Kiwix 與 Zimfarm:離線版的人類大腦

網路並沒有你想像中那麼普及。對於海上航行的貨輪、偏遠地區,或是身處網路審查國家的學生而言,連上維基百科都是一種奢侈。

Kiwix 是一個開源的離線瀏覽器,專門讀取 .zim 格式的高壓縮檔,讓你把整個維基百科、TED 演講裝進 USB 裡。

要將數百 GB 的百科全書壓縮成單一 .zim 檔案,需要大量運算資源。Zimfarm 將這些壓縮工作分配給全球志願者的伺服器。你的 Zimfarm 節點跑出來的每一個 .zim 檔,都會被送往無法連網的地區供人離線閱讀。

部署方式 (Kiwix Server)

如果你想在內網分享已下載的 .zim 檔案,可以使用 kiwix-serve

services:
  kiwix-serve:
    image: ghcr.io/kiwix/kiwix-serve:latest
    ports:
      - "8080:8080"
    volumes:
      - ./data:/data  # 將你的 .zim 檔案放在這個目錄
    command: "*.zim"

Kiwix 離線瀏覽維基百科 透過 Kiwix 讀取高度壓縮的 .zim 檔案,即使在沒有網路的環境,也能流暢瀏覽完整的維基百科。

部署方式 (Zimfarm Worker)

成為 Zimfarm 壓縮節點的門檻較高(建議至少 3 核心 CPU 與 2GB 記憶體)。你需要先在 Zimfarm 官網註冊帳號獲得授權。官方提供 Docker 方式讓你的設備加入分散式壓縮農場:

# Zimfarm Worker 依賴 Docker 進行任務隔離,所以需要掛載 docker.sock
docker run -d --name zimfarm-worker \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e ZIMFARM_USERNAME=你的帳號 \
  -e ZIMFARM_PASSWORD=你的密碼 \
  openzim/worker:latest

Zimfarm 農場任務分配狀態 Zimfarm 會自動將百科資料的壓縮工作切分成無數小任務,派發給全球志願者的伺服器進行運算。

結語

家用 NAS 掛載 ArchiveBox,閒置的舊筆電跑 ArchiveTeam Warrior,任何一台吃灰的設備都能上場。

今晚花五分鐘,挑一個 docker compose up -d,讓它跑著。 今晚花五分鐘,挑一個 docker compose up -d,讓它跑著。