115 lines
3.6 KiB
Markdown
115 lines
3.6 KiB
Markdown
# What is VaultLink?
|
|
|
|
VaultLink is a self-hosted real-time synchronization system for Obsidian vaults. It provides collaborative file syncing with automatic conflict resolution, designed for users who want complete control over their data.
|
|
|
|
## Overview
|
|
|
|
VaultLink consists of three main components:
|
|
|
|
### Sync Server
|
|
|
|
A Rust-based WebSocket server that handles:
|
|
- Real-time bidirectional synchronization
|
|
- Document versioning with SQLite
|
|
- User authentication and vault access control
|
|
- Operational transformation for conflict resolution
|
|
|
|
### Obsidian Plugin
|
|
|
|
A native Obsidian plugin that:
|
|
- Integrates sync directly into your Obsidian workflow
|
|
- Provides real-time updates as you edit
|
|
- Handles file watching and automatic synchronization
|
|
- Works across desktop and mobile platforms
|
|
|
|
### CLI Client
|
|
|
|
A standalone synchronization client that:
|
|
- Syncs vaults without requiring Obsidian
|
|
- Perfect for servers, automation, or backup systems
|
|
- Provides file watching and bidirectional sync
|
|
- Runs in Docker or as a standalone binary
|
|
|
|
## Key Features
|
|
|
|
### Real-Time Synchronization
|
|
|
|
Changes are synchronized immediately via WebSocket connections. When multiple users edit the same file, operational transformation ensures all edits are preserved without conflicts.
|
|
|
|
### Self-Hosted Architecture
|
|
|
|
Run the sync server on your own infrastructure:
|
|
- Full control over data storage and access
|
|
- No dependency on third-party services
|
|
- Configurable authentication and authorization
|
|
- Deploy anywhere: cloud VPS, home server, or localhost
|
|
|
|
### Operational Transformation
|
|
|
|
VaultLink uses the `reconcile-text` library for intelligent conflict resolution:
|
|
- Simultaneous edits are automatically merged
|
|
- No manual conflict resolution required
|
|
- Preserves intent of all contributors
|
|
- Works seamlessly in the background
|
|
|
|
### Flexible Authentication
|
|
|
|
Configure user access per vault:
|
|
- Token-based authentication
|
|
- Per-user vault access control
|
|
- Allow-list or deny-list patterns
|
|
- Support for multiple users and vaults
|
|
|
|
## Use Cases
|
|
|
|
### Personal Sync
|
|
|
|
Synchronize your Obsidian vault across multiple devices:
|
|
- Laptop, desktop, and mobile in real-time
|
|
- No cloud service subscription required
|
|
- Full privacy and data control
|
|
|
|
### Team Collaboration
|
|
|
|
Share knowledge bases with teammates:
|
|
- Real-time collaborative editing
|
|
- Granular access control per vault
|
|
- Self-hosted for enterprise security requirements
|
|
|
|
### Automated Backups
|
|
|
|
Use the CLI client for automated workflows:
|
|
- Scheduled backups to remote servers
|
|
- Integration with existing backup systems
|
|
- Headless operation without Obsidian
|
|
|
|
### Development & Testing
|
|
|
|
Synchronize documentation across environments:
|
|
- Keep docs in sync with development environments
|
|
- Automated deployment of documentation
|
|
- Version control integration
|
|
|
|
## How It Works
|
|
|
|
1. **Server Setup**: Deploy the sync server on your infrastructure
|
|
2. **Authentication**: Configure users and vault access in `config.yml`
|
|
3. **Client Connection**: Connect via Obsidian plugin or CLI client
|
|
4. **Initial Sync**: Client uploads local files to server
|
|
5. **Real-Time Updates**: Changes sync bidirectionally via WebSocket
|
|
6. **Conflict Resolution**: Operational transformation handles simultaneous edits
|
|
|
|
## Technology Stack
|
|
|
|
- **Server**: Rust with Axum framework, SQLite database, WebSocket protocol
|
|
- **Frontend**: TypeScript with WebSocket client, npm workspaces
|
|
- **Sync Algorithm**: reconcile-text operational transformation library
|
|
- **Deployment**: Docker images, binary releases, or source builds
|
|
|
|
## Next Steps
|
|
|
|
Ready to get started?
|
|
|
|
- [Getting Started Guide →](/guide/getting-started)
|
|
- [Server Setup →](/guide/server-setup)
|
|
- [Architecture Overview →](/architecture/)
|