用 LibreTranslate 搭建私人翻译入口:Docker 部署、语言模型与译文核对

部署中英文私人翻译入口,持久保存语言模型,测试 API,核对技术术语和译文条件。

·7 min自托管
土耳其 VDS,完整 root 权限|BRNCHOST · 自管服务器
建站开服,云上轻松起步|雨云 RCS · 宝塔 / 1Panel 预装
低价年付,搭起你的应用|RackNerd · KVM VPS · SSD 存储
香港轻量,按配置选型|晚安云 · 云服务器
NVMe 机型,关注磁盘 I/O|野草云 · 香港 VPS
大陆优化,连接海外应用|搬瓦工 · CN2 GIA / CTGNet 套餐
读文件、写文档、跑任务|WorkBuddy · AI 工作台
CVM 云主机,配置按需选|腾讯云 · 云服务器
中国方向优化,认准系列|DMIT · Premium / CN2 GIA
双 ISP 住宅 VPS|丽萨主机 · 原生 IP · 多地区产品
每周自动异地备份|Evoxt · 高频 CPU · 云服务器
京东云轻量云主机:2核2G,129元/年,新人限购1台

读英文文档时,有些段落只需要快速看懂大意,不想每次复制到不同网站。LibreTranslate 可以在自己管理的服务器上提供网页和翻译 API,使用 Argos Translate 的语言模型处理文本,适合为自己的工具或小范围成员提供一个固定入口。

部署成功不等于翻译质量适合所有用途。术语、否定关系、数字和代码上下文都可能被误译。技术操作仍对照原文,合同、医学或其他需要专业准确性的材料另行核对,不把返回了一段流畅中文当作内容已经正确。

LibreTranslate 官方翻译界面示例

官方图片用于展示输入和输出区域。图中演示的是英西翻译,不代表其他语言对具有相同效果。

建站开服,云上轻松起步|雨云 RCS · 宝塔 / 1Panel 预装

部署前先确认 VPS 的磁盘、内存和公网访问条件,也可以查看雨云云服务器;注册时填写优惠码 KuZhuJi。

先加载自己需要的语言

默认安装可用语言会增加下载、磁盘与启动负担。本文先选择 en,zh,分别对应英文与中文;需要其他语言时,先看当前支持列表,再增加。服务实际提供哪些语言,以运行实例的 /languages 响应为准。

mkdir -p ~/services/libretranslate
cd ~/services/libretranslate

保存 compose.yaml:

services:
  libretranslate:
    image: libretranslate/libretranslate:latest
    environment:
      LT_LOAD_ONLY: "en,zh"
      LT_CHAR_LIMIT: "3000"
      LT_REQ_LIMIT: "20"
    ports:
      - "127.0.0.1:5008:5000"
    volumes:
      - models:/home/libretranslate/.local
    restart: unless-stopped
volumes:
  models:

字符数和每客户端请求频率是示例限制,按自己的使用情况调整,不是软件推荐的通用容量。模型放进命名卷,避免每次重建都从零开始下载。命名卷的数据不在 Compose 文件里,执行删除卷的命令会影响持久内容。

docker compose config --quiet
docker compose up -d
docker compose logs --tail=100 libretranslate
ssh -L 15008:127.0.0.1:5008 user@your-server

本机打开 http://127.0.0.1:15008。初次启动需要下载和加载模型,先看日志,不因为短时间没有页面就连续重建。可用资源、网络和语言数量会影响这一过程,不能用某一次启动时间保证所有 VPS 都相同。

私人使用先不开放匿名公网接口

基础配置通过 SSH 访问,没有建立公开收费或公共翻译服务。域名访问需要 HTTPS,并安排认证或网络访问控制。请求限制可以减少负担,但不能替代谁有权调用的规则。

服务在自己的服务器处理文本,不代表数据不会出现在日志、终端历史或自己的业务系统里。写脚本前明确哪些内容允许进入它,调试时不要把完整私人原文打印到公共日志。文本送到 VPS 后,也已经离开本机。

如果以后启用应用 API 密钥,按官方密钥管理方案配置并持久保存密钥数据库。网页访问规则与 API 调用规则需要分别测试,开启一个选项不等于所有路由都已受同一限制。

准备独立实例时,可在雨云选择适合的云服务器配置,优惠码 KuZhuJi。配置按实际任务选择,数据库和附件另做备份。

先查看语言,再发短请求

在服务器的另一个终端执行:

curl --fail --silent --show-error http://127.0.0.1:5008/languages
curl --fail --silent --show-error \
  -H 'Content-Type: application/json' \
  -d '{"q":"The backup finished successfully.","source":"en","target":"zh","format":"text"}' \
  http://127.0.0.1:5008/translate

确认返回可用语言和翻译字段,再尝试自己的短文本。语言列表不满足预期时,检查模型下载和加载日志,不通过修改前端名称假装已经提供对应模型。

自动检测适合一般输入,短句、专有名词与混合语言可能产生歧义。已知原文语言时明确指定,保留原文与译文对应关系。批量处理之前,先验证一条请求的编码、换行和返回格式。

翻译请求、语言模型与人工核对关系示意

译文是阅读辅助材料。模型处理结果仍需要对照原文,特别是后续将它用于操作、发布或交付时。

技术文档按句意核对

选几段自己熟悉的文字作回归样本:一条正常说明、一条带否定的限制、一条包含版本号与参数的操作条件。把代码块、命令、路径和标识符保留原样,不把它们和普通说明一起改成中文。

数字单位尤其容易影响实际判断。模型输出的“至少”“最多”“不得”“除非”等关系词,逐句与原文对照。译文看着顺,不代表条件方向没有变化;比较表和多项限定也要检查是否漏了一项。

长文分段时保留上下文,别把半句话单独送进去。需要统一术语,可以在自己的工作记录中维护词汇表,再人工修订译文。不要在没有评估样本时宣称比另一家翻译服务更准确。

建站开服,云上轻松起步|雨云 RCS · 宝塔 / 1Panel 预装

需要增加服务器时,可以打开雨云选购页面,填写优惠码 KuZhuJi;迁移前保留数据与原有部署配置。

延迟与并发从小批量观察

先用几条短请求看实际占用,再尝试常见长度。不同语言模型、文本长度与并发数会改变 CPU 和内存需求。没有测量之前,不给一个固定内存配置贴上“轻松支撑团队”的保证。

调用方设置超时,并区分请求失败、限流与成功返回。连续重试长文本会进一步增加负载,失败时保留错误状态,按规则退避。避免让网站的一次批量翻译同时挤占数据库和正常页面资源。

增加语言不只影响磁盘,也可能改变启动及运行内存。资源有限时先保留实际需要的语言,模型升级后重新检查样本。软件版本与模型版本分别记录,后续结果变化时才知道是哪一层改变。

模型缓存与配置分别保存

本例没有启用 API 密钥数据库。部署记录保存 Compose、软件版本和所需语言;模型卷用于减少重新下载,不把它当作业务文本档案。需要备份模型时,暂停应用,用原镜像读取命名卷:

mkdir -p backups
docker compose stop libretranslate
docker compose run --rm --no-deps --user 0:0 --entrypoint sh \
  -v "$PWD/backups:/backup" libretranslate \
  -c 'tar -czf /backup/models.tar.gz -C /home/libretranslate .local'
docker compose start libretranslate

备份由容器 root 写出,宿主机核对属主并限制访问,另存部署文件。恢复时先检查语言列表与短请求,再比较回归样本;后来增加密钥数据库或外部依赖后,恢复材料也要随之扩展。保留原文的工作流程,比只保存某次译文更容易重新核对。