SiYuan: Perangkat lunak manajemen pengetahuan pribadi yang mengutamakan privasi dan bisa di-host sendiri
(github.com/siyuan-note)- SiYuan adalah sistem manajemen pengetahuan pribadi yang mengutamakan privasi dengan dukungan referensi tingkat blok yang terperinci dan Markdown WYSIWYG
- Fitur utamanya mencakup referensi tingkat blok dan tautan dua arah, embed kueri SQL, pengeditan dokumen besar, rumus dan bagan, web clipping, tautan anotasi PDF, tampilan tabel database, pembelajaran berulang dengan flashcard, dan lainnya
- Menyediakan aplikasi desktop dan mobile, deployment Docker, API, CLI, serta marketplace komunitas; juga mendukung penulisan AI dan chat Q/A berbasis OpenAI API serta Tesseract OCR
- Sebagian besar fitur gratis hingga untuk penggunaan komersial, tetapi beberapa fitur khusus anggota berbayar, dan sinkronisasi data melalui disk sinkronisasi pihak ketiga tidak didukung karena berpotensi merusak data
- Deployment Docker hanya mendukung penggunaan lewat browser dan tidak mendukung koneksi aplikasi desktop/mobile, ekspor PDF/HTML/Word, maupun impor file Markdown
Model manajemen pengetahuan yang ditawarkan SiYuan
- SiYuan adalah sistem manajemen pengetahuan pribadi dengan slogan “Refactor your thinking”
- Arah dasarnya adalah mengutamakan privasi, dengan dukungan referensi tingkat blok yang terperinci dan pengeditan Markdown WYSIWYG
- Panduan pengguna online tersedia dalam English
- Forum diskusi berbahasa Inggris dikelola di SiYuan English Discussion Forum
Fitur utama
- Fitur blok konten mencakup referensi tingkat blok dan tautan dua arah, atribut kustom, embed kueri SQL, serta protokol
siyuan:// - Editor mendukung pengeditan gaya blok, Markdown WYSIWYG, outline daftar, zoom blok, dan pengeditan dokumen besar berskala jutaan kata
- Berbagai ekspresi seperti rumus, bagan, flowchart, Gantt chart, timing chart, dan notasi balok dapat dimasukkan ke dalam dokumen
- Mendukung web clipping dan tautan anotasi PDF
- Ekspor mendukung Markdown standar yang menyertakan referensi blok, embed, dan aset, serta PDF, Word, dan HTML
- Juga mencakup fungsi menyalin ke WeChat MP, Zhihu, dan Yuque
- Database menyediakan Table view
- Mendukung pembelajaran berulang berselang dengan flashcard, penulisan AI dan chat Q/A berbasis OpenAI API, serta Tesseract OCR
- Menyediakan multi-tab, layar terbagi drag-and-drop, template snippet, dan snippet JavaScript/CSS
- Mendukung aplikasi Android, iOS, HarmonyOS, serta deployment Docker
- Menyediakan API dan marketplace komunitas
- Sebagian besar fitur gratis hingga untuk penggunaan komersial, sementara beberapa fitur adalah fitur anggota berbayar yang tercantum di Pricing
Arsitektur dan ekosistem
- Ekosistem SiYuan terdiri dari engine editor, ekstensi, marketplace, penyimpanan data, API plugin, aplikasi mobile, dan proyek pembelajaran berulang
- lute: engine editor
- chrome: ekstensi Chrome/Edge
- bazaar: marketplace komunitas
- dejavu: penyimpanan data
- petal: API plugin
- android: aplikasi Android
- ios: aplikasi iOS
- harmony: aplikasi HarmonyOS
- riff: pembelajaran berulang berselang
Instalasi dan deployment
- Untuk desktop dan mobile, instalasi melalui app market lebih disarankan demi upgrade sekali klik di masa mendatang
- Aplikasi mobile tersedia di App Store, Google Play, dan F-Droid
- Aplikasi desktop tersedia di Microsoft Store
- Paket instalasi dapat diperoleh dari B3log dan GitHub Releases
- Entri package manager tersedia sebagai
siyuandansiyuan-note
Hosting Docker
- Cara termudah menyediakan SiYuan di server adalah deployment Docker
- Nama image Docker adalah
b3log/siyuan, dan halaman image ada di Docker Hub - Mulai v3.7.0, subcommand
serveharus diberikan secara eksplisit- Contoh:
docker run b3log/siyuan serve --workspace=...
- Contoh:
- Opsi eksekusi utama adalah sebagai berikut
--workspace: menentukan path folder workspace yang di-mount dari host dengan-v--accessAuthCode: menentukan kata sandi layar kunci
- Variabel lingkungan PUID dan PGID dapat digunakan untuk menyesuaikan user dan grup yang menjalankan proses di dalam container
- Jika nilai tidak diberikan, default-nya adalah
1000 - Ini adalah pengaturan untuk mengurangi masalah izin pada direktori yang di-mount dari host
- Jika nilai tidak diberikan, default-nya adalah
- Path workspace juga dapat diatur melalui variabel lingkungan
SIYUAN_WORKSPACE_PATH, tetapi jika ada argumen command line, command line diprioritaskan - Kata sandi layar kunci juga dapat diatur melalui variabel lingkungan
SIYUAN_ACCESS_AUTH_CODE, tetapi jika ada argumen command line, command line diprioritaskan - Dengan menetapkan
SIYUAN_ACCESS_AUTH_CODE_BYPASS=true, kata sandi layar kunci dapat dinonaktifkan SIYUAN_LANGmenentukan bahasa antarmuka di Docker; jika tidak diatur, default-nya adalahen- Untuk menyembunyikan port 6806, NGINX reverse proxy dapat digunakan, dan konfigurasi reverse proxy WebSocket untuk
/wsdiperlukan - Hal yang perlu diperhatikan pada deployment Docker
- Jika volume mount tidak benar, data bisa hilang setelah container dihapus
- Karena masalah autentikasi dapat terjadi, konfigurasi reverse proxy disarankan daripada redirect dengan penulisan ulang URL
- Jika ada masalah izin, pastikan
PUIDdanPGIDcocok dengan kepemilikan direktori mount di host
- Keterbatasan deployment Docker
- Tidak mendukung koneksi aplikasi desktop dan mobile; hanya mendukung penggunaan melalui browser
- Tidak mendukung ekspor dalam format PDF, HTML, dan Word
- Tidak mendukung impor file Markdown
CLI
- CLI bawaan mengakses data workspace secara langsung tanpa server yang sedang berjalan
- Contoh penggunaan cepat adalah sebagai berikut
siyuan notebook list -w ~/SiYuan: menampilkan semua notebooksiyuan search "keyword" -w ~/SiYuan -f json: pencarian teks penuh dengan output JSONsiyuan export md --id <block-id> -w ~/SiYuan: mengekspor dokumen ke Markdown
- Kategori perintah mencakup notebook dan dokumen, konten, metadata, kueri, referensi, impor/ekspor, manajemen data, utilitas, database, server, serta workspace/sistem
-f jsonmenyediakan output yang ramah skrip, sedangkan output default adalah-f table- Sebagian besar perintah perubahan mendukung
--dry-rununtuk pratinjau sebelum diterapkan - Binary CLI adalah
SiYuan-Kerneldi bawah<install>/resources/kernelpada path instalasi- Installer Windows menambahkannya otomatis ke PATH
- Di macOS/Linux, symbolic link dapat dibuat secara manual
Penyimpanan dan sinkronisasi data
- Data disimpan di folder data dalam workspace
- Peran folder utama adalah sebagai berikut
assets: menyimpan aset yang disisipkanemojis: menyimpan gambar emojisnippets: menyimpan code snippetstorage: menyimpan kondisi kueri, layout, flashcard, dan lainnyatemplates: menyimpan template snippetwidgets: menyimpan widgetplugins: menyimpan pluginpublic: menyimpan data publik
- Folder lainnya adalah folder notebook yang dibuat pengguna, dan file
.sydi dalam folder notebook menyimpan data dokumen - Format data dokumen
.syadalah JSON - Sinkronisasi data melalui disk sinkronisasi pihak ketiga tidak didukung; jika digunakan, data dapat rusak
- Meski disk sinkronisasi pihak ketiga tidak didukung, koneksi ke penyimpanan cloud pihak ketiga didukung dengan hak anggota berbayar
- Sebagai alternatif sinkronisasi manual, ekspor dan impor data dapat digunakan
- Desktop:
Settings→Export→Export Data/Import Data - Mobile:
Right column→About→Export Data/Import Data
- Desktop:
Open source dan upgrade
- SiYuan sepenuhnya open source dan menyambut kontribusi
- Repositori terkait adalah sebagai berikut
- Untuk panduan pengembangan, lihat Development Guide
- Jika menginstal melalui app store, lakukan update dari app store
- Jika menginstal dengan paket instalasi desktop, opsi
Settings→About→Automatically download update installation packagedapat mengunduh paket instalasi terbaru secara otomatis dan menampilkan panduan instalasi - Jika menginstal dengan paket instalasi manual, unduh ulang paket instalasi lalu instal
- Versi baru dapat dicek melalui
Check updatediSettings→About→Current Version, Official Download, dan GitHub Releases
FAQ lainnya
- Jika ikon blok tidak dapat ditemukan pada beberapa blok, seperti blok paragraf di dalam item daftar, itu berarti ikon blok untuk subblok pertama di bawah item daftar sedang dihilangkan
- Letakkan kursor pada blok tersebut lalu buka menu blok dengan
Ctrl+/
- Letakkan kursor pada blok tersebut lalu buka menu blok dengan
- Jika kehilangan kunci penyimpanan data, dan sebelumnya telah menginisialisasi beberapa perangkat dengan benar, kunci di semua perangkat sama dan dapat diambil dari
Settings→About→Data repo key→Copy key string - Jika kunci tidak dikonfigurasi dengan benar atau semua perangkat tidak dapat digunakan, Anda harus melakukan backup manual lalu mereset kunci penyimpanan data
- Gunakan
Export Dataatau salin langsung folderworkspace/data/dari sistem file untuk backup - Jalankan
Settings→About→Data repo key→Reset data repo - Setelah menginisialisasi kunci di satu perangkat, impor kunci di perangkat lain
- Cloud menggunakan direktori sinkronisasi baru, dan direktori sinkronisasi lama serta snapshot cloud lama tidak lagi dapat digunakan
- Gunakan
- Sebagian besar fitur gratis hingga untuk penggunaan komersial
- Hak anggota berbayar hanya dapat digunakan setelah pembayaran; untuk detail itemnya, lihat Pricing
1 komentar
Komentar Hacker News
Terlihat keren, tetapi setelah menjalani perjalanan manajemen pengetahuan/produktivitas, menurut saya kalau cukup akrab dengan komputer atau Unix, sebaiknya terlebih dahulu mengandalkan struktur direktori, nama file, teks biasa, daftar, dan Markdown
Pendekatan ala Unix yang mengutamakan file dibanding aplikasi lebih baik, dan sebaiknya menata dengan konsep-konsep umum seperti lokasi, benda, orang, peristiwa, metrik, dan cara penggunaan. Manfaatkan alat seperti perintah Unix, make/justfile, (rip)grep, git, dan fzf; kalau mencoba menyelesaikan masalah ini lewat web, yang diselesaikan bukan lagi manajemen pengetahuan dasar, melainkan masalah web. Smartphone/layar sentuh juga menjadi masalah besar, tetapi sama halnya, lebih realistis menyesuaikan file manager atau fzf di Termux agar layak dipakai dengan sentuhan daripada mencoba menyelesaikannya sendiri. Namun fitur backlink masih terus saya pikirkan, dan akan bagus kalau ada alat Unix yang memindai referensi ke file lain dari file teks di dalam hierarki
Ia hanya menyediakan satu direktori berisi file Markdown tanpa notebook atau folder, serta pencarian/tag yang cukup baik. Ini mirip dengan pergeseran dari email yang sebelumnya distrukturkan lebih dulu dalam hierarki dalam, menjadi “kalau sudah diindeks, tinggal dicari saat perlu”. Itu sudah cukup sesuai kebutuhan, dan meski ada bug kecil atau celah, bisa diakali atau dijalani tanpa itu. Batasan menjadi motivasi kuat yang memunculkan kreativitas dan eksekusi
Dengan aturan yang masuk akal, Anda bisa membuat versi web memakai sesuatu seperti Ghost atau Zola dan menerapkannya otomatis lewat CI. Ada backup dan sinkronisasi, aplikasi desktop/mobile, serta key binding Vim dan plugin git. Ini sistem yang cukup bagus, cocok dengan Unix dan beradaptasi dengan berbagai paradigma penjelajahan/penataan; saya sudah mencoba banyak alat, tetapi tidak ada yang mendekati Obsidian
Selama kira-kira setahun terakhir saya akhirnya menetap pada Markdown biasa dan hierarki direktori. Saya mengedit file dengan editor favorit saya, Emacs, dan tetap memakai key binding, pencarian, serta fitur version control yang sama. Catatan saya taruh di instance Forgejo yang saya host sendiri, meski GitHub juga bisa. Forgejo sudah punya antarmuka web, jadi catatan dan link bekerja dengan baik. Di laptop, saya menyiapkan mdbook untuk memantau direktori dan membangunnya menjadi situs web statis, dan saya memakainya saat ingin menelusuri atau membaca catatan. Saya juga mencari solusi menulis catatan di ponsel, tetapi kalau lebih dari beberapa baris, pada akhirnya saya tetap memakai laptop, dan di ponsel hampir hanya membaca. mdbook yang sama saya letakkan di balik VPN agar bisa diakses dari ponsel, dan kalau perlu mengedit saat bepergian, saya bisa memakai antarmuka web Forgejo
Bagi saya ini sangat cocok. Namun sinkronisasi dan penggunaan mobile masih kurang memuaskan. Di Termux ia berjalan dengan indah, tetapi saya berharap ada cara menaruh UI native mobile di atas aplikasi command-line. Tk/Tcl adalah yang paling dekat, tetapi opsinya lebih ke Android, sedangkan saya terutama pengguna iOS, jadi tidak ideal. Untuk sinkronisasi, ada rencana yang cukup masuk akal berbasis IMAP4 atau sinkronisasi berbasis git. Roadmap dan tugas proyek ini juga dilacak di dalam repositori dengan alat itu sendiri, jadi boleh dibilang memang berfungsi
Dulu saya pernah memikirkan ide aplikasi catatan yang sangat Unix, dan saya rasa masih bisa berjalan dengan baik. Kalau catatan disimpan sebagai database SQLite, kita mendapat kompresi, performa, dan backup yang mudah; kalau disimpan sebagai file teks di filesystem, kita mendapat pencarian yang mudah dan dependensi rendah. “Editor” hanya bertugas membuat file sementara baru dan membukanya dengan
$EDITOR. Nanti bisa diberi nama, atau cukup dinamai dengan tanggal saat ini. Kalau butuh link, pakai editor yang paham filesystem; kalau butuh syntax highlighting, pakai editor semacam itu; sinkronisasi bisa digabungkan dengan Syncthing; pencarian bisa memakai fzfSaya sudah memakai ini di home server selama beberapa tahun
Ini alat mirip Obsidian, cukup kurang rapi, dan dokumentasinya juga kurang. Bagus karena open source, tetapi saya kurang tahu perusahaan di baliknya. Selain bahwa itu perusahaan Tiongkok, saya tidak menemukan banyak informasi. Saya memakainya karena bisa di-host sendiri, memiliki sebagian besar fitur Obsidian, dan bisa dipakai dari mana saja lewat browser web. Ini fitur terbesar yang tidak ada di Obsidian
Saat pertama melihatnya, aplikasinya tidak terasa kasar, dan jelas lebih responsif daripada Notion serta terasa tidak semulus/selicin RemNote. Namun tooltip banyak muncul seketika sehingga cukup mengganggu. Sepertinya mereka ingin memasukkan spaced-repetition flashcard seperti RemNote, database seperti Notion, bahkan AI, dan tampaknya mereka melakukannya dengan cukup baik. Opsi ekspor yang beragam, termasuk Org-Mode, yang mempertahankan link internal, gambar, dan code block juga bagus. Saya suka bahwa ini alternatif yang solid dan kaya fitur untuk aplikasi cloud-first dan closed source, tetapi fitur layout lanjutan dan banyaknya fitur bisa terasa mengganggu dan memberatkan untuk kebutuhan saya. Tana juga solusi all-in-one serupa dan lebih inovatif, tetapi pada akhirnya saya cenderung tertarik ke aplikasi yang lebih terfokus
Meski aplikasi Electron-nya punya HTTP API, demo web hanya bisa membuka file sisi klien lewat filesystem API. Suatu saat saya berniat mem-fork-nya dan menyesuaikannya untuk kebutuhan saya. Dan saya juga punya keinginan menyimpang untuk mengubah format serialisasinya dari Markdown ke XML, lalu memanipulasi graph dengan alat lain yang memakai xpath, xquery, dan basex
Saya sering melihat alat catatan seperti ini terus bermunculan. Saya sudah berinvestasi cukup dalam di Logseq, dan versi basis data barunya juga kabarnya akan segera keluar
Kalau tidak menyediakan alat impor/ekspor yang memungkinkan memindahkan catatan di antara aplikasi utama seperti Logseq atau Obsidian, alat seperti ini hanya akan dipakai pengguna baru atau orang yang catatannya masih sangat sedikit sehingga punya waktu untuk memindahkannya
Mungkin ada keuntungan dari sisi performa atau kompresi, tetapi jika mempertimbangkan jumlah tulisan yang akan dipakai satu orang sepanjang hidupnya, itu belum langsung meyakinkan bagi saya
Lisensinya agak aneh. Sinkronisasi self-hosted disebut sebagai fitur berbayar dan memang ada pemeriksaan lisensi di kodenya, tetapi tidak seperti produk open core biasa yang punya direktori
ee/dengan lisensi terpisah; seluruh kode, termasuk kode pemeriksaan lisensi, berada di bawah AGPLFAQ juga menekankan bahwa “SiYuan is completely open source”. Kalau begitu, menghapus pemeriksaan lisensi lewat patch, menurut saya, hanya perlu perubahan satu baris dan tetap sepenuhnya mematuhi lisensi. Bahkan binari dari versi yang sudah dipatch pun bisa didistribusikan. Tentu saja itu tindakan yang cukup tidak baik. Apakah ini memang disengaja? Apakah yang dijual hanya kenyamanan image yang sudah dibangun sebelumnya?
Itu benar-benar memungkinkan penjualan perangkat lunak bebas, dan jika dijalankan dengan baik, modelnya berjalan semestinya
Namun karena keterbatasan akun developer Apple, jika tidak ingin mengeluarkan $100 untuk membangun versi iOS, memakai versi resmi memang lebih masuk akal. Ada juga dua patch tidak resmi yang cukup dikenal yang menghapus batasan berbayar. Salah satunya adalah github.com/siyuan-community/siyuan, versi eksperimen dari developer pihak ketiga yang fiturnya diuji lalu diajukan ke upstream, dan yang lain adalah github.com/EightDoor/siyuan yang sekadar menghapus fitur berbayar. Ada juga PR dari developer komunitas yang mengusulkan penambahan sertifikat digital agar binari paket tidak resmi tidak dapat memakai layanan cloud resmi. Karena marketplace plugin memakai CDN resmi, biaya trafiknya tidak kecil, tetapi PR itu ditolak
Trilium Notes juga bisa saya rekomendasikan. Saya sudah menggunakannya dengan puas selama beberapa tahun
Sekarang memang dalam “mode pemeliharaan”, tetapi bagi saya pribadi itu justru kelebihan karena tidak ada risiko fitur membengkak. Bisa di-self-host, merupakan webapp yang bagus, punya klien native opsional, dan berfungsi juga secara offline. https://github.com/zadam/trilium
https://github.com/TriliumNext/Notes
Saya sudah men-self-host selama 3 bulan dan puas. Saya pindah dari Joplin dan memang kehilangan akses offline, tetapi ini jauh lebih ekspresif dan lebih nyaman dipakai
Fitur lain di versi Pro juga tidak terlalu saya rindukan. Tidak bergantung pada container Docker lain, dan untuk autentikasi saya hanya memakai Authelia. Memang memakai format berkas sendiri, tetapi saya mencadangkan volume datanya dan bisa mengekspor manual ke Markdown sederhana. UI web-nya responsif untuk penggunaan mobile, dan dalam kasus saya lebih cocok dibanding alat-alat lain
Lalu saya memakai instance S3 self-hosted untuk menyinkronkan semua instalasi, termasuk OSX dan Android/iPhone. Sinkronisasinya bekerja sangat baik. Melihat jumlah fiturnya, menurut saya program ini sepenuhnya menyingkirkan Obsidian sebagai pembanding. Saya akan menyebutnya alternatif yang lebih dekat ke Notion. Saat ini saya sedang membuat utilitas pendamping kecil yang self-hosted untuk Siyuan, yang memungkinkan pengguna membagikan catatan secara publik
Saya juga setuju dengan rekomendasi yang terlihat di sini
Cara manajemen pengetahuan saya sangat sederhana. Semuanya ada di git, dalam struktur direktori besar yang tumbuh secara alami seiring waktu. Catatan saya benar-benar banyak, sekitar 7.000–8.000. Menaruhnya di git memberi saya fleksibilitas untuk menggunakannya dengan cara yang saya inginkan. Kadang saya memakai Emacs/Neovim, tetapi sebagian besar saya memakai Sublime Text karena ada ruang kerja per proyek atau konsep. Untuk mobile, semuanya saya push ke instance Gitea saya. Saya tidak sering membutuhkan akses catatan dari mobile, tetapi belakangan ini makin saya pikirkan. Saya ingin mendapat rekomendasi cara membaca direktori berkas teks di Android
Di iOS, sekarang saya memakai Working Copy untuk commit/push/pull git, dan Obsidian untuk penyuntingan teks. Untuk pengeditan Markdown cepat, saya cukup suka antarmuka Obsidian. Setahu saya Obsidian juga ada versi Android, tetapi saya belum mencobanya. Saya tidak tahu apakah ada versi Android untuk Working Copy, mungkin ada aplikasi git GUI yang serupa
Yang terasa kurang dari aplikasi-aplikasi seperti Notion adalah fitur untuk mewarisi properti database
Misalnya, saya ingin membuat database induk dengan properti tugas dasar seperti judul dan tenggat, lalu membuat database turunan yang menambahkan properti per proyek. Dengan begitu, saya bisa membuat satu tampilan untuk melihat semua tugas yang harus dikerjakan hari ini di satu tempat, sekaligus tetap bisa menambahkan semua informasi yang diperlukan untuk tiap tugas. Anehnya, sejauh yang saya tahu, belum ada yang memasukkan hal seperti ini ke dalam aplikasi
https://tana.inc/docs/supertags
Saya tidak bisa bicara untuk versi tradisional berbasis Markdown, tetapi secara umum saya setuju bahwa akan bagus kalau fitur seperti ini tersedia luas
Kebanyakan alat yang kompleks punya tipe tugas, sebagian bisa dikustomisasi dan sebagian tidak. Misalnya, Jira sepertinya bisa melakukan apa yang dijelaskan
Namun implementasi tugas bawaannya memakai template, bukan pewarisan, jadi Anda harus menulis skrip sendiri
Terlihat bagus, tetapi tampak hampir sama persis dengan Obsidian. Apa bedanya dengan fitur Obsidian?
Karena disebut “Personal Knowledge Management”, saya mengharapkan sesuatu yang berbeda
Misalnya, kalau sekarang saya meneliti cara memulai streaming IRL, saya ingin membuat topik bernama “IRL Streaming”, lalu memasukkan tautan video, tautan dokumen/dokumentasi/tutorial/panduan/cara pakai, dan juga menulis catatan di dalamnya. Pada akhirnya saya akan mempelajari topik itu, dan jika perlu saya juga bisa membuat subtopik seperti “SRT and SLS vs RTMP” untuk diteliti. Ada yang bilang ini seperti klon Obsidian, tetapi di situs web Obsidian disebutkan bahwa itu alat yang membantu menulis buku. Ini disebut PKM, jadi tampaknya terkait, tetapi mungkin berbeda dari yang saya cari. Saya tidak menginginkan pendekatan folder berisi file seperti yang disarankan komentar induk. Saya ingin webapp yang bisa diakses dari mana saja, tempat saya bisa memasukkan tautan materi yang dikategorikan per topik beserta catatan tentangnya. Setelah membaca README siyuan-note, sepertinya ini bisa dilakukan. Satu pertanyaan: apakah mendukung banyak pengguna? Saya ingin meng-hosting-nya untuk komunitas lokal saya