Trilium으로 지식정보를 수집/정리하자

최근 도커의 매력에 푹 빠져서 유용한 오픈소스를 찾아 사용하고 있습니다. 오늘은 Trilium이라는 오픈소스·자체 호스팅(Self-hosted) 기반의 메모 앱을 Ubuntu VM서버에 설치/사용해 보려고 합니다. Trilium은 자체 모바일 앱을 지원하지 않는 것을 제외하고는 아래와 같은 막강한 장점이 있습니다.

  • 강력한 계층 구조와 노트 클로닝(Note Cloning):
    노트 안에 노트를 무한으로 넣을 수 있는 트리 구조입니다. 특히 핵심 기능인 ‘클로닝’을 쓰면 하나의 노트를 여러 폴더(트리)에 동시에 위치시킬 수 있습니다. 한 곳에서 수정하면 모든 클론이 동시에 업데이트되므로 지식 분류할 때 엄청나게 편리합니다.
  • 개발자를 위한 해커블(Hackable) 환경:
    단순한 텍스트 메모를 넘어 노트 내부에 JavaScript를 작성해 앱 자체를 제어할 수 있습니다. 예를 들어, 특정 태그가 붙은 노트를 모아서 자동으로 리스트를 만들거나, 백엔드 API를 호출해 데이터를 긁어오는 자동화 스크립트를 구현할 수 있습니다.
  • 완벽한 데이터 소유권 및 속도:
    모든 데이터는 내 컴퓨터의 단일 SQLite 데이터베이스 파일(.db)에 저장됩니다. 백업과 이관이 매우 직관적이며, 로컬에서 동작하기 때문에 노션처럼 인터넷 속도에 따라 버벅거리는 일이 전혀 없고 수만 개의 노트도 즉시 검색됩니다.
  • 풍부한 기본 기능:
    텍스트 에디터 외에도 코드 하이라이팅, 가상 캔버스(Excalidraw 기반), 다이어그램(Mermaid.js) 등을 플러그인 설치 없이 기본으로 지원합니다.

이 글은 “Caddy,Filebrower로 웹 파일서버 및 webDAV 구축하기“와 연계되어 있으니 먼저 참고하시길 부탁드리며, 아래 절차대로 사용하시면 됩니다.

  1. 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
    
  2. OCI에 생성한 VM에 접속합니다. 저는 Filebrowser를 설치한 VM을 함께 사용하겠습니다.
  3. Trilium 데이터 디렉토리(SQLite DB 및 설정 파일 포함)를 호스트 디렉토리와 바인드하기 위해 볼륨을 설정하는데, 이 때 필요한 호스트 디렉토리를 미리 생성합니다.
    mkdir /webdav/trilium
    
  4. CaddyFile에 Trilium에 사용할 도메인을 추가 등록하고 반영합니다.
    vi /webdav/caddy/Caddyfile
    # add at the end
    trilium.yesxyz.kr {
        reverse_proxy trilium:8080
    }
    
  5. 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
    
  6. 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
    
  7. trilium.yourdomain.com에 접속하여 접속 비밀번호를 설정한 후 TriliumNext 메인화면에 접속합니다.
    TriliumNext
    TriliumNext
    TriliumNext
    TriliumNext
    TriliumNext
  8. 자체 모바일 앱은 없지만, TriliumDroid와 Pocket Trilium 처럼 별도로 개발된 앱이 있어 소개합니다. 그런데 저는 모두 version 차이로 인해 sync에 실패했습니다.
    • TriliumDroid:
      Github의 FliegendeWurst/TriliumDroid 프로젝트에서 release된 apk를 다운로드받아 설치하시면 됩니다. 악성코드가 불안하신 분은 VIRUSTOTAL 사이트에서 스캔하신 후 사용하시면 맘이 편안해지실겁니다.
    • Pocket Trilium:
      구글 스토어에 업로드된 Official 버전입니다. 중국 개발자가 개발한 것 같습니다. 설치 후 설정 페이지에 접속하면 중국어로 표시됩니다.

You may also like...

답글 남기기

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