Self-hosted data sync & new Mikrotik device

The surprise arrival of the new Mikrotik RDS2216 reignited my reflections on the future evolution of how I handle data synchronisation and protection internally. While I do use DropBox for some basic family stuff where sharing with non-tech people is a priority, I also have some specific personal use-cases where DropBox really isn’t viable or practical.

At the hardware level, building a custom box to host the sync software has been a recurring project that never quite gets done. Interestingly the RDS2216 meets many of the requirements that I have been trying to accomplish in other ways, notably:

  • low power

  • NVMe storage

  • high speed networking

  • quiet/silent

These requirements fall out of the need to have machine(s) that may be colocated in office or living spaces. The move to NVMe storage is not necessarily because I need very high bandwidth, but rather any sync software frequently needs to traverse the filesystem to ensure that it’s index of all of the available files is up to date and with close to 2M files and over 10TB in my system, this takes forever on spinning rust. Then there is the fact that modern high capacity drives tend to be a little bit on the noisy side and relatively power-hungry.

With the ability to run containers on the RDS2216 all of the sudden I have lots of possibilities.

Which of course brings me back to another recurring subject: what is the best (for my needs) software for self-hosted file sync. It seems that every couple of years I revisit the subject and it keeps coming back to Resilio Sync and Syncthing.

Philosophically, I prefer Syncthing as an Open Source project, and Resilio’s direction towards enterprise versions of the software have been problematic as it looks like I’m on a development dead-end for the Business Sync product that I’m currently using.

Here’s an overview of the current setup based on Resilio Sync.

This gives me multiple underlying technology stacks for a diverse ecosystem to protect the data so a fault in TrueNAS won’t affect the Synology, Linux VMs are different from MacOS and so on. Plus each platform brings locally available resilience and data protection with their own snapshot technologies.

This is clearly overkill, but ensures maximum availability and takes advantage of the underlying Bittorrent protocol that can pull and push from multiple sources in parallel, especially with spinning disk back-ends that don’t have the IOPS for when I’m pulling out lots of small files. It is my own version of Dropbox with high availability for just about every eventuality of network issues or hardware failure. Then there are some server specific use cases like at the office the folder containing my ISO image archives are published over NFS so that my ESXi & Proxmox servers can mount them, something that’s not practical to do from the Mac. At home, the TrueNAS Scale is on the wired network and also hosts the Plex Server linked to the media folders.

If this was the entire use case, and I always accessed these files from my regular computers via file shares to these machines, then using Syncthing would be a reasonable solution and could be used to replace Resilio Sync. However my main working computers are a Mac Studio and a MacBook Pro… Who do not have 10TB of internal storage…

So I make use of the Selective Sync feature which (like Dropbox) keeps file stubs visible in the file system so I can see all of the files and pull them down on demand by selecting “Sync to this device”. When I no longer need them locally I select “Remove from this device”. Or in many cases it starts in the other direction where I download the latest ISO images for a project, drop them into my ISO library locally, use them as required and when I need the space, just remove them from the MacBook but they are part of the permanent collection on the big disks as required.

Similarly, when I rip a Blu-Ray I do the encoding on the Mac Studio which has the CPU and GPU grunt to do this quickly and then I file it in the media folder locally which distributes copies to the other systems and gets indexed by Plex.

On the work front, I don’t use my internal sync tools to share with other people as every client has their own tools for that, predominantly Teams/Sharepoint or more rarely Google Docs. For those without, I have a private NextCloud instance that I can use punctually. I don’t like using the Synology Sync tools, although they are pretty well done and robust as I don’t want to be tied into a single hardware vendor for this kind of stuff. Although at the point, if I had to choose one, it would be Synology.

So for the immediate future, it looks like Resilio Sync will remain the tool of choice.

Getting back to the RDS2216, I can definitely see this being one of the platforms I use at the office given the rack design, as it ticks so many of the right boxes for me in a low-power, container-enabled, fast-networking NVMe system. Hopefully I’ll find the budget this year to add one to my hardware collection.

Given that Mikrotik has spent all the time and energy in building the storage stack I’m hoping that this is the beginning of a collection of other variants.

An interesting design variant I would like to see is a 2U half-rack design with 10 15mm U.2/U.3 slots that could also be deployed as a mini-tower. Then you could rack two side-by-side for doing things like building redundant storage. And for those in non-rack environments it could be a standalone box that is the main router for smaller offices - put a GPON SFP+ in there and it can replace the ISP’s FTTH box and include a whole suite of containerized data services.

After reading the documentation this could make things as simple as:


RDS1: /disk set disk1 nvme-tcp-export=yes

RDS2: /disk set disk1 nvme-tcp-export=yes

Linux/Proxmox box:

nvme discover -t tcp -a rds1 -s 4420

nvme discover -t tcp -a rds2 -s 4420

nvme connect -t tcp -a rds1 -s 4420 -n disk1

nvme connect -t tcp -a rds2 -s 4420 -n disk1

zpool create fast_disk mirror /dev/nvme0 /dev/nvme1

And now I have an NVMe mirror fed by two RDS2216 boxes. Not as sophisticated as a full-on dual controller array solution, but a super practical solution for smaller infrastructures and considerably less expensive.

In the meantime, my current less expensive version of this kind of all-in-one router/storage system is going to be a CCR2004–1G-2XS-PCIe (on order) in an HP Microserver as the point of entry for my new office.