カテゴリー: Firefly III

2023年の主な出来事-サーバ編-

概要

2023年もじきに終わるということで、今年のまとめ。趣味のサーバ運用という点では大きなものがいくつかありました。

新たにインターネット上に構築したサイト

公開用Redmine作成

これが一番大きいです。

推しの名前でドメインが取得できたことにより、「これでWebを公開しよう」と思い立ち、正月休みから行動スタート。

ゲーム『ライザのアトリエ3』リリースに間に合わせ、様々な攻略情報を載せることができました。

Redmine自身の各種情報も掲載できたのも満足です。

アクセス解析システム:matomo作成

  • 非公開

公開用サイトのアクセス状況を知りたくて、このシステムをインストール。

Redmineとの連携はView_Customize_Pluginでなんとかなりましたし、その際、本邦のRedmineメンテナ様自身直々のアドバイスをいただけたことが印象に残っています。

フォトアルバムサイト:piwigo作成

フォトアルバムもついでに作成。

写真の拡充を図っていくのが来年度の目標になりそうです。

ドキュメント保存システム:BookStack作成

Redmineのプラグイン「knowlegebase」に代わるシステムを探していたら見つけました。

  • 本棚や本という概念
  • Markdownフレンドリー
  • 見出しに合わせたスクロール

など、おおよその欲しかった機能が備わっていて、今後のメインウェポンとなる予感です。

ローカルに構築したサイト

Nextcloud

2022年から継続利用。

Growi

2022年から利用しているマークダウンエディタ、growi。

2023年はmermaid.jsにようやく対応したので、デジタルでのメモ残しに大きく貢献しました。

firefly-iii

つい先日ではありますが、この財務管理システムを知ったおかげで「お金関係のロギング」を始められるようになりました。

来年度の目標

Ubuntu 20.04リプレース。

LTSのEOL2025年に備えます。そのためのボトルネックとなっている

  • Redmineのメジャーバージョンアップ
  • およびknoledgebaseの代替システム(現状候補はBookStack)

と検証を進めます。

サーバのスペックアップ

これに関しては予算と相談しながら。

検証:firefly-iii v6.1.0をUbuntu 20.04にインストール(失敗)

概要

PHPもDBも入っていない検証機があったので、Firefly iii 6系を入れようとしましたが、失敗しました。

以下は失敗の記録です。

環境

  • Ubuntu 20.04
  • Nginx

結論

php8.3-bcmatchがインストールできないことによるComposerエラーです。

やってみた手順

1.Postgresqlのインストール
1.PostgresのDB作成
1.PHPのインストール
1.composerのインストール
1.firefly iiiの配置
1.Composerによるインストール

PostgreSQLのインストール

  • パッケージアップデート
sudo aptitude update
  • PostgreSQLインストール
sudo aptitude install postgresql postgresql-contrib
  • PostgreSQLの軌道確認
 systemctl status postgresql.service 

Active: active (exited) を確認します

PostgreSQLのDB作成

  • コンソールログイン
sudo -u postgres psql
  • DBとユーザ作成
CREATE DATABASE firefly;
CREATE USER firefly_user WITH PASSWORD 'your_password';
ALTER ROLE firefly_user SET client_encoding TO 'utf8';
ALTER ROLE firefly_user SET timezone TO 'Asia/Tokyo';
GRANT ALL PRIVILEGES ON DATABASE firefly TO firefly_user;
quit

パスワードはポリシーに沿って適切なものを指定します

PHP8.3インストール

  • リポジトリ追加
sudo aptitude install software-properties-common

sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
  • パッケージアップデート
sudo aptitude update
  • PHP8.3インストール
sudo aptitude install php8.3 php8.3-cli php8.3-fpm php8.3-pgsql php8.3-xml php8.3-mbstring php8.3-gd 
  • バージョン確認
php -v

8.3系であることを確認します。

Composerインストール

cd /hoge
# 任意の作業ディレクトリに移動します
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php composer-setup.php
sudo mv composer.phar /usr/bin/composer
  • パス確認
which composer

/usr/bin/composerにあることを確認します

  • バージョン確認
composer --version

2023/12/23現在、2.6.6でした

プログラム配置

  • ディレクトリ移動
cd /var/www/html/ && pwd

任意の公開用ディレクトリを指定します

  • gitでファイル取得
sudo -u www-data git clone https://github.com/firefly-iii/firefly-iii.git
  • ディレクトリ移動
cd firefly-iii && pwd

※失敗:Composerでインストール※

sudo -u www-data composer install --no-dev --prefer-dist

以下のエラーが出て来ました。

Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Your lock file does not contain a compatible set of packages. Please run composer update.

  Problem 1
    - Root composer.json requires PHP extension ext-bcmath * but it is missing from your system. Install or enable PHP's bcmath extension.
sudo apittude install php8.3-bcmatch

としてもプログラムは見つからず。

まずは記録として遺しておきます。

今後の展望

Ubuntuそのもののバージョンアップを見据えて動きます。

Firefly III とGmail連携

概要

インストールが完了したFirefly iiiと、Gmailを連携させていきます。

基本的にRedmineのGmail連携と同じ手順でした。

前提

https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/22

に従って、アプリパスワードを設定していることが条件です。

※Googleアカウントにフルアクセス可能なパスワードのため、取り扱いは注意してください。※

手順

ディレクトリ移動

cd /home/www-data/firefly-iii &&pwd

自分がインストールしたディレクトリを指定します。

ファイル編集

  • .env

以下の箇所を変更して保存します。

MAIL_MAILER=smtp
MAIL_HOST=[googleから指定されたメールアドレス]
MAIL_PORT=587
MAIL_FROM=[Gmailアドレス]
MAIL_USERNAME=[Gmailアドレス]
MAIL_PASSWORD=[アプリパスワード]
MAIL_ENCRYPTION=true

設定反映

sudo systemctl restart apache2.service

自分がインストールしているWebサービスを利用します

設定確認

  1. firefly-iiiのサイトにアクセスします。
  2. ログインします。
  3. 管理>メッセージを送信をクリックします。
  4. メールが送信されていれば設定完了です。

Firefly III をローカルサーバにインストール。(PHP8.1対応版)

概要

家計簿的なシステムをオープンソースで作れないものかと思っていたところ、

https://www.firefly-iii.org/

というシステムを発見しました。

無事に動かすことができたので、メモを残します。

インストールの前に

このシステムは、ローカル環境で利用することを強くお勧めします。(金融情報を記録するため)

環境

以下、既に構築済みという状況です。

  • Ubuntu 20.04
  • Apache 2.4
  • MySQL 8.3
  • PHP 8.1
  • Composer 2.6.5

そして、以下を準備済みです。

  • サイトにアクセスするドメインとDNS登録
  • 上記に沿った適切な証明書

さっくりとした手順

  1. プログラムをダウンロードします。
  2. composerでインストールします。
  3. DBを作成します。
  4. .envを設定します。
  5. DBのマイグレーションを行います。
  6. ログファイルの格納ディレクトリを設定します。
  7. ApacheでWebサーバの設定を行います。
  8. アクセスを確認します。

Firefly III のダウンロード

  • ディレクトリ移動
cd /home/www-data

Web公開用のディレクトリを指定します。

  • プログラムのダウンロード
sudo -u www-data git clone https://github.com/firefly-iii/firefly-iii.git -b 5.7.9

※PHP8.1で稼働するバージョンを指定しています。

  • ダウンロード確認
ls -ld firefly-iii

ディレクトリが作成されていること、Web実行ユーザ(www-data)であることを確認します。

Firefly III のインストール

  • ディレクトリ移動
cd firefly-iii && pwd
  • Composerでインストール
sudo -u www-data composer install --no-dev --prefer-dist

エラーがないことを確認します。

DB作成

  • mysqlログイン
mysql -u root -p
  • DB作成
CREATE DATABASE firefly;
CREATE USER 'firefly'@'localhost' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON firefly.* TO 'firefly'@'localhost';
FLUSH PRIVILEGES;
EXIT;

ポリシーに合わせて強固なパスワードを指定します。

.env設定

  • .envのサンプルをコピー
sudo cp -pi .env.example .env
  • ファイル修正
    • .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=firefly
DB_USERNAME=firefly
DB_PASSWORD=your_password

最低限、上記を指定します。パスワードはDB作成時のものです。

DBマイグレーション

sudo -u www-data php artisan firefly-iii:upgrade-database

sudo -u www-data php artisan firefly-iii:correct-database

sudo -u www-data php artisan firefly-iii:report-integrity

sudo -u www-data php artisan passport:install

ログファイルの格納ディレクトリを作成

  • ディレクトリ作成
sudo mkdir /var/log/firefly
  • ディレクトリの所有者変更
sudo chown -R www-data www-data /var/log/firefly
  • ディレクトリ作成確認
ls -ld /var/log/firefly

Apache設定

  • 以下のファイルを作成します。
  • /etc/apache2/sites-available/firefly-iii.conf

※ドメイン名や証明書の格納場所は自分の環境に合わせてください。

<VirtualHost *:80>
    servername bank.example.com
    # ドメイン名を指定します
    RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# HTTPアクセスを強制的にHTTPSにリダイレクトします
</VirtualHost>

<VirtualHost *:443>
    ServerName bank.example.com
    # ドメイン名を指定します
    CustomLog /var/log/firefly/firefly_access.log combined
    ErrorLog /var/log/firefly/firefly_error.log
    DocumentRoot /home/www-data/firefly-iii/public
    # 自身の環境に合わせます
    <Directory /home/www-data/firefly-iii/public>
    # 自身の環境に合わせます
        AllowOverride All
        Require all granted
    </Directory>

#SSL設定
  SSLEngine on
    Protocols h2 http/1.1
  # SSLを有効化します

SSLCertificateFile /etc/certs/bank.example.com.crt
# SSL証明書を指定します
SSLCertificateKeyFile /etc/private/bank.example.com.key
# 秘密鍵を指定します

# SSLCACertificateFile /etc/certs/bank.example.com.crt
# 中間証明書が発行元から別ファイルで提供されている場合は、この直上をコメントアウトして中間証明書を指定します

#セキュリティヘッダー付与

    Header always set Strict-Transport-Security "max-age=63072000"
    Header set X-Content-Type-Options "nosniff"
    Header always append X-Frame-Options "SAMEORIGIN"
    Header set X-XSS-Protection "1; mode=block"

</VirtualHost>

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

設定反映

  • 設定反映
sudo a2ensite firefly-iii.conf
  • Webサービス再起動
sudo systemctl restart apache2

インストール確認

設定したURLにアクセスします。(ここではbank.example.com)

  • Email address
  • パスワード(16文字以上)

を設定して、「Register」をクリックします。

続いて初期設定(メインバンクや通貨、言語の指定など)完了後、こちらのダッシュボードが出てくればインストール完了です。

使い勝手やカスタマイズは改めて報告します。

Powered by WordPress & Theme by Anders Norén