推荐一个基于Docker的阅读器 - Codexa

先给出作者的Github地址: https://github.com/thehijacker/codexa
作者的截图: https://github.com/thehijacker/codexa#screenshots

简单说一下功能:

  1. 虽然是Docker搭建,但离线也可以阅读,并且连线后可以同步进度;
  2. 网页端的阅读器,比很多软件的质量都要好,并且有墨水屏模式;
  3. 可以和KOReader以及BookOrbit交互;
  4. 可以读取OPDS服务器的内容;
  5. 自定义字体和词典;
  6. 可以多用户。

我是比较倾向于看本地Epub的,因为很多在线书城要么收费,要么漫天广告,自己建立一个书库则是很好的选择。

之前一直用Calibre-Web,但我真的受够了,它的管理功能可能很好,但那个阅读界面简直就是灾难级别的,我甚至都没有用过几次它的在线阅读。

我把Codexa搭建在一个有IPv6的群晖上面,它可以很好的工作,即便有时无法连接IPv6,也可以继续阅读之前的图书。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
services:
  codexa:
    image: ghcr.io/thehijacker/codexa:dev
    container_name: codexa
    restart: unless-stopped
    network_mode: "bridge"
    ports:
      - "8300:3000"
    volumes:
      - /volume1/docker/codexa/data:/data
    environment:
      # REQUIRED - generate with: openssl rand -hex 64
      JWT_SECRET: "${JWT_SECRET}"

20260808更新:

关于Codexa与BookOrbit的连接问题

因为这两个都是基于Docker的,所有关于此类的问题,都可以用下面的方法解决。

问题出现原因

Codexa与BookOrbit都通过反代,指定到IPv6的DDNS上,用Codexa连接BookOrbit,会出现fetch failed。原因主要是源于Docker容器解析不了IPv6,又没有公网IPv4。

解决办法

  1. 放弃DDNS,只在内网使用,用局域网IPv4访问。(理论没问题,容器网络使用host模式,但可能会有端口冲突。)
  2. 将Codexa与BookOrbit都通过类似frp的工具映射到公网,需要公网IPv4,复杂且不好解决https证书。
  3. 最优解,示例如下:

先用Docker设定一个任意名字的网络,指定网段和网关,比如:

1
2
3
4
5
docker network create \
  --driver bridge \
  --subnet 172.22.0.0/16 \
  --gateway 172.22.0.1 \
  book

这样Docker里面就有了一个叫book的局域网,然后修改Codexa和BookOrbit的compose.yml,比如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
services:
  codexa:
    container_name: codexa
    ...
    networks:
      book:
        ipv4_address: 172.22.1.2

networks:
  book:
    external: true

指定网络为book,指定具体的IP为172.22.1.2,BookOrbit里面的两个services也都要指定具体IP,比如我这里App和数据库分别是172.22.2.1和172.22.2.2。等它们都跑起来以后,在Codexa连接BookOrbit的服务器URL里,填入http://172.22.2.1:3000,就是那个BookOrbit的App服务指定的IP,加上映射前的端口。这样两者可以通过内网直接连接,也不会影响IPv6 DDNS,两者单独都能使用。