ファイアフライIII – パーソナルファイナンスマネージャー

おそらく、皆さんの多くが彼を知っていると思います, Firefly IIIは、財務管理に使用できるサービスです. 私たちの銀行口座を理解するのを助けてくれるマネージャー, 私たちはお金がどこに行くのかを簡単に理解できるようになります, もちろん、オープンソースとオンプレミス!

まぁ, まあ、それだけです, 銀行口座の可視性を高める必要がある場合, または、収入と支出の監視を強化します, FireFly IIIは、この点で長年にわたって役立ってきました. 私たちはそれをより少なくインストールします 5 Dockerによる分数!

Firely IIIをインストールするにはいくつかの方法があります (そしてそれを構成するには), 必要なものに基づいて; この場合、Firefly IIIをDockerコンテナにインストールします, 先に進む前に、必要なファイルをダウンロードして、それらをニーズに合わせて調整します:

wgetのhttps://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose-importer.yml -O docker-compose.yml wget https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example -O .env wget https://raw.githubusercontent.com/firefly-iii/docker/main/database.env -O .db.env wget https://raw.githubusercontent.com/firefly-iii/data-importer/main/.env.example -O .importer.env

ファイル '.env を編集します’ そして、少なくとも私たちはAPP_KEYを変更します, MySQL データベース・アクセス・ローカルおよび資格証明, このファイルにはほとんどの構成があるためです, 通知が必要な場合のメール部分…

APP_KEY=secretrode32characters DEFAULT_LANGUAGE=es_ES TZ=ヨーロッパ/マドリード
...
DB_USERNAME=USUARIO_BD DB_PASSWORD=CONTRASEÑA_USUARIO_BD
...

ファイル '.db.env を編集します’ 少なくともDBアクセス資格情報を変更します (前の手順と同じです):

MYSQL_USER=USUARIO_BD MYSQL_PASSWORD=CONTRASEÑA_USUARIO_BD

前の, Fireflyにデータをインポートするためのコンテナに興味がある場合は、 '.importer.env を編集します。’ (そして、そうでない場合は, これを無視します). そして、Firefly IIIサーバーのIPアドレスまたはFQDNを示します, また、自分自身を認証する方法を選択します, 通常はアクセストークンを使用します (後で、それを生成する方法を見ていきます):

FIREFLY_III_URL=http://IP_O_FQDN_FIREFLY_III FIREFLY_III_ACCESS_TOKEN=ey...
TZ=ヨーロッパ/マドリード

そして、私たちは「docker-compose.yml’ 変更を加えることに興味がある場合, 私の場合、ポートを開いただけです, FireFly IIIの場合は80tcp, 81tcp は Importer 用で、もちろん 3306 外部からMySQLに相談できるようにオープンにしています, たとえば、Grafana から, 滞在:

サービス:
...
  アプリ:
...
    ポート:
      - '80:8080'
...
...
  DB:
...
    ポート:
      - '3306:3306'
...
...
  輸入業者:
...
    ポート:
      - '81:8080'
...

そして, コンテナを持ち上げて仕上げます:

docker compose -f docker-compose.yml up -d --pull=always

これで、FireflyiiiのWebサイトにアクセスできるようになります, この場合、DockerホストIPのポート80tcpで公開されます, つまりHTTP://DIRECCION_IP_O_FQDN、初めてログインするときは、アカウントを作成する必要があります, メールアドレスとパスワードを提供します & “登録する”,

入るとすぐに、最初の銀行を登録する必要があります, そして、アプリケーションを見始めることができます, しかし、データがなければ、それはやや貧弱です… したがって、次に行うことは、銀行からデータをインポートすることです!

最初です, 「Firefly III Data Impor Tool」コンテナで使用する認証の種類を決定する必要があります, 最も簡単なのは、Firefly IIIからパーソナルアクセストークンを生成し、それを「.importer.env」に示すことです。’

コンテナを再生成し、「Firefly III Data Imporツール」のWebサイトに接続すると’ (私の場合、ポート81tp) インポートプロセスを開始できるようになります, クリック “ファイルのインポート”,

「移植不可能なファイル」で’ 銀行からダウンロードしたCSVファイルを残します, 運動の私たちが興味を持っているすべての歴史的. 私たちに尋ねるオプションの設定ファイル, 今のところ、私たちはそれを持っていません, しかし、このウィザードが完了したら, 私たちはそれを生成することができるでしょう, 以下で選択するオプションが供給されるJSONファイル, “次に”,

CSV ファイルにヘッダーがあるかどうかを示します, UTF-8に変換する場合, CSV区切り文字とは, FireFlyIIIからどの銀行にインポートしますか, 日付形式… “送信”,

上記で選択したオプションに応じて、ファイルの内容が表示され、列が分離されます… インポートに関心のない列は無視できます (もちろんです), をクリックし、各列の役割を関連付けます, 少なくとも、「取引日」フィールドをインポートします, '説明’ と 'Amount'. “送信”,

始める前に, クリックできます “設定ファイルのダウンロード” そのため、このウィザードを実行して、ウィザードの形式を覚えておく必要はありません, または、将来このインポートを自動化するため. クリック “ジョブの開始” 先ず以て,

CSVの動きがいかに重要であるかがわかります… 希望…

彼が終わったら、彼は私たちに教えてくれるでしょう, 完ぺきですね!

データが得られ始めています! オーレとオーレリゴドン! これで、レポートをより詳細に表示できるようになります, 等…

次の, カテゴリを構成することができます, 私たちのお金がどこに行くのかを知るために! そのため、各動きを分類し、それが住宅ローンであるかどうかを示します, スーパーマーケットの支出, ガソリン, アマゾンから…

から “オートメーション” > “準則” 私たちはそれらを作成することができます, セットアップは簡単, 名前を付けて、いつアクティブにするかを設定します, 説明で単語を検出したとき, 例えば…

そして、ファイアフライIIIであなたに残します, 非常に簡単ないくつかのターン; 次に、小さなチーズ, レポートはよりエレガントです, 私たちは、予算がどこに向かっているのかをより詳細に理解しています. 上記のこれらのスクリーンショットは、モバイルにインストールできるオープンソースアプリからのものです (ウォーターフライIIIと呼ばれる) FireFly IIIに接続し、おそらくより快適です…

そして… 待ってください、まだ終わりではありません! MySQLデータベースコンテナで3306tcpを開いたままにしたことを覚えています? さて、アクセス資格情報を使用して、接続してクエリを行うことができます, 私たちは興味があり、美しい方法でそれを見て、グラファナから味わうように, カテゴリ別, または単に動き… しかし、グラファナからそれを見るだけではありません, しかし、私がどれほどオタクであるか, 私は生成します PDFで見る そして、この情報はその中に私のところに来ます, とりわけ、ホームアシスタントの興味深い詳細など (統計学…)

ところで, 私たちが目にする数字, 彼らは偽物です, 彼らが半分覆われているので、私が扱う数字を知らないという事実は別として, 何百万持っているかは公には言えません). 来る, 要点を押さえる, MySQLクエリが必要な人:

  • 合計のグラフ:
時間としてtj.dateを選択, "トータル" メトリックとして, 和(t.金額) オーバー (TJ.date ASCによる注文) AS value
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU_ID_DEL_BANCO' ORDER BY tj.date ASC;

  • 動きのあるグラフ:
時間としてtj.dateを選択, t.amount を値として, tj.description as metric
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU ID DEL BANCO' ORDER BY tj.date ASC;

  • 移動テーブル:
t.amountを選択, TJ.説明, 左(tj.dateさん, 10) 現在まで, 和(t.金額) オーバー (TJ.date ASCによる注文) AS Total
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU ID DEL BANCO' ORDER BY date desc;

そして、一番大切なことを忘れてくださることを願っています! これをどのように自動化しますか? まあ、運が良ければ銀行がなんとか接続を許可してくれるなら、, API別, 等… 悪くありません, 然も無くば, サードパーティのサービスはありますか (有料および外部) それはあなたを助けるかもしれません… 別の方法は、ファイルを毎週手動でダウンロードし、常に同じパスに残すことです, 次に、スクリプトがそれらをインポートします (cronコンテナがあります), または、クリックを記録するツールを使用します, 銀行にログインし、レポートを生成します… 後者は私の個人的な選択です. めちゃくちゃくちゃだよな, 分離された VM があります, インターネットアクセスなし (銀行のサイト以外は何もありません)… そして、Tiny Taskは毎日実行されます (注意して下さい) これにより、レポートが生成されます, 各銀行はその父に属しているため, 一部はCSVで生成されます, XLSの他とXLSXの他 (あなたのタッチ…) だから私はあなたにあなたを助けることができるスクリプトで私が持っているいくつかのヒントをあなたに残します:

#XLSX から CSV に変換し、 ; セパレーターとして:
    xlsx2csv -d ';' fichero.xlsx fichero.csv

#Convierte de XLS a CSV sin perder el formato de las fechas:
    libreoffice --convert-to csv fichero.xls #Borra最初の 15 台詞:
    sed -i '1,15d' fichero.csv

#Importa el csv que hay en la carpeta actual con el JSON de configuración, どちらのファイルにも同じ名前が付けられています:
    sudo docker run --rm -v $PWD:/import -e FIREFLY_III_ACCESS_TOKEN=ey... -e IMPORT_DIR_ALLOWLIST=/import -e FIREFLY_III_URL=http://IP_FQDN_FIREFLY_III -e WEB_SERVER=false fireflyiii/data-importer:最新

この最後のコマンドでは、JSONに示されている銀行にCSVをインポートします! 重複した動きを避ける, 等… 最新の (そして、それは本当にそれです), 以前に見たMySQLクエリ, ホームアシスタントと統合するのに便利です, そして、それは私たちがスピーカーで朝食をとっている間、私たちが口座に持っている残高を教えてくれます, 最新の動きと同様に… セーラー生地!!!

来る, 歌詞の意味: 今、私はあなたを放っておく, 私はあなたに大いに願っています, あなたが少し働いて、抱擁をたくさん😉稼ぐこと!

おすすめの投稿

著者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 私に連絡することを躊躇しないでください, できる限りお手伝いします, シェアリングは生きていること ;) . ドキュメントを楽しむ!!!