GitHub - ArchiveBox/ArchiveBox: 🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves H
ArchiveBox Open-source self-hosted web archiving. ▶️ Quickstart | Demo | GitHub | Documentation | Info & Motivation | Community ArchiveBox is a self-hosted app that lets you preserve content from websites in a variety of formats. We aim to make your data
社区作者 · zZz
它解决什么问题
ArchiveBox Open-source self-hosted web archiving.
▶️ Quickstart | Demo | GitHub | Documentation | Info & Motivation | Community
ArchiveBox is a self-hosted app that lets you preserve content from websites in a variety of formats.
We aim to make your data immediately useful, and kept in formats that other programs can read directly. As output, we save standard HTML, PNG, PDF, TXT, JSON, WARC, SQLite, all guaranteed to be readable for decades to come.
ArchiveBox also has a CLI, REST API, and webhooks so you can set up integrations with other services.
Without active preservation effort, everything on the internet eventually disappears or degrades.
ArchiveBox is an open source tool that lets organizations & individuals archive both public & private web content while retaining control over their data.
It can be used to save copies of bookmarks, preserve evidence for legal cases, backup photos from FB/Insta/Flickr or media from YT/Soundcloud/etc., save research papers, and more.
➡️ Get ArchiveBox with pip install archivebox>=0.9.0rc0' on Linux / macOS , or via Docker ⭐️ on Linux/macOS.
Once installed, you can interact with it through the: Browser Extension , CLI , self-hosted web interface , Python API , or filesystem .
📥 You can feed ArchiveBox URLs one at a time, or schedule regular imports from your bookmarks or history, social media feeds or RSS, link-saving services like Pocket/Pinboard, our Browser Extension , and more.
See Input Formats for a full list of supported input formats...
It saves snapshots of the URLs you feed it in several redundant formats.
It also detects any content featured inside pages & extracts it out into a folder:
- 🌐 HTML / Any websites ➡️ original HTML+CSS+JS , singlefile HTML , screenshot PNG , PDF , WARC , title , article text , favicon , headers , ...
- 🎥 Social Media / News ➡️ post content TXT , comments , title , author , images , ...
- 🎬 YouTube / SoundCloud /etc. ➡️ MP3/MP4 s, subtitles , metadata , thumbnail , ...
- 💾 Github / Gitlab /etc. links ➡️ clone of GIT source code , README , images , ...
- ✨ and more, see Output Formats below...
You can run ArchiveBox as a Docker web app to manage these snapshots, or continue accessing the same collection using the uv -installed CLI, Python API, and SQLite3 APIs.
All the ways of using it are equivalent, and provide matching features like adding tags, scheduling regular crawls, viewing logs, and more.
🛠️ ArchiveBox uses standard tools like Chrome, wget , & yt-dlp , and stores data in ordinary files & folders .
(no complex proprietary formats, all data is readable without needing to run ArchiveBox)
The goal is to sleep soundly knowing the part of the internet you care about will be automatically preserved in durable, easily accessible formats for decades after it goes down.
📦 Install ArchiveBox using your preferred method
docker / uv / brew / apt / etc. ( see full Quickstart below ).Expand for quick copy-pastable install commands... ⤵️
Option A: Get ArchiveBox with Docker Compose (recommended):
mkdir -p ~ /archivebox/data && cd ~ /archiveboxcurl -fsSL ' https://docker-compose.archivebox.io ' > docker-compose.ymldocker compose pulldocker compose up -d --wait # initializes new collections automaticallyopen http://admin.archivebox.localhost:8000 to finish setup
docker compose run --rm archivebox add 'https://example.com'
docker compose run --rm archivebox help
Option B: Or use it as a plain Docker container:
mkdir -p ~ /archivebox/data && cd ~ /archivebox/datadocker run -d --name archivebox -v " $PWD :/data " -p 8000:8000 archivebox/archivebox:devopen http://admin.archivebox.localhost:8000 to finish setup
docker run -it -v $PWD:/data archivebox/archivebox:dev add 'https://example.com'
docker run -it -v $PWD:/data archivebox/archivebox:dev help
Option C: Or install it with uv (see Quickstart below for apt, brew, and more)
uv tool install --python 3.13 --prerelease explicit --upgrade ' archivebox>=0.9.0rc0,<0.10 'mkdir -p ~ /archivebox/data && cd ~ /archivebox/dataarchivebox init archivebox install
archivebox add 'https://example.com'
archivebox help
archivebox server 0.0.0.0:8000
Option D: Or use the uv install shortcut for Option C
curl -fsSL ' https://get.archivebox.io ' | bashOpen http://web.archivebox.localhost:8000 for the public UI and http://admin.archivebox.localhost:8000 for the admin UI ➡️
Set BASE_URL to change the public base domain. The default auto mode uses web. and admin. subdomains on *.localhost , but one host for ordinary DNS names. BIND_ADDR only controls the local listen address.Demo | Screenshots | Usage
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Key Features
- Free & open source , own your own data & maintain your privacy by self-hosting
- Powerful CLI with modular dependencies and support for Google Drive/NFS/SMB/S3/B2/etc.
- Comprehensive documentation , active development , and rich community
- Extracts a wide variety of content out-of-the-box : media (yt-dlp), articles (readability), code (git), etc.
- Supports scheduled/realtime importing from many types of sources
- Uses standard, durable, long-term formats like HTML, JSON, PDF, PNG, MP4, TXT, and WARC
- Powerful CLI , self-hosted web UI , Python API (BETA), REST API (ALPHA), or desktop app
- Saves all pages to archive.org as well by default for redundancy (can be disabled for local-only mode)
- Advanced users: support for archiving content requiring login/paywall/cookies (see wiki security caveats!)
- Planned: support for running JS during archiving to adblock, autoscroll , modal-hide , thread-expand
Quickstart
🖥 Supported OSs : Ubuntu, macOS, Docker 👾 CPUs: amd64 ( x86_64 ), arm64
✳️ Easy Setup
docker-compose (macOS/Linux) 👈 recommended (click to expand)
👍 Docker Compose is recommended for the easiest install/update UX + best security + all extras out-of-the-box.
- Install Docker on your system (if not already installed).
- Download the docker-compose.yml file into a new empty directory (can be anywhere).
mkdir -p ~ /archivebox/data && cd ~ /archiveboxcurl -fsSL ' https://docker-compose.archivebox.io ' > docker-compose.ymldocker compose pull- Start the server, which initializes a new collection automatically.
docker compose up -d --wait- Open /admin/ on the hostname or IP used to reach ArchiveBox (local example: http://admin.archivebox.localhost:8000/admin/ ) to create the first admin. If BASE_URL is not configured yet, continue through the web setup wizard.
run CLI commands inside the server container started above
docker compose exec archivebox archivebox add ' https://example.com 'docker compose exec archivebox archivebox helpFor more info, see Install
Docker Compose in the Wiki. ➡️See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
docker run (macOS/Linux)- Install Docker on your system (if not already installed).
- Create a new empty directory and start the server, which initializes the collection automatically (can be anywhere).
mkdir -p ~ /archivebox/data && cd ~ /archivebox/datadocker run -d --name archivebox -v $PWD :/data -p 8000:8000 archivebox/archivebox:dev- Open /admin/ on the hostname or IP used to reach ArchiveBox (local example: http://admin.archivebox.localhost:8000/admin/ ) to create the first admin. If BASE_URL is not configured yet, continue through the web setup wizard.
completely optional, CLI can always be used without running a server
docker exec archivebox archivebox [subcommand] [--help]
docker exec archivebox archivebox helpFor more info, see Install
Docker Compose in the Wiki. ➡️See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
bash uv install shortcut (macOS/Linux/BSD)- Run the shortcut for the uv install method. It installs uv first when needed.
curl -fsSL ' https://get.archivebox.io ' | bashFor more info, see Install: Bare Metal in the Wiki. ➡️
See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
See setup.sh for the source code of the uv install shortcut.
See "Against curl | sh as an install method" blog post for my thoughts on the shortcomings of this install method.
🛠 Package Manager Setup
uv (macOS/Linux/BSD)- Install uv on your system (if not already installed).
- Install the ArchiveBox package using uv .
uv tool install --python 3.13 --prerelease explicit --upgrade ' archivebox>=0.9.0rc0,<0.10 'archivebox version
See the Install: Bare Metal Wiki for full install instructions for each OS...
- Create a new empty directory and initialize your collection (can be anywhere).
mkdir -p ~ /archivebox/data && cd ~ /archivebox/data # for examplearchivebox init # initialize a new collection archivebox install # install all the runtime dependencies (e.g. chrome, single-file, yt-dlp, etc.)
archivebox server 0.0.0.0:8000
- Optionally start the server, then open /admin/ on the hostname or IP used to reach ArchiveBox (local example: http://admin.archivebox.localhost:8000/admin/ ) to create the first admin. If BASE_URL is not configured yet, continue through the same web setup wizard used by Docker installs.
completely optional, CLI can always be used without running a server
archivebox [subcommand] [--help]
archivebox help
See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
See the uv tool documentation for more details about this installation method.
apt (Ubuntu/Debian/etc.)echo ' deb [trusted=yes] https://archivebox.github.io/debian-archivebox dev main ' | sudo tee /etc/apt/sources.list.d/archivebox.list sudo apt update sudo apt install archivebox (cd /tmp && archivebox version) # make sure the package is installed
- Add the third-party ArchiveBox apt repo and install archivebox .
- Create a new empty directory and initialize your collection (can be anywhere).
mkdir -p ~ /archivebox/datacd ~ /archivebox/dataarchivebox init sudo archivebox install archivebox add ' https://example.com '
archivebox server 0.0.0.0:8000
- Optionally start the server, then open /admin/ on the hostname or IP used to reach ArchiveBox (local example: http://admin.archivebox.localhost:8000/admin/ ) to create the first admin. If BASE_URL is not configured yet, continue through the same web setup wizard used by Docker installs.
completely optional, CLI can always be used without running a server
archivebox [subcommand] [--help]
archivebox help
See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
The apt package is a thin dev-channel wrapper around the normal Python install flow. sudo archivebox install uses apt for missing system dependencies while preserving ownership of the user-owned collection. See the debian-archivebox repo for details.
brew (macOS and Linux)Run Homebrew as your normal non-root user on both macOS and Linux; do not use sudo brew .
- Install Homebrew on your system (if not already installed).
- Install the ArchiveBox package using brew .
brew tap archivebox/archiveboxbrew trust archivebox/archiveboxbrew install archiveboxarchivebox version # verify the installed version
See the Install: Bare Metal Wiki for more granular instructions for macOS... ➡️
- Create a new empty directory and initialize your collection (can be anywhere).
mkdir -p ~ /archivebox/data && cd ~ /archivebox/dataarchivebox init archivebox install
archivebox server 0.0.0.0:8000
- Optionally start the server, then open /admin/ on the hostname or IP used to reach ArchiveBox (local example: http://admin.archivebox.localhost:8000/admin/ ) to create the first admin. If BASE_URL is not configured yet, continue through the same web setup wizard used by Docker installs.
completely optional, CLI can always be used without running a server
archivebox [subcommand] [--help]
archivebox help
See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
See the homebrew-archivebox repo for more details about this distribution.
pacman / pkg / nix (Arch/FreeBSD/NixOS/more)Warning: These are contributed by external volunteers and may lag behind the official uv and Docker channels.
- Arch: yay -S archivebox (contributed by @imlonghao , maintained by @jasongodev )
FreeBSD:
curl -fsSL 'https://get.archivebox.io' | bash (uses uv )- Nix: nix-env --install archivebox (contributed by @siraben )
- Guix: guix install archivebox (contributed by @rakino )
- More: contribute another distribution...!
See below for usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
🎗 Other Options
docker + electron Desktop App (macOS/Linux/Windows)- Install Docker on your system (if not already installed).
- Download a binary release for your OS or build the native app from source
- macOS: ArchiveBox.app.zip
- Linux: ArchiveBox.deb (alpha: build manually )
- Windows: ArchiveBox.exe (beta: build manually )
✨ Alpha (contributors wanted!) : for more info, see the: Electron ArchiveBox repo.
TrueNAS / UNRAID / YunoHost / Cloudron / etc. (self-hosting solutions)
Warning: These are contributed by external volunteers and may lag behind the official Docker and uv channels.
- TrueNAS: Official ArchiveBox TrueChart / Custom App Guide ( TrueCharts is discontinued , wait for Electric Eel )
- UnRaid
- Proxmox
- Yunohost
- Cloudron
- Saltbox
- Portainer
- AppImage
- Runtipi
- Umbrel (need contributors...)
- More: contribute another distribution...!
See below for usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
Third-party paid hosting options (cloud VPS)
-
- (USD $29-250/mo, pricing )
- (from USD $2.6/mo)
-
(USD $5-50+/mo, 🎗 referral link , instructions )
-
(USD $2.5-50+/mo, 🎗 referral link , instructions )
-
(USD $10-50+/mo, instructions )
-
(USD $0-5+/mo)
- (USD $60-200+/mo)
- (USD $60-200+/mo)
Referral links marked 🎗 provide $5-10 of free credit for new users and help pay for our demo server hosting costs.
For more discussion on third-party hosting options see here: Issue #531 .
➡️ Next Steps
- Import URLs from some of the supported Input Formats or view the supported Output Formats ...
- (Optional) Import browser cookies and settings into a persona .
- Tweak your UI or archiving behavior Configuration , read about some of the Caveats , or Troubleshoot
- Read about the Dependencies used for archiving, the Upgrading Process , or the Archive Layout on disk...
- Or check out our full Documentation or Community Wiki ...
Usage
⚡️ CLI Usage
ArchiveBox commands can be run in a terminal directly on your host , or via Docker / Docker Compose .
(depending on how you chose to install it above)
mkdir -p ~ /archivebox/data # create a new data dir anywherecd ~ /archivebox/data # IMPORTANT: cd into the directoryarchivebox [subcommand] [--help]
archivebox version archivebox help
equivalent: docker compose run --rm archivebox [subcommand] [--help]
docker compose run --rm archivebox helpequivalent: docker run -it -v $PWD:/data archivebox/archivebox:dev [subcommand] [--help]
docker run -it -v $PWD :/data archivebox/archivebox:dev helpArchiveBox Subcommands
- archivebox help / version to see the list of available subcommands / currently installed version info
- archivebox setup / init / config / status / shell / manage to administer your collection
- archivebox add / schedule to pull in fresh URLs from bookmarks/history/RSS/etc.
- archivebox list / update / remove to manage existing Snapshots in your collection
CLI Usage Examples: non-Docker
make sure you have uv-installed ArchiveBox and it's available in your $PATH first
archivebox [subcommand] [--help]
mkdir -p ~ /archivebox/data && cd ~ /archivebox/dataarchivebox init archivebox install archivebox add ' https://example.com ' archivebox version # get archivebox version info + check dependencies archivebox help # get list of archivebox subcommands that can be run
For more info, see our Usage: CLI Usage wiki. ➡️
CLI Usage Examples
Docker Composemake sure you have docker-compose.yml from the Quickstart instructions first
docker compose exec archivebox archivebox [subcommand] [--help]
docker compose exec archivebox archivebox versiondocker compose exec archivebox archivebox helpdocker compose exec archivebox archivebox add ' https://example.com 'to start webserver: docker compose up
For more info, see our Usage
Docker Compose CLI wiki. ➡️CLI Usage Examples
Dockermake sure the archivebox server container from the Quickstart is running first
docker exec archivebox archivebox [subcommand] [--help]
docker exec archivebox archivebox versiondocker exec archivebox archivebox helpdocker exec archivebox archivebox add ' https://example.com 'For more info, see our Usage
Docker CLI wiki. ➡️🗄 SQL/Python/Filesystem Usage archivebox shell # explore the Python library API in a REPL sqlite3 ./index.sqlite3 # run SQL queries directly on your index find ./archive/users -path ' */snapshots/*/*/*/index.html ' # inspect snapshot data directly
For more info, see our Python Shell , SQL API , and Disk Layout wikis. ➡️
🖥 Web UI & API Usage
Start the server on bare metal (uv/apt/brew):
archivebox server 0.0.0.0:8000 # start the server
Or with Docker Compose:
docker compose up # start the serverOr with a Docker container:
docker run -v $PWD :/data -it -p 8000:8000 archivebox/archivebox:devOpen http://admin.archivebox.localhost:8000/admin/ to create the first admin and finish web setup. Use http://web.archivebox.localhost:8000 for the public UI. ➡️
Advanced: archivebox manage createsuperuser remains available for creating accounts from the CLI.
Set BASE_URL to change the public base domain. The default auto mode uses web. and admin. subdomains on *.localhost , but one host for ordinary DNS names. BIND_ADDR only controls the local listen address.For more info, see our Usage: Web UI wiki. ➡️
Optional: Change permissions to allow non-logged-in users
archivebox config --set PUBLIC_ADD_VIEW=True # allow guests to submit URLs archivebox config --set PERMISSIONS=public # make newly added snapshots public archivebox config --set PUBLIC_INDEX=True # allow guests to see list of all snapshots
or
docker compose run --rm archivebox config --set PERMISSIONS=publicrestart the server to apply any config changes
Tip Whether in Docker or not, ArchiveBox commands work the same way, and can be used to access the same data on-disk. For example, you could run the Web UI in Docker Compose, and run one-off commands with uv -installed ArchiveBox.
Expand to show comparison...
archivebox add --depth=1 ' https://example.com ' # add a URL with uv-installed archivebox on the host
docker compose run --rm archivebox add --depth=1 ' https://example.com ' # or w/ Docker Composedocker run -it -v $PWD :/data archivebox/archivebox:dev add --depth=1 ' https://example.com ' # or w/ Docker, all equivalentFor more info, see our Docker wiki. ➡️
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
DEMO: https://demo.archivebox.io
Usage | Configuration | Caveats
Overview
Input Formats: How to pass URLs into ArchiveBox for saving
- From the official ArchiveBox Browser Extension
Provides realtime archiving of browsing history or selected pages from Chrome/Chromium/Firefox browsers.
- From manual imports of URLs from RSS, JSON, CSV, TXT, SQL, HTML, Markdown, etc. files
ArchiveBox supports injesting URLs in any text-based format .
- From manually exported browser history or browser bookmarks (in Netscape format)
Instructions: Chrome , Firefox , Safari , IE , Opera , and more...
- From URLs visited through a MITM Proxy with archivebox-proxy
Provides realtime archiving of all traffic from any device going through the proxy.
- From bookmarking services or social media (e.g. Twitter bookmarks, Reddit saved posts, etc.)
Instructions: Pocket , Pinboard , Instapaper , Shaarli , Delicious , Reddit Saved , Wallabag , Unmark.it , OneTab , Firefox Sync , and more...
archivebox add --help
archivebox add ' https://example.com/some/page ' archivebox add --depth=1 --plugins=parse_rss_urls " file:// $HOME /Downloads/some_feed.xml " archivebox add --depth=1 ' https://news.ycombinator.com#2020-12-12 ' echo ' http://example.
com ' | archivebox add echo ' any text with <a href="https://example.com">urls</a> in it ' | archivebox add
if using Docker, add -i when piping stdin:
echo 'https://example.com' | docker run -v $PWD:/data -i archivebox/archivebox:dev add
if using Docker Compose, add -T when piping stdin / stdout:
echo 'https://example.com' | docker compose run --rm -T archivebox add
See the Usage: CLI page for documentation and examples.
It also includes a built-in scheduled import feature with archivebox schedule , handled by the same orchestrator that powers archivebox server , so you can pull in URLs from RSS feeds and websites regularly without a separate cron container.
Output Formats: What ArchiveBox saves for each URL
For each web page added, ArchiveBox creates a Snapshot folder and preserves its content as ordinary files inside the folder (e.g. HTML, PDF, PNG, JSON, etc.).
It uses all available methods out-of-the-box, but you can disable extractors and fine-tune the configuration as-needed.
Expand to see the full list of ways it saves each page... data/archive/users/{username}/snapshots/{YYYYMMDD}/{domain}/{Snapshot.id}/
- Index: index.html & index.json HTML and JSON index files containing metadata and details
- Title , Favicon , Headers Response headers, site favicon, and parsed site title
- SingleFile: singlefile.html HTML snapshot rendered with headless Chrome using SingleFile
Wget Clone: example.com/page-name.html wget clone of the site with warc/TIMESTAMP.gz- Chrome Headless
- PDF: output.pdf Printed PDF of site using headless chrome
- Screenshot: screenshot.png 1440x900 screenshot of site using headless chrome
- DOM Dump: output.html DOM Dump of the HTML after rendering using headless chrome
- Article Text: article.html/json Article text extraction using Readability & Mercury
- Archive.org Permalink: archive.org.txt A link to the saved site on archive.org
- Audio & Video: media/ all audio/video files + playlists, including subtitles & metadata w/ yt-dlp
- Source Code: git/ clone of any repository found on GitHub, Bitbucket, or GitLab links
- More coming soon! See the Roadmap ...
Configuration
ArchiveBox can be configured via environment variables, by using the archivebox config CLI, or by editing ./ArchiveBox.conf .
Expand to see examples... archivebox config # view the entire config archivebox config --get CHROME_BINARY # view a specific value
archivebox config --set CHROME_BINARY=chromium # persist a config using CLI
OR edit ArchiveBox.conf and add this under its existing [ARCHIVING_CONFIG] section:
CHROME_BINARY=chromiumOR
env CHROME_BINARY=chromium archivebox version # run with a one-off config
These methods also work the same way when run inside Docker, see the Docker Configuration wiki page for details.
The configuration is documented here: Configuration Wiki , and loaded from: archivebox/config/ .
Expand to see the most common options to tweak...
e.g. archivebox config --set TIMEOUT=120
or docker compose run --rm archivebox config --set TIMEOUT=120
TIMEOUT=240 # default: 60 add more seconds on slower networksCHECK_SSL_VALIDITY=False # default: True False = allow saving URLs w/ bad SSLPUBLIC_INDEX=True # default: True whether anon users can view indexPERMISSIONS=public # default: public visibility for newly added snapshotsPUBLIC_ADD_VIEW=False # default: False whether anon users can add new URLsUSER_AGENT= " Mozilla/5.0 ... " # change this to get around bot blocking
Dependencies
To achieve high-fidelity archives in as many situations as possible, ArchiveBox depends on a variety of 3rd-party libraries and tools that specialize in extracting different types of content.
Under-the-hood, ArchiveBox uses Django to power its Web UI , Django Ninja for the REST API, and SQlite + the filesystem to provide fast & durable metadata storage w/ deterministic upgrades .
ArchiveBox bundles industry-standard tools like Google Chrome , wget , yt-dlp , readability , etc. internally, and its operation can be tuned, secured, and extended as-needed for many different applications.
Expand to learn more about ArchiveBox's internals & dependencies...
TIP: For better security while running ArchiveBox, and to avoid polluting your host system with a bunch of sub-dependencies that you need to keep up-to-date, it is strongly recommended to use the ⭐️ official Docker image which provides everything in an easy container with simple one-liner upgrades.
Language:
Python >=3.13- Backend: Django + Django-Ninja for REST API
- Frontend: Django Admin + Vanilla HTML, CSS, JS
- Web Server: Django + daphne (ASGI)
- Database: Django ORM saving to SQLite3 ./data/index.sqlite3
- Job Queue: Custom orchestrator using supervisord for worker management
Build/test/lint:
uv / pyright + ty + pytest / ruff- Subdependencies: abxpkg installs apt/brew/pip/npm pkgs at runtime (e.g. yt-dlp , singlefile , readability , git )
These optional subdependencies used for archiving sites include:
- chromium / chrome (for screenshots, PDF, DOM HTML, and headless JS scripts)
- node & npm (for readability, mercury, and singlefile)
wget (for plain HTML, static files, and WARC saving)curl (for fetching headers, favicon, and posting to Archive.org)- yt-dlp or youtube-dl (for audio, video, and subtitles)
git (for cloning git repos)- singlefile (for saving into a self-contained html file)
- postlight/parser (for discussion threads, forums, and articles)
- readability (for articles and long text content)
- and more as we grow...
You don't need to install every dependency by hand. ArchiveBox resolves every extractor dependency through abxpkg : it uses a compatible host installation when one is already available, and otherwise installs and manages the dependency for you.
install uv + archivebox first (see Quickstart instructions above)
archivebox install # auto install all the extractors and extras archivebox --version # see info and check validity of installed dependencies
Installing directly on Windows without Docker or WSL/WSL2/Cygwin is not officially supported (I cannot respond to Windows support tickets), but some advanced users have reported getting it working.
Learn More
- Wiki: Install (Dependencies)
- Wiki: Chromium Install
- Wiki: Upgrading or Merging Archives
- Wiki: Troubleshooting (Installing)
Archive Layout
All of ArchiveBox's state (SQLite DB, content, config, logs, etc.) is stored in a single folder per collection.
Expand to learn more about the layout of Archivebox's data on-disk...
Data folders can be created anywhere ( ~/archivebox/data or $PWD/data as seen in our examples), and you can create as many data folders as you want to hold different collections.
All archivebox CLI commands are designed to be run from inside an ArchiveBox data folder, starting with archivebox init to initialize a new collection inside an empty directory.
mkdir -p ~ /archivebox/data && cd ~ /archivebox/data # just an example, can be anywherearchivebox init
The on-disk layout is optimized to be easy to browse by hand and durable long-term. The main index is a standard index.sqlite3 database in the root of the data folder (it can also be exported as static JSON/HTML ).
Snapshot data is organized by user, date, domain, and UUID under data/archive/users/ .
data/ index.sqlite3 ArchiveBox.conf archive/ 1617687755 - > users/admin/snapshots/20210406/example.com/SNAPSHOT_UUID/ users/ admin/ snapshots/ 20210406/ example.
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
➡️ Get ArchiveBox with pip install archivebox>=0.9.0rc0' on Linux / macOS , or via Docker ⭐️ on Linux/macOS. Once installed, you can interact with it through the: Browser Extension , CLI , self-hosted web interface , Python API , or filesystem .
📥 You can feed ArchiveBox URLs one at a time, or schedule regular imports from your bookmarks or history, social media feeds or RSS, link-saving services like Pocket/Pinboard, our Browser Extension , and more.
See Input Formats for a full list of supported input formats. It saves snapshots of the URLs you feed it in several redundant formats. It also detects any content featured inside pages & extracts it out into a folder:
You can run ArchiveBox as a Docker web app to manage these snapshots, or continue accessing the same collection using the uv -installed CLI, Python API, and SQLite3 APIs.
All the ways of using it are equivalent, and provide matching features like adding tags, scheduling regular crawls, viewing logs, and more. 🛠️ ArchiveBox uses standard tools like Chrome, wget , & yt-dlp , and stores data in ordinary files & folders .
(no complex proprietary formats, all data is readable without needing to run ArchiveBox) The goal is to sleep soundly knowing the part of the internet you care about will be automatically preserved in durable, easily accessible formats for decades after it goes down.
- 🌐 HTML / Any websites ➡️ original HTML+CSS+JS , singlefile HTML , screenshot PNG , PDF , WARC , title , article text , favicon , headers , ...
- 🎥 Social Media / News ➡️ post content TXT , comments , title , author , images , ...
- 🎬 YouTube / SoundCloud /etc. ➡️ MP3/MP4 s, subtitles , metadata , thumbnail , ...
- 💾 Github / Gitlab /etc. links ➡️ clone of GIT source code , README , images , ...
- ✨ and more, see Output Formats below...
📦 Install ArchiveBox using your preferred method
docker / uv / brew / apt / etc. ( see full Quickstart below ).Expand for quick copy-pastable install commands... ⤵️
Option A: Get ArchiveBox with Docker Compose (recommended):
mkdir -p ~ /archivebox/data && cd ~ /archiveboxcurl -fsSL ' https://docker-compose.archivebox.io ' > docker-compose.ymldocker compose pulldocker compose up -d --wait # initializes new collections automaticallyopen http://admin.archivebox.localhost:8000 to finish setup
docker compose run --rm archivebox add 'https://example.com'
docker compose run --rm archivebox help
Option B: Or use it as a plain Docker container:
mkdir -p ~ /archivebox/data && cd ~ /archivebox/datadocker run -d --name archivebox -v " $PWD :/data " -p 8000:8000 archivebox/archivebox:devopen http://admin.archivebox.localhost:8000 to finish setup
docker run -it -v $PWD:/data archivebox/archivebox:dev add 'https://example.com'
docker run -it -v $PWD:/data archivebox/archivebox:dev help
Option C: Or install it with uv (see Quickstart below for apt, brew, and more)
uv tool install --python 3.13 --prerelease explicit --upgrade ' archivebox>=0.9.0rc0,<0.10 'mkdir -p ~ /archivebox/data && cd ~ /archivebox/dataarchivebox init archivebox install
archivebox add 'https://example.com'
archivebox help
archivebox server 0.0.0.0:8000
Option D: Or use the uv install shortcut for Option C
curl -fsSL ' https://get.archivebox.io ' | bashOpen http://web.archivebox.localhost:8000 for the public UI and http://admin.archivebox.localhost:8000 for the admin UI ➡️
Set BASE_URL to change the public base domain. The default auto mode uses web. and admin. subdomains on *.localhost , but one host for ordinary DNS names. BIND_ADDR only controls the local listen address.Demo | Screenshots | Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . Key Features
Quickstart 🖥 Supported OSs : Ubuntu, macOS, Docker 👾 CPUs: amd64 ( x86_64 ), arm64 ✳️ Easy Setup docker-compose (macOS/Linux) 👈 recommended (click to expand) 👍 Docker Compose is recommended for the easiest install/update UX + best security + all extras out-of-the-box.
- Free & open source , own your own data & maintain your privacy by self-hosting
- Powerful CLI with modular dependencies and support for Google Drive/NFS/SMB/S3/B2/etc.
- Comprehensive documentation , active development , and rich community
- Extracts a wide variety of content out-of-the-box : media (yt-dlp), articles (readability), code (git), etc.
- Supports scheduled/realtime importing from many types of sources
- Uses standard, durable, long-term formats like HTML, JSON, PDF, PNG, MP4, TXT, and WARC
- Powerful CLI , self-hosted web UI , Python API (BETA), REST API (ALPHA), or desktop app
- Saves all pages to archive.org as well by default for redundancy (can be disabled for local-only mode)
- Advanced users: support for archiving content requiring login/paywall/cookies (see wiki security caveats!)
- Planned: support for running JS during archiving to adblock, autoscroll , modal-hide , thread-expand
- Install Docker on your system (if not already installed).
- Download the docker-compose.yml file into a new empty directory (can be anywhere).
mkdir -p ~ /archivebox/data && cd ~ /archiveboxcurl -fsSL ' https://docker-compose.archivebox.io ' > docker-compose.ymldocker compose pull- Start the server, which initializes a new collection automatically.
docker compose up -d --wait- Open /admin/ on the hostname or IP used to reach ArchiveBox (local example: http://admin.archivebox.localhost:8000/admin/ ) to create the first admin. If BASE_URL is not configured yet, continue through the web setup wizard.
run CLI commands inside the server container started above
docker compose exec archivebox archivebox add ' https://example.com 'docker compose exec archivebox archivebox helpFor more info, see Install
Docker Compose in the Wiki. ➡️See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
docker run (macOS/Linux)- Install Docker on your system (if not already installed).
- Create a new empty directory and start the server, which initializes the collection automatically (can be anywhere).
mkdir -p ~ /archivebox/data && cd ~ /archivebox/datadocker run -d --name archivebox -v $PWD :/data -p 8000:8000 archivebox/archivebox:dev- Open /admin/ on the hostname or IP used to reach ArchiveBox (local example: http://admin.archivebox.localhost:8000/admin/ ) to create the first admin. If BASE_URL is not configured yet, continue through the web setup wizard.
completely optional, CLI can always be used without running a server
docker exec archivebox archivebox [subcommand] [--help]
docker exec archivebox archivebox helpFor more info, see Install
Docker Compose in the Wiki. ➡️See below for more usage examples using the CLI, Web UI, or filesystem/SQL/Python to manage your archive.
bash uv install shortcut (macOS/Linux/BSD)- Run the shortcut for the uv install method. It installs uv first when needed.
curl -fsSL ' https://get.archivebox.io ' | bashFor more info, see Install: Bare Metal in the Wiki. ➡️
