树莓派上部署私有云

10 篇文章 0 订阅

目录

failed to setup inotify handler. Please increase inotify limits

WIN下面部署方案一:

WIN下面部署方案二:


自建的私有云网盘软件很多,比如 Seafile、ownCloud 等,功能很实用,而 Syncthing 最大的特色是采用了与 Resilio Sync (BitTorrent Sync) 类似的 P2P 分布式技术,无需中心服务器,即可让多台设备互相实时同步文件,用过 Resilio Sync 的朋友都明白这种同步方式的优势了。它们两者的实现方式很相似,区别是 Resilio 属于商业软件,需付费使用,在国内已慢慢变得访问(被)困难(墙),而 Syncthing 不仅完全免费且开源,相比 Resilio 还增加了「文件版本控制」、「单向同步」等堪称杀手级的功能特性。

Syncthing 功能上非常接近于 Resilio Sync / BT Sync,不过说它是一款用于搭建网盘的服务器软件或者云存储服务应用似乎并不十分恰当,相较于 Seafile、NextCloud 等服务器工具,Syncthing 实际上更像是一款文件/文件夹同步工具。你可以非常轻松简单地让同一路由器下的多台 PC 电脑、NAS 设备实现局域网互相同步,也可以在 VPS 服务器或 24 小时不关机且有公网 IP 的电脑上安装和配置 Syncthing,让其成为真正意义上的云同步网盘。

更难得的是 Syncthing 开源且免费,跨平台支持 Windows,Mac,Linux,Android。(稍有些遗憾的是目前暂不支持iOS平台)当然也支持树莓派平台,下面应读者要求,树莓派实验室为大家介绍如何在树莓派上安装 Syncthing!(VPS 等 Linux 平台上安装方法类同,也可以参考本文)

获取软件包

1

2

3

4

5

6

#进入用户所在目录

cd ~

#下载软件包,如果发现不能顺畅下载,那可能是墙的锅,手动下载了再通过 SFTP 上传到 /home/pi 目录下也可以

wget https://github.com/syncthing/syncthing/releases/download/v1.27.2/syncthing-linux-arm-v1.27.2.tar.gz

#解压

tar -zxvf syncthing-linux-arm-v0.14.42.tar.gz

注:Syncthing 的版本迭代比较频繁,你可以在这个页面获取最新的安装包。页面中文件名为 syncthing-linux-arm-版本号.tar.gz 的就是树莓派可用的版本。

部署、测试

解压之后当前目录下多了一个名为 syncthing-linux-arm-v0.14.42 的目录。

1

2

3

4

5

6

#强迫症表示要重命名缩短一下:

mv syncthing-linux-arm-v0.14.42 syncthing

#进入 syncthing 目录

cd syncthing

#给主程序加上执行权限

chmod +x syncthing


先运行主程序看看是个什么东东

1

~/syncthing/syncthing

结果输出一些程序初始化信息,包括网络监听端口、WebUI(操作界面) URL 等,表示部署成功。先不要急着访问 WebUI,因为还需要少量配置。先 Ctrl+C 中止程序。

配置

运行下面的命令编辑 Syncthing 的配置文件:

1

sudo nano /home/pi/.config/syncthing/config.xml


找到下面的内容

1

2

3

4

<gui enabled="true" tls="false">

<address>127.0.0.1:8384</address>

<apikey>XXXXXX</apikey>

</gui>

将 127.0.0.1:8384 修改为 0.0.0.0:8384 以便让其他终端可以访问到 Syncthing 的 WebUI。

下面再次运行主程序

1

~/syncthing/syncthing

不要中断程序,尝试用电脑或者手机的浏览器访问 Syncthing 的 WebUI,地址为
http://树莓派的IP地址:8384

打开之后,会让你设置用户名和密码。下面再大致了解下几个关键的界面:

到这一步就已经可以投入使用了!
但是使用这个命令运行 Syncthing,程序需要一直在前台运行。为了让它在后台默默执行可以这样:

1

~/syncthing/syncthing &

如果你希望让 Syncthing 可以自动开机运行,可以继续往下阅读。

设置开机自动运行

在 /etc/init.d 目录下建立启动文件

1

sudo nano /etc/init.d/syncthing

输入以下内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

#!/bin/sh

### BEGIN INIT INFO

# Provides:          Syncthing

# Required-Start:    $local_fs $remote_fs $network

# Required-Stop:     $local_fs $remote_fs $network

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Syncthing

# Description:       Syncthing is for backups

### END INIT INFO

  

# Documentation available at

# http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html

# Debian provides some extra functions though

. /lib/lsb/init-functions

  

DAEMON_NAME="syncthing"

DAEMON_USER=pi

DAEMON_PATH="/home/pi/syncthing/syncthing"

DAEMON_OPTS=""

DAEMON_PWD="${PWD}"

DAEMON_DESC=$(get_lsb_header_val $0 "Short-Description")

DAEMON_PID="/var/run/${DAEMON_NAME}.pid"

DAEMON_NICE=0

DAEMON_LOG='/var/log/syncthing'

  

[ -r "/etc/default/${DAEMON_NAME}" ] && . "/etc/default/${DAEMON_NAME}"

  

do_start() {

  local result

  

    pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null

    if [ $? -eq 0 ]; then

        log_warning_msg "${DAEMON_NAME} is already started"

        result=0

    else

        log_daemon_msg "Starting ${DAEMON_DESC}" "${DAEMON_NAME}"

        touch "${DAEMON_LOG}"

        chown $DAEMON_USER "${DAEMON_LOG}"

        chmod u+rw "${DAEMON_LOG}"

        if [ -z "${DAEMON_USER}" ]; then

            start-stop-daemon --start --quiet --oknodo --background \

                --nicelevel $DAEMON_NICE \

                --chdir "${DAEMON_PWD}" \

                --pidfile "${DAEMON_PID}" --make-pidfile \

                --exec "${DAEMON_PATH}" -- $DAEMON_OPTS

            result=$?

        else

            start-stop-daemon --start --quiet --oknodo --background \

                --nicelevel $DAEMON_NICE \

                --chdir "${DAEMON_PWD}" \

                --pidfile "${DAEMON_PID}" --make-pidfile \

                --chuid "${DAEMON_USER}" \

                --exec "${DAEMON_PATH}" -- $DAEMON_OPTS

            result=$?

        fi

        log_end_msg $result

    fi

    return $result

}

  

do_stop() {

    local result

  

    pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null

    if [ $? -ne 0 ]; then

        log_warning_msg "${DAEMON_NAME} is not started"

        result=0

    else

        log_daemon_msg "Stopping ${DAEMON_DESC}" "${DAEMON_NAME}"

        killproc -p "${DAEMON_PID}" "${DAEMON_PATH}"

        result=$?

        log_end_msg $result

        rm "${DAEMON_PID}"

    fi

    return $result

}

  

do_restart() {

    local result

    do_stop

    result=$?

    if [ $result = 0 ]; then

        do_start

        result=$?

    fi

    return $result

}

  

do_status() {

    local result

    status_of_proc -p "${DAEMON_PID}" "${DAEMON_PATH}" "${DAEMON_NAME}"

    result=$?

    return $result

}

  

do_usage() {

    echo $"Usage: $0 {start | stop | restart | status}"

    exit 1

}

  

case "$1" in

start)   do_start;   exit $? ;;

stop)    do_stop;    exit $? ;;

restart) do_restart; exit $? ;;

status)  do_status;  exit $? ;;

*)       do_usage;   exit  1 ;;

esac

保存之后运行

1

2

3

4

#加可执行权限

sudo chmod +x /etc/init.d/syncthing

#添加默认启动

sudo update-rc.d syncthing defaults

之后你还可以通过这四个命令管理 Syncthing,顾名思义。

1

2

3

4

sudo service syncthing start

sudo service syncthing stop

sudo service syncthing restart

sudo service syncthing status

如后面你要取消开机自动运行可以使用

1

sudo update-rc.d syncthing remove

如果文件数过多的话, 管理页面会报错

failed to setup inotify handler. Please increase inotify limits

那是因为系统允许监控的文件数有限制,需要修改系统参数

查看一下/proc/sys/fs/inotify/max_user_watches这个文件里面的数据是多少,默认是8192,不能直接修改这个文件,需要修改 /etc/sysctl.conf ,到里面新增以下一条记录:

fs.inotify.max_user_watches = 100000 #依照你自己所需,預設值是8192而已

# 修改完成后,重新载入配置生效
sysctl -p

# 然后再看看 /proc/sys/fs/inotify/max_user_watches 这个文件是否已经改变

WIN下面部署方案一:

需要注意的是:windows 7 支持的最新版本为1.27.0.0,不能再更新了,否则会启动不了。

windows下面一般会安装SyncTrayzor,我的安装目录为:D:\Program Files\SyncTrayzor,启动时会自动在C:\Users\Administrator\AppData\Roaming\SyncTrayzor这个目录下面生成以下几个文件,配置和日志都会存放在这里, 更新的syncthing.exe也将会安装在这里面。

为了防止自动更新,可以在下面界面的勾选上

如果一不小心更新过了,就会造成syncthing无程序法启动,此时需要先把上面停止自动更新后,再到C:\Users\Administrator\AppData\Roaming\SyncTrayzor目录下面,还原老的程序版本,即把名为syncthing.exe.old改为syncthing.exe,再重启SyncTrayzor即可。

WIN下面部署方案二:

windows下面,也可以直接下一个syncthing,启动后会开启一个cmd命令窗口,

我们在启动那里加上个参数:-no-console -no-browser ,就会不打开命令窗口后台运行。

将syncthing快捷方式放到startup文件夹中(win11下,运行shell:startup可打开startup启动文件夹),开机自动启动,同时点开快捷方式的属性,在目标的后面添加-no-console -no-browser也可以,注意要勾上以管理员身份运行,不然还是会弹出命令窗口的。 这次开机就能自动后台启动,然后从浏览器上打开http://127.0.0.1:8384/进行管理,这样可以避免太大的SyncTrayzor,占用系统资源,而且还会出现打不开的现象。

后来发现,在WIN11下面,就算放在启动目录下面,也还是启动不了, 需要创建计划任务,有一点要注意一下:在“条件”选项卡中,‌勾选“以最高权限运行”,‌这将确保任务以管理员权限执行。‌

与 BTSync 的比较

Syncthing 与 BTSync 有着相似的功能,均很强大。
1.Syncthing 与 BTSync 相比,Syncthing 是开源的,MIT协议。可免费用于商业用途,而 BTSync 相反。
2.Syncthing 的方式更侧重个人资料的同步,BTSync 还可以在同步的基础上进行分享。
3.Syncthing 暂无 iOS 版本。

各种平台的客户端可以在官网免费获取:
https://syncthing.net/
(Windows 版的 Syncthing 官方还提供了一个图形界面版的「SyncTrayzor」工具)

GitHub:
https://github.com/syncthing/syncthing

再配上蒲公英,可以实现异地同步。

在树莓派上安装可以说是非常人性化,超级简单,可以参考官方的安装方式

访问端 for 树莓派教程-贝锐官网

本地机上下载对应的客户端, 就可能实现异地同步了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值