概要
家計簿的なシステムをオープンソースで作れないものかと思っていたところ、
というシステムを発見しました。
無事に動かすことができたので、メモを残します。
インストールの前に
このシステムは、ローカル環境で利用することを強くお勧めします。(金融情報を記録するため)
環境
以下、既に構築済みという状況です。
- Ubuntu 20.04
- Apache 2.4
- MySQL 8.3
- PHP 8.1
- Composer 2.6.5
そして、以下を準備済みです。
- サイトにアクセスするドメインとDNS登録
- 上記に沿った適切な証明書
さっくりとした手順
- プログラムをダウンロードします。
- composerでインストールします。
- DBを作成します。
- .envを設定します。
- DBのマイグレーションを行います。
- ログファイルの格納ディレクトリを設定します。
- ApacheでWebサーバの設定を行います。
- アクセスを確認します。
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」をクリックします。
続いて初期設定(メインバンクや通貨、言語の指定など)完了後、こちらのダッシュボードが出てくればインストール完了です。
使い勝手やカスタマイズは改めて報告します。