10 KiB
title, date, excerpt, tags, rating
| title | date | excerpt | tags | rating |
|---|---|---|---|---|
| Unreal Horde | 2024-06-28 10:58:10 | ⭐ |
前言
- 官方文档(UE5.5)
- Horde README.md https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/Horde/README.md
- Deploying Horde
-
- 有关 Horde 的架构和组件的信息,以及部署它们的最佳实践。
受众: IT、系统管理员、打算修改 Horde 的程序员。
- 有关 Horde 的架构和组件的信息,以及部署它们的最佳实践。
-
- Configuring and Operating Horde
-
- 描述如何设置和管理 Horde。
**受众:**构建/开发运营团队、管理员。
- 描述如何设置和管理 Horde。
-
- Horde Internals
-
- 描述如何构建和修改 Horde 及其架构。
**受众:**希望扩展 Horde 的开发人员。
- 描述如何构建和修改 Horde 及其架构。
-
- Deploying Horde
- 视频
下载地址
- 官方下载地址
- 也可以从Horde服务器下载地址
大致步骤
- 使用docker部署服务。
- 服务器配置。
- 代理机配置。详见 http://10.219.103.35:13340/docs/Landing.md
- 配置文件位置:安装目录\Agent\Defaults\agent.json
部署笔记
Epic Games的Horde部署
Epic Games内部部署的Horde托管在AWS上,包括以下部分:
- Amazon Load Balancer,用于SSL的终止和路由
- 2个Linux容器,服务于由Amazon ECS管理的操作面板(每个配置0.25 vCPU、0.5GB RAM)
- 10个Horde Server实例,使用'Server' runmode配置,在由Amazon ECS托管的Linux容器上运行(每个配备4 vCPU、16GB RAM)
- 这些实例负责处理面向用户的轻量级请求。
- 2个Horde Server实例,使用'Worker' runmode配置,在由Amazon ECS托管的Linux容器上运行(每个配备4 vCPU、16GB RAM)
- 这些实例负责处理更繁重的计划任务,例如复制Perforce元数据、读取和更新配置状态以及启动计划作业。
- Amazon DocumentDB(与MongoDB兼容)
- Amazon ElastiCache(与Redis兼容)
- 数百个EC2实例,运行包含Horde代理的AMI。
- 约100台机器,本地托管,用于提供对移动设备、主机以及非托管平台(例如Mac设备)的访问。
部署流程
Windows
相关服务安装都集成在安装包里。
Docker(Linux)
要下载镜像,首先从你的账号设置页面的开发者部分创建一个GitHub个人访问令牌(PAT),然后将其作为密码传递给:
docker login ghcr.io
注意这里需要用Token,不然容易登录失败,Token需要开启Package Read 权限
# Github
docker login ghcr.io -u 378100977@qq.com -p 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
下载镜像:
docker pull ghcr.io/epicgames/horde-server:latest
请注意,在这种形式下,外部MongoDB和Redis实例必须通过配置文件或环境变量来配置(详见下文)。 只要每台服务器都指向同一个MongoDB和Redis实例,则在负载均衡器后面运行多个Horde服务器就无需进行显式配置。 在Linux系统上使用Docker容器是Epic的首选Horde运行方式。
Docker Compose(Linux)
Docker Compose通过提供一组预配置的Docker容器,简化了基于Docker的安装设置,这些容器中包含MongoDB和Redis的实例。
这种方法与MSI安装程序类似,适用于测试Horde或在小规模环境中进行部署。要访问预构建镜像,请参阅上文Docker小节。必要的Docker Compose配置可以在 Engine/Source/Programs/Horde.Server/docker-compose.yml 文件中找到。 https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/Horde/HordeServer/docker-compose.yml
在同一目录下,可以使用以下命令启动容器:
docker compose up
如需更多指导,请参阅YAML文件中的注释。
Https配置流程
要通过HTTPS协议提供数据,请在Server.json中设置 HttpsPort 属性。
通过在同一文件中设置默认证书,为Kestrel(NET Core web服务器)配置证书。
跨平台:
"Kestrel": {
"Certificates": {
"Default": {
"Path": "C:\\cert\\test.pfx",
"Password": "my-password"
}
}
}
验证配置流程
如果你现在没有与OIDC兼容的身份提供商,Horde将提供自有身份提供商 - 本指南将介绍该提供商。
先决条件
步骤
- 在你的server.json文件中将
AuthMode属性设置为Horde,然后重新启动服务器。 - 第一次启动服务器时,系统会提示你输入管理员密码。
- 登录后,
服务器(Server)菜单中会有一个账户(Accounts)菜单项。从此处,你可以管理允许登录到服务器的用户,以及他们拥有的声明。Horde的账户系统会将http://epicgames.com/ue/horde/group声明用于用户所属组,并且操作面板将建议并自动填写在部署的配置文件中找到的组。
服务器的 default.globals.json 文件中定义了两个标准组,默认情况下包含于标准 globals.json 文件中:查看 和 运行 。
"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对象的 profiles 元素中定义自己的配置文件。
OIDC身份验证
要配置外部OIDC提供程序,需要在Server.json中进行以下设置:
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用户名时按偏好顺序检查的声明的列表。