跨平台HTTP文件托管服务,支持多应用manifest管理、per-app认证和速率限制。
make server-run首次运行前,需要在 build/downloads/ 目录创建应用的manifest文件:
# 创建应用目录
mkdir -p build/downloads/mazio-display
mkdir -p build/downloads/evs-client
# 创建mazio-display的manifest
cat > build/downloads/mazio-display/latest.json << 'EOF'
{
"version": "1.1.0",
"notes": "## Mazio Display v1.1.0\n\n### 新功能\n- 增强的安全认证\n- 速率限制保护",
"pub_date": "2025-12-01T10:00:00Z",
"platforms": {
"windows-x86_64": {
"url": "http://localhost:8080/files/mazio-display/MazioDisplay_v1.1.0.zip",
"checksum": "sha256:9fce4f19c0086e9d9356df70101daa878eb28f88fcabb0d3af00adc9ca3ebecb"
}
}
}
EOF
# 创建evs-client的manifest
cat > build/downloads/evs-client/latest.json << 'EOF'
{
"version": "2.0.0",
"notes": "## EVS Client v2.0.0\n\n### 新功能\n- 多应用支持\n- 改进的UI界面",
"pub_date": "2025-12-01T10:00:00Z",
"platforms": {
"windows-x86_64": {
"url": "http://localhost:8080/files/evs-client/evs-client-2.0.0.zip",
"checksum": "sha256:a1b2c3d4e5f6789012345678901234567890123456789012345678901234567890"
}
}
}
EOF# 仅构建
make server
# 手动运行
cd build && ./evs-server{
"port": "8080",
"base_dir": "downloads",
"api_key": "a3d4b982-7577-4d3d-8a91-0501b2cafd7d",
"apps": {
"mazio-display": {
"path": "mazio-display",
"require_auth": true,
"max_requests": 100
},
"evs-client": {
"path": "evs-client",
"require_auth": false,
"max_requests": 60
}
}
}port: 服务器监听端口base_dir: 文件存储基础目录api_key: 全局API密钥(可选)apps: 应用配置path: 应用在base_dir下的相对路径require_auth: 是否需要认证max_requests: 每分钟最大请求数
GET /- 获取应用列表GET /{app}/latest.json- 获取应用manifest
GET /files/{app}/{filename}- 下载应用文件
GET /health- 健康检查GET /ready- 就绪检查GET /metrics- 监控指标GET /status- 服务器状态
curl -H "X-API-Key: your-api-key" http://localhost:8080/mazio-display/latest.jsoncurl "http://localhost:8080/mazio-display/latest.json?api_key=your-api-key"{
"version": "1.1.0",
"notes": "## 应用更新说明\n\n### 新功能\n- 功能描述",
"pub_date": "2025-12-01T10:00:00Z",
"platforms": {
"windows-x86_64": {
"url": "http://localhost:8080/files/mazio-display/app.zip",
"checksum": "sha256:hash_value"
}
}
}./start.sh# 构建生产版本
go build -ldflags="-s -w" -o evs-server ./cmd/server/main.go
# 后台运行
nohup ./evs-server > /var/log/evs-server.log 2>&1 &# 构建镜像
docker build -t evs-server .
# 运行容器
docker run -d -p 8080:8080 -v $(pwd)/downloads:/app/downloads evs-serverevs_requests_total- 总请求数evs_request_duration_seconds- 请求耗时evs_rate_limiter_hits- 速率限制触发次数
{
"status": "healthy",
"timestamp": "2025-12-01T10:00:00Z",
"uptime": "1h30m45s"
}- 路径安全: 防止目录遍历攻击
- 认证保护: per-app API密钥验证
- 速率限制: 防止API滥用
- 安全头: XSS、CSRF保护
- 日志记录: 访问和安全事件日志
-
端口占用
# 检查端口使用 lsof -i :8080 # 或修改server.config.json中的port
-
文件权限
# 确保downloads目录可写 chmod 755 downloads -
认证失败
# 检查API密钥配置 curl -H "X-API-Key: wrong-key" http://localhost:8080/app/latest.json
# 实时查看日志
tail -f /var/log/evs-server.log
# 查看错误日志
grep ERROR /var/log/evs-server.log- 文件缓存: 启用nginx缓存静态文件
- 压缩传输: 启用gzip压缩
- 连接池: 复用HTTP连接
- CDN加速: 大文件使用CDN分发
- 多版本支持: 支持历史版本查询
- 自动更新: 客户端自动检查更新
- 统计分析: 下载统计和使用分析
- Web管理: 管理界面和API