Bezpieczna synchronizacja Obsidian z Git i szyfrowaniem end-to-end
Synchronizacja notatek Obsidian między urządzeniami z zachowaniem prywatności — zadanie, które można rozwiązać za pomocą Git i narzędzia git-crypt do przejrzystego szyfrowania. To podejście zapewnia pełną kontrolę nad danymi, eliminując zależność od usług chmurowych z zamkniętym kodem.
Konfiguracja środowiska i tworzenie klucza GPG
Przed rozpoczęciem pracy należy zainstalować podstawowe oprogramowanie. W Arch Linux użyj sudo pacman -S gnupg git-crypt, w Debian/Ubuntu — sudo apt install gnupg git-crypt. Po instalacji ważne jest skonfigurowanie prawidłowych uprawnień dostępu dla katalogu GPG:
chmod 700 ~/.gnupg
find ~/.gnupg -type f -exec chmod 600 {} \;
find ~/.gnupg -type d -exec chmod 700 {} \;
Następny krok — generacja klucza asymetrycznego za pomocą polecenia gpg --full-generate-key. W procesie tworzenia wybierz:
- Typ klucza: RSA (opcja 1).
- Rozmiar: 4096 bitów.
- Okres ważności: 0 (nieograniczony).
- Dane identyfikacyjne: imię i email.
- Fraza hasła — będzie wymagana przy każdej odblokowaniu repozytorium.
Dla wygody można skonfigurować buforowanie hasła na 24 godziny, dodając do ~/.gnupg/gpg-agent.conf linie default-cache-ttl 86400 i max-cache-ttl 86400, a następnie wykonać gpgconf --reload gpg-agent.
Inicjalizacja repozytorium z git-crypt
Przejdź do katalogu z notatkami i zainicjuj repozytorium Git: cd ~/notes && git init. Następnie wykonaj git-crypt init dla konfiguracji szyfrowania i dodaj swój klucz GPG do listy zaufanych: git-crypt add-gpg-user --trusted [email protected]. Kluczowe jest prawidłowe skonfigurowanie plików .gitignore i .gitattributes. W .gitignore wyklucz tymczasowe i systemowe pliki Obsidian:
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/cache
.trash/
W .gitattributes wskaż, które pliki powinny być szyfrowane przez git-crypt. Przykład konfiguracji:
.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
Kolejność commitów ma znaczenie. Najpierw zcommit .gitattributes, potem pozostałe pliki. Zapobiega to wysyłaniu niezaszyfrowanych danych do zdalnego repozytorium.
git add .gitattributes
git commit -m "$(date '+%Y-%m-%d %H:%M')"
git add .
git commit -m "$(date '+%Y-%m-%d %H:%M')"
Sprawdź status szyfrowania poleceniem git-crypt status | grep WARNING. Następnie skonfiguruj zdalne repozytorium i wykonaj pierwszy push.
Integracja z Obsidian i automatyzacja
Do pracy z Git bezpośrednio z Obsidian zainstaluj wtyczkę Obsidian Git (autor Vinzent) przez ustawienia programu. Wtyczka umożliwia wykonywanie podstawowych operacji — pull, commit, push — przez interfejs graficzny lub zgodnie z harmonogramem. Ważna zasada: zawsze odblokuj repozytorium poleceniem git-crypt unlock w terminalu przed uruchomieniem Obsidian. W przeciwnym razie program wyświetli dane binarne zamiast tekstu notatek, a wtyczka może wysłać nieprawidłowe commity.
Dla zwiększenia bezpieczeństwa skonfiguruj pre-commit hook, który zapobiegnie commitowi niezaszyfrowanych plików. Utwórz plik wykonywalny .githooks/pre-commit z następującą zawartością:
#!/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 "plik '$file' nie jest zaszyfrowany, bądź ostrożny"
exit 1
fi
fi
done
exit 0
Następnie wskaż Git, aby używał tego katalogu dla hooków: git config core.hooksPath .githooks.
Migracja i tworzenie kopii zapasowych
Do przenoszenia ustawień na nowe urządzenie wyeksportuj sekretny klucz GPG ze starej maszyny: gpg --export-secret-keys --armor [email protected] > ~/key.asc. Skopiuj plik w bezpieczny sposób (np. przez scp), zaimportuj na nowym urządzeniu poleceniem gpg --import, sklonuj repozytorium i wykonaj git-crypt unlock. Po udanej migracji usuń plik klucza z obu urządzeń. Koniecznie utwórz kopię zapasową klucza GPG i przechowuj ją w bezpiecznym miejscu, np. w menedżerze haseł. Bez klucza i frazy hasła dostęp do zaszyfrowanych notatek będzie niemożliwy.
Alternatywa: szyfrowanie symetryczne
Jeśli konfiguracja GPG wydaje się zbyt skomplikowana, git-crypt obsługuje pracę z kluczami symetrycznymi. Wyeksportuj klucz poleceniem git-crypt export-key ~/key.bin. Dla wygody przechowywania można przekształcić go w ciąg base64: base64 -i ~/key.bin. Ten ciąg można zapisać w menedżerze haseł. Do odblokowania na innym urządzeniu zdekoduj ciąg z powrotem do pliku binarnego i użyj go: echo "ciąg base64" | base64 -d > key.bin && git-crypt unlock key.bin. Pamiętaj, że ta metoda jest mniej bezpieczna: klucz nie jest chroniony dodatkową frazą hasła, a jego kompromitacja prowadzi do ujawnienia danych.
Co jest ważne
- Pełna kontrola nad danymi: Wszystkie notatki są przechowywane w twoim repozytorium Git z zastosowaniem szyfrowania end-to-end AES-256.
- Przejrzystość procesu: Szyfrowanie i odszyfrowywanie odbywają się automatycznie przez filtry Git, pracujesz ze zwykłymi plikami Markdown.
- Wieloplatformowość: Rozwiązanie działa na Linux, macOS i Windows (przez WSL lub natywny Git).
- Automatyzacja synchronizacji: Wtyczka Obsidian Git pozwala skonfigurować automatyczne commity i pushe według harmonogramu.
- Dodatkowa ochrona: Pre-commit hook zapobiega przypadkowemu wysłaniu niezaszyfrowanych plików do zdalnego repozytorium.
— Editorial Team
Brak komentarzy.