教你使用服务器搭建一款基于AI的英语口语训练工具Babel-duck
随时切换以兼顾成本与质量。
一、服务器与环境(建议用莱卡云)
建议配置(个人/小团队)
-
CPU:2–4 vCPU
-
内存:4–8 GB
-
磁盘:40+ GB SSD
-
系统:Ubuntu 22.04/24.04 x64
-
带宽:≥10 Mbps
基础初始化
sudo apt update && sudo apt -y upgrade sudo apt -y install curl git ufw sudo ufw allow OpenSSH sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
安装 Docker & Compose
curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER newgrp docker
二、获取与配置 BabelDuck
BabelDuck 官方提供了直接运行的容器镜像,并给出 .env.example
作为配置模板(包含 LLM、TTS 等可选项)。推荐将 .env.example
重命名为 .env
后按注释填入对应的 API Key / 供应商参数;首次部署可只填最低限度的 LLM Key,语音播报先用浏览器内置 TTS,后续再接入 Azure TTS。GitHub
# 拉代码以便拿到 .env.example(也可只手动创建 .env) git clone https://github.com/Orenoid/BabelDuck cd BabelDuck cp .env.example .env # 打开 .env,按注释填写: # - 选择/填入你要用的 LLM 服务(如通用 OpenAI 兼容端点) # - (可选)Azure TTS 的密钥与区域 # - 站点基本信息
提示:具体变量名与说明以仓库
.env.example
为准(包含注释),避免写错;该项目支持多家 LLM 与自定义第三方 API,无需绑定单一厂商。GitHub
三、用 Docker 一键运行(最快上手)
官方最简命令(端口默认 9000):
# 在含 .env 的目录执行 docker run -d --name babelduck --env-file .env -p 9000:9000 orenoid/babel-duck:latest
浏览器直连:http://服务器IP:9000
即可预览。GitHub
四、推荐:Docker Compose + Nginx 反代 + HTTPS
为了生产可用与自动续期证书,这里给出 Compose 与 Nginx 配置。
1)目录与 Compose
sudo mkdir -p /opt/babelduck/{app,nginx} sudo chown -R $USER:$USER /opt/babelduck cd /opt/babelduck # 拷贝 .env 到 /opt/babelduck/app/.env cp ~/BabelDuck/.env ./app/.env
创建 docker-compose.yml
:
version: "3.8" services: babelduck: image: orenoid/babel-duck:latest container_name: babelduck restart: unless-stopped env_file: - ./app/.env ports: - "127.0.0.1:9000:9000" # 仅本机暴露,交给 Nginx 反代 # BabelDuck 为前后端一体应用,官方未要求持久卷;如后续版本提供数据目录,再挂载即可。
启动:
docker compose up -d docker compose logs -f
2)Nginx 反代
sudo apt -y install nginx certbot python3-certbot-nginx sudo tee /etc/nginx/sites-available/babelduck.conf >/dev/null <<'NGINX' server { listen 80; server_name your-domain.com; # 换成你的域名 client_max_body_size 32M; location / { proxy_pass http://127.0.0.1:9000; proxy_http_version 1.1; 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; } } NGINX sudo ln -s /etc/nginx/sites-available/babelduck.conf /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
3)一键签发 HTTPS(自动续期)
sudo certbot --nginx -d your-domain.com --agree-tos -m you@example.com --redirect -n
五、首次使用与功能要点
-
直接访问
https://your-domain.com
开始使用。 -
语音输入/播报:无需服务器安装额外依赖即可用浏览器的语音能力;若接入 Azure TTS,可在
.env
填入密钥与区域即可使用更自然的合成语音。GitHub -
对话中可随时请求语法/翻译/润色建议,不影响主对话;有疑问可开子对话进一步追问,完毕秒回主线。GitHub
-
支持多家 LLM 服务与自定义第三方 API,随时切换以兼顾成本与质量。GitHub
六、运维与升级
升级
docker compose pull docker compose up -d
重启 / 停止
docker compose restart docker compose down
日志排错
docker compose logs -f babelduck
七、常见问题(FAQ)
Q1:.env 里到底要填哪些?
A:以仓库提供的 .env.example
为准:至少填一个可用的 LLM Key;若要更好的语音播报,再填 Azure TTS 的 key 与 region。其它开关按注释选择。GitHub
Q2:需要数据库吗?
A:BabelDuck 是“开箱即用”的对话练习应用,官方部署步骤未要求独立数据库;数据本地可控。若后续版本新增持久化目录/数据库,再按新说明挂载卷或增加服务即可。GitHub
Q3:想临时用 IP 访问可以吗?
A:可以,在 Nginx 配置把 server_name
暂时换成服务器 IP,并跳过 HTTPS;正式上线建议绑定域名并签证书。
Q4:语音不播报/识别失败?
A:先用桌面 Chrome/Edge 测试浏览器 TTS/语音输入;若接入 Azure TTS,请核对密钥与区域变量是否正确。GitHub
为什么推荐在莱卡云上部署?
-
性价比:同等配置更亲民,适合长时间练习与多人使用。
-
网络稳定:国内/海外多地域,访问与语音流式体验更稳。
-
维护友好:出现网络/系统问题更易快速响应,利于长期自建。
更多推荐
所有评论(0)