GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Syncthing di Desktop/Server Ubuntu

Tutorial ini akan menunjukkan cara memasang Syncthing di Ubuntu. Syncthing adalah program sinkronisasi file berkelanjutan peer-to-peer gratis yang memungkinkan Anda untuk menyinkronkan file Anda di beberapa perangkat, tersedia untuk Linux, BSD, macOS, Windows, Android, dan Solaris.

Ini adalah alternatif sumber terbuka untuk Resilio Sync yang populer (sebelumnya dikenal sebagai BitTorrent Sync ) aplikasi. Pembuatan, modifikasi, atau penghapusan file pada satu mesin akan secara otomatis direplikasi ke perangkat Anda yang lain. Syncthing tidak mengunggah file Anda ke server pusat seperti Nextcloud , tetapi bertukar data Anda secara langsung di antara perangkat Anda. Semua data Anda dienkripsi dengan TLS saat mentransmisikan antar perangkat Anda.

Fitur Sinkronisasi

  • Gratis &sumber terbuka.
  • Kecepatan sinkronisasi cepat.
  • Mendukung sinkronisasi satu arah.
  • Sinkronisasi Selektif (Abaikan pola).
  • Ini dapat menggunakan server relai jika dua rekan tidak dapat terhubung satu sama lain.
  • Mendukung autentikasi LDAP.

Instal Syncthing di Ubuntu melalui Repositori Deb Resmi

Syncthing disertakan dalam repositori default Ubuntu sejak 18.04 Bionic Beaver. Namun, disarankan untuk menginstal Syncthing dari repositori resmi upstream, sehingga Anda akan mendapatkan versi terbaru.

Gunakan curl untuk mengunduh kunci GPG lalu impor kunci dengan apt-key .

sudo apt-get install curl

curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

Jika Anda melihat OK di terminal, itu berarti kunci GPG berhasil diimpor. Kemudian tambahkan repositori deb resmi dengan perintah berikut.

echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

Karena repositori ini menggunakan https, kita perlu menginstal apt-transport-https paket, sehingga manajer paket APT dapat membuat koneksi https dengan repositori ini.

sudo apt-get install apt-transport-https

Perbarui indeks paket lokal dan instal sinkronisasi di Ubuntu.

sudo apt-get update

sudo apt-get install syncthing

Menggunakan Systemd untuk Menyiapkan Sinkronisasi sebagai Layanan Sistem

Paket deb Syncthing resmi dikirimkan dengan file layanan systemd yang diperlukan. Di bawah /lib/systemd/system/ direktori, Anda akan menemukan [email protected] mengajukan. Aktifkan sinkronisasi untuk memulai otomatis saat boot dengan menjalankan perintah di bawah ini. Ganti username dengan nama pengguna Anda yang sebenarnya.

sudo systemctl enable [email protected]username.service

Perintah di atas akan membuat tautan simbolis yang mengarah ke [email protected] berkas.

Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /lib/systemd/system/[email protected]

Sekarang kita dapat memulai layanan Syncthing dengan perintah berikut.

sudo systemctl start [email protected]username.service

Periksa status

systemctl status [email protected]username.service

Keluaran:

Petunjuk:Jika perintah di atas tidak segera berhenti, tekan Q untuk mendapatkan kembali kendali terminal.

Kita dapat melihat bahwa Syncthing autostart diaktifkan dan sedang berjalan.

Layanan syncthing systemd membuat file konfigurasi di bawah /home/username/.config/syncthing/ dan folder /home/username/Sync sebagai folder sinkronisasi default. File konfigurasi utama adalah /home/username/.config/syncthing/config.xml .

Instal Syncthing di OS lain

Buka halaman unduh Syncthing dan instal Syncthing di sistem operasi lain seperti Windows, macOS, BSD, Android.

Buka Port 22000 di Firewall

Syncthing menggunakan port 22000 untuk berkomunikasi dengan rekan-rekan. Jika komputer atau server Anda mengaktifkan firewall UFW, maka Anda harus mengizinkan port 22000 dengan perintah berikut.

sudo ufw allow 22000/tcp

Mengakses Antarmuka Web Sinkronisasi Ubuntu

Secara default, layanan Syncthing mendengarkan pada 127.0.0.1:8384. Sekarang di bilah alamat browser Web Anda, ketik 127.0.0.1:8384 untuk mengakses antarmuka Web Syncthing. Anda dapat menambahkan perangkat Syncthing lain dan berbagi folder dengan mereka.

Jika Anda menginstal Syncthing di server Ubuntu jarak jauh, Anda perlu menyiapkan proxy terbalik dengan Nginx atau Apache untuk mengakses UI web, yang akan dijelaskan nanti dalam tutorial ini.

Mulai Menyinkronkan File antar Perangkat Anda

Setelah kami memiliki dua perangkat yang menjalankan Syncthing, kami dapat mulai menyinkronkan file di antara keduanya.

Di antarmuka web Syncthing, klik Tindakan> Tampilkan ID di pojok kanan atas. Anda akan melihat ID perangkat, yang merupakan rangkaian huruf dan angka yang panjang. Kode QR, yang juga merupakan ID perangkat, digunakan untuk mengonfigurasi Syncthing di ponsel cerdas.

Salin ID perangkat, lalu buka antarmuka Web Syncthing dari perangkat kedua, klik Tambahkan Perangkat Jarak Jauh di pojok kanan bawah. Kemudian rekatkan ID Perangkat dan beri nama perangkat. Klik tombol Simpan.

Sekarang perangkat kedua akan mencoba terhubung ke perangkat pertama. Refresh antarmuka Web pada perangkat pertama, Anda akan melihat pesan berikut. Klik Tambahkan Perangkat untuk menambahkan perangkat kedua ke daftar perangkat perangkat pertama.

Sekarang kedua perangkat terhubung.

Di panel kiri antarmuka Web adalah folder sinkronisasi default (/home/username/Sync ). Klik Add Folder tombol untuk menambahkan folder baru. Berikan label deskriptif untuk folder ini dan atur jalur folder.

Syncthing berjalan sebagai akun pengguna Anda sendiri, jadi Anda harus memiliki izin menulis di folder bersama. Jika Anda melihat pesan kesalahan berikut saat berbagi folder, berarti Anda tidak memiliki izin menulis di folder tersebut.

2020-06-21 20:05:49: Failed to create folder marker: mkdir .stfolder: read-only file system

Anda dapat memberikan izin menulis dengan setfacl .

sudo apt install acl
sudo setfacl -R -m u:username:rwx /folder/path/

Catatan :Jika masalah masih berlanjut, lihat tips pemecahan masalah di akhir artikel ini.

Dalam Sharing tab, pilih perangkat Sinkronisasi Anda yang lain.

Dalam Ignore Pattens tab, Anda dapat memasukkan pola nama untuk file yang tidak boleh disinkronkan.

Dalam Advanced tab, Anda dapat memilih jenis folder, interval pemindaian ulang, dll.

Klik tombol Simpan untuk mulai menyinkronkan. Sebuah pesan akan muncul di antarmuka Web perangkat lain. Klik Tambahkan untuk menerima file.

Sekarang kedua perangkat sedang menyinkronkan file. Di sisi kanan, Anda dapat melihat kecepatan unduh, kecepatan unggah, ukuran folder lokal, dll.

Menyiapkan Proksi Terbalik

Karena mendengarkan pada 127.0.0.1:8384, antarmuka Web Syncthing hanya tersedia untuk koneksi dari komputer yang sama. Untuk dapat mengakses antarmuka Web Syncthing dari komputer jarak jauh, kita dapat mengatur proxy terbalik untuk Syncthing dengan Nginx atau Apache.

Nginx

Nginx adalah server web yang sangat populer dan proxy terbalik. Jika Anda lebih suka menggunakan Nginx, jalankan perintah berikut untuk menginstalnya.

sudo apt install nginx

Kemudian buat file konfigurasi server.

sudo nano /etc/nginx/conf.d/syncthing.conf

Tambahkan konten berikut ke file ini. Ganti syncthing.example.com dengan nama domain pilihan Anda. Anda juga harus menambahkan catatan DNS A untuk subdomain ini. Jika Anda tidak memiliki nama domain asli, saya sarankan pergi ke NameCheap untuk membelinya. Harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.

server {
  listen 80;
  server_name syncthing.example.com;

  access_log /var/log/nginx/syncthing.access.log;
  error_log /var/log/nginx/syncthing.error.log;
  location / {
    proxy_pass http://127.0.0.1:8384;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Simpan dan tutup file. Uji konfigurasi Nginx dan muat ulang Nginx.

sudo nginx -t

sudo systemctl reload nginx

Setelah Anda mengarahkan nama domain Anda ke alamat IP Ubuntu, ketik nama domain Anda di bilah alamat browser dan Anda akan melihat antarmuka Web Syncthing.

Jika browser Anda tidak dapat terhubung ke antarmuka web Syncthing, mungkin Anda perlu membuka port 80 di firewall. Misalnya, jika Anda menggunakan UFW, maka jalankan perintah berikut.

sudo ufw allow 80/tcp

Apache

Apache adalah server web terkenal yang juga dapat digunakan sebagai proxy terbalik. Jika Anda lebih suka Apache daripada Nginx, instal dengan:

sudo apt install apache2

Mulai Apache dan aktifkan mulai otomatis.

sudo systemctl start apache2

sudo systemctl enable apache2

Untuk menggunakan Apache sebagai proxy terbalik, kita perlu mengaktifkan proxy modul dan modul header.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Sekarang buat file host virtual untuk Syncthing.

sudo nano /etc/apache2/sites-available/syncthing.conf

Salin dan tempel baris berikut ke dalam file. Ganti syncthing.example.com dengan nama domain asli Anda. Anda juga harus menambahkan catatan DNS A untuk subdomain ini. Jika Anda tidak memiliki nama domain asli, saya sarankan pergi ke NameCheap untuk membelinya. Harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.

<VirtualHost *:80>
   ServerName syncthing.example.com
   ErrorDocument 404 /404.html

   ProxyPass / http://127.0.0.1:8384/
   ProxyPassReverse / http://127.0.0.1:8384/

   ErrorLog ${APACHE_LOG_DIR}/syncthing_error.log
   CustomLog ${APACHE_LOG_DIR}/syncthing_access.log combined

</VirtualHost>

Simpan dan tutup file. Kemudian aktifkan host virtual ini.

sudo a2ensite syncthing.conf

Mulai ulang Apache

sudo systemctl restart apache2

Sekarang Anda dapat mengakses UI Web melalui syncthing.example.com .

Jika browser Anda tidak dapat terhubung ke antarmuka web Syncthing, mungkin Anda perlu membuka port 80 di firewall. Misalnya, jika Anda menggunakan UFW, maka jalankan perintah berikut.

sudo ufw allow 80/tcp

Amankan UI Web Sinkronisasi dengan HTTPS

Untuk mengenkripsi lalu lintas HTTP saat Anda mengunjungi Syncthing web UI melalui nama domain, kami dapat mengaktifkan HTTPS dengan memasang sertifikat TLS gratis yang dikeluarkan dari Let's Encrypt. Pertama, buka port 443 di firewall.

sudo ufw allow 443/tcp

Kemudian jalankan perintah berikut untuk menginstal klien Let's Encrypt (certbot).

sudo apt install certbot

Jika Anda menggunakan Nginx, maka Anda juga perlu menginstal plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Selanjutnya, jalankan perintah berikut untuk mendapatkan dan menginstal sertifikat TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

Jika Anda menggunakan Apache, instal plugin Certbot Apache.

sudo apt install python3-certbot-apache

Dan jalankan perintah ini untuk mendapatkan dan menginstal sertifikat TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d syncthing.example.com

Dimana

  • --nginx :Gunakan plugin nginx.
  • --apache :Gunakan plugin Apache.
  • --agree-tos :Menyetujui persyaratan layanan.
  • --redirect :Memaksa HTTPS dengan pengalihan 301.
  • --hsts :Tambahkan header Strict-Transport-Security ke setiap respons HTTP. Memaksa browser untuk selalu menggunakan TLS untuk domain. Mempertahankan dari SSL/TLS Stripping.
  • --staple-ocsp :Mengaktifkan Stapel OCSP. Respons OCSP yang valid ditempelkan ke sertifikat yang ditawarkan server selama TLS.

Sertifikat sekarang harus diperoleh dan diinstal secara otomatis.

Segarkan GUI Web Syncthing Anda, Anda akan menemukan koneksi HTTP secara otomatis dialihkan ke koneksi aman HTTPS.

Aktifkan Otentikasi Pengguna

Secara default, siapa pun dapat mengakses antarmuka web Syncthing Anda setelah proxy terbalik diatur. Kami dapat mengaktifkan otentikasi pengguna untuk membatasi akses. Klik Tindakan tombol di pojok kanan atas, lalu pilih Setelan -> GUI.

Masukkan nama pengguna di GUI Authentication User bidang, masukkan kata sandi di bidang Kata Sandi Otentikasi GUI . Kemudian simpan setelan Anda.

Harap diperhatikan bahwa Anda tidak perlu mencentang Gunakan HTTPS untuk GUI kotak, yang memungkinkan Syncthing menggunakan sertifikat yang ditandatangani sendiri. Kami telah menginstal sertifikat yang valid di Apache/Nginx yang dipercaya oleh browser Web utama.

Setelah Anda menyimpan perubahan, mulai ulang layanan Syncthing systemd, atau Anda mungkin melihat kesalahan 502 gateway buruk saat memuat ulang halaman.

sudo systemctl restart [email protected]username.service

Sekarang masuk ke antarmuka Web Syncthing dengan nama pengguna dan kata sandi baru Anda.

Cara Menggunakan Sertifikat TLS yang Ditandatangani Sendiri

Jika Anda tidak ingin menggunakan nama domain dan sertifikat TLS yang valid untuk mengakses antarmuka web Syncthing. Anda dapat menggunakan sertifikat yang ditandatangani sendiri. Edit file konfigurasi Syncthing.

nano ~/.config/syncthing/config.xml

Temukan baris berikut.

    <gui enabled="true" tls="false" debugging="false">
        <address>127.0.0.1:8384</address>
        <apikey>P4sYoeq2CNQRdfq33dq823dakE2</apikey>
        <theme>default</theme>

Untuk menggunakan sertifikat yang ditandatangani sendiri, cukup ubah tls="false" ke tls="true" . Dan jika Anda akan mengakses antarmuka web Syncthing dari komputer jarak jauh, ubah 127.0.0.1 ke 0.0.0.0 .

Simpan dan tutup file. Kemudian mulai ulang Syncthing agar perubahan diterapkan.

sudo systemctl restart [email protected]username.service

Folder Hanya-Kirim &Hanya-Terima

Saat berbagi folder di Syncthing, Anda dapat membuka tab Lanjutan dan memilih salah satu dari tiga jenis folder:

  • Kirim &Terima (default)
  • Hanya Kirim
  • Hanya Terima

Anda mungkin ingin memilih hanya kirim atau terima saja. Misalnya, jika Anda memiliki 3 komputer:A, B, dan C, dan Anda ingin menggabungkan folder di komputer A dan B ke satu folder di komputer C. Kemudian Anda dapat mengatur jenis folder menjadi hanya-terima di komputer C. Dengan cara ini, komputer C akan memiliki semua file dalam satu folder. Komputer A dan B masih memiliki file aslinya. Tidak lebih dan tidak kurang.

Saat Anda menggunakan jalur folder yang sama di komputer C, Syncthing mungkin memperingatkan Anda bahwa "jalur ini adalah subdirektori dari folder yang ada". Anda dapat mengabaikan peringatan ini karena Anda memiliki folder hanya terima. File yang ada di folder tidak akan dihapus.

Menyinkronkan melalui Server Relai

Jika dua instance Syncthing tidak dapat terhubung satu sama lain, Syncthing akan mencoba menggunakan server relai untuk mentransfer file.

Alasan umum mengapa mereka tidak dapat terhubung satu sama lain adalah karena salah satunya berada di belakang perangkat NAT dan tidak mengonfigurasi penerusan porta. Setelah Anda mengonfigurasi penerusan port, Anda dapat menonaktifkan server relai. Begini caranya. Klik tombol Edit dan pilih Advanced tab, Ubah alamat dari dynamic ke tcp://ip-address:22000 . Tentu saja Anda perlu menggunakan alamat IP asli Anda.

Menyinkronkan Sejumlah Besar File Kecil

Syncthing tidak cocok untuk menyinkronkan sejumlah besar file kecil seperti file ubin osm, karena itu akan dengan cepat mencapai batas pemberitahuan sistem file Linux. Jika kedua perangkat menjalankan Linux, maka Anda dapat menggunakan rsync (sinkronisasi jarak jauh) alat untuk menyinkronkan sejumlah besar file kecil, seperti ini:

rsync -aP /path/to/source/folder/  [email protected]:/path/to/destination/folder

Menjalankan Beberapa Contoh Sinkronisasi

Jika Anda memiliki beberapa folder bersama milik pengguna yang berbeda, sebaiknya jalankan beberapa instance Syncthing untuk setiap pengguna.

sudo systemctl start [email protected]
sudo systemctl start [email protected]

Jika Anda menjalankan Syncthing sebagai pengguna1 dan berbagi folder milik pengguna2, Anda akan mengalami masalah yang tidak sinkron/izin ditolak, karena Syncthing akan membuat file dengan pengguna yang dijalankannya.

Setiap instans harus memiliki port GUI dan port sinkronisasi unik, yang dapat dikonfigurasi dalam file konfigurasi sinkronisasi pengguna di bawah direktori home.

nano ~/.config/syncthing/config.xml

Konfigurasi port GUI adalah

<address>127.0.0.1:8384</address>

Konfigurasi port sinkronisasi default adalah

<listenAddress>default</listenAddress>

Anda dapat mengubahnya menjadi

<listenAddress>tcp://0.0.0.0:22001</listenAddress>

Jika Anda tidak ingin membuat subdomain untuk setiap instance Syncthing, Anda dapat membuat subdirektori di nama domain Anda. Misalnya, konfigurasi subdirektori Nginx untuk Syncthing adalah sebagai berikut.

 location /user2/ {
    proxy_pass http://127.0.0.1:8385/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }

Saya menggunakan user2 sebagai subdirektori. Anda dapat memilih nama apa pun yang Anda suka. Perhatikan bahwa di proxy_pass http://127.0.0.1:8385/; , garis miring / dibutuhkan. Jika Anda menghapusnya, itu tidak akan berfungsi.

Kiat Pemecahan Masalah

Tidak dapat terhubung

Jika instance Syncthing Anda tidak dapat terhubung satu sama lain, Anda dapat menggunakan ss (socket stats) utilitas untuk memeriksa apakah Syncthing mendengarkan pada port TCP 22000.

sudo ss -lnpt | grep syncthing

Seperti yang dapat Anda lihat dari tangkapan layar di bawah, Syncthing saya mendengarkan pada port 8384 (antarmuka web) dan 22000 (koneksi peer-to-peer).

Jika tidak, Anda dapat mengedit file konfigurasi.

nano ~/.config/syncthing/config.xml

Temukan baris berikut.

<listenAddress>default</listenAddress>

Ubah default ke tcp://your-IP-address .

<listenAddress>tcp://12.34.56.78</listenAddress>

Simpan dan tutup file. Kemudian mulai ulang Syncthing.

sudo systemctl restart [email protected]username.service

Gagal Membuat Penanda Folder

Jika Anda ingin menyinkronkan folder sistem seperti /etc/ , Anda mungkin akan melihat pesan kesalahan berikut:

Failed to create folder marker, read-only file system

Ini karena layanan systemd sinkronisasi (/lib/systemd/system/[email protected] ) memiliki ProtectSystem berikut ini variabel yang melarang operasi penulisan pada folder systemd (/usr/, /boot/, /etc/).

ProtectSystem=full

Kami dapat menambahkan pengecualian, sehingga Syncthing dapat menulis ke folder. Buat folder untuk menyimpan konfigurasi sistem kustom kami.

sudo mkdir /etc/systemd/system/[email protected]username.service.d/

Kemudian buat file di bawah direktori ini.

sudo nano /etc/systemd/system/[email protected]username.service.d/permission.conf

Tambahkan baris berikut dalam file ini.

[Service]
ReadWritePaths=/shared/foler/one/  /shared/foler/two/

Folder dipisahkan oleh ruang kosong. Anda dapat menambahkan folder sebanyak yang Anda suka. Folder harus ada di sistem Anda, atau Sinkronisasi akan gagal dimulai ulang.

Simpan dan tutup file. Kemudian muat ulang systemd.

sudo systemctl daemon-reload

Dan mulai ulang Syncthing.

sudo systemctl restart [email protected]username.service

Ukuran Folder di Global State tidak akurat

Ini dapat terjadi jika Anda berbagi folder dengan beberapa perangkat. Katakanlah Anda berbagi folder dari perangkat 1 ke perangkat 2. Jika perangkat 2 belum selesai menyinkronkan file dan Anda membagikan folder dari perangkat 2 ke perangkat 3, maka ukuran folder global yang ditampilkan pada perangkat 3 akan lebih kecil dari ukuran sebenarnya .

Sinkronisasi Folder Berhenti

Periksa log Syncthing untuk mencari tahu mengapa sinkronisasi berhenti.

sudo journalctl -eu [email protected]

Permintaan Pemrosesan Masalah

Jika Anda melihat kesalahan berikut, Anda dapat memeriksa log kesalahan Nginx (/var/log/nginx/syncthing.error.log ) atau log kesalahan Apache (/var/log/apache/syncthing_error.log ) untuk mencari tahu apa yang menyebabkan masalah ini.

Syncthing seems to be experiencing a problem processing your request. Please refresh the page or restart Syncthing if the problem persists.

Dalam kasus saya, itu karena saya mengaktifkan firewall aplikasi web ModSecurity.

Replikasi Asinkron

Perhatikan bahwa Syncthing menggunakan metode asinkron, jadi perubahan yang dibuat pada satu node akan membutuhkan waktu untuk direplikasi ke node lain. Jika aplikasi Anda sensitif terhadap penundaan sinkronisasi, sebaiknya tentukan node sebagai node master. Buat perubahan hanya pada node master dan gunakan node slave sebagai cadangan.


Ubuntu
  1. Cara Menginstal Desktop (GUI) di Server Ubuntu

  2. Cara Menginstal MySQL di Ubuntu 18.04

  3. Cara Memasang Server Minecraft di Ubuntu 18.04

  1. Cara Menginstal Server Xrdp (Desktop Jarak Jauh) di Ubuntu 18.04

  2. Cara Menginstal Nginx di Ubuntu 20.04

  3. Cara Menginstal Server Xrdp (Desktop Jarak Jauh) di Ubuntu 20.04

  1. Cara Menginstal MariaDB di Ubuntu 20.04

  2. Cara menginstal Klien ownCloud di Desktop Ubuntu 14.04

  3. Cara Menginstal Desktop Ubuntu dari Server Ubuntu