本文以群晖为例,其它类型的 NAS 本质上是一样的,都是通过 Docker 进行 FarBox 的部署。不同 NAS 的硬件不同,比如基于 ARM 处理器的,运行 Docker 估计会困难很多甚至可行性很低,具体请自行研究。
怎么在套间中心安装Docker不做赘述,在 Docker 这个套件界面中,注册表里搜索farbox,下载如图所示的镜像:
然后,启动镜像(映像)
在 Ubuntu 单独部署 FarBox 的时候,虽然通过 xserver 这个小软件直接跑 Docker,但本质上是运行了 /home/run/farbox/run.sh
里的内容,这个文件内容参考如下:
#!/bin/bash
docker run -d \
-p 7788:80 -p 443:443 -p 80:80 \
-v /home/run/$name$/configs:/mt/web/configs \
-v /data/log/$name$:/mt/web/log \
-v /data/$name$:/mt/web/data \
-v /data/$name$_ssdb:/mt/ssdb/data \
-v /static/$name$:/mt/web/static \
-v /log/docker:/mt/docker/log \
hepochen/farbox_bucket:latest
建议群晖内新增一个共享文件夹来存储 FarBox 相关的数据、日志、配置等文件夹。
FarBox 的运行,需要一些配置文件,也就是最终 Docker 容器内要读取的 /mt/web/configs 路径,这里的内容可以从 https://github.com/hepochen/FarBox/tree/master/farbox_bucket/deploy/run/configs 获得,也可以直接下载 https://doc.farbox.org/_attachments/2021-04-21/configs.zip 解压处理。
基于 NAS 的特性,我们需要做一些额外的设置,但仅供参考:
1. 找到 supervisord.conf, 把 ElasticSearch 相关的删除 (它只与全文搜索有关,关闭后可以节省大量的内容),大概内容如下:
[program:elasticsearch]
;environment = JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
command = /elasticsearch/bin/elasticsearch
directory = /elasticsearch/
user = es
autostart = true
autorestart = true
redirect_stderr = true
stdout_logfile = /mt/web/log/elasticsearch.log
3, 重启 Docker 的容器。
最后,访问 <http://局域网内 ip:7788>
即可,其中 7788 是前面 Docker 设置时候做的端口映射。
此时,一个全新的 FarBox 处于运行的状态,建立的第一个 Bucket 会是管理员 Bucket,建议使用自己老的私钥,而不是页面默认提供的新私钥,以保持一致性。
动态 IP 对应 DNS 的实现,也可以参考 https://github.com/cuteribs/ribsnetwork/tree/master/ddns
假设 A 节点,是部署在某个 VPS、服务器上的 FarBox 节点;此时有个 B 节点,是部署在 NAS 上的。
首先,创造一个 Token (就是自己想的随机字符串),作为 A、B 节点同步需要的密码。
在 A 的 FarBox 系统设置中,填入 Server Sync Token。
在 B (NSA 节点) FarBox 系统设置中,,填入 Server Sync Token 以及 Server Sync Nodes (就是 A 的节点URL),并且将 Backend Sync 选择为是。
之后,B 节点 FarBox 的后台任务,每隔 10 分钟会从 A 节点同步数据。
注意:
新的 record
替换 旧的 record
来保持数据一致性,它们会同时存在,相当于多个历史版本的存在 (但目前并未针对这些存储的数据有特别的呈现方式)。
有nas,可以试试,等教程。。。
@渡 我的天,我还正在写……
@Hepo 哈哈,正好赶上,新问题,我新建的网站绑定域名时txt记录值不显示了,刚刚升级了。
@渡 你的 Bucket 应该没有处于登录的状态……
@Hepo 哦哦,搞定了,谢谢大佬!搞糊涂了,原来真的没登录,还有show模版功能多久能支持啊!就等这功能了。。。哈哈
@渡 『show 模板』是指什么?
直接导入configs设置,启动成功。加上移动端的 Metion 真的可以随时随地写且同步。谢海波老师。
NAS 备份 FarBox 的节点是为了异地灾备或者负载均衡嘛?
刚开始没有布在 NAS 里而选择 VPS 就是感觉映射文件夹可能会很复杂...
@wellsleep 算是异地灾备吧,主要是快速迁移。以防万一真的服务节点坏了,数据彻底遗失。
FarBox 的单条数据从逻辑上来说,是没有严格的 update 逻辑的,都是 insert,object_id 永续自增,所以单纯做节点的同步还是容易的。
之前有 bug,如果已经部署了, 镜像更新一下再重新部署一次;或者直接 update farbox_bucket 也是可以的。