| 概要 | トピックの最初の投稿内で、hledger のジャーナルをライブダッシュボードとしてレンダリングします。 | |
| リポジトリ | gitea.kosmos.org/raucao/discourse-hledger | |
| インストールガイド | README |
機能
トピックの最初の投稿にフェンストされた hledger コードブロック内に hledger ジャーナルを配置すると、サーバーの hledger 実行可能ファイルによってオンデマンドで生成される5つのレポートを含むダッシュボードに置き換えられます。
-
アカウント — 完全な残高ツリー。すべての親アカウントが展開された状態です。 -
貸借対照表 — 資産、負債、純資産をセクションごとに折りたたんで表示します。 -
損益計算書 (P&L) — 収益と費用。 -
純資産 — 出資資本の商品別内訳。 -
ジャーナル — 各仕訳を含む取引ログ。 -
レポートは開始日/終了日(終了日は含む)の範囲でフィルタリングできます。
-
@username形式で記述されたアカウントセグメント(例:equity:@alice)は、通常のプロフィールカード付きの Discourse メンションリンクになります。リンクされるのは既存のユーザーのみです。 -
レポートはオンデマンドで生成され、投稿の改訂ごとにキャッシュされるため、ジャーナルを編集すると更新されます。
例ブロック
```hledger
2024-01-01 期初残高
assets:bank:checking 1000.00 EUR
equity:alice -600.00 EUR
equity:bob -400.00 EUR
```
スクリーンショット
要件
- サーバー上の
hledger実行可能ファイル(hledger 1.32.3 でテスト済み)。 - Discourse 2.7.0 以降。
標準的な Docker インストールの場合、プラグインと hledger パッケージを app.yml 経由でインストールし、再ビルドします:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://gitea.kosmos.org/raucao/discourse-hledger.git
- exec:
cd: $home
cmd:
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y hledger
設定
管理 > 設定 > プラグインでプラグインを有効にする(hledger enabled)。- トピックの最初の投稿に hledger ジャーナルを追加する。
- 実行可能ファイルがデフォルトの
PATHにない場合は、hledger pathを設定する(オプション)。
設定項目
| 名前 | 説明 |
|---|---|
hledger enabled |
プラグインを有効にする。 |
hledger path |
hledger 実行可能ファイルへのパス(デフォルト: hledger)。 |
hledger max journal bytes |
受け入れられるジャーナルの最大サイズ(バイト単位、デフォルト: 262144)。 |
hledger max journal lines |
ジャーナルの最大行数(デフォルト: 5000)。 |
hledger timeout seconds |
各 hledger 呼び出しのリアルタイム制限(デフォルト: 10)。 |
hledger max output bytes |
取得される hledger 出力の上限(デフォルト: 1048576)。 |
hledger memory limit mb |
hledger プロセスのメモリ上限。0 で無効化(デフォルト: 256)。 |
hledger global rate limit per minute |
全ユーザーにわたるレポート生成の上限。0 で無効化(デフォルト: 120)。 |
セキュリティ
ジャーナルは信頼できない入力です。このプラグインは、hledger を権限のないサブプロセスとして、環境変数をサニタイズし、プライベートな作業ディレクトリ、ハードタイムアウト、CPU/ファイルサイズ/メモリ制限、出力上限を設定して実行し、include ディレクティブを拒否します。レポートは、閲覧者が確認できるトピックに対してのみ返され、リクエストは IP ごとに(30回/分)およびグローバルにレート制限されます。
互換性とライセンス
- MIT ライセンス
- フィードバック、バグ報告、翻訳はこのトピック、または raucao@kosmos.org 宛のメール、ソーシャルメディア(ActivityPub/Nostr)、チャット(XMPP)にて大歓迎です。


