# Usage:
# docker compose up
# echo 'https://example.com' | docker compose run -T archivebox add
# docker compose run archivebox add --depth=1 'https://news.ycombinator.com'
# docker compose run archivebox config --set SAVE_ARCHIVE_DOT_ORG=False
# docker compose run archivebox help
# Documentation:
# https://github.com/ArchiveBox/ArchiveBox/wiki/Docker#docker-compose
version: '2.4'
services:
archivebox:
image: archivebox/archivebox:latest
ports:
- 8000:8000
volumes:
- ./data:/data
environment:
# - ADMIN_USERNAME=admin # 使用给定用户/通行证组合在第一次运行时创建管理员用户
# - ADMIN_PASSWORD=SomeSecretPassword
- ALLOWED_HOSTS=* # 将其限制为仅接受通过特定域名的传入流量
- PUBLIC_INDEX=True # 设置为FALSE可防止匿名用户查看快照列表
- PUBLIC_SNAPSHOTS=True # 设置为False可防止匿名用户查看快照内容
- PUBLIC_ADD_VIEW=False # 设置为True可允许匿名用户将新URL提交到存档
- SEARCH_BACKEND_ENGINE=sonic # 通知ArchiveBox使用下面的Sonic容器进行快速全文搜索
- SEARCH_BACKEND_HOST_NAME=sonic
- SEARCH_BACKEND_PASSWORD=SomeSecretPassword
# - PUID=911 # 如果遇到权限问题,请设置为您的主机用户的UID和GID
# - PGID=911 # UID/GID<500可能会与现有用户冲突,不建议使用
- MEDIA_MAX_SIZE=1g # 增加此文件大小限制以允许存档更大的音频/视频文件
- TIMEOUT=600 # 如果您看到许多缓慢的下载超时,请将此数字增加到120秒以上
# - CHECK_SSL_VALIDITY=True # 设置为FALSE以禁用严格的SSL检查(允许使用损坏的证书保存URL)
# - SAVE_ARCHIVE_DOT_ORG=True # 设置为FALSE将禁止在存档时将所有URL提交到Archive.org
# ...
# 根据需要从Archivebox/config.py添加更多配置选项(以仅将它们应用于此容器)
# 或者使用`docker compose run archive vebox config--set ome_key=ome val`设置(以在所有容器中保持配置)
# 对于存档过程中的广告拦截,请取消注释此部分和下面的Pihole服务部分
# networks:
# - dns
# dns:
# - 172.20.0.53
######## 可选插件:根据您的特定用例调整下面的示例 ########
### 此可选容器在后台运行任何计划任务,添加新任务如下:
# $ docker compose run archivebox schedule --add --every=day --depth=1 'https://example.com/some/rss/feed.xml'
# 然后重新启动调度程序容器,以将任何更改应用于计划任务列表:
# $ docker compose restart archivebox_scheduler
archivebox_scheduler:
image: archivebox/archivebox:latest
command: schedule --foreground --update --every=day
environment:
- TIMEOUT=120 # 使用比主容器更高的超时值,以便在重试时为较慢的任务提供更多时间
# - PUID=502 # 如果遇到权限问题,请设置为您的主机用户的UID和GID
# - PGID=20
volumes:
- ./data:/data
# cpus: 2 # 取消注释/编辑这些值以限制调度程序容器资源消耗
# mem_limit: 2048m
restart: always
### 这将运行可选的Sonic全文搜索后端(比默认RG后端快得多)。
# 如果Sonic在一段时间未运行后启动,请通过运行以下命令更新其全文索引:
# $ docker-compose run archivebox update --index-only
sonic:
image: valeriansaliou/sonic:latest
build:
# 自定义构建只是为了方便起见,自动下载存档框的默认sonic.cfg
# 第一次运行后不需要/如果您已经这样做了 ./etc/sonic.cfg present
dockerfile_inline: |
FROM quay.io/curl/curl:latest AS config_downloader
RUN curl -fsSL 'https://raw.githubusercontent.com/ArchiveBox/ArchiveBox/stable/etc/sonic.cfg' > /tmp/sonic.cfg
FROM valeriansaliou/sonic:latest
COPY --from=config_downloader /tmp/sonic.cfg /etc/sonic.cfg
expose:
- 1491
environment:
- SEARCH_BACKEND_PASSWORD=SomeSecretPassword
volumes:
- ./sonic.cfg:/etc/sonic.cfg
- ./data/sonic:/var/lib/sonic/store
### 这个容器运行xvfb+novnc,这样您就可以在存档文件时观看它,
# 或者远程控制它,为您想要存档的网站设置Chrome配置文件和登录凭据。
# https://github.com/ArchiveBox/ArchiveBox/wiki/Chromium-Install#setting-up-a-chromium-user-profile
novnc:
image: theasp/novnc:latest
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
# 默认情况下仅限于从本地主机访问,因为它没有身份验证
- 127.0.0.1:8080:8080
### 示例:将Nginx放在ArchiveBox服务器前面,用于SSL终止和静态文件服务。
# 您也可以选择任何其他的SSL入口提供商,如Apache、Caddy、Traefik、Cloudflare隧道等。
# nginx:
# image: nginx:alpine
# ports:
# - 443:443
# - 80:80
# volumes:
# - ./etc/nginx.conf:/etc/nginx/nginx.conf
# - ./data:/var/www
### 示例:通过取消注释此容器,启用运行定期计划的归档任务的功能
# 取消对此块的注释,并使用其管理界面设置 pihole
# pihole:
# image: pihole/pihole:latest
# ports:
# # 访问 http://localhost:8090 上的admin HTTP界面
# - 127.0.0.1:8090:80
# environment:
# - WEBPASSWORD=SET_THIS_TO_SOME_SECRET_PASSWORD_FOR_ADMIN_DASHBOARD
# - DNSMASQ_LISTENING=all
# dns:
# - 127.0.0.1
# - 1.1.1.1
# networks:
# dns:
# ipv4_address: 172.20.0.53
# volumes:
# - ./etc/pihole:/etc/pihole
# - ./etc/dnsmasq:/etc/dnsmasq.d
### 示例:通过取消注释此容器,启用运行定期计划的归档任务的功能
# $ docker compose run archivebox schedule --every=day --depth=1 'https://example.com/some/rss/feed.xml'
# 然后重新启动调度程序容器以将更改应用于调度
# $ docker compose restart archivebox_scheduler
# archivebox_scheduler:
# image: archivebox/archivebox:latest
# command: schedule --foreground
# environment:
# - MEDIA_MAX_SIZE=1g # 增加此数字以允许存档较大的音频/视频文件
# # - TIMEOUT=600 # 如果在归档过程中/在速度较慢的网络上经常看到超时,请增加
# # - ONLY_NEW=True # 设置为False可在重新添加时重试以前失败的URL,而不是跳过它们
# # - CHECK_SSL_VALIDITY=True # 设置为FALSE以允许使用损坏的SSL证书保存URL
# # - SAVE_ARCHIVE_DOT_ORG=True # 设置为FALSE将禁止在存档时将URL提交到Archive.org
# # - PUID=502 # 如果遇到权限问题,请设置为您的主机用户的UID和GID
# # - PGID=20
# volumes:
# - ./data:/data
# - ./etc/crontabs:/var/spool/cron/crontabs
# # cpus: 2 # 取消注释/编辑这些值以限制容器资源消耗
# # mem_limit: 2048m
# # shm_size: 1024m
### 示例:将Nginx放在ArchiveBox服务器前面以进行SSL终止
# nginx:
# image: nginx:alpine
# ports:
# - 443:443
# - 80:80
# volumes:
# - ./etc/nginx.conf:/etc/nginx/nginx.conf
# - ./data:/var/www
### 示例:通过WireGuard VPN隧道运行您的所有ArchiveBox流量,以避免IP阻塞。
# 您还可以使用任何其他工作在坞站IP级别的VPN,例如TailScale、OpenVPN等。
# 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
### 示例:并行运行PYWB并自动从ArchiveBox导入WARC
# pywb:
# image: webrecorder/pywb:latest
# entrypoint: /bin/sh -c '(wb-manager init default || test $$? -eq 2) && wb-manager add default /archivebox/archive/*/warc/*.warc.gz; wayback;'
# environment:
# - INIT_COLLECTION=archivebox
# ports:
# - 8080:8080
# volumes:
# - ./data:/archivebox
# - ./data/wayback:/webarchive
# networks:
# # network just used for pihole container to offer :53 dns resolving on fixed ip for archivebox container
# dns:
# ipam:
# driver: default
# config:
# - subnet: 172.20.0.0/24
# To use remote storage for your ./data/archive (e.g. Amazon S3, Backblaze B2, Google Drive, OneDrive, SFTP, etc.)
# 将远程存储用于 ./data/archive (例如Amazon S3、Backblaze B2、Google Drive、OneDrive、SFTP等)
# 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