Skip to content

Latest commit

 

History

History
254 lines (189 loc) · 4.95 KB

File metadata and controls

254 lines (189 loc) · 4.95 KB

🚀 多应用文件服务器文档

概述

跨平台HTTP文件托管服务,支持多应用manifest管理、per-app认证和速率限制。

快速开始

1. 构建并启动服务器

make server-run

2. 创建应用manifest文件

首次运行前,需要在 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

3. 访问服务

访问: http://localhost:8080

手动启动方式

# 仅构建
make server

# 手动运行
cd build && ./evs-server

配置文件

server.config.json

{
  "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: 每分钟最大请求数

API端点

应用管理

  • GET / - 获取应用列表
  • GET /{app}/latest.json - 获取应用manifest

文件服务

  • GET /files/{app}/{filename} - 下载应用文件

SRE监控

  • GET /health - 健康检查
  • GET /ready - 就绪检查
  • GET /metrics - 监控指标
  • GET /status - 服务器状态

认证方式

Header认证

curl -H "X-API-Key: your-api-key" http://localhost:8080/mazio-display/latest.json

Query参数认证

curl "http://localhost:8080/mazio-display/latest.json?api_key=your-api-key"

Manifest文件格式

latest.json

{
  "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部署

# 构建镜像
docker build -t evs-server .

# 运行容器
docker run -d -p 8080:8080 -v $(pwd)/downloads:/app/downloads evs-server

监控指标

Prometheus格式

  • evs_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保护
  • 日志记录: 访问和安全事件日志

故障排除

常见问题

  1. 端口占用

    # 检查端口使用
    lsof -i :8080
    # 或修改server.config.json中的port
  2. 文件权限

    # 确保downloads目录可写
    chmod 755 downloads
  3. 认证失败

    # 检查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