【视频点播系统】环境搭建:Ubuntu 虚拟机 + Docker + XShell 全流程配置 TaoToken
1. 视频点播系统环境搭建:Ubuntu 虚拟机 + Docker + XShell 全流程配置
视频点播系统的开发环境,说白了就是一套能跑转码、切片、存储、播放接口的中间件组合。它通常包含 MySQL、Redis、MinIO 或 FastDFS、Nginx、FFmpeg 这些组件,本地裸装一遍能折腾一整天,还容易把系统搞乱。所以更省事的做法是:Ubuntu 虚拟机打底,Docker 装中间件,XShell 远程连进去操作,cmake 负责编译 C++ 业务代码。这套组合适合刚接触流媒体后端、想在自己电脑上跑通一套点播服务的同学,也适合需要隔离环境、不想污染主力机的开发者。
我这次把整个流程拆成可复制的步骤:虚拟机装 Ubuntu 22.04、Docker 安装与镜像加速、XShell 连接参数、cmake 编译链配置,最后把 AI 编程工具的 Base URL 统一改到 TaoToken 管理 Key。每一步都给出命令和验证动作,你照着敲就能跑起来。
先明确一下资源规格,视频点播系统涉及转码,CPU 和内存别抠:
| 项目 | 配置 |
|---|---|
| 操作系统 | Ubuntu 22.04 LTS |
| CPU | 2 核起步,转码建议 4 核 |
| 内存 | 8G |
| 硬盘 | 50G 以上 |
| 编译工具 | g++ / gdb / cmake |
| 容器 | Docker + docker-compose |
虚拟机软件用 VMware Workstation Pro,官网下载后右键以管理员身份安装,避免虚拟网卡驱动装不上。Ubuntu 镜像从国内镜像站拉,比如 https://mirrors.163.com/ubuntu-releases/,选 22.04 的 desktop 或 server 版都行,server 版更省资源。
创建虚拟机时选「稍后安装操作系统」,系统类型选 Linux / Ubuntu 64 位,磁盘给 50G 以上。安装过程中有几个点要注意:软件源填清华源 https://mirrors.tuna.tsinghua.edu.cn/ubuntu,别用默认国外源;磁盘分区那里默认配置不会把剩余空间全给根分区,需要手动删掉默认挂载、重建逻辑卷用满空间;最后一步一定要勾选安装 OpenSSH server,否则 XShell 连不上。
系统装完重启,先更新源并装网络工具:
sudo apt update
sudo apt install -y net-tools openssh-server
ifconfig
ifconfig 输出里 ens33 下面的 inet 地址就是远程连接地址,记下来。
2. TaoToken 前置准备:统一管理 AI 编程工具 Key
环境搭好之后,写代码环节会用到 AI 编程工具。这里有个坑:不同工具的 API Key 分散在各家平台,额度、模型、计费各管各的,切换工具就要重新配一遍。TaoToken 的作用就是把这些统一到一个入口,Base URL 指向它,Key 也只管一份。
TaoToken 是一个 AI 模型 API 聚合网关,能做什么?简单说,它把多家模型的调用收敛到一套 OpenAI 兼容接口上,你改 Base URL 和 Key 就能切换模型,不用每个工具单独注册。适合谁?适合同时用 Cline、Claude Code、Codex 这类工具,又不想管理一堆 Key 的开发者。
前置准备分三步。第一步,注册并拿到 Key。打开 https://taotoken.net/api-keys,登录后在控制台创建 API Key,复制保存,这个 Key 后面所有工具共用。
第二步,确认 Base URL。TaoToken 的 API 入口是:
https://taotoken.net/api
注意这个地址不带任何查询参数,配置时原样填入。
第三步,确认要用的 Model ID。在模型对话页面或文档里能看到当前支持的模型列表,比如 claude-sonnet-4-5、gpt-4o 这类。记下你要用的那个,配置时填进去。
提示:Key 只在创建时完整显示一次,建议创建后立刻存到密码管理器。如果泄露,在控制台吊销重建即可。
这里要强调一个原则:Base URL、Key、Model ID 是三件套,缺一不可。很多工具报 401 或 model not found,就是这三者有一个填错了。后面配置 Cline、Claude Code、Codex 时,我都会把这三个值明确列出来。
如果你只是想在浏览器里先验证模型能不能通,可以直接用模型对话页面发一条消息测试,不用写代码。等确认通了,再往工具里配。
3. 可复制配置:Docker 安装、XShell 连接与 cmake 编译链
这一节是核心操作区,命令都能直接复制。
3.1 Docker 安装与镜像加速
先装依赖:
sudo apt update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo apt-get install -y make gcc g++ libz-dev lrzsz vim software-properties-common
配置镜像加速,写入 /etc/docker/daemon.json:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
添加 Docker 官方 GPG 密钥和软件源:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
装 docker-compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.13.0/docker-compose-linux-x86_64" -o /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
docker-compose --version
配置用户组,避免每次 sudo:
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker
docker version
docker version 能同时输出 Client 和 Server 信息,说明装好了。
3.2 XShell 连接参数
XShell 新建会话,参数如下:
| 参数 | 值 |
|---|---|
| 协议 | SSH |
| 主机 | 虚拟机 ens33 的 IP |
| 端口 | 22 |
| 用户名 | 安装系统时创建的用户 |
| 密码 | 对应密码 |
连接成功后,后续所有操作都在 XShell 里做,比在虚拟机窗口里敲舒服得多。
3.3 cmake 编译链配置
视频点播系统的 C++ 业务代码通常用 cmake 构建。先确认工具链:
sudo apt install -y cmake g++ gdb
cmake --version
g++ --version
项目根目录建 CMakeLists.txt,一个最小可用的配置片段:
cmake_minimum_required(VERSION 3.16)
project(vod_server CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
include_directories(${CMAKE_SOURCE_DIR}/include)
link_directories(${CMAKE_SOURCE_DIR}/lib)
file(GLOB SRC_FILES ${CMAKE_SOURCE_DIR}/src/*.cpp)
add_executable(vod_server ${SRC_FILES})
target_link_libraries(vod_server pthread)
构建:
mkdir -p build && cd build
cmake ..
make -j4
make 结束没有报错,build/ 下出现 vod_server 可执行文件,编译链就通了。
3.4 AI 工具接入 TaoToken 的配置片段
以 Cline 为例,在设置里填三件套:
{
"apiProvider": "openai",
"baseUrl": "https://taotoken.net/api",
"apiKey": "你的 TaoToken Key",
"modelId": "claude-sonnet-4-5"
}
Claude Code 的配置在 ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://taotoken.net/api",
"ANTHROPIC_API_KEY": "你的 TaoToken Key",
"ANTHROPIC_MODEL": "claude-sonnet-4-5"
}
}
Codex 的 ~/.codex/auth.json:
{
"OPENAI_BASE_URL": "https://taotoken.net/api",
"OPENAI_API_KEY": "你的 TaoToken Key"
}
三件套里 Base URL 固定 https://taotoken.net/api,Key 用同一个,Model ID 按需换。这样切工具不用重新配。
4. 验证请求与成功结果:接口连通性检查
配置写完必须验证,不然等到工具里报错再回头查很费时间。
先验证 Docker 环境。拉一个测试镜像:
docker pull hello-world
docker run --rm hello-world
看到 Hello from Docker! 就说明镜像加速和容器运行都正常。
再验证点播系统依赖的中间件。以 Redis 为例:
docker run -d --name redis-test -p 6379:6379 redis:7
docker exec -it redis-test redis-cli ping
返回 PONG 说明容器网络和端口映射没问题。
接着验证 TaoToken 接口连通性。用 curl 直接打:
curl -X POST https://taotoken.net/api/v1/chat/completions \
-H "Authorization: Bearer 你的TaoToken Key" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"messages": [{"role": "user", "content": "ping"}]
}'
返回 JSON 里 choices 数组有内容,说明 Key、Base URL、Model ID 三件套都对。如果返回 401,是 Key 问题;返回 model not found,是 Model ID 写错;返回连接超时,检查网络和 Base URL 拼写。
最后验证 cmake 产物能跑:
cd build && ./vod_server --help
能打印帮助信息,说明编译链和运行时依赖都齐了。
到这里,Ubuntu 虚拟机、Docker、XShell、cmake、TaoToken 五块全部打通。你可以在这个环境里继续拉 MySQL、MinIO、Nginx 容器,把点播系统的存储和分发链路补全。
5. 本篇常见错误排查:401、local proxy failed、reading choices、OAuth
环境搭建过程中,报错集中在几个地方,逐个对照。
401 Unauthorized。出现在 curl 或 AI 工具里。原因通常是 Key 没填、Key 复制时带了空格、或者 Key 被吊销。排查:重新在 https://taotoken.net/api-keys 复制一次,确认 Authorization: Bearer 后面没有多余字符。如果工具里报 401,检查是不是把 Base URL 和 Key 填反了。
local proxy failed。这个报错一般出现在工具尝试走本地代理时。检查工具设置里有没有开启代理选项,关掉它,让请求直连 https://taotoken.net/api。另外确认系统环境变量里没有残留的 HTTP_PROXY、HTTPS_PROXY,有就 unset 掉。
reading choices 报错。通常是接口返回了非预期结构,比如返回了错误 JSON 但工具按成功解析。用 curl 手动打一次,看返回体里有没有 error 字段。常见原因是 Model ID 不在支持列表里,换一个确认可用的模型再试。
OAuth 相关报错。Claude Code 或 Codex 首次启动可能引导 OAuth 登录,如果你已经配了 API Key,要跳过 OAuth 流程。Claude Code 里确认 settings.json 的 env 段生效,Codex 里确认 auth.json 路径正确。如果工具仍弹 OAuth,检查是不是配置文件放错了目录。
Docker 拉镜像超时。镜像加速地址失效是常事,daemon.json 里多配几个,改完 sudo systemctl restart docker 再试。如果某个地址一直超时,从列表里删掉。
XShell 连接被拒。先确认虚拟机里 sudo systemctl status ssh 是 running,再确认防火墙没拦 22 端口:sudo ufw status。如果虚拟机是 NAT 网络,宿主机连虚拟机 IP 没问题;如果是桥接,确认 IP 段和宿主机一致。
cmake 找不到库。报 Could NOT find XXX,用 apt install libxxx-dev 补上,或者在 CMakeLists.txt 里用 find_package 指定路径。链接阶段报 undefined reference,检查 target_link_libraries 有没有漏。
排查思路就一条:先确认三件套(Base URL、Key、Model ID)对不对,再确认网络通不通,最后看工具配置路径对不对。大部分问题出在第一步。
6. 长期编码与 Agent 场景:把 Key 统一到 TaoToken
环境跑通只是开始,真正写点播系统业务代码时,AI 编程工具会高频调用模型。这时候 Key 管理就重要了。
如果你只是偶尔问几个问题,用模型对话页面就够了,打开 https://taotoken.net/chat 直接聊,不用配工具。
如果你长期用 Cline、Claude Code 这类工具写代码,建议走 Coding Plan,把额度集中管理,避免每个工具单独充值。入口在 https://taotoken.net/coding-plan。
配置细节和更多接入方式,文档里有完整说明:https://taotoken.net/doc。控制台里能看用量和余额:https://taotoken.net/console。
回到视频点播系统本身,环境搭好后的下一步是拉中间件容器。给你一个 docker-compose 片段,把 MySQL、Redis、MinIO 一起起来:
version: "3.8"
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
ports:
- "3306:3306"
volumes:
- ./data/mysql:/var/lib/mysql
redis:
image: redis:7
ports:
- "6379:6379"
minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./data/minio:/data
docker-compose up -d 之后,docker ps 能看到三个容器在跑。MySQL 建库、MinIO 建 bucket、Redis 直接可用,点播系统的存储层就齐了。转码环节再单独拉一个带 FFmpeg 的容器,或者直接在宿主机装 FFmpeg。
这套环境的好处是可复制:换台机器,把 docker-compose 和 CMakeLists 拷过去,十分钟重建。AI 工具的 Key 统一在 TaoToken,换工具不用重新配。虚拟机快照留一份,搞崩了直接回滚。
最后提醒一句:虚拟机密码别设太复杂,本地环境自己用,方便为主;但 TaoToken 的 Key 要当密码管,别提交到 Git 仓库里。
更多推荐

所有评论(0)