嵌入式

一个自由职业程序员的树莓派:私有网盘篇

2020-10-31  本文已影响0人  几昆虫

阅读本篇之前,建议您先了解 [基础准备篇] 的内容。

《一个自由职业程序员的树莓派》系列文章包括:

不知道你有没有跟我一样的困惑,每天总有很多需要处理的工作,背着个电脑进进出出,从家里到公司上班,下班后再回家,总感觉自己的身体和大脑没得到一丝闲暇。所以我分享给大家的想法很简单,就是想通过打造一个自己的个人云网盘,在家、在公司或随时随地,都可以同步自己的工作成果、照片、文档等。
作为未来工作的自由职业程序员,我们大量的电子书、技术学习视频、各项目的设计、开发文档,都需要妥善的保存,随时随地获取和同步更新。而不仅仅是像第三方的云网盘那样只能上传下载,容量稍微想要大一点,还得包年包月的不停缴费。
而我们自己有了这样的免费自主控制的私有网盘后,就不用再缴费了。当然,放在公司的电脑,也就不用再天天背着上下班了。

下面,我们就开始来亲手打造吧。

  1. 准备工作
  2. 安装 Syncthing 同步工具
  3. 配置树莓派设备端同步目录
  4. 配置电脑端同步目录

准备工作

基本的准备工作完成后,就可以开始最主要的搭建云盘了。在动手之前,先规划一下自己的云盘方案。针对 我们平常的使用,一般来说,可以按照存储工作资料、个人资料、公共资源或其它兴趣专题资料分别创建几个云盘。例如:

为了将云同步的东西与其它分开,我是将这些数据统一放在 [cloud] 目录中的,方便识别。

# 进入移动硬盘
cd /volumes/mydisk

# 创建用作云盘的目录
mkdir [cloud]
cd [cloud]
mkdir company
mkdir my
mkdir resource
mkdir works

现在想好这个规划后,就开始动手搭建吧。

安装 Syncthing 同步工具

接下来,就安装云盘软件,这里主要介绍开源的 Syncthing 方案。

类似的方案,国内还有 微力同步 也不错,可以试试。

在 ssh 远程连接的树莓派系统上安装 Syncthing:

# 添加发布 PGP key
curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

# 添加稳定版的 APT 源
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

然后:

# 更新并安装 syncthing
sudo apt update
sudo apt install syncthing

更多帮助,参见 https://apt.syncthing.net/

下面再配置一下,使用 system service 来支持开机自启动。

你可以打开源代码 https://github.com/syncthing/syncthing/tree/main/etc/linux-systemd/system,找到目录下的服务文件,将其复制到梅莓派的 /etc/systemd/system 下;也可以采用更简单的手动创建。具体包括下面2个文件:
syncthing@.service

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target

[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
RestartSec=5
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

syncthing-resume.service

[Unit]
Description=Restart Syncthing after resume
Documentation=man:syncthing(1)
After=sleep.target

[Service]
Type=oneshot
ExecStart=-/usr/bin/pkill -HUP -x syncthing

[Install]
WantedBy=sleep.target

然后,启用服务。因为树莓派的 Ubuntu 系统默认用户是 ubuntu,所以按以下命令操作即可。

systemctl enable syncthing@ubuntu.service
systemctl start syncthing@ubuntu.service

如果要检查是否成功或者是想看下日志,可以使用:

systemctl status syncthing@ubuntu.service
journalctl -e -u syncthing@ubuntu.service

更多帮助 ,参见相关的官方文档 https://docs.syncthing.net/users/autostart.html#using-systemd

因为,要从电脑上访问树莓派上运行的 syncthing 的控制台网页,还需要改一下其配置文件。

sudo vi ~/.config/syncthing/config.xml

找到其中的访问地址:

<gui enabled="true" tls="false" debugging="false">
<address>127.0.0.1:8384</address>

将其改为:

<gui enabled="true" tls="true" debugging="false">
<address>0.0.0.0:8384</address>

然后重启一下服务:

systemctl restart syncthing@ubuntu.service

稍等片刻就重启好了。

配置树莓派设备端同步目录

现在我们就可以用桌面电脑浏览器访问控制台网页,轻松的配置云盘目录。

https://192.168.31.199:8384/

程序默认创建了一个 Default Folder,目录位置在 ~/Sync 下。我们如果不想用的话,可以删除它,然后点击 [添加文件夹] 创建自己的云盘目录。

比如,我的新移动硬盘挂在 /volumes/slash 下的,里面创建了 /[cloud]/works/ 目录用来作为一个云盘的根目录。

需要特别注意的是,为了防止将来文件被意外删除和同步,导致文件丢失,请在 [版本控制] 标签页中,选上 [回收站式版本控制],保存 3 天左右。

配置电脑端同步目录

创建好云盘后,接下来就是最关键的,同步云盘数据了,我们在需要桌面电脑上同样安装 Syncthing 软件。比较方便的是官网提供了好用的小工具软件,可以自己到 https://syncthing.net/downloads/ 进行下载,对 Windows、macOS、Linux 和 Android 都提供了支持,只是暂时还没有 iOS 版本,不过我一般都是使用 macOS 系统。

安装好后,与树莓派是类似的,打开浏览器,访问控制台界面:

http://localhost:8384/

然后,点击 [添加远程设备],先将树莓派添加到里面来。因为树莓派和桌面电脑在同一个局域网内,通常是会自动发现树莓派的设备 ID,点选确定即可。

如果因为网络特殊,也可以在上一步树莓派的控制台网页,其右上角的操作下拉菜单,点击 [显示 ID] 来获取树莓派设备 ID,并填入要添加的远程设备 ID,同时取个容易记住的设备名,比如:树莓派 raspi

这时,打开树莓派的控制台网页,将会收到共享请求,确认 [添加设备] 即可。

接下来,就在展开 works,点击 [选项] 按钮,切换至共享标签页,勾选上桌面电脑设备,保存即可发起共享文件夹的请求。

共享操作是双向的,随便哪边发起共享都是一样的。

再次打开桌面电脑的控制台网页,将会收到共享过来的请求,以进行确认添加。

点击 [添加] ,选择电脑本地的文件夹路径,保存即可完成云盘同步设备。

在电脑上同步的文件夹,我就没有再使用回收站式版本控制了,有一边支持就行。

现在,你就可以在电脑上存放你的文档,Syncthing 将会自动帮你把文件同步到树莓派的移动硬盘上了。两边都有同样的文档,就不用那么担心电脑或移动硬盘某一边坏了的情况了。

恭喜您,已完成整个云盘的搭建。如果你还想搭建更多的云盘,与更多的设备同步的话,继续添加远程设备和共享文件夹就可以了。

我是几昆虫,一个追求终身成长的努力者。感谢您完整阅读这篇文章,期待与你的思想相遇。

上一篇下一篇

猜你喜欢

热点阅读