Skip to content

OpenHub 部署指南 ​

本文档介绍如何在不同环境中部署 OpenHub。


目录 ​


Docker 部署(推荐) ​

前置要求 ​

  • Docker 20.10+
  • Docker Compose 2.0+

快速开始 ​

  1. 克隆项目
bash
git clone https://github.com/Grong/openhub.git
cd openhub
  1. 配置环境变量
bash
cp .env.example .env
# 编辑 .env,至少修改以下配置:
# - JWT_SECRET(必须修改)
# - BYOK_ENCRYPTION_KEY(必须修改)
# - LLM 供应商 API Keys
  1. 启动服务
bash
docker-compose up -d
  1. 检查服务状态
bash
docker-compose ps
docker-compose logs -f api
  1. 访问服务

停止服务 ​

bash
docker-compose down

查看日志 ​

bash
# 查看所有日志
docker-compose logs -f

# 只查看 API 日志
docker-compose logs -f api

手动部署 ​

前置要求 ​

  • Rust 1.91+
  • SQLite 3.35+ 或 PostgreSQL 14+
  • sqlx-cli

安装步骤 ​

  1. 安装 Rust
bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup default nightly-2025-11-30
  1. 安装 sqlx-cli
bash
cargo install sqlx-cli --no-default-features --features sqlite
  1. 克隆项目
bash
git clone https://github.com/Grong/openhub.git
cd openhub
  1. 配置环境变量
bash
cp .env.example .env
# 编辑 .env 配置
  1. 初始化数据库
bash
# 创建数据库
sqlx database create

# 运行迁移
sqlx migrate run
  1. 构建项目
bash
# 开发模式
cargo build

# 生产模式
cargo build --release
  1. 运行服务
bash
# 开发模式
cargo run --bin openhub-api

# 生产模式
./target/release/openhub-api

生产环境配置 ​

必须修改的配置 ​

bash
# .env

# 1. JWT 密钥(必须修改为强密钥)
JWT_SECRET=$(openssl rand -base64 32)

# 2. API Key 加密密钥(必须修改)
BYOK_ENCRYPTION_KEY=$(openssl rand -hex 32)

# 3. 数据库(推荐使用 PostgreSQL)
DATABASE_URL=postgresql://user:password@localhost/openhub

# 4. CORS(设置具体域名)
ALLOWED_ORIGINS=https://yourdomain.com

# 5. 日志级别(生产环境建议 info)
RUST_LOG=info,openhub_api=info

推荐配置 ​

bash
# 启用 ZDR(零数据保留)
ENABLE_ZDR_DEFAULT=true

# 启用 Redis 缓存
REDIS_ENABLED=true
REDIS_HOST=localhost
REDIS_PORT=6379

# 启用监控
METRICS_ENABLED=true
OTEL_ENABLED=true
OTEL_ENDPOINT=http://localhost:4317

使用 PostgreSQL ​

  1. 安装 PostgreSQL
bash
# Ubuntu/Debian
sudo apt-get install postgresql

# macOS
brew install postgresql
  1. 创建数据库
bash
sudo -u postgres psql
CREATE DATABASE openhub;
CREATE USER openhub_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE openhub TO openhub_user;
\q
  1. 更新 .env
bash
DATABASE_URL=postgresql://openhub_user:your_password@localhost/openhub
  1. 运行迁移
bash
sqlx migrate run

数据库迁移 ​

查看迁移状态 ​

bash
sqlx migrate info

运行迁移 ​

bash
sqlx migrate run

回滚迁移 ​

bash
sqlx migrate revert

创建新迁移 ​

bash
sqlx migrate add <migration_name>

健康检查 ​

API 健康检查 ​

bash
curl http://localhost:6006/api/health

数据库连接检查 ​

bash
# SQLite
sqlite3 data/openhub.db "SELECT 1;"

# PostgreSQL
psql -U openhub_user -d openhub -c "SELECT 1;"

反向代理配置 ​

Nginx ​

nginx
server {
    listen 80;
    server_name api.yourdomain.com;

    location / {
        proxy_pass http://localhost:6006;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

Caddy ​

api.yourdomain.com {
    reverse_proxy localhost:6006
}

系统服务配置 ​

systemd ​

创建 /etc/systemd/system/openhub.service:

ini
[Unit]
Description=OpenHub API Service
After=network.target

[Service]
Type=simple
User=openhub
WorkingDirectory=/opt/openhub
Environment="RUST_LOG=info"
EnvironmentFile=/opt/openhub/.env
ExecStart=/opt/openhub/target/release/openhub-api
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启动服务:

bash
sudo systemctl daemon-reload
sudo systemctl enable openhub
sudo systemctl start openhub
sudo systemctl status openhub

故障排查 ​

服务无法启动 ​

  1. 检查日志
bash
# Docker
docker-compose logs api

# systemd
sudo journalctl -u openhub -f
  1. 检查端口占用
bash
sudo lsof -i :6006
  1. 检查数据库连接
bash
# 测试数据库连接
sqlx database create

数据库迁移失败 ​

bash
# 查看迁移状态
sqlx migrate info

# 强制重置(谨慎使用)
sqlx database drop
sqlx database create
sqlx migrate run

性能问题 ​

  1. 检查数据库连接池
bash
# 增加连接池大小
DB_MAX_CONNECTIONS=20
  1. 启用 Redis 缓存
bash
REDIS_ENABLED=true
  1. 检查慢查询
bash
# 启用查询日志
RUST_LOG=sqlx=debug

监控和告警 ​

Prometheus ​

在 prometheus.yml 中添加:

yaml
scrape_configs:
  - job_name: 'openhub'
    static_configs:
      - targets: ['localhost:6006']

Grafana ​

导入 OpenHub Dashboard(待提供)


备份和恢复 ​

SQLite 备份 ​

bash
# 备份
sqlite3 data/openhub.db ".backup data/openhub_backup_$(date +%Y%m%d).db"

# 恢复
cp data/openhub_backup_20260313.db data/openhub.db

PostgreSQL 备份 ​

bash
# 备份
pg_dump -U openhub_user openhub > openhub_backup_$(date +%Y%m%d).sql

# 恢复
psql -U openhub_user openhub < openhub_backup_20260313.sql

安全建议 ​

  1. 使用强密钥(JWT_SECRET, BYOK_ENCRYPTION_KEY)
  2. 启用 HTTPS(使用 Let's Encrypt)
  3. 配置防火墙规则
  4. 定期更新依赖
  5. 启用 ZDR(零数据保留)
  6. 定期备份数据库
  7. 监控异常访问

性能优化 ​

  1. 使用 PostgreSQL 替代 SQLite
  2. 启用 Redis 缓存
  3. 增加数据库连接池
  4. 使用 CDN 加速静态资源
  5. 启用 gzip 压缩
  6. 配置反向代理缓存

联系支持 ​

Released under the MIT License.