{"version":"https://jsonfeed.org/version/1.1","title":"奇诺分享 | blog.ccino.cc - 重在分享","home_page_url":"https://blog.ccino.cc","feed_url":"https://blog.ccino.cc/json/","description":"","icon":"https://cdn-blog-ccino-cc.ccino.cc/blog-ccino-cc/production/images/channel-6ebae07c242a357bee27d74ca3e4b3ce.png","favicon":"https://cdn-blog-ccino-cc.ccino.cc/blog-ccino-cc/production/images/favicon-bdc56a1bbdd3d9f75032075380339348.jpg","authors":[{"name":"奇诺分享"}],"language":"zh-cn","items":[{"id":"VfgVvHNOzf6","title":"10分钟搭建一个自己的网文阅读器 安卓的“阅读”APP网页版 附带书源！","attachments":[{"url":"https://blog.ccino.org/p/build-your-own-online-literature-reader-in-10-minutes-androids-reading-app-web-version-comes-with-book-sources/","mime_type":"text/html"}],"url":"https://blog.ccino.cc/i/build-your-own-online-literature-reader-in-10-minutes-androids-reading-app-web-version-comes-with-book-sources/","external_url":"https://blog.ccino.org/p/build-your-own-online-literature-reader-in-10-minutes-androids-reading-app-web-version-comes-with-book-sources/","content_html":"<h2>&nbsp;介绍</h2><p><br></p><p>安卓手机 APP&nbsp;阅读3&nbsp;服务器版，桌面端。</p><p>后端&nbsp;Kotlin&nbsp;+&nbsp;Spring Boot&nbsp;+&nbsp;Vert.x&nbsp;+&nbsp;Coroutine&nbsp;；</p><p>前端&nbsp;Vue.js&nbsp;+&nbsp;Element。</p><p>GitHub 开源项目，支持 Docker 搭建。</p><h3>1.1 特点</h3><p><br></p><p>咕咕这边简单在网上也抄~~~~ 搜集了一些特点，供大家参考（翻译自&nbsp;<a href=\"https://github.com/hectorqin/reader\" rel=\"noopener noreferrer\" target=\"_blank\">GitHub</a>&nbsp;的&nbsp;README）：</p><ul><li>GitHub 完全开源，可以免费使用</li><li>Docker 搭建，10 分钟搞定</li><li>书架管理</li><li>搜索</li><li>书海</li><li>看书</li><li>移动端适配</li><li>换源</li><li>翻页方式</li><li>手势支持</li><li>自定义主题</li><li>自定义样式</li><li>WebDAV 同步</li><li>文字替换过滤</li><li>听书 &lt;仅部分浏览器支持，手机端会因为锁屏而失效&gt;</li><li>用户配置备份恢复</li><li>支持漫画</li><li>支持音频</li><li>书源失效检测</li><li>导入本地 TXT、EPUB、UMD 格式的书籍</li><li>书籍分组</li><li>RSS 订阅</li><li>定时更新书架</li><li>并发搜书</li><li>本地书仓</li></ul><h3>1.2 问题</h3><ul><li>部分使用了&nbsp;Javascript&nbsp;的书源可能会报错，不支持&nbsp;cookie&nbsp;和&nbsp;cache&nbsp;功能</li><li>不支持使用了&nbsp;webview&nbsp;的书源</li><li>不支持书源登录功能</li></ul><h3>1.3 技术栈</h3><p><br></p><p>后端&nbsp;Kotlin&nbsp;+&nbsp;Spring Boot&nbsp;+&nbsp;Vert.x&nbsp;+&nbsp;Coroutine&nbsp;；</p><p>前端&nbsp;Vue.js&nbsp;+&nbsp;Element</p><h3>1.4 免责声明（Disclaimer）</h3><p><br></p><p>阅读&nbsp;是一款提供网络文学搜索的工具，为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。</p><p>当您搜索一本书的时，阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关，阅读对其概不负责，亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供，您可能从第三方网页上获得其他服务，阅读对其合法性概不负责，亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读，不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。</p><p>阅读不做任何形式的保证：不保证第三方搜索引擎的搜索结果满足您的要求，不保证搜索服务不中断，不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读，阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权，您注册的用户名、电子邮件地址等个人资料，非经您亲自许可或根据相关法律、法规的强制性规定，阅读不会主动地泄露给第三方。</p><p>阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费，通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时，也使优秀网络文学得以迅速、更广泛的传播，从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商，并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权，应该及时向阅读提出书面权力通知，并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后，将会依法尽快断开相关链接内容。</p><h2>2. 项目展示</h2><p><br></p><p>GitHub 原项目地址：<a href=\"https://github.com/hectorqin/reader\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/hectorqin/reader</a>（617&nbsp;1.9 k star）</p><p>Demo 地址 (服务器位于日本) : [https://reader.nxnow.online(此域名 7 月过期) 更换为](<a href=\"https://reader.nxnow.online/\" rel=\"noopener noreferrer\" target=\"_blank\">https://reader.nxnow.online</a>(%E 6%AD%A 4%E 5%9 F%9 F%E 5%90%8 D 7%E 6%9 C%88%E 8%BF%87%E 6%9 C%9 F)%E 6%9 B%B 4%E 6%8 D%A 2%E 4%B 8%BA)&nbsp;<a href=\"https://read.nxnow.top/\" rel=\"noopener noreferrer\" target=\"_blank\">https://read.nxnow.top</a></p><p>Demo 测试账号 / 密码分别为&nbsp;guest&nbsp;/&nbsp;guest123, 也可自行创建账号添加书源</p><p>直接丢几个图片：&nbsp;<img src=\"https://pic.ccino.win/OB/2024/10/1730251620202410300926460.png\">&nbsp;<img src=\"https://pic.ccino.win/OB/2024/10/1730251615202410300926493.png\"></p><p><img src=\"https://pic.ccino.win/OB/2024/10/1730251641202410300927188.png\"></p><p><img src=\"https://pic.ccino.win/OB/2024/10/1730251654202410300927728.png\"></p><p><img src=\"https://pic.ccino.win/OB/2024/10/1730251670202410300927227.png\"></p><h2>3. 搭建环境</h2><ul><li>服务器：腾讯香港轻量应用服务器 24 元 / 月 VPS 一台展示用的服务器是&nbsp;<a href=\"https://netcup-sonderangebote.de/\" rel=\"noopener noreferrer\" target=\"_blank\">Netcup</a>&nbsp;特价款，本期搭建用的是&nbsp;<a href=\"https://loll.cc/vultr\" rel=\"noopener noreferrer\" target=\"_blank\">Vultr</a>&nbsp;的服务器，按小时计费，可随时销毁（最好是选<strong>非大陆的服务器</strong>）（<a href=\"https://loll.cc/tx\" rel=\"noopener noreferrer\" target=\"_blank\">腾讯轻量购买链接</a>）<a href=\"https://loll.cc/hz\" rel=\"noopener noreferrer\" target=\"_blank\">Hetzner 注册免费得 25 欧试用金有效期一个月</a></li><li>系统：Debian 10（<a href=\"https://blog.laoda.de/archives/useful-script#dd%E7%9B%B8%E5%85%B3\" rel=\"noopener noreferrer\" target=\"_blank\">DD 脚本</a>&nbsp;非必需 DD 用原来的系统也 OK）</li><li>域名一枚，并做好解析到服务器上（<a href=\"https://blog.laoda.de/archives/namesilo\" rel=\"noopener noreferrer\" target=\"_blank\">域名购买、域名解析</a>&nbsp;<a href=\"https://www.bilibili.com/video/BV1Sy4y1k7kZ/\" rel=\"noopener noreferrer\" target=\"_blank\">视频教程</a>）</li><li>安装好 Docker、Docker-compose（<a href=\"https://blog.laoda.de/archives/hello-docker#5%E5%AE%89%E8%A3%85dockerdocker-compose\" rel=\"noopener noreferrer\" target=\"_blank\">相关脚本</a>）</li><li>【非必需】提前安装好宝塔面板海外版本 aapanel，并安装好 Nginx（<a href=\"https://forum.aapanel.com/d/9-aapanel-linux-panel-6812-installation-tutorial\" rel=\"noopener noreferrer\" target=\"_blank\">安装地址</a>）</li><li>【非必需本教程采用】安装好 Nginx Proxy Manager（<a href=\"https://blog.laoda.de/archives/nginxproxymanager\" rel=\"noopener noreferrer\" target=\"_blank\">相关教程</a>）</li></ul><h2>4. 搭建视频</h2><p><br></p><p>YouTube：<a href=\"https://youtu.be/Yjtrl4zii5g\" rel=\"noopener noreferrer\" target=\"_blank\">https://youtu.be/Yjtrl4zii5g</a></p><p>哔哩哔哩：<a href=\"https://www.bilibili.com/BV16F411G757\" rel=\"noopener noreferrer\" target=\"_blank\">https://www.bilibili.com/BV16F411G757</a></p><h2>5. 搭建方式</h2><h3>5.1 搭建</h3><p><br></p><p>服务器初始设置，参考</p><p><a href=\"https://blog.laoda.de/archives/vps-script\" rel=\"noopener noreferrer\" target=\"_blank\"><strong>新买了一台服务器 “必须” 要做的 6 件小事</strong></a></p><p><a href=\"https://blog.laoda.de/archives/hello-docker\" rel=\"noopener noreferrer\" target=\"_blank\">【Docker 系列】不用宝塔面板，小白一样可以玩转 VPS 服务器！</a></p><pre class=\"ql-syntax\" spellcheck=\"false\">sudo -i # 切换到root用户\n\napt update -y  # 升级packages\n\napt install wget curl sudo vim git  # Debian系统比较干净，安装常用的软件\n</pre><p><br></p><p>创建一下安装的目录：</p><pre class=\"ql-syntax\" spellcheck=\"false\">mkdir -p /root/data/docker_data/reader\n\ncd /root/data/docker_data/reader\n\nnano docker-compose.yml\n</pre><p><br></p><p>docker-compose.yml&nbsp;来源<a href=\"https://github.com/hectorqin/reader/blob/master/docker-compose.yaml\" rel=\"noopener noreferrer\" target=\"_blank\">官方仓库</a>，内容如下：</p><h4><strong>自用版本</strong></h4><pre class=\"ql-syntax\" spellcheck=\"false\">version: '3.1'\nservices:\n\n# reader 在线阅读\n# 本人在线演示(服务器位于日本) : https://reader.nxnow.online(此域名7月过期)更换为 https://read.nxnow.top\n# 在线演示测试账号/密码分别为guest/guest123,也可自行创建账号添加书源\n# 书源参考 : https://github.com/NZESupB/ReadSource,书源合集下选一个合集进入网页后, Ctrl+S 保存至本地后导入网站即可,或者点击远程书源,将链接导入即可\n\n#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\n# 多用户版\n#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=注册邀请码\n# 多用户版 使用环境变量\n#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\n\n# 自用版\n#  read_own:\n#    image: hectorqin/reader\n#    container_name: reader_own\n#    restart: always\n#    ports:\n#      - 4395:8080\n#    volumes:\n#      - /home/reader/logs:/logs\n#      - /home/reader/storage:/storage\n#    environment:\n#      - SPRING_PROFILES_ACTIVE=prod\n#      - READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0\n# 多用户版\n read_all:\n image: hectorqin/reader\n container_name: reader #容器名 可自行修改\n restart: always\n ports:\n - 4396:8080 #4396端口映射可自行修改\n volumes:\n - /root/data/docker_data/reader/logs:/logs #log映射目录 /root/data/docker_data/reader/logs 映射目录可自行修改\n - /root/data/docker_data/reader/storage:/storage #数据映射目录 /root/data/docker_data/reader/storage 映射目录可自行修改\n environment:\n - SPRING_PROFILES_ACTIVE=prod\n - READER_APP_SECURE=true #开启登录鉴权，开启后将支持多用户模式\n - READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0\n - READER_APP_SECUREKEY=adminpwd  #管理员密码  可自行修改\n      #- READER_APP_INVITECODE=registercode #注册邀请码,如需要取消注释 可自行修改\n# 自动更新docker\n watchtower:\n image: containrrr/watchtower\n container_name: watchtower\n restart: always\n    # 环境变量,设置为上海时区\n environment:\n - TZ=Asia/Shanghai\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n command: reader watchtower --cleanup --schedule \"0 0 4 * * *\"\n    # 仅更新reader与watchtower容器,如需其他自行添加 '容器名' ,如:reader watchtower redis\n    # --cleanup 更新后清理旧版本镜像\n    # --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整\n</pre><p><br></p><h4>视频演示版本</h4><pre class=\"ql-syntax\" spellcheck=\"false\">version: '3.1'\nservices:\n\n# reader 在线阅读\n# 第三方在线演示(服务器位于日本)：https://reader.nxnow.top\n# 在线演示测试账号/密码分别为guest/guest123，也可自行创建账号添加书源，不定期删除长期未登录账号\n# 书源参考 : https://github.com/NZESupB/ReadSource，书源合集下选一个合集进入网页后，Ctrl+S 保存至本地后导入网站即可，或者点击远程书源，将链接导入即可\n\n# 单用户版\n#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\n# 多用户版\n#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\n\n reader:\n image: hectorqin/reader\n    #image: hectorqin/reader:openj9-latest #docker镜像，arm64架构和小内存机器可以使用\n container_name: reader #容器名 可自行修改\n restart: always\n    #限制镜像最大资源占用(可选) 低内存(&lt;=2G)可考虑限制 使用此方式启动需加--compatibility,例如   docker-compose --compatibility up -d\n    #deploy:\n      #resources:\n        #limits:  #最大限制资源\n          #cpus: '0.50' #cpu建议不做限制,保持注释即可,1表示100%\n          #memory: 1024M\n        #reservations:  #保留最小资源\n          #cpus: 0.25\n          #memory: 256M\n ports:\n - 4396:8080 #4396端口映射可自行修改\n volumes:\n - /root/data/docker_data/reader/logs:/logs #log映射目录 /home/reader/logs 映射目录可自行修改\n - /root/data/docker_data/reader/storage:/storage #数据映射目录 /home/reader/storage 映射目录可自行修改\n      #可配置默认书源,默认书源存放于数据映射目录中:storage/data/default/bookSource.json\n      #书源参考(大部分可通用):https://www.legado.top/blog/book-source\n      #wget -c https://namofree.gitee.io/yuedu3/legado3_booksource_by_Namo.json -O /home/reader/storage/data/default/bookSource.json\n environment:\n - SPRING_PROFILES_ACTIVE=prod\n - READER_APP_USERLIMIT=50 #用户上限,默认50\n - READER_APP_USERBOOKLIMIT=200 #用户书籍上限,默认200\n - READER_APP_CACHECHAPTERCONTENT=true #开启缓存章节内容 V2.0\n      # 下面都是多用户模式配置\n - READER_APP_SECURE=true #开启登录鉴权，开启后将支持多用户模式\n - READER_APP_SECUREKEY=adminpwd  #管理员密码  建议修改\n - READER_APP_INVITECODE=registercode #注册邀请码 建议修改,如不需要可注释或删除\n# 自动更新docker\n watchtower:\n image: containrrr/watchtower\n container_name: watchtower\n restart: always\n    # 环境变量,设置为上海时区\n environment:\n - TZ=Asia/Shanghai\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n command: reader watchtower --cleanup --schedule \"0 0 4 * * *\"\n    # 仅更新reader与watchtower容器,如需其他自行添加 '容器名' ,如:reader watchtower nginx\n    # --cleanup 更新后清理旧版本镜像\n    # --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整\n</pre><p><br></p><p>注意：VPS 的内存最好大于 1 G，可以再设置 1 G 的 SWAP，本项目内容存储在内存中～</p><p>设置 SWAP 可以用脚本:</p><pre class=\"ql-syntax\" spellcheck=\"false\">wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh &amp;&amp; chmod +x box.sh &amp;&amp; clear &amp;&amp; ./box.sh\n</pre><p><br></p><p><br></p><p>没问题的话，ctrl+x&nbsp;退出，按&nbsp;y&nbsp;保存，enter&nbsp;确认。</p><p>查看端口是否被占用，输入：</p><pre class=\"ql-syntax\" spellcheck=\"false\">lsof -i:4396  #查看4396端口是否被占用，如果被占用，重新自定义一个端口\n</pre><p><br></p><p><br></p><p>如果出现：</p><pre class=\"ql-syntax\" spellcheck=\"false\">-bash: lsof: command not found\n</pre><p><br></p><p><br></p><p>运行：</p><pre class=\"ql-syntax\" spellcheck=\"false\">apt install lsof  #安装lsof\n</pre><p><br></p><p><br></p><p>如果端口没有被占用，可以运行：</p><pre class=\"ql-syntax\" spellcheck=\"false\">docker-compose up -d\n</pre><p><br></p><p><br></p><p>访问：http:服务ip:4396&nbsp;即可。</p><p><strong>注意：</strong></p><p>1、不知道服务器 IP，可以直接在命令行输入：curl ip.sb，会显示当前服务器的 IP。</p><p>2、遇到访问不了的情况，请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。</p><h3>5.2 更新</h3><pre class=\"ql-syntax\" spellcheck=\"false\">cd /root/data/docker_data/reader  # 进入docker-compose所在的文件夹\ndocker-compose pull    # 拉取最新的镜像\ndocker-compose up -d   # 重新更新当前镜像\n</pre><p><br></p><p>利用 Docker-compose 搭建的应用，更新非常容易～</p><h3>5.3 卸载</h3><pre class=\"ql-syntax\" spellcheck=\"false\">sudo -i  # 切换到root\ncd /root/data/docker_data/reader  # 进入docker-compose所在的文件夹\ndocker-compose down    # 停止容器，此时不会删除映射到本地的数据\ncd ~\nrm -rf /root/data/docker_data/reader  # 完全删除映射到本地的数据\n</pre><p><br></p><p>利用 Docker-compose 搭建的应用，删除也非常容易～</p><h2>6. 反向代理（必须）</h2><p><br></p><p><strong>此项目和别的项目不同，必须采用 https 形式，否则浏览器无法加密，无法使用。</strong></p><h3>6.1 利用 Nginx Proxy Manager</h3><p><br></p><p>在添加反向代理之前，确保你已经完成了域名解析，不会的可以看这个：<strong>域名一枚，并做好解析到服务器上</strong>（<a href=\"https://blog.laoda.de/archives/namesilo\" rel=\"noopener noreferrer\" target=\"_blank\">域名购买、域名解析</a>&nbsp;<a href=\"https://www.bilibili.com/video/BV1Sy4y1k7kZ/\" rel=\"noopener noreferrer\" target=\"_blank\">视频教程</a>）</p><p>之后，登陆 Nginx Proxy Manager（不会的看这个：<strong>安装 Nginx Proxy Manager</strong>（<a href=\"https://blog.laoda.de/archives/nginxproxymanager\" rel=\"noopener noreferrer\" target=\"_blank\">相关教程</a>））</p><p><strong>注意：</strong></p><p>Nginx Proxy Manager（以下简称 NPM）会用到&nbsp;80、443&nbsp;端口，所以本机不能占用（比如原来就有 Nginx）</p><p>直接丢几张图：&nbsp;<img src=\"https://pic.ccino.win/OB/2024/10/1730251706202410300928342.png\"></p><p><img src=\"https://pic.ccino.win/OB/2024/10/1730251718202410300928510.png\">&nbsp;注意填写对应的&nbsp;域名、IP&nbsp;和&nbsp;端口，按文章来的话，应该是&nbsp;4396</p><p><strong>IP 填写：</strong></p><p>如果 Nginx Proxy Manager 和 reader 在同一台服务器上，可以在终端输入：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ip addr show docker0\n</pre><p><br></p><p><br></p><p>查看对应的 Docker 容器内部 IP。</p><p>否则直接填&nbsp;cryptgeon所在的服务器IP&nbsp;就行。&nbsp;<img src=\"https://pic.ccino.win/OB/2024/10/1730251738202410300928495.png\">&nbsp;再次打开，勾选这些：&nbsp;<img src=\"https://pic.ccino.win/OB/2024/10/1730251754202410300929869.png\"></p><p>然后就可以用域名来安装访问了。</p><h2>7. 使用教程</h2><p><br></p><p>看咕咕的视频，或者自己研究，看<a href=\"https://github.com/hectorqin/reader/blob/master/doc.md\" rel=\"noopener noreferrer\" target=\"_blank\">文档</a></p><h3>7.1 书源地址（请支持正版书籍）</h3><p><br></p><p><a href=\"https://github.com/XIU2/Yuedu\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/XIU2/Yuedu</a></p><p>数量不多，因为我觉得质量比数量更重要（当然我也不保证质量就一定多么好哈），我以前也用过那些几百上千个的书源列表，杂七杂八太乱了，质量参差不齐，而且正常情况下大家也就主用几个书源罢了。。。</p><p>https://blog.3cat.cc/142.html</p><p>本书源集成了 1000 + 个源，基本涵盖全网！</p><p>为了长久使用，请勿滥用！</p><p>书源：</p><pre class=\"ql-syntax\" spellcheck=\"false\">https://shuyuan.mgz6.cc/shuyuan/84083d2be227881b0e3b90b9cd01c685.json\n</pre><p><br></p><p>json&nbsp;的就是可以直接导入的</p><p>网址：</p><p>http://yck.mumuceo.com/yuedu/shuyuan/index.html</p><p>里面有很多书源</p><h2>8. 结尾</h2><p><br></p><p>祝大家用得开心，有问题可以去 GitHub 提&nbsp;<a href=\"https://github.com/hectorqin/reader/issues\" rel=\"noopener noreferrer\" target=\"_blank\">Issues</a>，也可以在评论区互相交流探讨。</p><p>同时，有能力给项目做贡献的同学，也欢迎积极<a href=\"https://github.com/hectorqin/reader/issues\" rel=\"noopener noreferrer\" target=\"_blank\">加入到项目</a>中来，贡献自己的一份力量！</p><h2>9. 参考资料</h2><p><br></p><p>GitHub 原项目地址：<a href=\"https://github.com/hectorqin/reader\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/hectorqin/reader</a>（617 star）</p><p><a href=\"https://hostloc.com/thread-1010700-1-3.html\" rel=\"noopener noreferrer\" target=\"_blank\">https://hostloc.com/thread-1010700-1-3.html</a></p><p><a href=\"https://github.com/XIU2/Yuedu\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/XIU2/Yuedu</a></p><p><a href=\"https://blog.3cat.cc/142.html\" rel=\"noopener noreferrer\" target=\"_blank\">https://blog.3cat.cc/142.html</a></p><p><br></p>","content_text":" 介绍\n\n\n\n\n安卓手机 APP 阅读3 服务器版，桌面端。\n\n后端 Kotlin + Spring Boot + Vert.x + Coroutine ；\n\n前端 Vue.js + Element。\n\nGitHub 开源项目，支持 Docker 搭建。\n\n\n1.1 特点\n\n\n\n\n咕咕这边简单在网上也抄~~~~ 搜集了一些特点，供大家参考（翻译自 GitHub 的 README）：\n\n * GitHub 完全开源，可以免费使用\n * Docker 搭建，10 分钟搞定\n * 书架管理\n * 搜索\n * 书海\n * 看书\n * 移动端适配\n * 换源\n * 翻页方式\n * 手势支持\n * 自定义主题\n * 自定义样式\n * WebDAV 同步\n * 文字替换过滤\n * 听书 <仅部分浏览器支持，手机端会因为锁屏而失效>\n * 用户配置备份恢复\n * 支持漫画\n * 支持音频\n * 书源失效检测\n * 导入本地 TXT、EPUB、UMD 格式的书籍\n * 书籍分组\n * RSS 订阅\n * 定时更新书架\n * 并发搜书\n * 本地书仓\n\n\n1.2 问题\n\n * 部分使用了 Javascript 的书源可能会报错，不支持 cookie 和 cache 功能\n * 不支持使用了 webview 的书源\n * 不支持书源登录功能\n\n\n1.3 技术栈\n\n\n\n\n后端 Kotlin + Spring Boot + Vert.x + Coroutine ；\n\n前端 Vue.js + Element\n\n\n1.4 免责声明（DISCLAIMER）\n\n\n\n\n阅读 是一款提供网络文学搜索的工具，为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。\n\n当您搜索一本书的时，阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关，阅读对其概不负责，亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供，您可能从第三方网页上获得其他服务，阅读对其合法性概不负责，亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读，不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。\n\n阅读不做任何形式的保证：不保证第三方搜索引擎的搜索结果满足您的要求，不保证搜索服务不中断，不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读，阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权，您注册的用户名、电子邮件地址等个人资料，非经您亲自许可或根据相关法律、法规的强制性规定，阅读不会主动地泄露给第三方。\n\n阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费，通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时，也使优秀网络文学得以迅速、更广泛的传播，从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商，并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权，应该及时向阅读提出书面权力通知，并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后，将会依法尽快断开相关链接内容。\n\n\n2. 项目展示\n\n\n\n\nGitHub 原项目地址：https://github.com/hectorqin/reader（617 1.9 k star）\n\nDemo 地址 (服务器位于日本) : [https://reader.nxnow.online(此域名 7 月过期)\n更换为](https://reader.nxnow.online(%E 6%AD%A 4%E 5%9 F%9 F%E 5%90%8 D 7%E 6%9\nC%88%E 8%BF%87%E 6%9 C%9 F)%E 6%9 B%B 4%E 6%8 D%A 2%E 4%B\n8%BA) https://read.nxnow.top\n\nDemo 测试账号 / 密码分别为 guest / guest123, 也可自行创建账号添加书源\n\n直接丢几个图片： [https://pic.ccino.win/OB/2024/10/1730251620202410300926460.png] [https://pic.ccino.win/OB/2024/10/1730251615202410300926493.png]\n\n[https://pic.ccino.win/OB/2024/10/1730251641202410300927188.png]\n\n[https://pic.ccino.win/OB/2024/10/1730251654202410300927728.png]\n\n[https://pic.ccino.win/OB/2024/10/1730251670202410300927227.png]\n\n\n3. 搭建环境\n\n * 服务器：腾讯香港轻量应用服务器 24 元 / 月 VPS\n   一台展示用的服务器是 Netcup 特价款，本期搭建用的是 Vultr 的服务器，按小时计费，可随时销毁（最好是选非大陆的服务器）（腾讯轻量购买链接）Hetzner\n   注册免费得 25 欧试用金有效期一个月\n * 系统：Debian 10（DD 脚本 非必需 DD 用原来的系统也 OK）\n * 域名一枚，并做好解析到服务器上（域名购买、域名解析 视频教程）\n * 安装好 Docker、Docker-compose（相关脚本）\n * 【非必需】提前安装好宝塔面板海外版本 aapanel，并安装好 Nginx（安装地址）\n * 【非必需本教程采用】安装好 Nginx Proxy Manager（相关教程）\n\n\n4. 搭建视频\n\n\n\n\nYouTube：https://youtu.be/Yjtrl4zii5g\n\n哔哩哔哩：https://www.bilibili.com/BV16F411G757\n\n\n5. 搭建方式\n\n\n5.1 搭建\n\n\n\n\n服务器初始设置，参考\n\n新买了一台服务器 “必须” 要做的 6 件小事\n\n【Docker 系列】不用宝塔面板，小白一样可以玩转 VPS 服务器！\n\nsudo -i # 切换到root用户\n\napt update -y  # 升级packages\n\napt install wget curl sudo vim git  # Debian系统比较干净，安装常用的软件\n\n\n\n\n\n创建一下安装的目录：\n\nmkdir -p /root/data/docker_data/reader\n\ncd /root/data/docker_data/reader\n\nnano docker-compose.yml\n\n\n\n\n\ndocker-compose.yml 来源官方仓库，内容如下：\n\n自用版本\n\nversion: '3.1'\nservices:\n\n# reader 在线阅读\n# 本人在线演示(服务器位于日本) : https://reader.nxnow.online(此域名7月过期)更换为 https://read.nxnow.top\n# 在线演示测试账号/密码分别为guest/guest123,也可自行创建账号添加书源\n# 书源参考 : https://github.com/NZESupB/ReadSource,书源合集下选一个合集进入网页后, Ctrl+S 保存至本地后导入网站即可,或者点击远程书源,将链接导入即可\n\n#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\n# 多用户版\n#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=注册邀请码\n# 多用户版 使用环境变量\n#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\n\n# 自用版\n#  read_own:\n#    image: hectorqin/reader\n#    container_name: reader_own\n#    restart: always\n#    ports:\n#      - 4395:8080\n#    volumes:\n#      - /home/reader/logs:/logs\n#      - /home/reader/storage:/storage\n#    environment:\n#      - SPRING_PROFILES_ACTIVE=prod\n#      - READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0\n# 多用户版\n read_all:\n image: hectorqin/reader\n container_name: reader #容器名 可自行修改\n restart: always\n ports:\n - 4396:8080 #4396端口映射可自行修改\n volumes:\n - /root/data/docker_data/reader/logs:/logs #log映射目录 /root/data/docker_data/reader/logs 映射目录可自行修改\n - /root/data/docker_data/reader/storage:/storage #数据映射目录 /root/data/docker_data/reader/storage 映射目录可自行修改\n environment:\n - SPRING_PROFILES_ACTIVE=prod\n - READER_APP_SECURE=true #开启登录鉴权，开启后将支持多用户模式\n - READER_APP_CACHECHAPTERCONTENT=true #是否开启缓存章节内容 V2.0\n - READER_APP_SECUREKEY=adminpwd  #管理员密码  可自行修改\n      #- READER_APP_INVITECODE=registercode #注册邀请码,如需要取消注释 可自行修改\n# 自动更新docker\n watchtower:\n image: containrrr/watchtower\n container_name: watchtower\n restart: always\n    # 环境变量,设置为上海时区\n environment:\n - TZ=Asia/Shanghai\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n command: reader watchtower --cleanup --schedule \"0 0 4 * * *\"\n    # 仅更新reader与watchtower容器,如需其他自行添加 '容器名' ,如:reader watchtower redis\n    # --cleanup 更新后清理旧版本镜像\n    # --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整\n\n\n\n\n\n视频演示版本\n\nversion: '3.1'\nservices:\n\n# reader 在线阅读\n# 第三方在线演示(服务器位于日本)：https://reader.nxnow.top\n# 在线演示测试账号/密码分别为guest/guest123，也可自行创建账号添加书源，不定期删除长期未登录账号\n# 书源参考 : https://github.com/NZESupB/ReadSource，书源合集下选一个合集进入网页后，Ctrl+S 保存至本地后导入网站即可，或者点击远程书源，将链接导入即可\n\n# 单用户版\n#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\n# 多用户版\n#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\n\n reader:\n image: hectorqin/reader\n    #image: hectorqin/reader:openj9-latest #docker镜像，arm64架构和小内存机器可以使用\n container_name: reader #容器名 可自行修改\n restart: always\n    #限制镜像最大资源占用(可选) 低内存(<=2G)可考虑限制 使用此方式启动需加--compatibility,例如   docker-compose --compatibility up -d\n    #deploy:\n      #resources:\n        #limits:  #最大限制资源\n          #cpus: '0.50' #cpu建议不做限制,保持注释即可,1表示100%\n          #memory: 1024M\n        #reservations:  #保留最小资源\n          #cpus: 0.25\n          #memory: 256M\n ports:\n - 4396:8080 #4396端口映射可自行修改\n volumes:\n - /root/data/docker_data/reader/logs:/logs #log映射目录 /home/reader/logs 映射目录可自行修改\n - /root/data/docker_data/reader/storage:/storage #数据映射目录 /home/reader/storage 映射目录可自行修改\n      #可配置默认书源,默认书源存放于数据映射目录中:storage/data/default/bookSource.json\n      #书源参考(大部分可通用):https://www.legado.top/blog/book-source\n      #wget -c https://namofree.gitee.io/yuedu3/legado3_booksource_by_Namo.json -O /home/reader/storage/data/default/bookSource.json\n environment:\n - SPRING_PROFILES_ACTIVE=prod\n - READER_APP_USERLIMIT=50 #用户上限,默认50\n - READER_APP_USERBOOKLIMIT=200 #用户书籍上限,默认200\n - READER_APP_CACHECHAPTERCONTENT=true #开启缓存章节内容 V2.0\n      # 下面都是多用户模式配置\n - READER_APP_SECURE=true #开启登录鉴权，开启后将支持多用户模式\n - READER_APP_SECUREKEY=adminpwd  #管理员密码  建议修改\n - READER_APP_INVITECODE=registercode #注册邀请码 建议修改,如不需要可注释或删除\n# 自动更新docker\n watchtower:\n image: containrrr/watchtower\n container_name: watchtower\n restart: always\n    # 环境变量,设置为上海时区\n environment:\n - TZ=Asia/Shanghai\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n command: reader watchtower --cleanup --schedule \"0 0 4 * * *\"\n    # 仅更新reader与watchtower容器,如需其他自行添加 '容器名' ,如:reader watchtower nginx\n    # --cleanup 更新后清理旧版本镜像\n    # --schedule 自动检测更新 crontab定时(限定6位crontab) 此处代表凌晨4点整\n\n\n\n\n\n注意：VPS 的内存最好大于 1 G，可以再设置 1 G 的 SWAP，本项目内容存储在内存中～\n\n设置 SWAP 可以用脚本:\n\nwget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh\n\n\n\n\n\n\n\n\n没问题的话，ctrl+x 退出，按 y 保存，enter 确认。\n\n查看端口是否被占用，输入：\n\nlsof -i:4396  #查看4396端口是否被占用，如果被占用，重新自定义一个端口\n\n\n\n\n\n\n\n\n如果出现：\n\n-bash: lsof: command not found\n\n\n\n\n\n\n\n\n运行：\n\napt install lsof  #安装lsof\n\n\n\n\n\n\n\n\n如果端口没有被占用，可以运行：\n\ndocker-compose up -d\n\n\n\n\n\n\n\n\n访问：http:服务ip:4396 即可。\n\n注意：\n\n1、不知道服务器 IP，可以直接在命令行输入：curl ip.sb，会显示当前服务器的 IP。\n\n2、遇到访问不了的情况，请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。\n\n\n5.2 更新\n\ncd /root/data/docker_data/reader  # 进入docker-compose所在的文件夹\ndocker-compose pull    # 拉取最新的镜像\ndocker-compose up -d   # 重新更新当前镜像\n\n\n\n\n\n利用 Docker-compose 搭建的应用，更新非常容易～\n\n\n5.3 卸载\n\nsudo -i  # 切换到root\ncd /root/data/docker_data/reader  # 进入docker-compose所在的文件夹\ndocker-compose down    # 停止容器，此时不会删除映射到本地的数据\ncd ~\nrm -rf /root/data/docker_data/reader  # 完全删除映射到本地的数据\n\n\n\n\n\n利用 Docker-compose 搭建的应用，删除也非常容易～\n\n\n6. 反向代理（必须）\n\n\n\n\n此项目和别的项目不同，必须采用 https 形式，否则浏览器无法加密，无法使用。\n\n\n6.1 利用 NGINX PROXY MANAGER\n\n\n\n\n在添加反向代理之前，确保你已经完成了域名解析，不会的可以看这个：域名一枚，并做好解析到服务器上（域名购买、域名解析 视频教程）\n\n之后，登陆 Nginx Proxy Manager（不会的看这个：安装 Nginx Proxy Manager（相关教程））\n\n注意：\n\nNginx Proxy Manager（以下简称 NPM）会用到 80、443 端口，所以本机不能占用（比如原来就有 Nginx）\n\n直接丢几张图： [https://pic.ccino.win/OB/2024/10/1730251706202410300928342.png]\n\n[https://pic.ccino.win/OB/2024/10/1730251718202410300928510.png] 注意填写对应的 域名、IP 和 端口，按文章来的话，应该是 4396\n\nIP 填写：\n\n如果 Nginx Proxy Manager 和 reader 在同一台服务器上，可以在终端输入：\n\nip addr show docker0\n\n\n\n\n\n\n\n\n查看对应的 Docker 容器内部 IP。\n\n否则直接填 cryptgeon所在的服务器IP 就行。 [https://pic.ccino.win/OB/2024/10/1730251738202410300928495.png] 再次打开，勾选这些： [https://pic.ccino.win/OB/2024/10/1730251754202410300929869.png]\n\n然后就可以用域名来安装访问了。\n\n\n7. 使用教程\n\n\n\n\n看咕咕的视频，或者自己研究，看文档\n\n\n7.1 书源地址（请支持正版书籍）\n\n\n\n\nhttps://github.com/XIU2/Yuedu\n\n数量不多，因为我觉得质量比数量更重要（当然我也不保证质量就一定多么好哈），我以前也用过那些几百上千个的书源列表，杂七杂八太乱了，质量参差不齐，而且正常情况下大家也就主用几个书源罢了。。。\n\nhttps://blog.3cat.cc/142.html\n\n本书源集成了 1000 + 个源，基本涵盖全网！\n\n为了长久使用，请勿滥用！\n\n书源：\n\nhttps://shuyuan.mgz6.cc/shuyuan/84083d2be227881b0e3b90b9cd01c685.json\n\n\n\n\n\njson 的就是可以直接导入的\n\n网址：\n\nhttp://yck.mumuceo.com/yuedu/shuyuan/index.html\n\n里面有很多书源\n\n\n8. 结尾\n\n\n\n\n祝大家用得开心，有问题可以去 GitHub 提 Issues，也可以在评论区互相交流探讨。\n\n同时，有能力给项目做贡献的同学，也欢迎积极加入到项目中来，贡献自己的一份力量！\n\n\n9. 参考资料\n\n\n\n\nGitHub 原项目地址：https://github.com/hectorqin/reader（617 star）\n\nhttps://hostloc.com/thread-1010700-1-3.html\n\nhttps://github.com/XIU2/Yuedu\n\nhttps://blog.3cat.cc/142.html\n\n\n","image":"https://cdn-blog-ccino-cc.ccino.cc/blog-ccino-cc/production/images/item-4b62373e5a3903c294b912d0d976957f.jpg","date_published":"2024-11-23T08:37:31.888Z","_microfeed":{"is_audio":false,"is_document":false,"is_external_url":true,"is_video":false,"is_image":false,"web_url":"https://blog.ccino.cc/i/10-app-VfgVvHNOzf6/","json_url":"https://blog.ccino.cc/i/VfgVvHNOzf6/json/","rss_url":"https://blog.ccino.cc/i/VfgVvHNOzf6/rss/","guid":"VfgVvHNOzf6","status":"published","itunes:episodeType":"full","date_published_short":"Sat Nov 23 2024","date_published_ms":1732351051888}}],"_microfeed":{"microfeed_version":"0.1.2","base_url":"https://blog.ccino.cc","categories":[],"subscribe_methods":[{"name":"RSS","type":"rss","url":"https://blog.ccino.cc/rss/","image":"https://blog.ccino.cc/assets/brands/subscribe/rss.png","enabled":true,"editable":false,"id":"7-6m9ozpyuG"},{"name":"JSON","type":"json","url":"https://blog.ccino.cc/json/","image":"https://blog.ccino.cc/assets/brands/subscribe/json.png","enabled":true,"editable":false,"id":"kFHio_oK78v"}],"description_text":"","copyright":"©2024","itunes:type":"episodic","items_sort_order":"newest_first"}}