Quartz를 통한 옵시디언 노트 퍼블리싱 하기

옵시디언

옵시디언 볼트에서 외부 공유를 하고 싶은 노트들이 있다면 Obsidian Publish를 사용하면 된다. 유료 서비스로 월 8달러가 필요하다. 웹 호스팅 공간과 편의성을 생각하면 그렇게까지 나쁜 가격은 아니지만 나같은 경우 서버를 가지고 있으므로 굳이 유료 서비스를 이용할 필요가 없다. 그리고 옵시디언 볼트를 웹 사이트로 생성해주는 여러 프로젝트가 있다.

그중 Quartz를 사용하기로 한다. 여러 후기나 사이트에서 설명하는 것을 봤을 때 Quartz가 가장 심플해보이는게 결정했던 이유이다.

볼트내에 퍼블리시 폴더 추가


우선 나는 내 볼트 전체를 공개할 생각이 없다. 내 볼트에서의 특정 폴더에 있는 내용만 공개하려고 한다. 이를 위해서 공개용 폴더를 하나 추가하였다.

이 폴더 하위에 있는 노트들만 외부 공유를 할 것이다

그리고 이 경로에 꼭 필요한 index노트를 하나 추가해주었다. 이 index노트가 바로 생성되는 웹 사이트의 메인 페이지가 된다.

서버에서 Quartz 내려받기


서버 머신에서 다음을 통해 quartz를 내려받는다.

git clone https://github.com/jackyzha0/quartz.git
Bash

레이아웃이나 기타 환경설정 파일들이 포함된 프로젝트이기 때문에 나의 경우 내 저장소로 포크를 한다음 내려받았다. 추가로 변경한 파일들을 저장소로 다시 백업을 할 것이기 때문에 추후에 문제가 생겼을 때 다시 복구하기가 쉽다.

도커 이미지 빌드하기


내려받은 프로젝트 폴더로 가서 다음 명령어를 통해 도커 이미지를 생성한다.

cd quartz
sudo docker build .
Bash

빌드 이미지 확인 및 태그 추가


나는 도커의 관리를 포테이너를 통해서 하므로 이하 설정은 포테이너를 기준으로 하는것으로 작성되었다.
우선 포테이너를 통해 이미지 리스트 메뉴에서 신규 생성된 이미지를 찾는다.

신규 이미지를 좀 더 쉽게 사용하기 위해 tag를 추가한다.
quartz:cryun으로 추가하였다.

새로운 스택 추가


다음과 같은 컴포즈를 가지고 새로운 스택을 추가한다.

version: '3.8'
services:
  quartz:
    image: quartz:cryun
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - /obsidian_vault_path/999_Public:/usr/src/app/content
Bash

확인


서버 머신에서 localhost:8080으로 접속해 웹 페이지가 노출되는지 확인한다.
나는 리버스 프록시를 통해 https://wiki.cryun.pe.kr 로 연결했다.
잘 노출되는 것을 확인할 수 있다.

추가 과제


퍼블리쉬 노트의 이동

일단 내 볼트에서 외부 노출을 허용하는 노트를 일일히 퍼블리쉬 폴더에 옮기는 부분이 이슈가 된다. 내가 나름의 규칙을 가지고 정리하고 있는 폴더 구조에서도 깨지게 된다. 이동하는 노트에 연결되어 있는 노트도 문제가 된다. 옮겨진 노트만 웹 페이지가 생성되기 때문에 링크가 걸린 문서는 찾을 수 없게 된다.

이 부분을 해소하기 위해 퍼블리쉬 경로로 노트를 이동하는 것이 아닌 복사를 한다. 링크가 걸린 문서도 함께 복사가 되도록 한다. 이것을 일일히 손으로 하기 그러니 플러그인을 만들도록 한다. 현재 선택된 노트를 퍼블리쉬하는 플러그인이다. 이 플러그인을 통해 링크가 걸린 노트들을 모두 묶어서 퍼블리쉬 폴더로 복사하는 것이다.

문제는 노트가 복사되기 때문에 중복 노트가 발생한다는 것이다. 다행히도 옵시디언에 특정 폴더를 제외시키는 옵션이 있다.

이렇게 퍼블리쉬에 이용하는 폴더를 제외한다. 제외된 폴더는 그래프 뷰 및 검색에서 제외된다. 문서 링크나 빠른 열기 목록에서는 낮은 우선순위로 표시된다. 문서 링크와 빠른 열기 목록에서도 아예 제외시키는 옵션이 있었으면 더 좋았을 것 같지만 이정도도 충분할 것 같다.

엑스칼리드로우 문서의 렌더링

아쉽게도 quartz로 생성된 정적 사이트는 엑스칼리드로우 플러그인으로 만든 문서를 렌더링하지 못한다. 일단 첨부되는 이미지는 렌더링할 수 있고WordPress 플러그인 – Excalidraw 링크를 이미지 변환후 포스팅에서 진행했었던 부분이 도움이 될 것 같다. 퍼블리쉬 폴더로 노트를 복사하는 플러그인에 복사 이후 첨부되는 엑스칼리드로우 문서의 링크를 추출하고 이미지로 익스포트한 다음에 이 이미지로 링크를 다시 거는 것이다. 이를 통하면 퍼블리쉬 쪽은 엑스칼리드로우 문서 대신에 이미지가 렌더링되기 때문에 해소가 될 수 있다.

물론 옵시디언 앱에서처럼 엑스칼리드로우 문서를 수정하면 링크가 걸린 노트에서도 바로 반영이 되는 그런 장점은 없기 때문에 엑스칼리드로우 문서를 수정한 이후 이 문서가 포함된 옵시디언 노트를 다시 발행해야 하는 문제는 있다. 어차피 내가 원하는 타이밍에 내가 원하는 노트를 발행하는 구조이기 때문에 큰 상관은 없어보인다. 나중에 quartz에서 엑스칼리드로우 문서를 렌더링 해주면 좋고. 그 전까지는 이렇게 해소할 수 있을 것으로 보인다.

0 답글

댓글을 남겨주세요

Want to join the discussion?
Feel free to contribute!

답글 남기기

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