🚀 使用 Docker Compose 部署 xBrowserSync(私有书签同步服务)
🚀 使用 Docker Compose 部署 xBrowserSync
xBrowserSync 是一个开源的、可自行架设的浏览器书签同步工具。它允许你在不同设备和浏览器之间安全地同步书签,而无需依赖第三方商业服务,确保你的书签数据掌握在自己手中。
下面将详细介绍如何使用 Docker Compose 部署 xBrowserSync。
📦 项目简介
xBrowserSync 的核心特点可以概括为下表:
| 特点类别 | 具体说明 |
|---|---|
| 核心功能 | 安全同步:书签数据在同步前会在你的设备上进行加密,服务器端存储的是加密后的数据,有效保护隐私。跨平台与跨浏览器:支持多种浏览器(如 Chrome、Firefox)以及移动设备。开源与自托管:代码开源,允许用户自行审查和部署,不依赖于任何中心化的商业服务。 |
| 部署与集成 | API 驱动:其核心是一个提供同步功能的 RESTful API 服务。容器化部署:官方提供了 Docker 镜像,便于通过 Docker Compose 快速部署。 |
| 数据管理 | 每个同步网络由一个唯一的 Sync ID 标识。你可以选择将书签数据同步到官方的公共服务器,或者像本教程一样,部署自己的私有服务器。 |
自建优势 * 数据完全自主:所有书签数据存储在你自己的服务器和数据库中,无需担心隐私泄露或服务商停止服务的风险。 * 定制化:你可以完全控制服务版本和配置。 * 学习与实践:这是一个很好的 Docker Compose 和微服务架构的实践案例。
📦 项目简介2
xBrowserSync 是一款开源的 跨浏览器书签同步工具,核心功能是将不同浏览器(Chrome、Firefox、Edge 等)的书签统一同步到私有服务器,避免依赖第三方书签同步服务(如 Chrome 同步),保障书签数据隐私与自主可控。
本次部署为 完整生产级方案,包含三大核心组件,协同实现书签同步功能:
| 组件名称 | 作用说明 |
|---|---|
db(MongoDB) |
存储书签数据、用户同步密钥等核心信息,采用数据卷持久化,避免数据丢失。 |
api(xBrowserSync API) |
处理书签同步逻辑(上传 / 下载 / 更新书签),提供健康检查接口,依赖 MongoDB 运行。 |
reverse-proxy(Caddy) |
反向代理 API 服务,自动申请并配置 HTTPS 证书(Let’s Encrypt),无需手动管理证书。 |
核心特点
- 隐私优先:书签数据存储在私有服务器,不经过第三方,避免数据泄露风险;
- 自动 HTTPS:基于 Caddy 反向代理,自动获取并续期 Let’s Encrypt 证书,访问更安全;
- 跨浏览器兼容:支持 Chrome、Firefox、Edge、Safari 等主流浏览器(需安装 xBrowserSync 插件);
- 数据持久化:MongoDB 数据与 Caddy 配置均通过 Docker 卷存储,容器删除后数据不丢失;
- 健康检查:API 服务内置健康检查,确保服务异常时可及时发现;
- 轻量低耗:整体资源占用低(1 核 1GB 内存即可稳定运行),适合个人服务器或 NAS 部署。
📋 部署前准备
-
环境要求 确保你的服务器已安装
Docker和Docker Compose。你可以通过在终端执行docker -v和docker compose version来验证。 -
资源检查
- 端口:确认宿主机上的 80 和 443 端口未被其他程序(如 Nginx、Apache)占用。如果已被占用,你需要修改
docker-compose.yml中reverse-proxy服务的端口映射,例如将"80:80"改为"8080:80"。 - 域名与 DNS:准备一个域名(例如示例中的
xbrowsersync.clxr-25.top),并将其 DNS A 记录解析到你的服务器 IP 地址。这是 Caddy 服务器自动申请 SSL 证书所必需的。 - 磁盘空间与权限:确保部署目录有足够的空间,并且当前用户对部署目录有读写权限,以便创建和挂载 Docker 卷。
- 端口:确认宿主机上的 80 和 443 端口未被其他程序(如 Nginx、Apache)占用。如果已被占用,你需要修改
3. 关键依赖准备
(1)域名解析(必须!)
Caddy 自动 HTTPS 依赖公网域名,需将 .env 中的 API_HOSTNAME(如 xbrowsersync.clxr-25.top)解析到服务器公网 IP:
- 登录你的域名服务商(如阿里云、腾讯云);
- 进入 “DNS 解析” 页面,添加一条 A 记录:
- 主机记录:按需填写(如
xbrowsersync,对应域名xbrowsersync.clxr-25.top); - 记录值:填写服务器公网 IP;
- TTL:默认 10 分钟(解析生效后再部署服务)。
- 主机记录:按需填写(如
(2)端口开放
需开放 80(HTTP,Caddy 用于验证域名并申请证书)和 443(HTTPS,书签同步服务端口):
- Linux(UFW 防火墙):
sudo ufw allow 80/tcp # Caddy 证书申请
sudo ufw allow 443/tcp # HTTPS 服务
- 云服务器:在 “安全组” 中添加 “TCP 80/443 入站规则”。
⚙️ 配置 Docker Compose
1.创建项目目录
创建一个目录(如 xBrowserSync)用于存放所有相关文件,并进入该目录。
mkdir xBrowserSync && cd xBrowserSync
2.创建环境变量文件 (.env)
将用户提供的环境变量内容保存到新创建的 .env 文件中。此文件为 docker-compose.yml 中的变量提供值,是配置的核心。
# 公网域名(已解析到服务器IP,需替换为你的域名)
API_HOSTNAME=xbrowsersync.clxr-25.top
# MongoDB 数据库名(可自定义,建议保留默认)
DB_NAME=admino
# MongoDB 密码(必须修改!默认密码不安全,建议含字母+数字+符号,如 XBS_DB@2024!)
DB_PASSWORD=adminadmino
# MongoDB 用户名(可自定义,建议与 DB_NAME 对应)
DB_USERNAME=xbsdb
# Windows 兼容配置(Linux 环境无需修改)
COMPOSE_CONVERT_WINDOWS_PATHS=1
**关键配置说明**:
* **`API_HOSTNAME`**:这是最重要的配置项,必须是你可以完全控制的域名。Caddy 将自动为该域名申请并配置 SSL 证书。
* **数据库凭据**:`DB_PASSWORD` 建议修改为更复杂的强密码。`DB_NAME` 和 `DB_USERNAME` 可按需修改。
* 在 `.env` 文件所在目录执行以下命令,确保文件权限正确:
chmod 600 .env # 限制文件权限,保护敏感信息
3.创建 docker-compose.yml 文件
将用户提供的配置内容保存到新创建的 docker-compose.yml 文件中。此配置定义了三个服务:db (MongoDB)、api (xBrowserSync API) 和 reverse-proxy (Caddy)。
#version: "3.7"
services:
# 1. MongoDB 数据库服务
db:
image: "mongo:4.4.4" #27017/tcp # 固定 MongoDB 版本,确保兼容性
container_name: "xbs-db" # 容器名,便于管理
environment:
# MongoDB 初始化配置(与 .env 变量对应)
- "MONGO_INITDB_DATABASE=$DB_NAME"
- "MONGO_INITDB_ROOT_PASSWORD=$DB_PASSWORD"
- "MONGO_INITDB_ROOT_USERNAME=$DB_USERNAME"
- "XBS_DB_NAME=$DB_NAME"
- "XBS_DB_PASSWORD=$DB_PASSWORD"
- "XBS_DB_USERNAME=$DB_USERNAME"
restart: "unless-stopped" # 容器异常退出后自动重启(手动停止不重启)
volumes:
- "xbs-db-data:/data/db" # 数据库数据持久化(核心卷,不可删除)
- "xbs-db-backups:/data/backups" # 数据库备份目录(可选)
- "./mongoconfig.js:/docker-entrypoint-initdb.d/mongoconfig.js" # 初始化脚本挂载
# 2. xBrowserSync API 服务
api:
image: "xbrowsersync/api:1.1.13" #8080/tcp # 官方 API 镜像(与 Dockerfile 版本一致)
# 若需自定义构建 API 镜像,注释上方 image,启用下方 build
# build: .
container_name: "xbs-api"
depends_on:
- "db" # 依赖 DB 服务启动后再启动 API
environment:
# API 连接 MongoDB 的配置(与 .env 变量对应)
- "XBROWSERSYNC_DB_PWD=$DB_PASSWORD"
- "XBROWSERSYNC_DB_USER=$DB_USERNAME"
healthcheck:
# 健康检查配置(调用 healthcheck.js)
test: [ "CMD", "node", "/usr/src/api/healthcheck.js" ]
interval: "1m" # 每 1 分钟检查一次
timeout: "10s" # 超时时间 10 秒
retries: "5" # 失败 5 次后标记服务异常
start_period: "30s" # 服务启动 30 秒后再开始检查
restart: "unless-stopped"
volumes:
- "./settings.json:/usr/src/api/config/settings.json" # API 自定义配置(可选,默认无需修改)
- "./healthcheck.js:/usr/src/api/healthcheck.js" # 健康检查脚本挂载
# 3. Caddy 反向代理服务(自动 HTTPS)
reverse-proxy:
# Caddy 命令:将域名请求转发到 API 服务(api:8080)
image: "caddy:2.3.0-alpine" # 固定 Caddy 版本,确保稳定性
container_name: "xbs-reverse-proxy"
depends_on:
- "api" # 依赖 API 服务启动后再启动反向代理
#0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 2019/tcp
command: "caddy reverse-proxy --from $API_HOSTNAME --to api:8080"
ports:
- "443:443" # HTTPS 端口映射(主机 443 → 容器 443)
- "80:80" # HTTP 端口映射(用于证书申请,不可删除)
restart: "unless-stopped"
volumes:
- "xbs-caddy-config:/config" # Caddy 配置持久化(含证书)
- "xbs-caddy-data:/data" # Caddy 数据持久化(含证书缓存)
# 定义 Docker 卷(自动创建,无需手动管理)
volumes:
xbs-caddy-config: # Caddy 配置与证书
xbs-caddy-data: # Caddy 运行数据
xbs-db-backups: # MongoDB 备份
xbs-db-data: # MongoDB 核心数据(最重要,不可删除)
**关键配置说明**:
* **服务依赖**:`api` 服务依赖于 `db`,`reverse-proxy` 服务依赖于 `api`,Docker Compose 会按此顺序启动服务。
* **数据持久化**:所有 `volumes` 确保了数据库文件、备份以及 Caddy 的配置和 SSL 证书在容器重启后不会丢失。
* **健康检查**:`api` 服务配置了健康检查,有助于 Docker 监控服务状态。
* **反向代理**:Caddy 服务器简化了配置,**自动处理 SSL 证书的申请和续期**,无需手动配置。
3.1编写 Dockerfile(API 服务构建脚本)
作用:自定义构建 xBrowserSync API 服务镜像(用户配置中 API 用现成镜像,此文件用于进阶自定义,如修改依赖版本)。
赖版本)。
FROM node:14.16.0-alpine
# 设置 API 版本(与 docker-compose.yml 中 API 镜像版本一致) # Set environment variables
ENV XBROWSERSYNC_API_VERSION 1.1.13
WORKDIR /usr/src/api
# 下载并解压 API 源码 # Download release and unpack
RUN wget -q -O release.tar.gz https://github.com/xBrowserSync/api/archive/v$XBROWSERSYNC_API_VERSION.tar.gz \
&& tar -C . -xzf release.tar.gz \
&& rm release.tar.gz \
&& mv api-$XBROWSERSYNC_API_VERSION/* . \
&& rm -rf api-$XBROWSERSYNC_API_VERSION/
# 安装生产依赖 # Install dependencies
RUN npm install --only=production
# 暴露 API 服务端口(与容器内端口一致)# Expose port and start api
EXPOSE 8080
# 启动 API 服务
CMD [ "node", "dist/api.js"]
4.(可选) 自定义配置
如果需要更精细地控制 API 行为,可以创建 settings.json 和 healthcheck.js 文件并挂载到 api 容器中。基本的健康检查文件 healthcheck.js 可以参考官方仓库的示例。对于绝大多数部署,默认配置已足够。
在上面docker-compose.yml文件定义了三个配置文件,在这里必须创建这些文件以方便服务能够正常的启动。
① 创建 mongoconfig.js(MongoDB 初始化脚本)
作用:创建 .env 中配置的数据库用户,并赋予读写权限(确保 API 能正常连接数据库)。
// 内容如下,无需修改(变量会自动匹配 .env 配置)
db.auth(process.env.MONGO_INITDB_ROOT_USERNAME, process.env.MONGO_INITDB_ROOT_PASSWORD);
// 切换到目标数据库(与 .env 中 DB_NAME 一致)
const xbsDb = db.getSiblingDB(process.env.XBS_DB_NAME);
// 创建 API 访问用户(与 .env 中 DB_USERNAME/DB_PASSWORD 一致)
xbsDb.createUser({
user: process.env.XBS_DB_USERNAME,
pwd: process.env.XBS_DB_PASSWORD,
roles: [{ role: "readWrite", db: process.env.XBS_DB_NAME }]
});
// 验证用户创建成功
print("MongoDB 用户初始化完成!");
#原件备注上
db.newsynclogs.createIndex( { "expiresAt": 1 }, { expireAfterSeconds: 0 } );
db.newsynclogs.createIndex( { "ipAddress": 1 } );
db.bookmarks.createIndex( { "lastAccessed": 1 }, { expireAfterSeconds: 21*86400 } );
② 创建 healthcheck.js(API 健康检查脚本)
作用:Caddy 反向代理依赖此脚本判断 API 服务是否正常,避免转发到异常服务。
// 内容如下,无需修改
const http = require('http');
const options = {
host: 'localhost',
port: 8080,
path: '/health',
timeout: 10000
};
const request = http.request(options, (res) => {
console.log(`健康检查状态码:${res.statusCode}`);
process.exit(res.statusCode === 200 ? 0 : 1);
});
request.on('error', (err) => {
console.log(`健康检查失败:${err.message}`);
process.exit(1);
});
request.end();
#原件备注上
const http = require('http');
const response = http.request(
{
host: '0.0.0.0',
method: 'GET',
path: '/info',
port: 8080,
timeout: 2000,
},
(res) => {
let body = '';
res.setEncoding('utf8');
res.on('data', (chunk) => {
body += chunk;
});
res.on('end', () => {
if (res.statusCode === 200) {
const payload = JSON.parse(body);
switch (payload.status) {
case 1:
case 3:
console.log('HEALTHCHECK: online');
process.exit(0);
case 2:
default:
console.log('HEALTHCHECK: offline');
}
} else {
console.log('HEALTHCHECK: offline');
}
process.exit(1);
});
}
);
response.on('error', function (err) {
console.log('HEALTHCHECK: offline');
process.exit(1);
});
response.end();
③ 创建 settings.json(设置)
作用:?
#原件备注上
{
"db": {
"host": "db"
}
}
关键配置说明(新手必知)
| 配置项 | 作用与注意事项 |
|---|---|
DB_PASSWORD(.env) |
必须修改!默认 adminadmin- 安全性极低,建议改为强密码(如 XBS@DB2024!),否则数据库可能被未授权访问。 |
mongoconfig.js 挂载 |
不可删除!缺少此文件会导致 MongoDB 未创建 API 访问用户,API 服务无法连接数据库。 |
Caddy 命令 --from $API_HOSTNAME |
必须与 .env 中 API_HOSTNAME 一致,否则无法正确申请 HTTPS 证书。 |
depends_on 依赖 |
确保服务启动顺序:db → api → reverse-proxy,避免 “依赖服务未就绪” 错误。 |
🚀 启动与验证
1.启动服务
在包含 docker-compose.yml 和 .env 文件的目录下,执行以下命令来后台启动所有服务:
docker-compose up -d
此命令会拉取镜像、创建网络和卷,并启动所有容器。
2.检查服务状态 使用以下命令查看所有容器是否正常运行:
docker-compose ps
如果所有服务的 State 栏均显示为 Up,则表明容器已成功启动。特别是 api 服务,在首次启动时可能需要一些时间进行初始化。
3.查看日志 如果某个服务启动异常,可以通过日志来排查问题:
docker-compose logs db # 查看数据库日志
docker-compose logs api # 查看 API 服务日志
docker-compose logs reverse-proxy # 查看反向代理日志
# 或者查看所有服务的日志
docker-compose logs
成功启动的日志中,Caddy 通常会显示类似 "successfully acquired certificate" 的信息,表示 SSL 证书申请成功。
4.验证服务
在浏览器中访问 https://你的域名 (例如 https://xbrowsersync.clxr-25.top)。如果看到 xBrowserSync API 的欢迎信息(可能是一个简单的 JSON 响应或提示页面),说明服务已成功部署并配置了 HTTPS。
(2)验证核心功能是否正常
① 验证 API 健康状态
执行以下命令,若返回 {"status":"ok"},说明 API 服务正常:
# 替换为你的域名(API_HOSTNAME)
curl https://xbrowsersync.clxr-25.top/health
② 验证 Caddy HTTPS 证书
打开浏览器,输入 https://你的域名(如 https://xbrowsersync.clxr-25.top):
- 地址栏显示 “小绿锁”,说明 HTTPS 证书生效;
- 页面显示
{"error":"Not found"}(正常,API 仅处理书签同步接口,根路径无页面)。
③ 验证 MongoDB 连接
进入 MongoDB 容器,确认用户已创建成功:
# 进入 MongoDB 容器
docker exec -it xbs-db mongo -u $DB_USERNAME -p $DB_PASSWORD --authenticationDatabase $DB_NAME
# 执行后若显示 "MongoDB shell version v4.4.4",说明连接成功
# 输入 exit 退出容器
🔧 基础配置与使用
-
配置浏览器扩展
- 在 Chrome Web Store 或 Firefox Add-ons 商店中安装 xBrowserSync 扩展。
- 安装后,点击扩展图标,首次使用时会提示你设置同步服务器。
- 关键步骤:在设置中,将 "Sync URL" 修改为你部署的服务地址,即
https://你的域名(例如https://xbrowsersync.clxr-25.top)。 - 之后,你可以创建一个新的同步网络(会生成一个 Sync ID),或者使用已有的 Sync ID 恢复书签。
-
管理同步网络
- 请务必妥善保管你的 Sync ID,这是你恢复书签的唯一凭证。
- 在你的所有设备上安装 xBrowserSync 扩展,并配置相同的 Sync URL 和 Sync ID,即可实现书签的跨设备同步。
🔧 基础配置与使用2
xBrowserSync 需通过 浏览器插件 连接私有服务,实现书签同步,步骤如下:
1. 安装 xBrowserSync 浏览器插件
根据你的浏览器选择安装方式:
- Chrome/Edge:在 Chrome 网上应用店搜索 “xBrowserSync”;
- Firefox:在 Firefox 附加组件商店搜索 “xBrowserSync”;
- Safari:在 App Store 下载 “xBrowserSync” 扩展。
2. 配置插件连接私有服务
- 打开 xBrowserSync 插件,点击 “开始使用”;
- 选择 “自定义服务”(默认是官方服务,需切换到私有服务);
- 输入私有服务地址:
https://你的域名(如https://xbrowsersync.clxr-25.top),点击 “验证”; - 验证通过后,点击 “创建新同步”,生成 同步密钥(务必保存!用于在其他浏览器恢复同步);
- 点击 “开始同步”,插件会自动上传当前浏览器的书签到私有服务器。
3. 多浏览器同步书签
在另一台浏览器(如 Firefox)重复上述步骤:
- 安装插件,选择 “自定义服务”,输入相同域名;
- 点击 “恢复同步”,输入之前保存的 同步密钥;
- 插件会自动下载服务器上的书签,实现多浏览器书签统一。
4. 查看同步状态与管理
在插件界面可查看:
- 同步进度(上传 / 下载的书签数量);
- 同步历史(最近同步时间、设备信息);
- 清除同步数据(如需重置,可删除服务器上的书签)。
🔄 维护与管理
1.更新服务 当有新版本发布时,可以按以下步骤更新:
# 进入项目目录
cd /path/to/your/xBrowserSync
# 拉取最新的镜像 (注意:版本号已在 docker-compose.yml 中固定,如需更新新版本,请先修改 yml 文件中的镜像标签)
docker-compose pull
# 或者直接重新构建并启动
docker-compose up -d
# 清理无用的旧镜像
docker image prune
注意:更新前,建议确保你的数据卷(Volumes)有有效的备份。
2.数据备份
* xBrowserSync 的所有书签数据都存储在 MongoDB 数据库中,而数据库数据通过 Docker 卷 xbs-db-data 持久化。
* 定期备份 Docker 卷至关重要。你可以使用 docker volume inspect xbs-db-data 查找卷在宿主机上的实际路径并进行备份,或者使用 docker exec 执行 mongodump 命令来导出数据库。
* 同样,备份 xbs-db-backups 卷也是一个好习惯。
3.服务卸载 如需卸载 xBrowserSync,在项目目录下执行:
docker-compose down
此命令会停止并移除所有容器和网络,但会保留数据卷,以便日后恢复。
如果希望彻底删除所有数据(包括数据库和配置),在上述命令后加上 -v 参数:
docker-compose down -v
警告:此操作不可逆,请确保你已备份重要数据。
🐛 常见问题排查
| 问题现象 | 可能原因与解决方案 |
|---|---|
| 容器启动失败 | 1. 检查 docker-compose.yml 和 .env 文件语法是否正确,特别是缩进和引号。2. 执行 docker-compose logs [服务名] 查看具体错误日志。 |
无法通过域名访问 (https://你的域名) |
1. 确认域名解析已正确指向服务器 IP(可使用 ping yourdomain.com 检查)。2. 检查服务器防火墙/安全组是否开放了 80 和 443 端口。 3. 查看 reverse-proxy 容器的日志,确认 SSL 证书是否申请成功。 |
| 浏览器扩展无法连接服务器 | 1. 在扩展设置中检查 "Sync URL" 是否完全正确,确保是 https:// 开头且没有多余的斜杠或空格。2. 确认 api 和 reverse-proxy 容器运行正常。3. 检查 Caddy 容器的日志,看是否有错误信息。 |
| 健康检查失败 | 1. api 服务可能仍在启动初始化中,请等待片刻。2. 检查 api 容器与 db 容器的网络连接是否正常,确认数据库凭据是否正确。 |
| 书签同步失败 | 1. 在所有设备上确认使用的是相同的 Sync ID 和 Sync URL。 2. 检查网络连接是否稳定。 |
希望这篇教程能帮助你顺利搭建属于自己的 xBrowserSync 书签同步服务,享受安全、跨设备的书签同步体验!如果在部署和使用过程中遇到更多问题,xBrowserSync 的官方 GitHub 仓库是寻求帮助和查阅文档的好去处。
🐛 常见问题排查2
1. Caddy 证书申请失败(日志显示 “acme: authorization failed”)
-
原因 1:域名未解析到服务器 IP,或解析未生效。解决:在服务器执行
ping $API_HOSTNAME,确认返回服务器 IP;若未生效,等待 DNS 解析刷新(通常 10-30 分钟)。 -
原因 2:80 端口被占用(Caddy 需 80 端口验证域名所有权)。解决:停止占用 80 端口的服务(如 Nginx):
sudo fuser -k 80/tcp,重启 Caddy:docker compose restart xbs-reverse-proxy。 -
原因 3:服务器在国内,Let’s Encrypt 证书申请被屏蔽。解决:为 Caddy 配置国内 CA 证书(如阿里云 CA),或使用代理服务器。
2. API 服务无法连接 MongoDB(日志显示 “Authentication failed”)
- 原因 1:
.env中DB_PASSWORD与mongoconfig.js初始化的密码不一致。解决:确保.env中DB_PASSWORD与mongoconfig.js中process.env.XBS_DB_PASSWORD一致,重建 MongoDB 数据卷:
# 停止服务并删除旧数据卷(会丢失书签数据,需先备份)
docker compose down -v
# 重新启动服务,初始化新数据卷
docker compose up -d
- 原因 2:MongoDB 初始化脚本未执行(
mongoconfig.js挂载路径错误)。解决:确认docker-compose.yml中mongoconfig.js挂载路径为./mongoconfig.js:/docker-entrypoint-initdb.d/mongoconfig.js,路径错误需修正后重启。
3. 浏览器插件无法连接私有服务(提示 “服务不可用”)
-
原因 1:HTTPS 证书无效(如自签名证书,浏览器不信任)。解决:确保 Caddy 成功申请 Let’s Encrypt 证书(地址栏显示小绿锁),避免使用自签名证书。
-
原因 2:服务地址输入错误(如多写 “/” 或端口)。解决:插件中输入的地址应为
https://你的域名(无端口,Caddy 自动处理 443 端口)。
4. 同步书签时提示 “空间不足”
-
原因:xBrowserSync API 默认限制书签存储大小(默认 10MB)。
解决:修改 API 配置文件
settings.json,增大存储限制:
{
"maxBookmarkSize": 52428800 // 改为 50MB(单位:字节,50*1024*1024=52428800)
}
重启 API 服务:docker compose restart xbs-api。
通过以上步骤,新手可成功部署 xBrowserSync 私有书签同步服务,实现跨浏览器书签统一管理。该服务适合注重数据隐私的个人用户,后续可根据需求扩展存储容量、配置备份脚本等,具体进阶功能可参考 xBrowserSync 官方文档。