fast-note-sync-service

command module
v0.0.0-...-12670c8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

README

简体中文 / English / 日本語 / 한국어 / 繁體中文

If you have any questions, please create an issue, or join the Telegram group for help: https://t.me/obsidian_users

For Mainland China users, it is recommended to use the Tencent cnb.cool mirror: https://cnb.cool/haierkeys/fast-note-sync-service

Fast Note Sync Service

release alpha-release license Go

High-performance, low-latency note synchronization, online management, and remote REST API service platform
Built with Golang + Websocket + Sqlite + React

Data synchronization requires the client plugin: Obsidian Fast Note Sync Plugin

fast-note-sync-service-preview fast-note-sync-service-preview
fast-note-sync-service-preview fast-note-sync-service-preview

✨ Core Features

  • 🚀 REST API Support:

    • Provides standard REST API interfaces, supporting programmatic CRUD operations on Obsidian notes (e.g., automation scripts, AI assistant integration).
    • For details, please refer to the REST API Documentation.
  • 💻 Web Management Panel:

    • Built-in modern management interface for easily creating users, generating plugin configurations, and managing repositories and note content.
  • 🔄 Multi-device Note Sync:

    • Supports automatic creation of Vaults.
    • Supports note management (CRUD), with millisecond-level real-time distribution of changes to all online devices.
  • 🖼️ Attachment Sync Support:

    • Perfect support for syncing images and other non-note files.
    • Supports chunked upload and download for large attachments, with configurable chunk sizes to improve synchronization efficiency.
  • ⚙️ Configuration Sync:

    • Supports synchronization of .obsidian configuration files.
    • Supports synchronization of PDF progress status.
  • 📝 Note history:

    • You can view the historical modification versions of each note on the web page and the plugin side.
    • (Requires server v1.2+)
  • 🗑️ Recycle Bin:

    • Supports automatic transfer to the recycle bin after note deletion.
    • Supports recovering notes from the recycle bin. (Attachment recovery features will be added progressively)
  • 🚫 Offline Sync Strategy:

    • Supports automatic merging of offline note edits (requires plugin-side configuration).
    • Offline deletion, automatic completion or deletion synchronization after reconnection (requires plugin-side configuration).

☕ Sponsorship and Support

  • If you find this plugin useful and want to support its continued development, please support me in the following ways:

    Ko-fi Non-China Region WeChat Pay China Region
    BuyMeACoffee or

⏱️ Changelog

🗺️ Roadmap

We are continuously improving, here are our future development plans:

  • Sharing Feature: Support note sharing.
  • MCP Support: Add AI MCP related functionality.
  • Directory Sync: Support directory CRUD operations.
  • Git Version Control Integration: Provide more secure version tracking for notes.
  • Cloud Storage and Backup Strategy:
    • Customizable backup strategy configuration.
    • Multi-protocol adaptation: S3 / Minio / Cloudflare R2 / Alibaba Cloud OSS / WebDAV.

If you have improvement suggestions or new ideas, feel free to share them with us by submitting an issue - we will carefully evaluate and adopt appropriate suggestions.

🚀 Quick Deployment

We provide various installation methods, with one-click script or Docker being recommended.

Automatically detects the system environment and completes installation and service registration.

bash <(curl -fsSL https://raw.githubusercontent.com/haierkeys/fast-note-sync-service/master/scripts/quest_install.sh)

In China, you can use the Tencent cnb.cool mirror source:

bash <(curl -fsSL https://cnb.cool/haierkeys/fast-note-sync-service/-/git/raw/master/scripts/quest_install.sh) --cnb

Main script actions:

  • Automatically downloads the Release binary adapted to the current system.
  • Default installation to /opt/fast-note, and creates a global shortcut command fns in /usr/local/bin/fns.
  • Configures and starts the Systemd (Linux) or Launchd (macOS) service for auto-start on boot.
  • Management commands: fns [install|uninstall|start|stop|status|update|menu]
  • Interactive menu: Run fns directly to enter the interactive menu, supporting installation/upgrade, service control, auto-start configuration, and switching between GitHub / CNB mirrors.

Method 2: Docker Deployment

Docker Run
# 1. Pull the image
docker pull haierkeys/fast-note-sync-service:latest

# 2. Start the container
docker run -tid --name fast-note-sync-service \
    -p 9000:9000 \
    -v /data/fast-note-sync/storage/:/fast-note-sync/storage/ \
    -v /data/fast-note-sync/config/:/fast-note-sync/config/ \
    haierkeys/fast-note-sync-service:latest
Docker Compose

Create a docker-compose.yaml file:

version: '3'
services:
  fast-note-sync-service:
    image: haierkeys/fast-note-sync-service:latest
    container_name: fast-note-sync-service
    restart: always
    ports:
      - "9000:9000"  # RESTful API & WebSocket port, where /api/user/sync is the WebSocket interface address
    volumes:
      - ./storage:/fast-note-sync/storage  # Data storage
      - ./config:/fast-note-sync/config    # Configuration files

Start the service:

docker compose up -d

Method 3: Manual Binary Installation

Download the latest version for your system from Releases, extract it, and run:

./fast-note-sync-service run -c config/config.yaml

📖 Usage Guide

  1. Access Management Panel: Open http://{Server_IP}:9000 in your browser.
  2. Initial Setup: Register an account on the first visit. (To disable registration, set user.register-is-enable: false in the configuration file)
  3. Configure Client: Log in to the management panel and click "Copy API Config".
  4. Connect Obsidian: Open the Obsidian plugin settings page and paste the configuration information you just copied.

⚙️ Configuration Instructions

The default configuration file is config.yaml, which the program will automatically search for in the root directory or config/ directory.

View full configuration example: config/config.yaml

🌐 Nginx Reverse Proxy Configuration Example

View full configuration example: https-nginx-example.conf

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
gorm_gen command
mfmt command
model_gen command
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
internal
app
Package app provides application container, encapsulates all dependencies and services Package app 提供应用容器,封装所有依赖和服务
Package app provides application container, encapsulates all dependencies and services Package app 提供应用容器,封装所有依赖和服务
dao
Package dao 实现数据访问层
Package dao 实现数据访问层
domain
Package domain 定义领域模型和接口
Package domain 定义领域模型和接口
dto
Package dto Defines data transfer objects (request parameters and response structs) Package dto 定义数据传输对象(请求参数和响应结构体)
Package dto Defines data transfer objects (request parameters and response structs) Package dto 定义数据传输对象(请求参数和响应结构体)
model
Package model 定义数据模型
Package model 定义数据模型
routers/api_router
Package api_router provides HTTP API router handlers Package api_router 提供 HTTP API 路由处理器
Package api_router provides HTTP API router handlers Package api_router 提供 HTTP API 路由处理器
routers/websocket_router
Package websocket_router provides WebSocket router handlers Package websocket_router 提供 WebSocket 路由处理器
Package websocket_router provides WebSocket router handlers Package websocket_router 提供 WebSocket 路由处理器
service
Package service implements the business logic layer Package service 实现业务逻辑层
Package service implements the business logic layer Package service 实现业务逻辑层
pkg
app
gin_tools
// Copyright 2014 Manu Martinez-Almeida.
// Copyright 2014 Manu Martinez-Almeida.
util
Package util provides common utility functions Package util 提供通用工具函数
Package util provides common utility functions Package util 提供通用工具函数
workerpool
Package workerpool provides Worker Pool implementation for goroutine lifecycle management Package workerpool 提供 goroutine 生命周期管理的 Worker Pool 实现 Used to limit the number of concurrent goroutines and prevent resource leaks 用于限制并发 goroutine 数量,防止资源泄漏
Package workerpool provides Worker Pool implementation for goroutine lifecycle management Package workerpool 提供 goroutine 生命周期管理的 Worker Pool 实现 Used to limit the number of concurrent goroutines and prevent resource leaks 用于限制并发 goroutine 数量,防止资源泄漏
writequeue
Package writequeue provides Per-User Write Queue implementation Package writequeue 提供 Per-User Write Queue 实现 Used to serialize SQLite write operations for the same user to solve "database is locked" issue 用于串行化同一用户的 SQLite 写操作,解决 "database is locked" 问题
Package writequeue provides Per-User Write Queue implementation Package writequeue 提供 Per-User Write Queue 实现 Used to serialize SQLite write operations for the same user to solve "database is locked" issue 用于串行化同一用户的 SQLite 写操作,解决 "database is locked" 问题

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL