Nostos 구축기 — 읽기, 메모, 아이디어 및 작문을 위한 자체 호스팅 환경 (.NET 10, Angular 21, SQLite)
요약
Nostos는 읽기, 생각하고 글쓰기를 위한 자체 호스팅 오픈 소스 환경입니다. 전자책, 오디오북, 메모 등 파편화된 독서 경험을 통합하여 하나의 시스템에서 관리합니다. 라이브러리, 두뇌(메모 연결), 작문 스튜디오 세 영역이 유기적으로 연결되어 사용자가 자신의 지적 작업에 대한 완전한 통제권을 갖도록 설계되었습니다.
핵심 포인트
- 읽기/쓰기를 위한 자체 호스팅 통합 환경 제공
- EPUB, PDF, 오디오북 등 다양한 포맷 지원 및 관리
- 메모와 아이디어를 위키 링크로 연결하는 '두뇌' 기능 구현
- 사용자 데이터의 소유권과 독립성을 최우선으로 고려함
안녕하세요! 저는 Nostos라는 오픈 소스 프로젝트를 진행해 왔습니다. Nostos는 읽기, 생각하고 글을 쓰는 것을 위한 자체 호스팅 환경입니다. 이 아이디어는 제 개인적인 독서 경험이 얼마나 파편화되었는지에 대한 좌절감에서 비롯되었습니다. 전자책은 한 애플리케이션에 있고, PDF는 다른 곳에 있으며, 오디오북은 또 다른 곳에 있고, 물리적 책은 선반 위에 있고, 메모는 여러 도구에 흩어져 있으며, 결국 그 책들에 대해 쓰고 싶은 모든 것은 또 다른 애플리케이션에 있었습니다. 저는 이 모든 것을 하나로 모으고 싶었습니다. 단순히 책 컬렉션을 관리하는 것이 아니라, 제가 읽은 것이 제가 생각한 것과, 궁극적으로 제가 쓴 것과 연결되는 환경을 구축하고 싶었습니다. 이것이 바로 Nostos가 달성하고자 하는 것입니다.
도서관 섹션 (Library Section) - 두뇌 섹션 (Brain Section) - 작문 스튜디오 섹션 (Writing Studio Section)
- 내장 eReader: 오디오북 지원도 가능합니다!
무엇을 할까요?
Nostos는 몇 가지 상호 연결된 영역을 중심으로 구성되어 있습니다.
- 라이브러리 (Library): EPUB, PDF, 오디오북(M4B, M4A, MP3), 물리적 책을 한 곳에서 관리합니다. 컬렉션을 정리하고, 독서 진행 상황을 추적하며, 여러 판본을 동일한 작품 아래에 그룹화할 수 있습니다.
- 읽기 및 듣기 (Reading & listening): 내장된 EPUB 및 PDF 리더와 함께 챕터 인식 오디오북 플레이어를 제공합니다. 읽는 동안 하이라이트와 메모를 직접 캡처할 수 있습니다.
- 무료 도서 발견 (Free book discovery): Standard Ebooks, Project Gutenberg, Wikisource, LibriVox에서 무료 책과 오디오북을 검색하고 가져올 수 있습니다. 파일을 수동으로 다운로드하여 별도로 업로드할 필요가 없습니다. 책을 발견하고, 라이브러리에 가져온 다음, 몇 번의 클릭만으로 읽거나 들을 수 있습니다.
- 두뇌 (Brain): [[주제]] 위키 링크를 통해 서로 다른 책에 걸쳐 메모와 반복되는 아이디어를 연결합니다. 인터랙티브 그래프를 통해 이러한 연결성을 탐색하고 아이디어를 원래 출처로 추적할 수 있습니다.
- 작문 스튜디오 (Writing Studio): 초안, 챕터 구조, 관련 메모 또는 인용문을 나란히 유지하는 세 패널 작문 환경을 제공합니다.
추가 기능: Kobo 데이터베이스 및 KOReader 사이드카 파일을 가져와 주석을 추가할 수 있습니다.
이식 가능한 .nostos 라이브러리 아카이브 내보내기 및 가져오기. 로컬 백업 및 복원 기능. OPDS 카탈로그 지원과 선택적 MCP 엔드포인트 제공. 구성 가능한 프로바이더를 사용하여 모든 전자책에 대한 벡터 임베딩을 포함하는 선택적 AI 지원 기능. 왜 자체 호스팅인가? 나에게 이 프로젝트의 중요한 부분은 소유권과 독립성이다. 우리의 디지털 독서 경험이 얼마나 많은 부분이 독점적인 생태계에 의존하는지에 대해 나는 극도로 싫어한다. 책, 주석, 하이라이트, 그리고 독서 기록들이 특정 공급업체에 묶이게 되고, 때로는 수년간 모은 자료에 대한 통제권을 거의 갖지 못하게 만든다. 나는 내가 구축하는 라이브러리, 내가 작성하는 메모, 그리고 내가 쓰는 것들이 내 통제하에 남아있는 대안을 원했다. 물론 DRM(디지털 저작권 관리)을 우회하는 것은 아니지만, 가져올 수 있는 자료와 그 주변에서 창조하는 지적 작업에 대한 통제권을 제공한다. 또 다른 원칙은 차분한 소프트웨어이다. 독서 연속 기록(!), 소셜 피드(!), 생산성 점수(!!) 또는 게임화 메커니즘(!!!)이 없다. 나는 인터페이스가 주의를 끌기 위해 경쟁하는 또 다른 대시보드가 아니라 개인적인 학습 공간처럼 느껴지도록 최선을 다했다. Nostos라는 이름은 고향으로 돌아간다는 그리스어 개념에서 유래했다. 독서 생활의 이렇듯 흩어져 있는 모든 부분들을 한곳에 모아주고 싶다는 생각이 마음에 들었다. 따라서 Nostos는 데이터베이스와 미디어를 로컬에 저장하고, 이식 가능한 라이브러리 아카이브를 지원하며, 구독이나 클라우드 계정 없이 완전히 자체 호스팅이 가능하다. 인프라 관리가 번거로운 사람들을 위해, Nostos Cloud를 통해 선택적 호스팅 버전도 제공한다.
기술 세부 사항 스택에 관심 있는 분들을 위해:
백엔드: .NET 10, ASP.NET Core Minimal APIs, EF Core 10
프론트엔드: Angular 21, 독립형 컴포넌트(standalone components) 및 Signals
데이터베이스: SQLite
저장소: 책과 미디어를 위한 로컬 파일 시스템
EPUB: epub.js
PDF: ngx-extended-pdf-viewer
오디오: Howler.js
작문: Markdown 변환을 지원하는 TinyMCE
배포: Docker / Docker Compose
이 자체 호스팅 애플리케이션은 독립적으로 실행되며, 영구 데이터는 /data 아래에 저장됩니다. 외부 도서 목록(book catalogues), 메타데이터 조회, AI 제공업체와 같은 일부 선택적 기능은 네트워크 액세스를 필요로 합니다.
빠른 시작 (Docker Compose)
서비스: nostos:
이미지: ghcr.io/christian-gennari/nostos:latest
포트: - "5099:8080"
볼륨: - nostos-data:/data
재시작: unless-stopped
볼륨: nostos-data:
실행 방법: docker compose up -d를 실행한 후, http://localhost:5099에 접속하세요.
이름이 지정된 Docker 볼륨은 컨테이너 교체 시에도 SQLite 데이터베이스, 저장된 책, 로컬 백업을 보존합니다. 리포지토리에는 또한 Compose 파일과 더 자세한 설정 문서가 있습니다.
링크
GitHub: https://github.com/Christian-Gennari/Nostos
문서(Documentation): https://docs.nostos.page
웹사이트 및 스크린샷: https://nostos.page
Nostos는 여전히 활발하게 개발 중이며, 제가 개선하고 싶은 부분이 꽤 많습니다. 특히 이미 전자책 라이브러리를 자체 호스팅하거나 Calibre 또는 KOReader를 사용하거나 노트 작성 및 작문용 시스템을 유지하는 분들의 의견이 궁금합니다. 자신만의 독서 환경에서 어떤 기능을 원하시나요? Nostos와 같은 것이 지원해야 할 작업 흐름이나 기능이 있습니까? 피드백, 비판, 제안 모두 정말 감사하겠습니다. 살펴봐 주셔서 감사합니다!
추신: 프로젝트가 아직 개발 중이기 때문에 github/랜딩 페이지의 일부 스크린샷은 다소 오래되었을 수 있습니다. 하지만 제가 여기에 게시한 것은 최신 버전입니다. 그리고 일반적으로 핵심 기능 자체는 여전히 동일합니다.
제출자 /u/Sufficient_Ad_96 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기