財務データの「レンタル」はやめよう:Firefly IIIをDockerでセルフホストする

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

現代の個人財務における混乱

以前の私は、3つの銀行アプリ、クレジットカードのポータルサイト、そして2022年から更新していないGoogleスプレッドシートが入り混じった、ひどい状態で家計を管理していました。毎月、残高を眺めては「あの400ドルの『使途不明金』はどこへ消えたのだろう」と頭を抱えていたものです。多くの人は、この問題を解決するためにYNABやMintのような洗練されたSaaSアプリを利用します。しかし、これらのプラットフォームは、単に自分のデータを表示するためだけに、月額15ドル、あるいは年間180ドルといった高額な料金を請求します。

家族の予算管理はさらに困難です。共有の支出や複数の口座を追跡でき、かつ自分の支出習慣を広告主に漏らさないシステムが必要です。負債の履歴や収入レベルは、データブローカーにとって宝の山です。それらの情報を自分のハードウェアで管理することは、単なるテクノロジー愛好家の趣味ではなく、基本的な財務プライバシーを守るための行動なのです。

なぜスプレッドシートやSaaSアプリは失敗しやすいのか

家計管理の試みの多くが失敗する原因は、データの断片化にあります。情報が異なるアプリに分散していると、全体像が見えなくなります。スプレッドシートは柔軟性がありますが、数式が壊れやすいという欠点があります。セルへの入力ミス一つで、一年分の記録が台無しになることもあります。

SaaSソリューションは自動化を提供してくれますが、大きな代償が伴います。銀行の認証情報をサードパーティの集約サービスに渡さなければならないのです。もし彼らのサーバーが侵害されれば、あなたの財務生活のすべてがさらけ出されてしまいます。さらに、これらのアプリの多くは強気なサブスクリプションモデルへと移行しています。他のサブスク料金でどれだけお金を失っているかを確認するために、毎月の利用料を支払うという本末転倒な状況に陥るのです。

選択肢の比較:スプレッドシート vs SaaS vs セルフホスト

財務管理をHomeLabに移行する前に、私は一般的な3つの方法を検討しました。

  • Excel/Googleスプレッドシート: 無料で柔軟ですが、適切なAPIがなく、月間の取引数が100件を超えると管理が困難になります。
  • SaaS(YNAB/PocketGuardなど): 優れたモバイルアプリと自動同期機能がありますが、月額15ドル以上のコストがかかり、データは所有しているのではなく「アクセス権をレンタルしている」に過ぎません。
  • Firefly III(セルフホスト): プロフェッショナル仕様の複式簿記システムです。オープンソースで無料、REST API、定期的な取引の追跡、エンタープライズ向け会計ソフトに匹敵する詳細なレポート機能を提供します。

データの主権を重視するなら、Firefly IIIは明白な選択肢です。シンプルなスプレッドシートと複雑な会計スイートの間のギャップを完璧に埋めてくれます。

セットアップ:DockerでのFirefly III構築

Docker Composeを使用してFirefly IIIを実行するのが、最も信頼できる方法です。アプリケーション・ロジックとデータベースを分離できるため、アップデートやバックアップの管理が非常に容易になります。ホストマシンの PHP バージョンの競合を心配する必要もありません。

システムは主に2つの要素で構成されます。ウェブエンジンと、MariaDBやPostgreSQLなどのデータベースです。また、この通信を他のコンテナから隔離するために、専用のDockerネットワークを作成することをお勧めします。

1. 環境の準備

まず、専用のディレクトリを作成します。設定ファイルを整理しておくことで、将来の移行作業がスムーズになります。

mkdir ~/firefly-iii && cd ~/firefly-iii
touch docker-compose.yml .env

2. Docker Composeの設定

この設定では、MariaDBを使用し、永続ストレージのために個別のボリュームを割り当てます。これにより、コンテナを削除したり再作成したりしても、データは保持されます。

version: '3.8'

services:
  app:
    image: fireflyiii/core:latest
    restart: always
    volumes:
      - firefly_iii_upload:/var/www/html/storage/upload
    env_file: .env
    networks:
      - firefly_net
    ports:
      - 8080:8080
    depends_on:
      - db

  db:
    image: mariadb:10
    hostname: firefly_iii_db
    restart: always
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
      - MYSQL_USER=firefly
      - MYSQL_PASSWORD=your_secure_password
      - MYSQL_DATABASE=firefly
    networks:
      - firefly_net
    volumes:
      - firefly_iii_db:/var/lib/mysql

networks:
  firefly_net:
    driver: bridge

volumes:
  firefly_iii_upload:
  firefly_iii_db:

3. .envファイルの設定

.env ファイルは、セットアップの中枢として機能します。Firefly IIIでは、データを暗号化するために32文字のユニークな APP_KEY が必要です。オンラインツールやコマンドラインジェネレーターを使用して生成できます。

# 基本設定
APP_KEY=32文字のランダムな文字列に置き換えてください
APP_URL=http://localhost:8080
TRUSTED_PROXIES=**

# データベース設定
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=firefly
DB_USERNAME=firefly
DB_PASSWORD=your_secure_password

# メール設定
MAIL_MAILER=log

スムーズな運用のための実践的なヒント

docker-compose up -d を実行すると、ポート8080でダッシュボードが利用可能になります。しかし、インストールしただけでは始まりに過ぎません。真にプロフェッショナルなシステムにするために、以下のステップに従ってください。

接続のセキュリティを確保する

ポート8080を直接インターネットに公開してはいけません。Nginx Proxy ManagerやTraefikなどのリバースプロキシをSSL証明書と共に使用してください。財務データは機密情報です。暗号化されていないHTTP経由で送信することは大きなリスクです。外出先からのみアクセスが必要な場合は、ポートを開放する代わりにTailscaleやWireGuardなどのVPNを使用してください。

複式簿記を理解する

Firefly IIIは単なる支出リストではありません。複式簿記のルールに従っています。5ドルのコーヒーを買うと、お金は「資産口座」(例:銀行の普通預金)から「費用口座」(例:スターバックス)へと移動します。最初は少し面倒に感じるかもしれませんが、この方法により、純資産を1円単位で正確に把握できるようになります。

面倒な作業を自動化する

手入力は、多くの人が家計管理を2週間でやめてしまう最大の理由です。Firefly IIIには Data Importer という連携ツールがあります。これを使用して銀行のCSVファイルをアップロードしたり、GoCardless(旧Nordigen)などのAPIに接続して取引を自動的に取得したりしましょう。設定には20分ほどかかりますが、毎月何時間もの入力作業を節約できます。

セキュリティとバックアップ戦略

自分が「銀行」になるなら、バックアップは必須です。簡単なcronジョブを設定して、MariaDBデータベースを毎晩エクスポートするようにしましょう。これらのバックアップは、S3バケットやセカンダリNASなど、暗号化されたオフサイトの場所に移動してください。SSDが故障した際に、5年分の財務履歴を失いたくはないはずです。

# データベースのクイックダンプコマンド
docker exec firefly-iii_db_1 /usr/bin/mysqldump -u firefly --password=your_secure_password firefly > backup_$(date +%F).sql

最初のログイン直後に、設定から二要素認証(2FA)を有効にしてください。これにより、パスワードを推測しようとする攻撃者に対する重要な保護層が追加されます。

財務上の主権を取り戻す

クラウドアプリからFirefly IIIに切り替えることは、自分の家のコントロールを取り戻すような感覚でした。もはや、企業が価格を吊り上げたり、データを保険会社に売却したりすることを心配する必要はありません。最初の100件の取引を分類するには多少の労力が必要ですが、それによって得られる洞察の深さはその価値があります。家族の財務的な未来は、一企業に委ねるにはあまりにも重要すぎるのです。

Share: