Skip to content

Architecture

This page gives some information on how best to structure and set up a revival's services to get the most out of Mercury Core.

While we make every effort to reduce the complexity and performance requirements of hosting Mercury Core, it is still important to consider the underlying infrastructure and how services are deployed.

The best supported way to host Mercury Core is running natively on a Linux server distribution. Running on Windows for development is supported with minor inconsistencies. Running on Windows for production is not recommended.

Using a Virtual Private Server (VPS) is another common approach for hosting Mercury Core. Support for virtualisation on these hosting services may be limited, so prefer running Mercury Core services natively on the host OS instead of using containers. If using a remote hosting provider, make sure to choose a system with fast disk access, IPv6 support, and in a location close to your developers and user base to minimise latency.

Hosting external services that only run on Windows, such as RCCService, is often necessary. If running on dedicated hardware, this can be accomplished by installing a minimal Windows Server environment in a VM, allowing it to network with the Linux host. This can be done with tools such as QEMU, VirtualBox, VMware, etc (Mercury previously used Vagrant with a VirtualBox backend for hosting RCC).

If networking issues arise during communication with the VM, or if running Mercury Core in a VPS, consider using a dual-server approach with a Linux host for running Mercury Core and a Windows host for running Windows-only services. As opening the Windows services to the public internet is likely required in this setup, using a VPN tunnel like OpenVPN or WireGuard can help secure the connection, although a basic proxy is usually sufficient and much easier to set up.