Synchronizacja notatek obsidian na własnym serwerze

Jak zsynchronizować notatki Obsidian na wielu urządzeniach bez płacenia €4/miesiąc. Self-hosted CouchDB + Livesync plugin = pełna kontrola danych. Setup 1 dzień, oszczędności €24/rok na osobę.
docker
tutorial
self-hosted
Author

De. Os.

Published

March 19, 2024

Docker + Obsidian + CouchDB + Synchronizacja Multi-Device

Rzeczywisty case study: 2 lata używania samodzielnie hostowanej synchronizacji na różnych urządzeniach (laptop, telefon, tablet, podczas podróży)

Czas setup’u: 1 dzień

Oszczędności: €4 / miesiąc / użytkownika

Liczba użytkowników: Nieograniczona

PROBLEM

Dużo notujesz.

Używasz Obsidiana, bo jest świetny, jest Markdown-based, local-first, elastyczny, działa na wszystkich urządzeniach. Notujesz wszędzie.

Ale: - Piszesz na laptopie w domu - Dodajesz szybkie notatki na telefonie w ciągu dnia - Szkicujesz na tablecie z klawiaturą Bluetooth podczas podróży - Może pracujesz w małym zespole (5 osób) i wszyscy potrzebują dostępu

Oficjalne rozwiązanie? Obsidian Sync (€4/miesiąc na osobę)

Problem? To €20/miesiąc dla 5-osobowego zespołu. Lub €24/rok dla jednej osoby i dane w chmurze obsidiana.

Lepsze rozwiązanie? Synchronizacja hostowana samodzielnie.

ROZWIĄZANIE: SAMODZIELNA SYNCHRONIZACJA

Stack: - CouchDB (baza danych do synchronizacji) - Docker (deployment) - Obsidian Livesync (wtyczka społeczności) - CloudFlare Tunnel (dostęp zdalny, opcjonalnie)

Jak to działa:

Laptop (Docker z CouchDB)
       ↓
    Telefon (Obsidian) ← synchronizacja ↔ Tablet (Obsidian)
       ↓
CloudFlare Tunnel (opcjonalnie dostęp zdalny)

Rzeczywiste przykłady w akcji:

  1. Moje doświadczenie
    • Stary Laptop jako serwer domowy z cloduflare tunnel i dostępem remote
    • Telefon: Aplikacja Obsidian
    • Tablet z klawiaturą bluetooth w podróży,
    • Rezultat: Notatki synchronizowane natychmiast na wszystkich urządzeniach
  2. Moje drugie doświadczenie
    • Docker na Laptopie w podróży
    • Obsidian w telefonie
    • Rezultat: Notatki na wszystkich urządzeniach lokalnie, bez internetu, gdy oba urządzenia są włączone
  3. Mały zespół (5 osób)
    • Serwer: VPS lub serwer domowy z Dockerem
    • Członkowie zespołu: Każdy ma Obsidiana na laptopie + telefonie
    • Kolaboracja: Wszystkie notatki synchronizowane, wszyscy widzą aktualizacje natychmiast
    • Koszt: €20/miesiąc VPS podzielony między 5 osób = €1.5/osoba
  4. Pracownik hybrydowy (biuro + dom + mobile)
    • Laptop w biurze: Zsynchronizowany
    • Laptop w domu: Zsynchronizowany
    • Telefon w drodze: Zsynchronizowany
    • Tablet z klawiaturą: Pełne doświadczenie pisania, zsynchronizowane

CZĘŚĆ 1: SETUP - DOCKER COMPOSE

Utwórzmy plik docker-compose.yml - wystarczy uruchomić następną komórkę.

%%writefile docker-compose.yml

services:
  couchdb:
    image: couchdb:latest
    container_name: obsidian-livesync
    ports:
      - "5984:5984"
    environment:
      - COUCHDB_USER=admin
      - COUCHDB_PASSWORD=changeme  # ZMIEŃ TO!
    volumes:
      - ./obsidian_livesync/data:/opt/couchdb/data
    restart: unless-stopped
Overwriting docker-compose.yml

Uruchom CouchDB:

# Uruchom CouchDB
!docker-compose up -d --quiet-pull
#
print("✓ CouchDB się uruchamia...")
print("  Dostęp: http://localhost:5984/_utils")
print("  Domyślnie: admin / changeme")
[+] Running 1/2

  Network docker_default       Created                                    0.1s 

  Container obsidian-livesync  Starting                                   0.0s 

[+] Running 1/2

  Network docker_default       Created                                    0.1s 

  Container obsidian-livesync  Starting                                   0.1s 

[+] Running 2/2

  Network docker_default       Created                                    0.1s 

  Container obsidian-livesync  Started                                    0.1s 

✓ CouchDB się uruchamia...

  Dostęp: http://localhost:5984/_utils

  Domyślnie: admin / changeme

image.png

Sprawdź czy działa:

!docker ps | grep obsidian-livesync
9aec1ea463a7   couchdb:latest        "tini -- /docker-ent…"   23 seconds ago   Up 21 seconds                   4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp, :::5984->5984/tcp                        obsidian-livesync

CZĘŚĆ 2: KONFIGURACJA OBSIDIAN LIVESYNC

Krok 1: Zainstaluj wtyczkę Obsidian Livesync

W Obsidianie: 1. Ustawienia → Wtyczki społeczności → Przeglądaj 2. Szukaj: “Obsidian Livesync” 3. Zainstaluj + Włącz

Krok 2: Skonfiguruj Livesync

Ustawienia → Obsidian Livesync → “Couchdb Connection”

Wypełnij: - URI: http://localhost:5984 (albo IP twojego serwera) - Database Name: obsidian-notes - Username: admin - Password: changeme (twoje hasło)

Kliknij: “Zapisz i testuj połączenie”

Oczekiwany rezultat:

✓ Połączenie udane
✓ Baza utworzona: obsidian-notes
✓ Synchronizacja włączona

CZĘŚĆ 3: SETUP MULTI-DEVICE

Powtórz te same czynności co w części 2 dla innych urządzeń.

CZĘŚĆ 4: DOSTĘP ZDALNY (OPCJONALNIE)

Po co?

Jeśli nie jesteś w tej samej sieci lokalnej, potrzebujesz dostępu zdalnego.

Opcje:

  1. CloudFlare Tunnel (rekomendowane, łatwe)
  2. VPN (bardziej bezpieczne, bardziej skomplikowane)
  3. Tailscale VPN - darmowy vpn do 3 użytkowników i 100 urządzeń tworzy sieć ze stałym IP dla każdego urządzenia

CZĘŚĆ 5: BEZPIECZEŃSTWO I BEST PRACTICES

print("LISTA KONTROLNA BEZPIECZEŃSTWA")
print("=" * 60)

security = [
    ("✓", "Zmień domyślne hasło", "COUCHDB_PASSWORD w docker-compose.yml"),
    ("✓", "Używaj tylko HTTPS", "CloudFlare Tunnel robi to automatycznie"),
    ("✓", "Włącz szyfrowanie", "Passphrase w ustawieniach Obsidian Livesync"),
    ("✓", "Regularne kopie zapasowe", "Backupuj /couchdb_data regularnie"),
    ("✓", "Firewall", "Jeśli publiczny: tylko CloudFlare IPs albo VPN"),
    ("✓", "Aktualizuj obrazy Docker", "docker pull couchdb:latest regularnie"),
]

for check, task, detail in security:
    print(f"{check} {task}")
    print(f"    → {detail}")
LISTA KONTROLNA BEZPIECZEŃSTWA
============================================================
✓ Zmień domyślne hasło
    → COUCHDB_PASSWORD w docker-compose.yml
✓ Używaj tylko HTTPS
    → CloudFlare Tunnel robi to automatycznie
✓ Włącz szyfrowanie
    → Passphrase w ustawieniach Obsidian Livesync
✓ Regularne kopie zapasowe
    → Backupuj /couchdb_data regularnie
✓ Firewall
    → Jeśli publiczny: tylko CloudFlare IPs albo VPN
✓ Aktualizuj obrazy Docker
    → docker pull couchdb:latest regularnie

CZĘŚĆ 8: ROZWIĄZYWANIE PROBLEMÓW

print("CZĘSTE PROBLEMY I ROZWIĄZANIA")
print("=" * 60)

issues = {
    "Połączenie odrzucone (5984)": [
        "✓ Sprawdź: !docker ps | grep couchdb",
        "✓ Jeśli nie działa: !docker-compose up -d",
        "✓ Czekaj 30 sekund na start CouchDB"
        "Sprawdź: !docker logs obsidian-couchdb | tail -10"
    ],
    "Obsidian nie może się połączyć": [
        "✓ Sprawdź URI: http://localhost:5984 (bez / na końcu)",
        "✓ Sprawdź hasło zgadza się z docker-compose.yml",
        "✓ Spróbuj: curl http://localhost:5984 w terminalu"
    ],
    "Synchronizacja nie działa": [
        "✓ Sprawdź status CloudFlare Tunnel (jeśli używasz)",
        "✓ Restartuj Livesync: wyłącz + włącz wtyczkę",
        "✓ Sprawdź Docker logi: docker logs obsidian-couchdb"
    ],
    "Wysokie użycie dysku": [
        "✓ CouchDB używa ~100MB na 10K notatek",
        "✓ Uruchom kompresję: curl -X POST http://localhost:5984/_compact",
        "✓ Lub: docker exec obsidian-couchdb couchdb-compact.sh"
    ]
}

for issue, solutions in issues.items():
    print(f"\n{issue}")
    for solution in solutions:
        print(f"  {solution}")
CZĘSTE PROBLEMY I ROZWIĄZANIA
============================================================

❌ Połączenie odrzucone (5984)
  ✓ Sprawdź: !docker ps | grep couchdb
  ✓ Jeśli nie działa: !docker-compose up -d
  ✓ Czekaj 30 sekund na start CouchDBSprawdź: !docker logs obsidian-couchdb | tail -10

❌ Obsidian nie może się połączyć
  ✓ Sprawdź URI: http://localhost:5984 (bez / na końcu)
  ✓ Sprawdź hasło zgadza się z docker-compose.yml
  ✓ Spróbuj: curl http://localhost:5984 w terminalu

❌ Synchronizacja nie działa
  ✓ Sprawdź status CloudFlare Tunnel (jeśli używasz)
  ✓ Restartuj Livesync: wyłącz + włącz wtyczkę
  ✓ Sprawdź Docker logi: docker logs obsidian-couchdb

❌ Wysokie użycie dysku
  ✓ CouchDB używa ~100MB na 10K notatek
  ✓ Uruchom kompresję: curl -X POST http://localhost:5984/_compact
  ✓ Lub: docker exec obsidian-couchdb couchdb-compact.sh

Jeżeli chcesz wyłączyć:

!docker-compose down
[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.1s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.2s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.3s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.4s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.5s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.6s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.7s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.8s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   0.9s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   1.0s 

[+] Running 0/1

  Container obsidian-livesync  Stopping                                   1.1s 

[+] Running 1/2

  Container obsidian-livesync  Removed                                    1.2s 

  Network docker_default       Removing                                   0.0s 

[+] Running 1/2

  Container obsidian-livesync  Removed                                    1.2s 

  Network docker_default       Removing                                   0.1s 

[+] Running 2/2

  Container obsidian-livesync  Removed                                    1.2s 

  Network docker_default       Removed                                    0.2s 

Dalsze Kroki

  1. Testuj lokalnie najpierw (docker-compose up -d)
  2. Testuj na 2 urządzeniach (laptop + telefon)
  3. Jeśli działa: Rozważ VPS lub CloudFlare Tunnel do dostępu zdalnego
  4. Skaluj na zespół: Ten sam setup, dodaj więcej użytkowników Obsidiana

Powiązana zawartość

👉 Jak synchronizuję notatki w podróży kamperem — (nomaid.blog)

Inne alternatywy dla lifesync i historia użycia.

Chcesz pomocy w setup’ie tego dla twojego zespołu?

Pomagam wdrażać samodzielnie hostowane rozwiązania infrastruktury.

👉 Sprawdź co mogę dla Ciebie zrobić

Więcej o samodzielnym hostowaniu:

oftionn.com — Automatyzacja, Smart Home, Home Cloud, Prywatność Danych