Obsidian을 스스로 조직화하는 AI 지식으로 바꿔주는 Claude Code 플러그인
한국어는 runchr 제공 번역입니다. 원문 README는 English tool page.
siyuan
Markdown, MCP 지원, 에이전트 협업을 갖춘 셀프 호스팅 워크스페이스용 오픈소스 로컬 우선 노트 필기 및 지식 베이스입니다.
- Kind
- knowledge workspace
- Platform
- desktop, web, Docker, Kubernetes
- Models
- agent-agnostic via MCP
프로젝트 README (번역)
GitHub ↗Written by the project's own authors, not by runchr. Snapshot taken 2026-10-30.
사고에서 통찰로, 에이전트와 함께
English
| 中文
| 日本語
| Türkçe
| Português
목차
💡 소개
🔮 기능
🏗️ 아키텍처 및 생태계
🗺️ 로드맵
🚀 다운로드 및 설치
앱 마켓
설치 패키지
패키지 관리자
Docker 호스팅
Kubernetes 호스팅
Unraid 호스팅
TrueNAS 호스팅
테스트 채널
⌨️ 명령줄 인터페이스
🏘️ 커뮤니티
🛠️ 개발 가이드
❓ FAQ
SiYuan은 데이터를 어떻게 저장하나요?
서드파티 동기화 디스크를 통한 데이터 동기화를 지원하나요?
SiYuan은 오픈 소스인가요?
새 버전으로 업그레이드하려면 어떻게 하나요?
일부 블록(예: 목록 항목 내의 문단 블록)에서 블록 아이콘을 찾을 수 없는 경우 어떻게 해야 하나요?
데이터 저장소 키를 분실한 경우 어떻게 해야 하나요?
비용을 지불해야 하나요?
🙏 감사의 말
기여자
💡 소개
SiYuan은 프라이버시 우선의 개인 지식 관리 시스템으로, 세밀한 블록 수준 참조와 Markdown
WYSIWYG을 지원합니다.
더 알아보려면 온라인 사용자 가이드를 읽거나 SiYuan 영어 토론 포럼 에 참여하세요.
🔮 기능
대부분의 기능은 상업적 사용을 포함하여 무료입니다.
콘텐츠 블록
블록 수준 참조 및 양방향 링크
사용자 정의 속성
SQL 쿼리 임베드
siyuan:// 프로토콜
에디터
블록 스타일
Markdown WYSIWYG
목록 개요
블록 확대
백만 단어 대용량 문서 편집
수학 공식, 차트, 순서도, 간트 차트, 타이밍 차트, 오선보 등
웹 클리핑
PDF 주석 링크
내보내기
블록 참조 및 임베드
에셋이 포함된 표준 Markdown
PDF, Word 및 HTML
WeChat MP, Zhihu 및 Yuque로 복사
데이터베이스
테이블 뷰
플래시카드 간격 반복
OpenAI API를 통한 AI 글쓰기 및 Q/A 채팅
Tesseract OCR
멀티 탭, 드래그 앤 드롭으로 화면 분할
템플릿 스니펫
JavaScript/CSS 스니펫
Android/iOS/HarmonyOS 앱
Docker 배포
API
커뮤니티 마켓플레이스
일부 기능은 유료 회원만 사용할 수 있습니다. 자세한 내용은 가격 을 참조하세요.
🏗️ 아키텍처 및 생태계
프로젝트
설명
포크
스타
lute
에디터 엔진
chrome
Chrome/Edge 확장 프로그램
bazaar
커뮤니티 마켓플레이스
dejavu
데이터 저장소
petal
플러그인 API
android
Android 앱
ios
iOS 앱
harmony
HarmonyOS 앱
riff
간격 반복
🗺️ 로드맵
SiYuan 개발 계획 및 진행 상황
SiYuan 변경 로그
🚀 다운로드 및 설치
데스크톱과 모바일에서는 앱 마켓을 통한 설치를 우선적으로 권장합니다. 이렇게 하면 향후 한 번의 클릭으로 버전을 업그레이드할 수 있습니다.
앱 마켓
모바일:
App Store
Google Play
F-Droid
데스크톱:
Microsoft Store
설치 패키지
B3log
GitHub
패키지 관리자
siyuan
siyuan-note
Docker 호스팅
Docker 배포
개요
서버에서 SiYuan을 제공하는 가장 쉬운 방법은 Docker를 통해 배포하는 것입니다.
이미지 이름 b3log/siyuan
이미지 URL
파일 구조
전체 프로그램은 /opt/siyuan/ 아래에 위치하며, 이는 기본적으로 Electron 설치 패키지의 resources 폴더 아래 구조와 같습니다:
appearance: 아이콘, 테마, 언어
guide: 사용자 가이드 문서
stage: 인터페이스 및 정적 리소스
kernel: 커널 프로그램
진입점
진입점은 Docker 이미지를 빌드할 때 설정됩니다: ENTRYPOINT ["/opt/siyuan/entrypoint.sh"] . 이 스크립트를 사용하면 컨테이너 내부에서 실행될 사용자의 PUID와 PGID를 변경할 수 있습니다. 이는 특히 호스트에서 디렉터리를 마운트할 때 권한 문제를 해결하는 데 관련이 있습니다. PUID(사용자 ID)와 PGID(그룹 ID)는 환경 변수로 전달할 수 있어, 호스트에 마운트된 디렉터리에 접근할 때 올바른 권한을 보장하기가 더 쉽습니다.
docker run b3log/siyuan 으로 컨테이너를 실행할 때 다음 매개변수를 사용하세요:
참고: v3.7.0부터 serve 하위 명령을 명시적으로 전달해야 합니다(예: docker run b3log/siyuan serve --workspace=... ). 모든 서빙 옵션을 보려면 docker run --rm b3log/siyuan serve --help 를 실행하세요.
--workspace : 워크스페이스 폴더 경로를 지정하며, 호스트에서 -v 를 통해 컨테이너에 마운트됩니다
--accessAuthCode : 잠금 화면 비밀번호를 지정합니다
더 많은 매개변수는 --help 를 사용하여 확인할 수 있습니다. 다음은 새로운 환경 변수를 사용한 시작 명령의 예입니다:
먼저 AuthCode를 자신의 강력한 비밀번호로 설정하세요(Bash에서는 export AuthCode='your-strong-password' 사용, Compose는 같은 디렉터리의 .env 파일도 읽을 수 있음). 값이 설정되지 않았거나 비어 있으면 예제는 오류와 함께 중지됩니다.
docker run -d \
-v workspace_dir_host:workspace_dir_container \
-p 6806:6806 \
-e PUID=1001 -e PGID=1002 \
b3log/siyuan \
serve \
--workspace=workspace_dir_container \
--accessAuthCode= " ${AuthCode :? Set AuthCode} "
PUID : 사용자 정의 사용자 ID(선택 사항, 제공되지 않으면 기본값 1000)
PGID : 사용자 정의 그룹 ID(선택 사항, 제공되지 않으면 기본값 1000)
workspace_dir_host : 호스트의 워크스페이스 폴더 경로
workspace_dir_container : --workspace 에 지정된 대로 컨테이너 내 워크스페이스 폴더의 경로
또는 SIYUAN_WORKSPACE_PATH 환경 변수를 통해 경로를 설정할 수 있습니다. 둘 다 설정된 경우 명령줄이 항상 우선합니다
accessAuthCode : 잠금 화면 비밀번호(반드시 수정하세요 , 그렇지 않으면 누구나 데이터에 접근할 수 있습니다)
또는 SIYUAN_ACCESS_AUTH_CODE 환경 변수를 통해 잠금 화면 비밀번호를 설정할 수 있습니다. 둘 다 설정된 경우 명령줄이 항상 우선합니다
잠금 화면 비밀번호를 비활성화하려면 환경 변수 SIYUAN_ACCESS_AUTH_CODE_BYPASS=true 를 설정하세요
OIDC는 필수 Docker 접근 인증으로 잠금 화면 비밀번호를 대체할 수 있습니다. SIYUAN_OIDC_ENABLED=true , SIYUAN_OIDC_PROVIDER ( custom , google , microsoft , 또는 github ), SIYUAN_OIDC_CLIENT_ID , 그리고 아래의 제공자별 값을 설정하세요. GitHub는 OAuth 2.0 사용자 API 어댑터를 사용하며, 다른 제공자는 OpenID Connect 디스커버리와 ID Token 검증을 사용합니다. 잠금 화면 비밀번호가 없을 때 유효하지 않은 활성화 구성은 Docker 시작을 중지시킵니다
SIYUAN_OIDC_ISSUER_URL : custom 및 microsoft 제공자에 필요한 발급자 URL입니다. Microsoft는 https://login.microsoftonline.com/<tenant-id>/v2.0 과 같은 테넌트별 발급자를 사용해야 합니다
SIYUAN_OIDC_CLIENT_SECRET : OpenID Connect 제공자를 위한 선택적 클라이언트 시크릿이며, GitHub OAuth 어댑터에는 필수입니다. 모든 인증 코드 흐름은 PKCE도 사용합니다
SIYUAN_OIDC_SCOPES : 쉼표 또는 공백으로 구분된 스코프이며, openid 는 항상 포함됩니다
SIYUAN_OIDC_REDIRECT_URL : /api/system/oidc/callback 으로 끝나는 공개 HTTPS 콜백 URL이며, 원격 브라우저 접근에 필요합니다
SIYUAN_OIDC_ALLOW_ALL : 제공자가 인증한 모든 ID에 SiYuan 관리자 접근 권한을 명시적으로 부여합니다
SIYUAN_OIDC_CLAIM_RULES : allow-all이 비활성화된 경우 사용되는 클레임 규칙의 JSON 배열입니다. 예: [{"claim":"email","operator":"equals","values":["[email protected]"]},{"claim":"email_verified","operator":"equals","values":["true"]}] ; 규칙 내의 값은 OR로, 규칙 간에는 AND로 결합됩니다
네이티브 모바일 앱은 고정 콜백 URI siyuan:/oidc-callback 을 사용하므로, 작성된 그대로 등록하세요. 모바일 구성 검증은 저장 전에 이 콜백을 사용합니다. custom 제공자, Microsoft, GitHub는 애플리케이션 등록이 이 콜백 URI를 허용하는 경우에만 사용할 수 있습니다. Google은 Android 클라이언트 유형에 대해 이 사설 사용 URI를 허용하지 않으므로, Google 로그인은 브라우저 및 데스크톱 흐름으로 제한됩니다
SIYUAN_LANG : 인터페이스 언어(선택 사항, Docker에서 설정하지 않으면 기본값 en). zh-CN / zh-TW / en / ja / pt-BR 같은 BCP 47 태그를 허용하며, zh_CN / en_US 같은 레거시 밑줄 값도 하위 호환성을 위해 허용됩니다. 설정에서 선택한 언어가 재시작 후에도 유지되도록 하려면 이 값을 생략하세요. 설정하면 매 시작 시 적용되어 저장된 설정을 덮어씁니다
또는 --lang 명령줄 매개변수를 사용하세요. 둘 다 설정된 경우 명령줄이 우선합니다
간단하게 하려면 호스트와 컨테이너에서 워크스페이스 폴더 경로를 일치하도록 구성하는 것을 권장합니다. 예를 들어 workspace_dir_host 와 workspace_dir_container 를 모두 /siyuan/workspace 로 구성하는 것입니다. 해당 시작 명령은 다음과 같습니다:
먼저 AuthCode를 자신의 강력한 비밀번호로 설정하세요(Bash에서는 export AuthCode='your-strong-password' 사용, Compose는 같은 디렉터리의 .env 파일도 읽을 수 있음). 값이 설정되지 않았거나 비어 있으면 예제는 오류와 함께 중지됩니다.
docker run -d \
-v /siyuan/workspace:/siyuan/workspace \
-p 6806:6806 \
-e PUID=1001 -e PGID=1002 \
b3log/siyuan \
serve \
--workspace=/siyuan/workspace/ \
--accessAuthCode= " ${AuthCode :? Set AuthCode} "
Docker Compose
Docker Compose로 SiYuan을 실행하는 사용자의 경우, 환경 변수 PUID 와 PGID 를 전달하여 사용자 및 그룹 ID를 사용자 정의할 수 있습니다. 다음은 Docker Compose 구성의 예입니다:
먼저 AuthCode를 자신의 강력한 비밀번호로 설정하세요(Bash에서는 export AuthCode='your-strong-password' 사용, Compose는 같은 디렉터리의 .env 파일도 읽을 수 있음). 값이 설정되지 않았거나 비어 있으면 예제는 오류와 함께 중지됩니다.
version : " 3.9 "
services :
main :
image : b3log/siyuan
command : ['serve', '--workspace=/siyuan/workspace/', '--accessAuthCode=${AuthCode:?Set AuthCode}']
ports :
- 6806:6806
volumes :
- /siyuan/workspace:/siyuan/workspace
restart : unless-stopped
environment :
- TZ=${YOUR_TIME_ZONE} # 시간대 식별자 목록은 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 에서 확인할 수 있습니다
- PUID=${YOUR_USER_PUID} # 사용자 ID 사용자 정의
- PGID=${YOUR_USER_PGID} # 그룹 ID 사용자 정의
이 설정에서:
PUID 와 PGID 는 동적으로 설정되어 컨테이너에 전달됩니다
이 변수가 제공되지 않으면 기본값 1000 이 사용됩니다
환경에서 PUID 와 PGID 를 지정하면 compose 파일에서 user 지시문( user: '1000:1000' )을 명시적으로 설정할 필요가 없습니다. 컨테이너는 시작 시 이러한 환경 변수를 기반으로 사용자와 그룹을 동적으로 조정합니다.
사용자 권한
이미지에서 entrypoint.sh 스크립트는 지정된 PUID 와 PGID 로 siyuan 사용자 및 그룹 생성을 보장합니다. 따라서 호스트에서 워크스페이스 폴더를 생성할 때, 사용하려는 PUID 와 PGID 에 맞게 폴더의 사용자 및 그룹 소유권을 설정하는 데 주의하세요. 예를 들어:
chown -R 1001:1002 /siyuan/workspace
사용자 정의 PUID 와 PGID 값을 사용하는 경우, entrypoint 스크립트는 컨테이너 내부에 올바른 사용자와 그룹이 생성되도록 보장하며, 마운트된 볼륨의 소유권도 그에 맞게 조정됩니다. 환경 변수가 사용자 정의를 처리하므로 docker run 또는 docker-compose 에서 수동으로 -u 를 전달할 필요가 없습니다.
숨겨진 포트
NGINX 리버스 프록시를 사용하여 포트 6806을 숨기세요. 다음에 유의하세요:
/ws 에 대한 WebSocket 리버스 프록시를 구성하세요
일반 요청과 /ws 모두에 대해 포트를 포함한 원래 Host 헤더를 보존하세요. NGINX에서는 두 프록시 위치 모두에서 proxy_set_header Host $http_host; 를 구성하세요. $host 를 사용하면 비표준 포트(예: 8443 )가 제거되어 Origin 검증이 실패하고, 페이지가 로고에서 멈춘 채 반복적으로 새로고침되거나, API 응답이 401 이 되거나, WebSocket 연결이 실패할 수 있습니다
참고
마운트된 볼륨의 정확성을 반드시 확인하세요. 그렇지 않으면 컨테이너 삭제 후 데이터가 손실됩니다
리디렉션에 URL 재작성을 사용하지 마세요. 그렇지 않으면 인증에 문제가 발생할 수 있으므로 리버스 프록시를 구성하는 것을 권장합니다
권한 문제가 발생하면 PUID 및 PGID 환경 변수가 호스트 시스템의 마운트된 디렉터리 소유권과 일치하는지 확인하세요
제한 사항
데스크톱 및 모바일 애플리케이션 연결을 지원하지 않으며, 브라우저에서만 사용할 수 있습니다
PDF, HTML 및 Word 형식으로의 내보내기를 지원하지 않습니다
Markdown 파일 가져오기를 지원하지 않습니다
Kubernetes 호스팅
Kubernetes 배포
HelmForge SiYuan 차트는 HelmForge에서 커뮤니티에서 유지 관리하며, 공식 b3log/siyuan 이미지를 사용하고, 공식 SiYuan 차트가 아닙니다. 차트 문제는 HelmForge 에 보고하세요.
10Gi ReadWriteOnce 볼륨을 프로비저닝할 수 있는 기본 StorageClass가 있는 Kubernetes 클러스터와 Helm, kubectl을 준비한 후 다음 명령을 실행하세요:
helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install siyuan helmforge/siyuan --namespace siyuan --create-namespace --wait
kub…
No comments yet.
to comment.