使用 Docker 部署 TaleBook 私人书籍管理系统
1)项目介绍
GitHub:https://github.com/talebook/talebook
Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建,具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。
友情提醒: 个人是不允许进行在线出版的,维护公开的书籍网站是违法违规的行为!建议仅作为个人使用!
2)功能特色
3)项目截图
4)项目部署
4.1)安装 Docker 软件
# 高版本 Docker 安装
curl -fsSL https://get.docker.com/ | sh
# 关闭防火墙
systemctl disable --now firewalld
setenforce 0
# 启用 Docker
systemctl enable --now docker
4.2)检查 Docker 服务
systemctl status docker
4.3)开启 IPv4 forwarding
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
systemctl restart network
sysctl net.ipv4.ip_forward
5)安装 Docker-compose
5.1)下载 Docker-Compose 软件包
curl -L https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
5.2)Docker-Compose 增加执行权限
chmod +x /usr/local/bin/docker-compose
5.3)检查 Docker-Compose 版本
docker-compose -v
6)在线部署
6.1)创建目录
mkdir /docker/talebook -p;cd /docker/talebook
6.2)启用容器
docker run -d --name talebook -p 8080:80 -v /docker/talebook:/data talebook/talebook
6.3)验证容器
docker ps -a
7)访问验证
使用浏览器访问 TaleBook 前台 http://服务器IP地址:8080
首次打开有个配置界面,上面的用户名,密码,管理员邮箱都可以任意设置,为了更安全,我们这里务必 “开启私人图书馆模式”。访问码便是我们之后打开后台的密码。
这里输入我们上步设置的 访问码
OK,正式进入后台界面了。点击右上角的 “请登录”
输入前面创建的账号和密码就可以正式使用了!
8)使用体验
8.1)导入本地书籍
如果只是导入单本书籍很简单,直接点击 右下角的箭头,然后直接上传即可。
导入多本书也很简单,点击左侧状态栏的 “导入图书”
可以看到导入说明:直接将我们存放在本地的所有图书直接拖到服务器 的 /docker/talebook/books/imports 文件夹即可。
如图便是我将本地的图书直接拖到了 服务器上的指定文件夹
这个文件夹( imports )其实是 TaleBook 容器自动创建的。
拖过来之后回到 “导入图书” 这里,然后点击 “扫描书籍”
稍等一会就能显示我们导入的所有图书了。
然后勾选最上面的小方框全选,点击 “导入全部书籍”。
OK!搞定!因为我保存的书籍书名都非常的规范,可以看到刮削的还不错,全部都显示了正确的封面。
8.2)手动书籍信息刮削
看了一下,还是有部分“漏网之鱼”没有刮削到,直接点进来之后在右上角点击 **"管理 **— 从互联网更新信息"
看到显示的信息之后,点击
"设置书籍信息及图片"
如果书名或者作者不对,需要选择 “编辑书籍信息” 更改
8.3)观看体验
好了,以上就是今天给大家分享的内容,如果今天的内容对你有帮助请记得收藏,顺便点点关注,我会经常给大家分享各类有意思的开源项目和免费干货,咱们下期再见!谢谢大家~
参考:使用 NAS 的 Docker 搭建本地图书管理系统
相关文章:

使用 Docker 部署 TaleBook 私人书籍管理系统
1)项目介绍 GitHub:https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建,具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。 友情提醒&#x…...
分布式系统的一致性与共识算法(一)
前言 etcd是线性一致性读,而zk却是顺序一致性读,再加上各种共识、强弱一致的名词,看到欸度时候总会混淆,这里会给出一些例子来帮助理解。 什么是一致性? 在谈到一致性这个词时,你会想到CAP理论的consist…...

创建一个Spring Boot项目
文章目录 一、如何创建一个Spring Boot项目1.1 项目创建:专业版 or 社区版 or 网站创建1.2 数据配置1.3 项目启动1.4 代码编写 二、Spring Boot 项目文件介绍三、Web服务器四、根据HTTP状态码解决bug4.1 4044.2 500 五、Spring VS Spring Boot VS Spring Web MVC5.1…...

ansible -playbook运维工具、语法、数据结构、命令用法、触发器、角色
目录 配置文件 基本语法规则: YAML支持的数据结构 playbook核心元素 ansible-playbook用法: 触发器 特点: 角色: 习题: 配置文件 playbook配置文件使用yaml语法,YAML 是一门标记性语言,专门用来写配…...

web前端之sass中的颜色函数、active按钮激活、hover鼠标悬浮、disabled禁用、scss循环、css
MENU 效果图htmlsassscss编译后的css页面css 效果图 注意查看蓝色按钮。 html <div class"box"><button class"btn type_1">按钮</button><button class"btn type_2">按钮</button><button class"btn ty…...

交通地理信息系统实习教程(二)
这篇文章服务于GIS背景用户以及有志于GIS的朋友 操作源数据位置:【免费】交通地理信息系统实习二源数据资源-CSDN文库 软件安装包位置:【免费】TransCad-交通地理信息系统软件资源-CSDN文库 一、最短路径分析 1.1软件启动说明 这里需要给出一个必要的…...
Shell脚本——批量清理Kubernetes集群中Evicted状态的pod
测试环境有一台宿主机出现了异常,大量的异常日志导致宿主机的磁盘使用率超过了85%,触发了上面的pod驱离策略,该宿主机上的的pod处于Evicted状态。在清理了磁盘之后,得手动处理掉这些Evicted状态的pod。 #!/bin/bash# 获取当前状态…...

(深度估计学习)Win11复现DepthFM
目录 1. 系统配置2. 拉取代码,配置环境3.开始深度预测4.运行结果 论文链接:https://depthfm.github.io/ 讲解链接:https://www.php.cn/faq/734404.html 1. 系统配置 本人系统:Win11 CUDA12.2 python3.11.5 这里附上几个CUDA安装链…...
cocos creator 帧率60 不生效meta50 能刷新到90
环境: cocos creator 2.4.3 华为meta 50 背景: 小游戏 需要在update 里取帧率 发现跟时间对不上 游戏设置60帧 手机上显示 90帧 cc.game.setFrameRate(30) 显示 30帧 cc.game.setFrameRate(60) 显示 90帧 结论: 对于老版本的cocos creator …...

探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction
(1)在 STL 库源码中这俩模板经常出现,用来给源码编译中的条件选择,模板的版本选择等提供依据。先给出其定义: 以及: 可以得出结论: conj 是为了查找逻辑布尔型模板参数中的第一个 false &#x…...

【核弹】我的第一款IDEA插件
SuperHotSwap 插件名称叫做:SuperHotSwap(超级热更新) 开发初心:旨在做出一款最便捷的IDEA热更新插件,减少用户操作步骤,提供零配置的可视化操作更新。 为什么要写这个插件: 每次改一下Mappe…...

【工作篇】软件工程师的知识基础(持续更新)
目录 1. linux 知识篇 1. linux 知识篇 1. Linux API 是什么 Linux API 是指 Linux 操作系统 提供的应用程序接口,用于与操作系统进行交互。它包含了一系列的函数、系统调用、库函数和数据结构,用于实现各种系统级的操作,如文件操作、进程…...
知识付费系统开源方案,教育机构如何利用朋友圈做转介绍?
招生成本高,效果差让许多教育机构头疼不已。对于教育机构来说通过转介绍招生是一个非常有效的途径,那么教育机构如何利用朋友圈做转介绍呢?今天小编就来和大家分享一下。 利用朋友圈做转介绍,主要是通过做活动,来完成增加粉丝、扩…...
c++20 std::reinterpret_cast、std::bit_cast、std::static_cast
std::reinterpret_cast 类型不相关的转换,不安全例如转为&,不支持,要求sizeof相同: uint32_t n32 12345678;//0x00bc614e uint32_t* ptr reinterpret_cast<uint32_t*>(n32);//0x00bc614e uint32_t& ref reinter…...

PHP单独项目启动演示
文章目录 phpstudy得到文件打开phpStudy.exe运行项目 Apache运行后又自动停止 phpstudy 得到文件 一般我们会得到这么一个项目文件,如果外层有“中文路径”,请剪切此内容作为项目根目录即可 打开phpStudy.exe 因为我又正常的编程环境和mysql&#x…...

vscode 通过ssh 远程执行ipynb +可以切换conda env
主要是保证几个点 远程服务器python 环境没问题 conda这些也都有的ssh的账户 是有conda权限的没有免密就输入密码 免密教程就是最基本的那种 公钥copy过去就行了vscode 那几个插件都要装好 开始操作 首先 vscode 点击左侧工具栏中的扩展,搜索“ssh”,…...

ASP.NET银行大厅自助信息系统的开发与实现
摘 要 本毕业设计在基于银行业务大厅现有业务的基础上,针对自助银行的概念和其独有特点,通过.NETSQL技术,开发一个简单的银行大厅自助信息系统,完成一些自助银行的业务需求如帐户信息查询、帐户挂失、自助交费、留言、新闻查询…...
学习Vue3中reactive
学习Vue3中reactive 一、前言1、响应式对象2、对象属性的访问3、嵌套响应式对象4、避免直接修改响应式对象5、ref vs reactive 一、前言 在 Vue 3 中,reactive 是一个用于创建响应式对象的函数。响应式对象是 Vue 3 中数据驱动视图的核心,它们的属性的变…...

【Transformer-BEV编码(10)】CVPR2021 PYVA 第一个明确提到 cross-attention decoder可用于视图转BEV
论文信息 论文名:Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation 中文:通过交叉视图变换(crossview transform module)估计单目道路场景布局 数据集:KITT…...

nestJs中跨库查询
app.module.ts中配置 模块的module中 注意实体类在写的时候和数据库中的表名一样 service中使用一下...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...