J'informatique

J'informe des bonnes pratiques en informatique mais pas que…

Installation de Firefly III : un gestionnaire de finances personnelles

Rédigé par J'informatique Aucun commentaire

Introduction

Firefly III est un gestionnaire de finances personnelles gratuit et open source à installer sur un serveur web. Avant de l'utiliser, il faut bien comprendre son fonctionnement car il est basé sur les règles que YNAB utilise, c'est à dire gérer son budget par attribution d'enveloppe pour chaque catégorie. Vous pouvez apprendre les 4 règles d'or  pour gérer votre argent avec la méthode de YNAB décrite en anglais. Le programme YNAB est un logiciel payant avec un abonnement au mois. Ici avec Firefly III vous avez une alternative gratuite et open source. Pour soutenir le développeur par cet excellent travail, vous pouvez lui faire un don.

Je vais détailler ici son installation pour que vous puissiez faire de même du 1er coup.

Ancienne version de composer

J'ai obtenu l'erreur suivante sur un hébergement mutualisé (o2switch) qui utilise une ancienne version de composer. Installez d'abord la dernière version de composer plutôt que le composer fourni.

Generating autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
You made a reference to a non-existent script @php artisan package:discover
> php artisan optimize

  [InvalidArgumentException]                                                 
  Cannot instantiate Twig extension 'TwigBridge\Extension\Laravel\Session': N
  o application encryption key has been specified.                                                                                 

Script php artisan optimize handling the post-install-cmd event returned with an error

  [RuntimeException]
  Error Output:      

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>]

Et dans le dossier de logs : firefly-iii/storage/logs/

[2017-11-30 13:54:03] production.ERROR: Cannot instantiate Twig extension 'TwigBridge\Extension\Laravel\Session': No application encryption key has been specified. {"exception":"[object] (InvalidArgumentException(code: 0): Cannot instantiate Twig extension 'TwigBridge\\Extension\\Laravel\\Session': No application encryption key has been specified. at /home/jinforma/t.jinformatique.net/firefly-iii/vendor/rcrowe/twigbridge/src/ServiceProvider.php:236)"}

 

Installation Firefly III - Base MySQL

Après avoir installé une version récente de composer, on lance la commande :

php ~/composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii <latest>

Configurer le fichier de config .env en se basant sur l'aide fourni en ligne avec les données de connexion à la base de données que vous aurez crée au préalable. Ensuite lancez :

php artisan migrate:refresh --seed

Si vous obtenez l'erreur suivante :

Migration table not found.
Migration table created successfully.
  [Illuminate\Database\QueryException]                                                                                                                                                                                            
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `link_types` add unique `link_types_name_outward_inward_unique`(`name`, `outward`, `inward`))
  [Doctrine\DBAL\Driver\PDOException]                                                                             
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes                                                                                                                                                                                                                                     
  [PDOException]                                                                                                  
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes

Relancez simplement la même commande une 2ème fois.

Vous pourrez ensuite vous connecter sur l'interface web et créer votre compte.

Installation Firefly III - Base SQLITE (en local)

D'abord rajouter quelques dépendances pour PHP

sudo apt install php7.1-intl php7.1-bcmath php7.1-sqlite3

php ~/bin/composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii <latest>
cd firefly-iii/

Changer la connexion dans le fichier .env pour avoir :

APP_URL=http://localhost/firefly-iii/public/

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
#DB_DATABASE=homestead
DB_USERNAME=homestead
#DB_PASSWORD=secret

DB_DATABASE et DB_PASSWORD ne sont pas nécessaire. Pour que cela fonctionne vous aurez besoin du fichie base de donnée format sqlite. Vous pouvez le créer en executant la commande suivante depuis votre dossier Firefly III :

touch ./storage/database/database.sqlite

Ensuite vous pourrez initialiser la base de donnée de cette façon :

php artisan migrate:refresh --seed

Puis mettre les droits qui vont bien :

cd ..
sudo chown -R www-data:www-data firefly-iii/
sudo chmod -R 775 firefly-iii/storage


Conversion BDD MySQL vers SQLITE

Si vous avez déjà commencé à utiliser MySQL et que vous souhaitez passer à SQLITE, utilisez le script suivant :

https://github.com/dumblob/mysql2sqlite

mysqldump --skip-extended-insert --compact [options]... DB_name > dump_mysql.sql
./mysql2sqlite dump_mysql.sql | sqlite3 database.sqlite

 

Réinstallation Firefly III - Base SQLITE, migration après une sauvegarde

Il s'agit de sauvegarder 2 fichiers clés :

  • firefly-iii/.env (la configuration de l'installation)
  • firefly-iii/storage/database/database.sqlite (la base de données)

Ensuite on va pouvoir les réinstaller sur une nouvelle installation

php ~/bin/composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii <latest>
cp .env firefly-iii #Copie du fichier sauvegardé
cd firefly-iii
touch ./storage/database/database.sqlite
php artisan migrate:refresh --seed
cp ../database.sqlite ./storage/database/database.sqlite #Copie du fichier sauvegardé
sudo php artisan cache:clear
cd ..
sudo chown -R www-data:www-data firefly-iii/
sudo chmod -R 775 firefly-iii/storage

 

Une capture d'écran du programme.
Site officiel : https://firefly-iii.org/

Écrire un commentaire

Quelle est la troisième lettre du mot hpyp ?

Fil RSS des commentaires de cet article