Obsidian Live-Sync

현재 옵시디언을 사용하고 있지만 사용하고 있는 기기별로 실시간 동기화가 되지 않기 때문에 옵시디언 셀프 라이브 싱크 서버를 도커로 올려 플러그인을 사용하려고 합니다.

말이 싱크 서버지 사실은 couchdb라는 DB를 도커로 올리고 플러그인으로 데이터를 기록하는 것입니다.

그렇기 때문에 처음 사용해 보는 생소한 DB이므로 올리고 나면 약간의 세팅이 필요하게 됩니다.

해당 내용은 아래의 내용을 참고하여 작성하였습니다.

CouchDB 설치 가이드

위 가이드에 따르면 docker-compose.yml의 예시를 Traefik 레이블을 붙여서 설명 해놓았으나 현재 본인은 tailscale을 통해 서버를 외부로 공개하지 않고 사용하기 때문에 reverse proxy가 필요하지 않고 필요한 경우 tailscale을 통해 해결할 수 있기 때문에 Traefik과 필요 없는 사항에 대해서는 지우고 docker를 올리도록 하겠습니다.

version: "2.1"

services:

  couchdb-obsidian-livesync:

    container_name: obsidian-livesync # 도커 컨테이너 이름

    image: couchdb:latest

    environment:

      - COUCHDB_USER=Obsidian # 이대로 사용하셔도 되나 필요시 바꾸세요

      - COUCHDB_PASSWORD=ObsidianPassword # 반드시 변경해 주세요

    volumes:

      - ./data:/opt/couchdb/data

      - ./etc/local.d:/opt/couchdb/etc/local.d

    ports:

      - "5984:5984"

    restart: unless-stopped

위와 같이 docker-compose.yml를 작성하고 저장해 줍니다.

$ docker compose up -d

위 명령어를 사용하여 도커 컨테이너를 작동 시켜주세요

couchDB는 웹에 접속해서 DB를 세팅해 주어야 합니다.

주소는 localhost:5984/_utils 혹은 127.0.0.1:5984/_utils 언더바도 그대로 작성해 주셔야 합니다.

접속하게 되면 아래와 같은 화면이 나타나게 됩니다.

Username과 Password는 아까 docker-compose.yml에서 작성하였던 내용을 기재해 주시면 됩니다.

아래와 같이 설정 아이콘을 클릭하여 다음 과정으로 넘어가 주세요.

다음으로 Configure as Single Node를 클릭

다른 항목은 건드리지 않고 1번의 사용자 아이디와 비밀번호를 입력하고 Configure Node를 실행해 주세요.

완료 시 아래와 같은 화면이 나오게 됩니다.

Databases 화면으로 넘어가면 _replicator, _users DB가 생성된 모습을 확인 할 수 있습니다.

Databases 화면에서 Create Database를 눌러 우리들의 Obsidian 데이터를 저장할 DB를 만들어 줍니다. 이때 단순하게 Obsidian, ObsidianDB, 등 가볍게 지으셔도 상관없지만 추가로 다른 사용자분들과 같이 사용하실 계획이라면 Obsidian_NickName 이런 식으로 작성하여 여러 사용자의 DB를 명시시켜 주시는 것이 좋습니다.

Partitioning은 Non-Partitioned로 설정해 주시면 됩니다.

다음은 설정 화면으로 넘어가서 오른쪽 위 +Add Option 버튼을 눌러 기본에 없는 옵션들을 추가해 줍니다.

아래 표에 옵션들을 추가해 줍니다.

Section Option Name Value
chttpd require_valid_user true
chttpd_auth require_valid_user true
httpd WWW-Authenticate Basic realm="couchdb"
httpd enable_cors true
chttpd enable_cors true
chttpd max_http_request_size 4294967296
couchdb max_document_size 50000000
cors credentials true
cors origins app://obsidian.md,capacitor://localhost,http://localhost

이것으로 CouchDB의 세팅은 끝났습니다.

하지만 이 상태에서 도커 컨테이너 log를 확인해 보시면 _users DB가 없다고 하면서 에러 로그를 계속 작성하고 있기 때문에 docker를 다시 실행해 줍니다.

$ sudo docker compose down
$ sudo docker compose up -d

이제 LiveSync 플러그인을 설정해 주시면 됩니다.

플러그인을 활성화하면 마법사로 easy wizard로 설정하라고 할 텐데 그냥 무시하시고 아래 메뉴를 띄워 주시기를 바랍니다.

  • Remote Type = CouchDB
  • URL = http://localhost:5984 or http://127.0.0.1:5984 (혹은 본인이 세팅하신도메인 주소 혹은 ip주소 및 포트를 입력해 주세요)
  • Username = 아까 작성했던 DB user명을 작성하시면 됩니다.
  • Password = 설정하셨던 DB Password를 작성해 주세요
  • Database name = Obsidian_NickName
  • Test Database Connection = 옆에 Test 버튼을 눌러 DB와 정상적으로 연결되었는지 확인해주세요 정상적으로 연결되면 Connected to Obsidian_NickName successfully라고 오른쪽 상단에 나타나게 됩니다.
  • Apply Settings = Apply버튼을 물러 설정을 저장해 주세요

그리고 아래로 쭉 스크롤을 내리면 End-to-End Encryption 옵션을 확인하실 수 있습니다. 종단간 암호화 방식을 지원하기 때문에 해당 옵션을 켜서 비밀번호를 쓰면 다른 장치에서도 해당 옵션을 켜고 비밀번호를 입력해야 내용을 확인하실 수 있습니다.

다음 카테고리를 아래와 같이 변경하여
Sync Mode를 LiveSync로 바꾸시면 실시간으로 내용을 동기화 시키실 수 있습니다.

참조
Setup a CouchDB server
CouchDB 옵션 세팅
Guide: Obsidian with free, self-hosted, instant sync