3.9 KiB
3.9 KiB
Git Auto-Sync Setup for Second Brain
Automatically sync vault changes between server, desktop, and phone using Git.
How It Works
Desktop/Phone Changes → Git Repo ← Server Auto-Commits
↓
All devices sync
Server Setup
1. Install Auto-Sync Service
sudo cp /workspace/second-brain/git-auto-sync.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable git-auto-sync.service
sudo systemctl start git-auto-sync.service
# Verify
sudo systemctl status git-auto-sync.service
2. Watch Auto-Commits
# View logs
sudo journalctl -fu git-sync
# Example output:
# [2026-04-26 07:45:30] Changes detected:
# M 03-learnings/architecture.md
# A 00-inbox/new-idea.md
# ✓ Committed
# ✓ Pushed to remote
Desktop Setup
1. Clone the Vault
# First time
git clone ssh://user@server:/workspace/second-brain ~/Obsidian/second-brain
# Or if using Local Sync, configure it to pull from this git repo
2. Pull Latest Changes
cd ~/Obsidian/second-brain
git pull
3. Auto-Pull (Optional)
macOS/Linux:
# Add to crontab (every 5 minutes)
crontab -e
*/5 * * * * cd ~/Obsidian/second-brain && git pull -q 2>/dev/null
Or use a Git hook:
cat > .git/hooks/post-merge << 'EOF'
#!/bin/bash
# Auto-sync after merge
echo "✓ Vault synced"
EOF
chmod +x .git/hooks/post-merge
Phone Setup
With Obsidian + Local Sync Plugin
-
On Server:
- Make sure git repo is accessible (or use Gitea)
-
On Phone:
- Install "Local Sync" plugin in Obsidian
- Configure it to sync with:
ssh://user@server:/workspace/second-brain - Or configure with Gitea URL
-
On Desktop:
- Same setup, pull regularly
Sync Strategies
Strategy 1: Git-Only (Recommended)
- Server auto-commits all changes
- Desktop:
git pullmanually or via cron - Phone: Local Sync pulls from server git
# Desktop cron (every 5 min)
*/5 * * * * cd ~/Obsidian/second-brain && git pull -q
Strategy 2: Obsidian + Local Sync
- Desktop + Phone: Use Obsidian's Local Sync plugin
- Server: Git auto-sync mirrors changes
Advantage: Real-time sync on devices, server keeps git history
Strategy 3: Git + SSH Pull
- Desktop/Phone: SSH git clone
- Pull before opening Obsidian
- Push changes after editing
#!/bin/bash
# pre-open-obsidian.sh
cd ~/Obsidian/second-brain
git pull
open ~/Obsidian/second-brain # macOS
Remote Repository (Gitea / GitHub)
Configure Remote Push
If using Gitea on your server:
# On server
cd /workspace/second-brain
git remote add gitea ssh://git@gitea-server/your-repo.git
# Verify
git remote -v
# Push existing commits
git push -u gitea master
Then on desktop/phone:
git clone ssh://git@gitea-server/your-repo.git
Monitoring Syncs
View Recent Commits
cd /workspace/second-brain
git log --oneline -10
Check Sync Status
# See what's staged but not committed
git status
# See changes in last hour
git log --since="1 hour ago" --oneline
Manual Sync Test
# On desktop: make a change
echo "test" >> 00-inbox/test.md
git add .
git commit -m "Test sync"
git push
# On server: should auto-pull (if configured)
cd /workspace/second-brain
git log --oneline -1
Conflict Resolution
If both server and desktop edit the same file:
# Server (auto-sync) will get it first
# Desktop pulls and sees conflict marker:
<<<<<<< HEAD
desktop version
=======
server version
>>>>>>> origin/master
# Manually resolve, then:
git add .
git commit -m "Resolved conflict"
git push
Disable Auto-Sync (if needed)
sudo systemctl stop git-auto-sync.service
sudo systemctl disable git-auto-sync.service
Performance Notes
- Poll interval: 30 seconds (adjustable)
- Commit overhead: ~50ms per check
- Memory: ~64MB (limited)
- CPU: ~10% max
Created: 2026-04-26