Powrót do strony głównej

Bezpieczna synchronizacja Obsidian: Git i szyfrowanie

Szczegółowy przewodnik po konfiguracji bezpiecznej synchronizacji notatek w Obsidian z wykorzystaniem Git i narzędzia git-crypt do szyfrowania end-to-end. Artykuł obejmuje tworzenie klucza GPG, inicjalizację repozytorium, integrację z wtyczką Obsidian Git, konfigurację haków pre-commit i metody tworzenia kopii zapasowych.

Jak synchronizować Obsidian z szyfrowaniem: pełny gajd
Advertisement 728x90

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:

Google AdInline article slot
  • 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:

Google AdInline article slot
.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.

Google AdInline article slot

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

Advertisement 728x90

Czytaj dalej