Syncthing
好是挺好的,但就是同步不給力,公共網絡服務其質量良莠不齊,網絡也說不清。最好的解決方案仍是本身搭建發現服務器Syncthing Discovery Server和中繼服務器Syncthing Relay Server,有效解決網絡鏈接差,非局域網鏈接慢的問題。html
須要材料:帶公網IP的服務器或動態DNS的主機一臺。參數設置信息官網最全面,參考Welcome to Syncthing’s documentation!,這裏只是提少量我的須要的參數,通常使用足夠。node
下載當前主機的發現服務器主程序 stdiscosrvlinux
選擇對應版本,服務器基本是stdiscosrv-linux-amd64
git
下載:github
wget https://github.com/syncthing/discosrv/releases/download/v0.14.51/stdiscosrv-linux-amd64-v0.14.51.tar.gz
解壓:shell
tar -xzvf stdiscosrv-linux-amd64-v0.14.51.tar.gz
程序好像也會自動建立證書,這一步或許能夠忽略json
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ~/key.pem -out ~/cert.pem
注意更改目錄服務器
官網給出了詳細的參數配置 Syncthing Discovery Server,簡單說幾個我用到的參數。網絡
-cert
`=<file>和
-key`=<file>
默認指定運行程序目錄下的證書文件,建議將證書拷貝到當前目錄下。tcp
-listen
`=<address>`監聽端口,默認8443,改不改無所謂,若是有防火牆記得經過端口。
-debug
調試模式,能夠查看連接信息
-replication-listen
`=<address>`我也不太明白這個參數的意義,可能適用於組多服務器
將證書複製到程序所在文件夾,執行便可:
./stdiscosr
若是沒有將證書放好位置,直接使用命令應該會自動建立證書,或者將證書複製到當前目錄再執行。
cp *.pem syncthing/stdiscosrv-linux-amd64-v0.14.51
或者執行:
./stdiscosrv -cert ~/cert.pem -key ~/key.pem 1
記得在防火牆裏面放行端口,能夠安裝ufw
,而後放行端口
sudo apt install ufw sudo ufw allow 8443
搭建好發現服務器後,雖然能找到不一樣網絡的主機了,可是非局域網相互傳輸的速度仍是差強人意。
中繼服務器列表:Relay Pool Data,雖有很多國內服務器,可是搭建本身的服務器優點也顯而易見。
下載當前主機的發現服務器主程序 relaysrv
選擇對應版本,服務器基本是strelaysrv-linux-amd64
下載:
wget https://github.com/syncthing/relaysrv/releases/download/v0.14.48/strelaysrv-linux-amd64-v0.14.48.tar.gz
解壓:
tar -xzvf strelaysrv-linux-amd64-v0.14.48.tar.gz
參考以前操做,或直接複製過去就行了。
cp *.pem syncthing/strelaysrv-linux-amd64-v0.14.48
官網給出了詳細的參數配置 Syncthing Relay Server,上面提到的再也不重複
-global-rate
`=<bytes/s>`全侷限速,bytes做爲單位,換算成MB應當乘兩個1024,能夠去這裏換算。
-pools
`=<pool addresses>**很是重要的參數設置**,若是不設置將做爲公共服務器發佈,他人能夠無償使用你的服務器流量,三思。建立私人服務器的方法是添加參數
-pools=""`。
-protocol
`=<string>`協議
-status-srv
`=<listen addr>`監聽地址,有的服務器須要設置當前公共ip
./strelaysrv -pools="" -global-rate 3145728 -protocol=tcp4
開啓防火牆支持,使用ufw
或:
iptables -I INPUT -p tcp --dport 22067 -j ACCEPT iptables -I INPUT -p tcp --dport 22070 -j ACCEPT
運行程序後會生成一個id
,將其拷貝下來
發現服務器:
https://ip_address:port/?id=your_id
中繼服務器地址:
relay://ip_address:port/?id=your_id
客戶端中替換時,若是能夠用逗號和default
分開,這樣就能同時使用多個地址。
參考官方文檔:Listen Addresses
syncthing
的地址能夠理解成三類:動態中繼池,靜態中繼地址,TCP端口。
若是像我同樣只只是同步本身的服務,就能夠簡單設置爲:
tcp4://0.0.0.0:22000,relay://ip_address:22067?id=abcd123...
指定tcp4即ipv4的緣由是由於我有ipv6
網絡,可是國內v6
覆蓋不全,不如簡簡單單局域網用tcp
,遠程就用本身的中繼服務器,避免其它的低速遠程服務器。
default, https://ip_address:8443/?id=abcd123...這裏添加
default
的原爲了接入一些網絡的共享庫,若是不須要去掉便可。
Syncthing
目前不支持佔位符操做仍是挺惋惜的,可是設置了自定義的中繼服務器和發現服務器以後,可靠性將大大提高,從此能夠做爲一個經常使用的軟件了,更方便得同步各個設備之間的文件,免去不少折騰的時間。