# Usage: # mkdir -p ~/archivebox/data && cd ~/archivebox # curl -fsSL 'https://docker-compose.archivebox.io' > docker-compose.yml # docker compose pull # docker compose up -d --wait # Open /admin/ on the hostname or IP used to reach ArchiveBox (local: http://admin.archivebox.localhost:8000/admin/). # docker compose exec archivebox archivebox add --depth=1 'https://news.ycombinator.com' # docker compose exec -T archivebox archivebox add < ~/Downloads/bookmarks.txt # docker compose exec archivebox archivebox help # Documentation: # https://github.com/ArchiveBox/ArchiveBox/wiki/Docker#docker-compose services: archivebox: image: ${ARCHIVEBOX_IMAGE:-archivebox/archivebox:dev} restart: unless-stopped ports: - "${ARCHIVEBOX_PORT:-8000}:8000" volumes: - ./data:/data # Override abx-dl's nested VOLUME so profiles persist across containers. - ./data/personas:/data/personas # Let one-off `docker compose run` commands reuse the server's supervisor. - tmp:/tmp/archivebox pids_limit: 2048 # avoids low systemd task caps with Chrome and parallel extractors environment: # - ADMIN_USERNAME=admin # creates an admin user on first run with the given user/pass combo # - ADMIN_PASSWORD=SomeSecretPassword - BASE_URL # optional canonical URL; the first-run admin wizard fills it from the browser - SERVER_SECURITY_MODE # optional override; defaults to auto and can be set by the first-run wizard - PUBLIC_ADD_VIEW=False # set to True to allow anonymous users to submit new URLs to archive # For all other options, it's better to use data/ArchiveBox.conf or the new Personas config feature in the admin UI... # - TIMEOUT=60 # - CHECK_SSL_VALIDITY=False # - USER_AGENT="..." # ... # For more info, see: https://github.com/ArchiveBox/ArchiveBox/wiki/Docker#configuration shm_size: "1gb" # Chrome runs more efficiently when using a reasonably sized shared memory pool #################################################################################################################### ######## Optional Addons: tweak examples below as needed for your specific use case ######## ### `archivebox server` now runs the orchestrator itself, so scheduled crawls and queued UI/API jobs # are processed by the main container without needing a separate scheduler sidecar. To add a new job: # $ docker compose run --rm archivebox schedule --add --every=day --depth=1 'https://example.com/some/rss/feed.xml' # the running server orchestrator will pick it up automatically at the next due time. # https://github.com/ArchiveBox/ArchiveBox/wiki/Scheduled-Archiving ### ArchiveBox now starts and uses Sonic automatically when SEARCH_BACKEND_ENGINE=sonic. # If Sonic is ever started after not running for a while, update its full-text index by running: # $ docker compose run --rm archivebox update --index-only # https://github.com/ArchiveBox/ArchiveBox/wiki/Setting-up-Search ### This optional container runs xvfb+noVNC so you can watch the ArchiveBox browser as it archives things, # or remote control it to set up a chrome profile w/ login credentials for sites you want to archive. # https://github.com/ArchiveBox/ArchiveBox/wiki/Chromium-Install#setting-up-a-chromium-user-profile # https://github.com/ArchiveBox/ArchiveBox/wiki/Chromium-Install#docker-vnc-setup # novnc: # image: theasp/novnc:latest # profiles: # - novnc # environment: # - DISPLAY_WIDTH=1920 # - DISPLAY_HEIGHT=1080 # - RUN_XTERM=no # ports: # # to view/control ArchiveBox's browser, visit: http://127.0.0.1:8080/vnc.html # # restricted to access from localhost by default because it has no authentication # - 127.0.0.1:8080:8080 ### Example: run all your ArchiveBox traffic through a WireGuard VPN tunnel to avoid IP blocks. # You can also use any other VPN that works at the docker/IP level, e.g. Tailscale, OpenVPN, etc. # wireguard: # image: linuxserver/wireguard:latest # network_mode: 'service:archivebox' # cap_add: # - NET_ADMIN # - SYS_MODULE # sysctls: # - net.ipv4.conf.all.rp_filter=2 # - net.ipv4.conf.all.src_valid_mark=1 # volumes: # - /lib/modules:/lib/modules # - ./wireguard.conf:/config/wg0.conf:ro ### Example: Run ChangeDetection.io to watch for changes to websites, then trigger ArchiveBox to archive them # Documentation: https://github.com/dgtlmoon/changedetection.io # More info: https://github.com/dgtlmoon/changedetection.io/blob/master/docker-compose.yml # changedetection: # image: ghcr.io/dgtlmoon/changedetection.io # volumes: # - ./data-changedetection:/datastore # HOW TO: Set up cloud storage for your ./data/archive (e.g. Amazon S3, Backblaze B2, Google Drive, OneDrive, SFTP, etc.) # https://github.com/ArchiveBox/ArchiveBox/wiki/Setting-Up-Storage # # Follow the steps here to set up the Docker RClone Plugin https://rclone.org/docker/ # $ docker plugin install rclone/docker-volume-rclone:amd64 --grant-all-permissions --alias rclone # $ nano /var/lib/docker-plugins/rclone/config/rclone.conf # [examplegdrive] # type = drive # scope = drive # drive_id = 1234567... # root_folder_id = 0Abcd... # token = {"access_token":...} # volumes: # archive: # driver: rclone # driver_opts: # remote: 'examplegdrive:archivebox' # allow_other: 'true' # vfs_cache_mode: full # poll_interval: 0 volumes: tmp: