From 3a8f6f770e5ca6943679ad942f0302c857887609 Mon Sep 17 00:00:00 2001 From: TGY Date: Sun, 18 May 2025 22:51:16 +0800 Subject: [PATCH] add better-sync --- obsidian-better-sync/README.md | 139 ++++++++++++++++++ obsidian-better-sync/data.yml | 19 +++ obsidian-better-sync/latest/data.yml | 26 ++++ .../latest/docker-compose.yml | 20 +++ obsidian-better-sync/logo.png | Bin 0 -> 6331 bytes 5 files changed, 204 insertions(+) create mode 100644 obsidian-better-sync/README.md create mode 100644 obsidian-better-sync/data.yml create mode 100644 obsidian-better-sync/latest/data.yml create mode 100644 obsidian-better-sync/latest/docker-compose.yml create mode 100644 obsidian-better-sync/logo.png diff --git a/obsidian-better-sync/README.md b/obsidian-better-sync/README.md new file mode 100644 index 000000000..786215695 --- /dev/null +++ b/obsidian-better-sync/README.md @@ -0,0 +1,139 @@ +[中文文档](readme-zh.md) / [English Document](README.md) + +# Better Sync Service + +

+ version + license +

+ +[BetterSync For Obsidian](https://github.com/haierkeys/obsidian-better-sync) 服务端,基于 Golang + Websocket +构建的高性能笔记实时同步服务 + +## 功能清单 + +- [x] 多端笔记实时同步 +- [ ] 笔记云存储同步备份 - s3 +- [ ] 笔记云存储同步备份 - 阿里云 +- [ ] 笔记云存储同步备份 - CF R2 +- [ ] 笔记云存储同步备份 - minio +- [ ] 笔记云存储同步备份 - webdav +- [ ] 笔记云存储同步备份 - 增加备份策略 +- [x] Web页面管理 +- [x] 目前仅支持 Sqlite 存储 +- [ ] 增加git维护版本 +- [ ] 基于 google-diff-match-patch 算法优化 + +## BUGLIST (已知问题) + +- webgui 除了登录/注册/复制配置之外的 界面无实际功能或点击异常 +- 部分用户连接ws后, 认证成功,但是不显示nickname + +## 更新日志 + +查看完整的更新内容,请访问 [Changelog](https://github.com/haierkeys/obsidian-better-sync-service/releases)。 + +## 价格 + +本软件是开源且免费的。如果您想表示感谢或帮助支持继续开发,可以通过以下方式为我提供支持: + +[BuyMeACoffee](https://ko-fi.com/haierkeys) + +## 私有部署 + +- 目录设置 + + ```bash + # 创建项目所需的目录 + mkdir -p /data/better-sync + cd /data/better-sync + + mkdir -p ./config && mkdir -p ./storage/logs && mkdir -p ./storage/uploads + ``` + + 首次启动如果不下载配置文件,程序会自动生成一个默认配置到 **config/config.yaml** + + 如果你想从网络下载一个默认配置 使用以下命令来下载 + + ```bash + # 从开源库下载默认配置文件到配置目录 + wget -P ./config/ https://raw.githubusercontent.com/haierkeys/obsidian-better-sync-service/main/config/config.yaml + ``` + +- 二进制安装 + + 从 [Releases](https://github.com/haierkeys/obsidian-better-sync-service/releases) 下载最新版本,解压后执行: + + ```bash + ./better-sync-service run -c config/config.yaml + ``` + + +- 容器化安装(Docker 方式) + + Docker 命令: + + ```bash + # 拉取最新的容器镜像 + docker pull haierkeys/obsidian-better-sync-service:latest + + # 创建并启动容器 + docker run -tid --name better-sync-service \ + -p 9000:9000 -p 9001:9001 \ + -v /data/better-sync/storage/:/better-sync/storage/ \ + -v /data/better-sync/config/:/better-sync/config/ \ + haierkeys/obsidian-better-sync-service:latest + ``` + + Docker Compose + 使用 *containrrr/watchtower* 来监听镜像实现自动更新项目 + **docker-compose.yaml** 内容如下 + + ```yaml + # docker-compose.yaml + services: + better-sync: + image: haierkeys/obsidian-better-sync-service:latest # 你的应用镜像 + container_name: better-sync + ports: + - "9000:9000" # 映射端口 9000 + - "9001:9001" # 映射端口 9001 + volumes: + - /data/better-sync/storage/:/better-sync/storage/ # 映射存储目录 + - /data/better-sync/config/:/better-sync/config/ # 映射配置目录 + + ``` + + 执行 **docker compose** + + 以服务方式注册 docker 容器 + + ```bash + docker compose up -d + ``` + + 注销并销毁 docker 容器 + + ```bash + docker compose down + ``` + +### 使用 + +访问 `WebGUI` 地址 `http://{IP:PORT}` + +点击在 复制 API 配置 获取配置信息, 到 `BetterSync For Obsidian` 插件中粘贴即可 + +首次访问需要进行用户注册,如需关闭注册, 请修改 `user.register-is-enable` 为 `false` + +### 配置说明 + +默认的配置文件名为 **config.yaml**,请将其放置在 **根目录** 或 **config** 目录下。 + +更多配置详情请参考: + +- [config/config.yaml](config/config.yaml) + +## 其他资源 + +- [Better Sync For Obsidian](https://github.com/haierkeys/obsidian-better-sync) \ No newline at end of file diff --git a/obsidian-better-sync/data.yml b/obsidian-better-sync/data.yml new file mode 100644 index 000000000..c5ec31daa --- /dev/null +++ b/obsidian-better-sync/data.yml @@ -0,0 +1,19 @@ +name: Obsidian BetterSync +tags: + - 实用工具 +title: Obsidian 在线同步插件 +description: Obsidian 在线同步插件 +additionalProperties: + key: better-sync-service + name: Obsidian BetterSync + tags: + - Tool + shortDescZh: Obsidian 在线同步插件 + shortDescEn: Obsidian BetterSync + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/haierkeys/obsidian-better-sync-service + github: https://github.com/haierkeys/obsidian-better-sync-service + document: https://github.com/haierkeys/obsidian-better-sync-service/blob/master/readme-zh.md diff --git a/obsidian-better-sync/latest/data.yml b/obsidian-better-sync/latest/data.yml new file mode 100644 index 000000000..e55a6a8dd --- /dev/null +++ b/obsidian-better-sync/latest/data.yml @@ -0,0 +1,26 @@ +additionalProperties: + formFields: + - default: 40166 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP端口 + required: true + rule: paramPort + type: number + - default: 40167 + edit: true + envKey: PRIVATE_HTTP_LISTEN + labelEn: private-http-listen + labelZh: 性能监控接口 + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text + diff --git a/obsidian-better-sync/latest/docker-compose.yml b/obsidian-better-sync/latest/docker-compose.yml new file mode 100644 index 000000000..b3dc07481 --- /dev/null +++ b/obsidian-better-sync/latest/docker-compose.yml @@ -0,0 +1,20 @@ +services: + better-sync: + container_name: ${CONTAINER_NAME} + restart: always + ports: + - "${PANEL_APP_PORT_HTTP}:9000" + - "${PRIVATE_HTTP_LISTEN}:9001" + volumes: + - ${DATA_PATH}/storage:/better-sync/storage/ + - ${DATA_PATH}/config:/better-sync/config/ + image: haierkeys/obsidian-better-sync-service:latest + labels: + createdBy: "Apps" + networks: + - 1panel-network + +networks: + 1panel-network: + external: true + diff --git a/obsidian-better-sync/logo.png b/obsidian-better-sync/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..affa745c47b782d22734f68ad242e3e2536a9d82 GIT binary patch literal 6331 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 literal 0 HcmV?d00001