Gérer ses finances avec Kresus


Cette application rassemble et suit les mouvements des comptes en banques automatiquement. Son principe est le même que si l'on utilisait un navigateur web. Notons tout de même qu'un formulaire d'authentification est la bienvenue grâce à un htpasswd.

Pré-requis et installation

La rubrique suivante caché est théoriquement maintenue pour fonctionner dans un conteneur LXC sous Debian 9 :

Cliquez pour afficher ⇲

Cliquez pour masquer ⇱

Commençons avec l'utilisateur root par installer NodeJS et les dépendances python :

# apt install curl git make gcc build-essential python-setuptools python-dev python-lxml python-html2text python-yaml python-pil
# curl -sL https://deb.nodesource.com/setup_12.x | bash -
# apt-get install -y nodejs
# adduser kresus --disabled-password --gecos Kresus
# su - kresus
$ npm install kresus
$ git clone https://git.weboob.org/weboob/weboob.git -b stable
$ cd weboob
$ ./tools/local_install.sh ~/bin
$ cd -

Il restera plus qu'a lancer le programme ainsi :

$ KRESUS_WEBOOB_DIR=~/bin NODE_ENV=production ./node_modules/kresus/bin/kresus.js

La rubrique suivante est théoriquement maintenue pour fonctionner dans un conteneur LXC sous Debian 10 :

# apt install curl git make gcc build-essential python3-setuptools python3-dev python3-lxml python3-html2text python3-yaml python3-pil python3-pip
# curl -sL https://deb.nodesource.com/setup_14.x | bash -
# apt-get install -y nodejs
# adduser kresus --disabled-password --gecos Kresus
# su - kresus
$ npm install kresus sqlite3
$ npm rebuild
$ git clone https://gitlab.com/woob/woob -b stable-3.0
$ cd woob
$ ./tools/local_install.sh ~/bin
$ cd -

Il restera plus qu'a lancer le programme ainsi :

$ KRESUS_WEBOOB_DIR=~/bin NODE_ENV=production KRESUS_PYTHON_EXEC=python3 KRESUS_DB_TYPE=sqlite KRESUS_DB_SQLITE_PATH=/home/kresus/kresus.sqlite ./node_modules/kresus/bin/kresus.js

Par défaut le log applicatif se trouve ici : /home/kresus/.kresus/kresus.log

Mise à jour

Si l'instance est déjà présente et qu'il y a une nouvelle version disponible :

npm uninstall kresus
npm install kresus@0.18.0
npm rebuild

Depuis l'interface, on peut lancer la mise à jour des modules Woob via https://monapp.com/#/onboarding/admin (?)

Création d'une unité systemd

Pour que cette application soit lancé dès le démarrage du système, on peut alors créer une unité comme ci-dessous :

nano /etc/systemd/system/kresus.service
[Unit]
Description=Personal finance manager
After=network.target

[Service]
Type=simple
Restart=always
WorkingDirectory=/home/kresus
Environment=NODE_ENV=production
Environment=KRESUS_PYTHON_EXEC=python3
Environment=KRESUS_DB_TYPE=sqlite
Environment=KRESUS_DB_SQLITE_PATH=/home/kresus/kresus.sqlite
Environment=KRESUS_WEBOOB_DIR=/home/kresus/woob
ExecStart=/usr/bin/node /home/kresus/node_modules/kresus/bin/kresus.js
User=kresus

StandardOutput=journal
StandardError=inherit
SyslogIdentifier=kresus

[Install]
WantedBy=multi-user.target

On prend en compte cette nouvelle unité et on vérifie que ça fonctionne bien :

systemctl daemon-reload
systemctl start kresus.service

Création d'un vhost

Nginx

Créons notre vhost sous Nginx dont l'application devra fonctionner en HTTPS:

nano /etc/nginx/sites-enabled/monapp

En y ajoutant ces directives :

server {
	listen 0.0.0.0:80;
#	listen 0.0.0.0:443 ssl;
	server_name monapp.com;

#        ssl_certificate /etc/letsencrypt/live/monapp.com/fullchain.pem;
#        ssl_certificate_key /etc/letsencrypt/live/mon-app.com.pem;

        access_log /var/log/nginx/monapp.com.nginx.access;
        error_log /var/log/nginx/monapp.com.nginx.error;

#        auth_basic "Restricted to access";
#        auth_basic_user_file /var/www/kresus/kresus.htpasswd;

        location / {
              proxy_pass http://127.0.0.1:9876;
              proxy_set_header Host $host;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
	      proxy_set_header X-Forwarded-Host  $http_host;
              proxy_set_header X-Real-IP $remote_addr;
	      proxy_max_temp_file_size           0;
        }

}

On vérifie et on applique cette configuration :

nginx -t
systemctl reload nginx.service

Apache

Sinon, il est possible d'utiliser ces directives

<VirtualHost *:80 *:443>

        ServerName monapp.com

        ServerSignature Off
        CustomLog /var/log/apache2/access-kresus.log combined
        ErrorLog /var/log/apache2/error-kresus.log

        <IfModule mod_proxy.c>
          ProxyRequests Off
          <Proxy *>
              Order deny,allow
              Allow from all
          </Proxy>
          ProxyVia On
          ProxyPass / http://127.0.0.1:9876/ retry=0
          <Location / >
              Allow from all
              ProxyPassReverse http://127.0.0.1/9876/
          </Location>
          SSLProxyEngine On
        </IfModule>

</VirtualHost>

Il vous restera à faire de votre côté la mise en place du chiffrement et de la page d'authentifiation.