docs: 添加LibreTranslate Conda部署方案(Ubuntu)
@@ -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 <key>}"
|
||||||
|
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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user