如何用any-sync-bundle快速搭建自己的Anytype私有同步服务器:Docker 5步完整教程

发布时间:2026/11/2 1:40:01
如何用any-sync-bundle快速搭建自己的Anytype私有同步服务器:Docker 5步完整教程

【免费下载链接】any-sync-bundle

Anytype Bundle: Prepackaged All-in-One Self-Hosting

项目地址:https://gitcode.com/gh_mirrors/an/any-sync-bundle
点击查看免费下载

any-sync-bundle 是一个预打包的 All-in-One 自托管服务器,专为 Anytype——这款本地优先、注重隐私的 Notion 替代品——而生。它把官方 Anytype 同步体系的全部模块合并成单个二进制,号称"Any Sync 界的 K3s",让你用1 条命令、60 秒即可私有部署同步服务器,全程零配置。

本文面向新手,通过 5 步带你完成部署:

  • ✅ 单命令启动,自带 MongoDB 和 Redis,无需额外安装
  • ✅ 只需开放2 个端口:TCP 33010(DRPC 协议)、UDP 33020(QUIC 协议)
  • ✅ 资源占用轻,适合 HomeLab、树莓派等低配环境
  • ✅ 支持本地存储或 S3(MinIO/AWS S3/R2 等)存储

⚠️ 本项目适合追求简单的自托管玩家;如果你需要多节点高可用集群或水平扩展,官方 Anytype 架构会是更好的选择。

部署前准备:环境要求与端口说明

开始之前,请确认以下条件:

项目要求
系统任意支持 Docker 的 Linux / macOS / Windows
Docker已安装 Docker(建议含 Docker Compose v2)
端口TCP33010与 UDP33020未被占用
资源低配机器即可,容器内置 MongoDB + Redis

部署方式怎么选?仓库提供了现成的 Compose 文件,按需二选一:

方式文件特点
一体化(推荐新手)compose.aio.yml单容器,MongoDB/Redis 已内置
S3 存储方案compose.s3.yml额外启动 MinIO,文件存 S3
外部依赖方案compose.external.yml独立 MongoDB/Redis 容器,更灵活
反向代理方案compose.traefik.yml通过 Traefik 代理 TCP/UDP 流量

第 1 步:获取部署文件

你可以直接从仓库获取 compose.aio.yml 等文件,也可以只记一条docker run命令。推荐新手使用 Compose 文件,因为服务重启策略、优雅停机时长(2 分钟)都已配好,避免手动参数出错。

💡 镜像版本命名规则为v[版本号]-[Anytype 兼容日期],例如1.6.0-2026-08-18。建议显式指定版本号,便于日后平滑升级。

第 2 步:配置外部地址(最关键的一步)

客户端是通过"外部地址"找到你的服务器的,这是唯一必填的配置项:

# 编辑 compose.aio.yml,修改这一行 ANY_SYNC_BUNDLE_INIT_EXTERNAL_ADDRS: "192.168.100.9"

请按场景填写(多个值用英文逗号分隔):

  • 🏠仅局域网访问:填服务器本地 IP,如192.168.1.100
  • 🌍远程访问:填公网域名,如sync.example.com
  • 🔄两者都要:sync.example.com,192.168.1.100

⚠️ 该地址在首次启动后会被固化进./data/bundle-config.yml,后续启动不再读取环境变量。填错了也不用慌,见文末故障排查。

第 3 步:一键启动服务器

一切就绪,执行启动命令:

docker compose -f compose.aio.yml up -d

也可以用一条docker run命令达到同样效果:

docker run -d \ -e ANY_SYNC_BUNDLE_INIT_EXTERNAL_ADDRS="192.168.100.9" \ -p 33010:33010 \ -p 33020:33020/udp \ -v $(pwd)/data:/data \ --stop-timeout 120 \ --restart unless-stopped \ ghcr.io/grishy/any-sync-bundle:1.6.0-2026-08-18

启动后服务按coordinator → consensus → filenode → sync的顺序依次拉起,共享同一套网络组件(实现细节见 lightnode/anynodes.go)。此时./data/目录下会生成两个关键文件:

文件用途需要备份吗
./data/bundle-config.yml服务配置 + 密钥(含敏感信息)🔴 必须
./data/client-config.yml客户端配置(每次启动自动重新生成)🟢 不用

第 4 步:验证服务状态

检查容器日志,确认四个服务全部就绪且无报错:

docker logs -f any-sync-bundle-aio

再用一条命令验证端口连通性(把 IP 换成你的服务器地址):

nc -zv <你的服务器IP> 33010

看到succeeded即说明 TCP 33010 已正常监听。别忘了检查防火墙放行了TCP 33010和UDP 33020两个端口。

第 5 步:在 Anytype 客户端导入配置

服务器就绪后,最后一步是把配置"喂"给客户端:

cat ./data/client-config.yml

该文件由 config/client.go 每次启动时自动生成,内容包含你的服务器节点 ID、PeerID 及quic://与 TCP 双地址。把它复制粘贴到任意一台 Anytype 应用(桌面端/移动端均可)的Settings → Data → Sync and Backup → Self-hosted导入入口中。

每台设备都要导入一次,但都使用同一份client-config.yml内容。配置完成后,你的所有笔记将同步到私有服务器,彻底告别第三方云。

进阶玩法:S3 存储与远程访问

使用 MinIO 作为 S3 文件存储

默认使用内置 BadgerDB 本地存储,零配置即可用。若想把文件数据存到 S3(支持 AWS S3、MinIO、Cloudflare R2、Backblaze B2 等),使用 compose.s3.yml:

docker compose -f compose.s3.yml up -d # MinIO 控制台: http://localhost:9001 (minioadmin/minioadmin)

该文件会自动创建anytype-data存储桶,核心环境变量包括ANY_SYNC_BUNDLE_INIT_S3_BUCKET、ANY_SYNC_BUNDLE_INIT_S3_ENDPOINT、ANY_SYNC_BUNDLE_INIT_S3_FORCE_PATH_STYLE(MinIO 必需设为true)及标准 AWS 凭据变量。

用 Traefik 代理远程访问

服务器没有直接暴露端口的条件时,可用 compose.traefik.yml 让 Traefik 代为转发 TCP 33010 与 UDP 33020,只需记住修改ANY_SYNC_BUNDLE_INIT_EXTERNAL_ADDRS为你的公网地址即可。

限制每个 Space 的存储配额

默认每个 Space 上限 1 TiB。想更保守?加一行环境变量(单位:字节):

# 10 GiB = 10737418240 ANY_SYNC_BUNDLE_INIT_FILENODE_DEFAULT_LIMIT: "10737418240"

备份与升级:数据安全的两条底线

备份与恢复

⚠️ 务必在干净停止服务后再打包(日志出现bundle_shutdown_complete再操作):

docker compose -f compose.aio.yml stop tar --exclude='./data/mongo/diagnostic.data' \ -czf backup-$(date +%Y%m%d-%H%M%S).tar.gz ./data/

恢复只需反向解压:

tar -xzf backup-YYYYMMDD-HHMMSS.tar.gz

版本升级流程

  1. 先备份./data/目录
  2. 停止当前服务
  3. docker pull拉取新版本镜像
  4. 重新启动服务
  5. 检查日志与版本号

升级失败?回滚到备份并使用旧版本即可。1.x 系列之间配置格式保持可读,跨小版本升级是平滑的(转换逻辑见 config/convert.go)。

故障排查:常见问题的快速解法

症状原因解法
客户端连不上服务器外部地址填错 / 防火墙未放行核对ANY_SYNC_BUNDLE_INIT_EXTERNAL_ADDRS;放行 TCP 33010 + UDP 33020
首次启动填错了地址配置已固化编辑./data/bundle-config.yml的externalAddr:列表,重启服务(会重新生成client-config.yml)
MongoDB 报 "illegal instruction"CPU 不支持 AVX 指令(常见于老款 Celeron/Atom)改用:minimal镜像 + 外部 MongoDB 4.4(compose.external.yml 中已有现成注释块)

调试时可开启详细日志:设置ANY_SYNC_BUNDLE_DEBUG=true或--log-level debug启动。

常见问题 FAQ

Q:普通用户真的能自己搭吗?能。全程只需要 Docker + 改一行环境变量 + 粘一份配置文件,不需要了解 MongoDB 或 Redis 的任何细节。

Q:数据会被服务商看到吗?不会。any-sync-bundle 是完全私有部署的同步服务器,数据只存在你自己的磁盘(或你自管的 S3)上,这正是 Anytype"本地优先"理念的落点。

Q:为什么只需要两个端口?所有服务(协调、共识、文件、同步)共享同一套网络栈,仅通过 TCP 33010 与 UDP 33020 对外提供服务,这也是它轻量易维护的原因。

Q:想参与源码开发?仓库使用 Go 编写,构建脚本见 Dockerfile,开发环境可用 flake.nix 一键拉起;完整开发指南见 CONTRIBUTING.md,架构约束见 AGENTS.md。

按照以上 5 步,你现在已经拥有了一台完全属于自己、60 秒即可上线的 Anytype 私有同步服务器 🎉

【免费下载链接】any-sync-bundle

Anytype Bundle: Prepackaged All-in-One Self-Hosting

项目地址:https://gitcode.com/gh_mirrors/an/any-sync-bundle
点击查看免费下载
上一篇:AI Agent 技能终极指南:用 Skills for Real Engineers 把模糊想法拷问成可交付决策
下一篇:libcurl 的 CURLOPT_STREAM_DEPENDS_E 详解:HTTP/2 流独占依赖语义与废弃历程

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考