Audio Pixel Studio部署教程:Traefik动态路由+Let‘s Encrypt自动证书签发
本文介绍了如何在星图GPU平台上自动化部署🎙️ 高质量语音合成 Audio Pixel Studio极简像素工作站镜像,快速搭建个人在线音频处理环境。该平台简化了部署流程,用户可轻松实现文字转语音、人声分离等核心功能,适用于播客制作、有声书生成等音频内容创作场景。
Audio Pixel Studio部署教程:Traefik动态路由+Let's Encrypt自动证书签发
想快速搭建一个属于自己的在线音频工作站吗?Audio Pixel Studio就是这样一个开箱即用的工具。它界面清爽,功能直接,能帮你把文字变成语音,也能把歌曲里的人声和伴奏分开。
但今天我们不只讲怎么用,而是要把它部署到你的服务器上,并通过域名安全地访问。整个过程,我们会用Traefik这个“智能交通警察”来管理网络请求,并用Let's Encrypt自动搞定HTTPS证书,实现全自动化的部署和运维。
无论你是个人开发者想做个玩具,还是小团队需要一个轻量的音频处理工具,这篇教程都会带你一步步走通。我们尽量避开复杂的术语,用最直白的方式,让你在10分钟内看到成果。
1. 项目初探:Audio Pixel Studio是什么?
在动手部署之前,我们先花一分钟了解一下我们要部署的这个“像素工作站”到底能做什么。这能帮你判断它是不是你需要的工具。
1.1 核心功能一览
Audio Pixel Studio的核心功能非常聚焦,就两大块:说和分。
- 说(语音合成):你输入一段文字,它就能用你选择的“声音”读出来。它背后用的是微软Edge浏览器的TTS(文字转语音)引擎,所以音质不错,支持的语言和音色也很多。比如,你可以让一个叫“晓晓”的女生用中文读新闻,或者让一个叫“Guy”的男生用英文朗读你的博客。
- 分(人声分离):你上传一首歌,它能尝试把唱歌的人声和背景的伴奏音乐分开,生成两个独立的音频文件。这个功能基于一个简化版的UVR5算法,对于一般的流行歌曲效果尚可,适合快速处理,但不是那种需要训练好几个小时的顶级分离效果。
1.2 技术栈与特点
这个项目的技术选型决定了它为什么适合我们这样部署:
- Web框架:基于 Streamlit 开发。这是一个专门为数据科学和机器学习应用快速构建界面的Python库。好处是开发快,一个Python脚本就能变成一个带有交互组件的网页。对我们部署者来说,这意味着它本质上是一个Python Web服务。
- 设计风格:自称“明亮像素风”,界面比较简洁直观。
- 轻量:从项目结构看,它没有复杂的数据库、消息队列等依赖,就是一个相对独立的Web应用。
简单来说,它是一个功能单一、依赖清晰、用Streamlit写的Python Web应用。我们的任务就是把这个应用在服务器上跑起来,并安全地暴露到公网。
2. 部署环境准备
工欲善其事,必先利其器。在开始部署前,我们需要准备好服务器和必要的工具。这里我假设你有一台安装了Linux系统(如Ubuntu 22.04)的云服务器,并且拥有它的root或sudo权限。
2.1 服务器基础配置
首先,通过SSH连接到你的服务器。我们进行一些基础配置:
- 更新系统包:确保系统软件包是最新的。
sudo apt update && sudo apt upgrade -y - 安装必要工具:安装一些后续会用到的工具,比如用于下载文件的
wget。sudo apt install -y wget curl git vim
2.2 安装Docker与Docker Compose
我们将使用Docker来运行Audio Pixel Studio和Traefik。Docker能帮我们解决环境依赖问题,让部署变得一致且简单。
- 安装Docker:使用Docker官方提供的便捷安装脚本。
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh - 启动Docker并设置开机自启:
sudo systemctl start docker sudo systemctl enable docker - 将当前用户加入docker组(避免每次都要用
sudo):
注意:执行此命令后,你需要退出当前SSH会话,并重新登录,这个改动才会生效。sudo usermod -aG docker $USER - 安装Docker Compose:Docker Compose用于定义和运行多容器的应用。我们用它来编排服务。
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose - 验证安装:分别运行以下命令,如果能看到版本号,说明安装成功。
docker --version docker-compose --version
环境准备好了,接下来就是重头戏:配置我们的“智能网关”Traefik。
3. 配置Traefik作为反向代理
你可以把Traefik想象成你们公司的前台或者小区的门卫。所有外来访问(HTTP/HTTPS请求)都要先经过它。它的职责是:
- 问路:根据来访者(请求)想找谁(域名或路径),把它指引到正确的内部服务(比如我们的Audio Pixel Studio)。
- 办通行证:自动为来访者办理HTTPS加密通行证(SSL证书)。
- 负载均衡:如果同一个服务有多个实例,它还能平均分配流量。
3.1 创建项目目录与Traefik配置
我们在服务器上创建一个目录来存放所有配置和文件。
mkdir -p ~/audio-pixel-studio
cd ~/audio-pixel-studio
在这个目录下,我们首先为Traefik创建配置。Traefik的配置通常通过动态文件和Docker标签完成,非常灵活。
-
创建Traefik的动态配置文件目录:
mkdir -p traefik/config -
创建Traefik的静态配置文件 (
traefik.yml):这个文件告诉Traefik一些基础运行方式。vim traefik/traefik.yml将以下内容粘贴进去(
vim中按i进入编辑模式,粘贴后按ESC,输入:wq保存退出):# traefik/traefik.yml api: dashboard: true # 启用管理仪表板 debug: true # 启用调试模式(生产环境可关闭) providers: docker: endpoint: "unix:///var/run/docker.sock" # 监听Docker事件 exposedByDefault: false # 默认不暴露所有容器,需要手动标签指定 file: directory: /etc/traefik/config # 动态配置文件的目录 watch: true # 监听文件变化,自动重载配置 entryPoints: web: address: ":80" # HTTP入口点,用于HTTP到HTTPS的重定向和证书申请验证 websecure: address: ":443" # HTTPS入口点 certificatesResolvers: myresolver: acme: email: your-email@example.com # 替换为你的邮箱,用于证书到期提醒 storage: /etc/traefik/acme/acme.json # 存储ACME证书的位置 httpChallenge: entryPoint: web # 使用HTTP-01挑战方式验证域名所有权重要:请务必将
your-email@example.com替换为你自己的真实邮箱地址。 -
创建动态配置文件 (
dynamic_conf.yml):这个文件可以定义一些共享的、不依赖于具体Docker容器的配置,比如中间件。vim traefik/config/dynamic_conf.yml粘贴以下内容:
# traefik/config/dynamic_conf.yml http: middlewares: https-redirect: redirectScheme: scheme: https permanent: true # 将HTTP请求永久重定向到HTTPS这个中间件的作用是,当有人用
http://访问你的站点时,自动跳转到https://。
3.2 创建Docker Compose文件编排服务
现在,我们来创建主力的docker-compose.yml文件,它将定义两个服务:traefik和audio-pixel-studio。
在项目根目录 (~/audio-pixel-studio) 下创建该文件:
vim docker-compose.yml
粘贴以下内容,并仔细阅读注释,特别是需要替换的部分:
# docker-compose.yml
version: '3.8'
networks:
web:
external: true # 使用外部网络,方便其他服务接入
internal:
driver: bridge # 内部网络,用于服务间通信
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- web
- internal
ports:
- "80:80" # HTTP端口
- "443:443" # HTTPS端口
# - "8080:8080" # Traefik仪表板端口(默认关闭,按需开启)
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro # 挂载Docker套接字,让Traefik能发现其他容器
- ./traefik/traefik.yml:/etc/traefik/traefik.yml:ro
- ./traefik/config:/etc/traefik/config:ro
- ./traefik/acme:/etc/traefik/acme # 挂载证书存储目录
labels:
# 为Traefik自身启用仪表板,并配置路由规则(谨慎暴露到公网)
# - "traefik.enable=true"
# - "traefik.http.routers.traefik.rule=Host(`traefik.your-domain.com`)" # 替换为你的域名
# - "traefik.http.routers.traefik.service=api@internal"
# - "traefik.http.routers.traefik.entrypoints=websecure"
# - "traefik.http.routers.traefik.tls.certresolver=myresolver"
# - "traefik.http.routers.traefik.middlewares=auth" # 可以添加基础认证中间件
command:
- "--log.level=DEBUG" # 日志级别,调试用INFO或DEBUG,生产用ERROR
audio-pixel-studio:
image: ccr.ccs.tencentyun.com/mirrors/audio-pixel-studio:latest # 使用合适的镜像
container_name: audio-pixel-studio
restart: unless-stopped
networks:
- internal # 只接入内部网络,不直接暴露端口
# 端口映射已由Traefik处理,此处无需暴露
# ports:
# - "8501:8501"
environment:
- STREAMLIT_SERVER_PORT=8501 # Streamlit默认端口
- STREAMLIT_SERVER_ADDRESS=0.0.0.0
volumes:
- ./app_data/logs:/app/logs # 挂载日志目录,持久化数据
labels:
- "traefik.enable=true" # 启用Traefik代理
- "traefik.http.routers.audio-pixel-studio.rule=Host(`audio.your-domain.com`)" # 核心:定义域名规则,请替换!
- "traefik.http.routers.audio-pixel-studio.entrypoints=websecure" # 使用HTTPS入口点
- "traefik.http.routers.audio-pixel-studio.tls.certresolver=myresolver" # 使用上面定义的证书解析器
- "traefik.http.services.audio-pixel-studio.loadbalancer.server.port=8501" # 告诉Traefik后端服务端口
# 将HTTP流量重定向到HTTPS(应用全局中间件)
- "traefik.http.routers.audio-pixel-studio-http.rule=Host(`audio.your-domain.com`)"
- "traefik.http.routers.audio-pixel-studio-http.entrypoints=web"
- "traefik.http.routers.audio-pixel-studio-http.middlewares=https-redirect@file"
关键修改点(务必操作):
- 域名:将文件中所有的
audio.your-domain.com替换为你实际想要绑定的域名(例如audio.example.com)。你需要确保这个域名的DNS记录已经指向了你当前服务器的公网IP地址。 - 镜像:
ccr.ccs.tencentyun.com/mirrors/audio-pixel-studio:latest是一个示例镜像地址。你需要替换为Audio Pixel Studio项目提供的正确Docker镜像地址。如果项目没有官方镜像,你可能需要自己构建,这超出了本基础教程的范围。 - Traefik仪表板:配置中注释掉了Traefik仪表板的外部访问。如果你需要,可以取消注释那几行
labels,并将traefik.your-domain.com替换为一个域名(如traefik-admin.example.com),并强烈建议配置HTTP基础认证等安全措施后再暴露到公网。
3.3 创建Docker网络并启动服务
-
创建外部网络:我们在Compose文件中声明了要使用一个外部的
web网络。docker network create web -
启动所有服务:在
docker-compose.yml所在目录执行。docker-compose up -d-d参数表示在后台运行。 -
查看服务状态:
docker-compose ps你应该看到
traefik和audio-pixel-studio两个服务的状态都是Up。 -
查看实时日志(如果需要调试):
# 查看所有服务日志 docker-compose logs -f # 查看特定服务日志 docker-compose logs -f audio-pixel-studio
4. 验证部署与使用
如果一切顺利,现在你应该可以通过浏览器访问你的Audio Pixel Studio了。
-
访问应用:打开浏览器,输入
https://你设置的域名(例如https://audio.example.com)。- 首次访问可能会稍慢,因为Traefik正在后台通过Let‘s Encrypt自动为你申请和配置SSL证书。如果看到证书错误,请等待一两分钟再刷新。
- 成功后,浏览器地址栏会显示绿色的锁标志,表示连接是安全的HTTPS。
-
使用Audio Pixel Studio:
- 界面加载后,你应该能看到简洁的“像素风格”界面。
- 尝试在“语音合成”标签页输入文字,选择音色,点击合成。如果网络通畅,很快就能听到生成的语音。
- 在“人声分离”标签页上传一个MP3文件测试分离功能。
-
验证自动证书:证书是自动管理的。你可以通过查看Traefik的挂载卷来确认证书是否已生成。
ls -la ~/audio-pixel-studio/traefik/acme/你应该能看到一个
acme.json文件,里面就存储着你的HTTPS证书信息。证书到期前,Traefik会自动续期,你完全不用操心。
5. 总结与后续管理
至此,我们已经完成了Audio Pixel Studio基于Traefik的自动化部署。我们来回顾一下这个方案带来的好处:
- 自动化HTTPS:Let‘s Encrypt提供免费证书,Traefik自动申请和续期,省去手动管理的麻烦。
- 动态服务发现:未来如果你想在同一个服务器上部署其他Web应用(比如另一个博客或工具),只需要在新的Docker Compose服务中添加类似的
traefik标签,指定一个新的域名规则,Traefik就会自动识别并为其配置路由和HTTPS,无需修改Traefik本身的配置。 - 安全隔离:应用服务(如audio-pixel-studio)只接入内部网络,不直接暴露端口,由Traefik统一对外,提升了安全性。
- 统一入口:所有服务都通过80/443端口对外,由域名区分,管理起来非常清晰。
常用管理命令:
- 停止服务:
docker-compose down - 重启服务:
docker-compose restart - 查看日志:
docker-compose logs -f [服务名] - 更新镜像并重启(假设镜像有更新):
docker-compose pull docker-compose up -d
注意事项:
- 确保服务器防火墙开放了80和443端口。
- 妥善保管
traefik/acme/acme.json文件,它包含了你的证书私钥。 - 如果应用无法访问,首先检查
docker-compose logs查看错误信息,并确认域名DNS解析已生效。
这个部署框架具有很强的通用性。掌握了它,你就能轻松地将许多类似的Docker化Web应用部署上线,并享受自动化的HTTPS和路由管理带来的便利。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐



所有评论(0)