Struggling with Unreal Horde server and MongoDB

Hello everyone !
I’m currently trying to create a horde server with Docker on my Synology NAS DS723+, but I have some struggles with MongoDB.
I once succeeded to create a server, but after a reboot of my NAS and the reinstallation of Horde Server, my Horde Dashboard show me this error concerning a failed authentication on MongoDB that didn’t occured before… This is the error panel :

As I was looking for an fix, I found that it was simply wrong credentials about Horde connecting to MongoDB. But the issue is that I used the default image, this one :

# A basic setup configuring Horde Server with a MongoDB and Redis server. Run with `docker compose up`
# Serves as a starting point to demonstrate what's necessary to start Horde.
# We highly recommend you modify this file as necessary or use it as an inspiration
# for configuring separate containers outside Docker Compose.

services:
  mongodb:
    image: mongo:7.0.5-jammy
    restart: always
    environment:
      # Default username and password, change these!
      MONGO_INITDB_ROOT_USERNAME: horde
      MONGO_INITDB_ROOT_PASSWORD: dbPass123
    command: --quiet --logpath /dev/null
    ports:
      - 27017:27017
    volumes:
      - mongodb:/data/db

  redis:
    image: redis:6.2-alpine
    restart: always
    ports:
      - 30002:30002
    command: redis-server --save 60 1 --port 30002 --loglevel warning
    volumes: 
      - redis:/data

  horde-server:
    # Requires access to Unreal Engine's image repository on GitHub
    image: ghcr.io/epicgames/horde-server:latest
    restart: always
    environment:
      # Horde uses standard configuration from ASP.NET, allowing values to be set through env vars and files.
      # See https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/
      # To configure via config file, see the mounted directory and file ./data/server.json.
      # The env vars below are set as they're configured through Docker Compose
      Horde__HttpPort: 13340
      Horde__Http2Port: 13342
      Horde__RedisConnectionConfig: redis:30002
      Horde__DatabaseConnectionString: mongodb://horde:dbPass123@mongodb:27017/Horde?authSource=admin
    ports:
      - 13340:13340 # HTTP/1
      - 13342:13342 # HTTP/2
    volumes:
      # Mount Horde's data directory to ./data for easy viewing and modifying
      # Once server has started, this directory is populated with default configuration files from the container
      - ./data:/app/Data

# Provide persistence between container restarts for MongoDB and Redis
volumes:
  mongodb:
    driver: local
  redis:
    driver: local

I’ve got it by the Unreal Engine Source that I’ve downloaded on GitHub, and giving the “Engine\Source\Programs\Horde\Horde.Server\docker-compose.yml” to Docker.

I don’t know where I’m wrong, because this worked once, then never again…

Can somebody know what I’m missing ?

Thank you !

For additionnal informations, I just succesfully connected with the Terminal :

image

Update :

I managed to fix my problem ! That was not a fix I like tho, because it didn’t help me to understand what was the source of the problem, but anyway !

I have deleted all the things that were connected to Unreal Horde : Docker project, SharedFolder, ports forwarding, Web Server, and I also cleared the cache of my browser. I synchronized my Unreal Engine Source with the “released” branch of EPIC Games, gave the YAML to Docker, and everything works again :man_shrugging:

I still have a problem, tho… My “Tools” page is empty, so I can’t download the HordeAgent :melting_face:

I’m having the same issues as well with the tools downloads page being empty, did you ever manage to figure it out?

The default Epic docker image doesn’t include any downloads. When the tools are bundled in the image they can’t be updated separately from the main docker image, that’s why empty images are good idea since you can use the DeployTool buildgraph node and/or horde cli tools to upload them. If you want horde container with pre-bundled tools, you’ll have to build it yourself.

It’s pretty easy, just run the RunUAT.bat BuildGraph -Script="Engine/Source/Programs/Horde/BuildHorde.xml" -Target="Build Bundled Docker Image" -p4 (remove -p4 if you’re not using perforce and if you don’t have RunUAT.bat in engine root directory you’ll have to use Engine/Build/BatchFiles/RunUAT.bat

Hi there,

Thanks for the info. This helped to answer the same issue I was having today with the Horde Server stood up via a Docker container. I was not able to setup an Agent to use on the Horde Server.

I wanted to ask a clarifying question, you say the following

Blockquote you can use the DeployTool buildgraph node and/or horde cli tools to upload them

Does this mean that I can build the bundled tools and manually upload them to the Horde Server I already have running?

Can you point me to documentation on how to do this? Or provide an example?

Or do I need to fully re-build the Docker Image to include the tools?

Thanks!