Obsidian과 Self-hosted LiveSync 서버를 동시에 설치
저는 메모(기록) 소프트웨어로 Joplin, affine 등을 설치하거나 사용하는 방법에 대해 소개를 한적이 있습니다. 하지만 두 프로그램 모두 하나씩 부족하다는 느낌을 지울수가 없었는데요, Joplin은 앱의 투박성과 add-on의 어려운 사용법 등, 그리고 affine은 동기화 문제..이런 단점들을 해결하고자 대안으로 Obsidian을 알아보고 있었습니다. 하지만 Obsidian도 동기화를 위해서는 일정 비용을 지불하고 구독을하거나 커뮤니티 플러그인인 remotely sync를 이용하는 방법으로 부분(?) 동기화를 진행하는 방법이 있는데… remotely sync는 Amazon s3, Dropbox, OneDrive, Webdav 등의 저장소를 동기화 하는 개념이므로 이를 이용하게되면 Self hosting 개념이 크게 없어지는 듯한 느낌을 지울 수 가 없었습니다. 이를 대체할 동기화 프로그램이 있는지 알아보는 도중에 Self-hosted LiveSync라는 플러그인이 있는 것을 확인하였습니다. Self-hosted LiveSync는 couchdb를 이용하여 동기화하는 프로그램이며, 실시간 동기화가 가능하다는 것을 확인하였습니다. (공식 플러그인이 아니므로 조금의 딜레이는 있을 수 있습니다.) 이번에는 Obsidian과 Self-hosted LiveSync를 시놀로지 Portainer의 Stack을 이용하여 어떻게 설치하고 연동하는지에 대해 소개하고자 합니다. 참고로 Self-hosted LiveSync만 설치하시고 싶으신 분은 시놀로지를 도커를 이용한 Obsidian 실시간 동기화 서버 설치하기 를 참조하시기 바랍니다.
Step 01. Docker에 폴더 및 기본 파일 셋팅하기
우선 시놀로지에 아래와 같이 obsidian 폴더를 만들고 그 안에 다시 couchdb 폴더를 만듭니다. 그리고 couchdb폴더 안에는local.ini 파일을 넣어주고, 이와함께 data 폴더를 만듭니다. (주의 사항 : 폴더명은 모두 소문자입니다.)
local.ini의 내용은 아래와 같습니다.
[couchdb]
single_node=true
max_document_size = 50000000
[chttpd]
require_valid_user = true
max_http_request_size = 4294967296
[chttpd_auth]
require_valid_user = true
authentication_redirect = /_utils/session.html
[httpd]
WWW-Authenticate = Basic realm="couchdb"
enable_cors = true
[cors]
origins = app://obsidian.md,capacitor://localhost,http://localhost
credentials = true
headers = accept, authorization, content-type, origin, referer
methods = GET, PUT, POST, HEAD, DELETE
max_age = 3600
Step 02. obsidian stacks compose
다음은 Portainer의 stacks에 아래와 같이 입력해주시면 됩니다.
코드는 아래와 같습니다. (24/04/18 : 언어팩 설치 코드 추가)
version: "3.9"
services:
obsidian:
container_name: Obsidian
image: ghcr.io/linuxserver/obsidian:latest
security_opt:
- no-new-privileges:false
- seccomp:unconfined
healthcheck:
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3000' || exit 1
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
environment:
CUSTOM_USER: danny
PASSWORD: yourpassword
TZ: Asia/Seoul
PUID: 1026
PGID: 100
DOCKER_MODS: linuxserver/mods:universal-package-install
INSTALL_PACKAGES: fonts-noto-cjk
LC_ALL: zh_CN.UTF-8
volumes:
- /volume1/docker/obsidian:/config:rw
ports:
- 3421:3000
shm_size: "5gb"
restart: on-failure:5
couchdb:
image: couchdb
container_name: obsidian-livesync
user: 1026:100
environment:
- COUCHDB_USER=couAdmin # enter the desired CouchDB admin username
- COUCHDB_PASSWORD=coupwDb # enter the desired CouchDB admin password
volumes:
- /volume1/docker/obsidian/couchdb/data:/opt/couchdb/data
- /volume1/docker/obsidian/couchdb/local.ini:/opt/couchdb/etc/local.ini
ports:
- 5984:5984
restart: unless-stopped
여기에서 CUSTOM_USER: danny, PASSWORD: yourpassword 에는 자신이 사용하고자하는 ID와 Password를 작성해주시면되고, TZ: Asia/Seoul는 살고계시는 곳의 시간… 그리고 PUID: 1026 , PGID: 100는 설치하고자 하는 시놀로지의 puid와 pgid 값을 입력하면 됩니다. 마지막으로 COUCHDB_USER=couAdmin와 COUCHDB_PASSWORD=coupwDb는 플러그인의 데이터 베이스 접속에 사용할 ID와 PW를 설정해주시면 됩니다. 그리고 기본으로 제공되는 언이 이외의 언어를 사용하기 위하여 DOCKER_MODS: linuxserver/mods:universal-package-install 문구를 추가해 주시면 됩니다.
Step 03. obsidian vault 생성하기
설치가 완료된 후 http://local.ip:3421 로 접속하시면 아래 그림과 같이 ID와 PW를 입력하라고 요구하는데, 위에서 작성하신 CUSTOM_USER: danny, PASSWORD: yourpassword 값을 입력하면 됩니다. 그리고 아래 그림과 같이 Vault을 Config Location에 생성해주면 됩니다.
Step 04. obsidian Self-hosted LiveSync plugins 설치 하기
그림과 같이 좌측 하단에 있는 환경설정 아이콘을 클릭 한 후 community plugins를 선택하고, 우측 하단에 있는 Turn on community plugins 버튼을 눌러 활성화 시켜 줍니다.
그다음엔 Browse를 선택한 후 검색창에서 Self-hosted LiveSync를 적은 후 플러그인을 선택 후 Install을 진행하고 Enable을 눌러줍니다.
Step 05. obsidian Self-hosted LiveSync plugins 설정하기
마법사 아이콘을 클릭한 후 Start 버튼을 누르면 URI와 username, password 등을 입력하는 곳이 나옵니다. URI의 경우 글로벌IP에 Port를 열어서 접속할 수 있도록 설정하거나, 역방향 프록시 설정을 통해서 외부 접속 가능한 주소를 생성 해줍니다. 그리고 username, password는 COUCHDB_USER=couAdmin와 COUCHDB_PASSWORD=coupwDb에서 적은 ID와 PW를 각각 적어줍니다. 마지막으로 Database name은 원하는 이름을 적어 주시면 됩니다. 그리고 마지막으로 아래에 Check 버튼을 눌러 그림과 같이 Config Check에서 OK가 뜨면 연결이 완료 된 것입니다.
그리고 Next를 눌러준 후 Sync Settings에서 Presets를 LiveSync로 선택한 후 Apply 버튼을 눌러줍니다. 그러면 Do you want to restart and reload Obsidian now? 라는 메시지가 나오고, OK를 누르면 잠시 화면이 새로고침이 되었다가 바뀌게 되면서 아래 그림과 같이 Sync 가 활성화 되는 것을 확인 하실 수 있습니다.
마지막으로 저도 아직 확은은 해보지 않았지만 Customization Sync의 옵션을 활성화하면 플러그인 등도 함께 동기화 된다고하니 적용하시면 유용할 듯 합니다.
(24/04/18추가) 기본 제공이외의 언어를 입력하기 위해서는 KasmVNC의 설정에서 아래와 같이 IME 입력 모드를 활성화 해주시면 됩니다.
이상으로 Synology NAS에 Obsidian과 Self-hosted LiveSync을 설치하고 연동하는 방법에 대해 소개를 해 드렸습니다.
서브 기기에서 Self-hosted LiveSync를 설정하거나, 기존 로컬 PC에서 사용하시던 분이나 Web 버전이 필요없으시고, Self-hosted LiveSync만 설치하시고 싶으신 분은 시놀로지를 도커를 이용한 Obsidian 실시간 동기화 서버 설치하기 를 참조하시기 바랍니다.