Docker

Archiveinator ships as a Docker image with Playwright Chromium, the monolith binary, and pre-downloaded adblock blocklists. No Python setup required.


Pull the Image

docker pull ghcr.io/p0rkchop/archiveinator:latest

Available Tags

Tag Description
latest Most recent stable release
0 Latest in the v0.x series
0.9 Latest in the v0.9.x series
0.9.1 Pinned to this exact release

New images are published automatically with each release. Pin to a specific version tag for reproducible, controlled upgrades.


Quick Start

CLI: Archive a Page

docker run --rm \
  -v $(pwd):/output \
  ghcr.io/p0rkchop/archiveinator:latest \
  archive https://example.com/article

The archived HTML file appears in your current directory.

Web UI: Start the Server

docker run --rm \
  -p 8080:8080 \
  -v archive-data:/data \
  ghcr.io/p0rkchop/archiveinator:latest

Open http://localhost:8080 and register a new account.

The Docker image starts the web server by default (CMD serve). The ENTRYPOINT is archiveinator, so you can run any CLI command after the image name.


Volume Mounts

Path Purpose Recommended
/output Where archived HTML files are saved Mount for CLI use
/config Config directory — mounts a config.yaml for custom settings Optional (auto-created)
/data SQLite database, archives, and caches Persist this for Web UI

Full Example

docker run --rm \
  -p 8080:8080 \
  -v ~/archives:/output \
  -v ~/.archiveinator-config:/config \
  -v archive-data:/data \
  -e RESEND_API_KEY=re_xxx \
  ghcr.io/p0rkchop/archiveinator:0.9.1

Web UI with Docker

The web UI is included in the image and starts by default:

# Basic
docker run --rm -p 8080:8080 -v archive-data:/data ghcr.io/p0rkchop/archiveinator:latest

# With email notifications
docker run --rm \
  -p 8080:8080 \
  -v archive-data:/data \
  -e RESEND_API_KEY=re_xxx \
  ghcr.io/p0rkchop/archiveinator:latest

Environment Variables

Variable Default Description
RESEND_API_KEY (none) Resend API key for email notifications. If unset, email sending is silently skipped
FLARESOLVERR_URL (none) URL of a running FlareSolverr instance for Cloudflare IUAM bypass (e.g. http://flaresolverr:8191/v1). Only needed for Cloudflare-protected sites

FlareSolverr for Cloudflare Sites

FlareSolverr is an optional sidecar that solves Cloudflare IUAM and Turnstile challenges. Run it alongside archiveinator for better success on Cloudflare-protected sites:

# docker-compose.yml
services:
  archiveinator:
    image: ghcr.io/p0rkchop/archiveinator:latest
    ports:
      - "8080:8080"
    volumes:
      - archive-data:/data
    environment:
      - FLARESOLVERR_URL=http://flaresolverr:8191/v1
    depends_on:
      - flaresolverr

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    environment:
      - LOG_LEVEL=info

volumes:
  archive-data:
docker compose up -d

Without FlareSolverr, the flaresolverr pipeline step is a complete no-op — no errors, just skipped.


Scripting with Docker

Archive a List of URLs

while read -r url; do
  docker run --rm -v ~/archives:/output ghcr.io/p0rkchop/archiveinator:latest archive "$url"
done < urls.txt

Capture Cookies via Interactive Login

docker run --rm -it \
  -v ~/archives:/output \
  ghcr.io/p0rkchop/archiveinator:latest \
  login https://example.com -o /output/cookies.json

Building from Source

# From the repo root
docker build -t archiveinator:custom .

# With a specific release ref
docker build --build-arg RELEASE_REF=v0.9.1 -t archiveinator:custom .

Upgrading

docker pull ghcr.io/p0rkchop/archiveinator:latest

Or pull a specific version:

docker pull ghcr.io/p0rkchop/archiveinator:0.9.1

Back to top

archiveinator © 2026. Distributed under the MIT License.

This site uses Just the Docs, a documentation theme for Jekyll.