【好玩儿的Docker项目】 10分钟搭建一个自己的网文阅读器 安卓的“阅读”APP网页版 附带书源

1. 介绍
安卓手机APP阅读3服务器版,桌面端。
后端 Kotlin + Spring Boot + Vert.x + Coroutine ;
前端 Vue.js + Element。

GitHub 开源项目,支持Docker搭建。

1.1 特点
咕咕这边简单在网上也抄搜集了一些特点,供大家参考(翻译自GitHub的README):

GitHub完全开源,可以免费使用

Docker搭建,10分钟搞定

书架管理

搜索

书海

看书

移动端适配

换源

翻页方式

手势支持

自定义主题

自定义样式

WebDAV同步

文字替换过滤

听书<仅部分浏览器支持,手机端会因为锁屏而失效>

用户配置备份恢复

支持漫画

支持音频

书源失效检测

导入本地TXT、EPUB、UMD格式的书籍

书籍分组

RSS订阅

定时更新书架

并发搜书

本地书仓

1.2 问题
部分使用了 Javascript 的书源可能会报错,不支持 cookie 和 cache 功能
不支持使用了 webview 的书源
不支持书源登录功能
1.3 技术栈
后端 Kotlin + Spring Boot + Vert.x + Coroutine ;

前端 Vue.js + Element

1.4 免责声明(Disclaimer)
阅读是一款提供网络文学搜索的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。

当您搜索一本书的时,阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关,阅读对其概不负责,亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供,您可能从第三方网页上获得其他服务,阅读对其合法性概不负责,亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读,不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。

阅读不做任何形式的保证:不保证第三方搜索引擎的搜索结果满足您的要求,不保证搜索服务不中断,不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读,阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权,您注册的用户名、电子邮件地址等个人资料,非经您亲自许可或根据相关法律、法规的强制性规定,阅读不会主动地泄露给第三方。

阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费,通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时,也使优秀网络文学得以迅速、更广泛的传播,从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商,并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权,应该及时向阅读提出书面权力通知,并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后,将会依法尽快断开相关链接内容。

2. 项目展示
GitHub原项目地址:https://github.com/hectorqin/reader(617 1.9k star)

Demo地址(服务器位于日本) : https://reader.nxnow.online(此域名7月过期)更换为 https://read.nxnow.top

Demo测试账号/密码分别为guest/guest123,也可自行创建账号添加书源

直接丢几个图片:






3. 搭建环境
服务器:腾讯香港轻量应用服务器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. 搭建方式
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搭建的应用,删除也非常容易~

6. 反向代理(必须)
此项目和别的项目不同,必须采用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. 使用教程
看咕咕的视频,或者自己研究,看文档

7.1 书源地址(请支持正版书籍)
https://github.com/XIU2/Yuedu

数量不多,因为我觉得质量比数量更重要(当然我也不保证质量就一定多么好哈),我以前也用过那些几百上千个的书源列表,杂七杂八太乱了,质量参差不齐,而且正常情况下大家也就主用几个书源罢了。。。

分享一个安卓阅读器《阅读》的书源
本书源集成了1000+个源,基本涵盖全网! 为了长久使用,请勿滥用! 书源: https://shuyuan.mgz6.cc/shuyuan/84083d2be227881b0e3b90b9cd01c685.json json的就是可以直接导入的 网址: http://yck.mumuceo.com/yuedu/shuyuan/index.html 里面有很多书源 8. 结尾 祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。 同时,有能力给项目做贡献的同学,也欢迎积极加入到项目中来,贡献自己的一份力量! 9. 参考资料 GitHub原项目地址:https://github.com/hectorqin/reader(617 star) https://hostloc.com/thread-1010700-1-3.html https://github.com/XIU2/Yuedu https://blog.3cat.cc/142.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注