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。
准备工作:
一台服务器,并获取该服务器公网 IP 。
Zotero 软件安装 Zotero PDF Translate 插件。
一、安装 Docker
在 Ubuntu/Debian 上安装 Docker 。
更新本地软件包索引:
1
sudo apt update && sudo apt upgrade -y
安装 docker 软件包,下载并安装 Docker Engine(包括 docker 命令行工具、containerd、runc 等依赖):
1
sudo apt install -y docker.io apparmor apparmor-utils
设置 Docker 服务开机自启动:
1
systemctl enable docker
立即启动 Docker 服务:
1
systemctl start docker
检查 docker 版本:
1
docker --version
验证 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 是服务运行的端口,可以修改为其他数值,镜像也可使用另一个备份镜像:
启动 DeepLX:
1
2
3
4
5docker run -d \
--name deeplx \
--restart always \
-p 1188:1188 \
ghcr.io/owo-network/deeplx:latest查看 Docker 所有的容器,包括未运行的容器。-p 则是静默模式,只显示容器编号:
1
docker ps -a
云服务器本机测试是否成功:
1
2
3
4
5
6
7
8curl 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"}
本地浏览器访问以下网址测试是否成功:
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
2
3
4
5
6
7cat > /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创建 systemd 服务:
1
2
3
4
5
6
7
8
9
10
11
12
13
14cat > /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启用脚本:
1
2
3systemctl daemon-reload
systemctl enable fix-deeplx-firewall
systemctl start fix-deeplx-firewall检查服务:
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 之前,最好移除所有的 容器、镜像、卷和网络。
删除容器 deeplx:
1
docker rm -f deeplx
运行下面的命令停止所有正在运行的容器,并且移除所有的 Docker 对象:
1
2docker container stop $(docker container ls -aq)
docker system prune -a --volumes使用 apt 卸载 Docker 软件包:
1
2sudo apt purge docker-ce
sudo apt autoremove
Docker 配置 Zotero 的 DeepLX 自定义翻译源
http://dongyx1128.github.io/2026/06/05/Docker配置Zotero的DeepLX自定义翻译源/

