网站存档服务 ArchiveBox

# 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


标签:Docker
版权属于:Bejix 所有,转载请注明文章来源。

本文链接: https://bejix.cn/archives/185/

下一篇
没有了
赞 (0)

评论区

评论已关闭

已有 4 条评论

回到顶部