Kiwix 离线维基百科阅读器

Kiwix 是一款针对在没有网络的情况下查阅维基百科内容设计的阅读器,同时也可以阅读任何使用 Zim 存档的网站内容。经过简单的配置,也可以方便将其内容分享给局域网中的其他人。

Zim 是构建于 Web Recorder 项目愿景之上的网页存档格式,可将网站的全部内容整合并压缩为便于离线分享和存储的单一文件中。 Kiwix 项目使用该格式,将部分教育类资源站点保存下来,供没有网络或者网络不畅的社区或个人使用,实现知识的共享。其特点有:

搭建并配置 Kiwix-Serve

Kiwix 的桌面版阅读器都内建了服务器功能,可将当前正在加载的 Zim 生成一个本地站点,使得同一局域网内的用户可以直接使用浏览器访问而无需任何额外工具。Kiwix-Serve 则是将这一部分功能独立分发的服务器端工具,非常适合在学校或者家庭网络内供多人分享。这里简述其配置过程:

  1. 首先从 Kiwix 网站上下载 Kiwix-Serve 工具包,这里以适用于 ARMv7 Linux 的版本为例。
  2. 将其压缩包内的四个文件安装至系统目录,譬如 sudo install -Z kiwix-* /usr/local/bin/
  3. 使用 kiwix-manage 创建对应的资料库管理文件,譬如 kiwix-manage library.xml add wikipedia_zh_all_maxi_2022-03.zim
  4. 之后便可以使用 kiwix-serve 启动服务,譬如 kiwix-serve --library library.xml --port 9000,端口号这里使用了 9000,也可以换成其它的;
  5. 然后在客户端的浏览器里就可以使用运行 kiwix-serve 的 IP 或者域名加端口号的方式浏览内容了,无需任何扩展或者阅读器。

如果需要设置成系统服务的话,这里提供一个 systemd unit 的模板作为参考:

[Unit]
Description=kiwix-serve Service
Wants=network-online.target
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=3
WorkingDirectory=/var/lib/kiwix/
ExecStart=/usr/local/bin/kiwix-serve --library /var/lib/kiwix/library.xml --port 9000
StandardOutput=journal
StandardError=null

# Hardening
DynamicUser=true
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

这里使用的一些 systemd 提供的安全强化措施,减少由于 kiwix-serve 本身潜在安全漏洞对于系统整体的影响。

适用于各种 Linux 发行版的 Flatpak 安装包 适用于 Android 平台 APK 直接下载(F-Droid 版本较老,无法用于新版 Android 系统)

Read More: