简体中文 / English / 日本語 / 한국어 / 繁體中文
If you have any questions, please create an issue, or join the Telegram group for help: https://t.me/obsidian_users
Fast Note Sync Service
High-performance, low-latency note synchronization service solution *Built with Golang + Webso…
简体中文 / English / 日本語 / 한국어 / 繁體中文
If you have any questions, please create an issue, or join the Telegram group for help: https://t.me/obsidian_users
Fast Note Sync Service
High-performance, low-latency note synchronization service solution Built with Golang + Websocket + Sqlite + React
Requires client plugin to use: Obsidian Fast Note Sync Plugin
✨ Core Features
-
💻 Web Management Panel: Built-in modern management interface to easily create users, generate plugin configurations, manage repositories, and note content.
-
🔄 Multi-device Note Sync:
-
Supports automatic Vault creation.
-
Supports note management (Add, Delete, Edit, Search), with millisecond-level real-time distribution of changes to all online devices.
-
🖼️ Attachment Sync Support:
-
Perfectly supports synchronization of non-note files such as images.
-
(Note: Requires server v0.9+ and Obsidian Plugin v1.0+; Obsidian configuration files are not supported)
-
📝 Note History:
-
View the history of modifications for each note on the Web page or within the plugin.
-
(Requires server v1.2+)
-
⚙️ Configuration Sync:
-
Supports synchronization of
.obsidianconfiguration files.
☕ Support and Sponsorship
If you find this plugin useful and want to see continued development, please support me in the following ways:
| Ko-fi Outside China | | WeChat Pay Inside China | | ——————— | | ———————–– | | | or | |
⏱️ Changelog
🗺️ Roadmap
We are continuously improving, here are the future development plans:
-
Git Version Control Integration: Provides more secure version rollback for notes.
-
Sync Algorithm Optimization: Integrate
google-diff-match-patchfor more efficient incremental synchronization. -
Cloud Storage and Backup Strategy:
-
Custom backup strategy configuration.
-
Multi-protocol adaptation: S3 / Minio / Cloudflare R2 / Alibaba Cloud OSS / WebDAV.
If you have suggestions for improvement or new ideas, feel free to share them with us by submitting an issue—we will carefully evaluate and adopt suitable suggestions.
🚀 Quick Deployment
We provide multiple installation methods, it is recommended to use the One-click Script or Docker.
Method 1: One-click Script (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)
Script Main Actions:
- Automatically downloads the Release binary adapted to the current system.
- Default installation to
/opt/fast-note, and creates a shortcut command in/usr/local/bin/fast-note. - Configures and starts the Systemd service (
fast-note.service) to enable auto-start on boot. - Management Commands:
fast-note [install|uninstall|start|stop|status|update|menu]
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 -p 9001:9001 \
-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" # API Port
- "9001:9001" # WebSocket Port
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
📖 User Guide
- Access Management Panel: Open
http://{Server IP}:9000in your browser. - Initial Setup: Registration is required for the first visit. (If you need to disable registration, set
user.register-is-enable: falsein the configuration file) - Configure Client: Log in to the management panel and click "Copy API Configuration".
- Connect Obsidian: Open the Obsidian plugin settings page and paste the configuration information you just copied.
⚙️ Configuration Description
The default configuration file is config.yaml, the program will automatically search in the root directory or config/ directory.
View full configuration example: config/config.yaml
Key Configuration Options
| Section | Option | Description | Default |
|---|---|---|---|
security | auth-token-key | JWT signing key (⚠️ Must change from default!) | - |
security | token-expiry | Token expiration time (e.g., 7d, 24h, 30m) | 7d |
database | max-open-conns | Maximum open database connections | 100 |
database | max-idle-conns | Maximum idle database connections | 10 |
database | conn-max-lifetime | Connection max lifetime (e.g., 30m, 1h) | 30m |
database | conn-max-idle-time | Idle connection max lifetime | 10m |
tracer | enabled | Enable request tracing | true |
tracer | header | Trace ID header name | X-Trace-ID |
⚠️ Security Warning: The system will warn you if using default secret keys. Please generate a secure key with:
openssl rand -base64 32
📐 Architecture
This service follows Clean Architecture principles with clear separation of concerns:
- Transport Layer: HTTP/WebSocket handlers
- Application Layer: Business logic orchestration
- Domain Layer: Core entities and repository interfaces
- Infrastructure Layer: Database implementations
For detailed architecture documentation, see: docs/ARCHITECTURE.md