Install Resilio Sync (BTSync) on Ubuntu 20.04, 22.04 Desktop/Server
This tutorial will be showing you how to install Resilio Sync (formerly BitTorrent Sync) on Ubuntu 20.04 and 22.04. Resilio Sync is a free, fast, peer-to-peer file sharing and syncing tool released by Resilio, Inc, available for Linux, FreeBSD, Mac, Windows, Android, iOS, Amazon Kindle Fire and NAS devices.
Unlike Dropbox or NextCloud, Resilio Sync does not require a central server to store files. Instead, you just need to install Resilio Sync on end devices to sync files via the BitTorrent protocol, so you will not be bound by the storage limit of a server.
Installing Resilio Sync on Ubuntu 20.04 and Ubuntu 22.04 From Official Repository
Resilio Sync has a repository for Ubuntu. First, we need to import Resilio Sync’s public key so that the package manager can verify the Resilio Sync package. Open up a terminal window and run the following command to download the public key.
wget http://linux-packages.resilio.com/resilio-sync/key.asc
Then import the public key with apt-key
.
sudo apt-key add key.asc
Next, run the following commands to add the Resilio Sync repository. (The add-apt-repository
command is provided by the software-properties-common
package.)
sudo apt install software-properties-common sudo add-apt-repository "deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free"
Now install the Resilio Sync package with the following command.
sudo apt update sudo apt install resilio-sync
Once installed, Resilio Sync will be automatically started. You can check its status with:
systemctl status resilio-sync
Hint: Press Q to gain back control of the terminal after running the above command.
If it’s not running, you can start it with:
sudo systemctl start resilio-sync
By default, Resilio Sync won’t start at boot time. You can enable auto start with:
sudo systemctl enable resilio-sync
Resilio Sync runs as the rslsync
user and the Web UI listens on 127.0.0.1:8888
as specified in /etc/resilio-sync/config.json
configuration file.
Setting Up the Resilio Sync Web UI
The Linux version of Resilio Sync doesn’t provide with a desktop client. Instead, you need to configure things via a web interface. Type in the following in your web browser address bar to access the Resilio Sync Web UI.
127.0.0.1:8888
If you install Resilio Sync on a remote Linux server, you need to set up a reverse proxy with Nginx or Apache in order to access the web UI. See the later part of this article.
You will be asked to set a username and password to secure the Web UI.
Then choose a name for your device and click Get started
.
And enter the username and password you just created.
Once logged in, you can share a folder on your computer to other devices or receive a folder from another device.
Sharing Folders with Other Devices
To share a folder on your computer, click the + button at the upper left corner and select standard folder.
Then select a folder on your computer.
You might encounter the following error message.
Can't open the destination folder.
Or
Don't have permissions to write to selected folder.
That’s because Resilio Sync is running as rslsync
user, who doesn’t have permission to access that folder.
Let’s say you selected your home folder /home/your-username/
as the shared folder. To fix the above error, all you need to do is to grant permissions on your home folder to the rslsync
user with the following command.
sudo setfacl -R -m "u:rslsync:rwx" /home/your-username
The above command won’t change the owner of the shared folder. The owner has the same permissions as usual. What it does is to grant read, write and execute permissions to one more user, namely rslsync
. Note that -R
(recursive) flag must come before -m
(modify) flag, which is immediately followed by the access control list entry (u:rslsync:rwx
).
If you see this error:
sudo: setfacl: command not found
Then install the acl
package and re-run the above setfacl
command.
sudo apt install acl
Now you should be able to add your home folder as the shared folder.
After the folder is added, you can share this folder via a link, secret key or QR code.
If the share folder is huge, it will take some time for Resilio Sync to index the content.
Receiving Folders From Other Devices
To receive a folder from another device, click the + button at the upper left corner and select “Enter a key or link”.
Then enter the key or link.
Using Resilio Sync on Ubuntu 20.04, 22.04 Server
You can install Resilio Sync on Ubuntu 20.04 and 22.04 server from repository mentioned above. If your server is sitting in the cloud, then you need to set up reverse proxy in order to access the Web UI because the Web UI listens on local host only. Once the reverse proxy is configured, you can access the Web UI via a domain name.
Setting Up Resilio Sync Reverse Proxy with Nginx
Nginx becomes more and more popular these days as a web server and reverse proxy. Install Nginx on Ubuntu 20.04, 22.04 server with the following command.
sudo apt install nginx
Start Nginx and enable auto start.
sudo systemctl start nginx sudo systemctl enable nginx
Now create a virtual host file for Resilio Sync.
sudo nano /etc/nginx/conf.d/resilio-sync.conf
Copy and paste the following lines in to the file. Replace resilio.example.com
with your real domain name. You should also add a DNS A record for this sub-domain.
server {
listen 80;
server_name resilio.example.com;
access_log /var/log/nginx/resilio_access.log;
error_log /var/log/nginx/resilio_error.log;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Save and close this file. Then test Nginx configuations.
sudo nginx -t
If the test is successful, reload Nginx.
sudo systemctl reload nginx
Now in your browser’s address bar type in resilio.example.com
and you should be able to access the Web GUI.
Setting Up Resilio Sync Reverse Proxy with Apache
Apache is well-known web server that can also be used as a reverse proxy. If you prefer Apache to Nginx, install it on Ubuntu 20.04, 22.04 server with:
sudo apt install apache2
Start Apache and enable auto start.
sudo systemctl start apache2 sudo systemctl enable apache2
To use Apache as a reverse proxy, we need to enable the proxy
modules and the header module.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Now create a virtual host file for Resilio Sync.
sudo nano /etc/apache2/sites-available/resilio-sync.conf
Copy and paste the following lines in to the file. Replace resilio.example.com
with your real domain name. You should also add a DNS A record for this sub-domain.
<VirtualHost *:80>
ServerName resilio.example.com
ErrorDocument 404 /404.html
ProxyPass / http://localhost:8888/
ProxyPassReverse / http://localhost:8888/
ErrorLog ${APACHE_LOG_DIR}/resilio_error.log
CustomLog ${APACHE_LOG_DIR}/resilio_access.log combined
</VirtualHost>
Save and close the file. Then enable this virtual host.
sudo a2ensite resilio-sync.conf
Restart Apache
sudo systemctl restart apache2
Now you can access the Web UI via resilio.example.com
.
Secure the Resilio Sync Web GUI with HTTPS
To encrypt the HTTP traffic when you visit Resilio Sync web UI via a domain name, we can enable HTTPS by installing a free TLS certificate issued from Let’s Encrypt. Run the following command to install Let’s Encrypt client (certbot) on Ubuntu 20.04, 22.04 server.
sudo apt install certbot
If you use Nginx, then you also need to install the Certbot Nginx plugin.
sudo apt install python3-certbot-nginx
Next, run the following command to obtain and install TLS certificate.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d resilio.example.com
If you use Apache, install the Certbot Apache plugin.
sudo apt install python3-certbot-apache
And run this command to obtain and install TLS certificate.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d resilio.example.com
Where
--nginx
: Use the nginx plugin.--apache
: Use the Apache plugin.--agree-tos
: Agree to terms of service.--redirect
: Force HTTPS by 301 redirect.--hsts
: Add the Strict-Transport-Security header to every HTTP response. Forcing browser to always use TLS for the domain. Defends against SSL/TLS Stripping.--staple-ocsp
: Enables OCSP Stapling. A valid OCSP response is stapled to the certificate that the server offers during TLS.
The certificate should now be obtained and automatically installed.
And you can access Resilio Sync Web UI via HTTPS (https://resilio.example.com
).
Open Resilio Sync Port in Firewall
In addition to the Web UI port, Resilio Sync also needs to listen on the public interface to connect to peers. The listening port is different for each device. You can find it in Resilio Sync Web UI by going to Preference -> Advanced.
If you enabled UFW firewall on your Ubuntu server, then you need to open this port. For example, my port is 22251, so I run the following command to open it.
sudo ufw allow 22251
Resilio Sync iOS App
I use Resilio Sync to sync files between my Ubuntu desktop, Ubuntu server and iPhone. Some say that the iOS app is a complete disaster, but I found it working very well. By default, Selective Sync is enabled in the iOS app. That means individual files will be synced only when you choose to. If you disable Selective Sync, all files will be synced immediately.
How to Configure Selective Sync
In the Web UI, Resilio Sync tells you that selective sync is a pro feature for Linux users, but actually we can configure selective sync from the command line. Every sync folder has a hidden .sync
folder created by Resilio Sync. In this hidden folder, there’s a file named IgnoreList
, which is a UTF-8 encoded .txt file that helps you specify single files, paths and rules for ignoring during the synchronization job. It supports “?” and “*” wildcard symbols.
For example, I need to sync a folder between computer A and B in read and write mode. Computer B contains a file that I don’t want to be synced to computer A. Here’s the steps that I did to ignore that file.
- I add the folder in computer A’s Resilio Sync web UI.
- Now computer A has a
.sync
hidden folder. - I add the name of that file in
IgnoreList
on computer A, so it will refuse to receive that file from Computer B. - Share the folder with computer B in read and write mode.
- Once the synchronization is finished, I can add the name of that file in Computer B’s
IgnoreList
, so computer B won’t share that file with other computers if a new computer joins the synchronization.
KDE Connect
You can also use KDE Connect to share files between desktop Linux and iOS/Android.
Conclusion
I hope this tutorial helped you install Resilio Sync on Ubuntu 20.04 and Ubuntu 22.04. As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care 🙂
Excellent tutorial! I followed the instructions and it worked correctly the first time. I used Ubuntu 18.04 and Nginx.
Easy peasy!
Thank you for this.
Far more complete than the docs at Resilio Sync.
One question:
I’ve got a RS server on my Synology NAS.
I’ve got 1 Windows box syncing to it and 2 Linux boxes (Elementary OS, an Ubuntu derivative).
On Windows there are no issues with file permissions.
On both Linux boxes the permissions are wrong. Bot my Linux boxes have the same usernames.
How can I configure either the Linux boxes or RS so the permissions are hosed?
Thank you again.
Question: How do I configure Nginx in this case to allow for the web server to serve other sites? By following the instructions above, Resilio Sync is the one and only web server on the server.
I would like to have Resilio Sync served in a subfolder and other subfolders (including the main folder) served normally. Like this:
https://my.host.com/ – normal
https://my.host.com/Resilio – Resilio Sync UI
https://my.host.com/other_folders – other folders.
As it is now with the above configuration, Resilio behaves as follows:
https://my.host.com/ – redirects to https://my.host.com/gui and that is the Resilio Sync UI.
I am also asking this question on the Nginx and Resilio forums.
Much simpler by just using docker.
https://hub.docker.com/r/resilio/sync/
1. I used your procedure for the installation of Resilio-Sync free home package on two Kubuntu Linux 18.04 computer systems.
2. It worked for the first two or three times. I was able to send the link via e-mail from machine 1 and was able to receive a folder at the other machine 2.
3. When I tried the same procedure with a different folder again from machine 1 to machine 2, I got an “Invalid Link” error message. Three attempts yielded the same outcome.
4. Would you happen to know why this is happening and any corrective action that could be taken?
Hi. I just had to say this is a VERY fine tutorial, and helped me solve two hair-shredding problems today. One was the problem of securely accessing a headless implementation of Resilio Sync on my “perfect server”. Ispconfig3 was just not getting me there, and I was totally frustrated. The other came about as I realized that the ssl-enabled reverse proxy was exactly what I needed to securely access another web-based configuration tool, in that case graphical user interface that manages FreePBX, which runs on a separate machine from the howtoforge server. By putting in the LAN ip address of that machine in place of ‘localhost’, and crafting the rest of the .conf file to suit the pbx system subdomain, it all just worked! I can’t thank you enough for all that I learned from this post.
Loved this tutorial, its been working flawlessly for months.
Had an issue last night after updating my server (ubuntu 20.04) i am now getting an error of too many redirects when trying to load up the GUI.
I have checked to make sure my nginx reverse proxy config is still correct, I have verified certbot is working, I am just at a complete loss, any help would be greatly appreciated.
I’m getting the same error, were you able to find a fix?
I’m am also getting this error now, but I’m running the reverse_proxy through caddy. Have either of y’all found a solution?
sudo apt-key add “key filename + extension”
returns the following error: gpg: no valid OpenPGP data found.
I had the same issue of ‘too many redirects’ after installing certbot. I changed this line of /etc/nginx/conf.d/resilio-sync.conf:
proxy_pass http://127.0.0.1:8888;
to
proxy_pass https://127.0.0.1:8888;
and reloaded nginx and it began behaving normally
I just wanted to say, this was a great tutorial. Everything worked the first time. This documentation was better than what the company had on their website. Ubuntu 22.04 LTS
your article is so detailed! Solved all the problem I met, thank you