r/selfhosted🔥 109
💬 38

爆速構築!Go言語製、SQLite/MarkdownベースのシンプルWiki「LeafWiki v0.10.0」

onenagut
1日前

ディスカッション (37件)

0
onenagutOP🔥 109
1日前

皆さんこんにちは!「LeafWiki v0.10.0」をリリースしたので紹介させてください。以前の職場では、STRIDE分析や会議メモ、runbook、事後報告書など、とにかくドキュメント作成に追われていました。スクリーンショットを貼り付けるたびに3回クリックして、ファイル選択画面を開いて、保存先を間違えて…という作業に限界を感じていたんです。また、存在しないページのパンくずリストをクリックするとツリー全体が消えて404になり、コンテキストもナビゲーションも失われるという仕様にもイライラしていました。その後、Obsidianを試しましたが、UIは最高なもののGitLabのリンク共有の手間や、セットアップが面倒なメンバーがいる問題、同時編集によるコンフリクト対応など、チーム運用には課題がありました。そこで「ファイルベースのWikiが欲しい!」と思い、自作したのがこのLeafWikiです。主な特徴は以下の通りです。・Go言語のバイナリ1つで動作。SQLite使用、コンテンツはディスク上にプレーンな.mdファイルとして保存・Ctrl+Vで画像を直接エディタに貼り付け可能・存在しないページでもツリーが表示され続ける・バックリンク機能・ロール管理(管理者、エディタ、ビューワー)・Node.js、Redis、Postgresは一切不要!v0.10.0ではコミュニティの要望を取り入れ、信頼されたHTTPヘッダー経由のSSO/プロキシ認証(Authentik, Authelia, nginx basic auth)、KaTeX、目次生成、エディタ内検索・置換などを追加しました。GitHub: https://github.com/perber/leafwiki デモサイト: https://demo.leafwiki.com/ (毎時リセットされます)。ぜひ触ってみて、フィードバックやバグ報告をいただけると嬉しいです!

1
asimovs-auditor
👍11日前

この投稿やプロジェクトでAIがどう使われたか知りたい人は、このコメントの返信を展開してね。

2
Turnspit
👍41日前

これだよ!ずっと探してたドキュメントWikiソリューションそのものだ。最高だね、アップボートしとくよ!

3
onenagut
👍11日前

ありがとう!そう言ってもらえて嬉しいよ。

4
Electrical_Swim4312
👍11日前

わお、これすごくいいね。一つ質問なんだけど、ファイルはMarkdown形式で保存されてるの?それともSQLiteデータベース?今MarkdownファイルでWikiを運用してるんだけど、移行がどれくらい大変か知りたくて。

5
onenagut
👍21日前

Markdownファイルはデータディレクトリにコピーすればインポートできるけど、リンクの調整が必要になるかもしれない。だからインポート機能を使うのがおすすめだよ。アップロード時にアセットを検知して、リンクを修正しようとしてくれるから。

コンテンツ自体はファイルシステム上にMarkdownファイルとして保存される仕組みだよ。インポート機能はObsidianからの移行を希望するユーザーがいたから実装したんだ。WikiLinkの書き換えにも対応してる。

インポート時やファイルシステムからの読み込み時に、メタデータを付加してるんだ。例えば leafwiki_id とか leafwiki_last_creator_id といったメタデータで、コンテンツの移動検知やパーマリンク、リビジョン管理、Wikiの構造変更時なんかにも使われるね。

ツリービューはファイルシステムから生成されるから、構造自体はSQLite DBには保存されないよ。

SQLiteに保存されていて必須なのはユーザー情報くらいかな。

Markdownの内容に基づいて、SQLiteのデータベースをリンクやタグなどで埋めていく感じだね。

6
onenagut
👍21日前

Dockerを使えば簡単に動かせるし、自分のコンテンツをzipして試してみるといいよ。右のコンテキストメニューにインポートのエンドポイントがあるはず。

docker run -p 8080:8080 -v ~/leafwiki-data:/app/data
ghcr.io/perber/leafwiki:latest
--jwt-secret=yoursecret --admin-password=yourpassword --allow-insecure=true

Dockerが入っていればだけどね!

もしDockerがなければ、バイナリをダウンロードしてこうやって起動できるよ:

./leafwiki --jwt-secret=yoursecret --admin-password=yourpassword --allow-insecure=true

あと、温かい言葉をありがとう!

7
sevengali
👍31日前

ついに正解を見つけた感じだな :D 素晴らしい仕事だよ、立ち上げるのが楽しみだ。

8
onenagut
👍21日前

温かい言葉をありがとう!

9
Jovan_Konstantinovic
👍11日前

ついにシンプルで肥大化してないやつが来たか。Notepad++から乗り換えられそうだ。今夜絶対に試してみるよ。

10
onenagut
👍21日前

フィードバックもらえると助かる。

11
Jovan_Konstantinovic
👍4約24時間前

ちょっと試してみた:すごくいいね。画像アップロードも簡単だし、Markdownも使えるし、ハイパーリンクも認識される。ただ、スマホで使うことが多いから「フォルダ作成」や「ページ作成」ボタンがもう少し大きいと嬉しいな。なんなら緑色とかにして押しやすくしてほしい。モバイルだと小さすぎるよ。もし修正が大変なら、せめてサイドバーの外側をタップしたらサイドバーが閉じるようにしてほしい。今だと左上のボタンまで指を伸ばさないといけないから遠くてさ。それ以外は最高のアプリだよ、気に入った。

機能提案:ip、cmd、cfg、code、あるいはただのメモみたいに自動でタグ付けできる機能があるといいかも(スクリーンショット参照)。
https://preview.redd.it/ckxxkf84ti3h1.png?width=1343&format=png&auto=webp&s=e78ef61d492c7b0ccd8e8827a4f8981974271078

12
onenagut
👍2約24時間前

ありがとう。GitHubの方にイシューとして立てておくよ!

13
kalidibus
👍11日前

今のところ完璧に見えるね。ずっと探してたOneNoteの代替になりそうだ。さっきのコメントで言ってたけど、このプロジェクト自体はvibe-coded(AIによる自動生成)じゃないってこと?

14
onenagut
👍21日前

いや、AIの雰囲気だけで作った(vibe-coded)わけじゃないよ。AIコーディングツールが普及するより前の1年前に始めたからね。今の開発者と同じようにAIアシスタントは使うけど、アーキテクチャや決定事項は全部自分でやってる。

15
kalidibus
👍11日前

それはよかった。AIツールとの付き合い方は現実的に考えるようにしてるんだ。ただ、完全にAIの雰囲気だけで作られたようなプロジェクトは避けてるってだけで。改めてありがとう!もっと触ってみるのが楽しみだよ。OneNoteの代わりになるツールはずっと探してた最後のピースだったからね。

16
onenagut
👍21日前

言いたいのは、AIのアシストがあってもかなりの時間を費やしてるし、これは使い捨てのプロジェクトじゃないってこと。(AIの雰囲気だけで作られたツールって、結局そういうところが問題だと思うんだ)GitHubのイシューを見てもらえればわかると思うけど、長期間にわたっていろんな議論やバグ修正が行われてきたんだよ。

18
kalidibus
👍21日前

OneNoteからきれいにコピペできたら最高だけど、クリーンアップ作業くらいなら全然苦じゃないよ。一度きりの作業だしね。

19
onenagut
👍11日前

改善のためのフィードバックはいつでも大歓迎だよ!まだまだ改善の余地だらけだしね :P

20
MegaVolti
👍7約24時間前

最高だね!これまでTrilium、Wiki.js、flatnotes、Jotty、NoteDiscoveryを渡り歩いてきたけど、どれもしっくりこなかった。これは全部うまくやってのけてる感じがするし、環境構築するのが待ちきれないよ!ありがとう!

21
onenagut
👍1約24時間前

ありがとう!もし不明な点や、想定と違う動作があれば教えてね。

22
MegaVolti
👍3約20時間前

ちょっと気づいたこと。ヘッダーの後の余白が、次のセクションの前と比べて広すぎる気がする。例えば自分のホームラボのドキュメントページだと、こんな感じのブロックがたくさんあるんだけど、 md # header yaml code block # header yaml code block ヘッダーとその下のコードブロックの間に巨大な隙間ができる一方で、コードブロックの終わりと次のヘッダーの間はすごく詰まってるんだよね。これ逆の方がいいんじゃないかな。あと、flatnotesのディレクトリから.mdファイルをルートディレクトリにそのまま放り込んだら、いくつかはインポートされたけど全部はされなかった。理由はわからなかったけど、インポート機能を使ったらうまくいったよ。

23
onenagut
👍1約19時間前

サンキュー。GitHubに追加しておくね。ネット上に公開される可能性があるから、命名規則には厳しいスキーマを適用しているんだ。それが原因かもしれない。

24
MegaVolti
👍1約18時間前

自分のノートは基本的にシンプルな名前で、スペースはあるけど特殊文字は使ってないよ。以前flatnotesを使ってた時、ファイル名の問題を避けたかったから。いくつかのノートにはflatnotesのタグが入ってたから、ちゃんとしたMarkdown形式じゃなくて「#tagstuff」から始まってるものもあったけど、そのノートが影響受けてるか調べるより、素直にインポート機能を使ったんだ。それ以外は特に変わったところはないよ。シンプルな名前とプレーンなMarkdownテキストで、長すぎるものもないしね。

25
fixitchris
👍5約22時間前

Triliumはノードごとに著者が1人と想定されているからマルチユーザー環境では壁にぶつかるし、Wiki.jsは使えるけど5人チームに対してPostgres + Nodeのスタックは過剰なんだよね。flatnotesは個人利用には最高だけど、ちゃんとしたツリー表示がない。LeafWikiはその中間(ディスク上のMarkdown + SQLite + シングルGoバイナリ)で、何年も探し求めていた組み合わせだよ。今夜ホームサーバーで動かしてみる。

26
onenagut
👍1約21時間前

君の方が上手く説明できるよ ;) 試してくれて嬉しい。フィードバック待ってるよ!

27
GuardCode
👍1約22時間前

特定のノートやフォルダだけを共有したいときのために、フォルダやファイル、ノート単位の権限設定の予定はある?

28
onenagut
👍2約22時間前

正直に言うと、答えるのがなかなか難しいんだ。もちろん、初期段階から考えてはいたよ。個人的に一番難しいのは権限管理以外だと、実装方法、見栄えの良さ、権限をいかに分かりやすく表示するか、そしてネストされた要素をどう扱うか、ネストを許可すべきかといった点だね。もし何か提案があれば教えてもらえると助かる。

正直、近いうちにすぐ実装できるような機能ではないし、フォルダベースがいいのか、あるいはスペースのような形式がいいのかもまだ自分の中で明確じゃないんだ。

スッキリしない回答でごめんね :)

29
_Skar_
👍1約22時間前

これすごくいいね!ぜひ試してみたい。Unraid用のテンプレートを作ってもらうことは可能かな?;P

30
onenagut
👍3約22時間前

誰か作ってくれたら嬉しいんだけどな ;) ドキュメントにリンクを貼ることはできるよ。もしUnraidテンプレートを求めているユーザーが他にも多ければ、自分で作るつもり :) その代わり、テストをお願いすることになるけどね。とりあえず、https://github.com/perber/leafwiki/issues/1050 に「いいね」を押しておいて!

31
elasticvertigo
👍3約22時間前

やあ!数ヶ月前からユーザーとして使わせてもらってるよ。Leafwikiは最高だけど、Obsidianスタイルのバックリンク機能がないのが唯一残念だったんだ。今もう実装済みかな?それとも今後導入予定はある?あと、フロントマターを使ってみたんだけど、うまく動作させられなくて。

これからも素晴らしい開発を続けてね!
追伸:Obsidianを使ってるの、バレバレだよね 😂

32
onenagut
👍4約22時間前

u/elasticvertigo - 次のリリースで対応する予定だよ。すべて順調に進めばね。

33
puddyput
👍2約22時間前

モバイルでの使い勝手はどうかな?スマホの画面から新しいページを作成するのは簡単?エディタには自動保存機能はある?(例えば書き込み時に2000msのデバウンスで下書きを自動保存するとか)。Markdown表示とエディタの切り替えなんかもできるかな…もしそうなら最高!家族用のセルフホストWikiを探しているんだ。

34
onenagut
👍1約21時間前

モバイルでも動くけど、もっと改善が必要だね。今日、モバイルだとボタンが少し小さいっていうフィードバックをもらったばかりで、それは対応予定だよ。

自動保存はまだないかな。エディタはライブプレビュー付きの分割ビューを備えたMarkdownエディタで、Notionのようなブロックエディタではないんだ。純粋なMarkdownで書きたいなら分割表示を無効にもできるよ。

モバイル版は機能はするけど、まだ洗練されていない状態だね。

35
fruitytootiebootie
👍2約20時間前

こういうのずっと探してたんだ。デモしか試してないけど、ページを下にスクロールした状態でサイドバーから別のページを選択しても、読み込み時に一番上までスクロールされないみたいだね。iOS 26.5のSafariを使ってる。

36
onenagut
👍1約19時間前

報告ありがとう。GitHubのIssueに登録しておくよ。