Merhabalar herkese;
Sizlere bu yazımda SyncThing hakkında bilgiler vermeye, ne işe yaradığını, ne yaptığını ve nasıl kurulumunun yapılacağını ve yapılması gereken ayarları anlatacağım.
SyncThing Nedir?
SyncThing; BitTorrent Sync ve Dropbox gibi cloud erişim programıdır. Bu ne demek oluyor, evinizde işyerinizde telefonuna herhangi bir belgede, dosyada değişik yaptığınız zaman; bu değişikliğin bütün cihazlarımızda eşitlenmesidir. Yani, işteyken üzerinden çalıştığınız bir dosyayla, metroda eve giderken çalışmaya devam edebilir ve eve geldiğinizde kaldığınız yerden çalışmanıza devam edebilirsiniz. Programın en büyük özelliği ise tamamen açık kaynak kodlu olmasıdır.
SyncThing Hangi Sistemleri Destekliyor?
SyncThing evinizdeki buzdolabında çalışacak kadar geniş sistem desteği veriyor desek yalan olmaz. Resmi olarak desteklediği sistemler aşağıda yer almaktadır;
- Linux: 32 bit, 64 bit, ARM, arm64, ppc64, ppc64le
- Windows: 32 bit, 64 bit
- Mac OS X: 32 bit, 64 bit
- FreeBSD: 32 bit, 64 bit
- Solaris: 64 bit
- Dragonfly BSD: 64 bit
- NetBSD: 32 bit, 64 bit
- OpenBSD: 32 bit, 64 bit
- Source Code: v0.14.23, v0.14.23
Resmi olarak Android ve iOS desteği vermiyor. Ancak Play Store ve App Store’dan erişebileceğiniz ve sorunsuzca çalışabileceğiniz üçüncü parti uygulamalar mevcut.
SyncThing Çalışma Mantığı Nasıldır?
SyncThing aslında çok basit bir çalışma mantığına sahip. Sistem iki parçadan oluşuyor. Node olarak ifade edilen, uç birimler ve relay olarak ifade edilen merkezi sunucular. Relay dünya çapında gönüllü katılımlarla ortaya çıkmış büyük bir SyncThing ağıdır. (Dünya genelindeki ağ haritasını incelemek için Relay adresini ziyaret edebilirsiniz.)
Siz iki node birbirine eşleştiriyorsunuz ve daha sonrasında paylaşmak istediğiniz klasörleri, dosyaları belirtiyorsunuz. SyncThing clienti çalıştığı sürede, sürekli olarak dosya değişiklik tarihlerine kontrol ederek, en güncel sürümle belirtiğiniz dosya ve klasörleri değiştirecektir. Peki diyeceksiniz ki relay server ne işe yarıyor. Node aralarında eşleme yapılırken işte bu relay sunucuları kullanılıyor.
(Eğer isterseniz ki projeye destek olayım, çorbada benim de tuzum bulunsun, gönüllü olarak relay sunucu olabiliyorsunuz. Hiçbir kullanıcının dosyası sunucunuzda depolanmıyor, sadece eşleme yapmak için sizin hattınızı -bandwidth- kullanıyor o kadar. Gelecek günlerde relay sunucu kurulumu ile ilgili bir makale hazırlamayı da düşünüyorum.)
SyncThing Kurulumu
Programın Websitesi adresine girip, Syncthing Core (CLI & Web UI) kısmından sisteminize uygun dosyanın bağlantısını kopyalayın. Benim işletim sistemim Ubuntu 64 bit olduğu için, Linux 64 bit bağlantısını kullanıyorum.
wget ile paketi sunucumuza indirelim
wget https://github.com/syncthing/syncthing/releases/download/v0.14.23/syncthing-linux-amd64-v0.14.23.tar.gz
Sonuç aşağıdaki gibi olacaktır:
[email protected]:~# wget https://github.com/syncthing/syncthing/releases/download/v0.14.23/syncthing-linux-amd64-v0.14.23.tar.gz --2017-02-10 11:54:36-- https://github.com/syncthing/syncthing/releases/download/v0.14.23/syncthing-linux-amd64-v0.14.23.tar.gz Resolving github.com (github.com)... 192.30.253.112, 192.30.253.113 Connecting to github.com (github.com)|192.30.253.112|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 6146921 (5.9M) [application/octet-stream] Saving to: 'syncthing-linux-amd64-v0.14.23.tar.gz' syncthing-linux-amd 100%[===================>] 5.86M 4.17MB/s in 1.4s 2017-02-10 11:54:38 (4.17 MB/s) - 'syncthing-linux-amd64-v0.14.23.tar.gz' saved [6146921/6146921] [email protected]:~#
tar ile sıkıştırılmış dosyayı açalım
tar xzvf syncthing*.tar.gz
Sonuç aşağıdaki gibi olacaktır:
[email protected]:~# tar xzvf syncthing*.tar.gz syncthing-linux-amd64-v0.14.23/ syncthing-linux-amd64-v0.14.23/syncthing syncthing-linux-amd64-v0.14.23/LICENSE.txt syncthing-linux-amd64-v0.14.23/etc/ syncthing-linux-amd64-v0.14.23/etc/README.md syncthing-linux-amd64-v0.14.23/etc/linux-systemd/ syncthing-linux-amd64-v0.14.23/etc/linux-systemd/README.md syncthing-linux-amd64-v0.14.23/etc/linux-systemd/system/ syncthing-linux-amd64-v0.14.23/etc/linux-systemd/system/syncthing-resume.service syncthing-linux-amd64-v0.14.23/etc/linux-systemd/system/[email protected] syncthing-linux-amd64-v0.14.23/etc/linux-systemd/user/ syncthing-linux-amd64-v0.14.23/etc/linux-systemd/user/syncthing.service syncthing-linux-amd64-v0.14.23/etc/firewall-ufw/ syncthing-linux-amd64-v0.14.23/etc/firewall-ufw/syncthing syncthing-linux-amd64-v0.14.23/etc/firewall-ufw/README.md syncthing-linux-amd64-v0.14.23/etc/linux-runit/ syncthing-linux-amd64-v0.14.23/etc/linux-runit/README.md syncthing-linux-amd64-v0.14.23/etc/linux-runit/run syncthing-linux-amd64-v0.14.23/etc/linux-runit/log/ syncthing-linux-amd64-v0.14.23/etc/linux-runit/log/run syncthing-linux-amd64-v0.14.23/etc/linux-upstart/ syncthing-linux-amd64-v0.14.23/etc/linux-upstart/README.md syncthing-linux-amd64-v0.14.23/etc/linux-upstart/system/ syncthing-linux-amd64-v0.14.23/etc/linux-upstart/system/syncthing.conf syncthing-linux-amd64-v0.14.23/etc/linux-upstart/user/ syncthing-linux-amd64-v0.14.23/etc/linux-upstart/user/syncthing.conf syncthing-linux-amd64-v0.14.23/etc/solaris-smf/ syncthing-linux-amd64-v0.14.23/etc/solaris-smf/README.md syncthing-linux-amd64-v0.14.23/etc/solaris-smf/syncthing.xml syncthing-linux-amd64-v0.14.23/etc/macosx-launchd/ syncthing-linux-amd64-v0.14.23/etc/macosx-launchd/README.md syncthing-linux-amd64-v0.14.23/etc/macosx-launchd/syncthing.plist syncthing-linux-amd64-v0.14.23/.metadata/ syncthing-linux-amd64-v0.14.23/.metadata/release.sig syncthing-linux-amd64-v0.14.23/syncthing.sig syncthing-linux-amd64-v0.14.23/README.txt syncthing-linux-amd64-v0.14.23/AUTHORS.txt syncthing-linux-amd64-v0.14.23/extra/ syncthing-linux-amd64-v0.14.23/extra/Getting-Started.pdf syncthing-linux-amd64-v0.14.23/extra/FAQ.pdf [email protected]:~#
SyncThing klasörüne girelim
cd syncthing*
Sonuç aşağıdaki gibi olacaktır:
root@web:~# cd syncthing* [email protected]:~/syncthing-linux-amd64-v0.14.23#
Programı, uygulamalar klasörüne kopyalayalım
cp syncthing /usr/local/bin
Sonuç aşağıdaki gibi olacaktır:
[email protected]:~/syncthing-linux-amd64-v0.14.23# cp syncthing /usr/local/bin [email protected]:~/syncthing-linux-amd64-v0.14.23#
Bir üst klasöre geri gelip, kurulum dosyalarını silelim
cd ~ rm -rf syncthing*
Sonuç aşağıdaki gibi olacaktır:
[email protected]:~/syncthing-linux-amd64-v0.14.23# cd ~ [email protected]:~# rm -rf syncthing* [email protected]:~#
Kurulum tamamlamış olduk. Gördüğünüz gibi çok basit bir kurulum mekanizmasına sahip.
SyncThing Ayarları
Öncelikle SyncThing çalıştıralım
syncthing
Sonuç aşağıdaki gibi olacaktır:
[email protected]:~# syncthing [monitor] 12:35:55 INFO: Starting syncthing [start] 12:35:55 INFO: Generating ECDSA key and certificate for syncthing... [QL72E] 12:35:55 INFO: syncthing v0.14.23 "Dysprosium Dragonfly" (go1.8rc3 linu-amd64) [email protected] 2017-02-07 20:25:33 UTC [QL72E] 12:35:55 INFO: My ID: QL72EHR-Z73JE6L-DNTMNMR-I2KG6NU-X5VNFCU-PTTM7KV-7FM6GH-PLUISQ4
SyncThing ilk çalıştırılmada size ID oluşturacaktır.
CTRL+C tuş kombinasyonu ile programı durduralım.
[QL72E] 12:35:57 INFO: Device QL72EHR-Z73JE6L-DNTMNMR-I2KG6NU-X5VNFCU-PTTM7KV-7FM6GH-PLUISQ4 is "web" at [dynamic] [QL72E] 12:35:58 INFO: Detected 0 NAT devices ^C[monitor] 12:36:00 INFO: Signal 2 received; exiting [email protected]:~#
config.xml dosyasını düzenleyelim
nano ~/.config/syncthing/config.xml
Dosya içinde aşağıdaki satırları bulalım
<gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address> <apikey>dKnWV2hR3xbhhZrbrcQ9x6THcqmGxAjf</apikey> <theme>default</theme> </gui>
127.0.0.1:8384 olarak değeri 0.0.0.0:8384 olarak değiştirelim. SyncThing tüm ip adresleri için 8384 portunu dinleyerek arayüze erişmemizi sağlayacaktır.
CTRL+X ile çıkış isteyip, Y ve Enter tuşları ile değişiklikleri kaydedelim.
Daha sonrasında SyncThing çalıştıralım
syncthing
[email protected]:~# syncthing [monitor] 12:43:24 INFO: Starting syncthing [QL72E] 12:43:24 INFO: syncthing v0.14.23 "Dysprosium Dragonfly" (go1.8rc3 linu x-amd64) [email protected] 2017-02-07 20:25:33 UTC [QL72E] 12:43:24 INFO: My ID: QL72EHR-Z73JE6L-DNTMNMR-I2KG6NU-X5VNFCU-PTTM7KV-7 EFM6GH-PLUISQ4 [QL72E] 12:43:24 INFO: Single thread SHA256 performance is 244 MB/s using crypt o/sha256 (239 MB/s using minio/sha256-simd).
X simgesine tıklayarak bağlantıyı sonlandırın. SyncThing arkaplanda çalışmaya devam edecektir.
SyncThing GUI Ayarları
http://sunucuipadresi:8384 adresine giriş yapalım. Kendi sunucunuzun IP adresi ve hostname yazmayı unutmayın.
Giriş yaptığınızda “The Syncthing admin interface is configured to allow remote access without a password. This can easily give hackers access to read and change any files on your computer. Please set a GUI Authentication User and Password in the Settings dialog.” uyarısı ile karşılaşacaksınız.
Bu hatanın sebebi GUI için herhangi bir oturum açma şifresi belirlenmemiş olmasından dolayıdır.
Settings tıklayarak gerekli ayarlamaları yapabiliriz.
Device Name, Node isminiz.
GUI Authentication User, kullanıcı adı.
GUI Authentication Password, kullanıcı şifresi.
Ayarlarınızı tamamladıktan sonra Save ile kaydedin.
kısmında yer alan Default Folder isterseniz silebilirsiniz. Edit tıklayından sonra Remove tıklayabilirsiniz.
SyncThing Node Ekleme ve Paylaşım
Sıra geldi eşleştirme ayarları için başka bir Node eklemeye. Sağ altta yer alan Remote Devices kısmından Add Remove Device tıklayın.
Diğer Node sunucuna bağlanıp, sağ üstte yer alan Actions menüsünden, Show ID seçeneğine tıklayın.
Eşleme yapılacak olan Node ID sini göreceksiniz.
ID kopyalayıp, diğer Node ekranına dönün.
En üstte yer alan Device ID kısmına kopyaladığınız ID yazın. Device Name olarak da hatırlatıcı bir isim girin. Daha sonra Save seçeneği ile kaydedin.
Ekleme talebinde bulunduğunuz Node, eklenme talebinde bulunduğunuz Node ile ID üzerinden iletişim kuracaktır ve paylaşım için sizden yetki isteyecektir.
Add Device ile eşleştirmeyi onaylayalım ve Save ile kayıt edelim.
Cihazlarımızı eşleştirme işlemini başarı ile tamamlamış bulunuyoruz. Şimdi sıra geldi klasör ve dosya paylaşımı için iletişim kurmaya.
Folders altında yer alan Add Folder seçeneğine tıklayalım.
Folder Label paylaşmak istediğimiz klasörün tanımı. Belirleyici bir isim girebilirsiniz. Folder ID sistem tarafından otomatik atanacaktır. Folder Path paylaşmak istediğiniz klasörün tam yolunu gösterecektir. Share With Devices paylaşmak istediğiniz cihazları. Gerekli düzenlemeleri yaptıktan sonra Save tıklayarak paylaşımı başlatabilirsiniz.
SyncThing kısa bir süre dosya ve klasörleri taradıktan sonra, Node ile iletişime geçecektir. İletişim tamamlandıktan sonra, paylaşım isteğinin olduğuna dair bir uyarı karşınızda çıkacaktır. Add diyerek isteği kabul ediyoruz.
Folder Path kısmına kaydetmek istediğimiz klasörü belirterek Save seçeneğine tıklıyoruz.
Kısa bir süre sonra, tüm dosya ve klasörleriniz eşitlenecektir.
Eşitleme işlemi bittikten sonra, aynı dosya ve klasörleriniz bire bir kopyasına sahip olacaksınız. Eşleştirme ve paylaşım yaptığınız tüm cihazlarınızda ortak ve eş zamanlı çalışma imkanızı bu şekilde sağlamış oldunuz.
Herhangi bir dosya üzerinden yaptığınız herhangi bir değişiklik, SyncThing client çalıştığı sürece tüm cihazlarınızda eşitlenmiş olacaktır.
SyncThing GUI
SyncThing herhangi bir eşitleme yapmazken, GUI incelediğinizde üç farklı bölümden oluştuğunu görüyoruz.
Sol tarafta yer alan Folders kısmı, paylaşım yaptığımız klasörleri gösteriyor. Sağ üstte yer alan This Device bölümü anlık olarak indirme, yükleme hızımızı, toplam paylaşılan dosya boyutunu, RAM ve CPU kullanımını, çalışma süresini, sürüm bilgisini ve bağlı olduğumuz relay sunucuları hakkında bilgi vermektedir. Remote Devices kısmında ise, eşleme yaptığımız tüm cihazları görebilirsiniz, isterseniz yenilerini buradan ekleyebilirsiniz.
Konu ile ilgili herhangi bir sorunuz ve sorununuz olursa seve seve yardımcı olmaya hazırım. Bir sonraki makalemde görüşmek üzere.