小南瓜
小南瓜
发布于 2026-07-23 / 9 阅读
0
2

Koodo Reader 基于1Panel+OpenResty部署完整复盘总结

一、部署环境

服务器系统:Ubuntu 面板:1Panel v2.2.3 容器工具:Docker Web服务:OpenResty 程序:Koodo Reader 1.6.6 容器内部端口:8860 访问域名:bobkoodo.netapitest.com

二、完整部署步骤

1. 应用商店安装Koodo Reader

  1. 1Panel → 应用商店,搜索 koodo-reader

  2. 基础参数填写

    • 名称:koodo-reader
    • 端口:8860
    • ⚠️ 取消勾选【端口外部访问】(安全策略,不直接暴露容器端口到公网)
    • 重启策略:一直重启
  3. 点击确认安装

    安装完成后,仅能本地127.0.0.1:8860访问,外网无法直接打开,需要反向代理。

2. 创建网站、解析域名

  1. 域名服务商添加A记录:bobkoodo.netapitest.com 指向服务器公网IP
  2. 1Panel → 网站 → 添加站点,域名填入 bobkoodo.netapitest.com,运行环境选择【纯静态】

3. 申请SSL证书

  1. 网站 → 证书 → 申请证书
    • 主域名:bobkoodo.netapitest.com
    • ACME账户:Let’s Encrypt
    • 验证方式:HTTP
    • 勾选【自动续签】
  2. 申请前提:服务器安全组放行 TCP 80、443端口

4. Nginx反向代理配置(最终稳定方案)

核心冲突点:不要同时混用【面板可视化HTTPS】+【完整手写server配置】,二选一! 本次最终选用:完整手写Nginx配置,关闭面板HTTPS可视化开关 最终可用配置:

server {
    listen 80;
    server_name bobkoodo.netapitest.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name bobkoodo.netapitest.com;

    ssl_certificate /www/sites/bobkoodo.netapitest.com/ssl/fullchain.pem;
    ssl_certificate_key /www/sites/bobkoodo.netapitest.com/ssl/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    location / {
        proxy_pass http://127.0.0.1:8860;
        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;
        # WebSocket 核心配置,保证跨设备阅读进度同步
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

操作规范:

  1. 网站【配置文件】粘贴完整代码
  2. 切换到网站【HTTPS】页面,关闭【启用HTTPS】,防止面板自动生成配置造成冲突覆盖
  3. 保存并重载OpenResty

5. 持久化与电子书目录挂载(可选推荐)

  1. 终端执行创建电子书文件夹
mkdir -p /opt/ebook
  1. koodo-reader → 参数 → 容器设置 → 添加挂载
    • 宿主机路径:/opt/ebook
    • 容器路径:/books
  2. 重启容器,网页端Koodo新增书库,路径填写 /books,支持服务器直接存放电子书,无需网页逐个上传。

三、部署全程遇到的问题 + 解决方案

问题1:手动填写宝塔风格证书路径,Nginx启动报错

报错信息cannot load certificate xxx/fullchain.pem: No such file or directory 原因:/www/server/panel/vhost/cert/ 是宝塔面板路径,1Panel证书目录不一样,直接复制网上通用宝塔配置导致路径失效。 解决: 方式A:使用1Panel证书真实路径; 方式B:不要手动硬编码证书路径,交给面板自动管理(图形化方案)。

问题2:修改配置文件后,网站HTTPS开关自动消失

原因: 1Panel两套机制冲突: ① 面板HTTPS可视化开关:自动生成ssl证书相关代码 ② 手动全量覆盖配置文件,会删除面板自动生成的代码;面板检测不到自动生成SSL代码,界面HTTPS开关自动取消勾选。 ✅ 铁律:两种模式只能选一种

  • 模式1(图形化):配置文件只追加location参数,不手写完整server块,HTTPS全部面板界面操作
  • 模式2(手写配置):完整编写所有server、ssl、跳转代码,网站HTTPS页面开关必须关闭,不要再点击保存

问题3:网页报错 ERR_TOO_MANY_REDIRECTS 重定向死循环

错误配置示范:单个server同时监听80和443,统一强制跳转https,https访问进来也会继续跳转,无限循环。 解决:拆分两个server块

  • server1:仅listen 80,负责http跳转https
  • server2:仅listen 443 ssl,处理反向代理业务

问题4:Firefox访问正常,Chrome浏览器一直标记「不安全」

现象:证书本身合法有效(Let’s Encrypt、域名匹配、未过期),新浏览器无痕窗口访问正常,主力Chrome提示不安全。 根因:调试阶段多次SSL配置报错,Chrome缓存了历史错误安全标记,不会自动刷新。 解决方案:

  1. 页面地址栏不安全图标 → 网站设置 → 清除该站点数据
  2. 完全退出Chrome进程,重启浏览器; 临时方案:Ctrl+Shift+R 强制刷新页面。

问题5:跨设备阅读进度无法同步

原因:缺少WebSocket代理配置。 解决:location内部必须增加三行核心代码

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

四、重要避坑清单(长期维护参考)

  1. 容器安装时,永远不要勾选「端口外部访问」,依靠反向代理访问,提升安全;
  2. 不要网上随便复制宝塔Nginx配置直接粘贴进1Panel,目录结构不通用;
  3. 不要同时开启「面板HTTPS可视化」+「手写完整Nginx ssl配置」,二者互斥;
  4. Let’s Encrypt证书依赖80端口做HTTP验证,安全组务必长期放行TCP 80、443;
  5. Koodo务必设置登录密码,禁止无密码外网访问;
  6. 调整Nginx配置后,记得重载OpenResty,修改不重载不会生效。

五、部署完成验证清单

✅ HTTPS正常访问,地址栏显示安全小锁 ✅ HTTP访问自动跳转到HTTPS ✅ 多设备登录同一账号,阅读进度实时同步 ✅ 电子书目录挂载生效,可读取服务器本地书籍 ✅ 服务器重启后,Koodo容器自动启动


评论