Post Your Roon Server Solution For Others

Going somewhat off topic - sorry.

TL:DR Ethernet speeds above 1Gbps are pointless for Roon and most other audio (and video) streaming applications used in isolation but can make a great deal of difference to the utility of your local network for other purposes.

2.5Gbps ethernet is in no way required for Roon. At least with nothing else utilising the network at the same time. As you say, many network audio endpoint devices have ports limited to 100Mbps anyway and more than this is not required for anything but the most exotic bit rates. Indeed, even ridiculously over sampled 8 channel PCM audio at 1536Ks/s (not directly supported by Roon to my knowledge) and 32bit samples only requires just slightly over 400Mbps. If audio distribution is the only function required of your network you would not need to go any faster than 1Gbps.

However, depending upon the way that you use your network, it can make a great deal of difference to other applications.

Since my two main computers, my Roon Server machine and my NAS all have 2.5Gbps or faster ethernet, for me, it does make a great deal of difference to other network operations. For example, I also use my NAS for storing photographs (Typically 45 to 60MByte RAW files) and video (8k 10bpp). Uploading those files to my NAS takes significantly less time with the faster ethernet being limited only by the read speed (about 2.2Gbps) of the CF express flash card from my camera. Also, with the 1Gbps network that I had before, to edit these files I had to download them onto the local computer and then upload the edited result afterwards. With 2.5Gbps, I can edit them directly from the NAS and still get useable, if not blinding, performance. And, as with the original file upload to the NAS, if I do want to copy a set of video files or a set of raw files from a day out with my camera (which could easily amount to 500GByte or more) to my computer for working on when away from home, then that also takes much less time. I regularly get local network file transfers at 265MByte per second so that 500GByte transfer may only take about 2000 seconds (or 33 minutes) to complete. That is a lot better than the 1 hour 23 minutes that it would take using a 1Gbps network.

To get the benefit of 2.5Gbps ethernet on the local network (for high network utilisation activities not directly related to Roon or other audio streaming) it is not necessary to upgrade your gateway router. Simply upgrade your ā€˜backbone’ switch and make sure all relevant devices are connected directly to that switch (including any separate WiFi 6 or 7 access points that you may have if they have a 2.5Gbps or better ethernet port (my Zyxcel NWA210 does).

With respect to Roon, the only advantage of my 2.5/10Gbps network is that there is sufficient capacity for me to use Roon to distribute audio anywhere in the house at the same time as I am performing these other network intensive activities without any performance degradation.

My gateway router does have 2.5Gbps ethernet ports (but only 2 - 1 LAN, 1 WAN) but that is not really necessary since my internet link is limited to 1Gbps down and 100Mbps up and the ONT to which it is connected on the WAN side only has a 1Gbps port. Apart from Internet traffic, the only other traffic that my router sees is broadcast and some multicast traffic on the local network which is not really significant and would not cause an issue if the router LAN port was limited to 1Gbps. Note: I do use a layer 2 managed switch with IGMP snooping enabled and an active IGMP querier so no irrelevant multicast traffic is seen by the router since it is filtered out by the switch. The same would not happen with an unmanaged switch although that would still be unlikely to cause an issue within the context of most home networks.

Synology DS720+ ugrades 18GB memory, 2*256 Cache memory,
2* 4TB IronWolf HDDs

Roon Container installed on SSD connected via SATA

Weekly full backup through second Synology DS120

Daily backup USB disk

Dell R420 running FreeBSD 15.1 with 4x SAS drives in RAIDZ1, 96GB RAM. NFS enabled for the RAID array for all media. Roon server is on a bhyve vm running Ubuntu 24.04.4 LTS (on separate nvme drive).

On my main PC (5900x with 32GB RAM), I run Fedora 44 and use Bottles to run Roon Remote. I also have Roon Bridge running on the same machine to play music on a Fosi Audio ZH3.

I currently don’t pay for electricity, so the 98w idle of the R420 doesn’t bother me much at the moment..

After trying five different Roon server I settled on a headless mac mini. Best solution so far. Every Linux or Rock based Roon server gave me lots of ā€œcorruptedā€ files due to the linux file management. Windows is plain terrible with forced updates, bloatware, adware, instabilty. Mac mini is set to reboot automatically ones a week. By far the fastest en most stable solution so far that is dead silent and consumes less energy than a raspberry pi.

Besides Roon core, the mac mini also runs minimserver, adguard home dns server and a small server for my own custom now playing screen. Running adguard home did speedup Roon a lot.

My server is a Sonic Transporter i5 from Small Green Computer.

Thanks for that and exactly my thinking.

My wired network has two purposes to access and manage my music library and support work.

Work is typical office activities. - calls with/without video, Email, Tems Groups, Google Chat, document download/upload, chats with an AI engine (business ChatGPT account, CoPilot in Office, Revo from Jira, etc.) for this 1Gbs down/50Mbs (full ISP provision) on the office switch is perfectly capable. All WiFi devices capable of WiFi 7/6E can get full ISP speeds, WiFi 5 is about 500Mbs, and 300Mbs for WiFi 4. I have little interference on any of the 3 bands, in fact the 6Ghz band is all mine!

For Roon, ultimate endpoints are 100Mbs or 1Gbs but only capable of 400 Mbs tops.
So 1Gbs

For library management the rsync jobs between NAS unit complete quickly, any uploaded files could be faster but this only a few times a month and library scans under a minute,

At this time, I see no reason to move to 2.5G network, for the very rare occasions my 1Gbs network is not going to be able to cope.

I had a similar, though not identical, debate when determining if I should connect my devices via ethernet (optimal but difficult in my environment) or wifi. The real world test has shown me there is nothing to worry about with wifi. The actual test suggested wifi is more than sufficient for running 192kHz 24bit Qobuz files:

signal: -42 dBm
rx bitrate: 1200.9 MBit/s 80MHz HE-MCS 11 HE-NSS 2
tx bitrate: 1200.9 MBit/s 80MHz HE-MCS 11 HE-NSS 2

So far, this works well.

GEEKOM - A6 Mini PC, AMD Ryzen 7 6800H, 32GB DDR5 & 1TB M.2 2280 NVMe Gen4*4 SSD, Windows 11 Pro

400k FLAC tracks.

1 Gig up/Down Fiber>TPLink Deco Router, wired backhaul. Gigabit Ethernet

Endpoints (all wired)

KEF LS50 Wireless II

WIM Pro

2013 Mac Pro

Files are on a Seagate Expansion 22TB External Hard Drive - USB 3.0

This box does nothing except serve Roon. Updates are off.

PS: for the above to work really well, I’ve installed an M2 240Gb cache and 10Gb RAM. I’ve also found that programming daily reboot (off at 7am back on at 7:30am) keeps things running smooth and fast although I still have to force a rescan to get Roon to display newly added albums.

I’ve tried to keep things simple…

Four bay Synology 420+ NAS with the Roon software on SSD1 and the 6000+ albums on SSD2, 3 and 4

Weekly NAS backup to an 8To Seagate (and album by album backup to two pairs of external HDDs conected to the Mac) - belt, braces and elastic :slight_smile:

Control on iMac, iPƤd and occasionally iPhone

Mine is an ASUS Chromebox running Roon, AdGuard and Tailscale on NixOS with the following config (some hashes redacted) :

{
  modulesPath,
  lib,
  pkgs,
  ...
}: {
  imports = [
    (modulesPath + "/installer/scan/not-detected.nix")
    ./disk-config.nix
  ];
  boot.loader.grub = {
    # no need to set devices, disko will add all devices that have a EF02 partition to the list already
    # devices = [ ];
    efiSupport = true;
    efiInstallAsRemovable = true;
    memtest86.enable = true;
  };
  services.openssh.enable = true;
  nixpkgs.config.allowUnfree = true;
  nix.settings.experimental-features = ["nix-command" "flakes"];
  nix.gc = {
    automatic = true;
    randomizedDelaySec = "14m";
    options = "--delete-older-than 10d";
  };
  # services.samba.enable = true;
  services.roon-server = {
    enable = true;
    openFirewall = true;
    user = "root";
  };
  networking.hostName = "roonbox";
  networking.firewall.enable = true;
  fileSystems."/media/ROCK" = {
    device = "//nas-server/ROCK";
    fsType = "cifs";
    options = ["user=" "pass=" "auto"]; # "x-systemd.automount"
  };

  environment.systemPackages = map lib.lowPrio [
    pkgs.curl
    pkgs.gitMinimal
    pkgs.tmux
    pkgs.btop
    pkgs.cifs-utils
    pkgs.ncdu
  ];

  users.users.root.openssh.authorizedKeys.keys = [
    "ssh-rsa AAAAB3N...redacted"
  ];
  users.users.sehe = {
    isNormalUser = true;
    extraGroups = ["wheel" "disk" "audio"];
    hashedPassword = "$6$tA...redacted";
    openssh.authorizedKeys.keys = [
      "ssh-rsa AAAAB3N...redacted"
    ];
  };

  system.stateVersion = "24.05";

  boot.tmp.cleanOnBoot = true;

  networking.firewall.interfaces.wlp2s0 = { };
  networking.firewall.interfaces.enp1s0 = {
    allowedTCPPorts = [
      55000 # roon ARC
      55001 # roon ARC
      55002 # roon ARC
      9000
      9090
      3483 # squeezebox
      80 # adguard dashboard
    ];
    allowedUDPPorts = [
      53 # adguard
      3483 # roon squeezebox
    ];
  };

  services.tailscale = {
    enable = true;
    useRoutingFeatures = "both";
  };

  services.networkd-dispatcher = {
    enable = true;
    rules."50-tailscale" = {
      onState = ["routable"];
      script = ''
        # sehe: version 12
        NETDEV="$(ip -o route get 8.8.8.8 | cut -f 5 -d " ")"
        "${pkgs.ethtool}/sbin/ethtool" -K "$NETDEV" rx-udp-gro-forwarding on rx-gro-list off
      '';
    };
  };

  services.adguardhome = {
    enable = true;
    openFirewall = true;
  };
}

I keep it deployed using nixos-anywhere (which is why I have the SSH root authorization baked in).

The box has a 4-core i7-5500U, 8GiB of RAM (>5 GiB free). Media files are on a Samba NAS (see config). The network is wired 1Gb or wireless (fallback when I temporarily need more switch ports for other things).

nixos-anywhere had the benefit I was trivially able to redeploy on different hardware or even as a VM. This was handy when I diagnosed instability that lead to roon database corruption. It turned out I had a defective RAM stick (hence only 8GiB left and also memtest32 enabled in Nix config :)).

Backups are automatic on the samba share and run once every 17 days. I have learned from the previous database corruption that long-term backups are way more valuable because it may take a (long) while for database corruption to manifest, and you don’t want all your backups to already be affected.

Same here. It is so loud when CPU usage increases a little.

My most recommended Roon Server solution for most folks (and I’ve bult a few for friends with terrific results) is a MOCK (My Own Core Kit) build using this GMKtec Mini PC:

Performance is nearly on-par with my 11th Gen i7 NUC for a fraction of the current NUC prices. It’s easy to pop the top off to drop in up to a 2 TB M.2 2242 drive for some internal storage, but there are plenty of USB 3.2 ports for external storage. 2.5 Gbps Ethernet. Dual-channel memory (although not DDR5). There’s a lot to like at the price.

There’s a fan, but it’s quiet. That, and if this thing is deployed properly, it will tucked in a closet or office next to the Internet router and far from any listening environments. I’ve been using various models of GMKtec mini PCs for Roon Servers over the past two years with zero issues. The ROCK install image is super easy to install and just works. Power consumption is low. It’s a set it and forget it appliance.

This solution will work perfectly for most folks but may not be suitable for those with huge libraries (over a quarter of a million tracks).

Thanks for sharing this. That company has a number of interesting solutions on Amazon including DDR5 solutions. On my server, I never go over 2GB usage of memory when playing HiRes files. My CPU may bump to 25% for a moment at the beginning of an album but settles at <5%. The server is under 5GB with Roon data. Backups will add to that but you can offload them easily. Same with local music. My Snapper rollbacks do add some GB. But, really, you can build this system on a 10GB SSD (my partition allocation is 25GB). It tells you that if you have a decent modern CPU and 8GB of good RAM on a small SSD, roonserver (at least my Debian Linux roonserver solution; can’t speak to ROCK) should hum along nicely. The boxes you posted illustrate that people can be using quite affordable solutions long term without issue.

Thanks for posting , which Mac mini did you go for and roughly what size is your library ?

Thanks

Tony