bookstack - 오픈소스 WIKI, 글쓰기 어플

시나리오, 소설, 에세이 작성 어플 스크리브너 버리고 Bookstack으로 정착

컴퓨터, 소프트웨어 2024년 1월 11일

글쓰기 어플을 찾아서

저는 음악 만드는 것도 좋아하지만 글쓰는 것도 꽤 좋아합니다. 한동안 정보글만 작성했는데 올해부터는 다시 문학적인 글도 좀 적어보려고 마음 먹었습니다.

한글, MS워드, 스크리브너, 에버노트, 원노트, 노션, 조플린 등 다양한 글쓰기, 노트 어플을 사용해봤습니다. 진짜 글쓰기에 집중하시는 분들은 한글이나 MS워드로도 잘 쓰시지만 저는 뭔가 세팅을 잘 해놔야 작업을 하는 스타일이라서 디자인이나 기능에 마음에 안드는 구석이 있으면 작업하다가도 자꾸 걸립니다. 맥에서만 사용할 수 있는 율리시스는 안써봤습니다.(애플의 OS 극혐해서 딱히 맥을 쓰고 싶지도 않고요.)

한글은 뭐 말할 것도 없는 단점 투성이이고, MS워드는 문학 글쓰는 느낌이 아니라 업무용 문서 만드는 느낌이라 집중이 안됩니다. 에버노트는 회사가 돈 독 올라서 안쓰지 오래고, 원노트는 손으로 필기할 때만 씁니다. 노션은 기능은 좋은데 언제 에버노트 처럼 돈달라고 할지 모르고 느려터져서 안쓰게 됩니다.

게다가 감성적이고 문학적인 글과 기술적이고 정보가 담긴 글을 분리하고 싶었습니다. 현재 문학 이외의 글(생활정보, 코드, 학술지식 등)은 전부 조플린(Joplin)으로 작성합니다.

스크리브너를 안쓰게 된 이유

글쓰기 어플 중에 가장 마음에 들었던 어플은 스크리브너입니다. 캐릭터 이름을 한번에 바꾼다든지 작업목표를 설정한다는지 등의 마음에 드는 기능이 많긴 했는데 기능이 필요이상으로 세분화되어 있기도 하고, 테마를 바꿔도 기본 UI가 진짜 마음에 안듭니다.

다른 어플은 기능이 너무 없거나 문학적인 글쓰기에 특화되지 않은 기능들이라 마음에 안들었다면 스크리브너는 글쓰기에 좋은 기능들이 있지만 UI가 저랑 안맞았습니다. 글쓰기 전에 템플릿 만들다가 에너지 다 닳아서 정작 글쓰기에는 집중이 안됐습니다. 그리고 무엇보다 컴퓨터마다 스크리브너를 설치해야 하고 온라인 작업(및 작업 동기화)이 안되는 것이 단점이었습니다. 동기화는 얼마든지 해결할 수 있지만 이미 정 떨어져서 다른 앱을 찾았습니다.

온라인 상에서 글쓰기 기능을 제공하는 사이트들도 있는데 보안이나 가격 때문에 꺼려지기도 합니다.

오픈소스 글쓰기 어플

요즘은 음악소프트웨어를 제외하면 많은 앱을 오픈소스 및 Self-hosted앱으로 사용하고 있습니다. 제가 컴덕이라 세팅하는 걸 좋아하기도 하고, 제 도메인도 쓸 수 있고, 커스터마이징 자유도도 높아서 오픈소스 및 Self-hosted 앱을 선호합니다.

노트 앱은 많지만 글쓰기에 특화된 앱은 생각보다 별로 없었는데 그마저도 한국어가 지원이 되지 않는 것이 많았습니다. 이것저것 설치하다가 결국 bookstack으로 자리잡게 되었습니다.

Bookstack 으로 자리잡은 이유

글쓰기는 리소스가 많이 필요하지 않기 때문에 로컬로 작업할 필요가 별로 없습니다. 그래서 브라우저로 접속해 온라인으로 작업할 수 있는 어플을 찾게 되었는데 bookstack이 가장 장점이 많아 보였습니다. 제가 생각하는 Bookstack의 장점은 다음과 같습니다.

커스터마이징 자유도가 높습니다.

물론, 컴덕에 한해 그렇다는 말씀을 먼저 드립니다. bookstack 설정에서 헤드 부분 CSS 수정을 간단하게 할 수 있어서 폰트나 웬만한 디자인은 원하는대로 바꿀 수 있습니다.

더 나아가 PHP를 할 줄 아는 사람은 원하는 기능까지 만들 수 있습니다. 저도 PHP는 잘 모르기 때문에 누락된 한국어 번역 정도만 해놨습니다만 가능하다는 사실만으로 기분이 좋습니다.

어디서나 작업할 수 있고 공동작업도 가능합니다.

사이트 형태로 웹상에 접근해서 편집하기 때문에 인터넷과 웹브라우저만 있다면 어디서나 작업할 수 있습니다.

새로운 사용자를 추가해서 공동작업을 할 수도 있습니다. 누구나 글을 읽을 수 있도록 전체공개 할 수도 있고, 로그인한 특정 사용자에게 읽기 권한만 줄 수도 있습니다. 작품을 잠깐만 보여주는 상황이라면 읽기 권한을 제거 하거나 해당 계정을 삭제하면 됩니다.

글쓰기에 필요한 기본 기능은 있습니다.

글쓰기는 위지윅(wysiwyg)과 마크다운(markdown) 두 형식으로 쓸 수 있습니다. 개인적으로 평소에 정보글을 작성할 때는 마크다운을 주로 사용하지만 문학 글쓰기 때는 웬지 위지윅이 좋은 것 같습니다.

영화시나리오를 작성할 때 씬별로 작성하고 순서를 바꾼다거나 이미지, 표, 도형(직접 그려서) 등을 넣을 수 있습니다.

태그도 넣을 수 있습니다. 작업과정이나 장르 등을 넣어서 쉽게 분류하고 검색할 수 있습니다.

고급 기능도 있습니다.

온라인 기반 어플 답게 API와 웹훅(Webhook)을 지원합니다. 간단히 설명하자면 API는 외부 어플이 bookstack을 제어할 수 있게 해주는 것이고, 웹훅은 bookstack상에서 발생한 이벤트를 외부로 알리는 것입니다.

AI를 이용해서 글을 작성하거나 bookstack에서 글이 작성, 수정 되었을 때 slack, discord, telegram등으로 알릴 수 있습니다. 물론 고급기능답게 약간의 코딩이 필요합니다.

Bookstack 기능 훑어보기

책꽂이

bookstack에서는 책꽂이(책장) → 책 → (챕터) → 문서와 같은 형태의 구조로 작업하게 됩니다.

책꽂이에 교재, 단편소설, 에세이, 영화시나리오, 장편소설 과 같은 항목을 만들어서 하위에 책을 생성해서 작업하고 있습니다.

bookstack - 책꽂이

영화  시나리오라는 책꽂이에 있는 책 목록입니다. 왼쪽에 있는 것은 제가 작업중인 시나리오라서 모자이크 처리를 했습니다. 봉준호의 마더는 구조 참고를 위해 넣어봤습니다.

책꽂이(영화 시나리오)의 책 목록

문서 목록

책꽂이(영화 시나리오) - 책(마더)에 있는 문서 목록입니다. 씬 번호가 계속 이어지는 구조라서 챕터는 사용하지 않았습니다. Everything Everywhere all at once 같은 영화라면 3개의 챕터로 나눌 수도 있을 것입니다.

책(마더)의 문서 목록

문서(여기서는 씬 별로 나눔)의 순서를 바꿀 수도 있습니다.

문서의 순서 변경 가능

문서 내용

문서중에 첫 번째에 있는 '등장인물'이라는 문서의 내용입니다. 인터넷에 돌아다니는 마더의 초기 시나리오에는 없는 내용인데 제가 임의로 넣어봤습니다.

등장인물 문서의 내용

등장인물 문서의 편집 화면입니다. 위지윅 에디터입니다. 엄청난 기능은 없지만 문학글을 작성할 때 글쓰기 에디터 자체는 엄청난 기능이 딱히 필요하지도 않습니다.

등장인물 문서의 편집화면

인물관계도는 '그리기 삽입/수정' 기능을 이용해 넣었습니다. bookstack 에디터에 기본으로 포함되어 있는 drawio 기능으로 도형/도식 등을 넣을 수 있습니다. drawio의 편집 화면은 다음과 같습니다.

bookstack 에디터에 포함된 drawio

내보내기 기능

스크리브너의 컴파일 기능에 해당한다고 할 수 있겠네요. 책 전체나 특정 문서를 내보내기 할 수 있습니다. 지원하는 포맷은 .html, .pdf, .txt, .md 입니다.

파일로 받기(내보내기) 기능 (.html, .pdf, .txt, .md)

사용자 추가, 권한 제어, 프로필 기능

사용자를 추가할 수 있고 각각의 사용자마다 프로필이 제공됩니다.

사용자 추가 가능
프로필 편집 가능

권한은 그룹별 권한을 선택하고 특정 사용자를 해당 그룹에 소속시키는 형태로 작동합니다. 그룹을 추가로 만들 수도 있습니다.

그룹별 권한 제어 가능
Guest는 Public이라는 그룹에 소속된 사용자입니다.

기본 방문자인 guestPublic이라는 그룹에 소속되어 있습니다. 상단 스크린샷의 권한 설명은 직접 수정할 수 있습니다. (처음에 영어로 작성되어 있음)

맞춤 설정

사이트 제목, 색상, CSS 등을 편집할 수 있습니다. 저는 제가 좋아하는 고운 폰트로 교체하고 좁쌀처럼 작은 폰트도 키워서 사용합니다. AI를 이용해서 사이트 로고도 생성했습니다. 처음 bookstack의 컬러는 블루 계열이지만 웬지 글쓰기와 어울리는 커피 색상으로 변경했습니다.

bookstack 맞춤 설정

API, 웹훅 기능

위에서도 말했지만 API는 외부 어플이 bookstack을 제어할 수 있게 해주는 것이고, 웹훅은 bookstack상에서 발생한 이벤트를 외부로 알리는 것입니다.

사용자별로 권한이 다르기 때문에 API 토큰은 사용자별로 만듭니다.

사용자별로 API토큰을 생성해서 API 기능을 사용할 수 있습니다.

bookstack 웹훅을 만들 수 있습니다.

bookstack 웹훅만들기

아직까지 공동작업을 염두해두지는 않아서 API나 웹훅을 이용하지는 않고 있습니다. 만약 기업에서 이용하거나 공동작업을 한다면 API와 웹훅을 이용해 여러 가지 재미있는 기능을 구현할 수 있습니다.

설치 방법은 다음에...

글을 읽으시면서 '오, 좋아보이네. 그런데 설치는 어떻게...?'하시는 분도 있으실테고 '이 새끼 이과충이네.'하시는 분도 계실 것 같네요. 소개 글이 너무 길어져서 bookstack설치방법은 다음에 따로 작성하도록 하겠습니다. 미리 말씀드리자면 self-hosted이고 도커로 설치하기 때문에 서버와 도커에 대해 잘 모르시는 분은 전문가에게 부탁하거나 다른 어플 찾아보시는게 나을 겁니다. 꼭 리눅스가 필요한 것은 아니고 윈도우에서도 docker-desktop으로 설치할 수는 있습니다.(안해봄)


설치방법을 올렸습니다.

Self-Hosted 글쓰기, 위키 웹앱 Bookstack을 Docker-compose로 설치하기
웹상에서 글쓰기를 하고 책, 문서를 관리하는 어플 bookstack을 도커 컴포즈로 설치하는 방법입니다. Self-hosted앱이기 때문에 리눅스 서버와 도메인을 가지고 계신 분들에게 추천합니다. 메모용도로 쓸 수도 있지만 시나리오나 소설, 에세이같은 문학적 글쓰기에 적합합니다.

태그

BoniK

협업, 작업의뢰, 레슨 및 기타 문의 : mail@bonik.me