原创

Skillhub安装部署

SkillHub 是一个自托管平台,为团队提供私有的、受治理的智能体技能共享空间。发布技能包,推送到命名空间,让其他人通过搜索发现或通过 CLI 安装。专为防火墙后的本地部署而构建,提供与公共注册中心相同的精致体验。

文档

  • 📖 用户指南 — 技能发布、搜索、CLI 使用等用户操作指南
  • 🛠️ 开发者文档 — 架构设计、API 参考、本地开发、部署运维等技术文档

核心特性

  • 自托管与私有化 — 部署在您自己的基础设施上。将专有技能保留在防火墙后,完全掌控数据主权。一条 make dev-all 命令即可在本地运行。
  • 发布与版本管理 — 上传智能体技能包,支持语义化版本控制、自定义标签(betastable)和自动 latest 跟踪。
  • 发现 — 全文搜索,支持按命名空间、下载量、评分和时间筛选。可见性规则确保用户只能看到其有权访问的内容。
  • 团队命名空间 — 在团队或全局范围下组织技能。每个命名空间拥有自己的成员、角色(Owner / Admin / Member)和发布策略。
  • 审核与治理 — 团队管理员在其命名空间内审核;平台管理员控制向全局范围的推广。治理操作记录审计日志以满足合规要求。
  • 社交功能 — 收藏技能、评分并跟踪下载量。围绕组织的最佳实践构建社区。
  • 账户合并 — 将多个 OAuth 身份和 API 令牌整合到单个用户账户下。
  • API 令牌管理 — 为 CLI 和程序化访问生成作用域令牌,采用基于前缀的安全哈希。
  • CLI 优先 — 原生 REST API,加上对现有 ClawHub 风格注册中心客户端的兼容层。原生 CLI API 是主要支持路径,协议兼容性持续扩展中。
  • 可插拔存储 — 开发环境使用本地文件系统,生产环境使用 S3 / MinIO。通过配置切换。
  • 国际化 — 使用 i18next 支持多语言。

安装部署

下载源码

git clone https://github.com/iflytek/skillhub

修改配置

cp .env.release.draft .env.release

修改配置

# ========= 镜像版本 =========
SKILLHUB_VERSION=latest
SKILLHUB_SERVER_IMAGE=ghcr.io/iflytek/skillhub-server
SKILLHUB_WEB_IMAGE=ghcr.io/iflytek/skillhub-web
SKILLHUB_SCANNER_IMAGE=ghcr.io/iflytek/skillhub-scanner

# ========= 访问地址 =========
# 本地先用服务器 IP,别写 https
SKILLHUB_PUBLIC_BASE_URL=http://你的服务器IP
SKILLHUB_WEB_API_BASE_URL=
SKILLHUB_API_UPSTREAM=http://server:8080

# ========= PostgreSQL =========
POSTGRES_BIND_ADDRESS=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_DB=skillhub
POSTGRES_USER=skillhub
POSTGRES_PASSWORD=SkillHub123!ChangeMe

# ========= Redis =========
REDIS_BIND_ADDRESS=127.0.0.1
REDIS_PORT=6379

# ========= 对外端口 =========
API_PORT=8080
WEB_PORT=80

# ========= Cookie / 会话 =========
# 本地 HTTP 访问必须 false
SESSION_COOKIE_SECURE=false

# ========= 存储 =========
# 本地跑先不要 OSS/S3
SKILLHUB_STORAGE_PROVIDER=local

# 下面这些即使保留也不会用到,本地可留空
SKILLHUB_STORAGE_S3_ENDPOINT=
SKILLHUB_STORAGE_S3_PUBLIC_ENDPOINT=
SKILLHUB_STORAGE_S3_BUCKET=
SKILLHUB_STORAGE_S3_ACCESS_KEY=
SKILLHUB_STORAGE_S3_SECRET_KEY=
SKILLHUB_STORAGE_S3_REGION=
SKILLHUB_STORAGE_S3_FORCE_PATH_STYLE=false
SKILLHUB_STORAGE_S3_AUTO_CREATE_BUCKET=false
SKILLHUB_STORAGE_S3_PRESIGN_EXPIRY=PT10M

# ========= 初始管理员 =========
BOOTSTRAP_ADMIN_ENABLED=true
BOOTSTRAP_ADMIN_USER_ID=docker-admin
BOOTSTRAP_ADMIN_USERNAME=admin
BOOTSTRAP_ADMIN_PASSWORD=Admin123!ChangeMe
BOOTSTRAP_ADMIN_DISPLAY_NAME=Admin
BOOTSTRAP_ADMIN_EMAIL=admin@local.test

# ========= 设备认证 =========
DEVICE_AUTH_VERIFICATION_URI=

# ========= GitHub OAuth =========
OAUTH2_GITHUB_CLIENT_ID=
OAUTH2_GITHUB_CLIENT_SECRET=

# ========= 邮件 =========
# 本地先全留空,不启用真实 SMTP
SPRING_MAIL_HOST=
SPRING_MAIL_PORT=25
SPRING_MAIL_USERNAME=
SPRING_MAIL_PASSWORD=
SPRING_MAIL_SMTP_AUTH=false
SPRING_MAIL_SMTP_STARTTLS_ENABLE=false
SPRING_MAIL_PROPERTIES_MAIL_SMTP_SSL_ENABLE=false
SPRING_MAIL_PROPERTIES_MAIL_SMTP_SSL_TRUST=
SKILLHUB_AUTH_PASSWORD_RESET_CODE_EXPIRY=PT10M
SKILLHUB_AUTH_PASSWORD_RESET_FROM_ADDRESS=noreply@local.test
SKILLHUB_AUTH_PASSWORD_RESET_FROM_NAME=SkillHub

删除原来的脏数据 清掉旧的 postgres volume

docker-compose -f compose.release.yml down -v

启动docker-compose服务

docker-compose --env-file .env.release -f compose.release.yml up -d

启动完成,访问网址

web镜像重新打包
docker build -t skillhub-web:latest ./web
替换新镜像
docker-compose -f compose.release.yml up -d web
强制替换
docker-compose -f compose.release.yml up -d --force-recreate web

正文到此结束
Loading...