安装部署

本指南介绍 OpsHub 的多种部署方式,请根据实际环境选择合适的部署方案。

环境要求

组件 最低版本 推荐版本
Go 1.21+ 1.24+
Node.js 18+ 20+
MySQL 8.0+ 8.0+
Redis 6.0+ 7.0+
Docker 20.10+ 24.0+
Kubernetes 1.24+ 1.28+
Helm 3.0+ 3.14+

部署方式

Docker Compose 是最简单的部署方式,一键启动所有服务,适合快速体验和开发测试。

1. 克隆项目

git clone https://github.com/ydcloud-dy/opshub.git
cd opshub

2. 启动服务

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

3. 访问系统

服务地址
前端http://localhost:5173
后端 APIhttp://localhost:9876
Swagger 文档http://localhost:9876/swagger/index.html

4. 常用命令

# 停止服务
docker-compose down

# 停止并删除数据卷
docker-compose down -v

# 重启单个服务
docker-compose restart opshub-backend

# 查看服务日志
docker-compose logs -f opshub-backend
使用 Helm Chart 在 Kubernetes 上部署 OpsHub,适合生产环境,支持高可用和自动伸缩。

前置条件

  • Kubernetes 1.24+ 集群
  • Helm 3.0+
  • kubectl 已配置好集群访问
  • Ingress Controller(如 nginx-ingress)
  • StorageClass(如需持久化存储)

1. 克隆项目

git clone https://github.com/ydcloud-dy/opshub.git
cd opshub

2. 快速安装(默认配置)

# 创建命名空间并安装
helm install opshub ./charts/opshub \
  --namespace opshub \
  --create-namespace

3. 自定义配置安装

cd charts/opshub
# 编辑 values.yaml 文件后安装
helm upgrade --install opshub -n opshub .

values.yaml 核心配置

# 后端配置
backend:
  replicaCount: 2
  image:
    repository: docker.1ms.run/dyclouds/opshub-api
    tag: latest
  resources:
    requests:
      memory: "256Mi"
      cpu: "100m"
    limits:
      memory: "512Mi"
      cpu: "500m"

# 前端配置
frontend:
  replicaCount: 2
  image:
    repository: docker.1ms.run/dyclouds/opshub-web
    tag: latest

# MySQL 配置
mysql:
  enabled: true
  auth:
    rootPassword: "OpsHub@2026"
    database: opshub
  persistence:
    enabled: true
    size: 20Gi

# Redis 配置
redis:
  enabled: true
  auth:
    password: "OpsHub@Redis"

# Ingress 配置
ingress:
  enabled: true
  className: nginx
  hosts:
    - host: opshub.example.com
      paths:
        - path: /
          pathType: Prefix

4. 使用外部数据库

# 禁用内置 MySQL
mysql:
  enabled: false

# 外部 MySQL 配置
externalDatabase:
  host: mysql.example.com
  port: 3306
  database: opshub
  username: opshub
  password: "your-mysql-password"

# 禁用内置 Redis
redis:
  enabled: false

# 外部 Redis 配置
externalRedis:
  host: redis.example.com
  port: 6379
  password: "your-redis-password"

5. 验证安装

# 查看 Pod 状态
kubectl get pods -n opshub

# 查看所有资源
kubectl get all -n opshub

# 查看 Ingress
kubectl get ingress -n opshub

6. 访问系统

如果配置了 Ingress,通过域名访问:

https://opshub.yourcompany.com

如果没有 Ingress,可以使用端口转发:

# 转发前端服务
kubectl port-forward svc/opshub-frontend 8080:80 -n opshub

# 转发后端服务(另一个终端)
kubectl port-forward svc/opshub-backend 9876:9876 -n opshub

# 访问
# 前端: http://localhost:8080
# API: http://localhost:9876

7. 运维命令

# 查看 Pod 日志
kubectl logs -f deployment/opshub-backend -n opshub

# 进入 Pod 调试
kubectl exec -it deployment/opshub-backend -n opshub -- /bin/sh

# 重启 Deployment
kubectl rollout restart deployment/opshub-backend -n opshub

# 扩缩容
kubectl scale deployment opshub-backend --replicas=5 -n opshub

# 升级
helm upgrade opshub ./charts/opshub -n opshub -f my-values.yaml

# 回滚
helm rollback opshub -n opshub

# 卸载
helm uninstall opshub -n opshub
源码部署适合开发调试和二次开发场景,可以更灵活地修改和调试代码。

1. 克隆项目

git clone https://github.com/ydcloud-dy/opshub.git
cd opshub

2. 初始化数据库

# 创建数据库
mysql -u root -p -e "CREATE DATABASE opshub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 导入初始化脚本(如有)
mysql -u root -p opshub < migrations/init.sql

3. 配置后端

# 复制配置文件
cp config/config.yaml.example config/config.yaml

# 编辑 config.yaml 修改数据库连接信息
vim config/config.yaml

4. 启动后端

# 安装依赖
go mod download

# 启动服务
go run main.go server

5. 启动前端

cd web

# 安装依赖
npm install

# 开发模式
npm run dev

# 或者构建生产版本
npm run build

6. 访问系统

服务地址
前端http://localhost:5173
后端 APIhttp://localhost:9876
Swagger 文档http://localhost:9876/swagger/index.html

环境变量说明

变量名 描述 默认值
OPSHUB_SERVER_MODE 运行模式 (debug/release) debug
OPSHUB_SERVER_HTTP_PORT HTTP 端口 9876
OPSHUB_SERVER_JWT_SECRET JWT 密钥 -
OPSHUB_SERVER_JWT_EXPIRE JWT 过期时间 24h
OPSHUB_DATABASE_HOST MySQL 地址 127.0.0.1
OPSHUB_DATABASE_PORT MySQL 端口 3306
OPSHUB_DATABASE_DATABASE 数据库名 opshub
OPSHUB_DATABASE_USERNAME 数据库用户名 root
OPSHUB_DATABASE_PASSWORD 数据库密码 -
OPSHUB_REDIS_HOST Redis 地址 127.0.0.1
OPSHUB_REDIS_PORT Redis 端口 6379
OPSHUB_REDIS_PASSWORD Redis 密码 -
OPSHUB_REDIS_DB Redis 数据库 0

默认账号

用户名 密码 角色
admin 123456 超级管理员
安全提示:首次登录后请立即修改默认密码!

常见问题

1. 数据库连接失败

  • 检查 MySQL 服务是否正常运行
  • 确认数据库连接配置是否正确
  • 检查防火墙是否开放 3306 端口
  • 确认数据库用户权限

2. Redis 连接失败

  • 检查 Redis 服务是否正常运行
  • 确认 Redis 配置(地址、端口、密码)
  • 检查防火墙是否开放 6379 端口

3. 前端无法访问后端 API

  • 检查后端服务是否正常运行
  • 确认 Nginx 代理配置正确
  • 检查 API 地址配置

4. Helm 安装后 Pod 启动失败

# 查看 Pod 日志
kubectl logs -f <pod-name> -n opshub

# 查看 Pod 详情
kubectl describe pod <pod-name> -n opshub

# 常见原因:
# - 镜像拉取失败:检查镜像名称和网络
# - PVC 创建失败:检查 StorageClass 是否存在
# - 配置错误:检查 values.yaml 配置
# - 资源不足:增加节点资源或调整 requests/limits

5. Ingress 无法访问

  • 确认 Ingress Controller 已安装并运行
  • 检查域名 DNS 解析是否正确
  • 确认 Ingress 规则配置正确
  • 检查 TLS 证书是否有效(如启用 HTTPS)

下一步