Relativity Server questions

Hi guys,

Some quick questions regarding Relativity Server.

  1. Is there a place where I can set the session timeout? if not, what’s the default value?
  2. How do I setup multiple Relativity Servers on one machine? Although I could load multiple Domains on it I don’t want to take the risk of the service going down taking all clients that might be using relativity.
  3. Can I have multiple Relativity Servers on different machines using round robin? is there any kind of state that Relativity needs? Or simply login into it will suffice?
  4. How do I change the ports relativity is listening to? We cant use the 70xx range.
  5. I’ve read something about multiple ports open for different purposes. What is the current status of it? What is ideal for production use? Can I have different protocols listening to different ports? or same ports? (supertcp, superhttp), how do I set it up?

Thank you in advance.

I’ll have to leave that to someone from tor RO/DA team to answer, to be sure.

It’s not really meant to work like that; you would run Relativity Server per machine, and the domains are the separate instances. I understand your concern about isolation for failure, and I could see a future feature where Relativirty Server might spawn off separate processes per domain to mitigate that, but right now, it’s pretty much designed for a single install and a central configuration. (There might be an undocumented way to run more than one server and point them to different configs; I;'ll again let someone form the team chime in).

That said, this request seems to be orthogonal to the next question (running multiple independent domains on one server seems to be on the opposite end of scaling than needing to load-balance a single domain across multiple servers?).

Generaly, Relativity Server is stateless, so simple round-robin load balancing should work fine. You can (and should) configure Relativity Server to use a central Olympia instance for session state, to share that state (such as login) between the different instances.

Relativity server (currently) always listens on the default port used for configuring. If you cannot expose that port remotely thats fine, you can configure a different port for the actual channel, see Network Settings

I’ll have to leave this one for the team, again. I believe right now you can only configure a single channel, on a single port (in addition to the default one).


The initial idea behind Relativity Server is to provide a pre-built server that provides core features of a Data Abstract server.
Unfortunately this means that some features have to be put out of the scope to keep the balance between easy-of-use and feature set of Relativity Server.

Still at the moment when a project reaches limitations set by these assumptions that project is usually ready to migrate to a custom-built server. That said such migration wouldn’t affect client applications as the API stays the same.

Session timeout is set to 30 minutes and is not configurable.

You can run Relativity Server in Docker containers (there is an article in the blog about this)

Technically it is also possible to run several Relativity Server instances on the same host each using its own configuration folder (I just need to expose a command-line parameter that would suppress the single instance check). However there is a major thing you need to be aware of in this case: most of the development tools assume that Relativity Server exposes its configuration interface on the 7099 port. There might be some rough edges during development if there would be more than 1 instance of Relativity running. However this won’t affect production mode (read: once development is completed there won’t be issues for client apps talking to their Relativity Server instances)

Relativity Server uses user session to store the Domain he is logged into. For Round Robin you’d need to use DynamoDB-based session manager (whish is overkill in this case) or Olympia as state manager.

Note: Olympia support is currently not exposed in the Relativity configuration options as there were no demand for its support

There are 3 ports used by Relativity: default ones 7098 and 7099 and a configurable one that might be set to any value supported by OS and exposed via your firewall
In general it is not recommended to use http/7099 or https/7098 in the client application. Recommended approach is to configure a custom channel listening to a port like 8099 and to use 7099 only for admin purposes. In the production environment ports 7098 and 7099 should be blocked by a firewall.

There are 3 server channels/protocols exposed by Relativity Server:

  • 7098 (non-cofigurable) - https. Available if there is a TLS certificate configured in Relativity Server. Should NOT be used for production purposes.
  • 7099 (non-cofigurable) - http/superhttp. Always available. Should NOT be used for production purposes.
  • [default values] 7100 - http. Both port used and protocol exposed can be configured to be either Http / SuperHttp /Tcp / SuperTcp.

All server configuration can be done via Relativity AdminTool or via direct changes in its configuration files.