Hledgerプラグイン - トピック内でプレーンテキストの会計帳簿をレンダリング

:information_source: 概要 トピックの最初の投稿内で、hledger のジャーナルをライブダッシュボードとしてレンダリングします。
:hammer_and_wrench: リポジトリ gitea.kosmos.org/raucao/discourse-hledger
:open_book: インストールガイド README

機能

トピックの最初の投稿にフェンストされた hledger コードブロック内に hledger ジャーナルを配置すると、サーバーの hledger 実行可能ファイルによってオンデマンドで生成される5つのレポートを含むダッシュボードに置き換えられます。

  • :clipboard: アカウント — 完全な残高ツリー。すべての親アカウントが展開された状態です。

  • :balance_scale: 貸借対照表 — 資産、負債、純資産をセクションごとに折りたたんで表示します。

  • :chart_increasing: 損益計算書 (P&L) — 収益と費用。

  • :busts_in_silhouette: 純資産 — 出資資本の商品別内訳。

  • :receipt: ジャーナル — 各仕訳を含む取引ログ。

  • レポートは開始日/終了日(終了日は含む)の範囲でフィルタリングできます。

  • @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

設定

  1. 管理 > 設定 > プラグイン でプラグインを有効にする(hledger enabled)。
  2. トピックの最初の投稿に hledger ジャーナルを追加する。
  3. 実行可能ファイルがデフォルトの 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)にて大歓迎です。
「いいね!」 7