离线维基百科阅读器Kiwix Serve

news2025/7/29 21:13:17

在这里插入图片描述

本文软件是网友 刘源 推荐的,因为他已经安装成功了,所以老苏拖拖拉拉的就从去年拖到了现在; 😂

什么是 Kiwix ?

Kiwix 是一个用于浏览离线内容的自由开源浏览器,最初用于离线浏览维基百科。Kiwix 可以读取以压缩形式存储在 ZIM 格式文件中的内容,使用户能够在没有网络连接的情况下浏览维基百科及其他支持的内容。目前,Kiwix 软件存在 macOSWindowsLinux等多种版本。

什么是 Kiwix-serve ?

Kiwix Serve 是一个 Zim 文件兼容的网络服务器。它允许您在本地网络中通过 HTTP 协议传送 .zim 文件。

什么是 Zim ?

Zim 是构建于 Web Recorder 项目愿景之上的网页存档格式,可将网站的全部内容整合并压缩为便于离线分享和存储的单一文件中。

所以你可以使用 Zim格式,将部分教育类资源站点保存下来,供没有网络或者网络不畅的社区或个人使用,实现知识的共享。

准备

需要说明的是,Kiwix Serve 支持通过环境变量设置远程下载,考虑到不同的网络环境,老苏还是建议先下载到本地

需要先准备好 zim 文件,如果容器在启动时找不到文件,会导致容器启动失败

为了演示,老苏在这里 https://download.kiwix.org/zim/wikipedia/?C=S;O=D 下载了一个最小的 wikipedia_zh_chemistry_mini_2022-12.zim,大约 18M

在这里插入图片描述

看名字是中文的化学,具体内容只有安装完成才知道

安装

在群晖上以 Docker 方式安装。

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

本文写作时, latest 版本对应为 3.4.0

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 kiwixserve,并在其中建一个个子文件夹 data,并将下载好的 .zim 文件放入 data 目录

在这里插入图片描述

文件夹装载路径说明
docker/kiwixserve/data/data存放 zim 文件

在这里插入图片描述

端口

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

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
50588080

默认是这样的

在这里插入图片描述

老苏删掉了 80 端口

在这里插入图片描述

环境

可变
DOWNLOAD远程 zim 文件地址

例如:-e DOWNLOAD=https://download.kiwix.org/zim/wikipedia/wikipedia_zh_chemistry_mini_2022-11.zim,设置了的话,会自己下载

在这里插入图片描述

老苏没有用到环境变量,但是命令行需要输入 *.zim,这很重要,是告诉容器搜索数据目录中的所有 ZIM 文件

命令行只有第一次生效,如果忘了只能删了重新来过;

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 kiwixserve 和 子目录
mkdir -p /volume2/docker/kiwixserve/data

# 在 data 中拷入 zim 文件
# 【注意】:如果没有 zim 文件会导致容器无法启动

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

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name kiwixserve \
   -p 5058:8080 \
   -v $(pwd)/data:/data \
   kiwix/kiwix-serve \
   *.zim

# 运行容器(带自动下载的示例)
docker run -d \
   --restart unless-stopped \
   --name kiwixserve \
   -p 5058:8080 \
   -v $(pwd)/data:/data \
   -e DOWNLOAD=https://download.kiwix.org/zim/wikipedia/wikipedia_zh_chemistry_mini_2022-11.zim
   kiwix/kiwix-serve \
   *.zim

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

version: '3'

services:
  kiwixserve:
    image: kiwix/kiwix-serve
    container_name: kiwixserve
    restart: unless-stopped
    ports:
      - 5058:8080
    volumes:
      - ./data:/data
    command: '*.zim'

然后执行下面的命令

# 新建文件夹 kiwixserve 和 子目录
mkdir -p /volume2/docker/kiwixserve/data

# 在 data 中拷入 zim 文件
# 【注意】:如果没有 zim 文件会导致容器无法启动

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

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

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5058 就能看到主界面

在这里插入图片描述

点开 化学维基百科

在这里插入图片描述

随便打开一个

在这里插入图片描述

也可以搜索,比如搜 二氧化碳

在这里插入图片描述

是不是发现和我们之前搭建的 Flask-MDict 异曲同工?

文章传送门:Flask-MDict搭建在线Mdict词典服务

参考文档

Index of /zim/wikipedia
地址:https://download.kiwix.org/zim/wikipedia/?C=S;O=D

Index of /zim
地址:https://download.kiwix.org/zim/

kiwix/kiwix-tools: Command line Kiwix tools: kiwix-serve, kiwix-manage, …
地址:https://github.com/kiwix/kiwix-tools

Kiwix-serve - Kiwix
地址:https://wiki.kiwix.org/wiki/Kiwix-serve

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[神经网络]基干网络之VGG、ShuffleNet

一、VGG VGG是传统神经网络堆叠能达到的极限深度。 VGG分为VGG16和VGG19,其均有以下特点: ①按2x2的Pooling层,网络可以分成若干段 ②每段之内由若干same卷积操作构成,段内Feature Map数量固定不变; ③Feature Map按2的…

对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)

目录 一、总述 二、登录页面测试 一些准备工作 验证页面显示是否正确 验证正常登录的情况 该过程中出现的问题 验证登录失败的情况 关于登录界面的总代码 测试视频 三、注册界面的自动化测试 测试代码 过程中出现的bug 测试视频 四、博客列表页测试(…

【Leedcode】数据结构中链表必备的面试题(第四期)

【Leedcode】数据结构中链表必备的面试题(第四期) 文章目录【Leedcode】数据结构中链表必备的面试题(第四期)1.题目2.思路图解(1)思路一(2)思路二3.源代码总结1.题目 相交链表: 如下(示例)&…

小白福利!我开发了一个快速部署库

1、开发背景 很多入门的同学,在跟着视频敲完代码之后,在打包出来的产物犯了难 如果是 hash 路由,要么使用后端部署,要么使用 github 或者 gitee 提供的静态部署服务如果是 history 路由,那只能使用后端框架进行部署&a…

内网渗透(五十三)之域控安全和跨域攻击-利用域信任密钥获取目标域控

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

前端学习日记——Vue之Vuex初识(一)

前言 学习前端一段时间了,因为一直是做Python开发,所以凭借着语言的通性学习Javascript、Vue轻快很多,但一些碎片化的知识及插件的使用方法还是需要记录一下,时而复习,形成系统化的知识体系(PS:…

【Linux线程池】

Linux线程池Linux线程池线程池的概念线程池的优点线程池的应用场景线程池的实现Linux线程池 线程池的概念 线程池是一种线程使用模式。 线程过多会带来调度开销,进而影响缓存局部和整体性能,而线程池维护着多个线程,等待着监督管理者分配可并…

JavaScript if…else 语句

条件语句用于基于不同的条件来执行不同的动作。条件语句通常在写代码时,您总是需要为不同的决定来执行不同的动作。您可以在代码中使用条件语句来完成该任务。在 JavaScript 中,我们可使用以下条件语句:if 语句 - 只有当指定条件为 true 时&a…

【企业云端全栈开发实践-3】Spring Boot文件上传服务+拦截器

本节目录一、静态资源访问二、文件上传原理三、拦截器3.1 拦截器定义代码3.2 拦截器注册一、静态资源访问 使用IDEA创建Spring Boot项目时,会默认创建classpath://static/目录,静态资源一般放在这个目录下即可。 如果默认的静态资源过滤策略不能满足开…

做独立开发者,能在AppStore赚到多少钱?

成为一名独立开发者,不用朝九晚五的上班,开发自己感兴趣的产品,在AppStore里赚美金,这可能是很多程序员的梦想,今天就来盘一盘,这个梦想实现的概率有多少。 先来了解一些数据: 2022年5月26日&am…

目标跟踪系列总结

目标跟踪算法: sort算法: sort算法流程图 关联成功的检测box与追踪box处理:使用检测的box对追踪结果进行KalmanFilter权重以及参数更新,同时记录关联追踪box的计数次数; 未关联成功的box处理:对检测的box进行KalmanF…

C++【内存管理】

文章目录C内存管理一、C/C内存分布1.1.C/C内存区域划分图解:1.2.根据代码进行内存区域分析二、C内存管理方式2.1.new/delete操作内置类型2.2.new和delete操作自定义类型三、operator new与operator delete函数四、new和delete的实现原理4.1.内置类型4.2.自定义类型4…

如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响

SCI的写作和发表是科研人提升自身实力和实现自己价值的必要途径。“如何利用有限的数据发表更多的SCI论文?”是我们需要解决的关键问题。软件应用只是过程和手段,理解事件之间的内在逻辑和寻找事物之间的内在规律才是目的。如何利用有限的数据发表更多的…

互联网企业如何进行数字化转型?业务需求迭代频繁的应对之策!

互联网行业作为我国数字经济发展“四化”框架中生产力主要组成部分,是国家数字化转型的主要推动者之一。为此,相对于其他传统行业来说,互联网行业企业数字化转型的紧迫程度更高,如果不数字化转型或者转型不成功,会有更…

ArcGIS制作地形分析

ArcGIS制作地形分析的方法解析 树谷资料库资源大全(2月9日更新) 在地形变化较大的建筑、景观、城市设计项目中,高程、坡度、坡向分析是非常重要的,而在这几类分析中,ArcGIS软件可以比较方便的完成相关分析的制作。今…

OAuth2.0入门

什么是OAuth2.0 OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或…

HTML基础(3)

HTML基础单选框、复选框、下拉框文本框< script >标签属性< script >基本使用单选框、复选框、下拉框 文本框 < script >标签属性 type属性定义script元素包含或src引用的脚本语言。属性值是MIME类型&#xff0c;包括text/javascript,text/ecmascript, appl…

SpringBoot2零基础到项目实战-基础篇

SSM内容01-SpringBoot工程入门案例开发步骤SpringBoot 是 Pivotal 团队提供的全新框架&#xff0c;设计目的是简化 Spring 应用的初始搭建以及开发过程。使用了 Spring 框架后已经简化了我们的开发。而 SpringBoot 又是对 Spring 开发进行简化的&#xff0c;可想而知 SpringBoo…

使用DQN进行价格管理

文章目录前言一、不同的价格响应二、利用DQN优化定价策略1.定义环境2.DQN算法概述3.Algorithm: Deep Q Network (DQN)总结强化学习-定价、决策前言 供应链和价格管理是企业运营中最早采用数据科学和组合优化方法的领域&#xff0c;并且在使用这些技术方面有着悠久的历史&#…

RabbitMQ 实现延迟队列

业务场景&#xff1a;1.生成订单30分钟未支付&#xff0c;则自动取消&#xff0c;我们该怎么实现呢&#xff1f;2.生成订单60秒后,给用户发短信1 安装rabbitMqwindows安装ubuntu中安装2 添加maven依赖<!-- https://mvnrepository.com/artifact/org.springframework.boot/spr…