diff --git a/03-UnrealEngine/流程管理与部署/UnrealHorde/Unreal Horde 相关笔记.md b/03-UnrealEngine/流程管理与部署/UnrealHorde/Unreal Horde 相关笔记.md index 5f6ca90..70230be 100644 --- a/03-UnrealEngine/流程管理与部署/UnrealHorde/Unreal Horde 相关笔记.md +++ b/03-UnrealEngine/流程管理与部署/UnrealHorde/Unreal Horde 相关笔记.md @@ -21,21 +21,26 @@ rating: ⭐ - 视频 - [Horde and Unreal Build Accelerator: Operating at Epic Scale](https://youtu.be/ZUlwqNbYWBQ?si=DgFvrvepK67v-iTi) -## 代理客户端下载地址 -- https://github.com/EpicGames/UnrealEngine/releases/download/5.5.0-release/UnrealHordeServer.msi - -# Internals -## Server -Horde 默认配置为支持本地开发。您可以通过打开`Engine/Source/Programs/Horde/Horde.sln`并将 Horde.Server 设置为默认项目来启动它。默认情况下,您可以通过 访问服务器`http://localhost:5000/account`。 - -## Docker -Horde 包含`Dockerfile`用于创建 Docker 映像的 。但是,它在虚幻引擎源代码树中的位置要求事先暂存文件,以减少复制到构建映像中的数据大小。 - -执行这些操作的 BuildGraph 脚本包含在 中`Engine\Source\Programs\Horde\HordeBuild.xml`,可按如下方式运行: -``` -RunUAT.bat Engine/Source/Programs/Horde/HordeBuild.xml -Target="Build HordeServer" -``` +## 下载地址 +- 官方下载地址 + - 服务端:https://github.com/EpicGames/UnrealEngine/releases/download/5.5.0-release/UnrealHordeServer.msi +- 也可以从Horde服务器下载地址 + - http://10.219.103.35:13340/tools +# 大致步骤 +1. 使用docker部署服务。 +2. 服务器配置。 + 1. 默认端口Http 13340、Http 2 13342。 + 1. 默认情况下,Horde配置为使用端口5000通过未加密的HTTP提供数据。在默认情况下,代理通过端口5002使用未加密的HTTP/2上的gRPC与Horde服务器通信。这些设置在服务器启动时显示在控制台上。 + 2. [相关配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-orientation-for-unreal-engine?application_version=5.5) + - [服务器配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE)将配置该服务器与其他服务器的通信,定义静态参数等。它由与该服务器一同部署的 `Server.json` 文件驱动。 + - [完整配置参数清单](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE) + - [全局配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-schema-for-unreal-engine?application_version=5.5#globals)在部署后控制所有面向用户的元素,该配置存于名为 `Globals.json` 的文件中。设置好部署参数后,大多数配置都在此处完成。 + 3. [验证相关配置](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-authentication-tutorial-for-unreal-engine?application_version=5.5) + 1. [[#OIDC身份验证]] +3. 代理机配置。详见 http://10.219.103.35:13340/docs/Landing.md + 1. 配置文件位置:安装目录\Agent\Defaults\agent.json + 2. # 部署笔记 ## Epic Games的Horde部署 Epic Games内部部署的Horde托管在AWS上,包括以下部分: @@ -51,7 +56,8 @@ Epic Games内部部署的Horde托管在AWS上,包括以下部分: - 数百个EC2实例,运行包含Horde代理的AMI。 - 约100台机器,本地托管,用于提供对移动设备、主机以及非托管平台(例如Mac设备)的访问。 -## 流程 +## 部署流程 +- [Horde服务器](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-server-for-unreal-engine?application_version=5.5) ### Windows 相关服务安装都集成在安装包里。 @@ -61,7 +67,12 @@ Epic Games内部部署的Horde托管在AWS上,包括以下部分: docker login ghcr.io ``` -***注意这里需要用Token,不然容易登录失败*** +***注意这里需要用Token,不然容易登录失败,Token需要开启Package Read 权限*** +```c++ +# Github +docker login ghcr.io -u 378100977@qq.com -p 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 +``` + 下载镜像: ```shell @@ -79,4 +90,71 @@ docker pull ghcr.io/epicgames/horde-server:latest ```shell docker compose up ``` -如需更多指导,请参阅YAML文件中的注释。 \ No newline at end of file +如需更多指导,请参阅YAML文件中的注释。 + +## Https配置流程 +要通过HTTPS协议提供数据,请在[Server.json](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE)中设置 `HttpsPort` 属性。 +通过在同一文件中设置默认证书,为[Kestrel](https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-8.0)(NET Core web服务器)配置证书。 +跨平台: +```json +"Kestrel": { + "Certificates": { + "Default": { + "Path": "C:\\cert\\test.pfx", + "Password": "my-password" + } + } +} +``` +## 验证配置流程 +如果你现在没有与OIDC兼容的身份提供商,Horde将提供自有身份提供商 - 本指南将介绍该提供商。 + +### 先决条件 +- Horde服务器安装(参阅[Horde安装教程](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-installation-tutorial-for-unreal-engine?application_version=5.5))。 +- 具有有效证书,并且在你的服务器上启用[HTTPS支持](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-server-for-unreal-engine?application_version=5.5#https)。 + +### 步骤 +1. 在你的[server.json](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-orientation-for-unreal-engine?application_version=5.5)文件中将 `AuthMode` 属性设置为 `Horde` ,然后重新启动服务器。 +2. 第一次启动服务器时,系统会提示你输入管理员密码。 +3. 登录后, `服务器(Server)` 菜单中会有一个 `账户(Accounts)` 菜单项。从此处,你可以管理允许登录到服务器的用户,以及他们拥有的[声明](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-glossary-for-unreal-engine?application_version=5.5#%E6%8E%88%E6%9D%83)。Horde的账户系统会将 `http://epicgames.com/ue/horde/group` 声明用于用户所属组,并且操作面板将建议并自动填写在部署的配置文件中找到的组。 + +服务器的 `default.globals.json` 文件中定义了两个标准组,默认情况下包含于标准 `globals.json` 文件中:`查看` 和 `运行` 。 +```cpp +"acl": { + "entries": [ + { + "claim": { + "type": "http://epicgames.com/ue/horde/group", + "value": "View" + }, + "profiles": [ + "default-read" + ] + }, + { + "claim": { + "type": "http://epicgames.com/ue/horde/group", + "value": "Run" + }, + "profiles": [ + "default-run" + ] + } + ] +} +``` + +`default-read` 和 `default-run` 配置文件在代码( `AclConfig.cs` )中定义。你可以在每个[AclConfig](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-schema-for-unreal-engine?application_version=5.5#aclconfig)对象的 `profiles` 元素中定义自己的配置文件。 + +### OIDC身份验证 +要配置外部OIDC提供程序,需要在[Server.json](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/horde-settings-for-unreal-engine?application_version=5.5#%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE)中进行以下设置: +- `AuthMethod` :将其设置为`OpenIdConnect` 。 +- `OidcAuthority` :OIDC授权的URL。你可以在浏览器中访问 `{{Url}}/.well-known/openid-configuration` ,检查此处指定的URL是否正确,该地址应返回OIDC发现文档。 +- `OidcClientId` :向OIDC提供程序标识应用程序(Horde)。它由OIDC提供程序生成。 +- `OidcClientSecret` :OIDC提供程序提供的一个机密值,用于识别请求授权的应用程序。 + +此外,还可以指定以下设置: +- `OidcRequestedScopes` :指定向OIDC提供程序请求的权限范围。权限范围决定了Horde向OIDC提供程序请求的访问权限,以及将返回的且可用于在Horde ACL中进行检查的声明。这些值的含义取决于你的OIDC 提供程序配置。 +- `OidcClaimNameMapping` :指定在尝试显示用户真实姓名时按偏好顺序检查的声明的列表。 +- `OidcClaimEmailMapping` :指定在尝试显示用户邮件地址时按偏好顺序检查的声明的列表。 +- `OidcClaimHordePerforceUserMapping` :指定在尝试确定用户的Perforce用户名时按偏好顺序检查的声明的列表。 \ No newline at end of file