Bezpečná synchronizace Obsidianu s Git a end-to-end šifrováním
Synchronizace poznámek v Obsidianu mezi zařízeními při zachování soukromí je úkol, který lze vyřešit pomocí Gitu a nástroje git-crypt pro transparentní šifrování. Tento přístup poskytuje úplnou kontrolu nad daty a eliminuje závislost na cloudových službách s uzavřeným kódem.
Nastavení prostředí a vytvoření GPG klíče
Před začátkem práce je nutné nainstalovat základní software. V Arch Linux použijte sudo pacman -S gnupg git-crypt, v Debian/Ubuntu — sudo apt install gnupg git-crypt. Po instalaci je důležité nastavit správná přístupová práva pro adresář GPG:
chmod 700 ~/.gnupg
find ~/.gnupg -type f -exec chmod 600 {} \;
find ~/.gnupg -type d -exec chmod 700 {} \;
Další krok — generace asymetrického klíče pomocí příkazu gpg --full-generate-key. V procesu vytváření zvolte:
- Typ klíče: RSA (volba 1).
- Velikost: 4096 bitů.
- Platnost: 0 (neomezená).
- Identifikační údaje: jméno a email.
- Heslo — bude vyžadováno při každém odemčení repozitáře.
Pro pohodlí můžete nastavit ukládání hesla do cache na 24 hodin, přidáním řádků default-cache-ttl 86400 a max-cache-ttl 86400 do ~/.gnupg/gpg-agent.conf, poté spusťte gpgconf --reload gpg-agent.
Inicializace repozitáře s git-crypt
Přejděte do adresáře s poznámkami a inicializujte Git repozitář: cd ~/notes && git init. Poté spusťte git-crypt init pro nastavení šifrování a přidejte svůj GPG klíč do seznamu důvěryhodných: git-crypt add-gpg-user --trusted [email protected]. Kriticky důležité je správně nastavit soubory .gitignore a .gitattributes. V .gitignore vylučte dočasné a systémové soubory Obsidianu:
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/cache
.trash/
V .gitattributes určete, které soubory mají být šifrovány git-crypt. Příklad konfigurace:
.gitattributes !filter !diff
.gitignore !filter !diff
*.md filter=git-crypt diff=git-crypt
*.canvas filter=git-crypt diff=git-crypt
*.png filter=git-crypt diff=git-crypt
*.jpg filter=git-crypt diff=git-crypt
*.jpeg filter=git-crypt diff=git-crypt
*.pdf filter=git-crypt diff=git-crypt
Pořadí commitů má význam. Nejprve zcommitujte .gitattributes, poté ostatní soubory. Toto zabrání odeslání nezašifrovaných dat do vzdáleného repozitáře.
git add .gitattributes
git commit -m "$(date '+%Y-%m-%d %H:%M')"
git add .
git commit -m "$(date '+%Y-%m-%d %H:%M')"
Zkontrolujte stav šifrování příkazem git-crypt status | grep WARNING. Poté nastavte vzdálený repozitář a proveďte první push.
Integrace s Obsidianem a automatizace
Pro práci s Git přímo z Obsidianu nainstalujte plugin Obsidian Git (autor Vinzent) přes nastavení programu. Plugin umožňuje provádět základní operace — pull, commit, push — přes grafické rozhraní nebo podle plánu. Důležité pravidlo: vždy odemkněte repozitář příkazem git-crypt unlock v terminálu před spuštěním Obsidianu. V opačném případě program zobrazí binární data místo textu poznámek a plugin může odeslat nesprávné commity.
Pro zvýšení bezpečnosti nastavte pre-commit hook, který zabrání commitu nezašifrovaných souborů. Vytvořte spustitelný soubor .githooks/pre-commit s následujícím obsahem:
#!/bin/bash
for file in $(git diff --cached --name-only); do
if git check-attr filter "$file" | grep -q "git-crypt"; then
string=$(git show ":$file" 2>/dev/null | head -c 9)
if [ "$string" != $'\x00GITCRYPT' ]; then
echo "file '$file' is not encrypted - be careful"
exit 1
fi
fi
done
exit 0
Poté nastavte Git, aby používal tento adresář pro hooky: git config core.hooksPath .githooks.
Migrace a zálohování
Pro přenos nastavení na nové zařízení exportujte tajný GPG klíč ze starého počítače: gpg --export-secret-keys --armor [email protected] > ~/key.asc. Zkopírujte soubor bezpečným způsobem (například přes scp), importujte na novém zařízení příkazem gpg --import, naklonujte repozitář a proveďte git-crypt unlock. Po úspěšné migraci odstraňte soubor klíče z obou zařízení. Nezapomeňte vytvořit záložní kopii GPG klíče a uložit ji na bezpečném místě, například v správci hesel. Bez klíče a hesla bude přístup k zašifrovaným poznámkám nemožný.
Alternativa: symetrické šifrování
Pokud nastavení GPG připadá příliš složité, git-crypt podporuje práci se symetrickými klíči. Exportujte klíč příkazem git-crypt export-key ~/key.bin. Pro pohodlí uložení jej můžete převést na base64 řetězec: base64 -i ~/key.bin. Tento řetězec lze uložit v správci hesel. Pro odemčení na jiném zařízení dekódujte řetězec zpět do binárního souboru a použijte ho: echo "base64 string" | base64 -d > key.bin && git-crypt unlock key.bin. Uvědomte si, že tato metoda je méně bezpečná: klíč není chráněn dodatečným heslem a jeho kompromitace povede k odhalení dat.
Co je důležité
- Úplná kontrola nad daty: Všechny poznámky jsou uloženy ve vašem Git repozitáři s použitím end-to-end šifrování AES-256.
- Průhlednost procesu: Šifrování a dešifrování probíhá automaticky přes Git filtry, pracujete s běžnými soubory Markdown.
- Křížová platforma: Řešení funguje na Linux, macOS a Windows (přes WSL nebo native Git).
- Automatizace synchronizace: Plugin Obsidian Git umožňuje nastavit automatické commity a pushy podle plánu.
- Dodatečná ochrana: Pre-commit hook zabraňuje náhodnému odeslání nezašifrovaných souborů do vzdáleného repozitáře.
— Editorial Team
Zatím žádné komentáře.