安装前配置
配置监听地址
配置文件默认监听地址为 127.0.0.1,意味着只接受本机连接。需要通过 override 文件覆盖环境变量,修改为外部可路由的主机地址。
运行以下命令,然后输入服务器的地址(多个地址以空格分隔,如 192.168.1.100 192.168.1.101)。输入完成后,按回车键确认。
rm -f .env.override
read -p "Enter your host addresses (separated by spaces): " && echo EXTERNAL_LISTEN_HOSTS=$REPLY >> .env.override
[!TIP]
根据个人推测和实践,可以填写 DDNS 域名,但并非官方明确支持的做法。具体实现需要跟踪项目源码,且可能在后续更新中变更,暂不讨论。
[!NOTE]
以下命令将监听地址修改为
0.0.0.0(IPv4)和::(IPv6),以接受所有连接。rm -f .env.override echo EXTERNAL_LISTEN_HOSTS=0.0.0.0 :: >> .env.override需要留意的是,这并非官方推荐的做法,而是根据个人的推测和实践采取的方式。使用该方案需要对稍后生成的客户端配置文件
client.yml 进行额外的修改,配置客户端可以访问的地址。
参考来源
Configuration · anyproto/any-sync-dockercompose Wiki (github.com)
兼容性踩坑
AnySync 依赖的 MongoDB 组件,其 5.0 以上版本要求 CPU 支持 AVX 指令集。确认机器是否兼容,以防运行失败。
使用该命令检测机器是否支持 AVX 指令集。输出 Yes 为支持,No 为不支持。
grep avx /proc/cpuinfo > /dev/null && echo "Yes, AVX instructions are supported." || echo "No, AVX instructions are not supported."
[!WARNING]
如果支持,则跳过这一部分。否则需要继续执行以下操作。
1. 指定 MongoDB 版本(按需)
指定为 4.4 版本,即最后一个不依赖 AVX 指令集的版本。当前最后一个 4.4 版本为 4.4.29,使用 4.4 可重定向到相同版本。
echo MONGO_VERSION=4.4 >> .env.override
[!NOTE]
可以使用旧的 gcc 目标微架构从源码构建 MongoDB,参考:
2. 修改 Docker 健康检查指令(按需)
5.0 以上版本 MongoDB Shell 发生了变动。由于指定了 4.4 版本,需要通过 override 文件覆盖 docker-compose.yml,将负责初始化并监视副本集状态的 mongosh 命令修改为兼容的 mongo 命令。
rm -f docker-compose.override.yml
tee -a docker-compose.override.yml <<'EOF'
services:
mongo-1:
healthcheck:
test: echo "rs.initiate({_id:'${MONGO_REPLICA_SET}',members:[{_id:0,host:\"mongo-1:${MONGO_1_PORT}\"}]}).ok || rs.status().ok" | mongo --port ${MONGO_1_PORT} --quiet
EOF
参考来源
MongoDB 5.0 · Issue #29 · anyproto/any-sync-dockercompose · GitHub
自定义需求
通常可以跳过该步骤。 如果有自定义需求(例如希望使用现有的 S3 服务,而不是在本地新建一个 MinIO 实例作为文件节点),可以通过创建并修改 .env.override 和 docker-compose.override.yml 的内容来实现。参照 .env.default 和 docker-compose.yml 的内容,复制需要覆盖的条目到 override 文件内,然后在 override 文件中作出改动。
参考来源
any-sync-dockercompose/.env.default at main · anyproto/any-sync-dockercompose (github.com)
any-sync-dockercompose/docker-compose.yml at main · anyproto/any-sync-dockercompose · GitHub
Configuration · anyproto/any-sync-dockercompose Wiki (github.com)