Création paquet pour Yunohost

Bonjour,

J’aimerais m’essayer Ă  crĂ©er un paquet Dokos pour Yunohost.
Pour commencer, j’ai quelques petites questions.
Est-ce que Dokos s’installe sur toutes les architecture, amd64, i386, armhf et arm64 ?
Est-ce que Dokos serait compatible avec un SSO qui se base sur le principe du â€č Basic HTTP auth header â€ș?

1 « J'aime »

Est-ce que il est possible d’installer Dokos pas à la racine d’un nom de domaine, par exemple au lieu de monsite.dokos.cloud, l’installer sur dokos.cloud/monsite1/ ?

Au fait, pour dĂ©marrer, je m’aide de https://yologen.lapineige.fr/

1 « J'aime »

Oui, on peut s’authentifier Ă  Dokos avec un header Basic standard. D’ailleurs, le format user:password standard est acceptĂ©, qu’il soit encodĂ© en base64 ou non. (voir dans le code source)

D’ailleurs Dokos fonctionne aussi bien avec un SSO OAuth, et peut mĂȘme servir de provider OAuth, donc avoir 1 Dokos central pour se connecter Ă  d’autres instances, ou l’inverse.



Peut-ĂȘtre, avec un proxy et de la rĂ©Ă©criture de chemin c’est envisageable. Il faudra bien faire attention Ă  configurer la variable de configuration host_name pour chaque site du fichier site_config.json, avec par exemple https://base.fr/site1/ : Exrait de code #1, Extrait de code #2. Il faudra vĂ©rifier que l’impression en PDF fonctionne bien car ce systĂšme s’appuie sur le rĂ©seau.



Je n’ai pas testĂ© ces configurations-lĂ  donc je ne sais pas malheureusement.


Corentin

1 « J'aime »

« db_name Â»: « test_frappe Â»,
« db_password Â»: « test_frappe Â»,
J’imagine que db_user = db_name à l’install et à l’usage du coup?

Si je comprends bien la façon d’installer Dokos, au moment de lancer la commande python3 -m pip install --upgrade --quiet dokos-cli, j’exĂ©cute ce script easy-install.py · master · Dokos / Docli · GitLab qui installe en fait tout via docker compose, c’est bien ça?

Il n’existe donc pas de processus d’installation sans docker?

Dokos ne peut pas s’installer sans docker et bench?

Bonjour @Thatoo,

Nous avons documentĂ© uniquement deux modes d’installation: via Docker (avec ou sans Bench selon les variantes) ou manuellement sur une VM avec Bench.

On peut voir Bench comme une simple ligne de commande permettant d’effectuer un certain nombre d’actions sur ses sites, mais ça n’est pas une dĂ©pendance obligatoire pour installer Dokos.

Nous avons maintenu pendant un moment un script d’installation automatique sur VM, que tu peux trouver ici, mais c’est trĂšs lourd Ă  maintenir, donc nous avons dĂ©cidĂ© de nous concentrer sur Docker uniquement pour les dĂ©ploiement automatiques.
Mais il est Ă©videmment possible de faire des variantes du mode d’installation, comme l’a fait le projet GitHub - frappe/frappe_docker: Docker images for production and development setups of the Frappe framework and ERPNext

Donc pour rĂ©pondre Ă  ta question, Dokos peut bien s’installer sans Docker et sans Bench, mais ça va demander de repenser le processus d’installation et le dĂ©veloppement d’un nouvel outil de dĂ©ploiement.

2 « J'aime »

Bonjour @Thatoo,

CĂŽtĂ© ERPNext, tu peux aussi trouver des tutoriels d’installation manuel (ERPNext 14 correspond Ă  la v3 de dokos) qui peuvent aiguiller. Il faut Ă©videmment adapter comme par exemple l’install de dokos-cli au lieu de Frappe bench.

Il y aussi ce script sur github mais aucune idée de ce que ça vaut :man_shrugging:

A plus,
Antoine.

2 « J'aime »

Le script fonctionne bien pour installer ERPnext. Merci @Antoine_Maas
Le seul problĂšme est l’usage de l’utilisateur root de mysql par dĂ©faut. Yunohost, n’autorise pas l’utilisation de root.
Je vais l’adapter pour installer Dokos avec cette contrainte en tĂȘte d’abord avant de me lancer dans la packaging Yunohost.

C’est possible de faire autrement : il y a des paramùtres --db-root-username et --db-root-password disponibles pour les commandes qui en ont besoin.

https://frappeframework.com/docs/user/en/bench/reference/new-site

1 « J'aime »

A force d’essayer de comprendre l’installation je suis tombĂ© sur cette rĂ©ponse qui met fin Ă  ma volontĂ© de crĂ©er un paquet yunohost : [Packaging for distributions] Manual installation without Bench · Issue #33539 · frappe/erpnext · GitHub

Oh dommage, un grand merci d’avoir essayĂ© !

Bonjour tout le monde, je reviens vers vous avec une plutĂŽt bonne nouvelle.
J’ai finalement continuer à travailler sur un script d’installation de Dokos en vu d’un paquet Yunohost.

Ce qui m’a dĂ©bloquĂ©, c’est Dokos v4 qui a l’option --no-setup-db pour la commande bench new-site et ça, ça change tout.

Donc, ce script, qui fonctionne ne permet que d’installer Dokos v4 (et sans doute supĂ©rieur) sur Ubuntu 22.04 et Debian 11 (j’ai testĂ© les deux).

Le script et le fichier de conf nginx.conf (nĂ©cessaire aujourd’hui mais qui doit disparaĂźtre Ă  terme) se trouve ici : Dokos_ynh/bash-script-install at Thatoo-bash-script-install · Thatoo/Dokos_ynh · GitHub

et la discussion pour transformer ce script en paquet Yunohost pour lequel il est nécessaire de faire disparaßtre ce fichier nginx.conf et de trouver une alternative à

sudo bash -c 'cat << EOF >> /etc/mysql/my.cnf
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4
EOF'

sudo service mysql restart

se trouve ici, les contributions sont les bienvenues : Yunohost package · Thatoo/Dokos_ynh · Discussion #2 · GitHub

Il y a toutefois une erreur qui a lieu a chaque fois en executant ce script que je ne comprends pas :

bench new-site $site_name --db-name $db_name --db-password $db_pwd --no-setup-db --admin-password $admin_pwd
Pas de soucis

Installing frappe...
Updating DocTypes for frappe        : [========================================] 100%
Updating Dashboard for frappe
dokos.local: SystemSettings.enable_scheduler is UNSET
*** Scheduler is disabled ***

Puis,

bench --site $site_name install-app payments
bench --site $site_name install-app dokos

Pas de soucis non plus

Installing payments...
Updating DocTypes for payments      : [========================================] 100%
* Updating Payment Custom Fields in Web Form
Updating Dashboard for payments
App payments already installed

Installing erpnext...
Updating DocTypes for erpnext       : [========================================] 100%
Updating customizations for Address
 └─ Updating Custom DocPerms
Updating customizations for Contact
 └─ Updating Custom DocPerms
Updating customizations for Contact
 └─ Updating Custom Fields
Updating customizations for Address
 └─ Updating Custom Fields
Updating customizations for Contact
 └─ Updating Property Setters
Updating customizations for Event
 └─ Updating Custom Fields
 └─ Updating Property Setters
Updating Dashboard for erpnext
App payments already installed
App erpnext already installed

Mais malheureusement,
bench --site $site_name install-app hrms

me donne l’erreur suivante :

Installing hrms...
Updating DocTypes for hrms          : [========================================] 100%
Setting up HRMS...
Patching Existing Data...
Installation for HRMS app failed due to an error. Please try re-installing the app or report the issue on https://gitlab.com/dokos/hrms/-/issues if not resolved.
An error occurred while installing hrms: Error 111 connecting to localhost:13000. Connection refused.
Traceback (most recent call last):
  File "env/lib/python3.10/site-packages/redis/connection.py", line 264, in connect
    sock = self.retry.call_with_retry(
  File "env/lib/python3.10/site-packages/redis/retry.py", line 46, in call_with_retry
    return do()
  File "env/lib/python3.10/site-packages/redis/connection.py", line 265, in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
  File "env/lib/python3.10/site-packages/redis/connection.py", line 627, in _connect
    raise err
  File "env/lib/python3.10/site-packages/redis/connection.py", line 615, in _connect
    sock.connect(socket_address)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "apps/frappe/frappe/commands/site.py", line 470, in install_app
    _install_app(app, verbose=context.verbose, force=force)
  File "apps/frappe/frappe/installer.py", line 326, in install_app
    frappe.get_attr(after_install)()
  File "apps/hrms/hrms/install.py", line 21, in after_install
    raise e
  File "apps/hrms/hrms/install.py", line 9, in after_install
    setup()
  File "apps/hrms/hrms/setup.py", line 22, in after_install
    run_post_install_patches()
  File "apps/hrms/hrms/setup.py", line 674, in run_post_install_patches
    frappe.get_attr(f"hrms.patches.post_install.{patch_name}.execute")()
  File "apps/hrms/hrms/patches/post_install/rename_stop_to_send_birthday_reminders.py", line 10, in execute
    rename_field("HR Settings", "stop_birthday_reminders", "send_birthday_reminders")
  File "apps/frappe/frappe/model/utils/rename_field.py", line 60, in rename_field
    update_user_settings(doctype, old_fieldname, new_fieldname)
  File "apps/frappe/frappe/model/utils/rename_field.py", line 171, in update_user_settings
    sync_user_settings()
  File "apps/frappe/frappe/model/utils/user_settings.py", line 48, in sync_user_settings
    for key, data in frappe.cache.hgetall("_user_settings").items():
  File "apps/frappe/frappe/utils/redis_wrapper.py", line 213, in hgetall
    value = super().hgetall(self.make_key(name))
  File "env/lib/python3.10/site-packages/redis/commands/core.py", line 4954, in hgetall
    return self.execute_command("HGETALL", name)
  File "env/lib/python3.10/site-packages/redis/client.py", line 533, in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
  File "env/lib/python3.10/site-packages/redis/connection.py", line 1086, in get_connection
    connection.connect()
  File "env/lib/python3.10/site-packages/redis/connection.py", line 270, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 111 connecting to localhost:13000. Connection refused.

Bonjour @Thatoo,

Cette erreur est “normale” : il y a un bug dans l’installateur de l’appli HRMS, qui ne peut pas ĂȘtre installĂ©e quand le serveur/service n’est pas lancĂ©.

Il faut donc d’abord dĂ©marrer le service Dokos d’abord et ensuite installer le reste.

Donc, déplacer dans les script les lignes

bench --site $site_name install-app payments
bench --site $site_name install-app dokos
bench --site $site_name install-app hrms

en dessous de

bench --site $site_name scheduler enable && \
bench --site $site_name scheduler resume && \

résoudrait ce problÚme?

[edit] j’ai fait ça et en effet, ça fonctionne sans erreur, merci.

On se rapproche gentiment d’un script fonctionnel.
Si seulement les commandes bench Ă©taient plus souples (avec plus d’options et de paramĂštres).

A suivre ici: Yunohost package · Thatoo/Dokos_ynh · Discussion #2 · GitHub

1 « J'aime »

L’espoir me reprends d’arriver Ă  faire un paquet yunohost pour Dokos avec l’arrivĂ©e de Yunohost 12 et Dokos v4.

Par contre, ça dépend pas mal aussi de ce PR upstream : Database Requirements whith --no-setup-db parameter by Thatoo · Pull Request #24651 · frappe/frappe · GitHub

Si quelqu’un a la possibilitĂ© d’effectuer la review qui va bien pour que les « workflow Â» de github puissent s’effectuer et que ce PR deviennent fusionable, ce serait cool.
Et puis si quelqu’un peut pousser Ă  ce que ce soit Ă©tudiĂ© et fusionnĂ© (merged) pour atterrir prochainement dans une sous version de frappe et donc une sous version de Dokos v4, ça serait super.

AprĂšs le script pouvant servir de base Ă  une installation automatisĂ© sera opĂ©rationnel et l’empaquetage pour Ynh 12 deviendra envisageable.

Bonjour @Thatoo

Encore merci pour ton travail sur Dokos/Yunohost.

Je veux prĂ©ciser que, de la mĂȘme maniĂšre que Dokos est un fork d’ERPNext, le fork de Frappe s’appelle Dodock : Dokos / Dodock · GitLab, qui est installĂ© par la dokos-cli (bench) Ă  la place de Frappe (mais Dodock garde le mĂȘme “nom technique” frappe).

C’est pourquoi l’équipe Dokos ne peut pas vraiment passer en revue ton code, et ne peut pas dĂ©cider de fusionner ton travail. Quant aux Ă©quipes de Frappe, je ne sais pas s’ils ont beaucoup de temps disponible en ce moment pour passer en revue finement toutes les PRs de la communautĂ©. C’est pour ça que ça prend un peu de temps de leur cĂŽtĂ©.

Cependant, si tu fais une Merge Request sur le rĂ©pertoire GitLab de Dodock, les tests seront lancĂ©s automatiquement, et l’équipe de Dokos pourra Ă©ventuellement regarder ton code.

Bonsoir,

Voila ma PR sur le Gitlab de Dodock : Thatoo develop patch 18635Database Requirements whith --no-setup-db parameter (!2329) · Merge requests · Dokos / Dodock · GitLab

1 « J'aime »