Перейти к основному содержимому

InterPlanetary Wayback (ipwb)

InterPlanetary Wayback (ipwb) — инструмент лаборатории ODU WS-DL, который раскладывает содержимое WARC-файлов по сети IPFS и воспроизводит архив из IPFS.

Описание​

IPFS — одноранговая файловая система с адресацией по содержимому: одинаковые данные получают одинаковый адрес, а копии может хранить любой узел. ipwb отделяет HTTP-заголовки и тело каждой записи response, загружает их в IPFS, а затем строит CDXJ-индекс со ссылками на IPFS-хеши. При воспроизведении заголовки и тело собираются обратно.

Особенности​

  • Хранение в IPFS: дедупликация на уровне IPFS и добровольное реплицирование копий.
  • Индекс CDXJ со ссылками на IPFS-хеши; индекс можно передать как файл, по HTTP или по IPFS-хешу.
  • Replay с Service Worker: ссылки переписываются на стороне клиента (библиотека Reconstructive), что уменьшает «утечки» на живой сайт.
  • Memento: в replay есть TimeMap и заголовки Link.
  • Шифрование и сжатие содержимого перед загрузкой в IPFS (ipwb index -e, -c).

Установка​

Требования​

  • Python 3.9+.
  • Работающий демон IPFS — реализация kubo (раньше называлась go-ipfs).

Установка IPFS (kubo)​

Скачайте kubo из релизов на GitHub или по инструкции по установке, затем:

ipfs init
ipfs daemon

Если порт API 5001 занят, перед запуском демона его можно сменить:

ipfs config Addresses.API /ip4/127.0.0.1/tcp/5002

Установка ipwb​

pip install ipwb

Через Docker​

Готовый образ запускает демон IPFS, индексирует пример и открывает replay:

docker container run -it --rm -p 2016:2016 oduwsdl/ipwb

Команды сверены с README ipwb (последняя версия на PyPI — 0.2024.10.24.1853, октябрь 2026).

Использование​

Индексация WARC-файла​

ipwb index загружает содержимое в IPFS и пишет CDXJ-индекс в стандартный вывод — его нужно сохранить в файл:

ipwb index /path/to/archive.warc.gz > archive.cdxj
# или
ipwb index -o archive.cdxj /path/to/archive.warc.gz

Запуск replay​

ipwb replay принимает путь к индексу (файл, HTTP-адрес или IPFS-хеш):

ipwb replay archive.cdxj

Интерфейс открывается по адресу http://localhost:2016/.

Работа за обратным прокси​

Service Worker в браузерах работает только по HTTPS (исключение — localhost). Чтобы опубликовать replay под своим доменом, поставьте перед ipwb прокси с HTTPS (например, Caddy или Traefik) и передайте его адрес флагом --proxy:

ipwb replay --proxy=https://ipwb.example.com archive.cdxj

Docker со своими данными​

docker container run -it --rm -v /path/to/data:/data oduwsdl/ipwb \
ipwb index -o /data/cdxj/custom.cdxj /data/warc/custom.warc.gz
docker container run -it --rm -v /path/to/data:/data -p 2016:2016 oduwsdl/ipwb \
ipwb replay /data/cdxj/custom.cdxj

Распределённый доступ​

После индексации данные доступны другим узлам IPFS, пока хотя бы один узел их хранит. Чтобы данные не удалились сборщиком мусора, важные архивы закрепляют (ipfs pin). Сам по себе IPFS не гарантирует долговременного хранения: копии нужно поддерживать.

Сравнение с другими инструментами​

ИнструментХранениеMementoСложностьКогда выбирать
ipwbIPFS✅выше среднейP2P-распространение архива
pywbлокальный диск / HTTP✅средняяЦентрализованный публичный архив
ReplayWeb.pageфайл / HTTP❌низкаяЛокальный просмотр, публикация WACZ

Когда использовать ipwb​

  • Нужно распространять архив через IPFS и дать возможность другим узлам хранить копии.
  • Эксперименты с децентрализованным хранением веб-архивов.

Когда использовать другие инструменты​

  • Централизованное хранение и публичный доступ — pywb.
  • Локальный просмотр — ReplayWeb.page (умеет загружать файлы и по ipfs://).

Ограничения​

  • Нужен работающий демон IPFS.
  • Индексируются WARC-файлы; WACZ и ARC на вход не принимаются.
  • Встроенный replay в README назван «rudimentary» — базовым; один запуск обслуживает один индекс.
  • Доступность данных зависит от того, кто их хранит в IPFS.

Ресурсы​

Связанные материалы​