Nostr Web Archiver
Nostr Archiver Extension is a browser extension for archiving websites and publishing them to blossom. This is a fork of ArchiveWeb.page with the goal of replacing archive.org with a decentralized, crowdsourced, and crowdfunded effort to preserve the legacy of the web, fix the problem of broken links, and harness the power of the multitude instead of delegating this important job to a single organization.
The extension creates, stores, and replays high-fidelity web archives stored directly in the browser's storage (via IndexedDB). Archives can be published to Nostr relays using the Blossom protocol for decentralized storage and sharing.
For more detailed info on how to use the extension, see the ArchiveWeb.page User Guide.
Architecture
The extension makes use of the Chrome debugging protocol to capture and save network traffic and create WARC or WACZ files. Archives are published to Blossom servers and announced on Nostr.
Development
Prerequisites
Node >=12
npm or yarn
Installation
To build the extension locally for development, do the following:
Clone this repo:
git clone nostr://npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6/nostr-archiver-extensionChange the working directory:
cd nostr-archiver-extensionInstall dependencies:
npm installMake development build:
just build-dev
The development build can now be used to develop the extension.
Developing the Extension
To install the extension locally, load the development build as an unpacked extension:
Open the Chrome Extensions page (chrome://extensions).
Choose 'Load Unpacked Extension' and point to the
./dist/extdirectory in your local copy of this repo.Click the extension icon to show the extension popup, start archiving, etc...
Update extension on code changes
To watch source code files and recompile the development build on change, run:
just devNow, saving changes to source will automatically rebuild the dist/ext directory.
After making changes, the extension still needs to be reloaded in the browser.
From the Chrome extensions page, click the reload button to load the latest version.
Click the extension icon to show the extension popup, start recording, etc... The dev build of the extension will be a different color from the production version.
Build
To create a production build of the extension, run:
just buildThe built extension will be available in the ./dist/ext/ directory.