vault-link/docs/guide/getting-started.md
2025-11-30 15:24:52 +00:00

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

  1. Open Obsidian Settings → Community Plugins
  2. Browse community plugins and search for "VaultLink"
  3. Install and enable the plugin
  4. 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)

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:

  1. Use HTTPS/WSS: Put the sync server behind a reverse proxy with SSL
  2. Secure tokens: Generate cryptographically random tokens
  3. Configure backups: Back up the SQLite databases regularly
  4. 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

  1. Verify server is accessible: curl http://your-server:3000/vaults/test/ping
  2. Check WebSocket connectivity (browser dev tools or wscat)
  3. Verify token matches between client and server config
  4. Check firewall rules allow port 3000

Files not syncing

  1. Check client logs for errors
  2. Verify vault name matches on both server and client
  3. Ensure user has access to the vault (check server config)
  4. Check for file size limits (default 10MB for CLI)

For more help, open an issue on GitHub.