免费开源的Koodo Reader:轻松管理电子书并实现远程访问

文章目录

    • 前言
    • 1. Koodo Reader 功能特点
      • 1.1 开源免费
      • 1.2 支持众多格式
      • 1.3 多平台兼容
      • 1.4 多端数据备份同步
      • 1.5 多功能阅读体验
      • 1.6 界面简洁直观
    • 2. Koodo Reader安装流程
      • 2.1 安装Git
      • 2.2 安装Node.js
      • 2.3 下载koodo reader
    • 3. 安装Cpolar内网穿透
      • 3.1 配置公网地址
      • 3.2 配置固定公网地址

前言

本文将介绍如何在Windows系统上本地部署Koodo Reader电子书阅读器,并结合cpolar内网穿透工具实现对本地电子书的远程访问,无需公网IP,也不必繁琐地设置路由器。

Koodo Reader是一款免费开源的桌面电子书阅读器,提供了丰富的功能,如内置笔记、高亮和翻译等,适合热爱阅读和学习的用户。如果你经常需要查阅电子书或相关文档,这款软件绝对不容错过。对于热爱阅读的人来说,Koodo Reader是一个值得尝试的选择,快来下载安装,开启高效便捷的电子书阅读体验吧!

Untitled

1. Koodo Reader 功能特点

1.1 开源免费

Koodo Reader软件在Github上开源,拥有13.6K的star数,免费又好用

Untitled

1.2 支持众多格式

Koodo Reader支持常见的电子书格式,包括EPUB、PDF、MOBI等十几种格式,满足用户在不同平台和设备上的阅读需求。你可以从网上获取到的电子书采用Koodo Reader进行浏览和阅读,无论您是想读小说、教材、论文还是漫画,Koodo Reader都能满足您的需求,再也不用担心格式兼容问题。

Untitled

1.3 多平台兼容

Koodo Reader在多个操作系统上运行良好。它支持Windows 7及以上的32位和64位系统,macOS 10.11及以上的x64和ARM架构系统,以及所有的Linux发行版。此外,您还可以选择使用Web网页版来阅读电子书。无论您使用的是哪种操作系统,Koodo Reader都能为您提供出色的阅读体验。

chrome_ILJTy9115S.png

1.4 多端数据备份同步

Koodo Reader非常注重数据的安全性和同步性。您可以通过自定义数据存储位置的方式,借助OneDrive、iCloud、Dropbox、百度网盘等云服务,实现数据在多个端之间的同步。这样,无论您在哪个设备上阅读,您的阅读进度、笔记和批注都能够随时随地同步。

chrome_534BowxVYC.png

1.5 多功能阅读体验

Koodo Reader内置了笔记、高亮、书签和翻译等功能,助力您进行高效的书籍阅读和学习。您可以轻松地进行标注和批注,并将关键内容快速保存和导出。这些功能将帮助您更好地理解和消化所阅读的内容。

Koodo Reader还支持文字排版,支持调整字体大小、字体系列、行距、段落间距、背景颜色、文本颜色、边距和亮度等功能。使长篇文档在移动设备上也能保持清晰的排版,避免了频繁的滚动和缩放。

Untitled

1.6 界面简洁直观

Koodo Reader 遵循极简主义设计原则,通过精心打磨的UI界面和交互方式让您享受沉浸式无干扰的阅读体验

2. Koodo Reader安装流程

2.1 安装Git

首先从github上克隆koodo reader(如果没有安装git的话,进入git官网进行下载windows版本 https://git-scm.com/downloads)Git下载网址:Git (git-scm.com)

image-20240809115335365

image-20240809135150250

以下操作可以一直按Next默认安装,如有需要改动可以自行更改。

image-20240809135258755

image-20240809135312571

image-20240809135721992

Git安装成功。

2.2 安装Node.js

node.js官网地址:https://nodejs.org/zh-cn

image-20240809134424112

以下操作可以一直按Next默认安装,如有需要改动可以自行更改。

image-20240809134717317

image-20240809134754652

image-20240809134925260

Node安装完成。

2.3 下载koodo reader

回到主桌面同时按下Win键和R键,输入cmd出现黑色窗口

image-20240809150515909

输入下方命令安装yarn

npm install -g yarn

image-20240809151418215

执行下方命令

yarn

image-20240809151437029

执行下方代码,安装koodo reader

git clone https://github.com/koodo-reader/koodo-reader.git

image-20240809151501203

执行下方命令进入项目目录

cd koodo-reader

执行下方命令

yarn

image-20240809152424683

执行下方命令后稍等几秒钟,自动跳到koodo reader web页面,然后就可以在你的图书库中进行下载图书看书啦!

yarn start

image-20240809153248784

image-20240809152928936

目前我们在本地成功部署了Koodo reader,但是如果我们想实现不在局域网下,在公网能够远程访问Koodo reader的话,我们就可以使用Cpolar内网穿透来实现公网随时随地访问了!免去了复杂得本地部署过程,只需要一个公网地址直接就可以访问。

3. 安装Cpolar内网穿透

下面是安装cpolar步骤:

Cpolar官网地址: https://www.cpolar.com

点击进入cpolar官网,点击免费使用注册一个账号,并下载最新版本的Cpolar

登录成功后,点击下载Cpolar到本地并安装(一路默认安装即可)本教程选择下载Windows版本。

image-20240319175308664

Cpolar安装成功后,在浏览器上访问http://localhost:9200,使用cpolar账号登录,登录后即可看到Cpolar web 配置界面,结下来在web 管理界面配置即可。

img

接下来配置一下koodo reader的公网地址,

3.1 配置公网地址

登录后,点击左侧仪表盘的隧道管理——创建隧道,

创建一个koodo reader的公网http地址隧道

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复

  • 协议:选择http

  • 本地地址:3000 (本地访问的地址)

  • 域名类型:免费选择随机域名

  • 地区:选择China VIP

    image-20240809153413794

    隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https。

    image-20240809153518362

    使用上面的Cpolar生成的任意一个公网地址,在手机或任意设备的浏览器进行登录访问,即可成功看到 Koodo Reader界面。使用了Cpolar的公网域名,无需自己购买云服务器,即可到公网访问Koodo reader看自己下载好的书了!

    image-20240809153713754

    小结

    如果我们需要经常远程访问Koodo图书库或者其他本地部署的服务,由于刚才创建的是随机的地址,24小时会发生变化。而且它的网址是由随机字符生成,不容易记忆。如果想把域名变成固定的二级子域名,并且不想每次都重新配置新的公网地址来访问Koodo reader,我们可以选择创建一个固定的http地址来解决这个问题。

3.2 配置固定公网地址

我们接下来为其配置固定的HTTP端口地址,该地址不会变化,方便分享给别人长期查看你的图书库,而无需每天重复修改服务器地址。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称。

image-20240809154208204

保留成功后复制保留成功的二级子域名的名称。

image-20240809154252409

返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。

image-20240809154338773

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20240809154433005

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名啦。

image-20240809154522541

最后,我们使用固定的公网https地址在任何浏览器打开访问,可以看到访问Koodo reader成功了这样一个固定且永久不变的公网地址就设置好了。

image-20240809154624441

以上就是如何在Windows本地部署Koodo reader,并结合cpolar内网穿透工具实现远程访问使用的全部流程,感谢您的观看,有任何问题欢迎留言交流。
vv

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

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

相关文章

进程池的子进程的清理工作问题

首先进程池看看代码怎么写的 https://gitee.com/ljh0617/linux_test/blob/master/11-17/3.pipe_use/ProcessPool.cc 我们对子进程分配到的管道读文件描述符进行了重定向,让他改为从0读,这和清理工作无关,只是这么设计让子进程不再有键盘输入…

Java 多线程详细介绍

Java 多线程详细介绍 线程是多线程的支柱。我们生活在一个现实世界中,这个世界本身就被大量应用程序包围着。随着技术的进步,除非我们有效地引入多任务处理的概念,否则我们无法达到同时运行它们所需的速度。这是通过线程的概念实现的。 Java…

二叉树+树的OJ题讲解

求第K层节点个数 思路:走到K1就不走了,一次传回得到的值 #include<stdio.h> #include<stdlib.h> //树的定义 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right; }BTNode;//手…

Android kotlin之配置kapt编译器插件

配置项目目录下的gradle/libs.versions.toml文件&#xff0c;添加kapt配置项&#xff1a; 在模块目录下build.gradle.kt中增加 plugins {alias(libs.plugins.android.application)alias(libs.plugins.jetbrains.kotlin.android)// 增加该行alias(libs.plugins.jetbrains.kotl…

类和对象——拷贝构造函数,赋值运算符重载(C++)

1.拷⻉构造函数 如果⼀个构造函数的第⼀个参数是自身类类型的引用&#xff0c;且任何额外的参数都有默认值&#xff0c;则此构造函数也叫做拷贝构造函数&#xff0c;也就是说拷贝构造是⼀个特殊的构造函数。 // 拷贝构造函数//d2(d1) Date(const Date& d) {_year d._yea…

STM32G4的数模转换器(DAC)功能介绍

目录 概述 1 DAC介绍 1.1 功能 1.2 主要特征 1.3 DAC特性总结 ​2 DAC模块框架结构 3 DAC数据格式 3.1 单DAC通道 3.2 双通道数据格式 3.3 有符号、无符号数据 4 DAC数据转换 ​5 DAC输出电压 概述 本文主要介绍STM32G4的数模转换器&#xff08;DAC&#xff09;功能&a…

Pointnet++改进68:添加FFCM |融合傅里叶卷积

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理论介绍 …

Linux:解决远程X无法连通问题,X-Server开启TCP连接

一、问题分析 提前申明&#xff1a; 本次实验使用REHL 8 进行操作&#xff01; 客户机 A 为X-Client &#xff0c;即远程X的客户端。 服务机 B 为X-Server&#xff0c;即远程X的服务端。 问题的所有操作均在已经配置好Xorg的前提下进行的&#xff0c;不知道不配置会有什么影响&…

零基础Java第十九期:认识String(一)

目录 一、String的重要性 二、String的常用方法 2.1. 字符串构造 2.2. String对象的比较 2.3. 字符串查找 2.4. 转化 2.4. 字符串替换 2.5. 字符串拆分 2.6. 字符串截取 一、String的重要性 在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能…

HarmonyOS4+NEXT星河版入门与项目实战--------ArkTs语言与TypeScript语法

文章目录 1、ArkTs语言1、ArkTs 特点2、ArkTs与Javascript关系 2、TypeScript 语法 1、ArkTs语言 在html的开发中&#xff0c;实现一个页面元素&#xff0c;比如Button&#xff0c;往往包含了以下三种要素&#xff1a;JS、HTML、CSS。JS处理逻辑与响应、HTML 用来声明标签生成…

使用yak编写yakit漏洞检测插件

前言 在使用yakit进行编写yaml插件的时候遇到了yaml无法处理的情况&#xff0c;我不知道是不是yaml无法处理或者说是yakit和yaml的兼容还不够&#xff0c;面对变量的处理还是有些难受&#xff0c;于是花了点时间看了官网的yak语法的手册和其他人写的yak插件尝试使用yak语言来完…

信也科技和云杉网络的AI可观测性实践分享

1. 信也科技 2、云杉网络 2.1 中国移动

Blossom:开源私有部署的markdown笔记软件

在信息化、数字化时代&#xff0c;我们每个人的生活和工作都离不开笔记和知识管理。从简单的待办事项&#xff0c;到复杂的项目计划&#xff0c;再到存储大量个人知识的工具&#xff0c;如何选择一个高效、便捷且符合个人需求的笔记软件&#xff0c;成了许多人的难题。最近在逛…

Spring:DI依赖注入的方式

Spring为我们提供了两种注入方式&#xff0c;分别是: setter注入 简单类型引用类型 构造器注入 简单类型引用类型 setter注入 在bean中定义引用类型属性&#xff0c;并提供可访问的set方法配置中使用property标签ref属性注入引用类型对象 (1)项目中添加BookDao、BookDaoIm…

逆向攻防世界CTF系列37-crackme

逆向攻防世界CTF系列37-crackme 参考https://blog.csdn.net/xiao__1bai/article/details/120230397 nspack的壳&#xff0c;查了一下好像是北斗的一个壳 没找到什么脱壳软件&#xff0c;只能手动脱壳了 手动脱壳的最终要的是ESP定律 ESP定律的原理就是“堆栈平衡”原理 涉及…

按钮权限的操作方法

首先先在你的本地储存里边&#xff0c;加入一些你指定的字段 然后创建一个文件夹&#xff0c;在此文件夹下创建一个js文件&#xff0c;文件内容如下 在你所需要隐藏按钮的页面引入此js文件&#xff0c;并且通过 directives自定义指令绑定你的每一个按钮。在js文件中通过三个常量…

vscode 关闭绑定元素 隐式具有“any”类型这类错误

在vue的项目里面&#xff0c;经常看到any类型的报错&#xff0c;真的很烦的 在tsconfig.json中配置以下参数 “noImplicitAny”: false 就可以了 出现类型“never”上不存在属性“userName”。ts-plugin(2339) 配置该参数 modeuleResolution : node "compilerOptions&qu…

springboot 的 Profile

什么是 Profile &#xff1f; 应用所在的运行环境发生切换时&#xff0c;配置文件常常就需要随之修改。 Profile&#xff1a;——就是一组配置文件及组件的集合。 可以整个应用在不同的profile之间切换&#xff08;设置活动profile&#xff09;&#xff0c;整个应用都将使用该…

onvif协议相关:4.1.6 Digest方式云台控制启动

背景 关于onvif的其实很早之前我已经在专栏中写了不少了, 使用onvif协议操作设备 但最近有陆陆续续的粉丝问我, 希望我在写一些关于 onvif的设备自动发现、预置位跳转、云台操作的博客。 满足粉丝的需求,安排。 今天我们来实现 设备云台的控制(启动) 实现 1.在ONVIF Devi…

【JAVA毕业设计】基于Vue和SpringBoot的农机电招平台

本文项目编号 T 615 &#xff0c;文末自助获取源码 \color{red}{T615&#xff0c;文末自助获取源码} T615&#xff0c;文末自助获取源码 随着农机电招行业的不断发展&#xff0c;农机电招在现实生活中的使用和普及&#xff0c;农机电招行业成为近年内出现的一个新行业&#x…