- 确认端口映射正确(默认
6680:3000) - 检查防火墙是否放行 6680 端口
- 如果使用 NAS,确认 Docker 服务已正确启动
- 查看日志排查错误:
docker compose logs -f
通常是目录权限问题,而非内存不足。Docker 环境下 docker-entrypoint.sh 会自动修复权限。手动运行时请确保 data/ 目录对当前用户可写。
三种方式:
- 文件目录 — 将文件放入
comics/目录,系统自动扫描入库 - Web 上传 — 通过 Web UI 上传按钮直接上传文件
- 额外目录 — 在 设置 → 额外漫画目录 中添加更多路径(Docker 需先挂载对应目录)
缩略图依次使用 cwebp、ffmpeg,均不可用时自动降级为 Go 原生 JPEG。Docker 镜像已内置首选的 cwebp。如仍不显示,请在 系统诊断 查看实际编码器状态,并在 设置 中手动触发缩略图批量生成。
PDF 渲染依次使用 pdftoppm、mutool、ImageMagick convert。Docker 镜像已内置 poppler-utils 和 mupdf-tools;非 Docker 部署优先安装 poppler-utils。
进入 设置 → AI 面板,选择供应商、填入 API Key、选择模型,点击「测试连接」验证后保存即可。AI 功能完全可选,不配置不影响任何核心功能。
使用支持 OPDS 的阅读器(如 KOReader、Moon+ Reader),添加 OPDS 目录地址:
http://你的IP:6680/api/opds
Mihon 可通过第三方 OPDS 插件使用同一地址。客户端要求用户名和密码时,请填写 NowenReader 用户名,并把该用户创建的完整 API Key 作为密码;不要填写账户登录密码。在不可信局域网或公网使用时,请通过 HTTPS 访问。
OPDS 目录只包含已启用漫画书库中的受支持文件,且用户必须拥有对应书库的下载权限。小说书库、仅可查看的书库和已停用书库不会出现在目录中。根目录分别提供“Collections”(管理员维护的合集)和“Directory Works”(按文件夹识别的目录作品);同一本漫画可以同时声明所属目录作品及一个或多个合集,客户端是否自动将其合并展示取决于客户端实现。
当前同时支持 OPDS 1.2 文件获取和 OPDS-PSE 1.2 逐页阅读。CBZ/ZIP、CBR/RAR、CB7/7Z、PDF 以及已识别为图片漫画的 EPUB、MOBI、AZW3 可以按页返回 JPEG;文本小说仍只提供原始文件下载。逐页请求不会自动写入阅读进度,因为 OPDS 客户端可能预加载后续页面。
取决于是否选择了目标书库:
- 选择了书库:文件写入该书库的
rootPath目录 - 未选择书库(默认目录):漫画文件写入
comicsDir,小说文件写入novelsDir
上传后文件不会立即出现在列表中,需要等待系统自动扫描或手动点击"扫描目录"触发入库。
只有满足以下条件的书库才会出现在上传选择列表中:
- 书库已启用(
enabled = true) - 书库的
rootPath已配置且非空 - 书库类型与当前页面匹配(漫画页只显示 comic/mixed 书库,小说页只显示 novel/mixed 书库)
请在管理后台 → 书库管理中检查对应书库的配置。
文件会写入默认目录(漫画 → comicsDir,小说 → novelsDir),与旧版行为完全一致。这对于还没有创建书库的老用户来说是默认且安全的行为。
上传接口只负责将文件保存到磁盘,不会直接写入数据库。文件入库依赖系统的同步/扫描流程(通常在上传成功后自动触发 POST /api/sync)。如果仍未出现,请手动点击首页的"扫描目录"按钮。
推荐方式:使用书库管理
在管理后台 → 书库管理中创建独立书库(漫画库/小说库/混合库),支持目录浏览选择、公开/私有访问控制、自动扫描开关。管理员还可以为不同用户分配不同的书库访问权限。
兼容方式:旧版目录配置
旧版的环境变量和"站点设置 → 额外漫画目录"仍然可用:
-
Docker 环境:先在
docker-compose.yml中挂载对应宿主机目录到容器内路径volumes: - /your/manga/path1:/mnt/manga - /your/manga/path2:/mnt/comics2
-
在 Web UI 设置 → 额外漫画目录 中添加容器内的挂载路径
-
系统会自动扫描所有配置的目录
# Docker 部署
docker compose pull
docker compose up -d
# 二进制部署
# 下载最新 Release,替换二进制文件后重启即可数据库升级自动完成,无需手动操作。
NAS 上挂载主机目录时常因 UID/GID 不匹配导致权限问题。优先在 Compose 文件的 environment 中配置为宿主机文件的实际 UID/GID:
environment:
- PUID=1001 # 替换为你 NAS 上的 UID
- PGID=1001 # 替换为你 NAS 上的 GID
- UMASK=0002可通过 ls -ln 查看实际 UID/GID。启动日志会检查 appuser 是否真的能写入 /data、缓存目录和书库目录;如果显示仍不可写,说明 Docker 容器内用户和 NAS 挂载权限仍未对齐。
如果是 SMB/NFS/部分 NAS 共享目录,文件系统可能禁止容器内 chown。在确认目录确实要允许容器写入后,可以开启宽松回退:
environment:
- PERMISSION_FIX_MODE=relaxed另外,书库管理里要填写容器内路径,不是宿主机路径。例如 compose 中写的是:
volumes:
- /volume1/comics:/app/comics那么 Web UI 里的书库根目录应填写 /app/comics,不要填写 /volume1/comics。
数据库默认位于 ${DATA_DIR}/nowen-reader.db(Docker 内为 /data/nowen-reader.db)。
强烈建议定期备份此文件,这里存储了:
- 所有用户、阅读历史
- 收藏、评分、阅读进度
- 标签、分类、合并分组
- 元数据修改
直接备份 .db 文件即可,无需额外导出。
实际日常占用通常在 100-200 MB。NAS 配置文件 (docker-compose.nas.yml) 默认设置 512 MB 内存上限,足够流畅运行。
在漫画阅读器中打开设置面板,找到「图片滤镜」区域。可以拖动亮度、对比度、灰度滑块实时调整,也可以一键应用预设(夜间护眼、老漫画增强、黑白增强)。设置会自动保存。
在 Webtoon 模式下双击图片区域即可放大到 200%,再次双击还原。放大状态下可以单指拖拽平移查看细节,右下角显示缩放比例。
漫画书签保存在浏览器 localStorage 中,按漫画 ID 分组存储。每本漫画的书签互不影响,刷新页面后仍然保留。目前不支持跨设备同步。
是的。每个用户的「想读」「在读」「已读完」状态完全独立,不会互相影响。多个用户看同一本漫画,各自标记的状态不会覆盖。
这是正常行为。阅读状态是用户级的,每个用户有自己独立的状态。如果您想让所有用户看到相同的阅读状态,请注意这不是当前设计的目标——每个用户的阅读习惯应该是私人的。
- 🐛 GitHub Issues
- 💡 GitHub Discussions
- 💬 QQ 交流群:1093473044