Horde - Setup recommendations for users split across regions

Hi,

We are currently trying to plan a Horde setup for a development team that will be split across multiple regions (US east/west coast, overseas). Ideally we would like each region to have their own set of build workers and local storage solution to reduce cloud storage/transfer costs outside of major milestone builds, but there are also some scenarios where a user in one region might need to trigger a build for users in another region, so we wouldn’t want completely isolated servers for each region either. Are there any recommendations on how to set up Horde server(s) for this?

Thanks,

Jeremy

Hello! Horde doesn’t have region-aware routing as you described, so there isn’t a single setting for it, and this differs from the typical setup, so you may run into edge cases.

However, you might be able to get some of this working with a single Horde server, per-region agent pools, and per-region storage backends and namespaces.

You can create separate storage namespaces, which map to the regional storage backends.

You would need to specify separate artifact types for each region (e.g., `step-output-us`) and have job templates specify which to use.

Users could then kick off region-specific jobs and jobs for other regions, as per your requirements.

However, the single Horde server approach would require a storage backend that supports redirects (pre-signed URLs) to prevent large cross-region storage operations.

Without redirect support, storage operations must go through the Horde server, working against your setup.

Additionally, you would need to consider your Perforce setup for workspace sync. Horde has built-in support for Perforce Clusters, which might meet your needs.

If the redirects are a blocker, separate Horde server instances could work, but these would essentially be separate environments from each other.

Yes, Horde ACLs control this: the “ViewStream” permission sets who can see a stream, and “CreateJob” sets who can start jobs.

You can set them globally, per project, per stream, or per template. For more info, please see this section of the docs:

https://dev.epicgames.com/documentation/unreal-engine/horde-permissions-for-unreal-engine#accesscontrollists

Thanks for the response! I’ll look into the redirects to see if we can do that. Another related question, are we able to restrict things like viewing certain streams or starting jobs by user permissions?