From 0120d799a57e871dea067f4eb741e07845fbd354 Mon Sep 17 00:00:00 2001 From: guoqingshan <704299375@qq.com> Date: Sat, 1 Aug 2026 20:44:25 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0LibreTranslate=20Cond?= =?UTF-8?q?a=E9=83=A8=E7=BD=B2=E6=96=B9=E6=A1=88=EF=BC=88Ubuntu=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LibreTranslate-Conda部署方案-Ubuntu.md | 423 +++++++++++++++++++++++++ 1 file changed, 423 insertions(+) create mode 100644 LibreTranslate-Conda部署方案-Ubuntu.md diff --git a/LibreTranslate-Conda部署方案-Ubuntu.md b/LibreTranslate-Conda部署方案-Ubuntu.md new file mode 100644 index 0000000..6f34b7b --- /dev/null +++ b/LibreTranslate-Conda部署方案-Ubuntu.md @@ -0,0 +1,423 @@ +# LibreTranslate Conda 部署方案(Ubuntu) + +## 1. 方案说明 + +国内服务器通常无法直接拉取 Docker Hub 镜像,因此本方案使用: + +```text +Ubuntu + Miniconda + Python 虚拟环境 + LibreTranslate + systemd +``` + +部署完成后: + +- LibreTranslate 通过 systemd 自动启动 +- 开机自启 +- 支持 API Key 管理 +- 可作为项目“自定义翻译接口” + +## 2. 安装 Miniconda + +### 2.1 下载并安装 + +x86_64 服务器: + +```bash +cd /tmp +wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh +sudo bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3 +``` + +ARM64 服务器: + +```bash +wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh +sudo bash Miniconda3-latest-Linux-aarch64.sh -b -p /opt/miniconda3 +``` + +### 2.2 初始化 conda + +```bash +sudo /opt/miniconda3/bin/conda init bash +source ~/.bashrc +``` + +检查版本: + +```bash +conda --version +``` + +## 3. 创建 LibreTranslate 环境 + +```bash +conda create -n libretranslate python=3.10 -y +conda activate libretranslate +``` + +> 建议使用 Python 3.10;LibreTranslate 在部分 Ubuntu 的 Python 3.12 上存在兼容问题。 + +## 4. 安装 LibreTranslate + +```bash +pip install --upgrade pip +pip install libretranslate +``` + +验证安装: + +```bash +which libretranslate +ltmanage --help +``` + +conda 环境内的命令路径通常是: + +```text +/opt/miniconda3/envs/libretranslate/bin/libretranslate +/opt/miniconda3/envs/libretranslate/bin/ltmanage +``` + +## 5. 准备数据和日志目录 + +```bash +sudo mkdir -p /opt/libretranslate/db +sudo mkdir -p /opt/libretranslate/logs +sudo chmod 755 /opt/libretranslate +sudo chown -R $USER:$USER /opt/libretranslate +``` + +## 6. 首次下载语言模型 + +先手动启动一次,让服务下载中文、西班牙语、英语模型: + +```bash +conda activate libretranslate +cd /opt/libretranslate +libretranslate \ + --host 127.0.0.1 \ + --port 5001 \ + --load-only zh,es,en \ + --update-models +``` + +首次启动会下载模型,需要等待几分钟。看到类似输出后说明成功: + +```text +Running on http://127.0.0.1:5001 +``` + +测试: + +```bash +curl -X POST http://127.0.0.1:5001/translate \ + -H "Content-Type: application/json" \ + -d '{"q":"我喜欢篮球","source":"zh","target":"es"}' +``` + +正常返回: + +```json +{"translatedText":"Me gusta el baloncesto"} +``` + +测试完成后按 `Ctrl+C` 停止。 + +## 7. 创建服务运行用户 + +```bash +sudo useradd -r -s /usr/sbin/nologin -d /opt/libretranslate libretranslate +sudo chown -R libretranslate:libretranslate /opt/libretranslate +``` + +## 8. 创建 systemd 服务 + +创建服务文件: + +```bash +sudo tee /etc/systemd/system/libretranslate.service > /dev/null <<'EOF' +[Unit] +Description=LibreTranslate Machine Translation API +After=network.target + +[Service] +Type=simple +User=libretranslate +Group=libretranslate +WorkingDirectory=/opt/libretranslate +Environment=HOME=/opt/libretranslate +Environment=LT_LOAD_ONLY=zh,es,en +Environment=LT_UPDATE_MODELS=true +Environment=LT_API_KEYS=true +Environment=LT_API_KEYS_DB_PATH=/opt/libretranslate/db/api_keys.db +Environment=LT_REQ_LIMIT=60 +Environment=LT_CHAR_LIMIT=2000 +ExecStart=/opt/miniconda3/envs/libretranslate/bin/libretranslate --host 127.0.0.1 --port 5001 +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +``` + +说明: + +```text +LT_LOAD_ONLY=zh,es,en 只加载中文、西班牙语、英语模型 +LT_UPDATE_MODELS=true 启动时允许更新/下载模型 +LT_API_KEYS=true 启用 API Key +LT_REQ_LIMIT=60 每分钟请求限制 +LT_CHAR_LIMIT=2000 单次最大字符数 +``` + +## 9. 启动并设置开机自启 + +```bash +sudo systemctl daemon-reload +sudo systemctl enable --now libretranslate +sudo systemctl status libretranslate +``` + +常用命令: + +```bash +sudo systemctl start libretranslate +sudo systemctl stop libretranslate +sudo systemctl restart libretranslate +sudo journalctl -u libretranslate -f +``` + +## 10. API Key 管理 + +### 10.1 创建 API Key + +```bash +sudo -u libretranslate /opt/miniconda3/envs/libretranslate/bin/ltmanage keys \ + --api-keys-db-path /opt/libretranslate/db/api_keys.db \ + add 120 +``` + +参数 `120` 表示该 Key 每分钟最多 120 次请求。 + +还可以添加单次字符限制: + +```bash +sudo -u libretranslate /opt/miniconda3/envs/libretranslate/bin/ltmanage keys \ + --api-keys-db-path /opt/libretranslate/db/api_keys.db \ + add 120 --char-limit 5000 +``` + +命令会输出类似: + +```text +API key created: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +``` + +### 10.2 查看 Key + +```bash +sudo -u libretranslate /opt/miniconda3/envs/libretranslate/bin/ltmanage keys \ + --api-keys-db-path /opt/libretranslate/db/api_keys.db \ + list +``` + +### 10.3 删除 Key + +先查看 `ltmanage keys --help` 确认当前版本参数: + +```bash +/opt/miniconda3/envs/libretranslate/bin/ltmanage keys --help +``` + +常见删除命令: + +```bash +sudo -u libretranslate /opt/miniconda3/envs/libretranslate/bin/ltmanage keys \ + --api-keys-db-path /opt/libretranslate/db/api_keys.db \ + remove 你的APIKey +``` + +### 10.4 使用 Key 调用翻译 + +```bash +curl -X POST http://127.0.0.1:5001/translate \ + -H "Authorization: Bearer 你的APIKey" \ + -H "Content-Type: application/json" \ + -d '{"q":"我喜欢篮球","source":"zh","target":"es"}' +``` + +## 11. 一键管理脚本 + +创建脚本 `/opt/libretranslate/manage_keys.sh`: + +```bash +sudo tee /opt/libretranslate/manage_keys.sh > /dev/null <<'EOF' +#!/usr/bin/env bash +set -e + +LT=/opt/miniconda3/envs/libretranslate/bin/ltmanage +DB=/opt/libretranslate/db/api_keys.db + +usage() { + echo "用法: $0 {add [限额] [字符限制] | list | remove }" + exit 1 +} + +case "$1" in + add) + limit="${2:-120}" + char_limit="${3:-2000}" + sudo -u libretranslate "$LT" keys --api-keys-db-path "$DB" add "$limit" --char-limit "$char_limit" + ;; + list) + sudo -u libretranslate "$LT" keys --api-keys-db-path "$DB" list + ;; + remove) + [ -n "$2" ] || usage + sudo -u libretranslate "$LT" keys --api-keys-db-path "$DB" remove "$2" + ;; + *) + usage + ;; +esac +EOF + +sudo chmod +x /opt/libretranslate/manage_keys.sh +``` + +使用: + +```bash +sudo /opt/libretranslate/manage_keys.sh add 120 5000 +sudo /opt/libretranslate/manage_keys.sh list +sudo /opt/libretranslate/manage_keys.sh remove 你的APIKey +``` + +## 12. 配置 Nginx 反向代理 + +### 12.1 安装 Nginx + +```bash +sudo apt update +sudo apt install nginx -y +``` + +### 12.2 创建站点配置 + +```bash +sudo tee /etc/nginx/sites-available/libretranslate > /dev/null <<'EOF' +server { + listen 80; + server_name translate.example.com; + + client_max_body_size 2m; + + location / { + proxy_pass http://127.0.0.1:5001; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} +EOF + +sudo ln -s /etc/nginx/sites-available/libretranslate /etc/nginx/sites-enabled/ +sudo nginx -t +sudo systemctl reload nginx +``` + +公网部署建议配置 HTTPS(Certbot)。 + +## 13. 接入西班牙语日记项目 + +在本项目“翻译设置”中填写: + +```text +翻译方式:自定义接口 +接口地址:http://127.0.0.1:5001/translate +接口密钥:你的APIKey +扩展配置: +{ + "result_key": "translatedText", + "headers": { + "Authorization": "Bearer 你的APIKey" + } +} +``` + +## 14. 国内网络模型下载说明 + +如果首次启动时模型下载失败: + +### 14.1 使用代理 + +```ini +Environment=HTTPS_PROXY=http://你的代理地址:端口 +Environment=HTTP_PROXY=http://你的代理地址:端口 +``` + +### 14.2 手动下载模型 + +查询 Argos Translate 可用模型: + +```bash +/opt/miniconda3/envs/libretranslate/bin/argospm search zh +``` + +手动安装: + +```bash +/opt/miniconda3/envs/libretranslate/bin/argospm install translate-zh_es +``` + +> 模型名称以实际 `argospm search` 结果为准。 + +## 15. 常见问题 + +### 15.1 服务启动失败 + +```bash +sudo journalctl -u libretranslate -e +``` + +检查目录权限: + +```bash +sudo chown -R libretranslate:libretranslate /opt/libretranslate +``` + +### 15.2 提示语言未加载 + +确认环境变量: + +```ini +LT_LOAD_ONLY=zh,es,en +``` + +### 15.3 API Key 文件无权限 + +```bash +sudo chown -R libretranslate:libretranslate /opt/libretranslate/db +sudo systemctl restart libretranslate +``` + +### 15.4 模型下载慢 + +- 配置 HTTPS 代理 +- 只加载 `zh,es,en` 三个模型 +- 保证磁盘剩余 5GB 以上 + +## 16. 总结 + +```text +1. 安装 Miniconda +2. 创建 python=3.10 环境 +3. pip install libretranslate +4. 手动下载 zh,es,en 模型 +5. 创建 /opt/libretranslate 目录 +6. 创建 systemd 服务并开机自启 +7. 使用 ltmanage 创建/查看/删除 API Key +8. 可选配置 Nginx + HTTPS +9. 项目翻译设置选择“自定义接口”并填入 API Key +```