一个自由职业程序员的树莓派:私有网盘篇
阅读本篇之前,建议您先了解 [基础准备篇] 的内容。
《一个自由职业程序员的树莓派》系列文章包括:
不知道你有没有跟我一样的困惑,每天总有很多需要处理的工作,背着个电脑进进出出,从家里到公司上班,下班后再回家,总感觉自己的身体和大脑没得到一丝闲暇。所以我分享给大家的想法很简单,就是想通过打造一个自己的个人云网盘,在家、在公司或随时随地,都可以同步自己的工作成果、照片、文档等。
作为未来工作的自由职业程序员,我们大量的电子书、技术学习视频、各项目的设计、开发文档,都需要妥善的保存,随时随地获取和同步更新。而不仅仅是像第三方的云网盘那样只能上传下载,容量稍微想要大一点,还得包年包月的不停缴费。
而我们自己有了这样的免费自主控制的私有网盘后,就不用再缴费了。当然,放在公司的电脑,也就不用再天天背着上下班了。
下面,我们就开始来亲手打造吧。
- 准备工作
- 安装 Syncthing 同步工具
- 配置树莓派设备端同步目录
- 配置电脑端同步目录
准备工作
基本的准备工作完成后,就可以开始最主要的搭建云盘了。在动手之前,先规划一下自己的云盘方案。针对 我们平常的使用,一般来说,可以按照存储工作资料、个人资料、公共资源或其它兴趣专题资料分别创建几个云盘。例如:
- company - 工作资料
- my - 个人资料
- resource - 公共资源
- works - 作品
为了将云同步的东西与其它分开,我是将这些数据统一放在 [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 系统。
- Windows:SyncTrayzor
- macOS:syncthing-macos
- Linux:Syncthing-GTK
安装好后,与树莓派是类似的,打开浏览器,访问控制台界面:
http://localhost:8384/
然后,点击 [添加远程设备],先将树莓派添加到里面来。因为树莓派和桌面电脑在同一个局域网内,通常是会自动发现树莓派的设备 ID,点选确定即可。
如果因为网络特殊,也可以在上一步树莓派的控制台网页,其右上角的操作下拉菜单,点击 [显示 ID] 来获取树莓派设备 ID,并填入要添加的远程设备 ID,同时取个容易记住的设备名,比如:树莓派 raspi。
这时,打开树莓派的控制台网页,将会收到共享请求,确认 [添加设备] 即可。
接下来,就在展开 works,点击 [选项] 按钮,切换至共享标签页,勾选上桌面电脑设备,保存即可发起共享文件夹的请求。
共享操作是双向的,随便哪边发起共享都是一样的。
再次打开桌面电脑的控制台网页,将会收到共享过来的请求,以进行确认添加。
点击 [添加] ,选择电脑本地的文件夹路径,保存即可完成云盘同步设备。
在电脑上同步的文件夹,我就没有再使用回收站式版本控制了,有一边支持就行。
现在,你就可以在电脑上存放你的文档,Syncthing 将会自动帮你把文件同步到树莓派的移动硬盘上了。两边都有同样的文档,就不用那么担心电脑或移动硬盘某一边坏了的情况了。
恭喜您,已完成整个云盘的搭建。如果你还想搭建更多的云盘,与更多的设备同步的话,继续添加远程设备和共享文件夹就可以了。
我是几昆虫,一个追求终身成长的努力者。感谢您完整阅读这篇文章,期待与你的思想相遇。