FarBox 2.0 的坑由于开源,又只有 Hepo 一人维护,自己部署+运维还是有许多许多的小坑。在此记录一下,对于碰到这类问题的朋友希望有所帮助。
- Client 端的同步
对于不使用 Metion 客户端的用户,唯一的同步办法基本只有 python 脚本。当然也可以使用网页版的文件管理器直接写文章,但备份很成问题,需要将云端的文件同步回来,还不如本地写好,用脚本同步到云端。
这个同步用的脚本很有讲究,由于 farbox_bucket
模块只兼容 python 2.7 版本,因此建议使用 pipenv 建立虚拟环境。
- 【重要】转到 root 用户进行安装。如果使用普通用户,在后期同步可能遇到权限问题。
pipenv --python 2.7
建立 python 2.7 的虚拟环境- 【重要】修改用户目录
/root
下的 Pipfile 文件,将 pip 源从默认源改为清华或阿里。farbox_bucket
里面会用到大量第三方依赖,尽管只是一个同步的客户端还需要如此多的依赖我也是没想到。这些依赖如果使用默认源,在当前国内网速下一次搞定非常困难(深圳电信 500M 光纤),因此尽早修改为妙。同时注意一下 Pipfile 最下面虚拟环境所使用的 python 版本是不是 2.7 。 pipenv install farbox_bucket
安装需要一段时间,其间也有些莫名其妙的警告(比如告知 2.7 已经要淘汰了之类的),装好之后用pipenv run python
进去 import 这个模块试一下,确认安装正常。- 接下来就可以使用 官方文档 撰写脚本了。
之所以第一步需要 root 用户,是因为在上传前,脚本会首先在本地的 .sync
目录下生成和云端一致的 bucket,再上传云端。本地创建 bucket 很神奇的需要 root 权限,如果使用普通用户,就会出现无法创建本地 bucket 因此无法同步的问题……
- crontab 定时脚本
这个问题不是 FarBox 的问题,是为了达到类似 Dropbox 自动同步的效果而自己搭建的机制。
Docker 创建的原生 Ubuntu 无法自定义开机启动!!!读起来好像是 docker 机制的问题,无法与 OS 的启动机制兼容。因此 SSHD 和 CRON 这两个基础服务都只能进入 docker 镜像启动,这种为了启动 cron 而不得不再写个 cron 任务的可笑行为用了一段时间后(因为无法永远不关主机,尽管搭在 NAS 上)只好放弃了。自己在 NAS 上搭了个完整虚拟机(QEMU)。
在完整虚拟机上搭 Ubuntu,再在 cron 里轮询文件夹变化,如果有变化用 pipenv run
拉起来同步脚本,将内容同步到云端。经测试,星际蜗牛版黑群晖(J3455+4G)的性能勉强够用,此刻很想买个 DS920+...