[Packageur en herbe] packaging application YesWiki

Bonjour,

je cherche à packager l’application Uwazi (depot GitHub).
Mon depot d’application github.com/Plumf/uwazi_ynh

Je suis en train de packager l’application YesWiki et mon dépot GitHub pour YesWiki

Je debute dans le packaging,j’ai suivi les recommandations de la doc : ici, ici et

Quelques petites questions me viennent et je n’arrive pas à trouver de réponse. Quelle est la différence entre les dépendances (dans le fichier script/_common.sh) et les services à compléter dans le fichier manifeste.json ?

Dans le depot d’exemple de YunoHost que j’utilise comme base de travail le service mysql est marqué tandis que Uwazi utilise MongoDB (sur leur dépot github c’est marqué comme dépendance par ailleur.

merci d’avance de vos réponses. @Plumf

2 Likes

Hi @Plumf

I guess by “dépendances” you mean this line https://github.com/YunoHost/example_ynh/blob/master/scripts/_common.sh#L8
Those are apt packages you need to install for your app.

Services in the manifest are (I would say, useless…) kind of a list of services you need to be running when using the app.

To be honest, if that’s your first package, this app doesn’t look like a good choice to start.
A quick look to the install doc (https://github.com/huridocs/uwazi/wiki/Install-Uwazi-on-your-server) make me think of the kind of app for which the dev didn’t think it was going to be used by real users.

Hi @Maniack_Crudelis thank for your answer, i note this. For beginning it’s not a good idea maybe. I’m going to leave that package out so you don’t disgust me. But I’m still looking for an application simple enough to packager to make my hand. What should I look at? There must be one in the notworking list with which it’s possible …

1 Like

Huh first, don’t bother you with English, I can perfectly understand you in French.

There’s many apps you can start with. But to lead you toward the right one, I should know what kind of apps you’re looking for.
Always better to work on an app you’re actually going to use.

Not problems, it’s good to my english training. =) Il take the time tomorow to write a liste with interesting applications (in wishlist and not working apps). Thnak for your help

If you prefer then, you can do that.
Don’t hesitate also to look for non maintained apps.

As soon as you have your list, we’ll have a look to it to find you an easy one.

1 Like

Hi @Maniack_Crudelis, I looks some applications and in this order, I’m interesting by :

  1. YesWiki - git
  2. lychee - git
  3. Wisemapping - infos
  4. Umap - git
  5. Docspell - git
  6. alf.io - git

Tell me which ones would be easy to package and I works =) Thanks for all.

To take in the right order, the first one is perfect.

Really an easy pick.

The documentation is a little bit sloppy but it will do it.
And the spirit of the software seems perfect for YunoHost.

But, from a quick look, I can already told you, do not chmod 777 ! Never !

Otherwise, to go for this one could be a good idea.

I’m note this, and I go work to package Yes Wiki. I come back with a first beta package. Thanks !!!

Bonjour, toujours en avancant à pas de fourmis dans le packagage de l’application YesWiki, je suis devant un mur, dans le script d’installation je ne sais pas si je dois utiliser l’outil curl ou non et du coup juste après comment configurer et où configurer l’installation (ligne 242 - install)

En installant YesWiki par un ftp il y a tout un formulaire à remplir, mais je cale car je n’arrive pas à savoir ou obtenir les clefs des informations.

Notamment pour comprendre je me suis inspiré de cela (install Wallabag)

Les valeurs database_user et autre sont elles universelles ? Y a t il un endroit par defenition où installer la configuration ou est ce totalement arbitraire ?

Salut !

Je viens de tester une installation rapide de YesWiki. Tu dois passer par curl on dirait, car si tu regardes le fichier setup/install.php, il récupère toutes les variables provenant du formulaire pour ensuite créer les tables de la base de données:

// fetch configuration
$config = $config2 = $_POST['config'];

J’ai capturé la requête POST dans Firefox. Tu peux le faire en ouvrant le menu développeur à l’onglet Réseau, et en cliquant sur Continuer après avoir rempli le formulaire. La ligne POST peux être copiée en tant que commande “cURL (posix)”. Tu peux virer tous les headers commençant par -H:

curl 'https://domain.tld/yeswiki/?PagePrincipale&installAction=install' --data 'config%5Bdefault_language%5D=fr&config%5Bwakka_name%5D=Mon+site+YesWiki&config%5Bmeta_description%5D=&config%5Bmeta_keywords%5D=&config%5Broot_page%5D=PagePrincipale&config%5Bmysql_host%5D=localhost&config%5Bmysql_database%5D=test&config%5Bmysql_user%5D=test&config%5Bmysql_password%5D=test&config%5Btable_prefix%5D=yeswiki_&admin_name=WikiAdmin&admin_password=test&admin_password_conf=test&admin_email=test%40domain.tld&config%5Bbase_url%5D=https%3A%2F%2Fdomain.tld%2Fyeswiki%2F%3F&config%5Brewrite_mode%5D=0&config%5Ballow_raw_html%5D=1'

C’est pas très joli, mais tu peux aisément repérer mes variables de test et les remplacer par les variables de ton manifest. :wink:

Le cas de Wallabag ne marchera pas pour toi, car Wallabag se sert du fichier parameters.yml pour charger les paramètres lors de l’installation, alors que YesWiki se sert de son fichier config pour stocker ces paramètres après l’installation, a posteriori donc. :confused:

1 Like

merci pour les infos je vais regarder ça de plus près. Toujours en cherchant des points de comparaisons avec d’autres paquets de YunoHost, le cas de WordPress est il plus indiqué ?
(Il ny a notamment l’usage de Curl)

Oui ça me semble pas mal l’exemple de Wordpress. Garde un oeil sur example_ynh tout de même, car le code y est plus propre et sans les étapes spécifiques à Wordpress.

1 Like

Re-petit problème :
les log de ma dernière version : https://paste.yunohost.org/raw/vofuyuvane

A la fin du script d’installation il y a ces lignes :

#=================================================
# STORE THE CONFIG FILE CHECKSUM
#=================================================

### `ynh_store_file_checksum` is used to store the checksum of a file.
### That way, during the upgrade script, by using `ynh_backup_if_checksum_is_different`,
### you can make a backup of this file before modifying it again if the admin had modified it.

# Calculate and store the config file checksum into the app settings
ynh_store_file_checksum --file="$final_path/wakka.config.php"

Si je ne me trompe pas dans l’interpretation de ces lignes c’est pour vérier l’intégrité du fichier de configuration ? (Il y a dedans les infos MYSQL, Nom du wiki dans le cas présent et autre…) Mais tant que le processus n’a pas finit, le fichier n’existe pas ce qui me renvoit durant l’installation à une erreur.

Est ce que je me suis trompé ou il y a une manière de le créer avant ?

Autre question, serait possible d’avoir une explication quant à l’utilisation et l’usage de cette partie :

#=================================================
# MODIFY A CONFIG FILE
#=================================================

### `ynh_replace_string` is used to replace a string in a file.
### (It's compatible with sed regular expressions syntax)

#ynh_replace_string --match_string="match_string" --replace_string="replace_string" --target_file="$final_path/CONFIG_FILE"

Merci d’avance

Toutes les parties des scripts de example_ynh ne sont pas obligatoires:

  • Pour le checksum, ce n’est intéressant que si tu veux surveiller les modifications du fichier de configuration. Or il contient par exemple le titre du wiki, ce qui est aisément modifiable par l’utilisateur. Je ne pense donc pas qu’il soit important de surveiller de telles modifications. Si tu veux absolument le surveiller, tu peux simplement déplacer ce bloc de code plus bas, après la génération du fichier.
  • Quant au ynh_replace_string, idem, ce n’est nécessaire que si tu veux modifier un fichier par la ligne de commande. Ici ton fichier de configuration sera généré par ta requête cURL, donc ce bloc n’est peut-être pas nécessaire.
    • Imaginons que tu aies un fichier config.conf préparé pour être rempli avec les variables de l’utilisateur. Prenons l’exemple de $admin. Tu laisseras un __ADMIN__ dans le-dit fichier, au bon endroit, et tu appeleras la commande: ynh_replace_string --match_string="__ADMIN__" --replace_string="$admin" --target_file="$final_path/config.conf". Regarde ce que j’ai fait dans flarum_ynh/script/install et flarum_ynh/conf/configuration.yml
1 Like

Point d’étape L’installation fonctionne (depot testing)
Mais lors du lancement de l’application, YesWiki me renvoit à la page de configuration & d’installation… problème que je n’arrive pas à identifier dans les logs

Second point j’ai commenté ces lignes

#=================================================
# SETUP FAIL2BAN
#=================================================
#ynh_script_progression --message="Configuring fail2ban..." --time --weight=1

# Create a dedicated fail2ban config
#ynh_add_fail2ban_config --logpath="/var/log/nginx/${domain}-error.log" --failregex="Regex to match into the log for a failed login"

Elle bloquait l’installation mais je ne sais pas trop si j’ai bien fais…

Merci du coup de main =)

What is your dev environment ? ynh-dev, VirtualBox, other virtualization, a real server ?

It’s a Virtual machin (I’m usign virt-manager)

Ok, just to be sure, I just fixed an issue with fail2ban with system with a lot of banned IP. So I had a doubt you weren’t on a virtual machine.

fail2ban is not a priority, but that’s better to have it enable for your app when everything else is ok.

If your app shows the install page, that may means that the app does not consider the installation is done.
Sometimes, the install process removes the install dir, you can have a look to what the install page actually does.

I have a doubt about the process, especially about the Input and how it works. (line 233 here