Horizontal scaling
Outline’s api, worker, and web processes are able to automatically scale horizontally – you can deploy as many instances as needed to handle traffic. collaboration however, is different due to it’s stateful nature…
Collaboration
Outline includes realtime multiplayer collaboration in documents by default. In order for this to function we bundle a websocket-based server that coordinates edit transactions between connected clients. In order for this to function correctly there should be either a single collaboration server process or edits made on separate servers need to be synced.
Single process
This is the default behavior, if you run Outline inside of docker there will be a single process for collaboration – this a great simple solution for teams under ~1000 or so active users (exact number depends on allocated server resources)
Multi process
If you would like to run Outline’s collaboration server in a horizontally distributed manner either for redundancy or large installation sizes an additional environment variable must be set:
REDIS_COLLABORATION_URL – This should be the fully qualified url of a Redis server that will be used to syncronize edit transactions between processes. The format is the same as Redis setup, and the same server can be used.