当前位置: 首页 > news >正文

【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)

文章目录

    • 一、Calibre-Web和Calibre的区别是什么?使用场景分别是什么?
    • 二、服务器安装docker和docker-compose
    • 三、服务器安装Calibre-Web步骤
      • 1、安装完成后的目录结构
      • 2、安装步骤
      • 3、初始配置
      • 4、启动上传
    • 四、安装Calibre
    • 五、docker-compose常用命令
    • 六、客户端
      • 1、ios在appstore搜“kybook”
      • 2、安卓下载 静读天下app(注意不要在应用商店下载,貌似googleplay有)

最近想用自己的迷你主机搭建一个个人图书馆,方便自己看小说和教学类的电子书。

所以在服务器上安装了Calibre-Web,在自己的笔记本和台式机上安装了Calibre。

一、Calibre-Web和Calibre的区别是什么?使用场景分别是什么?

Calibre:

  • 功能完整的桌面应用程序
  • 重点在于电子书的管理和处理
  • 独立运行的本地软件

Calibre-Web:

  • 基于Web的在线图书馆系统
  • 重点在于图书的展示和阅读
  • 需要服务器部署的网页应用

主要功能对比

功能CalibreCalibre-Web
图书管理✅ 完整强大⭕️ 基础管理
元数据编辑✅ 专业完整⭕️ 基础编辑
格式转换✅ 支持多种格式❌ 需依赖Calibre
在线阅读❌ 不支持✅ 支持
多用户支持❌ 单用户✅ 多用户系统
远程访问❌ 本地使用✅ 随处访问

Calibre 和 Calibre-Web 是互补的工具:

  • Calibre 专注于管理和处理
  • Calibre-Web 专注于展示和阅读

最理想的方案是:

  • 用 Calibre 做后台管理
  • 用 Calibre-Web 做前台展示
  • 两者结合获得最佳体验

二、服务器安装docker和docker-compose

想到小伙伴们的服务器系统可能都不同,所以花了一天的时间认真整理了docker的安装步骤,这里就不再赘述啦~

点击这篇博客(虚拟机分别安装了Ubuntu、CentOS、Debian等系统的docker、docker-compose的操作步骤)

题外废话:真喜欢docker呀!真的很方便!很适合懒人!

三、服务器安装Calibre-Web步骤

1、安装完成后的目录结构

/data/calibre/
├── docker-compose.yml    # 配置文件
├── config/               # Calibre-Web配置目录
│   ├── app.db           # 应用数据库
│   ├── calibre-web.log  # 日志文件
│   └── config.json      # 配置文件
├── books/               # 图书库目录
│   ├── metadata.db    # 数据库文件,这个文件必须存在
│   └── [作者名]/[书名]  # 图书文件
└── upload/              # 上传目录

image-20241205111137181

2、安装步骤

  1. 创建必要的目录
# 创建主目录
mkdir -p /data/calibre# 创建子目录
mkdir -p /data/calibre/{config,books,upload}# 进入calibre目录
cd /data/calibre# 使用普通用户权限
sudo chown -R 1000:1000 /data/calibre/{config,books,upload}
chmod -R 755 config books upload

image-20241205111027893

  1. 创建 docker-compose.yml 文件
nano docker-compose.yml
  1. 粘贴以下内容

    为避免空格等格式问题,也可以点击这里直接下载,扔到目录中

version: '3'
services:calibre-web:# 官方下载失败可以使用可用的镜像dockerpull.org# dockerpull.org/linuxserver/calibre-web:latest# 24年11月整理了20来个可用的镜像网站且用且珍惜#	https://download.csdn.net/download/mudarn/90051682# 官方镜像image: linuxserver/calibre-web:latestcontainer_name: calibre-webenvironment:# 使用普通用户权限,避免安全问题- PUID=1000- PGID=1000# 设置时区为上海- TZ=Asia/Shanghai# 安装完整的Calibre,支持格式转换等功能# dockerpull.org/linuxserver/mods:universal-calibre# 使用本地 Calibre 管理 -> 可以不需要 DOCKER_MODS#- DOCKER_MODS=linuxserver/mods:universal-calibreports:# Web访问端口- "7089:8083"volumes:# 配置文件目录- ./config:/config# 图书库目录,存放所有图书和数据库- ./books:/books# 上传目录,用于本地Calibre同步上传- ./upload:/upload# 容器重启策略restart: always# 使用bridge网络,保持网络隔离networks:- calibre-net
networks:calibre-net:driver: bridge
  1. 保存和退出

    ctrl+o(字母)保存
    回车
    ctrl+x退出文件
    
  2. 提前准备数据库文件

    # 下载初始数据库文件
    wget https://raw.githubusercontent.com/janeczku/calibre-web/master/library/metadata.db -O books/metadata.db# 设置权限,所有者和所属组更改为 UID 和 GID 为 1000 的用户和组。
    sudo chown 1000:1000 books/metadata.db# 设置权限 644,即文件所有者可以读取和写入,所属组和其他用户只能读取。
    sudo chmod 644 books/metadata.db
    

    image-20241205134738076

  3. 启动

# 启动
docker-compose up -d# 查看日志
docker-compose logs -f#日后维护常用命令
# 查看容器状态
docker-compose ps# 重启服务
docker-compose restart# 更新镜像
docker-compose pull && docker-compose up -d# 查看资源使用
docker stats calibre-web# 清理并重建
docker-compose down --rmi all && docker-compose up -d

image-20241205131956599

启动成功

image-20241205133526570

3、初始配置

  • 访问地址:http://服务器IP:7089

  • 默认账号:admin

  • 默认密码:admin123

    image-20241205133620926

  • 首次登录配置:

    设置图书库路径为:/books

    image-20241205135102569

    更改中文和修改默认密码

    image-20241205141457223

    如果language中没有选项,可以在/data/calibre/config目录下,加一个配置文件再重启

image-20241205141900822

cd /data/calibre/config
nano config.json

粘贴以下

{"language": "zh-CN"  // 添加或修改为中文简体
}

保存和退出

ctrl+o(字母)保存
回车
ctrl+x退出文件

也可以直接点这里下载json文件

重启

cd /data/calibre
docker-compose restart

image-20241205142236869

4、启动上传

管理权限–编辑基本配置–功能配置–启动上传

image-20241205162623536

image-20241205162644995
在这里插入图片描述

四、安装Calibre

整理中后期补充

五、docker-compose常用命令

点击这里查看整理好的博客文章

六、客户端

1、ios在appstore搜“kybook”

image-20241206090123121

(1)

image-20241206090202822

(2)

image-20241206090226156

(3)

image-20241206090243047

(4)输入自己的 web地址/opds,键盘点搜索,用户名密码就是web登陆的用户名密码
image-20241206090321099

(5)

image-20241206090407957

(6)

image-20241206090428259

2、安卓下载 静读天下app(注意不要在应用商店下载,貌似googleplay有)

我是在这个博主这里下载的,点击这里

设置方法:

app左上角的图标(三横杠)–网上书库–app左上角的图标(三个点)—增加新书库

输入自己的 web地址/opds

用户名密码就是web登陆的用户名密码

image-20241206091136478

image-20241206091119228

相关文章:

【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)

文章目录 一、Calibre-Web和Calibre的区别是什么?使用场景分别是什么?二、服务器安装docker和docker-compose三、服务器安装Calibre-Web步骤1、安装完成后的目录结构2、安装步骤3、初始配置4、启动上传 四、安装Calibre五、docker-compose常用命令六、客…...

服务器数据恢复—服务器raid0阵列硬盘指示灯显示黄颜色的数据恢复案例

服务器数据恢复环境&故障情况: 某品牌服务器上有一组由两块SAS硬盘组建的raid0阵列,上层是windows server操作系统ntfs文件系统。服务器上一个硬盘指示灯显示黄颜色,该指示灯对应的硬盘离线,raid不可用。 服务器数据恢复过程…...

.nii.gz文件读取方式

".nii.gz"文件的介绍: ".nii.gz"文件是一种常见的用于存储神经影像数据的格式,它通常包含了三维或四维的图像体素数据,以及与磁共振扫描相关的一些重要元数据,比如扫描参数、特征描述等等。而".nii"表示未经压…...

Kube-Prometheus-Stack安装时初始化导入自定义Grafana dashboards

获取Grafana dashboards的JSON文件 这里是获取已经编辑好的Grafana dashboards的JSON文件;以便内置到Kube-Prometheus-Stack的helm charts的安装zip文件中。 编辑自定义dashboards JSON文件 获取dashboards JSON文件模板 其实Kube-Prometheus-Stack内部本身已经内…...

【SNIP】《An Analysis of Scale Invariance in Object Detection – SNIP》

CVPR-2018 Singh B, Davis L S. An analysis of scale invariance in object detection snip[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 3578-3587. https://github.com/bharatsingh430/snip?tabreadme-ov-file 文章目录 …...

JAVA基础学习笔记_异常

文章目录 异常异常的作用处理异常的方式异常中的常见方法捕获异常自定义异常 异常 应该知道出了异常怎么处理 java.lang.Throwable Error(错误,硬件出错或内存不足,不是程序员能解决的) Exception(异常) RuntimeException(运行时异常),代码出错导致程序出现的问题 其他异…...

Modern Effective C++条款三十四:考虑lambda而非std::bind

C11中的std::bind是C98的std::bind1st和std::bind2nd的后续,C11 lambda几乎总是比std::bind更好的选择。 从C14开始,lambda的作用不仅强大,而且是完全值得使用的。与item32中一样,我们将从std::bind返回的函数对象称为bind对象(bi…...

lyapunov指数的绘制

有如下方程: %% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)绘制其对应的lyapunov指数。 MATLAB实现方式: clc; clearvars; close all;%% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)%% 代码 N 1000; a (0:0.001:1.4); b 0.3; na length(a…...

Ansible 运维工具

安装 apt install ansible /etc/ansible/hosts , 指定密码或密钥访问分组机器 [k8s_masters] master0.c0.k8s.sb[k8s_nodes] node0.c0.k8s.sb node1.c0.k8s.sb[k8s:children] k8s_masters k8s_nodes[k8s_masters:vars] ansible_ssh_usersbadmin ansible_ssh_pass"***&q…...

【AI系统】MobileNet 系列

MobileNet 系列 在本文会介绍 MobileNet 系列,重点在于其模型结构的轻量化设计,主要介绍详细的轻量化设计原则,基于这原则,MobileNetV1 是如何设计成一个小型,低延迟,低功耗的参数化模型,可以满…...

MATLAB在生态环境数据处理与分析中的应用

专题一 MATLAB编程入门 要点:介绍、案例演示、软件界面、语法基础、基本运算等 专题二(试听) MATLAB编程入门 要点:脚本编写、函数调用、循环控制、代码调试、文件读写等 专题三 MATLAB可视化与绘图 要点:交互式…...

tensorrt

engine /*tensorrt创建builder1. 创建builder2. 创建网络定义:builder-->network3. 配置参数:builder-->config4. 生成engine:builder-->engine()5. 序列化保存:engine-->serialize6. 释放资源:delete */ #include&l…...

利用Grounding DINO进行自动标注——目标检测任务——YOLO格式

关于Grounding DINO的环境搭建可以参考我的以前的博客,链接如下所示 如何在Linux上离线部署Grounding DINO-CSDN博客 这个博客主要来介绍如何利用Grounding DINO这个项目去进行目标检测的自动化标注。并且给出了相关的代码已经实验验证。 1.数据集准备 2. 开始实…...

网际协议(IP)与其三大配套协议(ARP、ICMP、IGMP)

网际协议(Internet Protocol,IP),又称互联网协议。是OSI中的网络层通信协议,用于跨网络边界分组交换。它的路由功能实现了互联互通,并从本质上建立了互联网。网际协议IP是 TCP/IP 体系中两个最主要的协议之…...

uniapp 添加loading

在uniapp中添加loading可以使用uni的API uni.showLoading 方法。以下是一个简单的示例代码 // 显示loading uni.showLoading({title: 加载中 });// 假设这里是异步操作,比如网络请求 setTimeout(function () {// 隐藏loadinguni.hideLoading(); }, 2000);...

cocotb pytest

打印python中的print , 应该使用 pytest -s pytest --junitxmltest_report.xml --htmlreport.html...

docker run 设置启动命令

在使用 docker run 命令时,你可以通过指定启动命令来覆盖 Docker 镜像中的默认入口点或命令。具体来说,你可以通过以下两种方式来设置启动命令: 覆盖 CMD: 你可以通过在 docker run 命令的最后部分提供命令来覆盖镜像的默认 CMD 指…...

docker入门 自记录

1.先自己下载离线bao .tar 或者 自己pull docker pull xxx 如果遇到网络问题就换源 2.之后run一个docker 后面是映射本地路径 sudo docker run -it --name ultralytics_241124 --gpus all --shm-size 8G -v /home/oppenheim/detect/train241204/docker:/home/docker ultralyti…...

css实现圆周运动效果

在CSS中可以通过 keyframes 动画 和 transform 属性实现元素的圆周运动。以下是一个示例代码&#xff1a; 示例代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content…...

【NoSQL数据库】MongoDB数据库——集合和文档的基本操作(创建、删除、更新、查询)

目录 一、MongoDB数据库原理 二、MongoDB数据库和集合基本操作&#xff08;增删改查&#xff09; 三、MongoDB数据库的文档基本操作&#xff08;增删改&#xff09; 四、学习笔记 往期文章&#xff1a;【NoSQL数据库】MongoDB数据库的安装与卸载-CSDN博客 一、MongoDB数据…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...