개요
Trilium Notes(현재 TriliumNext)는 대규모 개인 지식 베이스 구축에 최적화된 오픈소스 계층형 노트 앱입니다. 무한한 깊이의 노트 트리, 노트 복제(Cloning), 관계 맵, 스크립팅 등 강력한 기능을 제공하며, 데스크톱 앱과 서버 버전 간 동기화를 지원합니다. Notion의 무거움이나 Obsidian의 로컬 제한이 불편했다면, Trilium이 완벽한 대안이 될 수 있습니다.
공식 사이트: https://triliumnotes.org
GitHub (TriliumNext): https://github.com/TriliumNext/Trilium
GitHub Stars: 33,000+
라이선스: AGPL-3.0
Trilium Notes란?
Trilium은 “두 번째 뇌(Second Brain)”를 구축하기 위한 노트 앱입니다. 단순한 노트 작성을 넘어, 노트 간의 관계를 정의하고, 속성을 부여하고, 스크립트로 자동화하여 진정한 지식 관리 시스템을 만들 수 있습니다.
TriliumNext란?
원래 개발자(zadam)가 유지보수 모드로 전환한 후, 커뮤니티가 TriliumNext 프로젝트를 이어받아 활발하게 개발 중입니다. 기존 Trilium 데이터베이스와 완벽하게 호환됩니다.
핵심 개념
- 계층형 트리: 노트를 무한한 깊이로 구조화
- 클로닝(Cloning): 하나의 노트를 여러 위치에 동시 배치
- 속성(Attributes): 노트에 메타데이터 부여
- 관계(Relations): 노트 간 연결 정의
- 스크립팅: JavaScript로 Trilium 확장
주요 특징
1. 계층형 노트 구조
- 무한한 깊이의 트리 구조
- 드래그 앤 드롭으로 정리
- 노트 내 하위 노트 포함
- 빠른 검색 및 네비게이션
2. 노트 클로닝 (Cloning)
Trilium의 핵심 기능 중 하나입니다. 하나의 노트를 여러 위치에 복제 없이 배치할 수 있습니다.
예시: "Python 학습" 노트가 다음 위치에 동시 존재
├── 프로그래밍/
│ └── Python 학습 (클론)
├── 2024년 목표/
│ └── Python 학습 (클론)
└── 이번 주 할 일/
└── Python 학습 (원본)
어디서 수정하든 모든 위치에 반영됩니다.
3. 다양한 노트 유형
| 유형 | 설명 |
|---|---|
| Text | 리치 텍스트 (WYSIWYG) |
| Code | 코드 블록 (구문 강조) |
| Render | HTML 렌더링 |
| Book | 하위 노트 목차 |
| Canvas | Excalidraw 기반 드로잉 |
| Mermaid | 다이어그램 |
| Relation Map | 노트 관계 시각화 |
| Mind Map | 마인드맵 |
| Web View | 웹페이지 삽입 |
| File | 파일 첨부 |
4. 속성 시스템 (Attributes)
노트에 라벨(Label)과 관계(Relation)를 부여:
#projectStatus=active // 라벨
#priority=high
~relatedTo=노트ID // 관계
~parentProject=노트ID
5. 강력한 검색
# 라벨로 검색
#projectStatus=active
# 날짜 범위
note.dateCreated >= 2024-01-01
# 내용 검색 + 라벨 조합
"Python" AND #type=tutorial
6. 스크립팅 & API
JavaScript로 Trilium을 확장:
// 새 노트 생성
api.createNote(parentNoteId, 'New Note', 'content');
// 속성 추가
api.setAttribute('label', 'myLabel', 'value');
// 매일 자동 실행 스크립트
api.runOnBackend(() => {
// 자동화 로직
});
7. 동기화
- 데스크톱 앱 ↔ 서버 동기화
- 여러 기기에서 동일한 지식 베이스 접근
- 충돌 해결 메커니즘
8. 보안
- 선택적 노트 암호화 (AES-128)
- 비밀번호 보호
- TOTP 2단계 인증
9. 기타 기능
- Web Clipper: 브라우저 확장으로 웹 페이지 스크랩
- 내보내기: Markdown, HTML, OPML
- 가져오기: Evernote(ENEX), Markdown
- 리비전 히스토리: 버전 관리
- Zen 모드: 집중 모드
유사 도구 비교
| 항목 | Trilium | Obsidian | Notion | Logseq |
|---|---|---|---|---|
| 구조 | 계층형 트리 | 폴더 + 링크 | 페이지/DB | 아웃라이너 |
| 클로닝 | ✅ 강력 | ❌ | ❌ | ❌ |
| 스크립팅 | ✅ JavaScript | 플러그인 | ❌ | 제한적 |
| 셀프 호스팅 | ✅ | ❌ (로컬) | ❌ | ✅ |
| 동기화 | 자체 서버 | 유료/플러그인 | 클라우드 | Git |
| 성능 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 학습 곡선 | 높음 | 중간 | 낮음 | 중간 |
| 오프라인 | ✅ | ✅ | 제한적 | ✅ |
| 모바일 | 웹/서드파티 | ✅ | ✅ | ✅ |
언제 Trilium을 선택할까?
Trilium이 적합한 경우:
- 대규모 지식 베이스를 체계적으로 관리하고 싶을 때
- 노트 간 복잡한 관계를 정의해야 할 때
- 스크립팅으로 자동화/커스터마이징이 필요할 때
- 로컬 성능이 중요할 때 (Notion 느림에 지친 경우)
- 완전한 데이터 소유권을 원할 때
다른 도구가 적합한 경우:
- 모바일 우선 → Notion, Obsidian
- 간단한 노트 → Apple Notes, Google Keep
- 아웃라이너 스타일 → Logseq, Workflowy
- 팀 협업 중심 → Notion, Outline
Docker Compose 설치
사전 요구사항
- Docker 및 Docker Compose 설치
- 최소 512MB RAM (권장 1GB+)
- 저장 공간 500MB+ (데이터베이스 제외)
Trilium은 SQLite를 내장하므로 별도 데이터베이스가 필요 없습니다.
기본 설치
1. 디렉토리 생성
mkdir -p ~/docker/trilium
cd ~/docker/trilium
2. docker-compose.yml 작성
services:
trilium:
image: triliumnext/notes:latest
container_name: trilium
environment:
- TRILIUM_DATA_DIR=/home/node/trilium-data
volumes:
- ./trilium-data:/home/node/trilium-data
ports:
- "8080:8080"
restart: unless-stopped
3. 컨테이너 실행
docker compose up -d
4. 초기 설정
- 브라우저에서
http://서버IP:8080접속 - “I’m a new user” 선택
- 비밀번호 설정
- 시작!
리버스 프록시 연동 (Traefik)
services:
trilium:
image: triliumnext/notes:latest
container_name: trilium
environment:
- TRILIUM_DATA_DIR=/home/node/trilium-data
volumes:
- ./trilium-data:/home/node/trilium-data
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.trilium.rule=Host(`notes.example.com`)"
- "traefik.http.routers.trilium.entrypoints=websecure"
- "traefik.http.routers.trilium.tls.certresolver=letsencrypt"
- "traefik.http.services.trilium.loadbalancer.server.port=8080"
networks:
- traefik-network
networks:
traefik-network:
external: true
Nginx 리버스 프록시 설정
server {
listen 80;
server_name notes.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name notes.example.com;
ssl_certificate /etc/letsencrypt/live/notes.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/notes.example.com/privkey.pem;
client_max_body_size 100M; # 대용량 파일 업로드
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
데스크톱 앱과 동기화 설정
Trilium 서버와 데스크톱 앱을 동기화하려면:
- 서버 설정
- 서버에서 Options → Sync → “Setup sync” 클릭
- Sync Server URL 확인 (예:
https://notes.example.com)
- 데스크톱 앱 설정
- 데스크톱 Trilium 설치 (https://github.com/TriliumNext/Trilium/releases)
- 처음 실행 시 “I have a server instance already, and I want to set up sync with it” 선택
- 서버 URL과 비밀번호 입력
- 동기화 확인
- 양쪽에서 “Sync” 상태 확인
- 새 노트 생성 후 동기화 테스트
환경 변수
| 변수 | 설명 | 기본값 |
|---|---|---|
TRILIUM_DATA_DIR | 데이터 저장 경로 | /home/node/trilium-data |
TRILIUM_PORT | 서버 포트 | 8080 |
TRILIUM_ENV | 환경 설정 | prod |
활용 팁
1. 프로젝트 관리 구조
📁 Projects
├── 📁 Active
│ ├── 📝 Project A
│ │ ├── 📝 Requirements
│ │ ├── 📝 Meeting Notes
│ │ └── 📝 Tasks
│ └── 📝 Project B
├── 📁 Completed
└── 📁 Templates
└── 📝 Project Template
2. 속성 활용
노트에 메타데이터 추가:
#status=in-progress
#priority=high
#dueDate=2024-02-15
#assignee=John
검색으로 필터링:
#status=in-progress #priority=high
3. 일일 노트 자동 생성
스크립트로 매일 일일 노트 자동 생성:
// dayTemplate 관계가 있는 템플릿 사용
const today = new Date();
const dateStr = today.toISOString().split('T')[0];
const title = `📅 ${dateStr}`;
// 이미 있는지 확인
if (!api.searchNotes(`note.title = "${title}"`).length) {
api.createNote(parentNoteId, title, '');
}
4. Web Clipper 활용
- 브라우저 확장 설치 (Chrome/Firefox)
- Trilium 서버 URL 설정
- 웹페이지에서 클릭 → Trilium으로 저장
5. 관계 맵 (Relation Map)
노트 간 관계를 시각적으로 표현:
- 새 노트 → 유형: “Relation Map”
- 노트 드래그하여 맵에 추가
- 관계 선으로 연결
6. 코드 노트
프로그래밍 코드 저장 및 실행:
// 노트 유형: Code, 언어: JavaScript
const result = 2 + 2;
api.showMessage(`Result: ${result}`);
7. 키보드 단축키
| 단축키 | 기능 |
|---|---|
Ctrl+K | 빠른 점프 (노트 검색) |
Ctrl+. | 노트 트리 스크롤 |
Ctrl+J | 새 노트 |
Ctrl+O | 최근 노트 |
Alt+A | 속성 패널 |
F1 | 도움말 |
Alt+M | Zen 모드 |
백업 및 복원
자동 백업 설정
Trilium은 자동 백업 기능을 내장:
- Options → Other → “Daily backup”
- 백업 위치:
trilium-data/backup/
수동 백업
# 데이터 디렉토리 전체 백업
tar -czvf trilium_backup_$(date +%Y%m%d).tar.gz ./trilium-data
# 데이터베이스만 백업
cp ./trilium-data/document.db ./backup/document_$(date +%Y%m%d).db
복원
# 컨테이너 중지
docker compose down
# 백업에서 복원
tar -xzvf trilium_backup_20240101.tar.gz
# 컨테이너 재시작
docker compose up -d
트러블슈팅
1. 동기화 실패
# 서버 로그 확인
docker logs trilium
# 네트워크 연결 확인
curl -I https://notes.example.com
# 데스크톱 앱에서 강제 동기화
Options → Sync → "Force full sync"
2. 데이터베이스 손상
# Trilium 내장 복구 도구
docker exec -it trilium /home/node/trilium/src/tools/repair-document.js
# 또는 백업에서 복원
cp backup/document_backup.db trilium-data/document.db
3. 메모리 부족
대규모 지식 베이스의 경우:
services:
trilium:
# ...
deploy:
resources:
limits:
memory: 2G
4. 업그레이드 후 문제
# 이전 버전으로 롤백
docker compose down
docker pull triliumnext/notes:v0.90.4 # 특정 버전
docker compose up -d
Obsidian에서 마이그레이션
Obsidian 사용자를 위한 팁:
- Markdown 가져오기
- Trilium → Import → Markdown 선택
- Obsidian vault 폴더 지정
- 링크 변환
[[링크]]스타일은 수동 변환 필요- 스크립트로 일괄 변환 가능
- 차이점 적응
- Obsidian: 파일 기반 → Trilium: 데이터베이스
- Obsidian: 양방향 링크 → Trilium: 관계 + 클로닝
마무리
Trilium Notes는 “진지한 지식 관리자”를 위한 도구입니다. 처음에는 학습 곡선이 있지만, 익숙해지면 다른 어떤 노트 앱보다 강력한 개인 지식 베이스를 구축할 수 있습니다.
추천 대상
- 대규모 지식 베이스를 체계적으로 관리하고 싶은 분
- Notion의 느린 속도에 지친 분
- 스크립팅으로 워크플로우를 자동화하고 싶은 개발자
- 완전한 데이터 소유권을 원하는 분
- “두 번째 뇌”를 구축하고 싶은 분
Trilium의 철학
“Build your personal knowledge base”
지식은 연결될 때 가치가 커집니다. Trilium은 그 연결을 만드는 최고의 도구입니다.
참고 자료
- TriliumNext 공식 사이트
- TriliumNext GitHub
- TriliumNext 문서
- Docker Hub
- awesome-trilium – 테마, 스크립트, 플러그인
- TriliumRocks! – 튜토리얼, 가이드