Empaquetage de dodoc pour Yunohost

Bonjour à toustes,

J’ai installé précédemment dodoc sur un VPS et c’est génial ! Merci l’équipe.
Mais je suis frustré :persevere:, frustré de payer 60€ un VPS de 80Go pour « juste » dodoc. Alors j’ai essayé et vous l’avez peut-être vu d’installer nextcloud sur le même serveur à coté. Non ne faites pas ça si vous ne maîtrisez pas les serveurs et docker ce n’est pas la peine :face_with_peeking_eye:.
Mon envie intarissable d’installer nextcloud me viens que j’utilisais déjà nextcloud via yunohost sur une raspberry qui était sur me box. J’avais commencé à bien m’en servir, j’autohébergeai mon calendrier et mes contacts. J’avais tout supprimé de google et j’en était fier :heart_eyes:.
Sauf que, et vous vous en doutez un beau jour ma framboise n’a plus démarré… Plus possible de réinstaller yunohost… Alors j’ai éré des mois sans vouloir revenir à google et en sachant bien que je trouverai un moyen de reprendre la main de nextcloud :cowboy_hat_face:

Quand j’ai découvert dodoc et que j’ai voulu m’en installer un, j’ai suivi le super tuto de ce forum et je me suis dit ! Mais mon gars c’est pas si compliqué que ça …
Sauf qu’en fait les outils serveurs c’est des oignons et si tu fais pousser un oignon rouge à coté d’un oignon jaune ca marche pas. Ils n’ont pas besoin de la même terre. Ça je l’ai appris à mes dépend… Enfin tout est rentré dans l’ordre, dodoc occupe a lui seul un jardin que je trouve horriblement vide ;-). La plante est belle mais elle est seule et je n’ai pas envie d’acheter un autre jardin pour une autre plante toute seule.

Donc en fait le problème c’est que dodoc qui est une super appli, créé et maintenu par des gens formidables, utilise des couches tel que nginx, PHP, Mysql (un truc du genre). Et nextcloud c’est différent, c’est : appache, PHP, MySQL … Le truc qui coince c’est donc ça !! Il leurs faut a chacun le bon terreau. Et il est impossible de mettre apache et Nginx dans la même terre sinon paf dodoc sera perdu…

Donc une solutin était d’utiliser docker qui est une appli qui semble très utilisé justement pour découper un serveur en containers. Imaginez un jardin avec des pots de terres. Dans chaque pot on peut mettre un terreau différent… Donc on peut ainsi cultiver un oignon rouge à coté d’un oignon jaune. Mais j’ai essayé et comment dire … Je galère, je comprend pas… Et puis à la fin j’aurai toujours un truc moche avec des lignes de codes et des erreurs rouges dans une langue que je ne comprend pas que l’on puisse comprendre. Des erreurs qui font peur… Donc j’ai pas envie.

Dernière solution !!! Utiliser Yunohost !! Que j’ai adoré. Car justement une fois installé il gère chacune des applications indépendamment les unes des autres.
Le petit hic, c’est que dodoc n’est pas encore dans le programme du robot jardinier yunohost.
Je vais donc essayer de le faire !!

Donc me voilà ! Je vous annonce que je vais essayer cette aventure là pakager dodoc pour Yunohost !!!
Je pense qu’il y aurait moyen que ça aide la commu dodoc ? Qu’en dites vous ?

Autrement voilà, je vais poser ici plein de questions pour paramétrer au mieux le script qui va installer dodoc sur yunohost. Si vous voulez bien y répondre ?

Pour commencer en voilà quelques unes :

  • Quel est la capacité disque minimum pour installer dodoc ? 25 Go ?
  • Quel est la Ram min pour le faire tourner ? 1Go
  • Il parait qu’à l’installation une app peut demander plus de ram. Si c’est le cas Combien ?
  • L’applications nécessitent-elle un domaine entièrement dédié. Ou peut-elle être installé sur un « sous-chemin ».

Merci et à bientôt
Guillaume

1 « J'aime »

Bonjour Guillaume,

Je n’utilise pas Yunohost mais il y a déjà eu plusieurs demandes et je pense que ça intéresserait quelques personnes de pouvoir installer un serveur dodoc de cette manière.
Je ne maitrise pas le packaging d’applications, c’est pour ça que j’avais déposé une demande sur la liste de souhaits sur le forum de Yunohost
https://apps.yunohost.org/wishlist?search=do.doc

Il y a peut-être moyen d’avoir un coup de main en mettant un message sur leur forum.

Il y a aussi une issue sur Git avec quelques pistes :

A bientôt
Julien

1 « J'aime »

Salut @julien,

C’est super ça. Ca me motive dautant plus que de galérer avec docker sur mon serveur. Si je peux être utilie à la communauté et faciliter l’accés à un public moins averti, ca me va.

Je ne sais pas vraiement dans quoi je me lance, mais je suis bien motivé. Dautant que j’ai l’impression que la communautée YNH est bien active nottamment pour aider des gens venues d’autres outils et qui ont envie d’élargir l’offre de YNH.

J’ai commencé à me plonger dans la doc, ce n’est pas évident, mais je vais y aller par petit pas et je trouve que c’est hyper bien documenté. C’est plutôt précis. Packaging applications | Yunohost Documentation

Si certain.e.s souhaitent se joindre à moi dans cette aventure, ce sera avec plaisir de le faire à plusieurs. Voici le lien du dépot github du future dodoc.ynh : GitHub - gheleguen/dodoc_ynh: Un essai de packaging de dodoc pour yunohost

:warning: On travail toujours sur la branche « testing » pas sur la main :wink:

Si il y a du monde qui souhaite m’aider, je créerai un discord pour pouvoir échanger facilement.

Voilà la discussion que j’ai commencé avec la commu yunohost : Start to pakaging dodoc - Apps packaging - YunoHost Forum

Ca va être une aventure, si j’y parviens j’aurai fais un pas énorme dans mon auto-apprentissage de l’informatique :wink:

A++

1 « J'aime »

Hello !

merci pour le récap et la méta-doc :slight_smile:
Je t’aide avec plaisir !

Une installation de dodoc c’est environ 1.2 go
Il faut prévoir un peu de marge pour le dossier de cache (qui contient par exemple les vidéos ou PDF en cours de création et est vidé à chaque démarrage), environ 2 ou 3 go je dirai.

Idéallement, placer le dossier de contenus sur un autre volume en créant un fichier settings.json contenant une règle "contentPath": "/chemin/vers/les/contenus", sur le modèle de settings.example.json (voir settings_base.json pour voir tous les règlages avancés disponibles.

Oui, sans problème. La limite, c’est surtout la création de PDF et vidéo – pour tout le reste dodoc est sobre (la réécriture de la v10 allait en particulier dans ce sens). Il y aura un chantier à mener à terme, pour bien isoler les tâches les plus lourdes (création de PDF et vidéo, donc) du reste de l’appli pour que même sur des appareils faiblards, cela puisse se faire en tâche de fond sans perturber l’utilisation. J’ai déjà fait plusieurs pas dans cette direction dans la v10 mais c’est pas encore parfait.

Dans mes installations, je préconise plutôt 2go pour avoir de la marge.

Concrètement l’appli essaie d’utiliser la RAM dont elle a besoin et si l’OS lui refuse, elle est censé faire du ménage dans les objets qu’elle utilise plus (garbace collector). Je ne connais pas le maximum possible pour une app node.js, mais il y a un peu d’info ici si tu veux augmenter ça : Unleashing JavaScript Applications: A Guide to Boosting Memory Limits in Node.js - Microsoft Community Hub

Pour l’instant, il lui faut un domaine ou sous-domaine mais je n’ai jamais tenté d’installation en sous-dossier type https://www.dodoc.fr/mon-dodoc
Tu penses à ça ? Pas moyen de faire un sous-domaine sur Yunohost ?

Merci à vous deux pour vos réponses,
J’ai eu de l’aide sur yunohost et en fait il y a unhabitué qui a commencé le chantier :

Le dépot github : GitHub - YunoHost-Apps/dodoc_ynh: dodoc package for YunoHost

Il a commencé il y a deux semaines. Il dit qu’il y a encore du boulot. Quelquepart c’est bien car ca a plus de chances d’aboutir qu’avec moi. D’un autre j’aurai aimé faire ca pour la commu.

Il y a aussi l’avantage qu’il développe directement sur le compte de yunohost_App chose que je ne peux pas faire et ce qui évite donc l’étape de validation de leur communauté.

Je vais voir si il a besoin d’aide, mais bon avec mon Anglais de vache espagnol…

Je vous tiens au courant
En attendant, je vais m’installer un YNH de test sur une raspberry pour tester :wink:

Guillaume

1 « J'aime »

Ha, super !
Dispo pour aider si besoin. D’ailleurs ça fait un bail que je me demande si on devrait pas créer un espace de discussion/chat comme Mattermost, ça serait plus pratique pour les blocages et développement de ce type non ? Tu en penses quoi @heron1306 ?

Hello @louis,
Oui c’est super que la communauté de Yunohost s’en charge. Ils font ça beaucoup plus efficacement que moi. Mais j’ai aucune idée du temps que ca va leur prendre…
En tout cas, j’ai invité les contributeurs de YNH à poser leurs questions ici si ils ont besoin.
Affaire à suivre.

Yes Louis, créer un chat comme un mattermost ce serait plus fluide pour ce genre de discussions. Si on avait lancé un petit collectif pour faire le paquet d’installation pour YNH je crois que j’aurai créé un truc dans le genre.

Bonne journée

Guillaume

hello,
je ne sais pas si les contributeurs auront le temps de venir ici (ils sont bien occupés tout de même). Je viens ici car je suis justement ton projet, je contribue aussi un peu en maintenant un paquet Yunohost et j’aurais des questions…

J’ai testé le paquet Yunohost dans une Virtualbox, mais je me retrouve avec une erreur 500 nginx.
Déjà me semble comprendre que l’application fonctionne sur un port 5858, donc il faut ouvrir ce port ? en TCP ? ou TCP et UDP ? est-ce possible de le rediriger vers le port 80 ? où c’est l’install avec le paquet source qui ne se fait pas correctement ??

Je me pose la question en lisant le code et les procédures d’installation, comment fonctionne le paquet source .tar.gz ? Vous avez l’air d’avoir des installations différentes suivant si c’est local ou dans un serveur, Yunohost utilise le paquet source (upstream) https://github.com/l-atelier-des-chercheurs/dodoc/archive/refs/tags/v10.0.10.tar.gz
Est-ce possible avec ce paquet ?

Pour l’anglais @heron1306 , ericg parle français aussi, n’hésite pas à lui écrire en français. L’idéal pour avoir de l’aide est de rejoindre le fil de discussion de Yunohost sur Mattrix, il y a un fil dédié Ynuhost Packaging aussi qui suit ce qui ce passe sur les dépôts Github.

C’est assez simple de se créer un environnement de test avec Virtualbox, il y a une image exprès pour tester, envoyer des PR sur la branche testing.

Ensuite on peut tester son paquet localement dans la vm…

Oui on peut créer des sous-domaines dans yunohost et des domaines à volonté… Par contre c’est nginx qui est utilisé derrière.

Je veux bien vous aider dans cette belle aventure quand je peux avoir un peu de temps (pas toujours évident).

Est-ce qu’il y a besoin d’une base de données ?

Pour le port 5858, en effet c’est celui choisi par défaut pour la conf nginx dans l’install, faut-il ouvrir ce port ou pas nécessaire ?

Installé tel quel je vois ceci dans le dossier de l’app

ls /var/www/dodoc/
build				   electron-builder.yml  package-lock.json
client				   index.js		 perf.pug
content				   index.pug		 README.md
core2				   LICENSE.md		 settings_base.json
dodoc-linux-desktop-entry.desktop  node_modules		 settings.example.json
dodoc_logo.svg			   package.json		 settings.json

root@yunohost:~# cat /var/www/dodoc/settings.json 
{
  "desired_port": 5858,
  "contentPath": "dodoc",
  "removePermanently": false,

  "api": {
    "enabled": false,
    "allow_all_domains": false,
    "domains_whitelist": ["127.0.0.1"]
  }
}

Est-ce qu’il faut activer aussi l’api ??

Pourquoi on voit justement un electron.yml, est-ce que justement il ne faut pas l’installer sur un serveur ?

hello !
je réponds rapidement, je suis charrette ces jours-ci mais pour débloquer (et merci pour l’aide la dessus !) :

Par défaut le port 8080, mais possible de modifier cela en créant un fichier settings.json, voir le fichier settings.example.json comme aide et settings_base.json pour toutes les variables dispos.
TCP ou UDP, je sais pas. Le serveur express tourne en HTTPS sur ce port, les websockets de sharedb pour gérer la collaboration temps réel passent aussi par là.

Il y a deux versions effectivement : une version Electron pour ordi, une version Node pour serveurs.
La version Electron démarre une fenêtre qui embarque chromium, pour que ça soit plus simple à lancer pour une personne non experte que de lancer un serveur web puis s’y connecter dans un navigateur.

Plus d’infos sur les branches dans le readme : GitHub - l-atelier-des-chercheurs/dodoc: Conçu pour favoriser les processus réflexifs lors d’activités d’apprentissage, do•doc est un outil ouvert et modulaire qui permet de capturer des médias (photos, vidéos, sons et stop-motion), de les éditer, de les mettre en page et de les publier

Du coup pour YNH le mieux serait de tester avec la branche next-node, qui est la dernière version expérimentale mais avec les deps les plus à jour (et version de node aussi). Aucune idée ou trouver un .tar.gz, mais je peux faire une pre-release si besoin.

Non, tout est flat-file, dans des dossiers et fichiers meta.txt. Par défaut dans le dossier /Documents/dodoc, mais personnalisable en utilisant le fichier settings.json

contentPath: « /mon/chemin/vers/les/contenus »

La variable API permet d’autoriser d’aller récupérer du contenu depuis un autre site. A priori ça n’est pas utile dans ce cas de figure.

Merci encore, dispo si besoin !

Bonjour @louis, (je suis Éric du studio ÉricandMarie, je suis venu te voir à ton atelier avec Marie et Sarah Garcin et tu nous avais présenté Do•doc (mais ça commence à faire très longtemps).
C’est un super projet qui mériterait bien d’être facilement installable par tous! Bref, je suis bien content de pouvoir donner un petit coup de main sur l’empaquetage de l’app pour YunoHost.

J’ai commencé à faire les scripts pour pouvoir installer Do•doc sur YunoHost. L’installation devrait être fonctionnelle (même si l’app ne passe pas encore tous les tests de la CI).
Pour ceux qui ont un server avec YunoHost installé on peut tester en CLI sudo yunohost app install https://github.com/YunoHost-Apps/dodoc_ynh/tree/testing

1 « J'aime »

Mais oui, je me souviens ! ça remonte un peu effectivement :slight_smile:
C’est top que ça avance, je test dès que je trouve un peu de temps !
super super super

Bonjour à tous,
Merci à tous pour cet empaquettage éclair :wink:
Je me suis donc installé un YNH sur une raspberry en local et je test donc l’installation du paquet dodoc.
Alors voilà ce que j’ai pour le moment (rassurez-vous il n’y avait rien sur mon Yunohost pour le moment) Mais je crois que je vais devoir les réinstaller :wink:

:heart_eyes: Je décrète que je suis le premier à faire l’erreur bête !!!

Je me souvenais qu’avec Yunohost quand on lui disais d’installer un logiciel sur le nom de domaine déjà utilisé par YNH lui-même on obtenais une installation dans un sous fichier comme mondomaine.ynh.fr/outilinstallé

Donc bêtement je lui ai dit de se mettre sur mon nom de domaine principal. Résultat : Quand je lance un naviguateur avec mon nom de domaine https://gleguencloud.ynh.fr, j’obtiens un dodoc à la place du YNH habituel !

Est-ce une erreur du script qui ne devrait pas permettre ca ? Ou est-ce que je ne savais pas un truc ?

En tout cas à première vu il a l’air de marcher. Je le test plus tard. Avant cela je vais réinstaller YNH à 0 et réinstaller dodoc en lui donnant un autre domaine.
A moins qu’il existe un moyen de changer ça ? Est-ce que changer le nom de domaine de dodoc me permettrait de récupérer la main graphique sur YNH ?

En tout cas chapeau !

Guillaume

Ok ! J’ai réinstallé le tout !
Ca fonctionne mieux avec un sous-domaine que j’ai été paramétreé avec l’espace admin de YNH.
:heart_eyes: :heart_eyes: :heart_eyes:

Maintenant, j’ai commencé à créer un projet test, tout à l’air de fonctionnner jusqu’à obtenir ce message :

Puis celui-ci à chaque fois que j’assaye de me reconnecter a Yunohost :

Je crois que mon nom de domaine est accessible à l’extérieur. Essayez ici : (https://dodoc.gleguencloud.ynh.fr/).

Qu’en dites-vous ? D’où viendrai cette erreur ?
Je suis disposé à refaire des tests plutôt après le WE.

Bonne journée

Visiblement ta création de projet a fait planter dodoc, qui ne redémarre pas automatiquement (il faut lui dire de redémarrer si il plante, ce que fait pm2 pour la version serveur).

Si ça plante en créant un projet, c’est peut-être un soucis d’autorisation poour écrire dans le dossier des contenus. À voir si il faut pas corriger le dossier des contenus (contentPath).

@eric_g je vois dans le toml d’install les infos suivantes :

disk = « 50M »
ram.build = « 50M »
ram.runtime = « 50M »

Si c’est bien 50mo, ça paraît peut en terme d’espace dispo et de ram. Si on peut monter à 512 au moins ça serait bien !

On a pas mal de connexions perdues… L’app se déconnecte régulièrement avec l’erreur Connect error Error: xhr poll error

J’ai rajouté Restart=on-failure dans systemd mais ces déconnexions sont intrigantes.

J’ai configuré ContentPath avec le chemin suivant /home/yunohost.app/dodoc. c’est l’emplacement utilisé par défaut pour stocker les données des apps.

Les permissions suivantes sont appliquées :

chmod 750 "/home/yunohost.app/dodoc/"
chmod -R o-rwx "/home/yunohost.app/dodoc/"
chown -R dodoc:dodoc "/home/yunohost.app/dodoc/"

L’installation dans un sous-dossier (domain.tld/dodoc) n’a pas l’air de fonctionner (j’ai rajouté l’option à l’installation pour pouvoir tester)

@louis J’ai ajusté les exigences minimales pour le disque et la RAM (Ce ne sont que des indications qui n’ont aucun impact).

@heron1306 Tu peux mettre à jour do•doc pour avoir les dernières modifications avec la commande :
sudo yunohost app upgrade dodoc -u https://github.com/YunoHost-Apps/dodoc_ynh/tree/testing -F

Les logs du service sont visibles dans la Webadmin → Outils → Services → dodoc

On avance

Ces déconnexions sont à peu près certainement du à un plantage de l’appli.
Il faudrait accéder aux logs pour savoir à quoi c’est du. Ça fait suite à une action précise ? @heron1306 parlait de la création d’un projet ?
Vous arrivez à créer un projet ?

Voilà ! C’est fait ! Il y a bien un script qui relance l’app lorsqu’elle se déconnecte. Cependant à chaque fois que je cherche à éditer ou créer une « publication » (selon le language dodoc) dodoc plante avec l’erreur que tu as indiqué.

Non là ce n’est pas la création de projet qui plante mais bien la création de publication ou l’édition.

Voici le LOG : hastebin

Je reste en test ! Mais je ne serais pas dispo demain :wink:

Bonne soirée

Parfait !
Le log indique que ce code a fait planter dodoc :

JSON.parse(req.headers.authorization);

=> SyntaxError: Unexpected token ‹ B ›, « Basic Z2hl »… is not valid JSON

Parce que la variable req.headers.authorization contenait la valeur Basic Z2hl.
Ça te parle cette valeur Guillaume ? Un nom de projet, un mot de passe ?
Normalement il y a un json stringifié ici, pas un texte comme ça…

J’ai également des logs similaires hastebin

Ah non j’ai pas utilisé cette chaine de caractère :upside_down_face: