Trilium으로 지식정보를 수집/정리하자
최근 도커의 매력에 푹 빠져서 유용한 오픈소스를 찾아 사용하고 있습니다. 오늘은 Trilium이라는 오픈소스·자체 호스팅(Self-hosted) 기반의 메모 앱을 Ubuntu VM서버에 설치/사용해 보려고 합니다. Trilium은 자체 모바일 앱을 지원하지 않는 것을 제외하고는 아래와 같은 막강한 장점이 있습니다.
- 강력한 계층 구조와 노트 클로닝(Note Cloning):
노트 안에 노트를 무한으로 넣을 수 있는 트리 구조입니다. 특히 핵심 기능인 ‘클로닝’을 쓰면 하나의 노트를 여러 폴더(트리)에 동시에 위치시킬 수 있습니다. 한 곳에서 수정하면 모든 클론이 동시에 업데이트되므로 지식 분류할 때 엄청나게 편리합니다. - 개발자를 위한 해커블(Hackable) 환경:
단순한 텍스트 메모를 넘어 노트 내부에 JavaScript를 작성해 앱 자체를 제어할 수 있습니다. 예를 들어, 특정 태그가 붙은 노트를 모아서 자동으로 리스트를 만들거나, 백엔드 API를 호출해 데이터를 긁어오는 자동화 스크립트를 구현할 수 있습니다. - 완벽한 데이터 소유권 및 속도:
모든 데이터는 내 컴퓨터의 단일 SQLite 데이터베이스 파일(.db)에 저장됩니다. 백업과 이관이 매우 직관적이며, 로컬에서 동작하기 때문에 노션처럼 인터넷 속도에 따라 버벅거리는 일이 전혀 없고 수만 개의 노트도 즉시 검색됩니다. - 풍부한 기본 기능:
텍스트 에디터 외에도 코드 하이라이팅, 가상 캔버스(Excalidraw 기반), 다이어그램(Mermaid.js) 등을 플러그인 설치 없이 기본으로 지원합니다.
이 글은 “Caddy,Filebrower로 웹 파일서버 및 webDAV 구축하기“와 연계되어 있으니 먼저 참고하시길 부탁드리며, 아래 절차대로 사용하시면 됩니다.
- Let’s Encrypt의 인증서를 발급받기 위해서는 도메인 또는 DNS A 레코드를 등록합니다.
C:\> nslookup trilium.yourdomain.com 서버: dns.google Address: 8.8.8.8 권한 없는 응답: 이름: trilium.yourdomain.com Address: 168.107.13.218
- OCI에 생성한 VM에 접속합니다. 저는 Filebrowser를 설치한 VM을 함께 사용하겠습니다.
- Trilium 데이터 디렉토리(SQLite DB 및 설정 파일 포함)를 호스트 디렉토리와 바인드하기 위해 볼륨을 설정하는데, 이 때 필요한 호스트 디렉토리를 미리 생성합니다.
mkdir /webdav/trilium
- CaddyFile에 Trilium에 사용할 도메인을 추가 등록하고 반영합니다.
vi /webdav/caddy/Caddyfile # add at the end trilium.yesxyz.kr { reverse_proxy trilium:8080 } - docker-compose.yml 파일에 Trilium 컨테이터 생성 정보를 추가합니다.
vi /webdav/docker-compose.yml caddy: .... depends_on: - filebrowser - trilium .... # [Trilium] 개인 지식 관리 노트 trilium: image: triliumnext/notes:stable container_name: trilium restart: always environment: - TRILIUM_DATA_DIR=/home/node/trilium-data volumes: - /webdav/trilium:/home/node/trilium-data expose: - "8080" networks: - webdav-net - TriliumNext 컨테이터를 생성하고, Caddyfile 정보도 반영합니다.
sudo docker compose up -d trilium [+] up 14/14 ✔ Image triliumnext/notes:stable Pulled 42.3s ✔ Container trilium Created 1.2s sudo docker compose exec -w /etc/caddy caddy caddy reload 2026/06/18 23:46:31.934 INFO using adjacent Caddyfile 2026/06/18 23:46:31.938 INFO adapted config to JSON {"adapter": "caddyfile"} docker compose ps --format "table {{.Name}}\t{{.Status}}\t{{.Ports}}" NAME STATUS PORTS caddy Up 3 hours 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 443/udp, 2019/tcp filebrowser Up 3 hours (healthy) 80/tcp trilium Up 47 seconds (healthy) 8080/tcp - trilium.yourdomain.com에 접속하여 접속 비밀번호를 설정한 후 TriliumNext 메인화면에 접속합니다.





- 자체 모바일 앱은 없지만, TriliumDroid와 Pocket Trilium 처럼 별도로 개발된 앱이 있어 소개합니다. 그런데 저는 모두 version 차이로 인해 sync에 실패했습니다.
- TriliumDroid:
Github의 FliegendeWurst/TriliumDroid 프로젝트에서 release된 apk를 다운로드받아 설치하시면 됩니다. 악성코드가 불안하신 분은 VIRUSTOTAL 사이트에서 스캔하신 후 사용하시면 맘이 편안해지실겁니다. - Pocket Trilium:
구글 스토어에 업로드된 Official 버전입니다. 중국 개발자가 개발한 것 같습니다. 설치 후 설정 페이지에 접속하면 중국어로 표시됩니다.
- TriliumDroid:
