SiYuan: プライバシー優先のセルフホスティング個人知識管理ソフトウェア
(github.com/siyuan-note)- SiYuan は、きめ細かなブロック単位参照と Markdown WYSIWYG をサポートする プライバシー優先の個人知識管理システム です
- 主な機能には、ブロック単位参照・双方向リンク、SQL クエリ埋め込み、大規模ドキュメント編集、数式・チャート、Web クリッピング、PDF 注釈リンク、データベースのテーブル表示、フラッシュカードの間隔反復学習などが含まれます
- デスクトップ・モバイルアプリ、Docker デプロイ、API、CLI、コミュニティマーケットプレイスを提供し、OpenAI API ベースの AI ライティングと Q/A チャット、Tesseract OCR にも対応しています
- 機能の大半は商用利用を含めて無料ですが、一部機能は 有料会員専用 であり、サードパーティ同期ディスク経由のデータ同期はデータ破損の可能性があるためサポートしていません
- Docker デプロイはブラウザー利用のみをサポートし、デスクトップ・モバイルアプリ接続、PDF/HTML/Word エクスポート、Markdown ファイルのインポートには対応していません
SiYuan が提供する知識管理モデル
- SiYuan は「Refactor your thinking」を掲げる個人知識管理システムです
- 基本方針は プライバシー優先 で、きめ細かな ブロック単位参照 と Markdown WYSIWYG 編集をサポートしています
- オンラインユーザーガイドは English で提供されています
- 英語ディスカッションフォーラムは SiYuan English Discussion Forum で運営されています
主な機能
- コンテンツブロック 機能には、ブロック単位参照と双方向リンク、ユーザー定義属性、SQL クエリ埋め込み、
siyuan://プロトコルが含まれます - エディター は、ブロックスタイル編集、Markdown WYSIWYG、リストアウトライン、ブロックズーム、100 万語規模の大規模ドキュメント編集をサポートします
- 数式、チャート、フローチャート、ガントチャート、タイミングチャート、五線譜など、さまざまな表現を文書に挿入できます
- Web クリッピングと PDF 注釈リンクをサポートします
- エクスポートは、ブロック参照と埋め込み、アセットを含む標準 Markdown、PDF、Word、HTML をサポートします
- WeChat MP、Zhihu、Yuque へコピーする機能も含まれます
- データベースでは Table view を提供します
- フラッシュカードの間隔反復学習、OpenAI API ベースの AI ライティングと Q/A チャット、Tesseract OCR をサポートします
- マルチタブ、ドラッグアンドドロップ分割画面、テンプレートスニペット、JavaScript/CSS スニペットを提供します
- Android、iOS、HarmonyOS アプリと Docker デプロイに対応しています
- API とコミュニティマーケットプレイスを提供します
- 機能の大半は商用利用を含めて無料で、一部機能は Pricing にある有料会員機能です
アーキテクチャとエコシステム
- SiYuan のエコシステムは、編集エンジン、拡張機能、マーケットプレイス、データリポジトリ、プラグイン API、モバイルアプリ、間隔反復学習プロジェクトで構成されています
- lute: エディターエンジン
- chrome: Chrome/Edge 拡張
- bazaar: コミュニティマーケットプレイス
- dejavu: データリポジトリ
- petal: プラグイン API
- android: Android アプリ
- ios: iOS アプリ
- harmony: HarmonyOS アプリ
- riff: 間隔反復学習
インストールとデプロイ
- デスクトップとモバイルでは、将来のワンクリックアップグレードのため アプリマーケットからのインストール を優先的に推奨します
- モバイルアプリは App Store、Google Play、F-Droid で提供されています
- デスクトップアプリは Microsoft Store で提供されています
- インストールパッケージは B3log と GitHub Releases から入手できます
- パッケージマネージャーの項目は
siyuanとsiyuan-noteで提供されています
Docker ホスティング
- サーバー上で SiYuan を提供する最も簡単な方法は Docker デプロイ です
- Docker イメージ名は
b3log/siyuanで、イメージページは Docker Hub にあります - v3.7.0 からは
serveサブコマンドを明示的に渡す必要があります- 例:
docker run b3log/siyuan serve --workspace=...
- 例:
- 主な実行オプションは次のとおりです
--workspace: ホストで-vによりマウントされるワークスペースフォルダーのパスを指定--accessAuthCode: ロック画面のパスワードを指定
- 環境変数で PUID と PGID を指定し、コンテナ内部の実行ユーザーとグループを調整できます
- 値を指定しない場合のデフォルトは
1000です - ホストにマウントしたディレクトリの権限問題を減らすための設定です
- 値を指定しない場合のデフォルトは
- ワークスペースパスは
SIYUAN_WORKSPACE_PATH環境変数でも設定できますが、コマンドライン引数がある場合はコマンドラインが優先されます - ロック画面のパスワードは
SIYUAN_ACCESS_AUTH_CODE環境変数でも設定できますが、コマンドライン引数がある場合はコマンドラインが優先されます SIYUAN_ACCESS_AUTH_CODE_BYPASS=trueを設定すると、ロック画面のパスワードを無効化できますSIYUAN_LANGは Docker でインターフェース言語を指定し、未設定時のデフォルトはenです- 6806 ポートを隠すには NGINX リバースプロキシを使用でき、
/wsに対する WebSocket リバースプロキシ設定が必要です - Docker デプロイ時の注意点
- マウントボリュームが正確でないと、コンテナ削除後にデータが失われる可能性があります
- 認証問題が発生する可能性があるため、URL 書き換えリダイレクトではなくリバースプロキシ構成を推奨します
- 権限問題がある場合は、
PUIDとPGIDがホストのマウントディレクトリ所有権と一致しているか確認する必要があります
- Docker デプロイの 制限事項
- デスクトップおよびモバイルアプリ接続はサポートせず、ブラウザー利用のみをサポートします
- PDF、HTML、Word 形式のエクスポートには対応していません
- Markdown ファイルのインポートには対応していません
CLI
- 内蔵 CLI は、実行中のサーバーなしで ワークスペースデータ に直接アクセスします
- すぐに使える例は次のとおりです
siyuan notebook list -w ~/SiYuan: すべてのノートブックを一覧表示siyuan search "keyword" -w ~/SiYuan -f json: JSON 出力による全文検索siyuan export md --id <block-id> -w ~/SiYuan: ドキュメントを Markdown としてエクスポート
- コマンドカテゴリには、ノートブック・ドキュメント、コンテンツ、メタデータ、クエリ、参照、インポート・エクスポート、データ管理、ユーティリティ、データベース、サーバー、ワークスペース・システムが含まれます
-f jsonはスクリプト向けの出力を提供し、デフォルト出力は-f tableです- 変更系コマンドの多くは、適用前プレビュー用の
--dry-runをサポートします - CLI バイナリはインストールパスの
<install>/resources/kernel配下にあるSiYuan-Kernelです- Windows インストーラーは PATH に自動追加します
- macOS/Linux では手動でシンボリックリンクを作成できます
データ保存と同期
- データはワークスペースの data フォルダー に保存されます
- 主なフォルダーの役割は次のとおりです
assets: 挿入されたアセットを保存emojis: 絵文字画像を保存snippets: コードスニペットを保存storage: クエリ条件、レイアウト、フラッシュカードなどを保存templates: テンプレートスニペットを保存widgets: ウィジェットを保存plugins: プラグインを保存public: 公開データを保存
- 残りのフォルダーはユーザーが作成したノートブックフォルダーで、ノートブックフォルダー内の
.syファイルは文書データを保存します .sy文書データ形式は JSON です- サードパーティ同期ディスク経由のデータ同期はサポートしておらず、そうしないとデータが破損する可能性があります
- サードパーティ同期ディスクはサポートしていませんが、有料会員権限としてサードパーティクラウドストレージ接続をサポートしています
- 手動同期の代替として、データのエクスポートとインポートを利用できます
- デスクトップ:
Settings→Export→Export Data/Import Data - モバイル:
Right column→About→Export Data/Import Data
- デスクトップ:
オープンソースとアップグレード
- SiYuan は完全に オープンソース で、貢献を歓迎しています
- 関連リポジトリは次のとおりです
- 開発案内は Development Guide を参照してください
- アプリストアからインストールした場合は、アプリストアで更新します
- デスクトップ用インストールパッケージからインストールした場合は、
Settings→About→Automatically download update installation packageオプションで最新のインストールパッケージを自動ダウンロードし、インストール案内を受け取れます - 手動インストールパッケージからインストールした場合は、インストールパッケージを再ダウンロードしてインストールします
- 新バージョンは
Settings→About→Current VersionのCheck update、Official Download、GitHub Releases で確認できます
その他 FAQ
- リスト項目内の段落ブロックのように、一部のブロックでブロックアイコンが見つからない場合は、リスト項目配下の最初の子ブロックのブロックアイコンが省略されている状態です
- カーソルをそのブロックに置き、
Ctrl+/でブロックメニューを開けます
- カーソルをそのブロックに置き、
- データリポジトリキーを紛失した場合、以前に複数デバイスで正しく初期化していれば、すべてのデバイスのキーは同一で、
Settings→About→Data repo key→Copy key stringから取得できます - キーが正しく構成されていない、またはすべてのデバイスを利用できない場合は、手動バックアップ後にデータリポジトリキーをリセットする必要があります
Export Dataを使うか、ファイルシステムでworkspace/data/フォルダーを直接コピーしてバックアップしますSettings→About→Data repo key→Reset data repoを実行します- 1 台のデバイスでキーを初期化した後、他のデバイスでキーを取得します
- クラウドでは新しい同期ディレクトリが使用され、既存の同期ディレクトリと既存のクラウドスナップショットはもう利用できません
- 機能の大半は商用利用を含めて無料です
- 有料会員権限は支払い後にのみ利用でき、詳細項目は Pricing を参照してください
1件のコメント
Hacker News のコメント
見た目は良さそうだが、知識管理/生産性の旅を経験してみると、コンピューターや Unix にある程度慣れているなら、まずは ディレクトリ構造、ファイル名、プレーンテキスト、リスト、Markdown に頼るのがよいと思う
アプリよりファイルを優先する Unix 的なアプローチのほうがよく、場所・物・人・イベント・指標・使い方のような普遍的な概念で整理するほうがよい。Unix コマンド、make/justfile、(rip)grep、git、fzf のようなツールを活用し、この問題を Web で解決しようとすると、基本的な知識管理ではなく Web の問題を解くことになる。スマートフォン/タッチスクリーンも大きな問題だが、同じく自分で直接解決しようとするより、ファイルマネージャーや Termux の fzf をタッチで使えるように調整するほうが現実的。ただし バックリンク機能については引き続き悩んでいて、階層内のテキストファイルから他ファイルへの参照をスキャンしてくれる Unix ツールがあるとよい
ノートブックやフォルダなしに、Markdown ファイルのある単一ディレクトリと、それなりの検索/タグだけを提供する。深い階層であらかじめ構造化していたメールをやめ、「インデックスしておけば必要なときに見つければよい」という流れに変わったのに似ている。必要な分には十分で、小さなバグや抜けがあっても回避したり、なくてもやっていける。制約は創造性と実行力を引き出す強い動機になる
合理的なルールを使えば、Ghost や Zola のようなもので Web 版を作り、CI で自動デプロイできる。バックアップと同期ができ、デスクトップ/モバイルアプリもあり、Vim キーバインドと git プラグインもある。Unix と相性がよく、さまざまな探索・整理パラダイムに適応するかなり良いシステムなので、いろいろなツールを使ってみたが Obsidian に近いものはなかった
この1年ほどは、単に 普通の Markdown とディレクトリ階層 に落ち着いた。好みのエディタである Emacs でファイルを編集し、キーバインド・検索・バージョン管理機能をそのまま使っている。ノートはセルフホストした Forgejo インスタンスに置いていて、GitHub でもよい。Forgejo にはすでに Web インターフェースがあるので、ノートとリンクはうまく動く。ノートPCでは mdbook がディレクトリを監視して静的 Web サイトにビルドするようにしてあり、ノートをざっと見たり読みたいときはそれを使う。スマホでノートを書くソリューションも探したが、数行以上なら結局ノートPCを使うほうで、スマホではほぼ読むだけ。同じ mdbook を VPN の裏に置いてスマホからもアクセスし、移動中に修正が必要なら Forgejo の Web インターフェースを使えばよい
自分にはとても合っている。ただし同期とモバイル利用はまだ物足りない。Termux では美しく動くが、コマンドラインアプリの上にモバイル向けのネイティブ UI を載せる方法があるとよい。Tk/Tcl がいちばん近いが Android 側の選択肢しかなく、自分は主に iOS ユーザーなので理想的ではない。同期については IMAP4 や git ベース同期という、それらしい計画がある。このプロジェクトのロードマップとタスクもリポジトリ内でこのツール自身で追跡しているので、実際に機能していると言える
以前、とても Unix らしいノートアプリのアイデアを思いつき、今でもうまく動き得ると思っている。ノートを SQLite データベースにすれば圧縮・性能・簡単なバックアップが得られ、ファイルシステム上のテキストファイルにすれば簡単な検索と低い依存性が得られる。「エディタ」は新しい一時ファイルを作って
$EDITORで開く役割だけを担う。後で名前を付けてもよいし、現在の日付で名付けてもよい。リンクが必要ならファイルシステムを理解するエディタを使い、構文ハイライトが必要ならそうしたエディタを使い、同期は Syncthing と組み合わせ、検索は fzf で行えばよいこれを何年もホームサーバーで使っている
Obsidian に似たツール で、かなり洗練不足でドキュメントも足りない。オープンソースなのは良いが、背後の会社についてはよく分からない。中国企業ということ以外はあまり見つけられなかった。セルフホストでき、Obsidian の機能の大半があり、どこからでも Web ブラウザで使えるので使っている。これが Obsidian にない最大の機能だ
初めて見たとき、アプリが粗雑だとは感じなかったし、Notion より明らかに反応がよく、RemNote より滑りすぎない感じがする。ただしツールチップがすぐ大量に出てきて、かなり気が散る。RemNote のような間隔反復フラッシュカード、Notion のようなデータベース、さらには AI まで入れたかったようで、それをかなりうまくやっているように見える。Org-Mode まで含め、内部リンク・画像・コードブロックを保持するさまざまなエクスポートオプションもよい。クラウド優先・クローズドソースのアプリ群に対する堅実で機能豊富な代替という点は気に入っているが、高度なレイアウト機能と多くの機能のせいで、自分の用途には気が散って重く感じるかもしれない。Tana も似たオールインワンソリューションで、さらに革新的だが、結局はより集中したアプリに惹かれてしまう
Electron アプリに HTTP API があるにもかかわらず、Web デモはファイルシステム API でクライアント側のファイルしか開けない。いつかフォークして自分向けに作るつもりだ。そしてシリアライズ形式を Markdown から XML に変えて、xpath、xquery、basex を使う別のツールでグラフを操作したいという、ひねくれた欲望もある
こういうノートツールが次々と新しく出てくるのをよく見かける。自分はすでに Logseq にかなり入れ込んでいて、新しいデータベース版ももうすぐ出る予定だ。
Logseq や Obsidian のような主要アプリ間でノートを移せるインポート/エクスポートツールを提供しない限り、こうしたツールは新規ユーザーか、ノートがごく少なくて移行に時間を割ける人だけが使うことになる。
性能や圧縮の利点はあるかもしれないが、一人の人間が一生で書く文章量を考えると、今すぐ納得できるほどではない。
ライセンスが少し変だ。セルフホスト同期 は有料機能とされていて、実際にコードにもライセンスチェックがあるが、一般的なオープンコア製品のように別ライセンスの
ee/ディレクトリがあるわけではなく、ライセンスチェックのコードまで含めてすべて AGPL の下にある。FAQ でも “SiYuan is completely open source” と強調している。だとすると、ライセンスチェックをパッチで取り除いても、私には一行の変更で済むように見えるし、それでもライセンスには完全に準拠していることになる。パッチ済みバージョンのバイナリを配布することすらできる。もちろん、かなり意地の悪い行為ではある。これは意図的なのだろうか? ビルド済みイメージの利便性だけを売っているのだろうか?
実際に自由ソフトウェアを販売できるようにしてくれるし、うまく運用すればきちんと機能する。
ただし Apple 開発者アカウントの制約があるため、iOS 版をビルドするのに $100 を払いたくないなら、公式版を使うほうが実際には良い。有料制限を取り除いた、比較的よく知られた非公式パッチも二つある。一つはサードパーティ開発者による実験版で、機能テスト後にアップストリームへ提出される github.com/siyuan-community/siyuan、もう一つは単純に有料機能を取り除く github.com/EightDoor/siyuan だ。また、非公式パッケージのバイナリが公式クラウドサービスを使えないようにデジタル証明書を追加しようというコミュニティ開発者の PR もあった。プラグインマーケットが公式 CDN を使っているためトラフィックコストは小さくないが、その PR は却下された。
Trilium Notes もおすすめできる。何年も満足して使っている。
今は「メンテナンスモード」だが、個人的には機能肥大化の危険がないので利点だと見ている。セルフホスト可能で、優れた Web アプリであり、任意のネイティブクライアントがあり、オフラインでも動作する。https://github.com/zadam/trilium
https://github.com/TriliumNext/Notes
3か月前からセルフホストしていて満足している。Joplin から移行し、オフラインアクセスは失ったが、ずっと 表現力が高く 使いやすい。
Pro 版のほかの機能も特に惜しいとは思わない。ほかの Docker コンテナには依存せず、認証には Authelia だけを使った。独自のファイル形式を使うが、データボリュームをバックアップし、手動で単純な Markdown にエクスポートできる。Web UI はモバイル利用にも反応がよく、私の場合はほかのツールより合っている。
そしてセルフホストした S3 インスタンスを使い、OSX と Android/iPhone を含むすべてのインストール環境を同期している。同期は非常にうまく動作した。機能の数を見ると、このプログラムは Obsidian を比較対象から完全に押し出していると感じる。Notion により近い代替だと言いたい。現在 SiYuan 向けの小さなセルフホスト補助ツールを作っていて、ユーザーがノートを公開共有できるようにするものだ。
ここで見たおすすめには私も同意する。
私の 知識管理 のやり方はとても単純だ。すべてが git の中にあり、時間とともに自然に大きくなった大きなディレクトリ構造に入っている。ノートは本当に多く、7千〜8千個ほどある。git に置いたおかげで、自分の望む形で使える柔軟性が得られた。時々 Emacs/Neovim を使い、たいていはプロジェクトや概念ごとの作業空間があるので Sublime Text を使っている。モバイルではすべて自分の Gitea インスタンスへプッシュしている。モバイルでノートにアクセスする必要は頻繁にはないが、最近もっと考えるようになっている。Android でテキストファイルのディレクトリを読む方法についておすすめがあれば知りたい。
iOS では今、git のコミット/プッシュ/プルに Working Copy を使い、テキスト編集には Obsidian を使っている。素早い Markdown 修正には Obsidian のインターフェースがかなり気に入っている。Obsidian には Android 版もあるはずだが、使ったことはない。Working Copy の Android 版があるかは知らないが、似たような GUI の git アプリはあるかもしれない。
Notion を含むこの種のアプリで物足りないのは、データベースのプロパティを継承する機能です
たとえば、タイトルや期限といった基本的なタスク属性を持つ親データベースを作り、プロジェクト別の属性を追加する子データベースを作りたいのです。そうすれば、今日やるべきすべてのタスクを一か所で見られる単一ビューを作りつつ、個々のタスクに必要な情報もすべて追加できます。不思議なことに、私の知る限り、こうしたものをアプリに組み込んだ人は誰もいません
https://tana.inc/docs/supertags
従来の Markdown ベース版については言えませんが、全体として、こうした機能が広く存在するとよいという点には同意します
複雑なツールの多くにはタスクタイプがあり、カスタマイズ可能なものもあれば、そうでないものもあります。たとえば Jira なら、説明されていることができそうです
ただし標準のタスク実装は継承ではなくテンプレートを使うため、自分でスクリプトを書く必要があります
見た目はよいですが、Obsidian とほとんど同じに見えます。Obsidian の機能とどう違うのでしょうか?
「Personal Knowledge Management」と聞いて、別のものを期待していました
たとえば今 IRL ストリーミングを始める方法を調べるなら、「IRL Streaming」というトピックを作り、その中に動画リンク、文書/ドキュメント/チュートリアル/ガイド/使い方へのリンクを入れ、ノートも書きたいです。最終的にはそのトピックを学べるようになり、必要なら「SRT and SLS vs RTMP」のようなサブトピックを作って調べることもできます。Obsidian のクローンのようだという話がありますが、Obsidian のウェブサイトを見ると、本を書くのを助けるツールだとされています。これは PKM と呼ばれているので関連はありそうですが、私が探しているものとは違うかもしれません。上のコメントが提案している、ファイルが入ったフォルダ方式は望んでいません。どこからでもアクセスできる Web アプリに、トピック別に分類した資料リンクと、それに関するノートを放り込みたいのです。siyuan-note の README を読んでみると、これはできそうです。ひとつ質問ですが、複数ユーザーをサポートしていますか? 地元コミュニティ向けにホスティングしたいです