본문 바로가기
AI 튜토리얼

SurfSense 설치: NotebookLM 오픈소스 대안 (2026)

by 정부우르사 2026. 6. 16.
반응형

"NotebookLM에 사내 문서를 통째로 올리기엔 마음이 영 불편한데, 대안이 있을까요?"


📌 핵심 3줄 요약

  • SurfSense는 NotebookLM과 같은 '문서·노트 기반 RAG 노트북' UX를 셀프호스팅으로 제공하는 Apache 2.0 오픈소스다.
  • Docker 한 줄 설치 스크립트로 PostgreSQL+pgvector·백엔드·프론트·SearXNG가 한 번에 뜨고, LLM은 Ollama·OpenAI 등 100개 이상에서 고를 수 있다.
  • 소스 수 제한 없음·외부 커넥터 27종 지원이 장점이지만, 공식 한국어 UI·문서가 아직 없고 OAuth 설정이 별도 작업이라는 한계가 있다.

1. SurfSense가 해결하는 문제

NotebookLM은 편하지만 두 가지 벽이 있다. 노트북 1개당 소스 수가 제한되고, 업로드한 문서가 구글 인프라로 흘러간다는 점이다. 사내 위키나 고객 데이터를 묶어 질의응답을 만들고 싶을 때 보안팀이 가장 먼저 막는 지점이기도 하다.

SurfSense는 같은 형태의 노트북 UX를 가져오되, 모든 데이터를 자기 서버 안에 두는 방식으로 그 벽을 우회한다. 백엔드는 Python, 프론트는 TypeScript, 벡터 저장은 PostgreSQL의 pgvector 확장으로 처리한다. LLM도 OpenAI API 키를 쓸지, Ollama로 로컬에서 돌릴지 환경변수 한 줄로 바꾼다.

💡 핵심 한 줄

"NotebookLM을 그대로 갖다 쓰자"가 아니라 "노트북 UX는 가져오고 데이터·모델 선택권은 내가 쥐자"가 SurfSense의 방향이다. 음성 요약·팟캐스트 생성 같은 화려한 기능도 같이 들어 있다.


2. 설치 준비물

공식 README가 요구하는 것은 단 하나, Docker Desktop 또는 Docker Engine + Compose v2다. 다만 실제로 안 끊기게 돌리려면 다음 정도는 준비해두는 편이 안전하다.

  • OS: macOS 13+ / Windows 11 / Ubuntu 22.04+ 등 Docker Compose v2가 도는 환경
  • 리소스: RAM 8GB 이상, 디스크 20GB 이상. 로컬 Ollama로 7B 모델을 같이 돌리면 16GB 권장
  • 네트워크: 기본 포트 3929(프론트), 8929(백엔드), 8888(SearXNG) 개방
  • API 키: OpenAI/Anthropic 등 호출형 LLM을 쓸 경우 별도 발급

📘 알아두기

로컬 LLM만 쓰겠다면 외부 API 키 없이도 동작한다. Ollama 컨테이너를 옆에 띄우고 EMBEDDING_MODEL·LLM endpoint만 로컬로 가리키면 완전 오프라인 운영도 가능하다.


3. Docker로 30분 만에 띄우기

가장 빠른 길은 공식 설치 스크립트다. 레포를 굳이 클론하지 않아도 된다.

install.sh · Bash (Linux / macOS)

curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
# Windows PowerShell이라면:
# irm https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.ps1 | iex

스크립트가 docker/.env를 만들고 docker compose up -d까지 실행한다. 처음 한 번은 PostgreSQL 초기화 때문에 1~2분 정도 걸리며, http://localhost:3929로 접속하면 로그인 화면이 뜬다. 직접 컨트롤하고 싶다면 다음처럼 환경변수를 손으로 채워도 된다.

docker/.env · 핵심 변수만 발췌

# 인증
AUTH_TYPE=LOCAL
SECRET_KEY=$(openssl rand -base64 32)
REGISTRATION_ENABLED=TRUE

# PostgreSQL (pgvector 내장 이미지)
DB_USER=surfsense
DB_PASSWORD=change-me-please
DB_NAME=surfsense
DB_HOST=db
DB_PORT=5432

# 포트
BACKEND_PORT=8929
FRONTEND_PORT=3929
SEARXNG_PORT=8888

# 임베딩 & ETL
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
ETL_SERVICE=DOCLING   # 또는 UNSTRUCTURED / LLAMACLOUD

# Redis
REDIS_URL=redis://redis:6379/0

SECRET_KEY는 반드시 새로 발급하고, DB_PASSWORD도 기본값을 그대로 두지 않는다. 컴포즈를 다시 시작할 때는 docker compose -f docker/docker-compose.yml --env-file docker/.env up -d 패턴이 가장 안정적이다.


4. NotebookLM과 무엇이 다른가

두 도구는 표면 UX가 비슷해 보여도, '데이터를 어디 두느냐'에서 모든 선택이 갈린다.

항목 SurfSense NotebookLM
데이터 보관 위치 자기 서버 (셀프호스팅) Google 인프라
LLM 백엔드 OpenAI · Ollama · vLLM 등 100+ Gemini 고정
소스 개수 제한 없음 노트북당 50~300개
외부 커넥터 Slack · Notion · GitHub 등 27+ Drive · URL 위주
오디오 요약 2인 호스트 팟캐스트 지원 Audio Overview 지원
가격 무료 (인프라·LLM 비용 별도) 무료 / Plus 구독
오프라인 운영 Ollama 조합 시 가능 불가

실용 기준은 단순하다. 보안 정책상 외부 업로드가 막힌 팀이거나 사내 Slack·Notion을 통째로 끌어와 질의하고 싶다면 SurfSense가 답이다. 가벼운 개인 노트 정리라면 NotebookLM이 여전히 편하다.


⚠️ 단점과 주의할 점

  • 한국어 공식 문서가 없다. README도 영어·스페인어 등만 제공되고, UI 번역도 일부만 따라온다. 사내 사용자용 안내서는 직접 만들어야 한다.
  • 커넥터 27종은 강력하지만 대부분 OAuth Client ID·Secret을 직접 발급해 .env에 채워야 동작한다. Slack 1개 붙이는 데도 앱 등록·리다이렉트 URI 설정이 따라온다.
  • 임베딩·문서 ETL을 로컬에서 돌리면 CPU·메모리 사용량이 의외로 크다. NAS 같은 저사양 기기에 올리면 인덱싱이 늘어진다.
  • 아직 빠르게 개발 중이라 마이너 버전 사이에 .env 키나 컴포즈 구조가 바뀐다. docker compose pull 전에 릴리스 노트 확인이 안전하다.

⚠️ 흔한 실수

데모용으로 잘 돌아간다고 곧장 사내 공유 URL에 노출시키는 경우가 많은데, 기본값 AUTH_TYPE=LOCAL + REGISTRATION_ENABLED=TRUE 조합이라 누구나 가입할 수 있다. 공개 전 OAuth 또는 가입 비활성화 처리가 먼저다.


🚀 지금 바로 할 일

  1. Docker Desktop이 깔린 머신에서 위의 install.sh로 SurfSense를 띄우고 http://localhost:3929로 접속한다.
  2. OpenAI API 키 또는 Ollama 로컬 모델 중 하나로 LLM 백엔드를 연결하고, PDF 두세 개를 올려 응답 품질을 본인 작업물 기준으로 확인한다.
  3. 실사용 결정 전 Slack 또는 Notion 커넥터 한 개를 시범 연결해 OAuth 설정 난이도와 인덱싱 시간을 직접 측정한다.

💬 의견

NotebookLM 대체로 셀프호스팅 RAG 노트북을 검토 중이라면, 가장 걸리는 지점이 무엇인지 댓글로 공유 부탁드립니다.

✅ 핵심 정리

  • SurfSense = NotebookLM UX + 자기 서버 보관 + LLM 선택권 (Apache 2.0).
  • Docker Compose 한 줄로 PostgreSQL+pgvector·백엔드·프론트·SearXNG가 함께 뜬다.
  • 강점은 무제한 소스·27+ 커넥터·오프라인 운영, 약점은 한국어 미지원·OAuth 설정 부담.

참고 자료


작성자: AI·개발자 도구 도메인을 추적하는 기술 블로그 운영자. 본문의 환경변수·설치 명령은 2026-06-16 기준 github.com/MODSetter/SurfSense 공식 레포의 docker/.env.example과 README를 1차 자료로 검증해 작성했습니다.

반응형