Why self-host your web archive
The web is ephemeral by design. According to Internet Archive research, 25% of web pages accessible in 2013 had disappeared ten years later. Deleted news articles, moved documentation, removed tweets, discontinued product pages — the average lifespan of a URL is between 2 and 5 years.
Commercial solutions address this partially: Pocket saves the text, Archive.org keeps public snapshots, Pinboard archives a cached copy. But they share three structural limitations: your data sits with a third party, available formats are restricted, and you have no control over retention policy.
ArchiveBox solves all three. Self-hosted on your VPS, it stores every snapshot in your Docker volume — accessible offline, exportable, never subject to a third-party expiry policy. For teams with regulatory requirements (GDPR, finance, media), this is the only architecture where the chain of custody is fully under your control.
What you get with self-hosted ArchiveBox
- Multi-format snapshots — each URL produces HTML (wget), full-page HTML (SingleFile), screenshot PNG, PDF, WARC, DOM JSON, plaintext.
- Video archiving — yt-dlp integration for YouTube, Vimeo, Twitter and 1 000+ sites; video stored locally with metadata.
- Web UI — browse your library, re-run captures, full-text search and share signed links.
- Powerful CLI — add URLs in bulk from a file, RSS feed or bookmark export (Pocket, Pinboard, Instapaper).
- MIT licence — no telemetry, no cloud account, data 100% on your VPS.
- Zero-downtime updates —
docker compose pull && docker compose up -d; Django migrations apply automatically.
Prerequisites
ArchiveBox is designed to run on a modest VPS. The recommended minimum configuration is 1 vCPU, 512 MB of RAM and 20 GB of disk. In practice the container uses around 346 MB at rest — enough headroom on a 1 GB VPS for personal or small-team use.
Disk needs depend entirely on capture volume. A typical HTML + PDF + PNG article snapshot weighs 2–10 MB; a YouTube video archived with yt-dlp can exceed several gigabytes. ServOrbit volumes are expandable from your client area without interrupting the container.
No domain is required to get started — ArchiveBox listens on the loopback and is accessible via SSH tunnel. For permanent browser or team access, attach a domain from your ServOrbit client area.
Deploy ArchiveBox on your ServOrbit VPS
Order from the ServOrbit Marketplace
From your ServOrbit client area, install ArchiveBox in one click from the Marketplace: select the Collaboration category, choose ArchiveBox and confirm your order. The Docker container starts automatically on your VPS. You will receive a notification when the healthcheck responds, with the assigned port and generated admin password.
Log in to the admin interface
Open an SSH tunnel to access the interface without a domain:
ssh -L 5797:127.0.0.1:<port> root@<vps-ip>then navigate tohttp://localhost:5797/. The admin login page is at/admin/. Enter usernameadminand the password shown in your ServOrbit client area under Applications → Reveal. Change the password immediately after your first login (Settings → Change password).Archive your first URLs
Click Add in the top bar and enter one or more URLs (one per line). Select which extractors to run — HTML, PDF, screenshot and WARC are enabled by default. ArchiveBox queues the captures, downloads each snapshot in parallel and adds them to the index. For bulk import, use the CLI:
docker exec archivebox archivebox add < urls.txt.Schedule recurring captures
To archive URLs on a schedule, create a cron job via the ArchiveBox CLI:
docker exec archivebox archivebox schedule --every=day --depth=1 <url>. RSS feeds and bookmark exports (Pocket JSON, Pinboard, Instapaper) can be imported automatically by piping their output toarchivebox add.Attach a domain for permanent access
From your ServOrbit client area, attach a domain or subdomain to your ArchiveBox instance. ServOrbit configures nginx and provisions a Let's Encrypt certificate automatically. Once the domain is active, update the
ARCHIVEBOX_CSRF_TRUSTED_ORIGINSenvironment variable in your compose file to match the new origin, then recreate the container withdocker compose up -d.Monitor disk usage
ArchiveBox stores captures in the
archivebox-datavolume mounted at/datain the container. Monitor volume size from your ServOrbit client area or on the command line:docker system df -v | grep archivebox. To free space, delete individual captures from the web UI or via the CLI (archivebox remove --filter <pattern>). If you approach the disk limit, expand the volume from your client area without interrupting the container.
ArchiveBox supports selective extractors: for heavy pages (videos, JS dashboards), disable unused extractors per URL from the interface or globally in .env (SAVE_PDF=False, SAVE_SCREENSHOT=False…). This reduces capture size and speeds up bulk archiving while keeping the essential HTML and WARC.
Supported archive formats
ArchiveBox is unique in the breadth of formats it produces in a single operation:
- wget — recursive HTML mirror of the page and its static assets (CSS, JS, images).
- SingleFile — self-contained single-file HTML, faithfully reproducing the visual render of the page at capture time.
- Chrome headless — full JavaScript render, bypassing SPA frameworks that produce empty HTML with wget.
- Screenshot PNG — full-page screenshot in high resolution.
- PDF — PDF print of the page as displayed by Chromium.
- WARC/CDX — standardised web archive format (ISO 28500), compatible with Wayback Machine and legal verification tools.
- DOM JSON — serialisation of the final JavaScript DOM, for structured analysis tools.
- Plaintext — extracted text content, indexed by full-text search.
- yt-dlp — video and audio from YouTube, Vimeo, Twitter and 1 000+ sites.
- Git clone — for public GitHub/GitLab repositories, git clone into the archive folder.
Each extractor can be toggled globally in the .env file or per URL from the web interface.
Use case: compliance and legal archiving
ArchiveBox is particularly suited to teams that must preserve digital evidence for legal or regulatory purposes. Recommended practices for this context:
Timestamping and integrity. ArchiveBox records a SHA-256 hash of each archive and the capture timestamp in index.json. These metadata form a minimal chain of custody. For stronger evidentiary value, combine with an RFC 3161 timestamping service (openssl ts) before depositing in your document management system.
Permission separation. The admin interface exposes all captures. For teams, create separate user accounts with read-only permissions — user management is in Settings → Users.
Volume backup. The archivebox-data Docker volume contains your entire archive. Configure daily snapshots from your ServOrbit client area or sync to S3 with rclone. Without backup, volume loss is irrecoverable.
WARC files. Produced WARC files comply with ISO 28500 and are accepted by legal verification tools (Archiware, IIPC CDX tools). Verify produced files with warcio index data/archive/<domain>/warc/index.cdx.gz.