내 노트는 내 서버에 — Obsidian LiveSync + CouchDB 셀프호스팅

작성자

카테고리:

내 노트는 내 서버에 — Obsidian LiveSync + CouchDB 셀프호스팅

셀프호스팅 구축기 13편. 블로그를 내 서버에 올렸으면, 메모도 내 서버에 둘 수 있다.

← 이전 편: 12편 — 새벽마다 NAS로 (tar+ssh 백업)
→ 다음 편: 14편 — 손 안 가는 서버 (cron 자동화)

요약

  • Obsidian 공식 싱크는 월정액 — 노트를 내 서버 데이터베이스에 직접 동기화하면 비용 0원 + 데이터 주권
  • 방법: Self-hosted LiveSync 플러그인 ↔ CouchDB(도커 컨테이너) 실시간 양방향
  • CouchDB는 반드시 127.0.0.1에만 묶는다 — 도커가 자동으로 0.0.0.0에 여는 함정을 조심
  • 내 기기들만 닿게: 사설 네트워크(VPN 메시) 안에서만 접근, 인터넷에는 비공개
  • 삽질 일지: ERR_SSL_PROTOCOL_ERROR의 범인은 인증서가 아니라 “뒤에 서버가 안 떠 있던 것”

1. 왜 공식 싱크 대신 셀프호스트인가

Obsidian(옵시디언)은 노트 앱이고, 여러 기기에서 같은 노트를 보려면 동기화가 필요하다. 공식 Sync는 잘 되지만 월정액이다. 그리고 내 메모가 남의 서버를 거친다.

이미 블로그용 서버가 굴러가고 있으니, 노트 동기화도 거기 얹으면 된다.

항목 공식 Sync Self-hosted LiveSync
비용 월정액 0원 (내 서버)
데이터 위치 회사 서버 내 서버
설정 난이도 켜면 끝 직접 구성 필요
동기화 빠름 실시간 양방향

대가는 “직접 구성”이다. 한 번 세우면 그 뒤로는 공식만큼 매끄럽다.

2. 구조 — 플러그인 ↔ CouchDB

CouchDB(카우치DB)는 변경분을 실시간으로 주고받는 데 강한 데이터베이스다. LiveSync 플러그인이 노트가 바뀔 때마다 CouchDB로 보내고, 다른 기기는 그걸 당겨 온다.

flowchart LR
    PC[노트북 Obsidian] -->|변경분| DB[(CouchDB / 내 서버 도커)]
    Phone[폰 Obsidian] -->|변경분| DB
    DB -->|동기화| PC
    DB -->|동기화| Phone

3. 절대 0.0.0.0에 열지 마라

여기가 가장 중요하다. CouchDB를 도커로 그냥 띄우면 포트가 0.0.0.0(모든 네트워크 인터페이스)에 열린다. 이러면 같은 와이파이의 다른 기기, 심지어 잘못 설정된 공유기 너머까지 내 데이터베이스가 노출된다.

ports:
  - "5984:5984"             # 위험: 0.0.0.0, 모든 인터페이스에 노출
  - "127.0.0.1:5984:5984"   # 안전: 내 컴퓨터 자신만 접근

127.0.0.1에만 묶으면 서버 바깥에서는 보이지 않는다. 그럼 폰은 어떻게 접속하냐고? 사설 네트워크(VPN 메시) 안에서만 닿게 한다. 내 기기들끼리만 연결된 가상 LAN을 만들고, CouchDB는 그 안에서만 https로 노출한다. 인터넷 전체에는 끝까지 비공개다.

4. 삽질 일지 — ERR_SSL_PROTOCOL_ERROR

설정을 마치고 https 주소로 접속했더니 브라우저가 ERR_SSL_PROTOCOL_ERROR를 뱉었다. 당연히 인증서 문제인 줄 알고 인증서만 한참 들여다봤다. 아니었다.

진짜 원인은 단순했다. CouchDB 컨테이너 자체가 안 떠 있었다. https 주소(앞단)는 만들어 놨는데 그 뒤에서 받아 줄 서버가 없으니, TLS 연결이 끝까지 맺어지지 못하고 브라우저가 “SSL 오류”로 보고한 것이다.

교훈: “SSL 에러”가 항상 인증서 문제는 아니다. 앞단(주소·인증서)과 뒷단(실제 서버)을 나눠서, 뒷단이 살아 있는지부터 확인하자. curl로 백엔드 포트를 직접 찔러 보면 5초 만에 갈린다.


한 줄 정리

노트 동기화도 내 서버로 가져올 수 있다 — LiveSync 플러그인 + CouchDB면 구독료 0원. 단, CouchDB는 127.0.0.1에만 묶고 사설 네트워크로만 접근. 그리고 ERR_SSL_PROTOCOL_ERROR를 만나면 인증서보다 뒷단 서버가 살아 있는지를 먼저 의심하자.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다