在 Synology DSM 上面跑 Syncthing (檔案同步)

文章目錄

需求

Syncthing 是一個 Open Source 的檔案同步軟體, 預計把她跑在 Synology DSM NAS 上, 以便及時把檔案同步備份過去.

安裝

  1. 打開 DSM, 直接在 套件中心 -> 社群 裡面找一下 Syncthing, 這裡安裝的版本不重要, 因為 Syncthing 會自己升級.
  2. 安裝完後就可以試著連線 http://your.synology:8384/
    1. 如果無法連線, 請查看 /volume1/@appstore/syncthing/var/syncthing.log, 找一下是否有下列錯誤訊息
      1WARNING: GUI/API: accept tcp [::]:8384: accept: function not implemented (restarting)
      
    2. 若有這個訊息, 大致的原因是 Syncthing 是使用 Go, 而 go 1.17 以前的行為是會先使用 accept4(), 如果沒有 accept4(), 就改回用 accept(). 但在 go 1.18 這個行為被改變了, 他新版本只支援 accept4(), 而 Syncthing 1.20 以上使用的是新板 Go. 因此如果你的作業系統沒有 accept4(), 那你就沒法使用 Syncthing 1.20 以上. 可參考以下這幾個討論:
    3. 解法: 目前 暫時 只能降級回 Syncthing 1.19.2, 方法如下
      1. 在這裡檢查你的 Synology DSM 是哪種架構: https://github.com/SynoCommunity/spksrc/wiki/Architecture-per-Synology-model
      2. 在這裡下載對應的版本: https://github.com/syncthing/syncthing/releases/tag/v1.19.2
      3. 修改 /volume1/@appstore/syncthing/var/options.conf, 加上這段設定, 以避免他自動升級
        1SYNCTHING_OPTIONS="--no-upgrade"
        
      4. 啟動 Syncthing
        1synopkgctl start syncthing
        
    4. 這個問題在 Go 這邊有提出根本解 (實際上就是改回原來的作法, 若找不到 accept4, 就使用 accept), 在 Go 1.18/1.19 都會出新版修正. 實際的版本要再等等, 應該是會出在 Go 1.18.10 or Go 1.19.5, 但即使出了, 也要等 Syncthing 也用新版 rebuild 才能用. (到目前為止 Syncthing 1.23.0 還是不行)
  3. 進去之後, 就和一般的 Syncthing 沒有不同了.

注意

GUI 的密碼萬一忘了怎麼辦?

  1. 打開 /volume1/@appstore/syncthing/var/config.xml, 尋找 gui 這個段落, 然後把 user, password 這兩行移除

    1<gui enabled="true" tls="false" debugging="false">
    2    <address>0.0.0.0:8384</address>
    3    <user>user123</user>
    4    <password>sdfjsdf*SDJFlkjewqflkdsMldsakfjlkewjflkdsajflkdsaf</password>
    5    <apikey>oHV57ywtwXARYmeZgWDUvyKCSQpU23v4</apikey>
    6    <theme>default</theme>
    7</gui>
    
  2. 重開 Syncthing, 然後再登入 GUI, 就會要你重新建立一個帳號了

    1synopkgctl start syncthing
    

如何不讓 Syncthing 在開機時自動執行?

  1. 使用 Synology DSM 的套件中心, 把它停用就可以了.

Syncthing 很吃 CPU 嗎?

這是測試 Android -> Synology 的 CPU loading.

  1. 一開始大約 20%~30% 左右

     1CPU[||||||||||||||||||||                                            25.9%]   Tasks: 117, 119 thr, 85 kthr; 2 running
     2Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||262M/499M]   Load average: 1.07 1.09 1.10
     3Swp[|                                                         26.6M/2.00G]   Uptime: 09:21:53
     4
     5PID  PPID  TGID NLWP USER      PRI  NI IO  VIRT   RES   SHR S CPU CPU% MEM%   DISK READ  DISK WRITE   TIME+  Command
     61067  1056  1067    7 sc-syncth  31  11 B6  795M 63776 11588 S   0 21.5 12.5    0.00 B/s    2.05 M/s  0:27.64 /volume1/@appstore/syncthing/bin/syncthing serv
     71868  1056  1067    7 sc-syncth  31  11 B6  795M 63776 11588 S   0 12.0 12.5    0.00 B/s    1.57 M/s  0:05.15 syncthing
     81072  1056  1067    7 sc-syncth  31  11 B6  795M 63776 11588 R   0  5.1 12.5    0.00 B/s  243.04 K/s  0:12.53 syncthing
     91070  1056  1067    7 sc-syncth  31  11 B5  795M 63776 11588 S   0  4.4 12.5    0.00 B/s  245.57 K/s  0:09.71 syncthing
    101068  1056  1067    7 sc-syncth  31  11 B6  795M 63776 11588 S   0  0.0 12.5    0.00 B/s    0.00 B/s  0:00.03 syncthing
    
  2. 不過後來就愈吃愈多了,

     1CPU[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||88.0%]   Tasks: 118, 124 thr, 85 kthr; 3 running
     2Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||271M/499M]   Load average: 2.55 2.96 2.16
     3Swp[|                                                         27.8M/2.00G]   Uptime: 09:46:46
     4
     5PID  PPID  TGID NLWP USER      PRI  NI IO  VIRT   RES   SHR S CPU CPU% MEM%   DISK READ  DISK WRITE   TIME+  Command
     61067  1056  1067   11 sc-syncth  31  11 B6  795M 73436 11948 S   0 50.6 14.4    2.53 K/s    4.31 M/s  8:15.56 /volume1/@appstore/syncthing/bin/syncthing serv
     72333  1056  1067   11 sc-syncth  31  11 B6  795M 73436 11948 S   0 24.7 14.4    2.53 K/s    2.72 M/s  0:41.49 syncthing
     81975  1056  1067   11 sc-syncth  31  11 B6  795M 73436 11948 R   0 23.4 14.4    0.00 B/s    1.28 M/s  1:53.83 syncthing
     93489  1056  1067   11 sc-syncth  31  11 B6  795M 73436 11948 S   0  3.2 14.4    0.00 B/s  324.05 K/s  0:10.30 syncthing
    101070  1056  1067   11 sc-syncth  31  11 B5  795M 73436 11948 S   0  0.0 14.4    0.00 B/s    0.00 B/s  1:44.83 syncthing
    111868  1056  1067   11 sc-syncth  31  11 B6  795M 73436 11948 S   0  0.0 14.4    0.00 B/s    0.00 B/s  1:52.39 syncthing
    121072  1056  1067   11 sc-syncth  31  11 B6  795M 73436 11948 S   0  0.0 14.4    0.00 B/s    0.00 B/s  1:47.70 syncthing
    131068  1056  1067   11 sc-syncth  31  11 B6  795M 73436 11948 S   0  0.0 14.4    0.00 B/s    0.00 B/s  0:00.54 syncthing
    

Syncthing 在 Synology DSM 上面的穩定性好嗎?

  1. 看來是還不錯, 我這台 DS213 是 10 年前的老機器了, 從手機上同步 11GB 的檔案過來, 速度大約穩問的在 3~5MB/s 左右.

之後升級的問題

  1. 當這個問題解決之後, 升級 Syncthing 可能要注意一下這個 Upgrading from v1.19.2 to v1.20.x now requires chmod for syncing files
  2. Synology 這邊的 Syncthing 團隊似乎考慮引進 Syncthing 的 next-gen-gui, 可參考 https://github.com/SynoCommunity/spksrc/pull/5523.

Posts in this Series