Bỏ qua đến nội dung chính

Cài đặt PC + Laptop (Windows)

Setup full real-world: nhiều folders, ignore patterns, daily workflow.

  • Quick Start đã xong (Syncthing pair 2 máy thành công)
  • Quyết định những folder nào sync (vd: ~/.claude/, ~/Documents/, D:/Projects/)
  • Backup data quan trọng trước (peace of mind)
┌──────────────── PC (always-on) ──────────────────┐
│ Windows Syncthing :8384 │
│ ├─ claude-state → C:\Users\<user>\.claude\ │
│ ├─ documents → C:\Users\<user>\Documents\ │
│ └─ public-shared → D:\Public LAN Folder\ │
└──────────────────────────────────────────────────┘
↕ LAN P2P
┌────────────── Laptop (mobile) ───────────────────┐
│ Windows Syncthing :8384 │
│ ├─ claude-state │
│ ├─ documents │
│ └─ public-shared │
└──────────────────────────────────────────────────┘

Bước 1: Backup trạng thái hiện tại của Laptop

Phần tiêu đề “Bước 1: Backup trạng thái hiện tại của Laptop”
Terminal window
# Trên LAPTOP
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
$backup = "C:\Users\$env:USERNAME\.claude.bak-$timestamp"
Copy-Item -Recurse "C:\Users\$env:USERNAME\.claude" $backup
Write-Host "✓ Backup saved to: $backup"
# Move existing claude folder để sync overwrite
Move-Item "C:\Users\$env:USERNAME\.claude\projects" "C:\Users\$env:USERNAME\.claude\projects.local-bak"
Move-Item "C:\Users\$env:USERNAME\.claude\skills" "C:\Users\$env:USERNAME\.claude\skills.local-bak"

Sau sync xong, có thể merge từ backup nếu cần files unique chỉ ở Laptop.

  1. PC Web UI http://127.0.0.1:8384Add Folder

  2. Folder 1: claude-state

    • Folder Label: Claude state
    • Folder ID: claude-state
    • Folder Path: C:\Users\<your-user>\.claude
    • Tab Sharing: tick Laptop
    • Tab Ignore Patterns: paste:
      session-env
      shell-snapshots
      file-history
      backups
      ide
      mcp-needs-auth-cache.json
      **/.lock
      **/*.tmp
      **/.DS_Store
      **/Thumbs.db
    • Save
  3. Folder 2: documents

    • Folder Path: C:\Users\<your-user>\Documents
    • Sharing: tick Laptop
    • Ignore Patterns:
      **/node_modules
      **/.cache
      **/temp
      **/*.log
      **/.DS_Store
  4. Folder 3+: tương tự cho D:\Projects\, etc.

  1. Sau Step 2, Laptop sẽ pop-up notification mỗi folder offer

  2. Mỗi notification → click Add:

    • Set Folder Path trên Laptop (mirror với PC)
    • Save
  3. Initial sync starts. Monitor qua Web UI → folder card → progress %

Terminal window
# Trên Laptop, sau initial sync done
# Check claude-state có conversations
Get-ChildItem "C:\Users\$env:USERNAME\.claude\projects" -Recurse -Filter "*.jsonl" | Measure-Object
# Check skills synced
Get-ChildItem "C:\Users\$env:USERNAME\.claude\skills" -Directory | Measure-Object

Ignore patterns dùng glob syntax. Em recommend cho từng loại folder:

# Build artifacts
**/node_modules
**/dist
**/build
**/.next
**/out
**/coverage
# Dependencies caches
**/.venv
**/venv
**/__pycache__
**/*.pyc
# Per-machine env
**/.env.local
**/.env.development
# IDE / OS junk
**/.vscode
**/.idea
.DS_Store
Thumbs.db
desktop.ini
# Logs + temp
**/*.log
**/tmp
**/temp/

Một số files chứa auth tokens (vd ~/.claude/.credentials.json):

  1. Trên máy đang dùng: đóng app đang write file (vd Antigravity, IDE)
  2. Đợi 30s cho Syncthing flush
  3. Mở máy kia → tiếp tục work

Đôi khi cần pause:

Terminal window
# API key trong config.xml
$apiKey = (Select-String -Path "C:\Users\$env:USERNAME\AppData\Local\Syncthing\config.xml" -Pattern "<apikey>([^<]+)").Matches.Groups[1].Value
# Pause folder
Invoke-RestMethod -Uri "http://127.0.0.1:8384/rest/db/pause?folder=claude-state" -Method Post -Headers @{"X-API-Key"=$apiKey}
# Resume folder
Invoke-RestMethod -Uri "http://127.0.0.1:8384/rest/db/resume?folder=claude-state" -Method Post -Headers @{"X-API-Key"=$apiKey}

Hoặc Web UI → folder → click pause icon.

Terminal window
# Create scheduled task to run Syncthing on logon
$binary = (Get-ChildItem "C:\Users\$env:USERNAME\AppData\Local\Microsoft\WinGet\Packages\Syncthing.Syncthing*" -Filter "syncthing.exe" -Recurse | Select-Object -First 1).FullName
$action = New-ScheduledTaskAction -Execute $binary -Argument "serve --no-browser"
$trigger = New-ScheduledTaskTrigger -AtLogOn -User "$env:USERNAME"
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -Hidden
Register-ScheduledTask -TaskName "Syncthing Daemon" -Action $action -Trigger $trigger -Settings $settings

PC + Laptop đã sync OK qua Windows. Tiếp theo: