iOSByte

CYRCOM

Discover the fun side of iOS with iOSByte. Your friendly space for exploring cool apps, hidden features, and everything delightful in the Apple ecosystem. Join the byte-sized journey through the fascinating world of iOS, tailored for enthusiasts like you!

GET IN TOUCH

A long way

Reader web

图片

本地书仓

storage/localStore 中可以集中存放管理本地书籍,开启访问权限的用户可以在 页面-浏览书仓 中选择批量导入到自己的书架进行阅读。

自定义样式

页面还会加载应用目录下的 reader-assets/reader.css 这个CSS样式文件,在这个文件中可以自定义页面样式。

自定义样式可能需要配合 !important 来设定属性

接口服务配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
reader    :
app :
storagePath : storage # 数据存储目录
showUI : false # 是否显示UI
debug : false # 是否调试模式
packaged : false # 是否打包为客户端
secure : false # 是否需要登录鉴权,开启后将支持多用户模式
inviteCode : ” “ # 注册邀请码,为空时则开放注册,否则注册时需要输入邀请码
secureKey : ” “ # 管理密码,开启鉴权时,前端管理用户空间的管理密码
proxy : false # 是否使用代理
proxyType : ” HTTP “ # 代理类型
proxyHost : ” “ # 代理 Host
proxyPort : ” “ # 代理 port
proxyUsername : ” “ # 代理鉴权 用户名
proxyPassword : ” “ # 代理鉴权 密码
cacheChapterContent : false # 是否缓存章节内容
userLimit : 50 # 用户上限,最大 50
userBookLimit : 200 # 用户书籍上限,默认最大 200

server :
port : 8080 # 监听端口
webUrl : http://localhost:${reader.server.port} # web链接

WebDAV同步配置

  1. 首先需要在阅读App里面配置 WebDAV备份服务器地址: http://IP:端口/reader3/webdav/如果开启了 reader.app.secure 选项,那么使用网页注册的用户名和密码登录,否则使用用户名 default 和 密码 123456 登录
  2. 然后在阅读App里面点击备份
  3. 在网页里面查看WebDAV文件,确认是否备份成功
  4. 备份成功之后
    • 服务器会自动同步书籍阅读进度(暂不支持章节内阅读位置,也不会自动同步书架信息变更)
    • 可以直接选择阅读App的备份文件进行恢复,这样会直接覆盖书源和书架信息
    • 可以备份当前书源和书架信息到WebDAV,但是必须要先备份成功
    • 需要通过恢复备份文件来同步书籍和书源信息
  5. PS: 本地书源的书籍同步后无法打开,除非换源

客户端

Windows / MacOS / Linux

releases 下载对应平台安装包安装即可,需要安装java10以上环境

MacOS 版 storage 默认是 用户目录/.reader/storage,其它版本 storage 默认是 程序目录/storage

配置文件

storage/windowConfig.json

包含图形界面和接口服务的相关配置,JSON格式,修改后,程序重启才会生效

请仔细检查配置内容,不支持注释,此处注释只是为了方便理解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

”showUI“ : true , // 是否显示UI界面,默认为显示
”debug“ : false , // 是否调试模式,默认为否
”positionX“ : 0.0 , // 窗口位置 横坐标
”positionY“ : 0.0 , // 窗口位置 纵坐标
”width“ : 1280.0 , // 窗口大小 宽度
”height“ : 800.0 , // 窗口大小 高度
”rememberSize“ : true , // 改变窗口大小时,是否记住窗口大小,默认记住
”rememberPosition“ : false , // 移动窗口时,是否记住窗口位置,默认不记住
”setWindowPosition“ : false , // 启动时是否设置窗口位置,默认不设置,窗口默认居中
”setWindowSize“ : true , // 启动时是否设置窗口大小,默认按照配置文件进行设置
”serverConfig“ : { // 接口服务配置,此处配置会被 `serverPort|showUI|debug` 等覆盖
”reader.app.secure“ : false , // 是否需要登录鉴权,开启后将支持多用户模式
”reader.app.inviteCode“ : ” “ , // 注册邀请码,为空时则开放注册,否则注册时需要输入邀请码。仅多用户模式下有效
”reader.app.secureKey“ : ” “ , // 管理密码,开启鉴权时,前端管理用户空间的管理密码。仅多用户模式下有效

手机端

使用docker版本或者服务器版本,访问web页面

可以添加为桌面应用

服务器版

releases 下载 reader-$version.jar 运行即可,需要安装java10以上环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    #     创建目录    
mkdir reader3
cd reader3

# 下载 jar
wget ” xxxx “

# 安装jdk10以上环境...

# 运行

# 自用版
java -jar reader- $version .jar

# 多用户版
java -jar reader- $version .jar --reader.app.secure=true --reader.app.secureKey=管理密码 --reader.app.inviteCode=注册邀请码

# web端 http://localhost:8080/
# 接口地址 http://localhost:8080/reader3/

Docker版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    #     自行编译    
# docker build -t reader:latest .

# 使用环境变量覆盖服务配置,环境变量采用大写字母,不允许使用.-符号,采用下划线“_”取代点“.” 减号“-”直接删除

# docker run -d --restart=always --name=reader -e ”SPRING_PROFILES_ACTIVE=prod“ -v $(pwd)/logs:/logs -v $(pwd)/storage:/storage -p 8080:8080 reader:latest

# 跨平台镜像

# 新建构建器
# docker buildx create --use --name mybuilder
# 启动构建器
# docker buildx inspect mybuilder --bootstrap
# 查看构建器及其所支持的cpu架构
# docker buildx ls
# 构建跨平台镜像
# docker buildx build -t reader:latest --platform=linux/arm,linux/arm64,linux/amd64 . --push

# 使用预编译的镜像

# 自用版(建议修改映射端口)
docker run -d --restart=always --name=reader -e ” SPRING_PROFILES_ACTIVE=prod “ -v $( pwd ) /logs:/logs -v $( pwd ) /storage:/storage -p 8080:8080 hectorqin/reader

# 多用户版(建议修改映射端口)
docker run -d --restart=always --name=reader -v $( pwd ) /logs:/logs -v $( pwd ) /storage:/storage -p 8080:8080 hectorqin/reader java -jar /app/bin/reader.jar --spring.profiles.active=prod --reader.app.secure=true --reader.app.secureKey=管理密码 --reader.app.inviteCode=注册邀请码

# 多用户版 使用环境变量(建议修改映射端口)
docker run -d --restart=always --name=reader -e ” SPRING_PROFILES_ACTIVE=prod “ -e ” READER_APP_SECURE=true “ -e ” READER_APP_SECUREKEY=管理密码 “ -e ” READER_APP_INVITECODE=注册邀请码 “ -v $( pwd ) /logs:/logs -v $( pwd ) /storage:/storage -p 8080:8080 hectorqin/reader

# 更新docker镜像
# docker pull hectorqin/reader

# :后面的端口修改为映射端口
# web端 http://localhost:8080/
# 接口地址 http://localhost:8080/reader3/

# 通过watchtower手动更新
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once reader

Docker-Compose版(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    #    安装docker-compose    
# Debian/Ubuntu
apt install docker-compose -y
# CentOS
curl -L ” https://github.com/docker/compose/releases/download/1.29.2/docker-compose- $( uname -s ) - $( uname -m ) “ -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

# 下载项目里的 docker-compose.yaml
wget https://raw.githubusercontent.com/hectorqin/reader/master/docker-compose.yaml
# 根据 docker-compose.yaml 里面的注释编辑所需配置
# 启动 docker-compose
docker-compose up -d

# 停止 docker-compose
docker-compose stop

# 查看实时日志
docker logs -f reader

# 手动更新
docker-compose pull && docker-compose up -d

Nginx反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    # 此文件放入 conf.d目录下,一般可用 touch /etc/nginx/conf.d/reader.conf 创建    
server {
listen 80 ;
server_name 域名;
#开启ssl解除注释
#不使用宝塔获取证书脚本 https://github.com/Misaka-blog/acme-1key
#listen 443 ssl;
#ssl_certificate 证书.cer;
#ssl_certificate_key 证书.key;
#ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
#ssl_prefer_server_ciphers on;
#ssl_session_cache shared:SSL:10m;
#ssl_session_timeout 10m;
#if ($server_port !~ 443){
# rewrite ^(/.*)$ https://$host$1 permanent;
#}
#error_page 497 https://$host$request_uri;

gzip on ; #开启gzip压缩
gzip_min_length 1k ; #设置对数据启用压缩的最少字节数
gzip_buffers 4 16k ;
gzip_http_version 1.0 ;
gzip_comp_level 6 ; #设置数据的压缩等级,等级为1-9,压缩比从小到大
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; #设置需要压缩的数据格式
gzip_vary on ;

client_max_body_size 50m ; #允许上传50MB文件,上传本地书籍需要修改此项大小.如nginx主配置文件已添加,删除此行并修改主配置即可

location / {
proxy_pass http://127.0.0.1:4396; #端口自行修改为映射端口
proxy_http_version 1.1 ;
proxy_cache_bypass $http_upgrade ;
proxy_set_header Upgrade $http_upgrade ;
proxy_set_header Connection ”upgrade“ ;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Forwarded-Proto $scheme ;
proxy_set_header X-Forwarded-Host $host ;
proxy_set_header X-Forwarded-Port $server_port ;
}
}