【好玩儿的Docker项目】自己的网文阅读器 安卓的“阅读”APP网页版
转自:https://blog.laoda.de/archives/docker-compose-install-reader 保存学习
安卓手机APP阅读3服务器版,桌面端。
后端 Kotlin + Spring Boot + Vert.x + Coroutine ;
前端 Vue.js + Element。
GitHub 开源项目,支持Docker搭建。
1.1 特点
咕咕这边简单在网上也抄搜集了一些特点,供大家参考(翻译自GitHub的README):
GitHub完全开源,可以免费使用
Docker搭建,10分钟搞定
1.2 问题
部分使用了 Javascript 的书源可能会报错,不支持 cookie 和 cache 功能
不支持使用了 webview 的书源
不支持书源登录功能
1.3 技术栈
后端 Kotlin + Spring Boot + Vert.x + Coroutine ;
前端 Vue.js + Element
1.4 免责声明(Disclaimer)
阅读是一款提供网络文学搜索的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。
当您搜索一本书的时,阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关,阅读对其概不负责,亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供,您可能从第三方网页上获得其他服务,阅读对其合法性概不负责,亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读,不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。
阅读不做任何形式的保证:不保证第三方搜索引擎的搜索结果满足您的要求,不保证搜索服务不中断,不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读,阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权,您注册的用户名、电子邮件地址等个人资料,非经您亲自许可或根据相关法律、法规的强制性规定,阅读不会主动地泄露给第三方。
阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费,通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时,也使优秀网络文学得以迅速、更广泛的传播,从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商,并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权,应该及时向阅读提出书面权力通知,并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后,将会依法尽快断开相关链接内容。
GitHub原项目地址:https://github.com/hectorqin/reader(617 1.9k star)
Demo地址(服务器位于日本) : https://reader.nxnow.online(此域名7月过期)更换为 https://read.nxnow.top
Demo测试账号/密码分别为guest/guest123,也可自行创建账号添加书源
直接丢几个图片:
服务器:腾讯香港轻量应用服务器24元/月VPS一台展示用的服务器是Netcup特价款,本期搭建用的是Vultr的服务器,按小时计费,可随时销毁(最好是选非大陆的服务器)(腾讯轻量购买链接)Hetzner注册免费得25欧试用金有效期一个月
系统:Debian 10(DD脚本 非必需DD用原来的系统也OK)
域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
安装好Docker、Docker-compose(相关脚本)
【非必需】提前安装好宝塔面板海外版本aapanel,并安装好Nginx(安装地址)
【非必需本教程采用】安装好Nginx Proxy Manager(相关教程)
4. ## 搭建视频
YouTube:https://youtu.be/Yjtrl4zii5g
哔哩哔哩【高清版本可以点击去吐槽到B站观看】:
5.1 搭建
服务器初始设置,参考
新买了一台服务器“必须”要做的6件小事
【Docker系列】不用宝塔面板,小白一样可以玩转VPS服务器!
sudo -i # 切换到root用户
apt update -y # 升级packages
apt install wget curl sudo vim git # Debian系统比较干净,安装常用的软件
创建一下安装的目录:
mkdir -p /root/data/docker_data/reader
cd /root/data/docker_data/reader
nano docker-compose.yml
docker-compose.yml来源官方仓库,内容如下:
自用版本:
version: '3.1'
services:
# reader 在线阅读
# 本人在线演示(服务器位于日本) : https://reader.nxnow.online(此域名7月过期)更换为 https://read.nxnow.top
# 在线演示测试账号/密码分别为guest/guest123,也可自行创建账号添加书源
# 书源参考 : https://github.com/NZESupB/ReadSource,书源合集下选一个合集进入网页后, Ctrl+S 保存至本地后导入网站即可,或者点击远程书源,将链接导入即可
#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
# 自用版
# read_own:
# image: hectorqin/reader
# container_name: reader_own
# restart: always
# ports:
# - 4395:8080
# volumes:
# - /home/reader/logs:/logs
# - /home/reader/storage:/storage
# environment:
# - SPRING_PROFILES_ACTIVE=prod
# - READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0
# 多用户版
read_all:
image: hectorqin/reader
container_name: reader #容器名 可自行修改
restart: always
ports:
- 4396:8080 #4396端口映射可自行修改
volumes:
- /root/data/docker_data/reader/logs:/logs #log映射目录 /root/data/docker_data/reader/logs 映射目录可自行修改
- /root/data/docker_data/reader/storage:/storage #数据映射目录 /root/data/docker_data/reader/storage 映射目录可自行修改
environment:
- SPRING_PROFILES_ACTIVE=prod
- READER_APP_SECURE=true #开启登录鉴权,开启后将支持多用户模式
- READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0
- READER_APP_SECUREKEY=adminpwd #管理员密码 可自行修改
#- READER_APP_INVITECODE=registercode #注册邀请码,如需要取消注释 可自行修改
# 自动更新docker
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: always
# 环境变量,设置为上海时区
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: reader watchtower --cleanup --schedule "0 0 4 * * *"
# 仅更新reader与watchtower容器,如需其他自行添加 '容器名' ,如:reader watchtower redis
# --cleanup 更新后清理旧版本镜像
# --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整
视频演示版本:
version: '3.1'
services:
# reader 在线阅读
# 第三方在线演示(服务器位于日本):https://reader.nxnow.top
# 在线演示测试账号/密码分别为guest/guest123,也可自行创建账号添加书源,不定期删除长期未登录账号
# 书源参考 : https://github.com/NZESupB/ReadSource,书源合集下选一个合集进入网页后,Ctrl+S 保存至本地后导入网站即可,或者点击远程书源,将链接导入即可
# 单用户版
#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 -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
reader:
image: hectorqin/reader
#image: hectorqin/reader:openj9-latest #docker镜像,arm64架构和小内存机器可以使用
container_name: reader #容器名 可自行修改
restart: always
#限制镜像最大资源占用(可选) 低内存(<=2G)可考虑限制 使用此方式启动需加--compatibility,例如 docker-compose --compatibility up -d
#deploy:
#resources:
#limits: #最大限制资源
#cpus: '0.50' #cpu建议不做限制,保持注释即可,1表示100%
#memory: 1024M
#reservations: #保留最小资源
#cpus: 0.25
#memory: 256M
ports:
- 4396:8080 #4396端口映射可自行修改
volumes:
- /root/data/docker_data/reader/logs:/logs #log映射目录 /home/reader/logs 映射目录可自行修改
- /root/data/docker_data/reader/storage:/storage #数据映射目录 /home/reader/storage 映射目录可自行修改
#可配置默认书源,默认书源存放于数据映射目录中:storage/data/default/bookSource.json
#书源参考(大部分可通用):https://www.legado.top/blog/book-source
#wget -c https://namofree.gitee.io/yuedu3/legado3_booksource_by_Namo.json -O /home/reader/storage/data/default/bookSource.json
environment:
- SPRING_PROFILES_ACTIVE=prod
- READER_APP_USERLIMIT=50 #用户上限,默认50
- READER_APP_USERBOOKLIMIT=200 #用户书籍上限,默认200
- READER_APP_CACHECHAPTERCONTENT=true #开启缓存章节内容 V2.0
# 下面都是多用户模式配置
- READER_APP_SECURE=true #开启登录鉴权,开启后将支持多用户模式
- READER_APP_SECUREKEY=adminpwd #管理员密码 建议修改
- READER_APP_INVITECODE=registercode #注册邀请码 建议修改,如不需要可注释或删除
# 自动更新docker
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: always
# 环境变量,设置为上海时区
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: reader watchtower --cleanup --schedule "0 0 4 * * *"
# 仅更新reader与watchtower容器,如需其他自行添加 '容器名' ,如:reader watchtower nginx
# --cleanup 更新后清理旧版本镜像
# --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整
- 注意:VPS的内存最好大于1G,可以再设置1G的SWAP,本项目内容存储在内存中~
设置SWAP可以用脚本:
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh
没问题的话,ctrl+x退出,按y保存,enter确认。
查看端口是否被占用,输入:
lsof -i:4396 #查看4396端口是否被占用,如果被占用,重新自定义一个端口
如果出现:
-bash: lsof: command not found
运行:
apt install lsof #安装lsof
如果端口没有被占用,可以运行:
docker-compose up -d
访问:http:服务ip:4396 即可。
注意:
1、不知道服务器IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的IP。
2、遇到访问不了的情况,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。
5.2 更新
cd /root/data/docker_data/reader # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像
利用Docker-compose搭建的应用,更新非常容易~
5.3 卸载
sudo -i # 切换到root
cd /root/data/docker_data/reader # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
cd ~
rm -rf /root/data/docker_data/reader # 完全删除映射到本地的数据
利用Docker-compose搭建的应用,删除也非常容易~
此项目和别的项目不同,必须采用https形式,否则浏览器无法加密,无法使用。
6.1 利用Nginx Proxy Manager
在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
之后,登陆Nginx Proxy Manager(不会的看这个:安装Nginx Proxy Manager(相关教程))
注意:
Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)
直接丢几张图:
注意填写对应的域名、IP和端口,按文章来的话,应该是4396
IP填写:
如果Nginx Proxy Manager和reader在同一台服务器上,可以在终端输入:
ip addr show docker0
查看对应的Docker容器内部IP。
否则直接填cryptgeon所在的服务器IP就行。
再次打开,勾选这些:
然后就可以用域名来安装访问了。
看咕咕的视频,或者自己研究,看文档
7.1 书源地址(请支持正版书籍)
数量不多,因为我觉得质量比数量更重要(当然我也不保证质量就一定多么好哈),我以前也用过那些几百上千个的书源列表,杂七杂八太乱了,质量参差不齐,而且正常情况下大家也就主用几个书源罢了。。。
本书源集成了1000+个源,基本涵盖全网!
为了长久使用,请勿滥用!
书源:
https://shuyuan.mgz6.cc/shuyuan/84083d2be227881b0e3b90b9cd01c685.json
json的就是可以直接导入的
网址:
http://yck.mumuceo.com/yuedu/shuyuan/index.html
里面有很多书源
祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。
同时,有能力给项目做贡献的同学,也欢迎积极加入到项目中来,贡献自己的一份力量!
GitHub原项目地址:https://github.com/hectorqin/reader(617 star)
https://hostloc.com/thread-1010700-1-3.html
官方文档:
免责声明(Disclaimer)
阅读是一款提供网络文学搜索的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。
当您搜索一本书的时,阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关,阅读对其概不负责,亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供,您可能从第三方网页上获得其他服务,阅读对其合法性概不负责,亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读,不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。
阅读不做任何形式的保证:不保证第三方搜索引擎的搜索结果满足您的要求,不保证搜索服务不中断,不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读,阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权,您注册的用户名、电子邮件地址等个人资料,非经您亲自许可或根据相关法律、法规的强制性规定,阅读不会主动地泄露给第三方。
阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费,通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时,也使优秀网络文学得以迅速、更广泛的传播,从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商,并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权,应该及时向阅读提出书面权力通知,并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后,将会依法尽快断开相关链接内容。
数据存储
接口服务使用文件存储书源及目录等信息,存储位置为 storage 目录(可通过运行时添加 -Dreader.app.storagePath=/path/to/storage
修改)。
MacOS客户端的存储目录是
~/.reader/storage
,Window和Linux客户端为运行目录/storage
数据存储目录结构如下:
书籍缓存目录由
书名
变为书名_作者名
,这个变动需要手动编辑,否则书籍书源列表缓存信息无法使用
storage
├── assets # 静态资源
│ |── covers # 本地 epub 书籍的封面图片目录
│ ├── hector # 用户 hector 的资源目录
│ │ ├── background # 自定义阅读背景图片保存目录
│ │ │ └── 6.jpg
│ └── reader.css # 自定义CSS样式文件
├── cache # 缓存目录
│ ├── 6190ac40068e74c2c82624e91a5f8a0c.jpg # 书籍封面缓存
│ ├── bookInfoCache # 书籍搜索缓存 ACache 目录
│ └── ea11967236129bdae6133c3c9ff8c2dd.jpg
├── data # 数据目录
│ ├── default # 系统默认用户的数据目录 (reader.app.secure为false时)
│ │ ├── bookSource.json # 书源列表
│ │ ├── bookshelf.json # 书架书籍列表
│ │ ├── 斗罗大陆_唐家三少 # 书籍缓存目录
│ │ │ ├── 5d01bc88d6b19ebbe974acaac1675811 # A书源章节缓存目录
│ │ │ ├── 5d01bc88d6b19ebbe974acaac1675811.json # A书源目录列表
│ │ │ ├── 7e5ca1cc2a1ea2e09fdec4ee2e150f02 # B书源章节缓存目录
│ │ │ ├── 7e5ca1cc2a1ea2e09fdec4ee2e150f02.json # B书源目录列表
│ │ │ └── bookSource.json # 书籍书源列表
│ ├── hector # 用户 hector 的数据目录 (reader.app.secure为true时的用户目录)
│ │ ├── bookSource.json # 书源列表
│ │ ├── bookshelf.json # 书架书籍列表
│ │ ├── webdav # webdav 存储目录 可能会存在 legado 子目录
│ │ │ ├── backup2021-09-15.zip # 阅读3备份文件
│ │ │ └── bookProgress # 阅读3书籍进度备份目录
│ │ │ └── 斗罗大陆_唐家三少.json # 阅读3书籍进度
│ │ └── 斗罗大陆_唐家三少 # 书籍缓存目录
│ │ |── 2d44d0ec2397b6c1d4010b97d914031e # A书源章节缓存目录
│ │ └── 2d44d0ec2397b6c1d4010b97d914031e.json # A书源目录列表
│ └── users.json # 用户列表
├── localStore # 本地书仓,所有用户共享(用户需要开启书仓权限,才能访问)
│ |── 斗破苍穹.txt # 本地书仓书籍
│ └── 斗罗大陆.txt # 本地书仓书籍
└── windowConfig.json # 窗口配置文件
本地书仓
在 storage/localStore
中可以集中存放管理本地书籍,开启访问权限的用户可以在 页面-浏览书仓
中选择批量导入到自己的书架进行阅读。
自定义阅读主题
书架页面仅支持白天模式和黑夜模式。
阅读页面支持设置多款主题,还可以自定义主题。自定义阅读主题包括:
- 自定义页面背景颜色
- 自定义浮窗背景颜色
- 自定义阅读背景颜色
- 自定义阅读背景图片
自定义样式
页面还会加载应用目录下的 reader-assets/reader.css
这个CSS样式文件,在这个文件中可以自定义页面样式。
自定义样式可能需要配合
!important
来设定属性
接口服务配置
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同步配置
首先需要在阅读App里面配置
WebDAV备份
服务器地址:
http://IP:端口/reader3/webdav/
如果开启了
reader.app.secure
选项,那么使用网页注册的用户名和密码登录,否则使用用户名default
和 密码123456
登录然后在阅读App里面点击备份
在网页里面查看WebDAV文件,确认是否备份成功
备份成功之后
- 服务器会自动同步书籍阅读进度(暂不支持章节内阅读位置,也不会自动同步书架信息变更)
- 可以直接选择阅读App的备份文件进行恢复,这样会直接覆盖书源和书架信息
- 可以备份当前书源和书架信息到WebDAV,但是必须要先备份成功
- 需要通过恢复备份文件来同步书籍和书源信息
PS: 本地书源的书籍同步后无法打开,除非换源
客户端
Windows / MacOS / Linux
从 releases 下载对应平台安装包安装即可,需要安装java10以上环境
MacOS 版 storage
默认是 用户目录/.reader/storage
,其它版本 storage
默认是 程序目录/storage
配置文件
storage/windowConfig.json
包含图形界面和接口服务的相关配置,JSON格式,修改后,程序重启才会生效
请仔细检查配置内容,不支持注释,此处注释只是为了方便理解
{
"serverPort": 8080, // web服务端口,默认为 8080
"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以上环境
# 创建目录
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版
# 自行编译
# 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/
Docker-Compose版(推荐)
#安装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
Nginx反向代理
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;
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;
}
}
开发编译
编译脚本
$ ./build.sh
USAGE: ./build.sh build|run|win|linux|mac|serve|cli|yarn|web|sync
build 调试打包
run 桌面端编译运行,需要先执行 sync 命令编译同步web资源
win 打包 windows 安装包
linux 打包 linux 安装包
mac 打包 mac 安装包
serve 服务端编译运行
cli 服务端打包命令
yarn web页面 yarn 快捷命令,默认 install
web 开发web页面
sync 编译同步web资源
编译前端
cd web
# 启动开发服务 访问 http://localhost:8081/
# yarn serve
# 编译,并拷贝到 src/main/resources/web 目录
yarn sync
编译接口
./gradlew assemble --info
java -jar build/libs/reader-${version}.jar
# 指定 storage 路径 默认为相对路径 storage
# java -Dreader.app.storagePath=cacheStorage -jar build/libs/reader-${version}.jar
# web端 http://localhost:8080/
# 接口地址 http://localhost:8080/reader3/
接口文档
与 阅读3Web接口 基本一致,只是多了接口前缀 /reader3/
新增接口
加入书架
- URL
http://localhost:8080/reader3/saveBook
- Method
POST
- Body
json 格式
{
"infoHtml": "",
"tocHtml": "",
"bookUrl": "https://www.damixs.com/book/dmfz.html",
"origin": "https://www.damixs.com",
"originName": "🎉大米小说",
"type": 0,
"name": "道门法则",
"author": "八宝饭",
"kind": "02-14",
"intro": "在道门掌控的天下,应该怎么修炼?符箓、丹药、道士、灵妖、斋醮科仪......想要修仙,很好,请从扫厕所开始做起!符诏到来的时候,你需要站在什么位置?Q群:1701556(需验证订阅截图)、954782460“盟主群”",
"wordCount": "",
"latestChapterTitle": "番外四(贺消脱止-M荣升盟主)",
"tocUrl": "",
"time": 1628756214810,
"originOrder": 16
}
- Response Body
{
"isSuccess": true,
"errorMsg": "",
"data": Book
}
获取书籍书源
- URL
http://localhost:8080/reader3/getBookSource?url=xxx
- Method
GET
获取指定URL对应的书源信息, 和 阅读3Web接口
的 getSource
接口相同
- Response Body
{
"isSuccess": true,
"errorMsg": "",
"data": [SearchBook]
}
搜索书籍更多书源
- URL
http://localhost:8080/reader3/searchBookSource?name=xxx&lastIndex=0
- Method
GET
搜索指定name对应的书源列表信息
lastIndex 是上次搜索结果中返回的字段,默认为 0,可以传入 getBookSource
接口返回的SearchBook列表长度
- Response Body
{
"isSuccess": true,
"errorMsg": "",
"data": [SearchBook]
}
书籍换源
- URL
http://localhost:8080/reader3/saveBookSource
- Method
POST
- Body
json 格式
{
"newUrl": "新源书籍链接",
"name": "书籍名称",
"bookSourceUrl": "书源链接"
}
- Response Body
{
"isSuccess": true,
"errorMsg": "",
"data": Book
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 vault@coolxy.cn