Installation sur Synology / Docker

Bonjour à tous,

A force de recherches, j’ai découvert Kresus et j’aimerais maintenant l’installer sur un NAS Synology via Docker pour faire ma compta personnelle.
Je suis novice concernant Docker, je ne code pas et suis donc un peu démuni car je n’ai pas encore réussi à faire fonctionner l’image malgré les instructions trouvées ici : Installation via Docker qui ne sont visiblement pas à la portée d’un novice comme moi.

J’ai bien récupéré la dernière version de l’image bnjbvr/kresus sur Docker. Il ne me reste qu’à réussir à la lancer.

Pouvez-vous m’aider en détaillant :

  • Les volumes à monter ?
  • Les variables / valeurs d’environnement à paramétrer ?

N’hésitez pas à me dire si vous avez besoin d’infos complémentaires pour bien me guider !
Merci d’avance pour votre précieuse aide,

Une app Synology serait bien entendu la bienvenue :laughing:

LucM

Bonjour !

Alors, pour les volumes c’est indiqué dans cette partie :

L’image pré-construite expose plusieurs volumes de données. Il n’est pas obligatoire de les monter, mais cela vous permet de conserver vos données personnelles entre les redémarrages de l’image Docker.

  • /home/user/data contient toutes les données utilisées par Kresus. Il est recommandé de monter ce volume, pour éviter des pertes de données entre chaque nouveau démarrage de l’image (par exemple, après une mise à jour).
  • /woob contient le clone local de Woob installé au démarrage. L’exposer au système local n’est pas obligatoire, mais permet de :
    • mutualiser les répertoires d’installation de Woob, si plusieurs images Kresus sont instanciées. Cela permet notamment des économies d’espace disque.
    • mettre en place des crontab sur la machine hôte, qui se chargeront de mettre à jour Woob régulièrement (avec un git pull depuis le répertoire de Woob sur l’hôte).
  • /opt/config.ini contient le fichier de configuration de kresus. Vous devrez au moins renseigner la configuration de la base de données à utiliser. Voir plus d’explications sur le fichier de configuration.

Pour résumer :

  • /opt/config.ini pour mettre à disposition ton fichier de configuration (obligatoire donc)
  • /home/user/data pas obligatoire mais idéal pour ne pas perdre ses données au redémarrage de Kresus
  • /woob : pas obligatoire si tu as 1 seul docker Kresus

Je conseillerais également /etc/localtime:/etc/localtime pour avoir les mêmes fuseaux horaires dans ton docker que sur la machine hôte.

Est-ce que c’est + clair ? Si oui, peux-tu nous aider à améliorer la documentation ci-dessus ?

Concernant les variables/valeurs d’environnement : rien n’est obligatoire, tu peux utiliser le fichier config.ini. Pour ce qui est de la configuration, ça dépend de ce que tu souhaites.
A minima il faut :

  • renseigner un salt
  • renseigner les identifiants de la base de données à utiliser

Le reste c’est si tu souhaites paramétrer des emails, notifications, logs avancés, etc.

Bonjour @nicofrand !

Merci pour ce retour rapide. Je crois que je comprends mieux les étapes à réaliser maintenant.

Concernant la base de données, sur Synology on a MariaDB 10 par défaut. Est-ce que Kresus serait compatible ? Sinon il faut que je privilégie postgresql ?

Et pour te répondre, oui je peux vous aider à améliorer la documentation une fois que j’aurai réussi à le faire tourner ! Si ça vous arrange, je pourrai détailler la procédure pas à pas pour l’installer sur NAS Synology via Docker vu que je ne dois pas être le seul à m’y intéresser.

Merci pour ton aide

1 « J'aime »

Non MariaDB n’est pas compatible, il faut postgresql.

Et pour te répondre, oui je peux vous aider à améliorer la documentation une fois que j’aurai réussi à le faire tourner !

Si mon message précédent a aidé + que la documentation, saurais-tu dire en quoi il était + clair pour toi ?

Il me semblait plus clair dans le sens où il faut créer le fichier config.ini à partir de la template avant de monter les volumes au lancement de l’image sur Docker.

J’ai bien installé postgresql sur mon NAS Synology, l’image tourne bien et j’y accède bien avec PGAdmin depuis mon PC.
J’ai créé une DB kresus et un user kresus qui en est le propriétaire.

Ensuite je paramètre tout selon les infos que j’ai sur le fichier config.ini mais je n’arrive toujours pas à lancer l’image pour faire tourner kresus.
Qu’est-ce qu’il vous faudrait pour me guider dans sa bonne installation ?

Désolé d’être si novice mais j’espère que ce sera l’occasion d’en aider d’autres !

Oui c’est expliqué dans le lien « Voir plus d’explications sur le fichier de configuration. ». On devrait peut-être inciter + à aller voir cette partie.

Eyh bien quel est le problème déjà ?
Et les logs seraient utiles !

Oui, je pense que ça vaut le coup de rendre l’étape bien visible.

Après y avoir passé un peu plus de temps après les fêtes à partir des erreurs sur les logs, j’ai enfin réussi à faire tourner kresus :slight_smile: Merci beaucoup pour l’aide.

Pour parfaire l’aide à l’installation sur NAS Synology, je préciserais ces étapes sur la procédure :

  • Installer postgresql sur le NAS via Docker en utilisant un port autre que le port par défaut 5432 car déjà utilisé par le NAS
  • Avant de lancer le conteneur sur Docker, accéder à la base de données postgres avec PGAdmin pour créer la base de données et l’utilisateur kresus, qui seront à renseigner dans le fichier de config.
  • Sur le fichier de config, en host, mettre l’adresse IP locale du NAS et ne pas laisser 127.0.0.1 par défaut bien que ce soit localhost. Sinon dans mon cas, kresus semblait tourner mais je n’arrivais pas à ouvrir l’application.

Je crois que c’est les principales étapes qui me manquaient pour faire tourner kresus sur synology du premier coup ! Hâte de tester l’application maintenant.

Mes meilleurs voeux pour 2022 !

2 « J'aime »

Salut @LucM
Serait-il possible de faire un tuto complet pour l’installation de kresus avec ta méthode sur un Sysnlogy car je n’arrive pas configurer ma base postgres ?
Merci de ton aide

PS : je voulais utiliser la base postgres du NAS, mais je galere, du coup j’ai tenté de faire comme toi, mais impossible d’acceder à la base postgres de docker avec le PGAdmin qui est sur mon PC…

1 « J'aime »

Tutoriel installation Kresus sur NAS Synology via Docker

1ère étape : installation de postgresql via Docker

Télécharger image postgres:latest sur Docker

Créer un répertoire docker/postgresql/data sur File Station

Lancer l’image postgres:latest avec les paramètres suivants :

  • Volume : répertoire créé docker/postgresql/data avec /var/lib/postgresql/data
  • Réseaux : bridge
  • Ports : port local XXXX (à vous de choisir mais ne doit pas être 5432) vers port conteneur 5432
  • Environnement : tout laisser par défaut et ajouter POSTGRES_PASSWORD = votre_mdp (à définir)

Vérifier que le part-feu du NAS ne bloque pas le port local de postgresql pour les adresses IP locales.

2nde étape : création base de données kresus via PgAdmin

Installer PgAdmin sur votre PC : pgAdmin - PostgreSQL Tools

Configurer master mot de passe PgAdmin

Ouvrir le serveur sur PgAdmin avec :

  • Menu ObjectCreateServer
  • onglet General, champ Name = le_nom_de_votre_serveur
  • onglet Connection, champ Host name/address = IP_local_NAS
  • onglet Connection, champ Port = port local postgresql (défini plus haut)
  • onglet Connection, champ Username = postgres
  • onglet Connection, champ Password = votre_mdp_postgresql (défini plus haut)

Créer utilisateur kresus avec :

  • Menu ObjectCreateLogin
  • onglet General, champ Name = le_nom_de_l’utilisateur_bd_kresus (kresus par exemple)
  • onglet Definition, champ Password = votre_mdp_bd_kresus (à définir)
  • onglet Privileges, activer Can login

Créer base de données kresus avec :

  • Menu ObjectCreateDatabase
  • onglet General, champ Database = le_nom_de_votre_bd_kresus (kresus par exemple)
  • onglet General, champ Owner = le_nom_de_l’utilisateur_bd_kresus (défini ci-dessus)

3ème étape : installation de kresus via Docker

Télécharger image bnjbvr/kresus:latest sur Docker

Créer un répertoire docker/kresus/data et docker/kresus/woob sur File Station

Créer ficher config.ini dans répertoire docker/kresus à partir du ficher exemple en renseignant au moins :

  • datadir=/docker/kresus/data
  • host= IP_local_NAS
  • salt= chaine de caractère à définir
  • srcdir=/docker/kresus/woob
  • type=postgres
  • port= port local postgresql (défini plus haut)
  • username= le_nom_de_l’utilisateur_bd_kresus (défini plus haut)
  • password= votre_mdp_bd_kresus (défini plus haut)
  • name= le_nom_de_votre_bd_kresus

Lancer l’image bnjbvr/kresus:latest avec les paramètres suivants :

  • Volume :
    répertoire créé docker/kresus/woob avec /woob
    répertoire créé docker/kresus/data avec /home/user/data
    fichier créé config.ini avec /opt/config.ini
  • Réseaux : cocher utiliser le même réseau que Docker host
  • Environnement : tout laisser par défaut et ajouter LOCAL_USER_ID = nas_user_id ayant les droits sur docker

Se connecter à Kresus en web via http://IP_local_NAS:9876/#/dashboard

1 « J'aime »

@kurt je te laisse me dire si ça fonctionne !

Merci beaucoup, c’est top.
J’y suis presque.

une petite précision à ajouter dans le fichier config.ini, il faut bien modifier le host dans la section [db] et pas dans la section [kresus]

J’ai maintenant ceci dans le log :

Message: The user with provided ID 1 doesn’t exist. Did you run « kresus create:user » first?
Error: The user with provided ID 1 doesn’t exist. Did you run « kresus create:user » first?
at Object.initModels (/home/user/app/node_modules/kresus/build/server/models/index.js:112:19)
at process._tickCallback (internal/process/next_tick.js:68:7)

en supprimant le userid j’ai un serveur me dit qu’il fonctionne mais je n’arrive pas à y acceder

[2022-01-12T21:45:54.714] [INFO] init - Server is ready, let’s start the show!

192.168.1.50:9876 ne m’affiche rien (et pourtant j’ai d’autre containers docker qui tournent et auquel j’arrive à acceder, étrange)

J’ai joué un peu avec les valeurs des host. mais je ne trouve pas de solution qui fonctionne
il est bien ecrit dans le fichier config.ini que le host dans la section [kresus] est écrasé par la valeur de la variable d’environnement.
Moi j’ai 127.0.0.1 dans cette variable…
ce qui est explique peut etre pourquoi je n’arrive pas à acceder à l’application avec l’adresse 196.168.1.50.

Par contre si je mets 196.168.1.50 dans la variable d’environnement, ca plante en me disant « Error: listen EADDRNOTAVAIL: address not available 192.168.1.50:9876 »

bizzare…

Pour ma part j’ai bien modifié le host = NAS_IP_local dans la section [kresus] et laisser par défaut (donc sans valeur) le host dans la section [db].
Tu as essayé cette config ?

j’ai compris.
Et ca fonctionne.
J’ai tout supprimé et j’ai recommencé depuis le début car j’avais déjà essayé avant mon premier post ici.

Le point bloquant été que j’avais le mauvais host dans les variables d’environnement, il faut que la valeur soit 0.0.0.0 et pas 127.0.0.1 ni l’adresse local du nas

Merci bcp de ton aide

Bonjour,

Je me permets de relancer ce sujet qui m’intéresse.
J’ai suivi le tutoriel de Luc et j’ai un soucis lors de l’installation.
J’ai ces erreurs:

/usr/local/share/.config/yarn/global/node_modules/kresus/build/server/config.js:19 stdout

18:33:02 throw new Error(msg); stdout

18:33:02 ^ stdout

18:33:02
Error: Unknown database type null. stdout

18:33:02 at crash (/usr/local/share/.config/yarn/global/node_modules/kresus/build/server/config.js:19:11) stdout

18:33:02 at Object.cleanupAction (/usr/local/share/.config/yarn/global/node_modules/kresus/build/server/config.js:349:21) stdout

18:33:02 at Object.apply (/usr/local/share/.config/yarn/global/node_modules/kresus/build/server/config.js:629:55) stdout

18:33:02 at Object. (/usr/local/share/.config/yarn/global/node_modules/kresus/bin/kresus.js:195:14) stdout

18:33:02 at Module._compile (node:internal/modules/cjs/loader:1103:14) stdout

18:33:02 at Object.Module._extensions…js (node:internal/modules/cjs/loader:1155:10) stdout

18:33:02 at Module.load (node:internal/modules/cjs/loader:981:32) stdout

18:33:02 at Function.Module._load (node:internal/modules/cjs/loader:822:12) stdout

18:33:02 at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) stdout

18:33:02 at node:internal/main/run_main_module:17:47 stdout

18:37:26

Ça vous dit quelque chose?

Merci d’avance!

Salut,

Error: Unknown database type null. stdout

Je dirais que tu as mal configuré ta base de données dans le config.ini !

Merci Nicolas!
C’est une erreur toute bête entre majuscule et minuscule… :no_mouth: No coment…

Bonne soirée!

1 « J'aime »

Bonjour,
je déterre un fil qui date un peu.
je tiens d’abord à vous remercier pour le tuto pour l’installation sur syno. Je les suivi à la lettre, c’est parfait pour un ignare comme moi.
Cependant, je butte sur la dernière ligne.
"* Environnement : tout laisser par défaut et ajouter LOCAL_USER_ID = nas_user_id ayant les droits sur docker "

Je ne comprends pas ce qu’il faut mettre comme local_user_id. J’ai essayé avec mon user sur le syno, un compte admin, le user kresus. Après 1 minute le conteneur plante avec le message : "usermod: invalid user ID 'toto "

J’ai essayé sans renseigner la ligne dans les paramètres avancés/environnement : LOCAL_USER_ID** = *nas_user_id

Dans ce cas, le conteneur se lance et fini par planter avec le log ci-dessous (‹ The userid must be an integer provided with the command "kresus create:user ›)


.
date,stream,content
2023-02-12T20:21:03.293350267Z,stdout,e[90m at node:internal/main/run_main_module:17:47e[39m

2023-02-12T20:21:03.293317320Z,stdout,e[90m at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)e[39m

2023-02-12T20:21:03.293288538Z,stdout,e[90m at Function.Module._load (node:internal/modules/cjs/loader:822:12)e[39m

2023-02-12T20:21:03.293254174Z,stdout,e[90m at Module.load (node:internal/modules/cjs/loader:981:32)e[39m

2023-02-12T20:21:03.293223779Z,stdout,e[90m at Object.Module._extensions…js (node:internal/modules/cjs/loader:1159:10)e[39m

2023-02-12T20:21:03.293182043Z,stdout,e[90m at Module._compile (node:internal/modules/cjs/loader:1105:14)e[39m

2023-02-12T20:21:03.293151196Z,stdout, at Object. (/usr/local/share/.config/yarn/global/node_modules/e[4mkresuse[24m/bin/kresus.js:195:14)

2023-02-12T20:21:03.293119751Z,stdout, at Object.apply (/usr/local/share/.config/yarn/global/node_modules/e[4mkresuse[24m/build/server/config.js:629:55)

2023-02-12T20:21:03.293084715Z,stdout, at Object.cleanupAction (/usr/local/share/.config/yarn/global/node_modules/e[4mkresuse[24m/build/server/config.js:75:23)

2023-02-12T20:21:03.293054454Z,stdout,Error: The userid must be an integer provided with the command « kresus create:user ».

2023-02-12T20:21:03.293032474Z,stdout,

2023-02-12T20:21:03.293007601Z,stdout, ^

2023-02-12T20:21:03.292960722Z,stdout, throw new Error(‹ The userid must be an integer provided with the command « kresus create:user ». ›);

2023-02-12T20:21:03.292759780Z,stdout,/usr/local/share/.config/yarn/global/node_modules/kresus/build/server/config.js:75

2023-02-12T20:21:02.923324292Z,stdout,[ENTRYPOINT] Running kresus as user.

2023-02-12T20:21:02.891698854Z,stdout,[ENTRYPOINT] Changing rights on /woob directory…

2023-02-12T20:21:02.867567608Z,stdout,[ENTRYPOINT] Changing rights on user home directory…

2023-02-12T20:21:02.867352918Z,stdout,[ENTRYPOINT] Done.

2023-02-12T20:21:02.851664831Z,stdout,e[2Ke[1GDone in 15.34s.

2023-02-12T20:21:02.844545769Z,stdout,└─ zen-observable@0.8.15

Bonjour,

quelle est la valeur de la variable d’environnement KRESUS_USER_ID ?