Skip to content

快速开始

本文档带你用最短路径把 Vistack 跑起来。推荐使用 Docker Compose 一键部署(方式一),零本地依赖;想参与开发则参考方式二「本地开发」。

前置要求

  • 方式一:安装 DockerDocker Compose(Docker Desktop 自带)。
  • 方式二:Go 1.26+、Node.js 18+、pnpm 9+,以及本地的 PostgreSQL / Redis / MinIO / Kafka / etcd(或复用 compose 中的基础设施)。

方式一:Docker Compose 一键部署(推荐)

bash
# 1. 克隆仓库
git clone https://github.com/binhy/vistack.git
cd vistack

# 2. 复制环境变量模板
cp .env.example .env.local

# 3. 一键起栈(构建镜像并后台启动全部服务)
docker compose up --build -d

# 4. 查看服务状态
docker compose ps

启动完成后,全套服务即可用:

服务地址说明
统一入口(Traefik)http://localhost/api/v1按路径分流 auth 与 api
API 服务http://localhost:8080/api/v1视频 / 文件业务
Auth 服务http://localhost:8081注册 / 登录 / 资料 / JWKS
Traefik 仪表盘http://localhost:8082/dashboard/路由可视化
MinIO 控制台http://localhost:9001账号 minioadmin / minioadmin
PostgreSQLlocalhost:5432postgres / postgres
Redislocalhost:6379无密码
Kafkalocalhost:9092KRaft 单节点
etcdlocalhost:2379服务注册 / 领导选举

验证服务健康

bash
# API 健康检查
curl http://localhost:8080/health

# 统一入口健康检查
curl http://localhost/api/v1/health

水平扩容转码节点

转码是计算密集任务,需要更多并发转码能力时直接扩容:

bash
# 扩容到 3 个 transcoder 副本
docker compose up --scale transcoder=3 -d

# 查看注册到 etcd 的转码节点
docker compose exec etcd etcdctl get /vistack/transcoders --prefix

worker 会通过 etcd 自动发现新增的转码节点并做 gRPC 负载均衡,无需重启。

停止 / 清理

bash
# 停止全部服务(保留数据卷)
docker compose down

# 停止并删除数据卷(彻底清理)
docker compose down -v

方式二:本地开发

详见 本地开发

前端访问

前端 monorepo 位于 web/(pnpm workspace:ui / web-client / web-admin):

bash
cd web
pnpm install
pnpm run dev   # web-client(:8335) 与 web-admin(:8334)

浏览器打开:

前端通过 web/*/.env.development 中的 VITE_API_BASE 指向 API,默认 http://localhost/api/v1(即 Docker 部署时的 Traefik 统一入口);本地纯前端开发时请确认其与后端实际监听端口一致。

常见操作示例

注册并登录(Auth 服务)

bash
# 注册
curl -X POST http://localhost:8081/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username":"demo","password":"demo123456","email":"demo@example.com"}'

# 登录,拿到 access_token
curl -X POST http://localhost:8081/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"demo","password":"demo123456"}'

查看 JWKS(验证 Auth 无状态验签)

bash
curl http://localhost:8081/.well-known/jwks.json

上传视频触发转码流水线

  1. 使用前端页面上传视频(分片上传 + 秒传);
  2. 上传完成后 API 投递 Kafka[transcode] 任务;
  3. worker 消费任务 → etcd 发现 transcoder → gRPC ProcessVideo 远程转码;
  4. 转码完成后视频状态变为 published,前端即可播放。

下一步

基于 MIT License 发布