Navigation

    La Cabane Libre

    • Register
    • Login
    • Search
    • Catégories
    • Recent
    • Mots-clés
    • Ciné Libre

    Installer Kresus sur un Raspberry 3

    La Cuisine
    tutoriel linux debian nginx kresus rpi
    1
    1
    1755
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • The Worm's
      The Worm's Manchot Adélie last edited by The Worm's

      Salouté,

      Voici un cht’y tuté sur celui de Phyks qui vous permet d’installer Kresus sur un Raspberry 3 en local.

      Prérequis :

      • Raspbian d’installer sur votre RPI
      • Accès SSH actif

      Préparation à l’installation de Kresus

      Installation de nodejs et yarn :

      Récupérer les repository et les installer avec les commandes suivantes

      curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
      sudo apt-get install -y nodejs
      
      curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
      sudo echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
      sudo apt-get update && sudo apt-get install yarn
      

      Installer Weboob

      Préparer l’installation de weeboob en ajoutant les outils suivants :

      sudo apt-get update && sudo apt-get install git python3-dev python3-pip libffi-dev libxml2-dev libxslt-dev libyaml-dev libtiff-dev libjpeg-dev libwebp-dev python3-pil python3-lxml autotools-dev automake autoconf libtool
      

      Installer la dernière version git de weboob

      git clone https://git.weboob.org/weboob/devel/ weboob
      cd weboob && sudo pip3 install .
      

      Ajouter une tache cron qui vous permet de garder weboob à jour

      crontab -e
      

      On ajoute la règle qui mettra à jour weboob tout les mois à 23h23 :magie:

      23 23  * *  * cd /home/pi/weboob && git pull origin master
      

      Créer un utilisateur kresus

      sudo adduser kresus --disabled-password
      
      sudo chsh kresus
      

      Utiliser l’utilisateur kresus

      sudo su kresus -s /bin/bash
      

      Installation de Kresus

      Récupérer et lancer l’installation de kresus

      cd && git clone https://framagit.org/kresusapp/kresus
      cd kresus && npm install prebuild && npm install
      

      Construisez la version de production

      NODE_ENV=production make build
      

      Tester si l’installation est fonctionnelle

      NODE_ENV=production KRESUS_PYTHON_EXEC=python3 KRESUS_WEBOOB_DIR=/usr/bin/weboob node bin/kresus.js
      

      Ajouter un service Kresus

      Créer une commande de lancement automatique de kresus

      sudo nano /etc/systemd/system/kresus.service
      

      Copier/coller le code ci-dessous

      [Unit]
      Description=Gestionnaire de finances personnelles
      After=network.target
      
      [Service]
      WorkingDirectory=/home/kresus/kresus
      Environment=NODE_ENV=production
      Environment=KRESUS_PYTHON_EXEC=python3
      Environment=KRESUS_WEBOOB_DIR=/home/pi/weboob
      ExecStart=/usr/bin/node bin/kresus.js
      
      Type=simple
      Restart=always
      
      User=kresus
      
      StandardOutput=journal
      StandardError=inherit
      SyslogIdentifier=kresus
      
      [Install]
      WantedBy=multi-user.target
      

      Relancer les daemon, Activer au démarrage et démarrer kresus

      sudo systemctl daemon-reload
      sudo systemctl enable kresus.service
      sudo systemctl start kresus.service
      

      Installer nginx

      sudo apt install nginx apache2-utils -y
      sudo systemctl enable nginx
      

      Editer le vhost nginx

      server {
              listen 80 default_server;
              listen [::]:80 default_server;
      
              root /home/kresus/kresus/build/client;
      
              # Add index.php to the list if you are using PHP
              index index.html index.htm index.nginx-debian.html;
      
              server_name _;
      
              location / {
                  # Only proxy the API calls
                  location /api {
                          proxy_pass             http://127.0.0.1:9876;
                          proxy_set_header       Host $host;
                          proxy_set_header Proxy "";
      
                          # Longer timeouts on my (slow) Raspberry Pi
                          proxy_connect_timeout       300;
                          proxy_send_timeout          300;
                          proxy_read_timeout          300;
                          send_timeout                300;
                  }
              }
      }
      

      Sécuriser Kresus

      Ajout d’une authentification d’accès

      Pour demander une authentification d’accès il vous suffit de créer un ou des utilisateur :

      sudo htpasswd -c /home/kresus/kresus/.htpasswd theworms
      

      Et d’ajouter ces lignes à votre configuration nginx

      ## Authentificates
              auth_basic "Private Area";
              auth_basic_user_file /home/kresus/kresus/.htpasswd;
      

      Restreindre l’accès

      Pour restreindre l’accès il vous suffit d’ajouter ces lignes à votre configuration nginx

      # Bloquer une ip
                  #deny    192.168.1.1;
                  # Autoriser une plage ip 192.168.1.0/24
                  allow   192.168.1.0/24;
                  # Bloquer tout le reste
                  deny    all;
      

      Ajout d’un nom de domaine

      Après je vous conseil de créer un nom de domaine et d’éditer votre hosts

      sudo nano /etc/hosts
      

      Ajouter :

      192.168.1.3 mabanque.perso
      

      votre kresus est désormais accessible via le lien http://mabanque.perso

      Du coup vous devez activer votre fichier host et supprimer les anciens

      sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mabanque.perso
      sudo ln -s /etc/nginx/sites-available/mabanque.perso /etc/nginx/sites-enabled/
      sudo rm /etc/nginx/sites-available/default
      sudo rm /etc/nginx/sites-enable/default
      

      Ensuite éditer votre configuration pour la mettre à jour:

      sudo nano /etc/nginx/sites-available/mabanque.perso
      

      modifier le début :

      server {
              listen 80;
              listen [::]:80;
      
              server_name mabanque.perso www.mabanque.perso;
      
      sudo systemctl restart nginx
      

      Mise en place d’un certificat SSL

      Pour ma part j’ai créé un certificat de 10 ans :oui:

      sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
      

      Dès que vos clés sont générés, il vous faut renseigner nginx.
      vhost :

      # Forcer le https
      server {
      	listen  80;
      	listen	[::]:80;
      	server_name	mabanque.perso www.mabanque.perso 192.168.1.3; #Si accès IP renvoi sur ndd
      	return	301 https://$server_name$request_uri; #Redirection 
      }
      
      server {
      	listen 443 ssl http2;
              listen  [::]:443 ssl http2;
      
      	server_name mabanque.perso www.mabanque.perso;
      
      	root /home/kresus/kresus/build/client;
      		try_files $uri $uri/index.html @kresus;
      
              location / {
      		# Only proxy the API calls
      			location /api {
      				proxy_pass             http://127.0.0.1:9876;
      				proxy_set_header       Host $host;
      				proxy_set_header Proxy '';
      				proxy_redirect off;
      
      				client_max_body_size	8M;
      				proxy_connect_timeout       300;
      				proxy_send_timeout          300;
      				proxy_read_timeout          300;
      				send_timeout                300;
                  }
      		# Block ip
      		#deny    192.168.1.1;
      		# Enable IP Range 192.168.1.0/24
      		allow   192.168.1.0/24;
      		# Deny  
      		deny    all;
              }
      
      	location /\.(css|js|png|jpe?g|svg|eot|woff2?)$ {
      		add_header Cache-Control 'max-age=2592000, must-revalidate, public';
      		gzip_types text/plain text/css application/javascript text/javascript;
      		gzip on;
      		try_files $uri $uri/index.html @kresus;
      	}
      
              ## Authentificates
              auth_basic "Private Area";
              auth_basic_user_file /home/kresus/kresus/.htpasswd;
      
      	## Certificates
              ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
              ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
      
      	## Protocol
      	ssl_protocols TLSv1.2;
      
      	## Diffie-Hellman
      	ssl_ecdh_curve secp384r1;
      
      	## Ciphers
      	ssl_ciphers EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;
      	ssl_prefer_server_ciphers on;
      
      	## TLS parameters
      	ssl_session_cache shared:SSL:10m;
      	ssl_session_timeout 5m;
      	ssl_session_tickets off;
      
      	## HSTS
      	add_header Strict-Transport-Security "max-age=15552000; includeSubdomains; preload";
      
              add_header x-xss-protection "1; mode=block";
              add_header x-frame-options "DENY";
              add_header X-Content-Type-Options "nosniff";
              add_header Content-Security-Policy "worker-src 'none'; object-src 'none'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; ";
              add_header Referrer-Policy "no-referrer";
      
      }
      

      Relancer nginx

      sudo systemctl restart nginx
      

      Valider le certificat

      https_selfhosting2.png
      https_selfhosting1.png

      Et le tour est joué 🆗

      kresus.png

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Sauf mention contraire, le site est placé sous double licence Creative Commons BY-SA et GNU Free Documentation License propulsé par NodeBB