4.6 KiB
Getting Started
This guide will walk you through setting up VaultLink from scratch. You'll have a working sync server and connected client in under 10 minutes.
Prerequisites
- Docker installed (recommended) or Rust toolchain for building from source
- Basic familiarity with command line
- A server or machine to host the sync server (can be localhost for testing)
Quick Start
Step 1: Deploy the Sync Server
The fastest way to get started is with Docker:
# Create a directory for server data
mkdir -p ~/vaultlink-data
cd ~/vaultlink-data
# Create a basic configuration file
cat > config.yml << 'EOF'
database:
databases_directory_path: databases
max_connections_per_vault: 12
cursor_timeout_seconds: 60
server:
host: 0.0.0.0
port: 3000
max_body_size_mb: 512
max_clients_per_vault: 256
response_timeout_seconds: 60
users:
user_configs:
- name: admin
token: change-this-to-a-secure-random-token
vault_access:
type: allow_access_to_all
logging:
log_directory: logs
log_rotation: 7days
EOF
# Run the server
docker run -d \
--name vaultlink-server \
--restart unless-stopped \
-p 3000:3000 \
-v $(pwd):/data \
ghcr.io/schmelczer/vault-link-server:latest \
/app/sync_server /data/config.yml
::: warning
Change the token in config.yml to a secure random value before deploying to production!
:::
Verify the server is running:
curl http://localhost:3000/vaults/test/ping
You should see: pong
Step 2: Choose Your Client
You can connect to VaultLink using either the Obsidian plugin or the standalone CLI client.
Option A: Obsidian Plugin
- Open Obsidian Settings → Community Plugins
- Browse community plugins and search for "VaultLink"
- Install and enable the plugin
- Configure the plugin:
- Server URL:
ws://localhost:3000(or your server address) - Token: The token from your
config.yml - Vault Name:
default(or any name you choose)
- Server URL:
Read the full Obsidian plugin guide →
Option B: CLI Client
Perfect for syncing vaults without Obsidian:
docker run -d \
--name vaultlink-cli \
--restart unless-stopped \
-v /path/to/your/vault:/vault \
ghcr.io/schmelczer/vault-link-cli:latest \
-l /vault \
-r ws://localhost:3000 \
-t change-this-to-a-secure-random-token \
-v default
Replace /path/to/your/vault with the directory containing your files.
Read the full CLI client guide →
Next Steps
Production Deployment
For production use, you should:
- Use HTTPS/WSS: Put the sync server behind a reverse proxy with SSL
- Secure tokens: Generate cryptographically random tokens
- Configure backups: Back up the SQLite databases regularly
- Set up monitoring: Use Docker health checks and logging
Learn about production deployment →
Multiple Users
To add more users or restrict vault access:
users:
user_configs:
- name: alice
token: alice-secure-token
vault_access:
type: allow_list
allowed:
- personal
- shared
- name: bob
token: bob-secure-token
vault_access:
type: allow_list
allowed:
- shared
Learn about authentication configuration →
Advanced Configuration
Explore advanced server options:
- Database tuning for large vaults
- Rate limiting and connection limits
- Custom logging and log rotation
- Multi-vault setups
View configuration reference →
Architecture Overview
Want to understand how VaultLink works under the hood?
Read the architecture documentation →
Troubleshooting
Server won't start
Check Docker logs:
docker logs vaultlink-server
Common issues:
- Port 3000 already in use: Change the port mapping
-p 3001:3000 - Config file errors: Validate YAML syntax
- Permission issues: Ensure the volume mount is writable
Client can't connect
- Verify server is accessible:
curl http://your-server:3000/vaults/test/ping - Check WebSocket connectivity (browser dev tools or wscat)
- Verify token matches between client and server config
- Check firewall rules allow port 3000
Files not syncing
- Check client logs for errors
- Verify vault name matches on both server and client
- Ensure user has access to the vault (check server config)
- Check for file size limits (default 10MB for CLI)
For more help, open an issue on GitHub.