Joplin?
Joplin은 오픈소스 노트 프로그램으로, 오프라인 작업이 가능하면서도 인터넷만 연결된다면 동기화를 통해 다른 기기에서도 작업을 이러서 할 수 있습니다. Joplin 자체야 많은 분들이 소개해주셔서, 클리앙 내에서도 검색해보시면 많은 자료를 찾으실 수 있을 거라 생각되네요.
Joplin은 자체 서버 서비스 (Joplin Cloud, 유료), 셀프호스팅 서버 (Joplin Server), 클라우드 서비스 (OneDrive, Dropbox, S3 Cloud) , WebDAV 저장소 (NAS, NextCloud), 에 대한 동기화를 제공하고 멀티 플랫폼을 '일단 지원하기는 해서' 정말 범용성이 높습니다.
Joplin이 가진 단점이라면 WebDAV나 클라우드 서비스로의 동기화 속도는 느린 편이라 정말 제대로 쓰려면 유료 결제를 하거나 자체 서버를 구축해야 된다는 점, 멀티 플랫폼을 그냥 지원만 해서 모바일 앱은 사용감이 형편없다는 단점이 있었는데 최근 한 오픈소스 프로젝트 덕분에 데스크탑 앱의 경험을 절반 정도는 따라갈 수 있게 되었습니다.
이번 글에서는 Joplin의 웹 인터페이스를 제공해주는 Joplin-Vieweb에 대해 소개해보겠습니다.
Joplin-Vieweb
Joplin-Vieweb은 Joplin의 웹 인터페이스를 제공해주는 프로젝트로 이를 이용하면 웹 사이트에 접속하는 것 만으로도 Joplin 데스크탑 앱의 사용감을 그나마 따라갈 수 있습니다. 문서 생성, 수정 등 기본적인 작업은 가능하고 문법도 거의 동일하게 작동합니다.
구조가 좀 특이한데 본래 Joplin을 CLI에서 사용하라고 만들어 놓은 Joplin CLI를 베이스로 API를 통해 Joplin DB에 접근하면서 Joplin CLI에 명령을 넣어 동기화와 입력을 수행하도록 되어 있습니다. 그러한 작업들을 할 수 있는 웹 UI를 Django로 올려놨고요.
Docker 컨테이너 기반으로 설치하게 되어 있고, nginx proxy manager를 사용하는 입장에서 구축에 사용되는 Docker Compose는 아래와 같습니다 (그 외의 경우는 Github 저장소를 확인해주시면 됩니다):
Docker-Compose
version: '3.4' x-common-variables: &common-variables ORIGINS: "'https://example.example.com'" services: django-joplin-vieweb: image: gri38/django-joplin-vieweb:latest depends_on: - joplin-terminal-xapi environment: <<: *common-variables restart: unless-stopped volumes: - /your/directory/to/data:/root/.config/joplin:ro - /your/directory/to/config:/root/.config/joplin-vieweb networks: - joplin-web ports: - yourport:8000 joplin-terminal-xapi: image: gri38/joplin-terminal-xapi:latest restart: unless-stopped volumes: - /your/directory/to/data:/root/.config/joplin networks: - joplin-web networks: joplin-web: external: true
초기에는 KaTeX가 지원되질 않아 수식 작성이 불가능하다는 단점이 있었는데 이는 업데이트를 통해 개선되었습니다. 또 현재는 지원하는 동기화 수단이 Joplin Server와 NextCloud밖에 없는데, 그 외의 동기화 방법이 이미 Joplin CLI를 통해 지원되기 때문에 실력이 되신다면 Contribution을 해보시거나 이슈를 제기해보는 것도 좋을 것 같습니다.
물론 최고는 안드로이드에 리눅스 올려서 ARM6 버전을 설치하는 것이긴 합니다.