网站存档服务ArchiveBox

今天是老苏居家隔离的第 43 天。

周四除上午,下午各一次抗原外,上午还做了一次核酸;周五上午两个抗原(间隔 4 小时),下午1点还有一次核酸。

现在核酸也不像之前,一栋一栋通知下楼,又开始变得乱糟糟的也没人管,越来越看不懂。

刚刚说物流好一点,又在没有任何文件的情况下突然封控了,小区可是连续 17 天全阴的,什么时候才是个头呢?


本文是应网友 akimo 的要求写的

都说互联网是有记忆的,可实际上很多时候说没也就没了,再也无处寻觅。但生活中总有些东西是值得被记住的,ArchiveBox 可以帮你做到这一点,它能帮你搭建网站的存档,包括内容、链接、资源等等,让你保留该网站的完整记忆。

什么是 ArchiveBox ?

ArchiveBox 是使用 Python 编写的功能强大的自托管 Internet 归档解决方案。您向它提供要存档的页面的 URL ,然后根据设置和其中的内容将它们以各种格式保存到磁盘。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 archivebox ,选择第一个 archivebox/archivebox,版本选择 latest

容器名称

一般来说,老苏都是用的默认生成的容器名称,但是因为后面还需要进入到容器内部操作,所以需要一个相对简单又容易辨识的名称

docker 文件夹中,创建一个新文件夹,将其命名为 archivebox

文件夹 装载路径 说明
docker/archivebox /data 存放数据

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
4800 8000

环境

可变
MEDIA_MAX_SIZE 媒体文件的最大尺寸

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷,老苏更喜欢命令行,搭建环境比较快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 新建文件夹 archivebox 
mkdir -p /volume2/docker/archivebox

# 进入 archivebox 目录
cd /volume2/docker/archivebox

# 运行容器
docker run -d \
--restart unless-stopped \
--name archivebox \
-p 4800:8000 \
-v $(pwd):/data \
-e MEDIA_MAX_SIZE=750m \
archivebox/archivebox:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '2.4'

services:
archivebox:
image: archivebox/archivebox:latest
container_name: archivebox
command: server --quick-init 0.0.0.0:8000
ports:
- 4800:8000
environment:
- ALLOWED_HOSTS=*
- MEDIA_MAX_SIZE=750m
volumes:
- /volume2/docker/archivebox:/data

然后执行下面的命令,在 portainer 中执行也是可以的

1
2
3
4
5
6
7
# 进入 archivebox 目录
cd /volume2/docker/archivebox

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

软件有个初始化过程,需要稍作等待,或者你直接观察 终端机

或者 日志

当看到 Starting development server at http://0.0.0.0:8000/ ,就可以在浏览器中输入 http://群晖IP:4800 ,加载成功就能看到主界面

创建管理员

通过命令行进入容器内,执行创建管理员用户的操作

【注意】:不能用 root 用户,老苏用了容器内置的账号 archivebox,原因官方有说明,有兴趣的自己去看:https://github.com/ArchiveBox/ArchiveBox/wiki/Security-Overview#do-not-run-as-root

1
2
3
4
5
# 进入容器(前一个 archivebox 是用户名,后一个 archivebox 是容器名)
docker exec -it --user archivebox archivebox /bin/bash

# 创建管理员
archivebox manage createsuperuser
  • 输入用户名,如果留空,会默认使用 archivebox 做用户名
  • 输入邮箱地址
  • 输入密码

老苏只是测试,所以用了非常简单的密码,因此导致了一堆的警告,但是最后老苏用 y 直接跳过,反正进入系统后可以改密码的

抓取网站

以老苏的博客为例

  • URLs:这里输入老苏博客的地址,https://laosu.ml
  • URLs format:选择了 URL List
  • tags :老苏留了空
  • Archive depth:老苏选了 depth = 1
  • Archive methods:还是留了空,如果你想快一点,可以只选择一项,比如 singlefile

Add URLs and archive + 就开始干活了

注意看 /docker/archivebox/archive 目录,慢慢的会有目录和文件

资源占用会变高

有时候整个机器是这样的

PUBLIC

SNAPSHORT

如果中途因为种种原因中断了,可以勾选未完成的链接,直接点 pull 继续

参考文档

ArchiveBox/ArchiveBox: 🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more…
地址:https://github.com/ArchiveBox/ArchiveBox

Docker · ArchiveBox/ArchiveBox Wiki
地址:https://github.com/ArchiveBox/ArchiveBox/wiki/Docker