本文以群晖为例,其它类型的 NAS 本质上是一样的,都是通过 Docker 进行 FarBox 的部署。不同 NAS 的硬件不同,比如基于 ARM 处理器的,运行 Docker 估计会困难很多甚至可行性很低,具体请自行研究。
如果是 VPS,基本的逻辑也是一样的,会在文末做简单介绍。
.Archive
目录下,创建一定数量的历史版本 (小文件的最大历史版本数为 150)。
在 NAS 上部署 FarBox 的客户端后,每隔 1 分钟,会自动完成同步。我们只要挂载某个文件夹作为网站文件夹,那么:
在群晖(NAS) 的 Docker 套件中,下载 farbox_client
的镜像。
在运行这个镜像前,选择『高级设置』,挂载一个文件夹,路径为 『/mt/data』。建议创建一个『共享文件夹』,然后在后面直接创建一个子文件夹,作为网站的文件夹。
仍然是镜像运行前的『高级设置』里。
设定三个环境变量,node 就是自己 FarBox 的节点 URL,root 就是刚才挂载的 /mt/data,private_key 是自己 Bucket 的私钥。
注意: 此时私钥是处于当前 NAS 公开的状态,比如运行 docker inspect <container>
都是能看到的,请确保自己的 NAS 是不对外公开的。
群晖有内置的套件Cloud Sync可以同步 Google Drive、Dropbox、OneDrive 等云端,再配合上面在 NAS 部署的 FarBox 客户端,就基本能实现,数据自动通过 Dropbox 等云端同步到 FarBox 上 Bucket (网站) 的机制。
如果 FarBox 上的 Bucket 绑定了微信等输入口子,那么文本、图片更新后也会同步到 Dropbox 等云端。
Resillio、微力同步 这些工具,相当于实现一个私有的 Dropbox、百度网盘。因为国内网络、内网穿透等原因,简单以微力同步作为例子介绍。
注意: 像 iOS 系统限制比较多的,微力同步似乎并不能在后台驻停、实时进行同步,一般需要你比如使用 Metion 写完文章后,然后再打开 微力同步 这个 App 等它完成同步。
如果是在 VPS 上部署,基本的逻辑也是一样的,就是运行一个 Docker 的容器。
参考命令: docker run -d --name farbox_client -v 本地site存储路径:/mt/data -e node="节点URL" -e root="/mt/data" -e private_key="私钥" hepochen/farbox_client:latest
本质上,本 Docker Container 运行的命令是 /usr/bin/python -m farbox_bucket.client.run
,也就是对应 FarBox Bucket 开源的源码,其路径位于 farbox_bcuket/client/run.py
。
此类部署对自己的技术有不低的要求,也可能会遇到环境问题,也可能是需要了解 Linux 上的一些基本逻辑,也可能是要先理解『客户端 client side』和『服务端 server side』的区别,也可能需要基本非常理解 Docker 挂载文件夹的基础逻辑……
如果遇到问题,折腾并且学习,自己学、自己查;如果是 farbox_bcuket/client/run.py
的问题,欢迎在 Github 上提 request 过来,感谢。
已经安装了微力同步,请问应该把哪个文件夹设为跟电脑同步的文件夹。
@Unee Wang, 这很难回答,都是自己决定的。应该说,你自己选定了一个文件夹,它在微力同步中可以被访问到,同时,也挂载到 FarBox 的客户端中作为工作目录。
使用 client 在群晖上部署完毕,好用。
和之前手工用途 python 脚本同步,好像看不到 template 文件夹。如果要修改 jade 模板,应该去哪找源文件呢?
@wellsleep 我的意思是,以前我用手工 python 脚本同步,很少会从服务器上 sync_from,所以 template 文件夹可能一直就在本地。
现在用 client 同步客户端,数据刚开始就是从服务器上同步回来,所以似乎没有抓到,导致现在 client 的文件夹里就没有办法改模板...