# Yearning 安装及 SSO 接入指南 ## Yearning 安装启动 - 可以参考:https://next.yearning.io/zh/usage/ixah25xr/ ### Docker Compose #### `docker-compose.yml` 文件 ```yaml version: '3' services: yearning: image: yeelabs/yearning:v3.1.5 environment: MYSQL_USER: yearning MYSQL_PASSWORD: ukC2ZkcG_ZTeb MYSQL_ADDR: mysql MYSQL_DB: yearning SECRET_KEY: dbcjqheupqjsuwsm IS_DOCKER: is_docker ports: - 8000:8000 volumes: - ./opt/conf.toml:/opt/conf.toml #- 首次使用请先初始化 #- command: /bin/bash -c "./Yearning install && ./Yearning run" depends_on: - mysql restart: always mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: ukC2ZkcG_ZTeb MYSQL_DATABASE: yearning MYSQL_USER: yearning MYSQL_PASSWORD: ukC2ZkcG_ZTeb command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci volumes: - ./data/mysql:/var/lib/mysql #- 默认账号:admin,默认密码:Yearning_admin ``` #### `conf.toml` 文件 ```java [Mysql] Db ="Yearning" Host ="127.0.0.1" Port ="3306" Password ="" User ="root" [General] SecretKey ="dbcjqheupqjsuwsm" Hours =4 Lang="zh_CN" [Oidc] Enable =false ClientId ="${keycloak的客户端ID}" ClientSecret ="${keycloak的客户端Secret}" Scope ="openid profile" AuthUrl ="${issuer链接}/protocol/openid-connect/auth" TokenUrl ="${issuer链接}/protocol/openid-connect/token" UserUrl ="${issuer链接}/protocol/openid-connect/userinfo" RedirectUrL ="${yearning的地址}/oidc/_token-login" UserNameKey ="preferred_username" RealNameKey ="name" EmailKey ="email" SessionKey ="session_state" ``` ### Yearning OIDC 配置 - 可以参考:https://next.yearning.io/zh/usage/boccobus/ #### 修改 `conf.toml`(Keycloak示例) ```java [Oidc] Enable =true ClientId ="${keycloak的客户端ID}" ClientSecret ="${keycloak的客户端Secret}" Scope ="openid profile" AuthUrl ="${issuer链接}/protocol/openid-connect/auth" TokenUrl ="${issuer链接}/protocol/openid-connect/token" UserUrl ="${issuer链接}/protocol/openid-connect/userinfo" RedirectUrL ="${yearning的地址}/oidc/_token-login" UserNameKey ="preferred_username" RealNameKey ="name" EmailKey ="email" SessionKey ="session_state" ``` - ${keycloak的客户端ID}:例如 `yearning` - ${keycloak的客户端Secret}: Keycloak中获取 - ${issuer链接}: Keycloak 中获取 - ${yearning的地址}:yearning 请求地址 ### 异常处理 - 如果出现异常,可以排查 `Yearning` 服务和 `Keycloak` 服务是否可以访问通畅。 - 或者说 `Yearning` SSO 配置中的链接在 `Yearning` 所在服务中是否可以正常访问 ## 本地构建启动(参考) - Yearning `3.1.9.1` - 系统 `Ubuntu24.04` - nodejs `v18.20.5` - npm `10.8.2` - go `go version go1.22.10 linux/amd64` ### 安装 GO #### 下载安装 - 下载 go:https://go.dev/dl/ ```shell #- 解压 tar -zxf go1.22.10.linux-amd64.tar.gz #- 移动 mv go /usr/local/go #- 配置环境变量 vi /etc/profile ####- /etc/profile start export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin ####- /etc/profile end #- 使配置生效 source /etc/profile #- 查看是否成功 go version ``` #### 配置 go proxy - 参考:https://goproxy.cn/ ```shell go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct ``` ### 安装 Node #### 下载安装 - 下载 nodejs:https://nodejs.org/en/download/ ```shell #- 解压 xz -d node-v18.20.5-linux-x64.tar.xz tar tar -xf node-v18.20.5-linux-x64.tar #- 移动 mv node-v18.20.5-linux-x64 /usr/local/nodejs #- 配置环境变量 vi /etc/profile ####-/etc/profile start export GOROOT=/usr/local/go export NODE_HOME=/usr/local/nodejs export PATH=$PATH:$GOROOT/bin:$NODE_HOME/bin ####-/etc/profile end #- 验证安装 node -v npm -v ``` ### Yearning 源码安装 - 工作目录: `/usr/local/workspace` #### 获取 Yearning ```shell git clone https://github.com/cookieY/Yearning.git ``` #### 获取 Yearning 前端 ```shell git clone https://github.com/cookieY/gemini-next.git ``` #### 编译前端代码 ```shell #- 进入目录 cd /usr/local/workspace/gemini-next #- 安装 npm install --registry https://registry.npmmirror.com #- 构建 npm run build --registry https://registry.npmmirror.com #- 将目标文件移动到源文件目录 mv dist /usr/local/workspace/Yearning/src/service/ ``` #### 编译后端代码 ```shell cd /usr/local/workspace/Yearning go mod tidy cp conf.toml.template conf.toml # 修改 配置文件 vi conf.toml # 初始化(第一次需要) # go run main.go install # 启动 go run main.go run ``` - 启动报错,chat/* xxx - `vi src/service/yearning.go` - 删除报错提示的行相关的代码 ## 参考 - [Yearning安装教程](https://next.yearning.io/zh/usage/ptbzchak/) - [使用go语言编译部署最新版Yearning【v3.0.1】](https://blog.csdn.net/qq_44930876/article/details/125679454)