当前位置: 首页 > 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数据…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...