Source: https://dev-docs.yueshu.com.cn/v5.3.2/visualization/studio/configs/ Documentation version: v5.3.2 # 悦数图管理配置 本文介绍悦数图管理的配置。 Note 如果悦数图管理启动后修改了配置文件,需要重启悦数图管理以使更改生效。 ## 默认配置文件 配置文件位置取决于安装方式: - TAR 包:解压目录下的`etc/config.yaml`。 - RPM 或 DEB 包:`/etc/nebula-studio/config.yaml`。 - Docker Compose:默认使用镜像内的配置,无需准备配置文件。如需自定义配置,请按[安装悦数图管理](https://dev-docs.yueshu.com.cn/v5.3.2/visualization/studio/install/)中的“自定义配置”步骤,将`config-release.yaml`挂载到容器内的`/app/etc/config-release.yaml`。修改已挂载的文件后,在部署目录运行`docker compose -f studio-compose.yaml restart studio`。 RPM 和 DEB 包的其他文件位置如下,请参见 [Linux 安装包说明](https://github.com/vesoft-inc/nebula-ng-studio/blob/main/deploy/linux-packages.md): | 内容 | 路径 | 程序文件 | `/usr/lib/nebula-studio` | 可选环境文件 | `/etc/nebula-studio/studio.env` | SQLite 数据库 | `/var/lib/nebula-studio/studio.db` | 应用日志 | `/var/log/nebula-studio` 以下示例展示配置项。RPM 和 DEB 包请以安装后的`/etc/nebula-studio/config.yaml`为准,尤其不要将示例中的相对路径`./data/studio.db`直接覆盖包内的 SQLite 路径。 ```` Name: studio-api Host: 0.0.0.0 Port: 7001 Timeout: 30000 DefaultHost: '' # 可选,登录页面显示的默认数据库地址,例如 "graph0" DefaultPort: '' # 可选,登录页面显示的默认数据库端口,例如 "9669" Log: Mode: file Level: info KeepDays: 7 Assets: Gzip: true Auth: TokenName: 'studio_token' TokenSecret: '${STUDIO_TOKEN_SECRET}' TokenMaxAge: 86400 EncryptPassphrase: '${STUDIO_ENCRYPT_PASSPHRASE}' # SSO 配置(可选) SSO: Oauth2: Enable: false # 设置为 true 以启用 OAuth2 单点登录 ServerName: '' # OAuth2 服务端名称,必须与数据库中配置的服务端名称一致 AuthURL: '' # OAuth2 授权地址 AccessTokenURL: '' # 换取 OAuth2 Token 的地址 ClientID: '' # OAuth2 客户端 ID ClientSecret: '' # OAuth2 客户端密钥 RedirectURL: '' # 外部可访问的图管理回调地址 UserInfoURL: '' # OIDC userinfo 接口地址 Scope: 'openid profile email' # 请求的 OAuth2 Scope UsernameField: '' # 可选,留空时使用内置的用户名字段查找顺序 Database: Enable: true # 数据库类型:mysql、sqlite3 Dialect: sqlite3 AutoMigrate: true Host: 127.0.0.1 # 数据库主机地址 Port: 3306 # 数据库端口 Username: '' # 仅 MySQL 需要配置 Password: '' # 仅 MySQL 需要配置,通过部署配置注入 Name: studio # 数据库名称 # Silent(1)、Error(2)、Warn(3)、Info(4) LogLevel: 4 SqliteFilePath: './data/studio.db' # 仅 sqlite3 需要配置 Nebula: ClientMaxNum: 200 # 可同时连接的不同用户的最大数量 ClientPoolMaxWait: 10 # 等待客户端连接池的最长时间;单位:秒 ClientPoolConnsMaxOpen: 100 # 单个连接池中可创建的最大连接数 ClientPoolConnsMinOpen: 1 # 单个连接池中可创建的最小连接数 ClientMaxIdleConns: 5 # 单个连接池中的最大空闲连接数 ClientExpiredDuration: 14400 # 单个客户端的过期时长,系统每 24 小时检查一次;单位:分钟 ClientRequestTimeout: 10 # 客户端连接超时时间,默认 10 秒;单位:秒 ```` ## 认证密钥 配置示例支持通过环境变量`STUDIO_TOKEN_SECRET`和`STUDIO_ENCRYPT_PASSPHRASE`注入认证密钥。这些变量名由图管理识别,值需根据部署环境设置;默认部署可以不设置。 未配置时,服务会生成随机值。使用随机值时,重启服务会使已有会话失效,用户需要重新登录。生产环境应为部署配置稳定的密钥,并在重启后保持不变。不同部署应使用各自的密钥。 `STUDIO_ENCRYPT_PASSPHRASE`设置后必须为 16、24 或 32 字节。 ## 配置项 下表描述了悦数图管理的配置项: | 配置项 | 说明 | 默认值 | `Name` | 日志和跟踪器中显示的服务名称。 | `studio-api` | `Host` | 用于访问悦数图管理的监听地址。 | `0.0.0.0`,表示监听所有网络接口。 | `Port` | 用于访问悦数图管理的端口。 | `7001` | `Timeout` | 处理请求的超时时间(毫秒)。 | `30000` | `DefaultHost` | 登录页面显示的默认悦数图数据库开发版地址,可选。例如`graph0`。 | `""` | `DefaultPort` | 登录页面显示的默认悦数图数据库开发版端口,可选。例如`9669`。 | `""` | `Log.Mode` | 日志输出模式。 | `file`,表示日志输出到文件。TAR 包的日志位于解压目录的`logs`下,RPM 和 DEB 包的日志位于`/var/log/nebula-studio`。Docker Compose 默认未将日志目录挂载到宿主机;如需保留文件日志,请配置持久化存储。 | `Log.Level` | 日志级别。更多信息,请参见[日志配置](https://go-zero.dev/reference/configuration/log/#definition-of-parameters)。 | `info`,表示记录级别为`info`及更高级别的日志。 | `Log.KeepDays` | 日志保留天数。 | `7` | `Assets.Gzip` | 是否启用静态资源的 Gzip 压缩。 | `true` | `Auth.TokenName` | 用于登录的认证令牌的名称。 | `studio_token` | `Auth.TokenSecret` | 用于签名认证令牌的密钥。通过环境变量`STUDIO_TOKEN_SECRET`配置。 | 未设置时随机生成 | `Auth.EncryptPassphrase` | 用于加密认证信息的 AES 口令。通过环境变量`STUDIO_ENCRYPT_PASSPHRASE`配置;设置时必须为 16、24 或 32 字节。 | 未设置时随机生成 | `Auth.TokenMaxAge` | 认证令牌的有效期(秒)。 | `86400` | `Database.Enable` | 是否启用用于存储悦数图管理元数据的数据库。图探索依赖该数据库;关闭后,探索快照、设置等请求将失败,并返回`studio database is disabled`。 | `true` | `Database.Dialect` | 用于存储悦数图管理元数据的数据库类型。有效值为`mysql`和`sqlite3` | `sqlite3` | `Database.AutoMigrate` | 是否自动迁移数据库模式。 | `true` | `Database.Host` | 数据库的主机地址。 | `127.0.0.1` | `Database.Port` | 数据库的端口号。 | `3306` | `Database.Username` | 数据库的用户名,仅 MySQL 需要配置。 | `""` | `Database.Password` | 数据库用户的密码,仅 MySQL 需要配置,通过部署配置注入。 | `""` | `Database.Name` | 数据库的名称。 | `studio` | `Database.LogLevel` | 数据库操作的日志级别。有效值为`1`(不记录日志)、`2`(只记录错误)、`3`(记录告警和错误)和`4`(记录信息消息、告警和错误)。 | `4` | `Database.SqliteFilePath` | SQLite 数据库的文件路径。此选项仅在`Database.Dialect`设置为`sqlite3`时生效。 | TAR 包和 Docker 镜像为`./data/studio.db`;RPM 和 DEB 包位于`/var/lib/nebula-studio/studio.db`。 | `Nebula.ClientMaxNum` | 可同时连接到服务的最大用户数。 | `200` | `Nebula.ClientPoolMaxWait` | 等待客户端连接池的最长时间(秒)。 | `10` | `Nebula.ClientPoolConnsMaxOpen` | 单个连接池中可创建的最大连接数。 | `100` | `Nebula.ClientPoolConnsMinOpen` | 单个连接池中可创建的最小连接数。 | `1` | `Nebula.ClientMaxIdleConns` | 单个连接池中的最大空闲连接数。 | `5` | `Nebula.ClientExpiredDuration` | 空闲连接的过期时间(分钟)。如果客户端保持空闲状态的时间超过指定的持续时间,连接将自动终止。系统每24小时检查连接的过期状态。 | `14400` | `Nebula.ClientRequestTimeout` | 客户端连接的超时时间(秒)。 | `10` | `SSO.Oauth2.Enable` | 是否启用 OAuth2 单点登录。 | `false` | `SSO.Oauth2.ServerName` | OAuth2 服务端名称,必须与悦数图数据库开发版中配置的服务端名称一致。 | `""` | `SSO.Oauth2.AuthURL` | OAuth2 授权地址。 | `""` | `SSO.Oauth2.AccessTokenURL` | 换取 OAuth2 Token 的地址。 | `""` | `SSO.Oauth2.ClientID` | OAuth2 客户端 ID。 | `""` | `SSO.Oauth2.ClientSecret` | OAuth2 客户端密钥。 | `""` | `SSO.Oauth2.RedirectURL` | OAuth2 授权后外部可访问的悦数图管理回调地址。 | `""` | `SSO.Oauth2.UserInfoURL` | 用于获取用户名的 OIDC UserInfo 接口地址。 | `""` | `SSO.Oauth2.Scope` | 请求的 OAuth2 Scope。 | `"openid profile email"` | `SSO.Oauth2.UsernameField` | 从 UserInfo 响应中提取用户名的字段。留空时,按以下内置顺序查找:`preferred_username` > `username` > `login` > `email` > `sub`。 | `""`