CHECKING STATUS
I AM LISTENING TO
|

Day 50: Resilio Sync – Private Peer-to-Peer File Synchronization – 7 Days of Docker

9. July 2026
.SHARE

Table of Contents

File synchronization is usually treated as a cloud problem. Put the folder in Dropbox, Google Drive, OneDrive, or iCloud, wait for everything to upload, and hope the storage quota, privacy model, transfer speed, and client support all line up with your workflow. That works for office documents. It gets awkward fast when you are syncing media libraries, project archives, server folders, NAS shares, external drives, or large working directories between machines you already own.

Resilio Sync takes a different route. It uses peer-to-peer synchronization, so your files move directly between your devices instead of being stored in a third-party cloud first. A small Docker container gives you the web UI, the sync engine, and a clean way to mount exactly the folders you want to synchronize.

This article focuses on a practical Docker Compose deployment, then includes a native Ubuntu systemd setup for servers where running Resilio outside Docker makes more sense. The Docker section includes both a restricted, sane setup and a full-root-access setup based on the local server notes. Use the restricted setup unless you have a specific operational reason to expose the whole host filesystem to the container.

Note for older Synology users (e.g., DS218): Resilio tends to crash constantly on older hardware. I’ve tried everything short of running it via CLI with no luck. However, it works flawlessly on Windows, Mac, Raspberry Pi, Ubuntu, and ASUSTOR.

While many people swear by Syncthing, I always found it sluggish. Resilio completely saturates my network and delivers the speed I need.

For those wondering why I don’t just use rsync—I actually do for many things! But sometimes you just need a user-friendly GUI. Fortunately, with most NAS boxes supporting rsync server setups, there are plenty of great ways to manage backups.

Oh there is one option to use docker on not supported devices: Container Manager for all armv8 , have not tested Resilio with it yet, but I will !

Quick Win: What This Article Delivers

By the end of this article, you will have a working Resilio Sync deployment pattern you can copy into a server today:

  • A restricted Docker Compose setup that keeps Resilio inside one explicit sync directory.
  • A full-host-access Compose variant for private machines that need access to external drives, mounted disks, or scattered folders.
  • A clear explanation of PUID, PGID, ports, mounted paths, and why /mnt/sync and /mnt/mounted_folders/ matter.
  • A native Ubuntu/systemd option based on the local setup notes for hosts where Docker is not the preferred fit.
  • A practical security model: what keys mean, why the Web UI should stay private, and when Selective Sync or encrypted folders help.

What Does This Thing Actually Do?

Resilio Sync is a private file synchronization tool built around direct device-to-device transfer. It is not an object storage server or a general-purpose web file manager. It is a sync engine: give multiple devices access to the same shared folder and Resilio keeps the folder contents aligned.

Key capabilities:

  • Peer-to-peer synchronization – Files move between your devices directly instead of being uploaded to a central cloud storage provider first.
  • Large file handling – Good fit for media folders, archives, design assets, development workspaces, and other bulky directories where cloud upload/download cycles are painful.
  • LAN-first speed – Devices on the same network can sync locally, which is often much faster than routing through an external service.
  • Web-based server interface – The Linux and Docker deployment exposes a Web UI on port 8888 for setup and folder management.
  • Configurable listening port – Sync traffic uses port 55555 by default, and that value should match the setting inside Resilio if you change it.
  • Folder-level sharing – You choose which folders to add and which devices should receive them.
  • Read-write and read-only keys – Standard folders can be shared with different access levels, and keys are used to identify folders, encrypt traffic, and find peers.
  • Selective Sync – Devices can keep placeholder entries and only download the files they actually need, useful on laptops or small SSDs.
  • Encrypted folders – A peer can store and seed encrypted data without being able to read filenames or file contents.
  • Cross-platform clients – Resilio supports desktop, mobile, Linux, FreeBSD, and NAS-oriented deployments.
  • Docker-friendly deployment – The official resilio/sync image packages the daemon cleanly and keeps host dependencies minimal.

Where Resilio Sync Came From

Resilio Sync started life as BitTorrent Sync, a peer-to-peer folder synchronization tool from BitTorrent, Inc. The idea was straightforward: take the efficient peer discovery and swarm-transfer thinking behind BitTorrent-style distribution and apply it to private folder sync. Instead of every device uploading to a central storage account, devices with the same share could find each other and exchange file pieces directly.

In 2016, the Sync product and team were spun out of BitTorrent into Resilio, Inc., and the product became Resilio Sync. That origin explains both the strengths and the tradeoffs: it is very good at moving large folders between peers, but it is not a community-open-source project in the style of Syncthing.

Resilio Sync is proprietary software. The Docker image is convenient and publicly available, but the sync engine itself is closed source, so you are trusting Resilio’s implementation rather than auditing the full source code yourself. For some users, that is fine because the operational benefits are the priority. For others, especially teams with strict open-source requirements, Syncthing or another open implementation may be a better philosophical fit.

The licensing picture has also shifted over time. Older Resilio Sync releases separated free and Pro features more clearly. The current Sync product page states that Pro features are now available in the free Sync download, while the download page marks Sync for personal, non-commercial use. Business-oriented usage has moved toward Resilio’s Active Everywhere platform. In plain terms: for a personal server, Resilio Sync is still relevant; for commercial deployments, check the current Resilio terms before building an internal workflow around it.

Research Notes That Matter Before You Deploy

The official documentation has a few details worth understanding before you start mapping folders into a container:

  • Resilio Sync v3 support: current v3 builds support Windows 7 workstations and newer, macOS 10.13 or later, Linux with kernel 2.6.16 and glibc 2.3 or newer, x64 and arm64 CPU targets, Android, and iOS. The Linux server path is a good match for Docker because the Linux build is managed through the Web UI instead of a desktop tray application.
  • Linux Web UI behavior: on Linux, the Web UI listens on 127.0.0.1 by default for security. Binding to 0.0.0.0:8888 makes it reachable from the LAN, but that should be a deliberate choice.
  • Peer discovery: Resilio uses tracker discovery, LAN discovery, predefined hosts, and relay fallback depending on network conditions. Direct connections are preferred, but relay servers may be used if direct peer-to-peer traffic cannot be established.
  • LAN discovery: local peer discovery uses multicast UDP on port 3838. If LAN devices cannot see each other, blocked multicast is one of the first things to check.
  • Keys and encryption: Resilio keys identify shares and participate in traffic encryption. Read-write, read-only, and encrypted keys have different capabilities, so do not treat a share key like a harmless invite URL.
  • Storage folder: the native Linux package stores state in /var/lib/resilio-sync when running as the default rslsync user, and under the user’s config directory when running in user mode. In Docker, the official image documents /mnt/sync as the main mounted path.

Docker Compose Setup

The official Docker image exposes two important ports:

  • 8888 – Web UI
  • 55555 – Sync traffic listener

The official container path is /mnt/sync. Extra host folders should be mounted under /mnt/mounted_folders/. That matters because it keeps the container layout predictable and matches the upstream Docker documentation.

Option A – Restricted Access Setup

This is the setup most servers should use. Resilio runs as the normal deployment user and can only see the folder you explicitly mount. In this example, the deployment user is automaton with UID/GID 1000.

Binding the Web UI to 127.0.0.1 keeps it local to the server. If you need LAN access during initial setup, change the mapping to "8888:8888", complete the setup, and then decide deliberately how that interface should be reached. Do not expose the Web UI to the public internet without a proper access-control layer in front of it.

Option B – Full Host Root Access Setup

This mirrors the full-access local setup note, but uses the official extra-folder mount location. The container runs as root and mounts the host root filesystem under /mnt/mounted_folders/host_root. Inside the Resilio Web UI, browse to that path when selecting folders.

Security warning: this gives Resilio read/write access to the entire host filesystem. That includes system directories, user home folders, mounted disks, and removable media. Only use this on a private machine where you fully understand the blast radius.

The local root-access note mounted the host as /host_root. With the official image, mounting extra directories under /mnt/mounted_folders/ is cleaner. The practical outcome is the same: the Web UI can browse the host filesystem through the mounted path.

Installation Steps

1. Confirm the Deployment User

Check the UID and GID for the Linux user that should own the synced files:

For the local setup used here, both values are 1000. If your user differs, change PUID and PGID in the compose file.

2. Create the Project Directory

The data directory becomes /mnt/sync inside the container. Resilio stores its Docker-side working data and default sync location there.

3. Save the Compose File

Create docker-compose.yml and paste either the restricted-access setup or the full-root-access setup from above.

4. Pull the Image

5. Start Resilio Sync

6. Verify the Container

The container should be running, and the logs should not show permission errors for the mounted folder.

7. Open the Web UI

Open:

If you mapped the Web UI to the LAN instead of localhost, use:

Complete the initial setup screens, then add your first folder. In the restricted setup, use paths under /mnt/sync. In the full-root setup, browse to /mnt/mounted_folders/host_root and select the host folder you want to sync.

Environment Variables Explained

PUID

Purpose: Runs Resilio inside the container as a specific Linux user ID.

Format: Numeric UID.

Example:

Use the UID of the host user that owns the mounted sync directory. This avoids the common problem where files created by the container are owned by an unexpected user on the host.

Security note: PUID=0 means root. That is required for the full-root-access setup, but it should not be your default.

PGID

Purpose: Runs Resilio inside the container with a specific Linux group ID.

Format: Numeric GID.

Example:

Set this to the primary group of the host user that should read and write synced files.

TZ

Purpose: Sets the container timezone.

Format: IANA timezone name.

Example:

This keeps logs and scheduled internal behavior aligned with the server’s local timezone.

Volume Mounts Explained

/home/automaton/resilio/data:/mnt/sync

This is the main Docker volume. The official image documents /mnt/sync as the container folder that contains the storage folder, configuration file, and default download folder. In a simple deployment, create subfolders inside this path and add them through the Web UI.

Example host layout:

/:/mnt/mounted_folders/host_root

This mount appears only in the full-root-access setup. It exposes the entire host filesystem inside the container. From the Resilio Web UI, browse to /mnt/mounted_folders/host_root to select any host folder.

Use this when you need to sync folders scattered across disks or system mount points and do not want to define each path in Compose. For normal servers, explicit folder mounts are safer.

Explicit Extra Folder Mounts

A middle ground is to mount only the extra folders you need:

This is usually the best production pattern: Resilio sees exactly the directories it needs and nothing else.

Network and Discovery Behavior

Resilio’s networking model is simple from the user’s point of view, but there is more happening underneath than a single open port.

Web UI Access

The Web UI runs on port 8888. It is a management interface, not the data transfer channel. In Docker, bind it to 127.0.0.1 unless you intentionally need LAN access:

For LAN setup access, use:

Sync Traffic

Port 55555 is the default listening port used for sync traffic in the official Docker example. Open and forward this port when devices need to connect across networks. If you change it in Compose, change the listening port inside Resilio as well.

LAN Discovery

On the same network, Resilio can discover peers with LAN multicast. The official documentation lists multicast UDP on port 3838 for local discovery. If two devices are on the same LAN but never see each other, check firewall rules, VLAN/subnet boundaries, and router settings that block multicast.

Tracker, Relay, and Predefined Hosts

Resilio can use trackers to help peers find each other, relays if direct connections fail, and predefined hosts when you want to point devices at known peer addresses. For private server-to-server deployments, predefined hosts can be useful because they reduce dependence on automatic discovery. For normal home use, the defaults are usually enough.

Security and Access Model

Keys Are Access

A Resilio key is not just a label. It identifies the share and controls what a peer can do with the folder. A read-write key can modify the shared folder. A read-only key can receive data without changing the source. An encrypted key can store and seed encrypted data without decrypting filenames or content.

Treat read-write keys like credentials. Send them only over trusted channels and revoke or rotate sharing when a device should no longer participate.

Selective Sync

Selective Sync lets a device see a folder’s contents without immediately downloading every file. That is useful for laptops, small SSDs, and mobile devices. Resilio represents unsynced files as placeholders and downloads the real file when requested.

For a Docker server, Selective Sync is usually less important because servers are often intended to hold full copies. For a laptop connected to the same share, it can save a lot of disk space.

Encrypted Folders

Encrypted folders are designed for untrusted peers. The encrypted peer receives and serves encrypted data, but cannot decrypt filenames or file contents. This is useful when you want an always-on node to help availability without giving that node readable access to the material.

Encrypted folders use additional CPU and memory, so test them before relying on a small VPS or low-power NAS-style machine.

Common Use Cases

Syncing a Work Folder Between Laptop and Server

Run the Docker container on the server, add /mnt/sync/projects as a folder, then connect the laptop client to that share. This gives you a continuously synchronized server-side copy of active project files without placing those files in a commercial cloud drive.

Moving Large Media Files Across the LAN

Resilio is useful when the bottleneck is cloud upload speed rather than local network speed. Put the media folder under /mnt/sync/media or mount a dedicated disk under /mnt/mounted_folders/media. Devices on the same network can transfer directly.

Syncing External Drives

If your files live under /media or /mnt, either mount those paths explicitly or use the full-root-access setup on a trusted private host. Explicit mounts are easier to reason about:

Server-to-Server Private Sync

Install Resilio on two servers, add the same folder share on both, and let the sync engine move files directly between them. This is useful for staging assets, distributing generated media, or keeping a working dataset aligned between machines.

LAN-Only Personal Sync

For a home network, keep the Web UI bound to localhost or a private LAN address and only open the sync traffic port where needed. Resilio can be a clean way to keep a desktop, mini server, and NAS-adjacent machine aligned without paying for cloud storage capacity.

Native Ubuntu Systemd Alternative

Docker is the cleanest deployment for this series, but the local notes include a native Ubuntu setup that is worth documenting. The native package is useful when you want Resilio to behave like a normal system service and interact directly with host paths without Docker bind mounts.

Install the Package from the Resilio Repository

For Debian-based systems such as Ubuntu, register the Resilio package repository and install the package:

Understand the Default User

The package runs the service as the dedicated rslsync user by default. That is safer, but it means folder permissions must allow rslsync to read and write the paths you add.

If you want Resilio to run as your normal user, use a systemd override. The local Ubuntu note uses ubuntu as the target account.

Create the Systemd Override

Configure config.json

Edit /etc/resilio-sync/config.json:

Use a minimal configuration like this:

Then make sure the service user owns the storage directory:

Apply and Start

With force_https enabled and the Web UI listening on all interfaces, access it at:

User-Mode Service Option

If system-level service permissions keep getting in the way, run Resilio in the user’s systemd context instead:

In user mode, configuration data lives under the user’s own configuration path, which is often easier to manage on single-user servers.

Useful Links

Conclusion

Resilio Sync is a strong fit when you want private file synchronization between your own machines and do not want a cloud storage provider sitting in the middle. The Docker image keeps the deployment simple: one container, one Web UI port, one sync traffic port, and a small set of bind mounts.

The important design choice is filesystem scope. The restricted Docker setup is the right default because it gives Resilio one folder and one owner. The full-root-access setup is powerful, but it turns the container into a filesystem-wide actor. That can be useful on a trusted personal server with external drives and scattered mount points, but it should be a deliberate choice.

For Ubuntu hosts where Docker is not the right fit, the native package and systemd override pattern gives you direct host integration while still letting you run Resilio under a specific user account. Either way, the core rule is the same: decide which folders Resilio should control, map permissions clearly, and keep the Web UI away from the open internet.

FAQ

What is Resilio Sync?

Resilio Sync is a peer-to-peer file synchronization tool. Instead of storing files in a central cloud account first, it syncs folders directly between your devices using Resilio’s sync engine.

Is Resilio Sync the same as cloud storage?

No. Cloud storage usually stores your files on a provider’s servers. Resilio Sync keeps files on your own devices and moves data between those devices. At least one device that has the files must be online for another device to receive them.

What Docker image should I use?

Use the official image resilio/sync:latest. It is published on Docker Hub and documents the Web UI port, sync traffic port, and expected mount paths.

What ports does Resilio Sync use?

The Web UI listens on container port 8888. Sync traffic uses port 55555 by default. If you change the sync traffic port in Docker, change the matching setting inside Resilio as well.

What is /mnt/sync?

/mnt/sync is the official main data path inside the Resilio Docker container. Mount a host directory there, such as /home/automaton/resilio/data:/mnt/sync.

Where should I mount extra folders?

The official Docker image recommends mounting extra directories under /mnt/mounted_folders/. For example, mount /media/archive as /mnt/mounted_folders/archive.

Should I run Resilio as root in Docker?

Only if you need full host filesystem access. The safer default is PUID=1000 and PGID=1000, adjusted to match your deployment user. Root mode should be limited to trusted private machines.

How do I give Resilio access to the whole host filesystem?

Set PUID=0 and PGID=0, then mount /:/mnt/mounted_folders/host_root. In the Web UI, browse to /mnt/mounted_folders/host_root. This is powerful and risky because it exposes the entire host to the container.

How do I restrict Resilio to a single folder?

Mount only one host directory to /mnt/sync, run the container with the correct PUID and PGID, and do not add extra bind mounts. The container will only see the folder you provided.

Why do my synced files have the wrong owner?

The container is probably running with a UID or GID that does not match the host folder owner. Run id username on the host, then set PUID and PGID to those numeric values.

Can I expose the Web UI to my LAN?

Yes. Change the port mapping from 127.0.0.1:8888:8888 to 8888:8888. Only do this on a trusted network, and do not expose the Web UI directly to the public internet.

Why does the article bind the Web UI to 127.0.0.1?

Binding to 127.0.0.1 keeps the Web UI reachable only from the server itself. That is a safer default for a management interface. You can deliberately widen access later if your network design requires it.

Does Resilio Sync need a database?

No. The Docker deployment does not need PostgreSQL, MySQL, Redis, or any other external service. The container stores its own local state inside the mounted data path.

Can I run Resilio Sync without Docker?

Yes. Resilio provides Linux packages for Debian-based and RPM-based distributions. On Ubuntu, install the resilio-sync package and manage it with systemd.

What user does the native Linux service use?

By default, the package runs as the dedicated rslsync user with reduced privileges. You can either grant that user access to your sync folders or use a systemd override to run the service as your own user.

Why run the native service as my own user?

Running as your own user can avoid permission friction when the folders already belong to that account. The systemd override sets User, Group, and HOME explicitly so Resilio starts with the expected identity.

What does force_https do in config.json?

force_https tells the native Web UI to use HTTPS. In the example config, the interface listens on 0.0.0.0:8888, so HTTPS is a better default than plain HTTP for network access.

What is storage_path in the native config?

storage_path is where the native Resilio service stores its local application state. In the example, it is /var/lib/resilio-sync/, and that directory must be writable by the service user.

Why does the native setup use a systemd drop-in file?

A drop-in override changes service behavior without editing the vendor unit directly. It resets conflicting defaults and defines the exact user, group, environment, and command used to start Resilio.

What is user-mode systemd for Resilio?

User-mode systemd runs the service inside a user’s own systemd session instead of as a global system service. It can simplify permissions on single-user servers because the process naturally runs as that user.

How do I see Resilio Docker logs?

Run docker logs resilio-sync or docker compose logs -f resilio-sync from the compose directory. Permission errors and startup issues usually appear there.

How do I see native Ubuntu service logs?

Run sudo journalctl -u resilio-sync.service -n 20 --no-pager for recent logs, or remove -n 20 to inspect more history.

Is Resilio Sync a file manager?

No. It is primarily a folder synchronization engine. You manage local folders on each device, and Resilio keeps selected folders aligned between peers.

How is Resilio different from Syncthing?

Both are peer-to-peer sync tools. Syncthing is open source and widely used in self-hosted circles. Resilio Sync is proprietary, has BitTorrent-based lineage, and provides official Docker and commercial ecosystem options. The better choice depends on licensing preference, client support, and operational fit.

Can Resilio sync files from a NAS or mounted disk?

Yes. In Docker, mount the NAS path or disk path into the container under /mnt/mounted_folders/. Make sure the container user has read and write permissions on the host path.

Can I sync multiple folders from one container?

Yes. Mount each host folder into the container, then add each folder separately in the Web UI. Use clear mount names such as /mnt/mounted_folders/archive and /mnt/mounted_folders/projects.

Can I run more than one Resilio container?

Yes, but each container needs unique host ports and separate mounted storage paths. Most servers only need one container because one Resilio instance can manage multiple folders.

What is the safest Docker setup for a home server?

Use the restricted compose file, set PUID and PGID to your normal user, bind the Web UI to 127.0.0.1, and mount only the directories you intend to sync.

Why does my browser fail to open the Docker Web UI from another machine?

The compose file probably maps 127.0.0.1:8888:8888, which only listens on the server itself. Change it to 8888:8888 if you intentionally want LAN access.

What should I check first when sync traffic does not connect?

Check that port 55555 is mapped in Docker, allowed by the host firewall, and matches the listening port configured in Resilio. Then check container logs for startup or permission errors.

Let’s Talk!

Looking for a reliable partner to bring your project to the next level? Whether it’s development, design, security, or ongoing support—I’d love to chat and see how I can help.

Get in touch,
and let’s create something amazing together!

RELATED POSTS

Spend a lot of time with Vikunja (cubicFUSION Vikunja Importer) lately, one thing that it is currently missing is an easy way to style the interface. Especially the task view is just one long page without any clear section separation. LET’S TWEAK IT Here a quick starting point to tweak the style quickly. You can […]

An Elementor widget that renders a fully configurable honeycomb grid. Each hexagon cell carries an icon or image, title, text, and a link. The grid supports two orientations, responsive column and size controls, rounded corners, hover effects, hover-reveal modes, per-cell style overrides, a media-gallery source with lightbox, auto-fit columns, background fill, and drop shadows. Content […]

My hexagon obsession (full disclosure) I have been obsessed with hexagons for years. Like, unreasonably obsessed. My logo is literally a hexagon. People in my life have started calling me the bee keeper, and honestly I’ve stopped arguing about it. So yeah, when it came to picking a topic I actually care about — this […]

Alexander

I am a full-stack developer. My expertise include:

  • Server, Network and Hosting Environments
  • Data Modeling / Import / Export
  • Business Logic
  • API Layer / Action layer / MVC
  • User Interfaces
  • User Experience
  • Understand what the customer and the business needs


I have a deep passion for programming, design, and server architecture—each of these fuels my creativity, and I wouldn’t feel complete without them.

With a broad range of interests, I’m always exploring new technologies and expanding my knowledge wherever needed. The tech world evolves rapidly, and I love staying ahead by embracing the latest innovations.

Beyond technology, I value peace and surround myself with like-minded individuals.

I firmly believe in the principle: Help others, and help will find its way back to you when you need it.