# Usage: # mkdir -p ~/archivebox/data && cd ~/archivebox # curl -fsSL 'https://docker-compose.archivebox.io' > docker-compose.yml # docker compose run archivebox init # docker compose up -d && open 'http://admin.archivebox.localhost:8000' # docker compose run archivebox add --depth=1 'https://news.ycombinator.com' # docker compose run -T archivebox add < ~/Downloads/bookmarks.txt # docker compose run archivebox help # Documentation: # https://github.com/ArchiveBox/ArchiveBox/wiki/Docker#docker-compose services: archivebox: image: ${ARCHIVEBOX_IMAGE:-archivebox/archivebox:dev} ports: - 8000:8000 volumes: - ./data:/data environment: # - ADMIN_USERNAME=admin # creates an admin user on first run with the given user/pass combo # - ADMIN_PASSWORD=SomeSecretPassword # - SERVER_SECURITY_MODE=safe-subdomains-fullreplay # set to safe-onedomain-nojsreplay if you can't do wildcard DNS *.your.archivebox.domain - BASE_URL=http://archivebox.localhost:8000 # public URL used to build admin/web/api/snapshot links - PUBLIC_ADD_VIEW=False # set to True to allow anonymous users to submit new URLs to archive # - PUID=911 # set to your host user's UID & GID if you encounter permissions issues # - PGID=911 # UID/GIDs lower than 500 may clash with system uids and are not recommended # 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 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 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: Put Nginx in front of the ArchiveBox server for SSL termination and static file serving. # You can also any other ingress provider for SSL like Apache, Caddy, Traefik, Cloudflare Tunnels, etc. # Note you must set up wildcard DNS and TLS *.your.archivebox.domain because snapshots are served from unique subdomains for security. # nginx: # image: nginx:alpine # ports: # - 443:443 # - 80:80 # volumes: # - ./etc/nginx.conf:/etc/nginx/nginx.conf # - ./data:/var/www ### 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