Docker 配置 Zotero 的 DeepLX 自定义翻译源

  DeepL 最近封杀了大量基于旧接口的调用方式,导致很多 DeepLX 用户出现 429、503 错误。DeepLX 现在改用了 Chrome 插件正在使用的新接口,因此暂时恢复正常。

  教程依旧使用云服务器搭建,修改之前 DeepLX 调用的老接口 www2.deepl.com/jsonrpc,使用 DeepL 官网使用的 WebSocket + SignalR 进行实时通信。

  简介:

  本次修改使用 DeepL Chrome 插件调用的接口 oneshot-free.www.deepl.com/v1/translate ,即直接模仿 Chrome 插件,TLS 指纹伪装为 Chrome 插件,调用 Chrome 插件接口来实现免费的 DeepLX API。

准备工作

  1. 一台服务器,并获取该服务器公网 IP 。

  2. Zotero 软件安装 Zotero PDF Translate 插件。

一、安装 Docker

在 Ubuntu/Debian 上安装 Docker 。

  1. 更新本地软件包索引:

    1
    sudo apt update && sudo apt upgrade -y
  2. 安装 docker 软件包,下载并安装 Docker Engine(包括 docker 命令行工具、containerd、runc 等依赖):

    1
    sudo apt install -y docker.io apparmor apparmor-utils
  3. 设置 Docker 服务开机自启动:

    1
    systemctl enable docker
  4. 立即启动 Docker 服务:

    1
    systemctl start docker
  5. 检查 docker 版本:

    1
    docker --version
  6. 验证 Docker 的状态:

    1
    systemctl status docker

    输出将会显示以下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ● docker.service - Docker Application Container Engine
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
    Active: active (running) since Sat 2026-06-05 14:29:09 CST; 32s ago
    TriggeredBy: ● docker.socket
    Docs: https://docs.docker.com
    Main PID: 134876 (dockerd)
    Tasks: 25
    Memory: 47.7M
    CGroup: /system.slice/docker.service
    ├─134876 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    ├─137446 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.2 -container-port 80
    └─137451 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8080 -container-ip 172.17.0.2 -container-port 80
    ······

二、拉取 DeepLX 镜像

拉取 owo-network 最新版本 DeepLX 镜像:

1
docker pull ghcr.io/owo-network/deeplx:latest

如果 GitHub Container Registry 拉不动:

1
docker pull missuo/deeplx:latest

三、部署 DeepLX 服务

根据不同的硬件架构使用不同的命令进行网络端口映射,其中 1188 是服务运行的端口,可以修改为其他数值,镜像也可使用另一个备份镜像:

  1. 启动 DeepLX:

    1
    2
    3
    4
    5
    docker run -d \
    --name deeplx \
    --restart always \
    -p 1188:1188 \
    ghcr.io/owo-network/deeplx:latest
  2. 查看 Docker 所有的容器,包括未运行的容器。-p 则是静默模式,只显示容器编号:

    1
    docker ps -a
  3. 云服务器本机测试是否成功:

    1
    2
    3
    4
    5
    6
    7
    8
    curl http://127.0.0.1:1188/translate \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
    "text":"Hello World",
    "source_lang":"EN",
    "target_lang":"ZH"
    }'

    返回类似以下内容即成功:

    1
    {"alternatives":null,"code":200,"data":"你好,世界","id":1780641133370,"method":"Free","source_lang":"EN","target_lang":"ZH"}
  4. 本地浏览器访问以下网址测试是否成功:

    1
    http://203.31.198.163:1188

    返回类似以下内容即成功:

    1
    {"code":200,"message":"DeepL Free API, Developed by sjlleo and missuo. Go to /translate with POST. http://github.com/OwO-Network/DeepLX"}

四、配置 Zotero

打开 Zotero - 编辑 - 设置 - 翻译 - 翻译引擎 - DeepLX(API)。该引擎默认不需要密钥,一般留空,若不允许为空,可填 None 或者 dummy 。在配置里的接口处输入以下内容:

  • 服务器部署,则接口处填写 公网 IP + Port :

    1
    http://203.31.198.163:1188/translate
  • 在本地部署,则接口处填写 本地 IP + Port:

    1
    http://127.0.0.1:1188/translate

五、开机自动修复自动修复DOCKER-USER规则脚本

配置服务后,容易出现断联的情况,设置开机自动修复防火墙链脚本:

  1. 写入脚本:

    1
    2
    3
    4
    5
    6
    7
    cat > /root/fix-deeplx-firewall.sh <<'EOF'
    #!/bin/bash
    iptables -F DOCKER-USER
    iptables -I DOCKER-USER 1 -p tcp --dport 1188 -j ACCEPT
    EOF

    chmod +x /root/fix-deeplx-firewall.sh
  2. 创建 systemd 服务:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    cat > /etc/systemd/system/fix-deeplx-firewall.service <<'EOF'
    [Unit]
    Description=Fix DeepLX Docker firewall rule
    After=docker.service
    Requires=docker.service

    [Service]
    Type=oneshot
    ExecStart=/root/fix-deeplx-firewall.sh
    RemainAfterExit=yes

    [Install]
    WantedBy=multi-user.target
    EOF
  3. 启用脚本:

    1
    2
    3
    systemctl daemon-reload
    systemctl enable fix-deeplx-firewall
    systemctl start fix-deeplx-firewall
  4. 检查服务:

    1
    iptables -L DOCKER-USER -n --line-numbers

    返回内容存在以下字段即可:

    1
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1188

六、卸载 Docker

在卸载 Docker 之前,最好移除所有的 容器、镜像、卷和网络

  1. 删除容器 deeplx:

    1
    docker rm -f deeplx
  2. 运行下面的命令停止所有正在运行的容器,并且移除所有的 Docker 对象:

    1
    2
    docker container stop $(docker container ls -aq)
    docker system prune -a --volumes
  3. 使用 apt 卸载 Docker 软件包:

    1
    2
    sudo apt purge docker-ce
    sudo apt autoremove
发布于

2026-06-05

更新于

2026-06-05

许可协议

评论

:D 一言句子获取中...