# CSGHub
**Repository Path**: aylerh/CSGHub
## Basic Information
- **Project Name**: CSGHub
- **Description**: CSGHub是一个开源、可信的大模型资产管理平台,可帮助用户治理LLM和LLM应用生命周期中涉及到的资产(数据集、模型文件、代码等)。CSGHub提供类似私有化的Huggingface功能,以类似OpenStack Glance管理虚拟机镜像、Harbor管理容器镜像以及Sonatype Nexus管理制品的方式,实现对LLM资产的管理。欢迎关注反馈和Star⭐️
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://opencsg.com/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 8
- **Created**: 2025-02-11
- **Last Updated**: 2025-02-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[](https://github.com/OpenCSGs/csghub/actions/workflows/unit_tests.yml)
[](./docs/images/wechat-assistant-new.png)
[](https://join.slack.com/t/opencsghq/shared_invite/zt-2fmtem7hs-s_RmMeoOIoF1qzslql2q~A)
[](https://discord.gg/bXnu4C9BkR)
[](https://gurubase.io/g/csghub)
**[简体中文](README_zh.md) ∙ [日本語](README_jp.md) ∙ [한국어](README_kr.md) ∙ [Español](README_es.md)**
## CSGHub
CSGHub 是一个开源平台,专为管理大语言模型(LLM)资产而设计,提供了高效管理 LLM 及其资产(如数据集、应用空间、代码等)的方式。用户可以通过网页界面、`git` 命令行、自然语言聊天机器人,或 [CSGHub SDK](https://github.com/OpenCSGs/csghub-sdk) 对 LLM 资产进行上传、下载、存储、校验和分发。
此外,CSGHub 提供微服务子模块和标准化 OpenAPI,以便与现有系统无缝集成。CSGHub 为大模型提供了友好的管理平台,并支持本地化部署,确保安全、离线运行。实际上,CSGHub 可以看作是 Huggingface 的私有化本地版本。

### 核心功能
- 统一管理大模型资产
- 灵活兼容的开发生态系统
- 大模型能力扩展
- 应用空间与资产管理助手(Copilot)
- 多源数据同步与推荐
- 完善的权限与安全管控
- 支持私有化部署
- 一站式数据处理与智能标注系统
- 高可用与灾难恢复设计
详细信息请参见 [CSGHub 详细介绍](./docs/detailed_intro_zh.md)。
## 项目组件介绍
CSGHub 项目由多个组件组成,每个组件都承担着特定的职责,共同构成一个高效、可扩展的系统架构。以下是各个组件的简要介绍:
csghub_portal: 负责用户界面的管理和展示,提供直观的界面供用户与系统交互。
csghub_server: 提供主要的服务逻辑和 API 接口,处理客户端发送的请求。
csghub_user: 管理用户身份和认证流程,确保用户信息的安全性和隐私保护,支持用户注册、登录及权限管理。
csghub_proxy: 负责部署实例相关的请求转发,例如 space 应用的操作请求转发到 Knative Serving 服务。
csghub_accounting: 计费系统,负责资源使用过程中产生的费用统计。
csghub_mirror: 提供仓库数据的同步服务,负责同步 opencsg.com 模型和数据集到本地。
csghub_runner: 负责在 Kubernetes 集群中部署和管理应用实例,确保应用的快速构建和持续交付。
csghub_builder: 负责构建应用镜像并上传到容器镜像仓库,简化应用的打包和发布流程。
csghub_watcher: 监控 CSGHub 所有 Secret 和 ConfigMap 变动,并更新相关依赖资源。
gitaly: 用于 Git 存储后端,提供高性能的 Git 操作,实现快速、高效的代码版本控制和管理。
gitlab-shell: 提供 Git over SSH 的交互接口,用于安全的 Git 操作,确保数据传输的安全性。
nats: 实现微服务之间的消息传递和事件驱动架构,提供高效的异步通信能力,增强系统的解耦性和响应速度。
minio: 提供高性能的本地对象存储服务。
postgresql: 存储各组件元数据,提供高效的数据查询和更新能力。
registry: 提供容器镜像仓库服务,便于存储、管理和分发容器镜像。
redis: 提供高性能的缓存和数据存储服务。
casdoor: 负责用户身份的验证和授权,配合 csghub_user 完成用户管理。
coredns: 用于解析 CSGHub 的内部 DNS 请求,例如 Knative Serving 中使用的内部域名解析。
Temporal: 异步任务管理服务,用于执行耗时较长任务,比如资源同步任务。
fluentd: 灵活的日志收集和处理框架,聚合和转发各应用程序日志,便于实时监控、分析和故障排除。
## docker-compose 部署
中文教程:https://opencsg.com/docs/csghub/101/install/compose
### 原属于csghub-docker-compose-v1.3.0的内容:
文件夹:configs:
[casdoorcoredns docker
fluentd
gitaly gitlab-shell nats nginx server]
文件:.env configure docker-compose.yml
### .env -配置文件
### docker-compose.yml介绍
我会为您创建一个表格,总结所有容器的名称、镜像名和暴露的端口。
| 容器名 | 镜像名 | 暴露端口 |
|--------|---------|-----------|
| nginx | ${CSGHUB_IMAGE_PREFIX}/nginx:latest | - ${SERVER_PORT:-80}:${SERVER_PORT:-80}
- ${GIT_SSH_PORT:-2222}:2222
- ${REGISTRY_PORT:-5000}:5000
- ${CASDOOR_PORT:-8000}:8000
- ${MINIO_API_PORT:-9000}:9000
- ${MINIO_CONSOLE_PORT:-9001}:9001 |
| redis | ${CSGHUB_IMAGE_PREFIX}/redis:7.2.5 | - |
| coredns | ${CSGHUB_IMAGE_PREFIX}/coredns/coredns:1.11.1 | - |
| registry | ${CSGHUB_IMAGE_PREFIX}/registry:2 | - |
| postgres | ${CSGHUB_IMAGE_PREFIX}/csghub/postgres:15.10 | - |
| minio | ${CSGHUB_IMAGE_PREFIX}/bitnami/minio:2023 | - |
| gitaly | ${CSGHUB_IMAGE_PREFIX}/gitaly:v17.5.0 | - |
| gitlab-shell | ${CSGHUB_IMAGE_PREFIX}/gitlab-shell:v17.5.0 | - |
| csghub-portal | ${CSGHUB_IMAGE_PREFIX}/csghub_portal:${CSGHUB_VERSION} | - |
| csghub-server | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - |
| csghub-runner | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - |
| csghub-proxy | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - |
| csghub-user | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - |
| csghub-accounting | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - |
| csghub-mirror-repo | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - |
| csghub-mirror-lfs | ${CSGHUB_IMAGE_PREFIX}/csghub_server:${CSGHUB_VERSION} | - |
| csghub-db-init | ${CSGHUB_IMAGE_PREFIX}/opencsg/psql:latest | - |
| docker-server | ${CSGHUB_IMAGE_PREFIX}/docker:27.3-dind | - |
| csghub-space-builder | ${CSGHUB_IMAGE_PREFIX}/csghub_space_builder:latest | - |
| nats | ${CSGHUB_IMAGE_PREFIX}/csghub_nats:2.10.16 | - |
| casdoor | ${CSGHUB_IMAGE_PREFIX}/casbin/casdoor:v1.733.0 | - |
| temporal | ${CSGHUB_IMAGE_PREFIX}/temporalio/auto-setup:1.25.1 | - |
| temporal-ui | ${CSGHUB_IMAGE_PREFIX}/temporalio/ui:2.30.3 | - |
| fluentd | ${CSGHUB_IMAGE_PREFIX}/fluentd:v1.16-1 | 24224:24224 |
注意:
1. 大多数服务通过 nginx 反向代理对外暴露服务,所以它们自身并不直接暴露端口
2. 所有镜像名都使用了 ${CSGHUB_IMAGE_PREFIX} 变量作为前缀
3. csghub-server 相关的服务都使用相同的基础镜像,但有不同的入口点(entrypoint)
### docker-compose-ayler.yml
不同于docker-compose.yaml:使用自己打包的csghub_server镜像ayler/csghub_server:v1
### .configure 文件
这个配置文件(configure)是一个 Bash 脚本,主要用于 CSGHub 系统的初始化配置。以下是其主要功能:
1. **基础功能设置**
- 定义日志函数(log)支持不同级别(INFO/WARN/ERRO/TIPS)的彩色输出
- 定义重试机制(retry)用于不稳定命令的执行
- 执行初始环境检查(权限、架构、必需变量等)
2. **目录结构初始化**
```
.
├── configs/ # 配置文件目录
│ ├── fluentd/ # 日志收集
│ ├── nginx/ # 反向代理
│ ├── coredns/ # DNS服务
│ ├── registry/ # 容器镜像仓库
│ ├── gitaly/ # Git存储服务
│ ├── gitlab-shell/ # Git SSH访问
│ ├── docker/ # Docker配置
│ ├── nats/ # 消息队列
│ ├── casdoor/ # 认证服务
│ └── server/ # CSGHub服务器
├── data/ # 数据存储
└── logs/ # 日志存储
```
3. **主要配置任务**
- Fluentd:配置日志收集服务
- Nginx:配置反向代理,支持 HTTP/HTTPS
- CoreDNS:配置内部 DNS 解析
- Minio:对象存储服务配置
- Registry:容器镜像仓库配置
- Gitaly:Git 存储服务配置
- Gitlab-Shell:SSH 访问配置
- CSGHub Space Builder:构建服务配置
- NATS:消息队列配置
- Casdoor:认证服务配置
4. **特殊处理**
- K8s 环境配置(如果启用)
- SSL 证书配置(HTTPS 模式)
- 各种认证信息的生成
- 权限设置(特别是对 Linux 系统)
5. **最终操作**
- 使用 docker-compose 启动所有服务
- 显示访问 URL 和服务状态
这个脚本的主要目的是:
1. 确保所有必要的配置文件和目录结构正确创建
2. 根据环境变量渲染各个服务的配置文件
3. 设置正确的权限和认证信息
4. 协调各个服务之间的依赖关系
5. 最终启动完整的 CSGHub 系统
使用场景:
- 首次部署 CSGHub 系统时的初始化
- 系统配置更新时的重新配置
- 确保多个服务之间的配置一致性
### Demo Video
To help users get up to speed with CSGHub, we have created a demo video that highlights its key features and how it works. You can watch it below or on [YouTube](https://www.youtube.com/watch?v=6LwGQ07qBxU)/[Bilibili](https://www.bilibili.com/video/BV1ynmxY3EXz/).
### Quick Start
- For those looking to quickly explore, experiment with CSGHub's free SaaS version on the [OpenCSG website](https://opencsg.com). Refer to this [brief quick start guide](./docs/csghub_saas_en.md) to handle LLMs/datasets and deploy LLM applications with CSGHub SaaS interface.
For more information, please refer to the [OpenCSG Documentation Center](https://opencsg.com/docs/en/intro).
- For those seeking a hands-on experience, you can quickly launch CSGHub on your local environment (Linux/MacOS/Windows) using the [Docker one-click deployment guide](https://github.com/OpenCSGs/csghub-installer/tree/main/docker), which allows you to start an all-in-one container with simplified commands and instantly experience the core functionalities of CSGHub.
- For those deploying on Kubernetes, refer to the [Helm Chart installation guide](https://github.com/OpenCSGs/csghub-installer/tree/main/helm) for step-by-step instructions.
### Quick Try
[](https://market.aliyun.com/products/56014009/cmgj00068499.html?source=5176.29345612&userCode=swc743za)
### Roadmap
Discover the [roadmap](./docs/roadmap_en.md) outlining CSGHub's future direction.
### Release Notes
Refer to [release notes](./docs/release_notes.md) for information on feature improvements.
### Meetings & Contributing
We warmly invite you to explore the [OpenCSG Community](https://github.com/OpenCSGs/community), where you'll find comprehensive guides on becoming a vital part of the project.
- The process for joining [community meetings](https://github.com/OpenCSGs/community?tab=readme-ov-file#community-meeting), where you can engage with fellow members and share your ideas.
- Refer to the [contribution guide](https://github.com/OpenCSGs/community/blob/main/guidelines/CONTRIBUTING_en.md) for strategies on how to contribute to the project.
- [Contact us](https://github.com/OpenCSGs/community?tab=readme-ov-file#questions-and-issues) for any questions or issues, ensuring you're always supported throughout your journey with OpenCSG.
- Refer to the [development guide](./docs/setup_en.md) for instructions on setting up the development environment.