From 9c4a7026b89f4a4a78b806c8f8fa0c272d412662 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Tue, 17 Mar 2020 12:49:54 +0000 Subject: [PATCH 001/135] add a mindmapping software --- apps_wishlist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps_wishlist.md b/apps_wishlist.md index ad106cd0..84ef23d2 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -149,3 +149,4 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Zoneminder](https://github.com/ZoneMinder/zoneminder) - [Zulip](https://zulipchat.com/) / [github](https://github.com/zulip/zulip) - [Yggdrasil](https://yggdrasil-network.github.io/) / [github](https://github.com/yggdrasil-network/yggdrasil-go) +- [WiseMapping](http://www.wisemapping.com/inyourserver.html) / [developpement](https://bitbucket.org/wisemapping/wisemapping-open-source) \ No newline at end of file From 4bac16827a4eb76239335aafab977b78afc8d749 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Thu, 19 Mar 2020 12:31:27 +0000 Subject: [PATCH 002/135] added omeka s --- apps_wishlist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps_wishlist.md b/apps_wishlist.md index ad106cd0..82e3812a 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -92,6 +92,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Nibbleblog](http://www.nibbleblog.com)/ [github](https://github.com/dignajar/nibbleblog) - [Nuage](https://nuage.kerjean.me/login) / [github](https://github.com/mickael-kerjean/filestash) - [Ombi](https://github.com/tidusjar/Ombi) +- [Omeka S](https://github.com/omeka/omeka-s) - [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar) - [OpenCart](https://www.opencart.com) / [github](https://github.com/opencart/opencart) - [openHAB](https://www.openhab.org/) - Smart home platform. / [github](https://github.com/openhab) From 1d25c263ae4ca366e938f949b4762e51caef874a Mon Sep 17 00:00:00 2001 From: Yunobot Date: Sun, 29 Mar 2020 01:20:21 +0000 Subject: [PATCH 003/135] le lien est mort :( --- email_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/email_fr.md b/email_fr.md index e1c2ca08..2a5ae7b7 100644 --- a/email_fr.md +++ b/email_fr.md @@ -47,4 +47,4 @@ Pour aller plus loin -------------------- - Il existe une page de documentation pour [migrer ses emails d'un fournisseur de messagerie vers une instance YunoHost](email_migration). -- Pour approfondir votre compréhension du courriel et de ses protocoles, voici une [conférence éclairante](https://www.iletaitunefoisinternet.fr/post/7-email-sonntag/)(en français). +- Pour approfondir votre compréhension du courriel et de ses protocoles, voici une [conférence éclairante](https://www.iletaitunefoisinternet.fr/post/7-email-sonntag/)(en français). lien cassé.... From 8e823b78abecd590e382e7cdd434d4e2300b22af Mon Sep 17 00:00:00 2001 From: Plumf Date: Mon, 30 Mar 2020 14:24:59 +0200 Subject: [PATCH 004/135] Adding pages & adding properties in the menu --- contributordoc_fr.md | 3 +++ doc_markdown_guide.md | 1 + doc_markdown_guide_fr.md | 1 + doc_use_git.md | 1 + doc_use_git_fr.md | 1 + doc_writing_guide.md | 1 + doc_writing_guide_fr.md | 1 + 7 files changed, 9 insertions(+) create mode 100644 doc_markdown_guide.md create mode 100644 doc_markdown_guide_fr.md create mode 100644 doc_use_git.md create mode 100644 doc_use_git_fr.md create mode 100644 doc_writing_guide.md create mode 100644 doc_writing_guide_fr.md diff --git a/contributordoc_fr.md b/contributordoc_fr.md index 57ad494d..9e786a76 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -2,6 +2,9 @@ * [Liste des façons de contribuer à YunoHost](/contribute) * [Écrire de la documentation](/write_documentation) + * [Guide de redaction de la documentation](dc_writing_guide_fr) + * [Guide markdown](/doc_markdown_guide_fr) + * [Propulser son code avec git & github](/doc_use_git_fr) * [Salons de discussion](/chat_rooms) * Packaging d'application * [Liste d'apps souhaitées par la communauté](/apps_wishlist) diff --git a/doc_markdown_guide.md b/doc_markdown_guide.md new file mode 100644 index 00000000..9fac816d --- /dev/null +++ b/doc_markdown_guide.md @@ -0,0 +1 @@ +# Markdown Guide diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md new file mode 100644 index 00000000..dadfab54 --- /dev/null +++ b/doc_markdown_guide_fr.md @@ -0,0 +1 @@ +# Guide Markdown diff --git a/doc_use_git.md b/doc_use_git.md new file mode 100644 index 00000000..fe2378d3 --- /dev/null +++ b/doc_use_git.md @@ -0,0 +1 @@ +# Propel your contribution with git diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md new file mode 100644 index 00000000..d35b179d --- /dev/null +++ b/doc_use_git_fr.md @@ -0,0 +1 @@ +# Propulser une contribution avec git diff --git a/doc_writing_guide.md b/doc_writing_guide.md new file mode 100644 index 00000000..699f4ce2 --- /dev/null +++ b/doc_writing_guide.md @@ -0,0 +1 @@ +# Guide to writing documentation diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md new file mode 100644 index 00000000..9552b945 --- /dev/null +++ b/doc_writing_guide_fr.md @@ -0,0 +1 @@ +# Guide de rédaction de la documentation des apps From 0928b203205202893ef5db2e2e3b0a8b3c6af1e8 Mon Sep 17 00:00:00 2001 From: Kay0u Date: Mon, 30 Mar 2020 16:19:47 +0200 Subject: [PATCH 005/135] Update Helpers --- packaging_apps_helpers.md | 309 +++++++++++++++++++++++++++++++++++--- 1 file changed, 284 insertions(+), 25 deletions(-) diff --git a/packaging_apps_helpers.md b/packaging_apps_helpers.md index 71cb32f7..3decc36c 100644 --- a/packaging_apps_helpers.md +++ b/packaging_apps_helpers.md @@ -411,7 +411,7 @@

- Dude, show me the code ! + Dude, show me the code !

@@ -1428,14 +1428,13 @@ ynh_exec_fully_quiet "your_command | other_command"
ynh_script_progression
-
Print a message as INFO and show progression during an app script
+
Print a progress bar showing the progression of an app script

- Usage: ynh_script_progression --message=message [--weight=weight] [--time] -The execution time is given for the duration since the previous call. So the weight should be applied to this previous call. + Usage: ynh_script_progression --message=message [--weight=weight] [--time]

@@ -1452,7 +1451,7 @@ The execution time is given for the duration since the previous call. So the wei -
  • -t, --time= : Print the execution time since the last call to this helper. Especially usefull to define weights.
  • +
  • -t, --time= : Print the execution time since the last call to this helper. Especially usefull to define weights. The execution time is given for the duration since the previous call. So the weight should be applied to this previous call.
  • @@ -1474,7 +1473,7 @@ The execution time is given for the duration since the previous call. So the wei

    - Dude, show me the code ! + Dude, show me the code !

    @@ -1511,7 +1510,7 @@ The execution time is given for the duration since the previous call. So the wei

    - Dude, show me the code ! + Dude, show me the code !

    @@ -1562,7 +1561,7 @@ The execution time is given for the duration since the previous call. So the wei

    - Dude, show me the code ! + Dude, show me the code !

    @@ -1610,7 +1609,7 @@ ynh_debug_exec "your_command | other_command"

    - Dude, show me the code ! + Dude, show me the code !

    @@ -1706,7 +1705,7 @@ ynh_debug_exec "your_command | other_command"

    - Dude, show me the code ! + Dude, show me the code !

    @@ -3392,7 +3391,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -3451,7 +3450,267 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code ! +

    + + + + + + + + +
    +
    +
    +
    ynh_permission_create
    +
    Create a new permission for the app
    +
    +
    +
    +

    + + Usage: ynh_permission_create --permission "permission" [--url "url"] [--allowed group1 group2] + +

    + +

    + Arguments: +

      + + +
    • permission : the name for the permission (by default a permission named "main" already exist)
    • + + + +
    • url : (optional) URL for which access will be allowed/forbidden
    • + + + +
    • allowed : (optional) A list of group/user to allow for the permission
    • + + +
    +

    + + + +

    + Example: ynh_permission_create --permission admin --url /admin --allowed alice bob +

    + + + +

    + Details: +

    + If provided, 'url' is assumed to be relative to the app domain/path if they
    start with '/'. For example:
    / -> domain.tld/app
    /admin -> domain.tld/app/admin
    domain.tld/app/api -> domain.tld/app/api

    'url' can be later treated as a regex if it starts with "re:".
    For example:
    re:/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
    re:domain.tld/app/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$

    Requires YunoHost version 3.7.0 or higher.

    +

    +

    + +

    + Dude, show me the code ! +

    + +
    +
    + +
    + + + +
    +
    +
    +
    ynh_permission_delete
    +
    Remove a permission for the app (note that when the app is removed all permission is automatically removed)
    +
    +
    +
    +

    + + Usage: ynh_permission_delete --permission "permission" + +

    + +

    + Arguments: +

      + + +
    • permission : the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
    • + + +
    +

    + + + +

    + Example: ynh_permission_delete --permission editors +

    + + + +

    + Details: +

    + Requires YunoHost version 3.7.0 or higher.

    +

    +

    + +

    + Dude, show me the code ! +

    + +
    +
    + +
    + + + +
    +
    +
    +
    ynh_permission_exists
    +
    Check if a permission exists
    +
    +
    +
    +

    + + Usage: ynh_permission_exists --permission=permission + +

    + +

    + Arguments: +

      + + +
    • -p, --permission : the permission to check
    • + + +
    +

    + + + + + +

    + Details: +

    + Requires YunoHost version 3.7.0 or higher.

    +

    +

    + +

    + Dude, show me the code ! +

    + +
    +
    + +
    + + + +
    +
    +
    +
    ynh_permission_url
    +
    Redefine the url associated to a permission
    +
    +
    +
    +

    + + Usage: ynh_permission_url --permission "permission" --url "url" + +

    + +

    + Arguments: +

      + + +
    • permission : the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
    • + + + +
    • url : (optional) URL for which access will be allowed/forbidden
    • + + +
    +

    + + + + + +

    + Details: +

    + Requires YunoHost version 3.7.0 or higher.

    +

    +

    + +

    + Dude, show me the code ! +

    + +
    +
    + +
    + + + +
    +
    +
    +
    ynh_permission_update
    +
    Update a permission for the app
    +
    +
    +
    +

    + + Usage: ynh_permission_update --permission "permission" --add "group" ["group" ...] --remove "group" ["group" ...] + +

    + +

    + Arguments: +

      + + +
    • permission : the name for the permission (by default a permission named "main" already exist)
    • + + + +
    • add : the list of group or users to enable add to the permission
    • + + + +
    • remove : the list of group or users to remove from the permission
    • + + +
    +

    + + + +

    + Example: ynh_permission_update --permission admin --add samdoe --remove all_users Requires YunoHost version 3.7.0 or higher. +

    + + + +

    + Dude, show me the code !

    @@ -4359,7 +4618,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4410,7 +4669,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4473,7 +4732,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4524,7 +4783,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4564,7 +4823,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4611,7 +4870,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4655,7 +4914,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4706,7 +4965,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4753,7 +5012,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4800,7 +5059,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4836,7 +5095,7 @@ Please always call this script in install and restore scripts

    - Dude, show me the code ! + Dude, show me the code !

    @@ -4847,7 +5106,7 @@ Please always call this script in install and restore scripts -

    Generated by this script on 07/11/2019 (Yunohost version 3.6.4.3)

    +

    Generated by this script on 03/30/2020 (Yunohost version 3.7.0.12)

    + \ No newline at end of file From d0f35af3b1cd0eff1187d6f12c72f959e3ab3d42 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 30 Mar 2020 18:13:41 +0200 Subject: [PATCH 006/135] Move comment about generation at the top --- packaging_apps_helpers.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packaging_apps_helpers.md b/packaging_apps_helpers.md index 3decc36c..476d7822 100644 --- a/packaging_apps_helpers.md +++ b/packaging_apps_helpers.md @@ -2,6 +2,7 @@

    App helpers

    +

    Doc auto-generated by this script on 03/30/2020 (Yunohost version 3.7.0.12)

    apt

    @@ -5106,9 +5107,6 @@ Please always call this script in install and restore scripts -

    Generated by this script on 03/30/2020 (Yunohost version 3.7.0.12)

    - - \ No newline at end of file + From e4d94d8d80f8d515e1001f992753cba03c1e742e Mon Sep 17 00:00:00 2001 From: Plumf Date: Mon, 30 Mar 2020 18:59:16 +0200 Subject: [PATCH 007/135] Add writing guide, git guide and markdown guide fr version final --- doc_markdown_guide_fr.md | 256 +++++++++++++++++++++++++++++++++++++++ doc_use_git_fr.md | 64 ++++++++++ doc_writing_guide_fr.md | 62 ++++++++++ 3 files changed, 382 insertions(+) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index dadfab54..1460bd59 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -1 +1,257 @@ # Guide Markdown + +**Index** + - [Les différents niveaux de titres](#NiveauxTitres) + - [Formatage dans les paragraphes](#FormatageParagraphe) + - [Créer des liens](#CreerLiens) + + [Créer des ancres](#LiensAncres) + - [Afficher des images](#AfficherImages) + - [Formater une citation](#FormaterCitation) + - [Les listes](#UtiliserListes) + + [Listes ordonnées](#ListesOrdonnees) + + [Listes non ordonnées](#ListesNonOrdonnees) + - [Les tableaux](#UtiliserTableaux) + - [Bloc de Codes](#BlockCodes) + +Le Markdown est un langage de balisage créé en 2004, de nombreux add-on développant les possibilités de ce langage existent. L'objectif de ce guide est de tendre vers l'exaustivité des possibilités de ce langage de formatage dans le cadre de la documentation de Yunohost et non du langage Markdown en général. + +Markdown permet de formater du texte à l'aide de balises, il permet une lecture *humaine* du texte ; même avec le formatage. Même si un unique bloc note est nécessaire il existe de nombreux logiciels markdowns (Markdown sur [framalibre.org](https://framalibre.org/recherche-par-crit-res?keys=markdown)). Sa prise en main est relativement facile. + +## Les différents niveaux de titres + +En rédigeant des titres comme suit : +```markdown +# Titre de niveau 1 +## Titre de niveau 2 +### Titre de niveau 3 +#### Titre de niveau 4 +##### Titre de niveau 5 +###### Titre de niveau 6 +``` + +Ils apparaissent comme cela : +# Titre de niveau 1 +## Titre de niveau 2 +### Titre de niveau 3 +#### Titre de niveau 4 +##### Titre de niveau 5 +###### Titre de niveau 6 + +## Formatage dans les paragraphes + +Pour taper un retour à la ligne sans créer de nouveau paragraphe, il est nécessaire de taper **deux espaces consécutifs**.Sans cela, le texte continuera à la suite en respectant les contraintes générales du style de la page. + +En rédigeant ça : + +```markdown +Pour du texte en *italique il faut encadrer par un astérique`*`* +Pour rédiger du **texte en gras par deux astériques** +On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` +``` + +On peut lire ça : + +Pour du texte en *italique il faut encadrer par un astérique `*` * +Pour rédiger du **texte en gras par deux astériques** +On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` + +## Créer des liens + +Pour créer un lien vers un site hors de la documentation de Yunohost : + +```markdown +[Texte à afficher](https://lelien.tld) +``` + +s'affichera comme tel : +[Texte à afficher](https://lelien.tld) + +C'est identique pour les pages de la documentation, excepté que le lien est interne. Il renvoie au fichier du wiki, sans extension de fichier (le `.md`) : +``` +[Page du wiki](write_documentation_fr) +``` +[Page du wiki](write_documentation) + +### Créer des ancres +Une ancre permet de faire un lien vers un point précis dans une page, c'est comme ça que fonctionnent les index en haut de page. Pour créer une ancre, il faut insérer du code à l'endroit de l'ancre sous la forme suivante : + +``` +Du texte qui sera ne sait même pas qu'il a une ancre +``` + +Ce qui s'affiche : +Du texte qui sera ne sait même pas qu'il a une ancre + +Il ne reste plus qu'à désigner l'ancre au texte que l'on souhaite rendre interactif : + +``` +[Mon titre qui renvoie](#NomDeLAncre) +``` + +[Mon titre qui renvoie](#NomDeLAncre) + +## Afficher des images + +Pour afficher des images, le principe est identique aux liens, excepté l'ajout d'un `!` avant le texte à afficher qui est ici considéré comme le texte à afficher en cas d'impossibilité de chargement de l'image. Une description de l'image convient. + +``` +![Logo Yunohost](/images/logo.png) +``` +![Logo Yunohost](/images/logo.png) + +Il est possible de faire un lien avec une image, exemple : +``` +[![Logo Yunohost](/images/logo.png)](write_documentation) +``` +[![Logo Yunohost](/images/logo.png)](write_documentation) + +L'encart de *texte à afficher en cas d'impossibilité de chargement de l'image* n'est pas obligatoire mais fortement recommandé. + +## Formater une citation + +Les citations permettent de mettre en valeur un propos tenu par une autre personne, le wiki gère lui même la façon dont c'est valorisé. Markdown utilise un chevron fermant, ce symbole : `>`, pour annoncer une citation. Il suffit de les rajouter avant la citation, comme tel : +``` +>Du texte de citation du premier niveau +>qui peut être formaté en différentes lignes + +>> Et une seconde citation +>> avec des doubles chevrons +``` +S'affichera : + +>Du texte de citation du premier niveau +>qui peut être formaté en différentes lignes + +>> Et une seconde citation +>> avec des doubles chevrons + +## Les listes + +Les listes permettent d'afficher une suite de textes dans une présentation facile, c'est ainsi que sont rédiger les index tels que celui de la page de la [documentation contributeur](contributordoc). + +### Listes ordonnées + +Les listes ordonnées peuvent s'incrémenter autant que vous le désirez, il n'est pas obligé de donner la bonne correspondance au nombre. Il est possible de noter avec des `1.` comme des `7.` et installer trois espaces pour marquer l'incrémentation. Pour une meilleure compréhension du texte brut, il peut être bien d'utiliser les chiffres de manières croissantes pour marquer l'incrémentation, mais c'est bien les trois `espaces` conséquents avant la sous-liste qui désigneront l'incrémentation. + +``` +1. Liste 1 +1. Liste 2 +1. liste 3 + 1. Liste 3a + 1. Liste 3b + 3. Liste 3b1 + 3. Liste 3b2 + 3. Liste 3b3 + 4. Liste 1 + 4. Liste 2 + 4. liste 3 +1. Liste 4 +1. Liste 5 +1. liste 6 +``` + +On obtient : + +1. Liste 1 +1. Liste 2 +1. liste 3 + 1. Liste 3a + 1. Liste 3b + 3. Liste 3b1 + 3. Liste 3b2 + 3. Liste 3b3 + 4. Liste 1 + 4. Liste 2 + 4. liste 3 +5. Liste 4 +3. Liste 5 +4. liste 6 + +### Listes non ordonnées + +Pour créer une liste non ordonnée, il faut utiliser les symboles `*`, `+` ou `*`. Cela ne changera pas l'apparence du marqueur dans la restitution du texte. C'est l'incrémentation de la liste qui définira le visuel. Pour une meilleure lecture du texte brut, il peut être bien d'utiliser les différents symboles pour marquer l'incrémentation, mais c'est bien les trois espaces avant la sous-liste qui désigneront l'incrémentation. +Comme tel : +``` ++ Liste 1 ++ Liste 2 ++ liste 3 + - Liste 3a + - Liste 3b + * Liste 3b1 + * Liste 3b2 + * Liste 3b3 + + Liste 1 + + Liste 2 + + liste 3 +- Liste 4 +* Liste 5 ++ liste 6 +``` + +Ce qui affichera : ++ Liste 1 ++ Liste 2 ++ liste 3 + - Liste 3a + - Liste 3b + * Liste 3b1 + * Liste 3b2 + * Liste 3b3 + + Liste 1 + + Liste 2 + + liste 3 +- Liste 4 +* Liste 5 ++ liste 6 + +## Les tableaux + +Pour créer un tableau, il faut utiliser la barre verticale `|` et les tirets `-`. Il est obligatoire d'ajouter une ligne de tiret sous la première ligne du tableau. Il n'y a aucune contrainte dans la taille de ce dernier. Il est possible de formater le tableau avec les `:` dans la seconde ligne du tableau, trois options s'offrent à vous : + +| Colonne alignée à gauche | Colonne centrée | Colonne alignée à droite | +|:-------------------------|:---------------:|-------------------------:| +|`:-----` | `:----:` | `-----:` | + +``` +| **Un tableau** | Une colonne | Une seconde | Autant que l'on veut | +|:--------------:|:-----------:|:-----------:|:--------------------:| +| Une ligne formatée | | Et du **texte en gras** | Ou en *italique* | +| D'autres lignes | |![une image](/images/cd.jpg) | [Ou un lien]( contributordoc) | +``` +Ce qui afficherait ça : + +| **Un tableau** | Une colonne | Une seconde | Autant que l'on veut | +|:--------------:|:-----------:|:-----------:|:--------------------:| +| Une ligne formatée | | Et du **texte en gras** | Ou en *italique* | +| D'autres lignes | |![une image](/images/cd.jpg) | [Ou un lien]( contributordoc) | + +## Bloc de codes + +Pour afficher du texte en brut, des `blocs de codes` peuvent être créer : + +```` +Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` +``` +ou directement en bloc. +La seule différence est dans la quantité de : ` +Minimum ``` en ouverture et fermeture de bloc et deux ` qui encadre le morceau de texte à formater dans une ligne +``` +```` + +Ce qui donnera au rendu : + +Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` +``` +ou directement en bloc. +La seule différence est dans la quantité de : ` +Minimum ``` en ouverture et fermeture de bloc et deux ` qui encadre le morceau de texte à formater dans une ligne +``` + +## Liens utiles + + + La documentation du langage originel Markdown : [daringfireball.net/projects/markdown (en)](https://daringfireball.net/projects/markdown/) + + Tutoriel Markdown sur [markdowntutorial.com (en)](https://markdowntutorial.com) + +## Aller plus loin + +De manière plus général, pour comprendre comment est formaté un texte il suffit juste d'inspecter le document source avec une application note. Ce n'est pas pour autant que le wiki de YunoHost pourra l'exploiter. Il existe bien d'autres possibilités d'utiliser la syntaxe markdown, n'hésitez pas à ajouter des fonctionnalités manquantes. Si vous avez observé des manques et/ou que vous avez des questions, contactez-nous sur [le forum](https://forum.yunohost.org) ou par message directe sur le salon IRC : **#yunohost** sur [irc.freenode.net](https://irc.freenode.net). diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index d35b179d..30913d8c 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -1 +1,65 @@ # Propulser une contribution avec git + +**Index** + - [Création d'un compte sur github.com](#CreationCompteGithub) + - [Forker la documentation de YunoHost dans votre dépôt personnel](#ForkerDocumentationYunoHost) + - [Modifier les fichiers et ajouter vos contributions](#ModifAjoutContrib) + - [Envoyer vos contributions avec une Pull Request](#EnvoyerPR) + - [Suivre votre contribution et prendre en compte les retours des contributeurs·trices](#SuivreContributions) + - [Faire remonter des erreurs et des souhaits en créant une issue](#RemonterIssues) + - [Corriger et inspecter les contributions](#ReviewContrib) + - [Aller plus loin avec git et travailler en local sur son ordinateur](#PlusLoinGitOrdi) + - [Quelques ressources sur le web](#LiensWeb) + +Il est bien sûr possible de contribuer directement sur la documentation de Yunohost, mais ce n'est pas la manière la plus pratique de le faire tant pour le/la contributeur·trice que pour la personne qui va injecter votre contribution dans la documentation. Voici un tutoriel pour comprendre et créer une contribution à la documentation de Yunohost en utilisant l'outil [git (en)](https://git-scm.com/) et [github.com](http://github.com/) qui est le service de forge git qui héberge et stocke le code source de Yunohost ainsi que sa documentation. + +## Création d'un compte sur github.com +Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur github, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. Github est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. +Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utiliser un pseudonyme (lors de l'inscription `Username`). + +*/iframe video creer compte github /* + + +## Forker la documentation de YunoHost dans votre dépôt personel +Forker le code source permet de créer une nouvelle branche de développement d'un code source de logiciel ou dans le cas présent, le code source de la documentation. En créant une nouvelle branche, cela vous permet de modifier le code et d'ajouter vos contributions sans altérer le code de la branche `master` qui est le rendu public de la documentation. Ce qui vous permet de ne pas devoir tout marquer mais le faire en plusieurs étapes. (Notamment pour les contributions demandant plus de temps de travail). + +Forker un projet sur github est extrêmement simple, il suffit ce cliquer sur le bouton Fork, cela créera un nouveau dépôt sur votre espace de github. +![Capture d'écran bouton fork github](/images/dug_fork.png) +Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dépôt, dans le cas présent `YunoHost/doc` +![Capture d'écran titre et sous-titre du dépot](/images/dug_fork_source.png) + +*/iframe video forker code source github /* + + +> **Point de vigilance !** +> Si vous forkez le dépôt d'un autre contributeur que yunohost, vous aurez les mêmes fichiers. Sauf que quand vous enverrez vos modifications, elles seront envoyées au contributeur et non au dépôt yunohost. L'avantage est que ça vous permet de développer une autre branche créee par le contributeur et ainsi travailler avec une autre personne à une amélioration avant proposition au dépôt principal. +> Il n'est pas possible d'avoir un fork du dépot d'un contributeur et le fork dépôt d'origine au même moment dans votre propre dépôt. + +## Modifier et ajouter votre contribution +Une fois le dépôt forker (copié), il faudra créer une nouvelle branche de développement au sein de votre dépôt. C'est à travers cette branche que vous allez modifier les fichiers et ainsi proposer des améliorations de la documentation. Le fait que ce soit une nouvelle branche vous permettra par la suite de faire une Pull Request, c'est à dire une demande d'ajout de vos contributions au sein de la branche `master` qui est la branche principale de la documentation. Les règles de développement sur github change selon les développeurs de chaque dépôt, certains ont une branche testing dans laquelle il faut proposer les contributions. +Plus d'informations sur qu'est une branche sur git-scm.com : [Les branches avec Git - Ce qu'est une branche](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). + +*/iframe video modifier fichiers ajouter contribution /* + +## Envoyer votre contribution par une Pull Request +Faire une Pull Request correspond au moment ou vous souahitez partager votre travaille avec le reste des contributeurs⋅trices et l'intégrer au dépot master (dépôt principale de Yunohost). Lors de la publication d'un Pull Request, couramment nommé PR, les contributeurs⋅trices pourront amender, commenter, ajouter, corriger votre contribution avant intégration complète au dépot. + +## Suivre votre contribution et prendre en compte les retours des contributeurs·trices +Lorsque vous avez déjà fait une PR (Pull Request), les modifications de votre branche de développement sur le dépôt git se rajouteront automatiquement à la PR. Cela ne nécessite aucune action supplémentaire. Vous pouvez aussi intégrer les propositions de modifications de contributeurs, qui lorsqu'ils/elles auditeront le code, peuvent trouver des erreurs ou de nouvelles formulations plus adaptées. + +## Faire remonter des erreurs et des souhaits par des issues +YunoHost dispose d'un dépôt git spécifique pour le recueil des issues : [github.com/YunoHost/issues](https://github.com/YunoHost/issues) +Une issue aussi appelé ticket, est un problème identifié ou alors un souhait de développement ; dans le cas présent pour la documentation, mais c'est valable pour tout dépôt logiciel. Dans le cadre de la documentation de YunoHost il sera surtout proposé des issues pour le développement de la documentation, les problèmes identifiés étant facilement corrigeable. + +## Aller plus loin avec git et travailler sur son poste de travail +Utiliser la puissance de git et ainsi travailler sur son ordinateur personnel, permet entre autres de ne pas avoir à créer de `commit` à chaque enregistrement intermédiaire des pages de documentations modifiées. Cela permet aussi d'utiliser des outils et logiciels qui permettent une distinction plus facile des codes utilisés dans une page de documentation. + +- Ressource en ligne : [docs.microsoft.com - Configurer un référentiel Git localement pour la documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) + +## Quelques ressources ailleurs sur le net pour aller plus loin + - [Gérer son code avec git et github - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) + - [Interface utilisateurs·trices de git - git-scm.com](https://git-scm.com/download/gui/linux) + +*/ To do/* +*/Ajouter vidéos explicative - Add videos explication/* +*/Ajouter ## Corriger et inspecter les contributions /* diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index 9552b945..4a03a54e 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -1 +1,63 @@ # Guide de rédaction de la documentation des apps + +## Pages de documentations utilisateurs.trices / administrateurs⋅trices + +Ajouter un bouton installer en un clique (comme par exemple : https://yunohost.org/#/app_piwigo_fr) + +Classement des applications disponibles par tags (genre, Git, gestion associations, courriels, etc.). + +*/Définition d'une license de diffusion de la documentation, mais laquelle ? Permissive ou non (CC By-Sa)/* + +## Quelques usages types et d'ordres général (trame de rédaction) + + + Lorsqu'un lien renvoi vers une page qui n'est pas dans la langue de la page d'origine, il est d'usage d'ajouter `(en)`(Pour un lien qui pointe vers une page en anglais). + +### Trame général documentation applications + + 1. Un index en tête de documentations avec renvois vers l'ensemble des chapitres de la documentation. + 1. Bouton installer en un clique. + 1. Une présentation général de l'application et de sa fonction. + 1. Une partie administration de l'application. + 1. Une partie aller plus loin, Manipulations techniques liés spécifiquement à Yunohost. + 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des apps officiels sont fournis. + + Une partie avec : + - les liens vers le site officiel + - Les liens vers le package de yunohost + 1. Documentation de l'utilisation si besoin (cf. Documenter une application). + +## Feuille de route + +1. Documenter les applications. + 1. Documenter les applications au travail (marqué : work) niveau 8/7/6. + 1. Traduire la page de documentation à minima en français et en anglais. + 1. Faire une PR sur le dépot de l'app concerné vers la page de documentation. + +## Documenter une application + +Faut-il documenter son utilisation ? + +``` +La documentation de l'application est elle disponible en français & en anglais ? + / \ + / \ + / \ + / \ + / \ + ------- ------- + | Oui | | Non |----> Documenter l'application <----<----<----<----- + ------- ------- dans la documentation de YunoHost | + | | + La documentation utilisateur est elle de bonne qualité et suffisante ? | + / \ | + / \ | + / \ | + / \ | + / \ | + ------- ------- | + Renvoi dans la page de doc ------- | Oui | | Non |---->---->---->---->---->---->---->---->---->---->---->---->---->- +YunoHost vers le site officiel ------- ------- +``` + +## Potentielles problématiques rencontrés ? + +Quid des apps qui sont des containers à d'autres applications, tel que Nextcloud et qui présentes de multiples possibilités d'usages. From 9d37a75daa41a8cde087687a6ce692a03ba16eee Mon Sep 17 00:00:00 2001 From: Antoine <27826950+Antoine-lb@users.noreply.github.com> Date: Mon, 30 Mar 2020 19:19:54 +0200 Subject: [PATCH 008/135] Fix SFR (ISP) source link --- isp_sfr_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/isp_sfr_fr.md b/isp_sfr_fr.md index 9b159b56..43c311fb 100644 --- a/isp_sfr_fr.md +++ b/isp_sfr_fr.md @@ -11,4 +11,4 @@ Pour pouvoir envoyer des mails, il faut désactiver le filtrage. -Source : http://assistance.sfr.fr/internet_box-nb4/utiliser-email/desactiver-filtrage-smtp/fc-2491-69602 +Source : https://assistance.sfr.fr/sfrmail-appli/sfrmail/envoyer-e-mail-serveur-smtp.html From 7d699f1279d7cd31b05766eecfe88dd2a00b316f Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Tue, 31 Mar 2020 10:55:57 +0200 Subject: [PATCH 009/135] Update doc_writing_guide.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide.md | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/doc_writing_guide.md b/doc_writing_guide.md index 699f4ce2..ec2e62da 100644 --- a/doc_writing_guide.md +++ b/doc_writing_guide.md @@ -1 +1,37 @@ -# Guide to writing documentation +# Guide to writing application documentation + +## Pages for user / administative documentation + +Add a one-click installation button (like for example: https://yunohost.org/#/app_piwigo) + +Classification of the application can be done using the available tags (genre, Git, management association, e-mails, etc.) + +*/Find a suitable documentation license. Permissive or not? (CC BY_SA)/* + +## Clarify the types of uses it has (special and general application (editorial choice) + + + For links to other languages, add (en)` for Egnlish, and so on. + +### Things to include in application documentation + + 1. An index of what is included, without reiterating the full content of what is to be found in subsequent chapters. + 1. A one-click install button. + 1. A general presentation of the application and its function. + 1. A section detailing administration of the application. + 1. A further section on changes specific to YunoHost. + 1. A section about the desktop client (if applicable). Links to different third party applications (if they exist), (or a link to a list of applications [framalibre.org](https://framalibre.org)) or a link to a page that has to do with the different official applications (if applicable). + + A further section: + - Links to the official website. + - Links to the package in YunoHost. + 1. Documentation of any further uses (documentation of an application). + +## Roadmap + +1. Documentation of the applications. + 1. Document how the application operates in use (marked: work) level 8/7/6. + 1. Translate the documentation at-least into French and English. + 1. Send a PR to the repository of the app that details its documentation. + +## Document an application + +Do you need to detail how it works? From 4f6e6ac4959fff412fc779fdb421bf944d165113 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Tue, 31 Mar 2020 10:56:12 +0200 Subject: [PATCH 010/135] Update doc_writing_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index 4a03a54e..4b319e91 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -22,7 +22,7 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des apps officiels sont fournis. + Une partie avec : - les liens vers le site officiel - - Les liens vers le package de yunohost + - Les liens vers le package de YunoHost 1. Documentation de l'utilisation si besoin (cf. Documenter une application). ## Feuille de route From 02315d91608af603e936ef070aaba451115d58a0 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Tue, 31 Mar 2020 10:57:38 +0200 Subject: [PATCH 011/135] Update contributordoc_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- contributordoc_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index 9e786a76..ab1aef6a 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -4,7 +4,7 @@ * [Écrire de la documentation](/write_documentation) * [Guide de redaction de la documentation](dc_writing_guide_fr) * [Guide markdown](/doc_markdown_guide_fr) - * [Propulser son code avec git & github](/doc_use_git_fr) + * [Propulser son code avec Git & GitHub](/doc_use_git_fr) * [Salons de discussion](/chat_rooms) * Packaging d'application * [Liste d'apps souhaitées par la communauté](/apps_wishlist) From ae333dd1f7eecbffb541a71d15391272c2055ad5 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Tue, 31 Mar 2020 10:58:06 +0200 Subject: [PATCH 012/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 30913d8c..cc2dd952 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -8,7 +8,7 @@ - [Suivre votre contribution et prendre en compte les retours des contributeurs·trices](#SuivreContributions) - [Faire remonter des erreurs et des souhaits en créant une issue](#RemonterIssues) - [Corriger et inspecter les contributions](#ReviewContrib) - - [Aller plus loin avec git et travailler en local sur son ordinateur](#PlusLoinGitOrdi) + - [Aller plus loin avec Git et travailler en local sur son ordinateur](#PlusLoinGitOrdi) - [Quelques ressources sur le web](#LiensWeb) Il est bien sûr possible de contribuer directement sur la documentation de Yunohost, mais ce n'est pas la manière la plus pratique de le faire tant pour le/la contributeur·trice que pour la personne qui va injecter votre contribution dans la documentation. Voici un tutoriel pour comprendre et créer une contribution à la documentation de Yunohost en utilisant l'outil [git (en)](https://git-scm.com/) et [github.com](http://github.com/) qui est le service de forge git qui héberge et stocke le code source de Yunohost ainsi que sa documentation. From f45292ac24bb2855594baa2059584f4ba1878942 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Tue, 31 Mar 2020 11:02:30 +0200 Subject: [PATCH 013/135] Update doc_writing_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index 4b319e91..193b8538 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -18,7 +18,7 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio 1. Bouton installer en un clique. 1. Une présentation général de l'application et de sa fonction. 1. Une partie administration de l'application. - 1. Une partie aller plus loin, Manipulations techniques liés spécifiquement à Yunohost. + 1. Une partie aller plus loin, Manipulations techniques liés spécifiquement à YunoHost. 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des apps officiels sont fournis. + Une partie avec : - les liens vers le site officiel From 083d694b359a21515bf569adf99f6afec5a3fd3e Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Tue, 31 Mar 2020 11:02:46 +0200 Subject: [PATCH 014/135] Update doc_markdown_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 1460bd59..bc2e2e86 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -57,7 +57,7 @@ On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` ## Créer des liens -Pour créer un lien vers un site hors de la documentation de Yunohost : +Pour créer un lien vers un site hors de la documentation de YunoHost : ```markdown [Texte à afficher](https://lelien.tld) From 7175e2c10cecbc9332576d743c5da3c1073e25a0 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Tue, 31 Mar 2020 09:12:59 +0000 Subject: [PATCH 015/135] Italian translation inserted --- install_on_debian_it.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 install_on_debian_it.md diff --git a/install_on_debian_it.md b/install_on_debian_it.md new file mode 100644 index 00000000..e306592d --- /dev/null +++ b/install_on_debian_it.md @@ -0,0 +1,23 @@ +# Installazione su Debian + +*Altri sistemi per installare Debian **[qui](/install)**.* + +### Requisiti + + + +Su un computer ARM, un VPS, un server dedicato, un computer x86 standard, un vecchio Macintosh, ... + +* con **Debian 9** (Stretch) installato (con un kernel >= 3.12) + * l'immagine ISO di Debian 9 può essere scaricata da [qui](https://www.debian.org/releases/stretch/debian-installer/). Scegli l'immagine 'netinst CD' per la tua architettura. + * N.B.: l'uso di un'interfaccia grafica *non* è raccomandato! I server dovrebbero essere amministrati da remoto! +* connesso ad Internet +* con un **accesso root** diretto o via SSH + +--- + +## Passi per l'installazione + +1. Installazione manuale + +2. Post-installazione \ No newline at end of file From 11d94d02866a5967e61215dbc5f7c343ced40db8 Mon Sep 17 00:00:00 2001 From: Antoine Date: Tue, 31 Mar 2020 17:39:25 +0200 Subject: [PATCH 016/135] Fix path to get private IP in the web admin --- dns_local_network.md | 2 +- dns_local_network_es.md | 2 +- dns_local_network_fr.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dns_local_network.md b/dns_local_network.md index 67497faf..b5653f4e 100644 --- a/dns_local_network.md +++ b/dns_local_network.md @@ -12,7 +12,7 @@ You may retrieve your server private IP adress through different means: - Using Yunohost administration panel: - Go to "State of the server" > Network + Go to Tools > State of the server > Network - Or using your router or internet box, depending on model. diff --git a/dns_local_network_es.md b/dns_local_network_es.md index 045d4b4d..1226cde4 100644 --- a/dns_local_network_es.md +++ b/dns_local_network_es.md @@ -12,7 +12,7 @@ Puedes descubrir la dirección privada de tu servidor de varias maneras : - Desde la interfaz de administración de tu servidor Yunohost : - en Estado del servidor > Red + en Herramientas > Estado del servidor > Red - O desde tu router o tu caja Internet, dependiendo de su modelo. diff --git a/dns_local_network_fr.md b/dns_local_network_fr.md index 427ae87c..bcea9e28 100644 --- a/dns_local_network_fr.md +++ b/dns_local_network_fr.md @@ -12,7 +12,7 @@ Vous pouvez retrouver l’adresse privée de votre serveur de différentes mani - Depuis l’interface d’administration de votre serveur YunoHost : - dans État du serveur > Réseau + dans Outils > État du serveur > Réseau - Ou depuis votre routeur ou votre box, selon son modèle. From 7f208feda6e5b7b01fb37e33d1293c11f514aa50 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Tue, 31 Mar 2020 20:21:54 +0200 Subject: [PATCH 017/135] Add git documentation --- images/github_branch.png | Bin 0 -> 42865 bytes images/github_commit.png | Bin 0 -> 25815 bytes images/github_edit.png | Bin 0 -> 19447 bytes images/github_pull_request.png | Bin 0 -> 14374 bytes packaging_apps_git.md | 85 +++++++++++++++++++++++++++++++++ 5 files changed, 85 insertions(+) create mode 100644 images/github_branch.png create mode 100644 images/github_commit.png create mode 100644 images/github_edit.png create mode 100644 images/github_pull_request.png create mode 100644 packaging_apps_git.md diff --git a/images/github_branch.png b/images/github_branch.png new file mode 100644 index 0000000000000000000000000000000000000000..47987fb2b6e84283f09fbf6fd9f177f173a7e4e0 GIT binary patch literal 42865 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 literal 0 HcmV?d00001 diff --git a/images/github_commit.png b/images/github_commit.png new file mode 100644 index 0000000000000000000000000000000000000000..d299c878ed36953eaa075fdc5a628be3945a8458 GIT binary patch literal 25815 zcmeFYcT|&G_Xda!t{|e)lzJ(mbVPbp5HR%Ki_$wtCzOb&h=_C$DM5M%snP|c_bwel z2qc8iLa1R*y!W?ezTf(0)|$U(G#GsIz9*;bv-h)~{hV-3btQ6AI#MDcB67&nC)z|r zmy(HyE*Skq46fW_K{bFkVoMdJCq(CjzZp$=ap1~T_oqglL_~aSgr5t3IkG^y$Udw+>Fk?}hd7Vw&8p-qTnxVFw){A~Js0 ziuP%6APkG>k&3|RWx_8+avX$zUq)Xgy!~x`k?=Om?x{mhm6TXi)z6pIr{Hvfa8c@m zV%F(dAk{hsWi+`yWQ7TuxBpwm z{sJol{@f7!)7)#-KmTK)B)mQ9mSRY%{7my_01N@$JUl$Q&t5X~{%K9DCfdl*@IHj} z`t{s5e;!g|7QFh2@Y_q8tI3!DH1sIqwd%z`vyq`7$8q6LtHZ1;aWDT&js4eX$e&9@ z#yr+cpIW5^vi@BEt`(-bv6NGB`Oh%EKL}HO^=}*U9FHqk=g*hg-$!U@ng+g#jnh#- zSt0cA~7}0 zDx~l_>|8_W^!=iN<7%O>1TM95;;VdsA}gV>v4_@7Wf^rrUF!4hedyl){=(Y14KK&p z1IC$}ps+RAc1-&D&=_5^*lCshTo}`*93$M^UC8dxo>R(%@T-`$N(N}6Knd-$-j%Jqy`k@-*m)Uz->LZ3@`J)%Vypk0&#B;=cAS1baH z>C0Nwv>FmKk)|Ye>>XE0 zh_5>N7C$!J6f;)ZsGrpdU!7j-G_k$UC-YeLtm0db4-Ys0ROL`hekBLIEdA=G3Ew3F zGk-MJxXuy#9QWXMLShRG z3%#)WDOJz`;~^i8I0z?a0rX_v{}_pK+ut%ND{?ZWg~Sfn?p+=;Kr|QR!Gjhm7nkq0 zICl02>?0hKHhw8F<9HS;yi;<`q|H=7`69h{7k<)5rrZE;$d^_evcAU*I@%S>QZD!3Q8pqG^0evK5G#>R#5<3bSaCw||KIrd%MB|}>? zBJ#|au6~N$U+yb|URSsr4(?h+kmA{AFIp%%`4iIe!q`*9V4;t#ScdEjV+EHSj zY%7x~qIF*k!Ynzj?eRBnUi}11_eq{CG0k072__iM2eQzeC4s=>WQ0_o1$-}-CU7U5 z=KL^iIbdJY#wG`kkAg83&q`vHW5JbS{^q7vZJQf|0jnRJGC9mP5AnrV_^Z z#=38Y(}{SM8tH;uT3h@nr9p`NqepAJ4yB7&?>ImQpSa;R=+&z_BRj~%CT~< zLWNf*Q*0`ysctfrlGx5?$)>?d2gL(owYA46rg5VxxyaFoyh4*HG3nE#v)#RtAR?{N zt2O?Td3@+ z92m7}fyAB$26U1R5H4c7nTVDMADJ#u7{yQP<*&7Soz79z8WRwMv|d znwrjYtr+$K-=Xv{Q_ES=FHyl~E_Lh#iiZl*jVDB ztejqP8V83BF3y6cs;U57sbI2dx_2lE`S{Y~OB4;5^%yoOxQj@NgqMBUfJseZe*VwO zz@?Y?-hsX`{)i+(R7y`)${M+!)R$9;L=yKgi7zkdye!d2vDnbkCgo>l%EgX9Y*uOt z`y0EyU}kP^o^A!vHip)39?YOCJw3e7)N1`Fsi~Qz7E5MpxNFQlbVf3k%m*BB-4#|N z_;Ry)Fa7i8t8_BX?>Iit_i2cNfxAn*?JpnJymO7XZr(K~$4)4qCH4%5g2cA8EV7_b z&9}0viZ`RNt&bn451E^jU}B`)dz@SZD*R-aw<>xQxe$iqE@ZM6Eo?KQLhRWKIGKfo zuvA3Ap6u|7hRoft_UTL;S{laGj)R?@g7Yqt(8s~S%~&~GfB!m!=i|pA!A2ETtt)GY zsX^nx#uXnuJv~%tl#IT&cXe#64>zYnt<3SE&YQPy*OOt=Bfo9B32S9+)V;s6qi>ot zI8(|+ zpck@~m;&TnYfaK5y~iVlq_aLU&h!C4rUbvBBy@7Bx`Oe6( zjq&uR6Kla_ug=#m>M>i%$G_YCq1*Tq_KD`}cC$5%r}3A-VDe158&5|gsHbuc(tChu zIgI+#uD_Wsvu|y4!wv@Qd1Jjrk;w>0i^^XJ1Yv%-fcIA6Pv(LEzldG8(&%aI65^;nPkBUBT0C5uirJ^AzN>y5$c zLJ#U_s{t}YFH|Z8L2**co>xgp_X8Iyec{Q^^Y^sz)COfAzn|xWzjt^S;i=N(Rf6RHo;?ff=v!L9SH*b0ed$iiV zKbLUYJ%Sz_B}s++MEgvotX?N0Tg_ttQy>BH?(!>DwWHuBJ!&eeiBJ{_MOr+ zXJ*Q||9pvUK48kit7A2Z$p_xBmHK7TpmcO0s0Vr$S&Kbr*h9|CAAK)Ap<<-={(%s* ze*^;?;l6CkBQg;9)lx*cCGQ!aEi=8(stue5QEvCy*mMZs#||F6`>wAAyGCE-HSOjh zk@gvfSNeS33IoAmqRj18TYFo4N|HfKIxP8%O`iebvGZeGC3I)i;I~JebY;f5FGlsv zWfGNGzI15FLdto_Lg0y6(Eg$Z6%|!>?5Ot8iRh4oRT~S%YXT5=54@u>9>O~NWPL1Z zZKL2G{>#@aB~B?GRhkH+g@py=q_Dc^ynxvv|6#>KfDmB@gIDzCWl>C6W1L1#iwiaIivmY$h;{eth$^zlRShR+@_pPDGy+rN`J zb8iNXhi7JG>YAaWr>#fJzl35tiz>ZG-q8BhoXuLCYedN&mlI!K=P#Nl+)QPdcGkzD zQZfj6!ujb5B)IJl&goxr{VmZQzwg|kSoslpqinBDtt(r<&j2{i5ME5D-x6EJ7c71>9Vv-EY18dV_9C0Uju( zkz_8V_w_4U*Hk;Ru+Y&PGpY9w^DXU9ww7x9spn7P$3SWOPp;T?<$uz|KiB^=gZwwG z{BIfOqwfFP`(IMF2eMv|O-#;;9rX}TQ#U5;H6ryl0`?-@?DsWeZnBhcTj$!Wf!L=V zbMuQJ-L=@c{Xe;3sxEQeoa-trRS$2{jNcJ?|WWFR7no5XbmKJysUwZt{O}5{?8s<+bKO3LcDDH(9ynPHl^O&%>HLaBkL6dPZ)RpY^9}i)UDwkwd%I*+ zfvd*V5w1lbmM|UoDP}#UDN=ae%7Pq!p#M1J0=A|oKYuiNMG-pq>*a@jo)V)LBQptK z&8SkdkB6s(*_PTgs(L{@z z+mMf$gtw-%>Nv}ZNikObnWORBOjfq|n1rl!>3XJHwdbly9FDz@xX3rB zlww@kD12(Bv-kUXyx+MPxSj8Ra5mxzyZ&Y^osjAhRrN+2>6w*aV5XVPO)J%+cl8ny z^mY#pMqj>O*xlJlWT&R0aac)oshH)aW}wO+9$tdlP|;93p+1^%adIY%*y~!S{Dno1 zsBy$;wVX8@zj@PPY*GPnnSGLPA;%Ab!c2vC9_jmtyS3xFYTu53_{Q~EOKkcZ^KkeF z`1?2G0J4azRHPRn#E*lkEtWP=6_{AmjD0T~bnNItH)quPL6vBw}gmyr;itv6wNP z0G%;i*IMpj*+)&w4Gw#gj9j%zeU@MCpDoG^Y;hB&p+uvo{@&grF_oe2(e2ht-km>V zcK5Io^=c;U5MaYalP;Pm+wN+q0><+VKKdTYpY33^vn6^ck^5rzHSHpqOK!FkbMnht zoM>yaL)ycx#dlb0oxff{CJn0q=)*nb99twLh9!WoxO+FpLsyb|sxB08Wv@anPSmKq_SoH(V)6D`)=XBjy%VW;bbNRp ze7}N14ms1kmhz{ot3Hu*GKL@{2e0{MiH+LDsrz3HqHGu0jLluA2BiZgIHZafWM+N0 zMn0MaP)y_dUt~#PRUmzuUb@-roE(KEfF&r29TmKCcp?l{O_|^-8pwSAJ~U+1S&&nZ z)zl%`2su-i#m>q0&?If9i%a_9NwnZ+&tMo8<(NKk=wtl|h2UTr((Bja2W%7AuaI0R z$j+`QAtQ~TL;o4;>we14F2vH^RPz&l%96rDZ5x{e9-7Mjwa^JbA!(_n&1oAN7H2n| z=$gAGUDJ*n%h?`|CXUj1UKTxzo)ld?4_vSBRX#cv3gmQ{ch{Hn+|UPWkKLGPTJTAe z_#xsql+~k4|0LqQimtJ7>8JdfYVYc4DwA2E~GlEOkxbfB*(wXOzJgN!z1 z`I-=;WRUICT}xI=vyexcb2tmpNng;3{lJms=;+8^VD!gFy^QuB|3Dm?s*Ygk1C*(a zz-_6dUghc}W2S4`)o^mb@nDhh#q&q`F#r|_mYCOS1wp+H8rJUv_v^AyFHcRKKn{-^ zxgXI{98THEpk;=9TluPu)n%bZUb?;u5CfC5r3C>@aXNs-Y`~5!FCr(J%Cn#B%rDcC z2Y^cq6Y57t$CD;ZOmwVvYLTQ7?-MLE^YgpA+XuUudZd%X$ZLq(pVv4wmJxQ$4Z)~z zcv%!FX+-romwMFP=|w=ROp+!0G?=wM4mpuE=zS*8ZClyvSlzSX-fN`8wucY6)`up! zWc}hrIFEj%rBx;cA2(;rgr&=NYG6>%Z+9^;QPEMp=yu1{LAr@=j@FgN6edaazxu(p zpBDF@DR+o?OU|TO#uWKN!YMu`xnx1Qfm2Fo|5>+J!#-+v0?;Bmri!!CXi1;G*)A0p zm|sRz>oZMN-FU%D&xDkuJoBA-4P}_YW+@gvKFCaiC__|m z@hk4*`I!~kJ^^n$_DHKduuvPsTA^E6I{Dj~Px()C?5x3Tk1grg04Eq*B`U7qu#v1Z zv8aZn2BUsCxe=e-bM5N&(ddw~Dkq%z-MmQ|oAJd(4SC`N9Y4df0FGG&C5H}VH5Y%G z=A)Nz;!PMXd)j&OJ3gq&A9WqAqOJ$n3<=*46Y0NoA=-xa<(9JwDBuFR?S=BKPJEEF z4S9)W##sqYlTO<&n;jQR(|k5(vKmk2$nX5rIHQCT+^_L|UzyBc51%K3wC5_8Hw z8!f|I@Eg5wJzn+RFOtr<60H$@T&tvHkhX4!Sh4Cl|u5{>d<3 z=GK{(&J@YVjg8-v+4|I5n8Fw-#7i)wjGTV~2yd=l)4egruj_LV%5`DFM`8*O;{LBy zivK`uM0uLs&cD4=2{*o^-1M`lT4555RLnAUt(`k*AzUT8C;O~^-W7n=ZfDo&q>l_Z zgHNyDUgna#XL0ivONFxF?Q7t*&qcU3^~Xyiv^&?mGR@YK99X3HCc zL=iCVch2w50OoaD#N2!iZcx^?eqtB_7b85pG~PaD^WO>-f56s%R$BgZ4F41~zH@f` ze+F0nTYQ?9B7iK1o{B7U7*`Rnmx(q70EnbZK6+<%JyOBIDmur%?rS-1S%CQkzS77% zIHcM5+f$UN>k%CFp*YnvApww>G?hl}#1zp{Q9}+o_ZXVk7%B2r3<;~nvX`HoYjdAV zQ0|VAxQ7_SxlUS4l^q-*D#qncVE*`GQNyY|UZEdcsk^F9vo5+c*6jhF_ zRP{U>{B{H}7L_&M!&z8dOu#dX3)0j}n5k#}2k(_ZyfM3?&;c?8fc5pu4qYpZK%_05 z#L4o3`*vnhVhekFx%>kH93IKJ9Ub}s4`EPLUT)~5B2wT20OJQtE{2A8a{UJj>0jG! zRhw(6PFCJ7%60Rlye7Vd8Q%;&R9t3W7ik2FCaZFwRUi|C^8v!H)|vgbafOW6&l-P= zVmBA`I2|^y$Z`HJ23a=3c}!~97gnpx1GmK|SHKf`qYKu0dis59HhPHbUy(m$^ka4P z%}doxeDcfl4fRtL(j==4x(?7F?(Cy8JCL)I<|aOyy0~wH?;Ytk?of#E&q5egz)C!_ zQZGpE|KIRzyV$eN)VSI;bmn!K)AH*P?V(QrN`fcNiT~VaS7o51X9bf--7NtED;Vc)NT6*rivP z{x^E1zt_d}55@-OB-XCJKW(vLy zGFl7K5i*Gy7gnhgk!pO@HR4dkd)M`9`O<8J=vGlHS?{(5sHrDlV#+6g0)gEwG384FUw#YP!7VPVmTWYwJk+fV zPoIw}EY3xa=rW7y;bT6=SV^akZN$&=g7vu*Nes{?62MuiB~0F{OiR6=+~d-vgcjxG zUroqv0PAAA*Q#?sfT!kYMDC<$HrOnX09--i9N(R6x;zz-=3r}fb`N#~Mee8-78E#? z^90nH=@%*J7p*Ss1O);7Mu1P=Fu(khZEF6qnTn#qLhEY7>jCL%3FsB{{O>xEyi)Rl za)WMAok+pJWW3C5asq<_f1^-Yd}$K)*m^bOG@H7N%z~0$A`X8bW-9#|xsux}JNm$* zxQmRmm^??8|45CcHNkyI=+~^j`M^bPPD}v#LYUAwfX7x5eJ-@QsL@MaN#l;tEb8+;mXq`M^+$rd)L4 z=JOML63PJUr_^p~Dk#`Aq32w252gn6RtgRBpa`Cx?Ji2$-Uj}m1lUaH?X4?N*G23@Kzt{l`wXwD>@*Q#oNZ|L<)H{|~696(}CLH6&e#KV~@*k}p zgt8PAU}3tZrmPVY#Xo_;O1pO4y{lwK!fe5;XCSEy(4LXLzBylL>)*_ap%2x48kzS-HupY z&U*A&d@p)6tg$|)&W1Uvp7;v!{rmSHnbd6QdRNPXai`QcPkr{LmwxQnzUG2tnu3H} zz$0gJLPcB`3O}D!T6&|#b&b><{!bspf0x&+FW3UCp$9Ohgv5lRib7=>8ITW>#>3%J zH7<)eAo2jF%5fzTjkUd(;vv`>%P!7v-DR$#>0lIfrad~E5SwUz@55~Mi@t;Nx~Usr zk1kPNP402H^FG{hb_pc}a+CNZi+rSG81VrnYco|U=zQ!JdZtMuO|lbODkhXN5LtSj zRX+Tzqb6d~t)*;4LnSzF2YXh197gzCkX?8CetS&h z!xk4}9pM~KUq4Bgecrf1&kf>r+6i3bq)S3rUtj0*SXX2MEZge0VH7PrC2*ncXEh$x z%}02<64M6rG>IyMS&^FnEYeA3z&EKA0B{j3nXOU)={t0*&-r8AgGBa%&Q)zdY;YA7 zO7(eolEtS4xYN`W78>_(Iuwe(8omZl>R4#&eD{C>=f?E=NLNo)lAqtalO(F6Vmd4j z8kv5+FlKLvtO%I*UR>X5VG|dhxLVNi%Ey9Y0>L^)KsH3ir2lYq!MqB z4ZXIquL@nhO$fGPCI3%|`G3i0{-D!;!S}y9p#O$WiT)dp`v2b#*7JY#LH{vp|HA$M zI&1$fz(4oD%-Wf@gBN9FME@hj5);`&3>c_-RmsV{y81`<^wNs#6R3iYWVD8UR5|+R z;X`J!PfbwV=$M9V$@}-D|1j7~KQFGS@Hb_TWGVK|&Ng&JS>+ZGBIgo}|CtYReB&EK zMDicS6X9u4WB)82Py^EGfBONx#jSBCx3qbU>&@%eRSVG@J`Ees38p4?_u|?FsQkvx zySfFjjM)qI0s&XkIT_(I_rRco4Ljs$P6RQ<9iR?KYw+5++~3=)9JF(U0H8uJ#pFOs zn%I}EhySj$$=4B=j~hhE;{IIRMVe3i-WAhS0_<>&_)^n#LStQ!$H5_Ta!&kjO3G(f z(JO3_-XVU?r%%g!`}$VhC-bX{<${A39O-ZRsCE^lFh-q>*~}`w=2Y0RvNK9#=n>9e0ijF?>99E$k}*mCu#vz0Q|>a81pzhUOWRYtU&ZxJp9a8c z>Kbboo6U+iOjN+Dy+$tbnpHh2N<1T6DyYgf1e~gCZA!YM9MEknFH=@|8jNb8&quo8 z$o|S9r4emh-@AK;fyVi)5n0+aKSA)DgC2#AAE}*;iHf~fC z(txu+;4X8V-d)r)HqLyv{g>KpS^e61kE~Z0FKIxPjzQAWRBKMKXZDSxyDAehBKnMy zRkCXp#xq}2O;i%cv=JlG%7_gdTp>qi*G7a;+fWnZe3%USVj^0cm{o5qulPadWYBCC z!F)fihaJ3HUOuYE%;|+HeMrixS0>ywHhsD{r9DHft?n zGG2*!l-$3j*sdNZhZX^o3H-OC{`XXDZCCZ-6tzdgJa`$OqDTjhXIGRMh0YJUt&mf- zQ48skO5yEqxk^=N)ucRMt+njE1&X_BJ2w~2p6>4P$lCtljOSVLV$fH%{f$bXz#N-h zvFicWb-m~cnRicBk&xGKL$iQ(-kAn|qp1b=h)%e$kxs68Vb%VA)=cx3O@x7|w3*XX z$rKt^XX3l)3k&r&Zg6cHOcvB@I-wZRo0`vPlyK3hEv~2#Bs3d0)I7ZOD+{}DO2G~( zaM-BF=gtb*|GbZ-Pt8AJ4*X{Rb0I0UxTv(@G2!t~SL1{*XB2k}Mm!sUy6qSTGtaNx z1l9KSHkDjP4?KConBj@29SowZrZzUNQl=T$Mx-Wzxp)__Q{PI%CE(6=b>jEXKTT>} z$A0he>tgWoUeoY0Eyo%Bi@;AimCsi=%%B|;%D2UIik4O7CFjY zI(b;hfjTAQA1Tew=IAo;{A1O5M%_I8+v2fb)sV;_h&IkVC?P4XV7FqFqwoB1 z?+Pf$c>OxELq$#xtrLFQ_J$IHCNoOb!ub8WK9?fgJjFwvK^K6s}V zbryx6eRjs1ID=wqF)!C-?hi1bRTZ}YdtY=eFlDAXVk8#cJQlSWR8qXjAbq;Nk}k_W z=Y?WKj@DHIAy!Fx@a}^%)Z&oiM#UnXbS+tKY8iivxh95b4g)*XLck^KdL%?9@B=Pc zxP|ja8d3-E5_$1jH-9~ct{u@zdpi~n4piGtC9W7oQxX zMgLJd7CXbuztMq6A93AgUZzh==N@)*7=ni+P&P zI-Q_v1^4zR5OC<^DqQZDP2% zc%+u$asC)sJ|f*;IRbX7zhG|u*?%Y~j8PVphiV5u6ZrWQo z!FJ-q&d;8>H6K(2pSp%f_#*S|;IM+8oe5o80Hl_Lt|d?3DR}?hfj@L){c7yQ#02#D zLEmS;ts}zEAAy0pm=r2fF>a=_%D_j_IMl}6XMi`o>~5ca_w1~SPG0JYk*s&GIHBAZ zYr~CnnPn(&sP5XNo5~qMi#X2}n?V|cQ40;f5vZc!;T!WFW7uQ=om+sMX1t~ildu3m z>HWq@zU0o(llciJ5zo`h)jNfQ9=#KkUV zc!^|xifjmP^6UBYNT!w4%6nY=q8de$#R=>=+1ZW;qpoS52R}Ga<8udYy;XgDT1kUx zR18$v5WBREducK!?Dp?Qd;bjay3y<0+5R9R{L0d%0zE^#o;qqSAG zF;K|DtN}aBTf11$gHRjkVs6INol3E@>zatVX+M7);@YsnHvnC7BfUl{vHZaMD2KKP z$cRXAI0m6~#4)a*N2y+#Ufs8oI(IiIxoCt)E)JDwB_H zLL4b?ZW*~%8dKBVT0UB^tj;g25B^(X6rIBMklW<(c zLBFAT%MMMlYVM2(W>|}UvaDq4T+-KBC#C!8n=mE&-Yc}i{>5#tF0QVwIxc0jR%4xL zi@twH7G5M0`>9?uueBS^Ng! zAM!T?x?jQDTAI$+oQDue7BD51#FF8A7Cggm5L4#1M?JLF zNy8tN846SKEc~A!=;`SJWmg~6z{)nuP_gjKz1PyA@lH_@YS8P>M}bqOjRUo!($Y!h z2nWZSAydSH5kG&*#fzuawhHZEywLSn59U=JOT5sk)O^t58T7D~WPctP;WeOVQ1vJ% zMRv^Z+ks2rpi-N?5E^3?s;U?VAT0v%yz9Wl7<=LYN^rlu#8wN(KH8~DnW(^yAbX4c zDvEKCtj-TQa*M%{=Z$*$K=bT$us6iSP^lgUur6+@)<@q8Y<0Z zpO>)8WePfctR{|ONCp#q@S{Zv_d-N`lKd@4*HjOblu#~Fm+Ovy>@oH2x5#b!^Ebm8 z(8uGe9tGkpBI;>^Mn%9)biw(DL3x%P0%G5Rg`DKkI}OnawbwwwJQ7ifu(!6fY{XlGAAOY%W}c8WudnCp6pqb4d6J)>ZwP3!z#vDvAPT9* zd~tAkp)fmJH#ynJaaLq>tTQ2jn)K>bt&^WVfG5`m@<}@yk6*sBgc?0SJR-&i`8UHW zj7xyleyG}R$XxBVXpKMYn%E$EQ8&#*&H+-;e0oZ01{*6OB_lJ~Z4LqfC={m;4G2K> zL*l&GvU`*v>XTu6i&|akY1B7vxc?M9JG*54)zE9!VoSn#TSCAS%5#8L(f=ci-an(r zdY}K0%wnoj&4lXq?Ti9i)g7MM@)wmL-Ab9J4P&;rbb?!fc>^3CxA}T8&Y{x3ATzUZ zp*;wwgGX6rfp46~))bT{^*Qc2R-A5^Yf2w=U!qG81IRD`#~0{s3<(tz4OAC#iVNGC zN|z1*;EcQ4ucvG#AwJu!#UfiJ*DU8H5iF7}IbWtJpn#w-KI``c5LDAg{iC_x2DO?L z>Y7HhWK3hDv$DFn7SQXlppJ1EZa04Zf#4$`EJ<=&Eu1iJtU7w=)dcM<@-0h;{@%F< z++OzRs5SrqR-Yg2nM1VY;0uJHf7&@{e_D@DvjYI)4F0N>+Z%UCG}Vf0tT3nVbF^f?@7JTix|Je28oNE#Sb?j6&Nj_zsRTC2fTx$V+S%dyqS#!mL$QA!-(!U%RK4|$F=DVf` z=O8vJL^WD=^DpJHci`3ms7uZJ^vQny1O}UkC*z;c89G&3>53eg^|Xi^u#E%0-E&AP zr@x;k@^--6TyXwGy54teB}yhxTjF3eA{V(~2cNRoYQ{u+2RAo=K5K*R0|m4&`->0e z&{aLPmNl-rxq+4+*gCuP*!Ew;>pPUfTm3y?SmTu%vMdEYw$LqZe$IyvbyfybiyJTj zkAP}zz;n^m3c&#ZfKJ24#^$rfLft^=%19MV2l0a4+x4moD;xDxb;DZoam4}*!-(A& zGte*6g9q&bnYYDx$nkopKXf$*fjyWr5O(YrJ33-+{&2ByZFgSr&kPh#99ocI-*mn&4f!3hzez;VB6v=8B^2BQz0C6r`i zxqx;(v#)GCIc_kn!*Vh%O15x(TnOk$KX61%6BY^RzmYh-qN7Eifm#xK@NGU!gXSMr zYb=wbzyIk}I%CSXucl?wNtG%`C4!oT&ma;AHIS#QsPW^3zVU(px9Z6Exl`(%viL^B zsIxuD+2Q;v{Qx(!(zE@|6nEy%dtmkHhCbd4=BcZ9+TtutJJ(gHOhZ%tR$Z|W{~kWo33oF-d*A1{0!+t(ezsdx}-4|`1K79x3Dvg1c zbhY#|r6p?%9nUHGUChmQ$^O!|cD6erxy&UdW~i7oQpxXLxL5Pkr)xv+9{d5uMX?+?j_npIp{tnj@GYtx9G zODAE?VvJpM>ZPm=Dr@w$4xUiGBH8mvb6O&MVU{tpPalYffIMlaaTzVNk#*Y0ykcB$ zAEM8DVgxQ}J3zhy10xhlnE6G^9%1^=4HpApUXLF-;Ft(7_3ek-MTDbT51+^4cZOgE z`QHw|)r|40BsyZ6trZ=)v7IIu$L)-ec5awAx&LtV z7NYn3YM!k{hisL}IbH_-*2$)MS~oXsdP3+jnmD66Oce+~!3&fPve7Bk4rmNOSjdsQ zmbX!9`M<306)Iuy;L1#u&zsm9H(<*9o4#Ve)oDN6^4BE%fZvs~lmOtKIx~vh$EQ?c zhguf-A;$;zZ6As{&t;SGHJjG?AAu|khK$gV87~gNjAFPAHe&nAbQKgjUO1H{AsS1Y zP7WSun-l=`w09(mRn}rLPLQMDw({*YCU$0K%>NorNnV*dGQjdV)AMkjOYRb{RSOPA z+e_&6`?SnTSlBuXf)J&leF*0TVdpSrb&FC{njoIz!2meKb|-ZEd+ss zGCJU3pv=)G899@TF=pWWQEdF@#8Q-7y;|toNbQ!^@cQ%CFw~n-a(dAXKpE(_eg8ri zE2c;xwePEEFoo|5>X;a-_L+yyGh#g7Zv# z5WtEeA3n>^Rc+cYM>q?9-XCbg2-&u=W09hUz6;VSdV1AKw;Ambghlc+PbreQ^w#n0 zZKQF_^SE3y|B_>Jy3#LfUC1(6z!RTm5tC27{KDq7hlXhxL!oCc ztpuGw&QCZ#NuH=RWdmzgBoIKJ{DTKo5JkmY*G8MS#N_ljKSn5ptk$GKxX(AJmHqgo zo{o+Z%-!eQf+X`Vz|=o`EnESC+Kk@g-2Lhb;grnJhlBcr6Nv$x(@@`qlQ47`IQ&?T ztfwDuIKM$S4+#!p4p)|rKsVhmWi&kFcgIRchhwa~(d4!EV3!bhDmvJtwOTT?AkQVr z>!jXW!Zbh#XSekIYm3Ex7GKk{W2CH8#bC?!Ewr+PUk_r&8|6J1Ux1v4y(_KXB3@k; zmND`ECgQqoN-teY+}Zwh5(hMNWY}}`ysw|G-Z9BGCM}ke^I_b=I?D~^zs%l`qMNwi zTR#3;Yh%!{ps8E_GQWJYVynKssKw08d+NQ7*5kjcqLra=_J_%z9T2!K_PF%^*MF4; z$__moikk~S%y}-D*e(PN&PhV&*iTnNDPD}&s604{SNL|gTcl~EHvw%HvfTd$xzEc> z)`-x61=Ax;-62mA!y)O+Ewek)G-*CG9IELdHdFKON@f>G8B|)wOImj2r}dSJey(@c zl_j#_(*vI@CWO(~>a}knt;Wp%8;7dN*ls!vz0KfJXy z(A9}nD;GN(!@HGT*_%xKJII?QSK8=KBzyr)7ePI7qQq6Pi1vNT z^_3Fl{!dud2igYI&kjD{im&O+Z`loPzAgUUFgVdl{un9uWG*p6XDVSihoA1jacf%! zYSQ9}zE+e49U^D%HlQ$b>CMk=J)N=_C>JAEiI8xac>VErt!q1ePZqueEiWyYJ?6#i z9sLMtl2iZ}+E#Y<>o!-XN~w}88a%%51!#i;>ZqV#hp%Ka##20RjFa%6>ZwKc_aCXq zQU>@M&CA5jHupNLG-TKS({69?Ox5RR%Ber!A~9SezDE;*NVm8L^gH*t%WjZqNb5A# ztx|+|ROSxRSOiv^{l#+3TbB0|YY?o&%a`=DubWCo<1=@nxo4B#Nm@&|LLQu#@O_f7 z0RHkbb=i}^m>6+|(~Tjw2p6|Ag%5qHT&@j!Of0W&h|WX92#*8Z_cpYN)hX$!JLZ41 z0LRWT!a+4+h*v7FZ^->#rF~cRL3L;RbM^cr#-~BSSTVOdRRXxYBfVwpKnrbzhOAPy zjrDsqH`fi_t~;J<5qIrU+0u*@3#m=|j z>Mcy6tAbxQA_qdyFV^a4-|OMZXlRP`Zby#miX0hPFj;*ClLSM%Un zZ@(t<7c)i(a8lZsjgF4KqZIBF(O>YeLv-;>blqpp2O-^t_93gRGqP4oxvMUVxcFR1 z+Qfd&3GK10^T)EDYeC=`DuBZ|&>zJ7~BX>6f%#o^@t!$A*}^ep{lCtopeBDN2-6s zrLUMW*RurX-WpQHPWd;>N9VT#QW4mz4}QhSz37^qXq#N7#L`5G?d52H4Ro?W`A}MR z7Y6P$;2htyuTm-@%`EpruY~L}@WG?Yx^L!{@l)4L@U|iMujHm-wF}Ct4}s0_%$u_C z%@{6NG0r5mc9$hE;2J^QH{^MqUXwwQq|KW&T)p*ZUv4B?+0+ zzo@GRm>yv2ZoOD2vT2$uXz}q`v^a6~jT_+p&F%4{*zUc8x?V(nt>2G3D3y*)yZ51m zR@FVc;Ik)>T~wZ>l?6}V=a4n0I$U(OD?N0F=X4!cmz;mV=79cPg=@T9HR0}fRekqy z!r}q`67`@u3|HeK7oO9{_GGllfB6e+{A%9pJs+y+j%d9j)|D@98A#w7NVwDF0{WhR z%^PQtGG_@Ev!s11>DhswJof!y0_(dq5}swX<<}2RyXljC@D{!;$-*sgxu%Sk=tElc z6)Q7gXZ^kh8f|^tK;^lSHTKFFf9g5Z*?qJ9%Y&a$h-ep&?_${)UUd(nk}6 zWe};~_MzXhLk^eDeBBY~+DAFs&!0Mys;5hmkX*+GQYPVhQC#D@HnEq91X5CVHpik? zc2)R0(Y14P^;=CuFPVL|ou)2p){T`=OIq6)tgw$bDP$ zy2sw`^J?R-`|tZsVYALZVM~7#J?pG0XzCnx^Rc?4TNNBOnc3OJV-oUaGPhfqE+tubJP@LTHEMhozoejmFFFgTtQ`6I^L2__{ROTB zQlmJI<$WDmTz#{qC4=+4+%&VC^xCW`v`1msQ8=3Ys)4D`RUdp6{lGvdteJfE^qZ(8 zJxAOfZr5+upFe;8DOLDt9-k4_e*H1GY`lwi72d>N>2VsF6QAl!5mhdG*#e3i{ILChuaaxj;-4^xkO>~*VK?KeteFOIp2br89HIzPW+ z)%N0BE{493C#57z?)rMQpf!6zxu2=nGTUl2`?IyDY8eP8yYNe4g~sIv%a@-N+PsU3 zUkRzS+!?vRo$5Mbm3Hi8hdUGg=Cdd@^zuWtzz@alos==F9jmXG$o1WZy`_w&;LeY} zDZgUBz^(pZDdnQ1s?TBu=H8bd9!fEckI&96_O?yYzN4yQ1ns3-Lk*u=eWvnTVc(;s(Rd$8wRmv_;-lIeA9 zWo%I({CEf2_?TDLYd!klxzy_Fwx84|F&kT)*!U!2J5=D9zdMz=DH<7xvnO9p8Tcq( zse$~u`3&rh_}$qj3JR=u#qSVB$H%WT4_fWOe(~_}T_6fPKBE03;IEj61Hz-{P^VqL z?IjlbYGZpLI@6|ok4F3&jWuSL`5PIs%0UNe26J{+&EU1_%)Ug##lFEh(Sn$* zt^Moyca~E?FKHPVP*|XX!D;?it_IIzWI5^M(wPkLzMXz>=PG2A4aSa5X}RHi>n}$$5IvAJ z5_C$)`E9?D?pe=zmG1r$9@=WS!KFIJBdEygxV~* zRcpU$pTHp;D@xC-EJ~tpFmqCzGIJy?d7Z@NEki|bWm3Hhw};D$Jh&!Dw5sNM?ZN$q z3C>SGKGdoWW0W&f52O_D+%Id9P%I=yNE~-x$Er`BtQfc)e9vH_J zRif$v8|2N9hjVC!#vqt@dvluCA(grnKrLNA-`3312}*qWW!i5v`CZ5;tp%1Yt0!J_q+_J z$Vfc1eEhyuy-1sy<701tmnzth!#(;&t&kLQO`kMy)a5c_x~43!GO%X?qowr;n_irW zxLEWoxmmD&hS9|wRZQ(qWKNwIGsmk3m2?F5mK$ygmsmLNjr|myX$r2Az&=fOZ=Ulz z*|!%X@%qv?wtJABMtiY4JGW=?GOW!zT6pS3@`>drv|IgmkizIYOK=(GIP4ap{i4A` zQ;6RvF{s4q+MD9Qv!3Kx&oJqi1m~hq3yBFAl&EXLcUz;cW-3+gYF)DSbe=a)R~EcA z+94~VNV}WfBc_guZi9W~h03v1&Z{H48fp3!>_)j^SsC1IT@#7Ex1xgAE(O$o1jABP zBQD`^{7=#n?-%1y+S&2b1*5JknF_iQ5@iV|)MleN6J@aq#+?R{5|Z(vOBGT)++aKD zZD9!TZ?DsQ;WC%ICm9ENB6gcPHPvgp;^p;{eIhXr^N8F626Y-rc1ghr!V2NWg)^;%HYL7!=dilU-0JgEpE4V z*Hhuv9RBBAF;s#Tm>GA9S@j&!cvQ{# zI<0+#UlhzG%kt~jL^OC=X=xCnf_zwXAlu;mi&l#f56jSHn4BBO)`kxWEiGRJc;H6Im@ zFVJyyu8_hl<5a?BzmZOTJ;&m_d7efcci8s8+8j7XP0#2VSh3rMUZ6^df)N#jQQ(!+ zzaa!Pw^h%r!Eh$11lXh1pfn{*{z^b8ki3;Dc4oJ2b$)7v+5i_1oV4AmZz&64mC({;wl@2DXf|^;P9u80%Hy$j zHl*h@bms9l8~W67Z}uC%J!WyqJ2hRC=(j)G$I^r?xj+7CMRTYxm|n7|d*Y&9GTCsl zsC{`yTW5C0pb7#Fi)@q{?!0%yRi$+;=NXuI6r`TK{@k{hU} zj=n>~F+XF7hUMwaOopXL@gBHm0LNkHpd^&&1^nV80!HrFLeXm(9919 zok+N1nB`Crn>{ji-(N7B=ufPgRaxpKl}EJ#06G;e)2f%(a|ftYuqZcbn}v^2=Wu|> zW#`x7kbFV;Ru9K#9!iS}3quD$@5-8nLDS(&0=nATuoF&HW{jN!AAUDQ5_$&u!#_LU z%mA=q!$z03Hv*q7E_CbR{kWC}2px6x@BqJ$hvjXYF|)obZ{NFn%^D$Uh8A(zCsVk$ zY6hZ~kXnV}*0&l(K3_b&$2QfAAc*|H>0E4J>U4d0*&b2R>{H0^9W|E}xYf;!r8+V9IS3QAu{8AoD?BT$t&NJTdK z_PRhD&gyqdO!!wuBvPfMmAL(M*b*slLSL*hj+@ofDdp|g&QJ3@c0V7H2-nT`MYv>Zu^sM?t7f&dAPOuvqk-<9C}fyiaPK!A z)Zcxb)&{SIDsm)Q%uNjm+V`3JoF27TuHpLqoENIDSUY?2iDsydv1-qX0tB{n*11Va zGLBQy-2wkhSY-tIK=H5`(3zN;T;9&pHJ#Pg1zrxl;%EZBBH@%a{s?UL^CE1&84_#o z{B?GC-sa}avte)PE!-A z3n@ELkM}~RXNJq;I$RFIRk@%*!}xmS$9z1c%}IowO-pU8@q8$7PQG> zwgv$x&e8MOe%)|TkGql~;@Hi~JVIXc0sCv)ic<|#Qrbh1zpaYK#NnQTXJZf=qU`uL zWNjLmBP@vGe=OeEwezZBzb8@f?LK0%l9lMq1mPa(EY0gkpw4R>RV?$ z#4P(=Ol@ZC>y2TXFuU@L0o^Jzj*FGjDd%MN$AL^fIwpz9! z0DK?P?|5wHc3rWx{XJ`^VY#2N6hPhbnsM=cd=xctN)| zJv;>)OzMwuH4&$os51F}igJM3?eo zN5NVDY95Bl!(f7-B`>m#R{bauQt027(q0Fr9mm;dT)j%MkzvPqX=XBo(<7vSs(yWJ zWd*VcVjA%Z(qb^NMri1ih?cPia{XLnC1I6Un%|9YN#(lJ{mJ0Ri^Fk`wJT;ws;abW z&Rd5%(`^NpqcMpktZSS<(D7zJKiY48_h>%XM`-gNr`0^OzG1B*xU;y?KZEW+iR3w4 z4F{2m+e;3^avP4qHXAmRMQBba?>8-0oEQ&41R5d8z7VWvXkco;a|D%0<+LS-_&xjW z{&E45U#M_q*kg-YQAs<{sQ<$2cmybeSS37)j#$yvk zUGRGqsei*Uk5l;9$$v|QDKO#x zYw=3|54R-0A^5+wT=P9k0T3`Qk5>PuHiyQuRlL`->Tld&*!w3G%0q`9EfG}zgxpp> zc#oQLGtj@JOlHEMlQwbWHn6MEvp>8-X7~>%2+k?kv9bEnGC^pW|J@hL7XkPK9|Iaw z%D-X#WQ_ke)Bp28Tz!oH%PlH4pW!6EWr9Hmm>+Vc3`cC#qX}G{l102wt2Ce&g6)-K zLBhHC{NExwZHZ}UqAq9jq~&(Vu^+SvJH-t`w68oIFQB8$o3Ug`KLO!19p=TkJFW!o zXFbdX?ytbF1_okN;{swCLU{Ck46a)xd`&_E5h_2(Uu$oXr@-s+nuv$h>Jh>R09lzdA8jEA??~uBxB`X1@d^?WAEqBC48WA4^fpe2 z>BR9L8t)s}|IH*<9~CwMW17T@R+_l$B4^X!y?y(Bfe~gjWhm32^kNH7R1VdHNRCN# zrhS85=^uaIh4<1WZff$*f}$@9E2kMoT#-34Z%E_d=&LDF9k3JR{JbD$b1xqz`0HD8 zWJ3Sk=*q)()ULXB0u*&^C{Q@$P$*4}=_i9Toa*O%1=VMpJI;LHPg?rew|9>w(M}@q zO4Z8NgMOV+8Ir?~<4}$!TY%x5LY3><4HkGSOcZxZO6cFM9LxevLWZkO^f;AYqJV+& zS(a8fzh3(t&2b@%O@USChHK8U>Ot0NQ{v%kd+bMRALAU&x_HyiNX~5meHjoG80pEv zn}m3X%aBeWfKY@VE{~}y*;tF|tPtWfwk7{WHAo}hf5<}4K@*?Nz82oE;G8DrgRk_$ zis~%~^m217MuB^kpSW|=u4|$pe3WIPux9e$#2{Kac#$z(hvN2z)sL|JP>9NyKgeJ9kf_%ENT5C)beV+Zvm7FJD~ zXC8rlezfMICgQ+y6P~@jS#dDfqDZ?G>0#m|8I<$ACPxA6@B7W|({) z$rBZx{?f!`3IY6QU!C7j;?_@T2M;D!hN`ztwtpjc@1(Xm6i< z2R{RKXzE6%T2FV@!Q|w*$!o@$7|bS()bbgTK=XXHh29QgcFomvX)4lbqG%Yni)g`8 zOGWnP{zs2q5BG-Hq~k;beFtT$gL8L)NF{i0$dIWYQF`%7TnKwus^tlXTCoX*)G zz&>JLIV(kH2CW_<`&H5T07u_w1b#pCAW9v`ieUwd3sa|XS*Xt&;v`K6FUJ?z=3FR%6T`+_e>O_L1^M@o@TjPyM)59ywPtORT1Cyc zpH=O+jIOxQv5Ml1v5B#j^0Cw$CTMrVh2KMR@jAQ9kC- z!k&L#9Cwfd%XUu|J6cI5O}L4V&hec)**O_**RoR=?8IE(hsj*aD?y(PKbK#!WVB<| zwkP8{5FW{@Y5HbjRMH4GF&2jXMKbXRN#0k*dl^tILf!MZNyJW(~v+FdyAp#BkeEETk*MD%OD27I#wQ|#ZSg+KWgtYFM=X$ zG*Ghs;HS6wU)NPm{xtYF)La^ZKm`RTY6v9tllSfQD4?taR@4?BmOtB5T;an4#P09h z4G=LvB=tYWg~htC0u@8EV_8RgwLe|-H&68KxuC`A$QiV*!Ra#egDF6!4sXll0>>v< z`y$X!rul?K5jN`1aq2O2ZO3NJ1B&vVKj5zG@D(TV?W5_rYAcJIbBybk3o+E>-)iFSld|q0n zSINW!NIMnq3$%OwTXPZTf{}xokJg?jywq_@>t7y2i3B9>t=k*|sHvjY;RFctIoiS# zLKI%N<{T*bZt$l4o$Sy;dwo@tUEu9+&8^(F#$1MHaD8i}(RMslhX2vnmd$(q<$|U= zz|jxB%9w?aw;2y?vW6!qq{~To`@)3*OBPv}?`==N4L_)#6yai|C&&1s_p|s3**mh} zgfL_u^-5U7UP6C%5y=1Re83b<-+7%^s?vL!Ua8An@`{gFz!_Hd{#M6~j1o73L36>s zOLR`vvZ}-!s_KxZXjO~&xc2r`x-^pS=_P-5d4@GQye;rF>kd7^e)%xG2|iBpT|~-s zCc##fpy#z@KPVT?WC*IvdBD$|Fnc!TavE!`$Fe?SvRkNKc?YK&O~GiA7d7O+3{1TU zrzxQgj*riWEJ4f{;_E)>%x;^0c#X%T8Dc2W3?2JHLk(Ezm@+bK#T8j6$3?#Om5JH0GXV^F6I)o-p`;-*LgzF(#vU4QArSeDw7hrP;@WOdulWuE}GF zx}B-zMFzo(pO4-yGsC|S++Sfjr{hHWUGfkeIUP<+bRJLEqi2eg*caIOW#nxd3Mfx8 z7DBB%oWN*&(LX-X^P@g7sFR9K3#*7_c*;tIPAN_lwcxFObBYxM{gvf(LYu9m&~xZs zUwZ+@5@&u)#nCTQGU8ub2&~L)8x__~OR;J`)%g*s>!EJL(OEy){1=}F)G_?W4#&Q|aF< zZD*=kmdF4};qTLKwGEq&3qEf|g-yUkqsIrEIoqN3$Q5+2*ICH99ol2$=OcLrk9-Tv zHV~jUhxZ-ol~x?|g?!iPe1En^R%MB_8oNAd^q!xdWH_)S3)CZU??2=1Aai=A3%T^M znW=iRdG3!tX0f1Q;)?(T!j~uQ5)hclebixNbWrUo^=NakUa$+v%So6k*eFP-M~S_NHM(3q7oyCm@dg=6I*0d$v3 zZqCQ9HpCP}sjo~=1Y`0kQKLr!w>hG%gfeDyr~Q2X!z+Jtb^!o!aamyl*$F6SbhqlS znuXNge91xX6wAjvl@k+v66%5t)mk+(+1BAgmwU757H&bBZ zihfvw53KD}BHe@=`UbB2;DMNN$RYn2t2C6cPif*;_nM7aLZOLD386yBPlxeZTfW^7 zlt>eS>sDC6sc_`z4>}&G*p-D_IxH>-$g7}Moe+^m)ZU%d9Nb%671H? zf&n<;+O)Pxt{Qki!8m|blTr?uJ^~n?`2UH9{_jln0h9luL3{3zCQ+}6e$}QsK2+W+ M$f!t{y)+H@FOllmG5`Po literal 0 HcmV?d00001 diff --git a/images/github_edit.png b/images/github_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..619e483e1358d118d50d7d4bd4d0bc9061e44cb9 GIT binary patch literal 19447 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 literal 0 HcmV?d00001 diff --git a/images/github_pull_request.png b/images/github_pull_request.png new file mode 100644 index 0000000000000000000000000000000000000000..13e2eb5fc941c7fc18901782f93aba7dc921dc93 GIT binary patch literal 14374 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 literal 0 HcmV?d00001 diff --git a/packaging_apps_git.md b/packaging_apps_git.md new file mode 100644 index 00000000..ede9b6f9 --- /dev/null +++ b/packaging_apps_git.md @@ -0,0 +1,85 @@ +# How to use git to package apps + +Git... Our dear beloved Git, which can be described also as "Goddamn Idiotic Truckload of sh*t", according to Linus. +Be sure if you don't know git yet that you will soon agree with that description. + +YunoHost and all our apps are on the git forge GitHub. Which means that if you want to work on an app, sooner or later you're going to have to deal with git. +So let's see how to work with git to be able to contribute in the context of YunoHost. + +### Working with GitHub + +Let's go first for the easy part, GitHub comes with an "easy" web interface to deal with. + +*First things first, unfortunately there's no way around, you need an account on GitHub.* + +#### Branches + +Then, probably one of the most important thing, **do not work directly on the master branch**. +Sorry, it has to be said ! + +Branches are, as GitHub explains, *"a parallel version of a repository. It is contained within the repository, but does not affect the other branches. Allowing you to work freely without disrupting the "live" version."* + +The master branch is the branch that contains the version of the app users will actually install and use. +The usual thing to do is to work from the testing branch, and when everything is settled and tested, you can merge the testing branch in master, so users will enjoy the new release of your package. + +To see and change the current branch, use this button: + + +#### Edit a file + +Now that you're on the right branch, let's see how to edit a file on GitHub. + +You can edit any file by using the small pencil icon: + + +If you don't have the permission to write on the repository, you will see (as on the picture) that you're going to create a fork (we'll see below what a fork is). +If you have the permission to write, you will just edit the file, without forking. + +#### Commit your changes + +When you're done with your modification on the file, you can commit your changes. +Behind that word, the idea is quite simple, you're just going to save your changes... + + + +The first field is the name of your commit, a very short sentence to explain why you did this modification. +The second field is a large one for a more complete explanation, if you need it. + +Finally, if you're editing a repository on which you have permission to write, you can either commit directly to the current branch or create a new branch. +It's usually better to create a new branch, that way you keep your modification on a *parallel* version of the repository. Your modifications will be discussed in a pull request (explained below) then finally merged into the original branch. + +#### To fork or not to fork + +A fork is a copy of a repository into your own account. +We've seen before that if you don't have permission to write into a repository, editing a file will automatically create a fork. +Because the fork is on your account, you always have the permission to write on it. +But even if a fork is not the real repository, but just a copy, a fork is always link to its parent. We'll see later that to create a fork is really useful when opening a pull request. + +When you create a new package, it's common to use the [example app](https://github.com/YunoHost/example_ynh) as a base. +But, because you don't want to keep that link to the example app, you should not fork the example app. You will rather clone the app. +Unfortunately, to clone an app is a little bit trickier on GitHub. We will see later how to clone from a local repository instead. + +We've seen how to edit a file, and how this could fork the app. +But, when you want to edit multiple files, the GitHub interface isn't really the best way. In such situation, you would rather clone the repository and work on a local repository. +You may still need to fork on your own account to be able to save your modifications if you don't have the permission on the distant repository. + +#### Pull request + +After you have committed your changes, whether on a branch or a fork, you want to propose your modifications to be integrated into the main repository, or the original branch. +To do so, you're going to *create a pull request*. GitHub usually ask you directly if you want to do so. +Otherwise, you'll find the button to open a pull request just here: + + +When creating a pull request from a fork, to ease the work of the reviewers, **do never** uncheck the checkbox *Allow edits from maintainers*. That option simply allow the maintainers of the original repository to edit directly your work. + +#### YunoHost-Apps organization + +Following the [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines.md#yep-17), your app has to be into the YunoHost-Apps organization, but if you never contribute to an app before or never had any app into this organization you may not have the permission. + +First, you need the permission to write into the organization, to do so, ask to the Apps group on the Apps xmpp room. + +To transfer your app to the YunoHost-Apps organization, go to your repository and to *Settings* tab. +At the bottom of the page, you will find *Transfer ownership*. +Into the field *New owner’s GitHub username or organization name*, type *YunoHost-Apps*. +Your repo will be moved to the organization, you don't have to remove the original repository. + From 0628f0731ec1eef7d59c6d84b1e8769e78417551 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Tue, 31 Mar 2020 20:32:16 +0200 Subject: [PATCH 018/135] Corrections --- packaging_apps_git.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packaging_apps_git.md b/packaging_apps_git.md index ede9b6f9..bdf30481 100644 --- a/packaging_apps_git.md +++ b/packaging_apps_git.md @@ -14,7 +14,7 @@ Let's go first for the easy part, GitHub comes with an "easy" web interface to d #### Branches -Then, probably one of the most important thing, **do not work directly on the master branch**. +Then, probably one of the most important thing, **do not work directly on the master branch**. Sorry, it has to be said ! Branches are, as GitHub explains, *"a parallel version of a repository. It is contained within the repository, but does not affect the other branches. Allowing you to work freely without disrupting the "live" version."* @@ -46,18 +46,18 @@ The first field is the name of your commit, a very short sentence to explain why The second field is a large one for a more complete explanation, if you need it. Finally, if you're editing a repository on which you have permission to write, you can either commit directly to the current branch or create a new branch. -It's usually better to create a new branch, that way you keep your modification on a *parallel* version of the repository. Your modifications will be discussed in a pull request (explained below) then finally merged into the original branch. +It's usually better to create a new branch, that way you keep your modifications on a *parallel* version of the repository. Your modifications will be discussed in a pull request (explained below) then finally merged into the original branch. #### To fork or not to fork A fork is a copy of a repository into your own account. We've seen before that if you don't have permission to write into a repository, editing a file will automatically create a fork. Because the fork is on your account, you always have the permission to write on it. -But even if a fork is not the real repository, but just a copy, a fork is always link to its parent. We'll see later that to create a fork is really useful when opening a pull request. +But even if a fork is not the real repository, but just a copy, a fork is always linked to its parent. We'll see later that to create a fork is really useful when opening a pull request. When you create a new package, it's common to use the [example app](https://github.com/YunoHost/example_ynh) as a base. But, because you don't want to keep that link to the example app, you should not fork the example app. You will rather clone the app. -Unfortunately, to clone an app is a little bit trickier on GitHub. We will see later how to clone from a local repository instead. +Unfortunately, to clone an app is a little bit trickier on GitHub. We will see later how to clone to a local repository instead. We've seen how to edit a file, and how this could fork the app. But, when you want to edit multiple files, the GitHub interface isn't really the best way. In such situation, you would rather clone the repository and work on a local repository. @@ -67,19 +67,19 @@ You may still need to fork on your own account to be able to save your modificat After you have committed your changes, whether on a branch or a fork, you want to propose your modifications to be integrated into the main repository, or the original branch. To do so, you're going to *create a pull request*. GitHub usually ask you directly if you want to do so. -Otherwise, you'll find the button to open a pull request just here: +Otherwise, you'll find the button to create a pull request just here: When creating a pull request from a fork, to ease the work of the reviewers, **do never** uncheck the checkbox *Allow edits from maintainers*. That option simply allow the maintainers of the original repository to edit directly your work. #### YunoHost-Apps organization -Following the [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines.md#yep-17), your app has to be into the YunoHost-Apps organization, but if you never contribute to an app before or never had any app into this organization you may not have the permission. +Following the [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines.md#yep-17), your app has to be into the YunoHost-Apps organization, but if you have never contributed to an app before or never had any app into this organization you may not have the permission. First, you need the permission to write into the organization, to do so, ask to the Apps group on the Apps xmpp room. To transfer your app to the YunoHost-Apps organization, go to your repository and to *Settings* tab. At the bottom of the page, you will find *Transfer ownership*. Into the field *New owner’s GitHub username or organization name*, type *YunoHost-Apps*. -Your repo will be moved to the organization, you don't have to remove the original repository. +Your repo will be moved into the organization, you don't have to remove the original repository. From cd44a2c8f830d44be81c526699a1bde1463e9e3f Mon Sep 17 00:00:00 2001 From: Pwnulatr <12719642+Pwnulatr@users.noreply.github.com> Date: Wed, 1 Apr 2020 04:36:46 +0000 Subject: [PATCH 019/135] Update apps_wishlist.md Added Technitium DNS. Similar to Pi-Hole, but offers DNS-over-HTTPS and DNS-over-TLS. --- apps_wishlist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps_wishlist.md b/apps_wishlist.md index c4fa90b4..eade9e4b 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -132,6 +132,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Syspass](http://www.syspass.org/) / [github](https://github.com/nuxsmin/sysPass) - [Taiga](https://taiga.io) / [github](https://github.com/taigaio/) - [Taskwarrior](https://taskwarrior.org) / [github](https://github.com/GothenburgBitFactory/taskwarrior) +- [Technitium DNS](https://technitium.com/dns/) / [github](https://github.com/TechnitiumSoftware/DnsServer) - [TMate](https://tmate.io/) / [github](https://github.com/tmate-io/tmate) - [Tracim](https://github.com/tracim/tracim) - [Thredded](https://thredded.org/) / [github](https://github.com/thredded/thredded) From b716e6d4ba0e479a12a88acfb920e449b45261d1 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:07:20 +0200 Subject: [PATCH 020/135] Update doc_writing_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index 193b8538..92f20f88 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -6,7 +6,7 @@ Ajouter un bouton installer en un clique (comme par exemple : https://yunohost.o Classement des applications disponibles par tags (genre, Git, gestion associations, courriels, etc.). -*/Définition d'une license de diffusion de la documentation, mais laquelle ? Permissive ou non (CC By-Sa)/* +*/Définition d'une license de diffusion de la documentation, mais laquelle ? Permissive ou non (CC BY-SA)/* ## Quelques usages types et d'ordres général (trame de rédaction) From d9c4b1bce69f8628926eecb3a2fe5a7392147a3b Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:07:33 +0200 Subject: [PATCH 021/135] Update doc_markdown_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index bc2e2e86..0d71f6db 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -234,7 +234,7 @@ Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` ``` ou directement en bloc. La seule différence est dans la quantité de : ` -Minimum ``` en ouverture et fermeture de bloc et deux ` qui encadre le morceau de texte à formater dans une ligne +Minimum ``` en ouverture et fermeture de bloc et deux ` qui encadre le morceau de texte à formater dans une ligne ``` ```` From f7363353b4a87cf9f0e2d1a3de898a4ddfb445dc Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:07:51 +0200 Subject: [PATCH 022/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index cc2dd952..fc09ab51 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -11,7 +11,7 @@ - [Aller plus loin avec Git et travailler en local sur son ordinateur](#PlusLoinGitOrdi) - [Quelques ressources sur le web](#LiensWeb) -Il est bien sûr possible de contribuer directement sur la documentation de Yunohost, mais ce n'est pas la manière la plus pratique de le faire tant pour le/la contributeur·trice que pour la personne qui va injecter votre contribution dans la documentation. Voici un tutoriel pour comprendre et créer une contribution à la documentation de Yunohost en utilisant l'outil [git (en)](https://git-scm.com/) et [github.com](http://github.com/) qui est le service de forge git qui héberge et stocke le code source de Yunohost ainsi que sa documentation. +Il est bien sûr possible de contribuer directement sur la documentation de YunoHost, mais ce n'est pas la manière la plus pratique de le faire tant pour le/la contributeur·trice que pour la personne qui va injecter votre contribution dans la documentation. Voici un tutoriel pour comprendre et créer une contribution à la documentation de Yunohost en utilisant l'outil [Git (en)](https://git-scm.com/) et [github.com](http://github.com/) qui est le service de forge Git qui héberge et stocke le code source de YunoHost ainsi que sa documentation. ## Création d'un compte sur github.com Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur github, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. Github est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. From ee16cef44442a196a8645fc8d7055455a4830d4a Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:08:04 +0200 Subject: [PATCH 023/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index fc09ab51..d6a40f96 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -14,7 +14,7 @@ Il est bien sûr possible de contribuer directement sur la documentation de YunoHost, mais ce n'est pas la manière la plus pratique de le faire tant pour le/la contributeur·trice que pour la personne qui va injecter votre contribution dans la documentation. Voici un tutoriel pour comprendre et créer une contribution à la documentation de Yunohost en utilisant l'outil [Git (en)](https://git-scm.com/) et [github.com](http://github.com/) qui est le service de forge Git qui héberge et stocke le code source de YunoHost ainsi que sa documentation. ## Création d'un compte sur github.com -Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur github, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. Github est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. +Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur GitHub, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. GitHub est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utiliser un pseudonyme (lors de l'inscription `Username`). */iframe video creer compte github /* From b8beff25385f5f3de945055e93a2fe62f1609db7 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:08:17 +0200 Subject: [PATCH 024/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index d6a40f96..1b19372f 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -23,7 +23,7 @@ Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utilis ## Forker la documentation de YunoHost dans votre dépôt personel Forker le code source permet de créer une nouvelle branche de développement d'un code source de logiciel ou dans le cas présent, le code source de la documentation. En créant une nouvelle branche, cela vous permet de modifier le code et d'ajouter vos contributions sans altérer le code de la branche `master` qui est le rendu public de la documentation. Ce qui vous permet de ne pas devoir tout marquer mais le faire en plusieurs étapes. (Notamment pour les contributions demandant plus de temps de travail). -Forker un projet sur github est extrêmement simple, il suffit ce cliquer sur le bouton Fork, cela créera un nouveau dépôt sur votre espace de github. +Forker un projet sur GitHub est extrêmement simple, il suffit ce cliquer sur le bouton Fork, cela créera un nouveau dépôt sur votre espace de GitHub. ![Capture d'écran bouton fork github](/images/dug_fork.png) Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dépôt, dans le cas présent `YunoHost/doc` ![Capture d'écran titre et sous-titre du dépot](/images/dug_fork_source.png) From 738597941f062193ebd345b34edfa5039c26ca61 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:08:54 +0200 Subject: [PATCH 025/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 1b19372f..bc30dc16 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -17,7 +17,7 @@ Il est bien sûr possible de contribuer directement sur la documentation de Yuno Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur GitHub, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. GitHub est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utiliser un pseudonyme (lors de l'inscription `Username`). -*/iframe video creer compte github /* +*/iframe video creer compte GitHub /* ## Forker la documentation de YunoHost dans votre dépôt personel From c8a3f01d0b1dad77e968b7cfe45e0755dcaf2549 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:09:26 +0200 Subject: [PATCH 026/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index bc30dc16..f2e4f771 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -24,7 +24,7 @@ Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utilis Forker le code source permet de créer une nouvelle branche de développement d'un code source de logiciel ou dans le cas présent, le code source de la documentation. En créant une nouvelle branche, cela vous permet de modifier le code et d'ajouter vos contributions sans altérer le code de la branche `master` qui est le rendu public de la documentation. Ce qui vous permet de ne pas devoir tout marquer mais le faire en plusieurs étapes. (Notamment pour les contributions demandant plus de temps de travail). Forker un projet sur GitHub est extrêmement simple, il suffit ce cliquer sur le bouton Fork, cela créera un nouveau dépôt sur votre espace de GitHub. -![Capture d'écran bouton fork github](/images/dug_fork.png) +![Capture d'écran bouton fork GitHub](/images/dug_fork.png) Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dépôt, dans le cas présent `YunoHost/doc` ![Capture d'écran titre et sous-titre du dépot](/images/dug_fork_source.png) From 9b8b51ceca3eacb2e2d35f5f1a12b79c2a8c4537 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:09:39 +0200 Subject: [PATCH 027/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index f2e4f771..7ddea992 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -45,7 +45,7 @@ Plus d'informations sur qu'est une branche sur git-scm.com : [Les branches avec Faire une Pull Request correspond au moment ou vous souahitez partager votre travaille avec le reste des contributeurs⋅trices et l'intégrer au dépot master (dépôt principale de Yunohost). Lors de la publication d'un Pull Request, couramment nommé PR, les contributeurs⋅trices pourront amender, commenter, ajouter, corriger votre contribution avant intégration complète au dépot. ## Suivre votre contribution et prendre en compte les retours des contributeurs·trices -Lorsque vous avez déjà fait une PR (Pull Request), les modifications de votre branche de développement sur le dépôt git se rajouteront automatiquement à la PR. Cela ne nécessite aucune action supplémentaire. Vous pouvez aussi intégrer les propositions de modifications de contributeurs, qui lorsqu'ils/elles auditeront le code, peuvent trouver des erreurs ou de nouvelles formulations plus adaptées. +Lorsque vous avez déjà fait une PR (Pull Request), les modifications de votre branche de développement sur le dépôt Git se rajouteront automatiquement à la PR. Cela ne nécessite aucune action supplémentaire. Vous pouvez aussi intégrer les propositions de modifications de contributeurs, qui lorsqu'ils/elles auditeront le code, peuvent trouver des erreurs ou de nouvelles formulations plus adaptées. ## Faire remonter des erreurs et des souhaits par des issues YunoHost dispose d'un dépôt git spécifique pour le recueil des issues : [github.com/YunoHost/issues](https://github.com/YunoHost/issues) From 22efe375128d28765caf6ba7894092b41948467b Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:10:00 +0200 Subject: [PATCH 028/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 7ddea992..4b1a7b94 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -36,7 +36,7 @@ Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dép > Il n'est pas possible d'avoir un fork du dépot d'un contributeur et le fork dépôt d'origine au même moment dans votre propre dépôt. ## Modifier et ajouter votre contribution -Une fois le dépôt forker (copié), il faudra créer une nouvelle branche de développement au sein de votre dépôt. C'est à travers cette branche que vous allez modifier les fichiers et ainsi proposer des améliorations de la documentation. Le fait que ce soit une nouvelle branche vous permettra par la suite de faire une Pull Request, c'est à dire une demande d'ajout de vos contributions au sein de la branche `master` qui est la branche principale de la documentation. Les règles de développement sur github change selon les développeurs de chaque dépôt, certains ont une branche testing dans laquelle il faut proposer les contributions. +Une fois le dépôt forker (copié), il faudra créer une nouvelle branche de développement au sein de votre dépôt. C'est à travers cette branche que vous allez modifier les fichiers et ainsi proposer des améliorations de la documentation. Le fait que ce soit une nouvelle branche vous permettra par la suite de faire une Pull Request, c'est à dire une demande d'ajout de vos contributions au sein de la branche `master` qui est la branche principale de la documentation. Les règles de développement sur GitHub change selon les développeurs de chaque dépôt, certains ont une branche testing dans laquelle il faut proposer les contributions. Plus d'informations sur qu'est une branche sur git-scm.com : [Les branches avec Git - Ce qu'est une branche](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). */iframe video modifier fichiers ajouter contribution /* From b6892c5c8857a7442950f46ff3e87a77800902e0 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:10:15 +0200 Subject: [PATCH 029/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 4b1a7b94..581d67f1 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -48,7 +48,7 @@ Faire une Pull Request correspond au moment ou vous souahitez partager votre tra Lorsque vous avez déjà fait une PR (Pull Request), les modifications de votre branche de développement sur le dépôt Git se rajouteront automatiquement à la PR. Cela ne nécessite aucune action supplémentaire. Vous pouvez aussi intégrer les propositions de modifications de contributeurs, qui lorsqu'ils/elles auditeront le code, peuvent trouver des erreurs ou de nouvelles formulations plus adaptées. ## Faire remonter des erreurs et des souhaits par des issues -YunoHost dispose d'un dépôt git spécifique pour le recueil des issues : [github.com/YunoHost/issues](https://github.com/YunoHost/issues) +YunoHost dispose d'un dépôt Git spécifique pour le recueil des issues : [github.com/YunoHost/issues](https://github.com/YunoHost/issues) Une issue aussi appelé ticket, est un problème identifié ou alors un souhait de développement ; dans le cas présent pour la documentation, mais c'est valable pour tout dépôt logiciel. Dans le cadre de la documentation de YunoHost il sera surtout proposé des issues pour le développement de la documentation, les problèmes identifiés étant facilement corrigeable. ## Aller plus loin avec git et travailler sur son poste de travail From 52e3186d6203f5412ecaf3515349000bdcfe244c Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:10:27 +0200 Subject: [PATCH 030/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 581d67f1..b2a958e4 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -51,7 +51,7 @@ Lorsque vous avez déjà fait une PR (Pull Request), les modifications de votre YunoHost dispose d'un dépôt Git spécifique pour le recueil des issues : [github.com/YunoHost/issues](https://github.com/YunoHost/issues) Une issue aussi appelé ticket, est un problème identifié ou alors un souhait de développement ; dans le cas présent pour la documentation, mais c'est valable pour tout dépôt logiciel. Dans le cadre de la documentation de YunoHost il sera surtout proposé des issues pour le développement de la documentation, les problèmes identifiés étant facilement corrigeable. -## Aller plus loin avec git et travailler sur son poste de travail +## Aller plus loin avec Git et travailler sur son poste de travail Utiliser la puissance de git et ainsi travailler sur son ordinateur personnel, permet entre autres de ne pas avoir à créer de `commit` à chaque enregistrement intermédiaire des pages de documentations modifiées. Cela permet aussi d'utiliser des outils et logiciels qui permettent une distinction plus facile des codes utilisés dans une page de documentation. - Ressource en ligne : [docs.microsoft.com - Configurer un référentiel Git localement pour la documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) From b4ec9a7dabd89cd685d89064c0088433fb99a0fb Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:10:40 +0200 Subject: [PATCH 031/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index b2a958e4..fe12df5b 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -52,7 +52,7 @@ YunoHost dispose d'un dépôt Git spécifique pour le recueil des issues : [gith Une issue aussi appelé ticket, est un problème identifié ou alors un souhait de développement ; dans le cas présent pour la documentation, mais c'est valable pour tout dépôt logiciel. Dans le cadre de la documentation de YunoHost il sera surtout proposé des issues pour le développement de la documentation, les problèmes identifiés étant facilement corrigeable. ## Aller plus loin avec Git et travailler sur son poste de travail -Utiliser la puissance de git et ainsi travailler sur son ordinateur personnel, permet entre autres de ne pas avoir à créer de `commit` à chaque enregistrement intermédiaire des pages de documentations modifiées. Cela permet aussi d'utiliser des outils et logiciels qui permettent une distinction plus facile des codes utilisés dans une page de documentation. +Utiliser la puissance de Git et ainsi travailler sur son ordinateur personnel, permet entre autres de ne pas avoir à créer de `commit` à chaque enregistrement intermédiaire des pages de documentations modifiées. Cela permet aussi d'utiliser des outils et logiciels qui permettent une distinction plus facile des codes utilisés dans une page de documentation. - Ressource en ligne : [docs.microsoft.com - Configurer un référentiel Git localement pour la documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) From 02103f304c9c3dcde0d8e874610c379c386de549 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:10:53 +0200 Subject: [PATCH 032/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index fe12df5b..b76d345d 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -57,7 +57,7 @@ Utiliser la puissance de Git et ainsi travailler sur son ordinateur personnel, p - Ressource en ligne : [docs.microsoft.com - Configurer un référentiel Git localement pour la documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) ## Quelques ressources ailleurs sur le net pour aller plus loin - - [Gérer son code avec git et github - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) + - [Gérer son code avec Git et GitHub - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) - [Interface utilisateurs·trices de git - git-scm.com](https://git-scm.com/download/gui/linux) */ To do/* From de1dcf32569cde5017ce5abbc654cd1512f66d64 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:11:05 +0200 Subject: [PATCH 033/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index b76d345d..aeca0165 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -58,7 +58,7 @@ Utiliser la puissance de Git et ainsi travailler sur son ordinateur personnel, p ## Quelques ressources ailleurs sur le net pour aller plus loin - [Gérer son code avec Git et GitHub - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) - - [Interface utilisateurs·trices de git - git-scm.com](https://git-scm.com/download/gui/linux) + - [Interface utilisateurs·trices de Git - git-scm.com](https://git-scm.com/download/gui/linux) */ To do/* */Ajouter vidéos explicative - Add videos explication/* From 046b4143827c81724e0a3c48a69fb16c44009de1 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:11:25 +0200 Subject: [PATCH 034/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index aeca0165..6bb00132 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -28,7 +28,7 @@ Forker un projet sur GitHub est extrêmement simple, il suffit ce cliquer sur le Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dépôt, dans le cas présent `YunoHost/doc` ![Capture d'écran titre et sous-titre du dépot](/images/dug_fork_source.png) -*/iframe video forker code source github /* +*/iframe video forker code source GitHub /* > **Point de vigilance !** From 4dc212a86cb329932c123a22574322c1e9d35909 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:11:53 +0200 Subject: [PATCH 035/135] Update doc_markdown_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 0d71f6db..d2b54486 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -13,7 +13,7 @@ - [Les tableaux](#UtiliserTableaux) - [Bloc de Codes](#BlockCodes) -Le Markdown est un langage de balisage créé en 2004, de nombreux add-on développant les possibilités de ce langage existent. L'objectif de ce guide est de tendre vers l'exaustivité des possibilités de ce langage de formatage dans le cadre de la documentation de Yunohost et non du langage Markdown en général. +Le Markdown est un langage de balisage créé en 2004, de nombreux add-on développant les possibilités de ce langage existent. L'objectif de ce guide est de tendre vers l’exhaustivité des possibilités de ce langage de formatage dans le cadre de la documentation de YunoHost et non du langage Markdown en général. Markdown permet de formater du texte à l'aide de balises, il permet une lecture *humaine* du texte ; même avec le formatage. Même si un unique bloc note est nécessaire il existe de nombreux logiciels markdowns (Markdown sur [framalibre.org](https://framalibre.org/recherche-par-crit-res?keys=markdown)). Sa prise en main est relativement facile. From 336a0e8e0f521f0e14e50dccff4c2e8cd60b7b17 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:12:09 +0200 Subject: [PATCH 036/135] Update doc_markdown_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index d2b54486..fe53154d 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -44,7 +44,7 @@ Pour taper un retour à la ligne sans créer de nouveau paragraphe, il est néce En rédigeant ça : ```markdown -Pour du texte en *italique il faut encadrer par un astérique`*`* +Pour du texte en *italique il faut encadrer par un astérisque`*`* Pour rédiger du **texte en gras par deux astériques** On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` ``` From 4e3b88fde7caefa25f23a0bc03c358ef9125ae10 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:12:21 +0200 Subject: [PATCH 037/135] Update doc_markdown_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index fe53154d..18f214a6 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -51,7 +51,7 @@ On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` On peut lire ça : -Pour du texte en *italique il faut encadrer par un astérique `*` * +Pour du texte en *italique il faut encadrer par un astérisque `*` * Pour rédiger du **texte en gras par deux astériques** On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` From cc5801b4f8f8e0b828a227b903efd3382133495b Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:12:35 +0200 Subject: [PATCH 038/135] Update doc_markdown_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 18f214a6..8ced94a7 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -52,7 +52,7 @@ On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` On peut lire ça : Pour du texte en *italique il faut encadrer par un astérisque `*` * -Pour rédiger du **texte en gras par deux astériques** +Pour rédiger du **texte en gras par deux astérisques** On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` ## Créer des liens From edbf199db22892cb6a549b6f36696fd692157bca Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:12:46 +0200 Subject: [PATCH 039/135] Update doc_writing_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index 92f20f88..cb869d9a 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -1,4 +1,4 @@ -# Guide de rédaction de la documentation des apps +# Guide de rédaction de la documentation des applications ## Pages de documentations utilisateurs.trices / administrateurs⋅trices From 1defcdd7ed2b1ae2b5f09f6a7c345f2a168830be Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:12:55 +0200 Subject: [PATCH 040/135] Update doc_writing_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index cb869d9a..ce859813 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -60,4 +60,4 @@ YunoHost vers le site officiel ------- ------- ## Potentielles problématiques rencontrés ? -Quid des apps qui sont des containers à d'autres applications, tel que Nextcloud et qui présentes de multiples possibilités d'usages. +Quid des applications qui sont des containers à d'autres applications, tel que Nextcloud et qui présentes de multiples possibilités d'usages. From 3dece476e7bcf0ca425d6599b6ab15c7c6174b80 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:13:05 +0200 Subject: [PATCH 041/135] Update contributordoc_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- contributordoc_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index ab1aef6a..9821b97c 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -7,7 +7,7 @@ * [Propulser son code avec Git & GitHub](/doc_use_git_fr) * [Salons de discussion](/chat_rooms) * Packaging d'application - * [Liste d'apps souhaitées par la communauté](/apps_wishlist) + * [Liste d'applications souhaitées par la communauté](/apps_wishlist) * [Introduction générale au packaging d'apps](/packaging_apps_start) * [Introduction technique au packaging d'apps](/packaging_apps) * [Déployer un environnement de développement avec VirtualBox](/packaging_apps_virtualbox) From 58265a9f363d2e687bc21d9cb82b3122e791f1ae Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:14:45 +0200 Subject: [PATCH 042/135] Update doc_writing_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index ce859813..00f7f44c 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -19,7 +19,7 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio 1. Une présentation général de l'application et de sa fonction. 1. Une partie administration de l'application. 1. Une partie aller plus loin, Manipulations techniques liés spécifiquement à YunoHost. - 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des apps officiels sont fournis. + 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des applications officiels sont fournis. + Une partie avec : - les liens vers le site officiel - Les liens vers le package de YunoHost From 751deb6b05884917a9526a4f69853abe133f587b Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:15:03 +0200 Subject: [PATCH 043/135] Update doc_writing_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index 00f7f44c..a0a30b7b 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -30,7 +30,7 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio 1. Documenter les applications. 1. Documenter les applications au travail (marqué : work) niveau 8/7/6. 1. Traduire la page de documentation à minima en français et en anglais. - 1. Faire une PR sur le dépot de l'app concerné vers la page de documentation. + 1. Faire une PR sur le dépôt de l'application concerné vers la page de documentation. ## Documenter une application From 83f7440c2c4ec566c0ed24f228345d08d012e4a7 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:15:15 +0200 Subject: [PATCH 044/135] Update doc_markdown_guide_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 8ced94a7..83b34be9 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -45,7 +45,7 @@ En rédigeant ça : ```markdown Pour du texte en *italique il faut encadrer par un astérisque`*`* -Pour rédiger du **texte en gras par deux astériques** +Pour rédiger du **texte en gras par deux astérisques** On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` ``` From 36241efdda18d83440a697729807ecb9eb4f57d9 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Wed, 1 Apr 2020 11:50:34 +0200 Subject: [PATCH 045/135] Update doc_markdown_guide_fr.md --- doc_markdown_guide_fr.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 83b34be9..1a8ac21d 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -227,24 +227,23 @@ Ce qui afficherait ça : ## Bloc de codes -Pour afficher du texte en brut, des `blocs de codes` peuvent être créer : +Pour afficher du texte en brut, des `blocs de codes` peuvent être créer en utilisant l'accent grave `Alt Gr + è` : ```` Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` ``` ou directement en bloc. -La seule différence est dans la quantité de : ` -Minimum ``` en ouverture et fermeture de bloc et deux ` qui encadre le morceau de texte à formater dans une ligne -``` -```` +La seule différence est dans la quantité d'accents graves : +Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne Ce qui donnera au rendu : Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` + ``` ou directement en bloc. -La seule différence est dans la quantité de : ` -Minimum ``` en ouverture et fermeture de bloc et deux ` qui encadre le morceau de texte à formater dans une ligne +La seule différence est dans la quantité d'accents graves : +Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne ``` ## Liens utiles From 42998393e60d328f0ef0e06830d5fa14810e147b Mon Sep 17 00:00:00 2001 From: Yunobot Date: Thu, 2 Apr 2020 08:43:49 +0000 Subject: [PATCH 046/135] Ajout de l'application de diffusion de documents uwazi --- apps_wishlist.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps_wishlist.md b/apps_wishlist.md index eade9e4b..ee0582e6 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -1,3 +1,5 @@ +
    La page demandée n'est pour le moment pas disponible en français. Voici à la place la version en anglais. Si vous souhaitez commencer une traduction de cette page, vous pouvez vous rendre sur [cette page](https://yunohost.org/#/apps_wishlist_fr).
    + # Apps wishlist
    Before to add an app in wishlist please check your app is not already in official or community list: see the apps list
    @@ -138,6 +140,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Thredded](https://thredded.org/) / [github](https://github.com/thredded/thredded) - [Twister](http://twister.net.co) / [github](https://github.com/miguelfreitas/twister-core/) - [TwitRSS.me](http://twitrss.me/) / [Github](https://github.com/ciderpunx/twitrssme) Scrapes Twitter to create RSS feeds. +- [Uwazi](https://www.uwazi.io/) / [Github](https://github.com/huridocs/uwazi) - [Volumio](https://volumio.org) / [github](https://github.com/volumio) - [WebODF](http://webodf.org) / [github](https://github.com/webodf/WebODF) - [Webhook.site](https://docs.webhook.site/) / [github](https://github.com/fredsted/webhook.site) From 0b44f2dbe1215215acc39b3f4f0966aa0aa6ce3b Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Thu, 2 Apr 2020 10:52:56 +0200 Subject: [PATCH 047/135] Update email_fr.md --- email_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/email_fr.md b/email_fr.md index 2a5ae7b7..3e030485 100644 --- a/email_fr.md +++ b/email_fr.md @@ -47,4 +47,4 @@ Pour aller plus loin -------------------- - Il existe une page de documentation pour [migrer ses emails d'un fournisseur de messagerie vers une instance YunoHost](email_migration). -- Pour approfondir votre compréhension du courriel et de ses protocoles, voici une [conférence éclairante](https://www.iletaitunefoisinternet.fr/post/7-email-sonntag/)(en français). lien cassé.... +- Pour approfondir votre compréhension du courriel et de ses protocoles, voici une [conférence éclairante](https://www.octopuce.fr/conference-lemail-vaste-sujet-par-benjamin-sonntag/)(en français). From d5298a3030d0672314185041ce639c0860d99990 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Thu, 2 Apr 2020 10:55:44 +0200 Subject: [PATCH 048/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 6bb00132..faa2d579 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -1,4 +1,4 @@ -# Propulser une contribution avec git +# Propulser une contribution avec Git **Index** - [Création d'un compte sur github.com](#CreationCompteGithub) From dea680fb08e483f07cb9eaa18082422a33002192 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Thu, 2 Apr 2020 11:18:53 +0200 Subject: [PATCH 049/135] Update apps_wishlist.md --- apps_wishlist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps_wishlist.md b/apps_wishlist.md index 82e3812a..7a4887fb 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -92,7 +92,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Nibbleblog](http://www.nibbleblog.com)/ [github](https://github.com/dignajar/nibbleblog) - [Nuage](https://nuage.kerjean.me/login) / [github](https://github.com/mickael-kerjean/filestash) - [Ombi](https://github.com/tidusjar/Ombi) -- [Omeka S](https://github.com/omeka/omeka-s) +- [Omeka S](https://omeka.org/s/) / [github](https://github.com/omeka/omeka-s) - [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar) - [OpenCart](https://www.opencart.com) / [github](https://github.com/opencart/opencart) - [openHAB](https://www.openhab.org/) - Smart home platform. / [github](https://github.com/openhab) From 61d9bc942a1a065d6d8bf9314b7ec20fc8abdcc4 Mon Sep 17 00:00:00 2001 From: Plumf Date: Thu, 2 Apr 2020 13:35:00 +0200 Subject: [PATCH 050/135] Add informations in writing guide + example with app Pi Hole --- app_pihole_fr.md | 71 ++++++++++++++++++++++++++++++++++++++-- doc_writing_guide_fr.md | 8 +++-- images/pihole_logo.png | Bin 0 -> 2778 bytes 3 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 images/pihole_logo.png diff --git a/app_pihole_fr.md b/app_pihole_fr.md index 4d2dbc39..98e7e6bc 100644 --- a/app_pihole_fr.md +++ b/app_pihole_fr.md @@ -1,5 +1,70 @@ -# Pihole +# logo de Pi-hole Pi-hole -Page d'accueil : https://pi-hole.net +[![Installer Pi-hole avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=pihole)[![Niveau d'intégration](https://dash.yunohost.org/integration/pihole.svg)](https://dash.yunohost.org/appci/app/pihole) ![](https://ci-apps.yunohost.org/ci/badges/pihole.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/pihole.maintain.svg) -**Pi-hole®** Blocage des publicités à l'échelle du réseau via votre propre serveur DNS, avec une belle page web Performance And Statistics. \ No newline at end of file +- [Utiliser Pi-Hole comme serveur DHCP](#utiliser-pi-Hole-comme-serveur-dhcp) + - [Configurer Pi-Hole](#configurer-pi-hole) + - [Configurer mon routeur](#configurer-mon-routeur) + - [Restaurer le réseau](#restaurer-le-reseau) +- [Liens utiles](#quelques-liens-utiles) + +Pi-hole est un bloqueur de publicité au niveau du réseau qui agit comme un DNS menteur et éventuellement un serveur DHCP3, destiné à être utilisé sur un réseau privé. Il est conçu pour être installé sur des périphériques intégrés dotés de capacités réseau, tels que le Raspberry Pi, mais il peut être utilisé sur d'autres machines exécutant Linux ou dans des environnements virtualisés. + +## Utiliser Pi-Hole comme serveur DHCP + +> **Attention, vous devez savoir que toucher à votre DHCP pourrait casser votre réseau. +Dans le cas où votre serveur serait inaccessible, vous perdriez votre résolution dns et votre adresse IP. +Ainsi, vous perdriez toute connexion à internet et même la connexion à votre routeur.** + +> **Si vous rencontrez ce genre de problèmes, merci de lire la section "Comment restaurer mon réseau".** + +### Configurer Pi-hole + +Il y a 2 manière de configurer Pi-hole pour qu'il soit utilisé comme votre serveur DHCP. +- Soit vous pouvez choisir de l'utiliser lorsque vous installez l'application. +- Soit vous pouvez activer le serveur DHCP par la suite dans l'onglet "Settings", partie "Pi-hole DHCP Server". +Dans ce second cas, il peut être préférable de forcer l'ip du serveur à une adresse statique. + +### Configurer mon routeur + +Votre routeur ou celui de votre FAI dispose d'un serveur DHCP activé par défaut. +Si vous gardez ce DHCP, en même temps que celui de Pi-hole, vous allez avoir des conflits transparents entre eux. +Le premier serveur DHCP à répondre va distribuer ses propres ip et paramètres. +Donc vous devez éteindre le serveur DHCP de votre routeur et laisser Pi-hole gérer votre réseau. + +#### Pourquoi je devrais utiliser le DHCP de Pi-hole ? + +En utilisant le DHCP de Pi-hole, vous lui permettez de donner sa configuration dns à chacun de vos clients. De cette manière, chaque requête sera filtrée par Pi-hole. + +Un autre cas d'usage du DHCP de Pi-hole est le cas où vous rencontrez des problèmes de hairpinning (Vous ne pouvez pas vous connecter à votre serveur parce que son ip est votre ip publique, et votre routeur n'autorise pas cela). +Dans ce cas, utilisez le dns de Pi-hole va vous permettre de vous connecter à votre serveur par son adresse locale plutôt que son adresse publique. + +### Restaurer le réseau + +> Oups ! +Votre serveur Pi-hole est tombé, et vous n'avez plus de DHCP. +Ne paniquez pas, on va surmonter ça \o/ + +Utilisez votre terminal favori sur votre ordinateur de bureau. +Et tout d'abord, récupérer votre interface réseau (Le plus souvent `eth0`). +``` bash +sudo ifconfig +``` + +Ensuite, changer votre ip pour une ip statique. +``` bash +sudo ifconfig eth0 192.168.1.100 +``` + +Maintenant, vous pouvez vous connecter à votre routeur et rallumer son serveur DHCP pour l'utiliser à nouveau. +Vous pouvez maintenant retirer votre ip statique et réobtenir une ip dynamique. +``` bash +sudo ifconfig eth0 0.0.0.0 && sudo dhclient eth0 +``` + +> N'oubliez pas d'éteindre le DHCP de votre routeur si votre serveur fonctionne à nouveau. + +## Quelques liens utiles + ++ Site officiel : [pi-hole.net](https://pi-hole.net) ++ Documentation Pi-Hole : [docs.pi-hole.net](https://docs.pi-hole.net/) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index a0a30b7b..b0bd44c5 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -11,19 +11,21 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio ## Quelques usages types et d'ordres général (trame de rédaction) + Lorsqu'un lien renvoi vers une page qui n'est pas dans la langue de la page d'origine, il est d'usage d'ajouter `(en)`(Pour un lien qui pointe vers une page en anglais). + + renommer les images dans l'ordre suivant :`nomapplication_descriptif.ext` ### Trame général documentation applications + 1. Logo (dimension 80 pixels de hauteurs) + titre de niveau 1. + 1. Bouton installer en un clique, Niveau d'intégration, et le status. 1. Un index en tête de documentations avec renvois vers l'ensemble des chapitres de la documentation. - 1. Bouton installer en un clique. 1. Une présentation général de l'application et de sa fonction. 1. Une partie administration de l'application. 1. Une partie aller plus loin, Manipulations techniques liés spécifiquement à YunoHost. 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des applications officiels sont fournis. - + Une partie avec : + 1. Documentation de l'utilisation si besoin (cf. Documenter une application). + 1. Une partie avec : - les liens vers le site officiel - Les liens vers le package de YunoHost - 1. Documentation de l'utilisation si besoin (cf. Documenter une application). ## Feuille de route diff --git a/images/pihole_logo.png b/images/pihole_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..178c085d5fa245987fffd29e7aa9222efb362dde GIT binary patch literal 2778 zcmV<03MKW4P)~Kfj)3xz9n24l@NZSu{dK6j4-=aO}ac7NRj~jGAK;O%YS6(r87i z%uz8FuauPK8m*MEyb_danY}RLfryBBVFZV3W@p8~01NB_yECuz$LqxvXLjDqydg_f zzJJY|?e6K%>+WCw`q#e|jLuzB@esmz@zADVzY>~7*d~gP1wPq0H*|3K-@uFWk6$TZMnC{!F_U7C@HWeMVUUpKp^74I!zK-US3z$uSZ!+ zfN?KXEWpD{X{=?32et~Ftptxkqf7%zOqt`)`fq4%36Qq7&hVfw7h!@x zKwzLiLg0ssXEYwjWuHR}^#TWgA!*juSl}JtLi3zXH;b?uc+N3Y<7^S3Qo+xG%Yot) z#cs#$U)F1m%?m=U0?%f685aYqfx{W5#Dnwe%7!`V#Ep%!zpdd-U@0&o4VX6TKPQ9I zsYiiChN(Oor~&qMQ|=og+>xmR-*23KGq4VrlA-9qOfNJeoK9FX)4)qM83oAh4h_;>z?_AqZIvRMw%mAla z;tHHuSPzhT-%GU*J^=gz_$~+vqiH6?`lmgpN_}dj- zKHr^XAD=)wnnB%rDCsn*redN9H6A$QOOGVAhXVY{BYK5`H6FnyfI{zAFhU8V#6Ep^ zj(b5V+7ZBmMufG%tjDvol8#2MQyb=n-V?YC*yP}C{TA?uJ>vVjOxpl(wNoQv*4g}A z!5qT@te+Fwjt!V;lkX2am`LgmfNOwu^ZnTx<~rlzIgQMEd`9Cww~jm+wQf$R?X5YX zMaK7A+fC65<&i1NOY2q(dXf3=Jm7*1KhX?ar{RXb&TMFP^E~HRZ&rlfMsv9dH`D*%f!Cgy)zDth^PC$huPajmqZRmS%IaS4{QmmY z^DpVJ+D8dG3Vib7?D~BaSW?KwCdK^85etxI6?!T;Q$JQPV7xxF1fx5@xF$V0t;>b3gynnM!{-G)sN%lCn zxIfqz_&cyLm-eR(hc<&y84!v0=3n? zz|exi8L*YW^g?744xKwY&j;B^JgfYq2&_({=Wt@n2q(gEtLeSzV5!NvW-q2@4p(!c|33asZC*RIdQ)xm=PS26Z%OzI(aNsvt*8K>WT@{P$P74?J2ZyzwYu~pL=kGx~O}*IC2Yx(P75Brw z6|Km@IXD6=df94!*0L{D&dlNEYzAg_1yo(Yikr3d{2HrcQWjtUV~;}P605zhHyWM? zoC7=peBsFI+fKoS-e~wq%MRL}nd8Wx3oNbn1^Rw%^5)t4PdE;t;3^Xs(k?gHUjx(B;8*Xi`;b_ZkK<|neSMMt^3gV z9uhwSE~tt{I5f_07b^p@1WQhoqK1H|N^dmW@wLOMi3!$Yr}<{9NG~X&-S1f0~4K8It@8CK^46_7@6mdhWDopGZ?^HoX0UbbWv6OzJR(6J=! zI*cCBu5~|w-hD)R^+!Bn_y296;zTgId&AYfz!2;xbEe#51YWyJ6%QbDhLGD@i#=j3 zjzfC@Rk6qc6YN==(MuN9($m1mWXY;xkro5^dUxggsF5cbY>kBYfj1g%%cXM8c_>`~LpycSW7*!mo2mg8<_eYDh@-8=Ec^{r#v2rzsT9Rdh1}|^boOQaW zah}{?+H=5--e~xkOA#=a7RaHN#1(@EElZ#e3=x^q3+aka zH)`ZL%5!@^ Date: Thu, 2 Apr 2020 13:36:19 +0200 Subject: [PATCH 051/135] Correction typographique MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git.md b/doc_use_git.md index fe2378d3..3d97c508 100644 --- a/doc_use_git.md +++ b/doc_use_git.md @@ -1 +1 @@ -# Propel your contribution with git +# Propel your contribution with Git From f9039620a360bc94b184f5a43fb4347f8e918977 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Thu, 2 Apr 2020 20:52:02 +0200 Subject: [PATCH 052/135] Add local git commands --- images/github_create_new_repo.png | Bin 0 -> 54060 bytes packaging_apps_git.md | 131 ++++++++++++++++++++++++++++-- 2 files changed, 124 insertions(+), 7 deletions(-) create mode 100644 images/github_create_new_repo.png diff --git a/images/github_create_new_repo.png b/images/github_create_new_repo.png new file mode 100644 index 0000000000000000000000000000000000000000..b96969a1d08325f8b4db5e91bc1c5f1a9f0749dc GIT binary patch literal 54060 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 DXn1_l literal 0 HcmV?d00001 diff --git a/packaging_apps_git.md b/packaging_apps_git.md index bdf30481..ed2b9066 100644 --- a/packaging_apps_git.md +++ b/packaging_apps_git.md @@ -6,7 +6,7 @@ Be sure if you don't know git yet that you will soon agree with that description YunoHost and all our apps are on the git forge GitHub. Which means that if you want to work on an app, sooner or later you're going to have to deal with git. So let's see how to work with git to be able to contribute in the context of YunoHost. -### Working with GitHub +## Working with GitHub Let's go first for the easy part, GitHub comes with an "easy" web interface to deal with. @@ -17,19 +17,19 @@ Let's go first for the easy part, GitHub comes with an "easy" web interface to d Then, probably one of the most important thing, **do not work directly on the master branch**. Sorry, it has to be said ! -Branches are, as GitHub explains, *"a parallel version of a repository. It is contained within the repository, but does not affect the other branches. Allowing you to work freely without disrupting the "live" version."* +Branches are, as GitHub explains, "*a parallel version of a repository. It is contained within the repository, but does not affect the other branches. Allowing you to work freely without disrupting the "live" version.*" The master branch is the branch that contains the version of the app users will actually install and use. The usual thing to do is to work from the testing branch, and when everything is settled and tested, you can merge the testing branch in master, so users will enjoy the new release of your package. -To see and change the current branch, use this button: +To see and change the current branch, use this button: #### Edit a file Now that you're on the right branch, let's see how to edit a file on GitHub. -You can edit any file by using the small pencil icon: +You can edit any file by using the small pencil icon: If you don't have the permission to write on the repository, you will see (as on the picture) that you're going to create a fork (we'll see below what a fork is). @@ -51,7 +51,7 @@ It's usually better to create a new branch, that way you keep your modifications #### To fork or not to fork A fork is a copy of a repository into your own account. -We've seen before that if you don't have permission to write into a repository, editing a file will automatically create a fork. +We have seen before that if you don't have permission to write into a repository, editing a file will automatically create a fork. Because the fork is on your account, you always have the permission to write on it. But even if a fork is not the real repository, but just a copy, a fork is always linked to its parent. We'll see later that to create a fork is really useful when opening a pull request. @@ -59,7 +59,7 @@ When you create a new package, it's common to use the [example app](https://gith But, because you don't want to keep that link to the example app, you should not fork the example app. You will rather clone the app. Unfortunately, to clone an app is a little bit trickier on GitHub. We will see later how to clone to a local repository instead. -We've seen how to edit a file, and how this could fork the app. +We have seen how to edit a file, and how this could fork the app. But, when you want to edit multiple files, the GitHub interface isn't really the best way. In such situation, you would rather clone the repository and work on a local repository. You may still need to fork on your own account to be able to save your modifications if you don't have the permission on the distant repository. @@ -67,7 +67,7 @@ You may still need to fork on your own account to be able to save your modificat After you have committed your changes, whether on a branch or a fork, you want to propose your modifications to be integrated into the main repository, or the original branch. To do so, you're going to *create a pull request*. GitHub usually ask you directly if you want to do so. -Otherwise, you'll find the button to create a pull request just here: +Otherwise, you'll find the button to create a pull request just here: When creating a pull request from a fork, to ease the work of the reviewers, **do never** uncheck the checkbox *Allow edits from maintainers*. That option simply allow the maintainers of the original repository to edit directly your work. @@ -83,3 +83,120 @@ At the bottom of the page, you will find *Transfer ownership*. Into the field *New owner’s GitHub username or organization name*, type *YunoHost-Apps*. Your repo will be moved into the organization, you don't have to remove the original repository. + +## Working with Git locally + +As we have seen, you can do a lot of things directly on GitHub. +But when you need to edit multiple files, or when you need to work on your code on your own, it's better to work directly on your computer. + +Before going to the hellish part of git, let's see 2 different ways to start working with git. + +#### First case: Creating a new package + +You have shockingly discovered that the wonderful app you love to use everyday does not yet have its YunoHost package. And because you're nice, you decided to create yourself the package, so everyone will enjoy that app the way you do. +What a good idea ! + +The best is to start from the [example app](https://github.com/YunoHost/example_ynh). But as we have explained before, you don't want to fork, because if you do so, you're going to keep that link to the example app and it's really annoying. +So, you're going to do it differently. You're going to clone ! + +##### git clone + +To clone, you're going to do: +``` +git clone https://github.com/YunoHost/example_ynh +``` +`git clone` will download a copy of the repository. You will have the complete repository, with its branches, commits, and everything (into that apparently little `.git` directory). + +To git clone is usually the starting point of any local work with git. + +*A side note though, if you expect to send your modifications back to the distant repository on GitHub, be sure to have the permission to write on this repository. Otherwise, fork before and clone your fork, on which you do have the permission.* + +##### My brand new package, continued + +In the context of a new package, you will also need to create a repository on GitHub to nest your package. +Which is as simple as a big green *New* button. +Don't bother with README, .gitignore or license. Just create the repository itself. +you can now git clone that new repository. + + +You now have 2 repositories cloned on your computer. +Copy all the files from the example_ynh app, **except the .git directory** (You just want the files themselves) to your new package. + +*If you want, you can remove the example_ynh app. We don't need it anymore.* + +You're ready to work on your new package ! + +#### Second case: Working locally on a repository + +You already have a repository, but what you want is just to work locally, so you can modify multiple files. +Simply clone the repository, the .git directory is the link to the distant repository. Nothing else to do than a `git clone`. + +#### Branches + +You do have your local copy of the repository, but because you have read carefully this documentation until then, you know that you should be sure to be on the testing branch before starting to work. + +To see the branches, and to know on which you actually are, while into the directory of your repository, type `git branch`. +The current branch is highlighted and preceded by a `*`. + +#### git checkout + +If it appears that you're not on the branch you wanted to be, or you're actually on master (which is bad !), you can move to another branch with `git checkout` +``` +git checkout testing +``` +*Read carefully what git says when you validate a command, do never forget that git is sneaky...* + +#### Git pull before anything else + +You're finally on the right branch, and ready to work. +**Wait ! A nasty trap is waiting for you...** +Before ending up in an inextricable situation. Start with a `git pull` to update your branch to the latest change from the distant repository. + +*Sometimes, you will encounter an impossible situation where git is saying that you can't pull because you have local changes. But you don't care of those local modifications, you just want to get the last version of the distant branch. But git don't care about what YOU want...* +*I have to admit that my only solution is as highly efficient as dirty... A good old `rm -r` of the repository and a `git clone`* + +#### Let's work + +Eventually, you can work on your code. +When you are finally ok with what you have done, it's time to validate your work. + +The first step is to inform git about which file(s) to validate. To do so, we'll use `git add` +``` +git add my_file +git add my_other_file and_also_this_one +``` +If you want to validate all your work, you can also simply do +``` +git add --all +``` + +To check the current status of your validation, you can use `git status`. It will show you which files will be included into your commit, and which files are modified, but not yet included. +`git status -v` will show also which part of the files are modified. A good way to be sure that you didn't make a mistake before committing. + +#### git checkout -b + +Before committing, or after, or before starting to work. Whenever you feel like it ! +You should consider adding your work to a separate branch, that way, it will be easy to create a pull request to merge into the testing branch and discuss with the other packagers what you suggest to change. + +To create a new branch and move to this branch, you can use `git checkout -b my_new_branch`. + +#### Commit + +To commit is simply to validate your work in git. As you can do in GitHub. +To have the same fields that you had on GitHub, with the name of the commit, and a longer explanation. You can simply use `git commit`. +The first line, before the comments, is for the name of the commit. +After all the comments, you can add an explanation if you want to. + +If you want to commit with only a name for your commit, you can use a simple command: +``` +git commit -m "My commit name" +``` + +#### Push to the distant repository + +Your changes are validated, but only on your local clone of the repository. Now, you have to send those modifications back to the distant repository on GitHub. +In order to do that, you need to know what is your current branch. (If you don't know, `git branch` will give you that info). +Then you can git push +``` +git push -u origin BRANCH_NAME +``` From 9144fbae98d0730415bb3d66c4197c0fd51fd19d Mon Sep 17 00:00:00 2001 From: Plumf Date: Thu, 2 Apr 2020 23:07:28 +0200 Subject: [PATCH 053/135] =?UTF-8?q?D=C3=A9veloppement=20partie=20contenu?= =?UTF-8?q?=20de=20la=20documentation.=20Ajout=20des=20limitations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc_writing_guide_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index b0bd44c5..c44785a5 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -20,7 +20,7 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio 1. Un index en tête de documentations avec renvois vers l'ensemble des chapitres de la documentation. 1. Une présentation général de l'application et de sa fonction. 1. Une partie administration de l'application. - 1. Une partie aller plus loin, Manipulations techniques liés spécifiquement à YunoHost. + 1. Une partie aller plus loin, Manipulations techniques, liés spécifiquement à YunoHost mais aussi les limitations. 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des applications officiels sont fournis. 1. Documentation de l'utilisation si besoin (cf. Documenter une application). 1. Une partie avec : From c3d1897795016096216d5a8d0100de92a53a4804 Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 3 Apr 2020 12:12:03 +0200 Subject: [PATCH 054/135] Adding a framework for writing documentation --- app_writing_guide_fr.md | 26 ++++++++++++++++++++++++++ doc_writing_guide_fr.md | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 app_writing_guide_fr.md diff --git a/app_writing_guide_fr.md b/app_writing_guide_fr.md new file mode 100644 index 00000000..8896a407 --- /dev/null +++ b/app_writing_guide_fr.md @@ -0,0 +1,26 @@ +# logo de Wallabag Wallabag + +[![Install Wallabag with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/#.svg)](https://dash.yunohost.org/appci/app/APPLICATION) + +- [Limitations avec Yunohost](#limitations-avec-yunohost) +- [Applications clientes](#applications-clients) +- [Liens utiles](#liens-utiles) + +**Présentation générale de l'application.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* + +## Limitations avec Yunohost + +**Explication des limitations actuelles en utilisation l'application avec YunoHost.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* + +## Applications clientes + +| Nom de l'applications | Plateforme | Multi-comptes | Autre réseaux supportés | Play Store | F-Droid | Apple Store | *Autres* | +|-----------------------|------------|---------------|-------------------------|------------|---------|-------------|----------| +| | | | | | | | | + +## Liens utiles + + + Site web : [SITE WEB](#) + + Documentation officielle : [LIEN DOCUMENTATION](#) + + Dépôt logiciel de l'application : [github.com - YunoHost-Apps/APPLICATION](#) + + Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com -YunoHost-Apps/APPLICATION/issues](#) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index c44785a5..c04910fa 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -27,6 +27,8 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio - les liens vers le site officiel - Les liens vers le package de YunoHost +Trame markdown pour la rédaction des pages de documentations : [ici](/app_writing_guide_fr) + ## Feuille de route 1. Documenter les applications. From fe1cb829b083017931dbc6a6119cc761c42ead37 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Fri, 3 Apr 2020 12:13:49 +0200 Subject: [PATCH 055/135] Add index MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_markdown_guide.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/doc_markdown_guide.md b/doc_markdown_guide.md index 9fac816d..7afe55b8 100644 --- a/doc_markdown_guide.md +++ b/doc_markdown_guide.md @@ -1 +1,29 @@ # Markdown Guide + +**Index** + - [The different title levels](#TitleLevels) + - [Paragraph formatting](#ParagraphFormatting) + - [Link creation](#LinkCreation) + + [Anchor creation](#AnchorCreation) + - [Display images](#DisplayImages) + - [Citation formatting](#CitationFormatting + - [Lists](#Lists) + + [Ordered](#Ordered) + + [Unordered](#Unordered) + - [Tables](#Tables) + - [Code segments](#CodeSegments) + +Markdown is a markup language from 2004, with many add-ons supporting its function and existence. This guide explores the possibilities and formatting of the language in the context of YunoHost documentation, and not the Markdown language on its own. + +Markdown allows formatting of text using tags, in human-readable format; even with formatting. Outside of plaintext editors, a number of specific programs exist. (Markdown on [framalibre.org] (https://framalibre.org/recherche-par-crit-res?keys=markdown)). It is easy to deal with. + +## The different title levels + +Write headlines like this: +```markdown +# Level 1 +## Level 2 +### Level 3 +#### Level 4 +##### Level 5 +###### Level 6 From 326196a2ccb0af09d40d43f273990a8a171a5ddd Mon Sep 17 00:00:00 2001 From: Yunobot Date: Fri, 3 Apr 2020 14:27:39 +0000 Subject: [PATCH 056/135] =?UTF-8?q?J'ai=20ajout=C3=A9=20BigBlueButton?= =?UTF-8?q?=20=C3=A0=20la=20liste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps_wishlist.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps_wishlist.md b/apps_wishlist.md index 778f1d95..10b95362 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -1,5 +1,7 @@
    La page demandée n'est pour le moment pas disponible en français. Voici à la place la version en anglais. Si vous souhaitez commencer une traduction de cette page, vous pouvez vous rendre sur [cette page](https://yunohost.org/#/apps_wishlist_fr).
    +
    La page demandée n'est pour le moment pas disponible en français. Voici à la place la version en anglais. Si vous souhaitez commencer une traduction de cette page, vous pouvez vous rendre sur [cette page](https://yunohost.org/#/apps_wishlist_fr).
    + # Apps wishlist
    Before to add an app in wishlist please check your app is not already in official or community list: see the apps list
    @@ -18,6 +20,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Auth0 SSO Dashboard](https://github.com/auth0-extensions/auth0-sso-dashboard-extension) - [Bitmessage](https://bitmessage.org/wiki/Compiling_instructions) / [github](https://github.com/Bitmessage/PyBitmessage) - [Beehive](https://github.com/muesli/beehive) +- [BigBlueButton](https://bigbluebutton.org) / [install instruction](http://docs.bigbluebutton.org/2.2/install.html) / [github](https://github.com/bigbluebutton/bigbluebutton) Complete open source web conferencing system. - [Bludit](https://www.bludit.com) / [github](https://github.com/bludit/bludit) - [Blynk](https://github.com/blynkkk/blynk-library) - [Bookstack](https://www.bookstackapp.com/) / [github](https://github.com/BookStackApp/BookStack) From a7748996764fad24341abe903a157d374b62077d Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Fri, 3 Apr 2020 19:01:44 +0200 Subject: [PATCH 057/135] French translation --- contributordoc.md | 1 + contributordoc_fr.md | 1 + packaging_apps.md | 2 +- packaging_apps_fr.md | 2 +- packaging_apps_git.md | 23 +++-- packaging_apps_git_fr.md | 200 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 215 insertions(+), 14 deletions(-) create mode 100644 packaging_apps_git_fr.md diff --git a/contributordoc.md b/contributordoc.md index 31bc784e..4570723d 100644 --- a/contributordoc.md +++ b/contributordoc.md @@ -7,6 +7,7 @@ * [Apps wishlist](/apps_wishlist) * [General introduction to app packaging](/packaging_apps_start) * [Technical introduction to app packaging](/packaging_apps) + * [How to use Git to package apps](/packaging_apps_git) * [Setting up a dev environment with VirtualBox](/packaging_apps_virtualbox) * [Manifest](packaging_apps_manifest) * [Scripts](packaging_apps_scripts) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index 57ad494d..4c932803 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -7,6 +7,7 @@ * [Liste d'apps souhaitées par la communauté](/apps_wishlist) * [Introduction générale au packaging d'apps](/packaging_apps_start) * [Introduction technique au packaging d'apps](/packaging_apps) + * [Comment utiliser Git pour packager les applications](/packaging_apps_git) * [Déployer un environnement de développement avec VirtualBox](/packaging_apps_virtualbox) * [Manifest](/packaging_apps_manifest) * [Scripts](/packaging_apps_scripts) diff --git a/packaging_apps.md b/packaging_apps.md index 5da09827..bf2c2601 100644 --- a/packaging_apps.md +++ b/packaging_apps.md @@ -5,7 +5,7 @@ The purpose of this document is to teach you how to package an application for Y ### Requirements To package an application, here are the requirements: * An account on a git server (e.g. [GitHub](https://github.com/)) to publish the application; -* Basic knowledge of `git`, bash shell and other programming stuff; +* Basic knowledge of [git](/packaging_apps_git), bash shell and other programming stuff; * A testing [virtual machine or a distant server](/install), or a development environement, [ynh-dev](https://github.com/yunohost/ynh-dev) or [VirtualBox](/packaging_apps_virtualbox), to package and test the package. ### Content diff --git a/packaging_apps_fr.md b/packaging_apps_fr.md index df480230..a0c1f114 100644 --- a/packaging_apps_fr.md +++ b/packaging_apps_fr.md @@ -5,7 +5,7 @@ Ce document a pour but de vous apprendre à packager une application pour YunoHo ### Prérequis Pour packager une application, voici les prérequis : * Un compte sur un serveur git comme [GitHub](https://github.com/) pour pouvoir ensuite publier l’application ; -* Maîtriser un minimum `git`, le Shell et d’autres notions de programmation ; +* Maîtriser un minimum [git](/packaging_apps_git), le Shell et d’autres notions de programmation ; * Une [machine virtuelle ou sur un serveur distant](/install) ou un environnement de développement, [ynh-dev](https://github.com/yunohost/ynh-dev) ou [VirtualBox](/packaging_apps_virtualbox), pour packager et tester son paquet. diff --git a/packaging_apps_git.md b/packaging_apps_git.md index ed2b9066..7fd2e007 100644 --- a/packaging_apps_git.md +++ b/packaging_apps_git.md @@ -1,10 +1,10 @@ -# How to use git to package apps +# How to use Git to package apps Git... Our dear beloved Git, which can be described also as "Goddamn Idiotic Truckload of sh*t", according to Linus. -Be sure if you don't know git yet that you will soon agree with that description. +Be sure if you don't know Git yet that you will soon agree with that description. -YunoHost and all our apps are on the git forge GitHub. Which means that if you want to work on an app, sooner or later you're going to have to deal with git. -So let's see how to work with git to be able to contribute in the context of YunoHost. +YunoHost and all our apps are on the Git forge GitHub. Which means that if you want to work on an app, sooner or later you're going to have to deal with Git. +So let's see how to work with Git to be able to contribute in the context of YunoHost. ## Working with GitHub @@ -38,8 +38,7 @@ If you have the permission to write, you will just edit the file, without forkin #### Commit your changes When you're done with your modification on the file, you can commit your changes. -Behind that word, the idea is quite simple, you're just going to save your changes... - +Behind that word, the idea is quite simple, you're just going to save your changes... The first field is the name of your commit, a very short sentence to explain why you did this modification. @@ -89,7 +88,7 @@ Your repo will be moved into the organization, you don't have to remove the orig As we have seen, you can do a lot of things directly on GitHub. But when you need to edit multiple files, or when you need to work on your code on your own, it's better to work directly on your computer. -Before going to the hellish part of git, let's see 2 different ways to start working with git. +Before going to the hellish part of Git, let's see 2 different ways to start working with Git. #### First case: Creating a new package @@ -107,7 +106,7 @@ git clone https://github.com/YunoHost/example_ynh ``` `git clone` will download a copy of the repository. You will have the complete repository, with its branches, commits, and everything (into that apparently little `.git` directory). -To git clone is usually the starting point of any local work with git. +To git clone is usually the starting point of any local work with Git. *A side note though, if you expect to send your modifications back to the distant repository on GitHub, be sure to have the permission to write on this repository. Otherwise, fork before and clone your fork, on which you do have the permission.* @@ -144,7 +143,7 @@ If it appears that you're not on the branch you wanted to be, or you're actually ``` git checkout testing ``` -*Read carefully what git says when you validate a command, do never forget that git is sneaky...* +*Read carefully what Git says when you validate a command, do never forget that Git is sneaky...* #### Git pull before anything else @@ -152,7 +151,7 @@ You're finally on the right branch, and ready to work. **Wait ! A nasty trap is waiting for you...** Before ending up in an inextricable situation. Start with a `git pull` to update your branch to the latest change from the distant repository. -*Sometimes, you will encounter an impossible situation where git is saying that you can't pull because you have local changes. But you don't care of those local modifications, you just want to get the last version of the distant branch. But git don't care about what YOU want...* +*Sometimes, you will encounter an impossible situation where Git is saying that you can't pull because you have local changes. But you don't care of those local modifications, you just want to get the last version of the distant branch. But Git don't care about what YOU want...* *I have to admit that my only solution is as highly efficient as dirty... A good old `rm -r` of the repository and a `git clone`* #### Let's work @@ -160,7 +159,7 @@ Before ending up in an inextricable situation. Start with a `git pull` to update Eventually, you can work on your code. When you are finally ok with what you have done, it's time to validate your work. -The first step is to inform git about which file(s) to validate. To do so, we'll use `git add` +The first step is to inform Git about which file(s) to validate. To do so, we'll use `git add` ``` git add my_file git add my_other_file and_also_this_one @@ -182,7 +181,7 @@ To create a new branch and move to this branch, you can use `git checkout -b my_ #### Commit -To commit is simply to validate your work in git. As you can do in GitHub. +To commit is simply to validate your work in Git. As you can do in GitHub. To have the same fields that you had on GitHub, with the name of the commit, and a longer explanation. You can simply use `git commit`. The first line, before the comments, is for the name of the commit. After all the comments, you can add an explanation if you want to. diff --git a/packaging_apps_git_fr.md b/packaging_apps_git_fr.md new file mode 100644 index 00000000..2b4b45d4 --- /dev/null +++ b/packaging_apps_git_fr.md @@ -0,0 +1,200 @@ +# Comment utiliser Git pour packager les applications + +Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t", selon Linus. +Si vous ne connaissez pas encore Git, soyez sûr que vous serez bientôt d'accord avec cette description. + +YunoHost et toutes nos applications sont sur la forge Git GitHub. Ce qui veut dire que si vous voulez travailler sur une application, tôt ou tard vous allez devoir faire face à Git. +Alors voyons comment travailler avec Git pour pouvoir contribuer dans le contexte de YunoHost. + +## Travailler avec GitHub + +Commençons par la partie facile, GitHub est livré avec une interface web "facile" à utiliser. + +*Tout d'abord, malheureusement il n'y a pas moyen de contourner ça, vous devez avoir un compte sur GitHub.* + +#### Branches + +Ensuite, et c'est probablement l'une des choses les plus importantes, **ne travaillez pas directement sur la branche master**. +Désolé, il fallait que ce soit dit ! + +Les branches sont, comme l'explique GitHub, "*une version parallèle d'un dépôt. Elle est contenue dans le dépôt, mais n'affecte pas les autres branches. Elle vous permet de travailler librement sans perturber la version "live".*" + +La branche master est la branche qui contient la version de l'application que les utilisateurs installeront et utiliseront effectivement. +La chose habituelle à faire est de travailler à partir de la branche testing, et lorsque tout est réglé et testé, vous pouvez fusionner la branche testing dans master, afin que les utilisateurs puissent profiter de la nouvelle version de votre package. + +Pour voir et modifier la branche actuelle, utilisez ce bouton : + + +#### Modifier un fichier + +Maintenant que vous êtes sur la bonne branche, voyons comment éditer un fichier sur GitHub. + +Vous pouvez éditer n'importe quel fichier en utilisant l'icône du petit crayon : + + +Si vous n'avez pas la permission d'écrire sur le dépôt, vous verrez (comme sur l'image) que vous allez créer un fork (nous verrons plus loin ce qu'est un fork). +Si vous avez la permission d'écrire, vous allez simplement modifier le fichier, sans forker. + +#### Validez vos modifications + +Lorsque vous avez fini de modifier le fichier, vous pouvez faire un commit de vos modifications. +Derrière ce mot, l'idée est assez simple, vous allez juste enregistrer vos modifications... + + +Le premier champ est le nom de votre commit, une phrase très courte pour expliquer pourquoi vous avez fait cette modification. +Le deuxième champ est un champ plus grand pour une explication plus complète, si vous en avez besoin. + +Enfin, si vous modifiez un dépôt sur lequel vous avez la permission d'écrire, vous pouvez soit faire un commit directement sur la branche en cours, soit créer une nouvelle branche. +Il est généralement préférable de créer une nouvelle branche, de cette façon vous gardez vos modifications sur une version *parallèle* du dépôt. Vos modifications seront discutées dans une pull request (expliquée ci-dessous) puis finalement fusionnées dans la branche d'origine. + +#### Forker ou ne pas forker + +Un fork est une copie d'un dépôt sur votre propre compte. +Nous avons déjà vu que si vous n'avez pas l'autorisation d'écrire dans un dépôt, la modification d'un fichier créera automatiquement un fork. +Comme le fork est sur votre compte, vous avez toujours la permission d'écrire dessus. +Mais même si un fork n'est pas le véritable dépôt, mais juste une copie, un fork est toujours lié à son parent. Nous verrons plus tard que la création d'un fork est vraiment utile lors de l'ouverture d'une pull request. + +Lorsque vous créez un nouveau package, il est courant d'utiliser l'[application d'exemple](https://github.com/YunoHost/example_ynh) comme base. +Mais, comme vous ne voulez pas garder ce lien vers l'application d'exemple, vous ne devez pas forker l'application d'exemple. Vous la clonerez plutôt. +Malheureusement, cloner une application est un peu plus compliqué sur GitHub. Nous verrons plus tard comment cloner vers un dépôt local à la place. + +Nous avons vu comment éditer un fichier, et comment cela peut forker l'application. +Mais, lorsque vous voulez éditer plusieurs fichiers, l'interface GitHub n'est pas vraiment la meilleure solution. Dans une telle situation, vous préférez cloner le dépôt et travailler sur un dépôt local. +Il se peut que vous deviez tout de même forker sur votre propre compte pour pouvoir enregistrer vos modifications si vous n'avez pas les autorisations sur le dépôt distant. + +#### Pull request + +Après avoir effectué vos commits, que ce soit sur une branche ou un fork, vous souhaitez proposer vos modifications pour qu'elles soient intégrées dans le dépôt principal, ou dans la branche d'origine. +Pour ce faire, vous allez créer une pull request. GitHub vous demande généralement directement si vous souhaitez le faire. +Sinon, vous trouverez le bouton de création d'une pull request juste ici : + + +Lors de la création d'une pull request à partir d'un fork, pour faciliter le travail de révision du code, **ne jamais** décocher la case *Allow edits from maintainers*. Cette option permet simplement aux mainteneurs du dépôt d'origine de modifier directement votre travail. + +#### Organisation YunoHost-Apps + +Conformément à la [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines.md#yep-17), votre application doit être intégrée à l'organisation YunoHost-Apps, mais si vous n'avez jamais contribué à une application auparavant ou si vous n'avez jamais eu d'application dans cette organisation, vous n'en aurez peut-être pas l'autorisation. + +Tout d'abord, vous devez avoir la permission d'écrire dans l'organisation, pour ce faire, demandez au groupe Apps sur le salon xmpp Apps. + +Pour transférer votre application sur l'organisation YunoHost-Apps, allez dans votre dépôt et dans l'onglet *Settings*. +En bas de la page, vous trouverez *Transfer ownership*. +Dans le champ *New owner’s GitHub username or organization name*, tapez *YunoHost-Apps*. +Votre dépôt sera déplacé dans l'organisation, vous n'avez pas besoin de supprimer le dépôt d'origine. + + +## Travailler avec Git en local + +Comme nous l'avons vu, vous pouvez faire beaucoup de choses directement sur GitHub. +Mais lorsque vous devez modifier plusieurs fichiers, ou lorsque vous devez travailler sur votre code de votre côté, il est préférable de travailler directement sur votre ordinateur. + +Avant d'aller dans la partie infernale de Git, voyons 2 façons différentes de commencer à travailler avec Git. + +#### Premier cas : Créer un nouveau package + +Vous avez découvert, choqué, que la merveilleuse application que vous aimez utiliser tous les jours n'a pas encore son package YunoHost. Et parce que vous êtes sympa, vous avez décidé de créer vous-même le package, pour que tout le monde puisse apprécier cette application. +Quelle bonne idée ! + +Le mieux est de commencer par l'[application d'exemple] (https://github.com/YunoHost/example_ynh). Mais comme nous l'avons déjà expliqué, vous ne voulez pas forker, parce que si vous le faites, vous allez garder ce lien vers l'application d'exemple et c'est vraiment ennuyeux. +Donc, vous allez le faire différemment. Vous allez cloner ! + +##### git clone + +Pour cloner, vous allez faire : +``` +git clone https://github.com/YunoHost/example_ynh +``` +`git clone` téléchargera une copie du dépôt. Vous aurez le dépôt complet, avec ses branches, ses commits, et tout le reste (dans cet apparent petit répertoire `.git`). + +git clone est généralement le point de départ de tout travail local avec Git. + +*Toutefois, si vous comptez envoyer vos modifications sur le dépôt distant sur GitHub, assurez-vous d'avoir les droits d'écriture sur ce dépôt. Sinon, forkez avant et clonez votre fork, pour lequel vous avez la permission.* + +##### Mon tout nouveau package, suite + +Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package. Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*. +Ne vous embêtez pas avec des README, .gitignore ou licence. Créez simplement le dépôt lui-même. +vous pouvez maintenant cloner ce nouveau dépôt avec Git. + + +Vous disposez maintenant de 2 dépôts clonés sur votre ordinateur. +Copiez tous les fichiers de l'application example_ynh, **excepté le répertoire .git** (vous voulez juste les fichiers eux-mêmes) dans votre nouveau package. + +*Si vous le souhaitez, vous pouvez supprimer l'application example_ynh. Nous n'en avons plus besoin.* + +Vous êtes prêt à travailler sur votre nouveau package ! + +#### Deuxième cas : Travailler localement sur un dépôt + +Vous disposez déjà d'un dépôt, mais ce que vous voulez, c'est travailler localement, de sorte que vous puissiez modifier plusieurs fichiers. +Il vous suffit de cloner le dépôt, le répertoire .git est le lien vers le dépôt distant. Rien d'autre à faire qu'un `git clone`. + +#### Branches + +Vous avez bien votre copie local du dépôt, mais comme vous avez lu attentivement cette documentation jusque-là, vous savez que vous devez vous assurer d'être sur la branche testing avant de commencer à travailler. + +Pour voir les branches, et savoir sur quelle branche vous êtes réellement, alors que vous êtes dans le répertoire de votre dépôt, tapez `git branch`. +La branche courante est mise en évidence et précédée d'un "*". + +#### git checkout + +S'il apparaît que vous n'êtes pas sur la branche où vous vouliez être, ou que vous êtes en fait sur master (ce qui est mal !), vous pouvez passer à une autre branche avec `git checkout`. +``` +git checkout testing +``` +*Lisez attentivement ce que Git dit quand vous validez une commande, n'oubliez jamais que Git est sournois...* + +#### git pull avant tout + +Vous êtes enfin dans la bonne branche, et prêt à travailler. +**Attendez ! Un vilain piège vous attend...** +Avant de vous retrouver dans une situation inextricable. Commencez par un `git pull` pour mettre à jour votre branche avec les derniers changements du dépôt distant. + +*Parfois, vous rencontrerez une situation impossible où Git vous dira que vous ne pouvez pas pull parce que vous avez des changements locaux. Mais vous ne vous souciez pas de ces modifications locales, vous voulez juste obtenir la dernière version de la branche distante. Mais Git ne se soucie pas de ce que VOUS voulez...* +*Je dois admettre que ma seule solution est aussi efficace que sale... Un bon vieux `rm -r` du dépôt et un `git clone`* + +#### Il est temps de travailler + +Vous pouvez finalement travailler sur votre code. +Lorsque vous êtes enfin d'accord avec ce que vous avez fait, il est temps de valider votre travail. + +La première étape consiste à informer Git sur le(s) fichier(s) à valider. Pour ce faire, nous utiliserons `git add`. +``` +git add mon_fichier +ajouter mon_autre_fichier et_aussi_celui_ci +``` +Si vous souhaitez valider tous votre travail, vous pouvez aussi simplement faire +``` +git add --all +``` + +Pour vérifier l'état actuel de votre validation, vous pouvez utiliser `git status`. Il vous montrera quels fichiers seront inclus dans votre commit, et quels fichiers sont modifiés, mais pas encore inclus. +`git status -v` vous indiquera également quelle partie des fichiers est modifiée. Une bonne façon de s'assurer que vous n'avez pas fait d'erreur avant de faire un commit. + +#### git checkout -b + +Avant de faire un commit, ou après, ou avant de commencer à travailler. Quand vous en avez envie ! +Vous devriez envisager d'ajouter votre travail à une branche séparée, de cette façon, il sera facile de créer une pull request dans la branche testing et de discuter avec les autres packagers de ce que vous suggérez de changer. + +Pour créer une nouvelle branche et passer à cette branche, vous pouvez utiliser `git checkout -b my_new_branch`. + +#### Commit + +Faire un commit, c'est simplement valider son travail dans Git. Comme vous pouvez le faire dans GitHub. +Pour avoir les mêmes champs que vous aviez sur GitHub, avec le nom du commit, et une explication plus longue. Vous pouvez simplement utiliser `git commit`. +La première ligne, avant les commentaires, est pour le nom du commit. +Après tous les commentaires, vous pouvez ajouter une explication si vous le souhaitez. + +Si vous voulez faire un commit avec seulement un nom pour votre commit, vous pouvez utiliser une simple commande : +``` +git commit -m "My commit name" +``` + +#### Push vers le dépôt distant + +Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub. +Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information). +Ensuite, vous pouvez git push +``` +git push -u origin BRANCH_NAME +``` From 85d0e115a245ba41e27631055d2707159cd96a1f Mon Sep 17 00:00:00 2001 From: pitchum Date: Sat, 4 Apr 2020 13:14:13 +0200 Subject: [PATCH 058/135] Update XMPP documentation (DNS config in yunohost). --- dns_config.md | 1 + dns_config_fr.md | 1 + 2 files changed, 2 insertions(+) diff --git a/dns_config.md b/dns_config.md index 8dcee614..d09f84a7 100644 --- a/dns_config.md +++ b/dns_config.md @@ -42,6 +42,7 @@ _xmpp-server._tcp 3600 IN SRV 0 5 5269 your.domain.tld. muc 3600 IN CNAME @ pubsub 3600 IN CNAME @ vjud 3600 IN CNAME @ +xmpp-upload 3600 IN CNAME @ # # Mail (MX, SPF, DKIM and DMARC) diff --git a/dns_config_fr.md b/dns_config_fr.md index 42a50c2b..1d06e77c 100644 --- a/dns_config_fr.md +++ b/dns_config_fr.md @@ -44,6 +44,7 @@ _xmpp-server._tcp 3600 IN SRV 0 5 5269 votre.domaine.tld. muc 3600 IN CNAME @ pubsub 3600 IN CNAME @ vjud 3600 IN CNAME @ +xmpp-upload 3600 IN CNAME @ # # Mail (MX, SPF, DKIM et DMARC) From 231b72fbfec66c97d95750a66be9be599138aa0f Mon Sep 17 00:00:00 2001 From: pitchum Date: Sat, 4 Apr 2020 13:36:13 +0200 Subject: [PATCH 059/135] Refresh XMPP clients list. - removed clients that should not be recommended anymore - added modern clients - fixed some URLs --- XMPP.md | 26 +++++++++++++------------- XMPP_es.md | 35 ++++++++++++++++++----------------- XMPP_fr.md | 27 ++++++++++++++------------- 3 files changed, 45 insertions(+), 43 deletions(-) diff --git a/XMPP.md b/XMPP.md index f549d01d..8355f87a 100644 --- a/XMPP.md +++ b/XMPP.md @@ -18,28 +18,28 @@ You can connect to your YunoHost XMPP account in different ways. ### Web clients -- [Movim](https://pod.movim.eu) -- [Libervia/Salut à Toi](http://salut-a-toi.org/). - +- [Movim](https://movim.eu) +- [ConverseJS](https://conversejs.org/) +- [Libervia/Salut à Toi](https://salut-a-toi.org/) ### Desktop clients -- [Pidgin](http://pidgin.im/) (multiplatform), -- [Gajim](http://gajim.org/) (Linux, Windows), -- [Dino](https://dino.im) (Linux), -- [Thunderbird](https://www.thundebird.net/) (multiplatform), -- [Jitsi](http://jitsi.org/) (multiplatform) -- [Adium](https://adium.im/) (Mac OS). +- [Gajim](http://gajim.org/) (Linux,Windows) +- [Dino](https://dino.im) (Linux) +- [Thunderbird](https://www.thunderbird.net/fr/) (multiplatform) +- [Beagle IM](https://beagle.im/) (Mac OS) +- [Profanity](https://profanity-im.github.io/) (Linux) ### Mobile clients -- [Xabber](http://xabber.com) (Android) - [Conversations](https://conversations.im/) (Android) +- [Xabber](http://xabber.com) (Android) - [Movim under Android](https://movim.eu) -- [Monal](https://itunes.apple.com/us/app/monal-free-xmpp-chat/id317711500?mt=8) (iOS) -- [Kaidan](https://github.com/KaidanIM/Kaidan) (Ubuntu Touch / Plasma Mobile) +- [Monal](https://monal.im/) (iOS) +- [Siskin IM](https://siskin.im/) (iOS) +- [Kaidan](https://www.kaidan.im/) (Ubuntu Touch / Plasma Mobile) -Here is an exhaustive list of XMPP clients : https://en.wikipedia.org/wiki/Comparison_of_XMPP_clients +Here is an exhaustive list of XMPP clients : https://xmpp.org/software/clients.html ## Encrypt conversations with OMEMO diff --git a/XMPP_es.md b/XMPP_es.md index 76f45f25..af443fe1 100644 --- a/XMPP_es.md +++ b/XMPP_es.md @@ -1,4 +1,4 @@ -#Chat, VoIP y red local con +# Chat, VoIP y red local con Yunohost está instalado con un servidor de mensajería instantánea Metronome que implementa el [protocolo XMPP](https://es.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol). @@ -6,31 +6,32 @@ XMPP es un protocolo abierto y extensible que también permite crear salones de Todas las aplicaciones basadas en XMPP son compatibles entre ellas : cuando utilizas un cliente XMPP puedes discutir con cualquier persona que tenga una cuenta XMPP/Jabber. Este protocolo ya es utilizado por millones de personas en el mundo. -### Cuenta XMPP/Jabber +## Cuenta XMPP/Jabber Una cuenta XMPP/Jabber está basada en un ID bajo la forma `usuario@dominio.tld`, así como una contraseña. La contraseña es la de la cuenta del usuario de Yunohost. -### Conectarse a XMPP +## Conectarse a XMPP Existen varios clientes web de tipo red social, como : -- [Movim](https://pod.movim.eu) -- [Libervia/Salut à Toi](http://salut-a-toi.org/). +- [Movim](https://movim.eu) +- [ConverseJS](https://conversejs.org/) +- [Libervia/Salut à Toi](https://salut-a-toi.org/) -También puedes utilizar un cliente Desktop como : -- [Pidgin](http://pidgin.im/) (multiplataformas), -- [Gajim](http://gajim.org/index.fr.html) (Linux, Windows), -- [Dino](https://dino.im) (Linux), -- [Thunderbird](https://www.mozilla.org/fr/thunderbird/) (multiplataformas), -- [Jitsi](http://jitsi.org/) (multiplataformas) -- [Adium](https://adium.im/) (Mac OS). +También puedes utilizar un cliente Desktop como : +- [Gajim](https://gajim.org/es/) (Linux, Windows) +- [Dino](https://dino.im) (Linux) +- [Thunderbird](https://www.thunderbird.net/es-ES/) (multiplataformas) +- [Profanity](https://profanity-im.github.io/) (Linux) ... o un cliente smartphone : -* [Xabber](http://xabber.com) (Android) -* [Conversations](https://conversations.im/) (Android) -* [Movim sous Android](https://movim.eu) -* [Monal](https://itunes.apple.com/us/app/monal-free-xmpp-chat/id317711500?mt=8) (iOS) +- [Conversations](https://conversations.im/) (Android) +- [Xabber](http://xabber.com) (Android) +- [Movim sous Android](https://movim.eu) +- [Siskin IM](https://siskin.im/) (iOS) +- [Monal](https://monal.im/) (iOS) +- [Kaidan](https://www.kaidan.im/) (Ubuntu Touch / Plasma Mobile) -Aquí tienes una lista más exhaustiva de clientes XMPP (fr) : https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP +Aquí tienes una lista más exhaustiva de clientes XMPP (en) : https://xmpp.org/software/clients.html ### Cifrar tu conversaciones con OMEMO : diff --git a/XMPP_fr.md b/XMPP_fr.md index 0273219f..a5d4b0f7 100644 --- a/XMPP_fr.md +++ b/XMPP_fr.md @@ -18,25 +18,26 @@ Il existe différents types de clients pour se connecter à XMPP. ### Clients web -- [Movim](https://pod.movim.eu) -- [Libervia/Salut à Toi](http://salut-a-toi.org/). +- [Movim](https://movim.eu) +- [ConverseJS](https://conversejs.org/) +- [Libervia/Salut à Toi](https://salut-a-toi.org/) ### Clients de bureau -- [Pidgin](http://pidgin.im/) (multiplateforme), -- [Gajim](http://gajim.org/index.fr.html) (Linux, Windows), -- [Dino](https://dino.im) (Linux), -- [Thunderbird](https://www.mozilla.org/fr/thunderbird/) (multiplateforme), -- [Jitsi](http://jitsi.org/) (multiplateforme) -- [Adium](https://adium.im/) (Mac OS). +- [Gajim](http://gajim.org/fr/) (Linux,Windows) +- [Dino](https://dino.im) (Linux) +- [Thunderbird](https://www.thunderbird.net/) (multiplateforme) +- [Beagle IM](https://beagle.im/) (Mac OS) +- [Profanity](https://profanity-im.github.io/) (Linux) ### Clients sur mobile -* [Xabber](http://xabber.com) (Android) -* [Conversations](https://conversations.im/) (Android) -* [Movim sous Android](https://movim.eu) -* [Monal](https://itunes.apple.com/us/app/monal-free-xmpp-chat/id317711500?mt=8) (iOS) -- [Kaidan](https://github.com/KaidanIM/Kaidan) (Ubuntu Touch / Plasma Mobile) +- [Conversations](https://conversations.im/) (Android) +- [Xabber](http://xabber.com) (Android) +- [Movim sous Android](https://movim.eu) +- [Monal](https://monal.im/) (iOS) +- [Siskin IM](https://siskin.im/) (iOS) +- [Kaidan](https://www.kaidan.im/) (Ubuntu Touch / Plasma Mobile) Voici une liste plus exhaustive des clients XMPP : https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP From aec09ed77504eaf7732055189f3dd45a237fcb18 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Sun, 5 Apr 2020 12:51:15 +0200 Subject: [PATCH 060/135] Update link to dev-ci script --- packaging_apps_ci_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging_apps_ci_fr.md b/packaging_apps_ci_fr.md index 67aeaabb..65105e3f 100644 --- a/packaging_apps_ci_fr.md +++ b/packaging_apps_ci_fr.md @@ -25,7 +25,7 @@ Cependant, pour éviter tout problème de sécurité, votre connexion ssh sera t Vous ne pouvez utiliser que `sftp` ou `rsync` pour copier vos applications dans ce répertoire. `Git` n'est pas disponible, ni la plupart des commandes bash habituelles. Pour faciliter votre utilisation de ce CI, un petit script peut être utilisé pour copier vos applications dans votre répertoire. -Copiez ce [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/Send%20CI%20dev.sh) dans votre répertoire de travail habituel et indiquez vos informations. +Copiez ce [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/send_to_dev_ci.sh) dans votre répertoire de travail habituel et indiquez vos informations. --- From 62d75c108eee2e450f10e9a10fa6d87aeb1e19da Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Sun, 5 Apr 2020 12:51:19 +0200 Subject: [PATCH 061/135] Update link to dev-ci script --- packaging_apps_ci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging_apps_ci.md b/packaging_apps_ci.md index 0401e0df..543da54d 100644 --- a/packaging_apps_ci.md +++ b/packaging_apps_ci.md @@ -25,7 +25,7 @@ However, to prevent any security issues, your ssh connection will be very limite You can only use `sftp` or `rsync` to copy your apps into that directory. `Git` isn't available, neither most of the usual bash commands. To ease your usage of this CI, a small script can be used to copy your apps to your directory. -Copy this [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/Send%20CI%20dev.sh) into your usual working directory and fill it with your info. +Copy this [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/send_to_dev_ci.sh) into your usual working directory and fill it with your info. Make sure the content of your `check_process` file is correct then transfer your files. When your files have been transfered, you can monitor the CI pipeline on https://ci-apps-dev.yunohost.org. From 40e291afbac7731a883eef788512a3a1b898857f Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 5 Apr 2020 20:10:24 +0200 Subject: [PATCH 062/135] Update apps_wishlist.md --- apps_wishlist.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps_wishlist.md b/apps_wishlist.md index 10b95362..153f5799 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -1,7 +1,3 @@ -
    La page demandée n'est pour le moment pas disponible en français. Voici à la place la version en anglais. Si vous souhaitez commencer une traduction de cette page, vous pouvez vous rendre sur [cette page](https://yunohost.org/#/apps_wishlist_fr).
    - -
    La page demandée n'est pour le moment pas disponible en français. Voici à la place la version en anglais. Si vous souhaitez commencer une traduction de cette page, vous pouvez vous rendre sur [cette page](https://yunohost.org/#/apps_wishlist_fr).
    - # Apps wishlist
    Before to add an app in wishlist please check your app is not already in official or community list: see the apps list
    @@ -157,4 +153,4 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Zoneminder](https://github.com/ZoneMinder/zoneminder) - [Zulip](https://zulipchat.com/) / [github](https://github.com/zulip/zulip) - [Yggdrasil](https://yggdrasil-network.github.io/) / [github](https://github.com/yggdrasil-network/yggdrasil-go) -- [WiseMapping](http://www.wisemapping.com/inyourserver.html) / [developpement](https://bitbucket.org/wisemapping/wisemapping-open-source) \ No newline at end of file +- [WiseMapping](http://www.wisemapping.com/inyourserver.html) / [developpement](https://bitbucket.org/wisemapping/wisemapping-open-source) From 0899cdc0877df2790e2c5e9ebae945e35a6682d0 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Sun, 5 Apr 2020 20:29:50 +0000 Subject: [PATCH 063/135] Put the version into the CLI as occ requires at leat PHP 7.2 and the used default seems to be PHP 7.0 --- app_nextcloud.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_nextcloud.md b/app_nextcloud.md index 44bfa713..4bd63778 100644 --- a/app_nextcloud.md +++ b/app_nextcloud.md @@ -128,7 +128,7 @@ Run a scan of the new directory by Nextcloud: ```bash cd /var/www/nextcloud -sudo -u nextcloud php occ files:scan --all +sudo -u nextcloud php7.3 occ files:scan --all ``` It's over now. Now test if everything is fine, try connecting to your Nextcloud instance, upload a file, check its proper synchronization. From 4511f6c8acd3d9704391e4eaf681294c5ec04be1 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Sun, 5 Apr 2020 22:50:07 +0200 Subject: [PATCH 064/135] Tell simone that's bash... --- packaging_apps_git_fr.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packaging_apps_git_fr.md b/packaging_apps_git_fr.md index 2b4b45d4..b66fefc4 100644 --- a/packaging_apps_git_fr.md +++ b/packaging_apps_git_fr.md @@ -101,7 +101,7 @@ Donc, vous allez le faire différemment. Vous allez cloner ! ##### git clone Pour cloner, vous allez faire : -``` +```bash git clone https://github.com/YunoHost/example_ynh ``` `git clone` téléchargera une copie du dépôt. Vous aurez le dépôt complet, avec ses branches, ses commits, et tout le reste (dans cet apparent petit répertoire `.git`). @@ -139,7 +139,7 @@ La branche courante est mise en évidence et précédée d'un "*". #### git checkout S'il apparaît que vous n'êtes pas sur la branche où vous vouliez être, ou que vous êtes en fait sur master (ce qui est mal !), vous pouvez passer à une autre branche avec `git checkout`. -``` +```bash git checkout testing ``` *Lisez attentivement ce que Git dit quand vous validez une commande, n'oubliez jamais que Git est sournois...* @@ -159,12 +159,12 @@ Vous pouvez finalement travailler sur votre code. Lorsque vous êtes enfin d'accord avec ce que vous avez fait, il est temps de valider votre travail. La première étape consiste à informer Git sur le(s) fichier(s) à valider. Pour ce faire, nous utiliserons `git add`. -``` +```bash git add mon_fichier ajouter mon_autre_fichier et_aussi_celui_ci ``` Si vous souhaitez valider tous votre travail, vous pouvez aussi simplement faire -``` +```bash git add --all ``` @@ -186,7 +186,7 @@ La première ligne, avant les commentaires, est pour le nom du commit. Après tous les commentaires, vous pouvez ajouter une explication si vous le souhaitez. Si vous voulez faire un commit avec seulement un nom pour votre commit, vous pouvez utiliser une simple commande : -``` +```bash git commit -m "My commit name" ``` @@ -195,6 +195,6 @@ git commit -m "My commit name" Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub. Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information). Ensuite, vous pouvez git push -``` +```bash git push -u origin BRANCH_NAME ``` From 491705e177001f89d6b0055c7a3351142ea5af51 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Sun, 5 Apr 2020 22:51:56 +0200 Subject: [PATCH 065/135] Tell simone that's bash... --- packaging_apps_git.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packaging_apps_git.md b/packaging_apps_git.md index 7fd2e007..1ddb6ff2 100644 --- a/packaging_apps_git.md +++ b/packaging_apps_git.md @@ -101,7 +101,7 @@ So, you're going to do it differently. You're going to clone ! ##### git clone To clone, you're going to do: -``` +```bash git clone https://github.com/YunoHost/example_ynh ``` `git clone` will download a copy of the repository. You will have the complete repository, with its branches, commits, and everything (into that apparently little `.git` directory). @@ -140,7 +140,7 @@ The current branch is highlighted and preceded by a `*`. #### git checkout If it appears that you're not on the branch you wanted to be, or you're actually on master (which is bad !), you can move to another branch with `git checkout` -``` +```bash git checkout testing ``` *Read carefully what Git says when you validate a command, do never forget that Git is sneaky...* @@ -160,12 +160,12 @@ Eventually, you can work on your code. When you are finally ok with what you have done, it's time to validate your work. The first step is to inform Git about which file(s) to validate. To do so, we'll use `git add` -``` +```bash git add my_file git add my_other_file and_also_this_one ``` If you want to validate all your work, you can also simply do -``` +```bash git add --all ``` @@ -187,7 +187,7 @@ The first line, before the comments, is for the name of the commit. After all the comments, you can add an explanation if you want to. If you want to commit with only a name for your commit, you can use a simple command: -``` +```bash git commit -m "My commit name" ``` @@ -196,6 +196,6 @@ git commit -m "My commit name" Your changes are validated, but only on your local clone of the repository. Now, you have to send those modifications back to the distant repository on GitHub. In order to do that, you need to know what is your current branch. (If you don't know, `git branch` will give you that info). Then you can git push -``` +```bash git push -u origin BRANCH_NAME ``` From 4c7084b080dd4ddf93b67a90353e9ce1176f9c5a Mon Sep 17 00:00:00 2001 From: Vincent Rubiolo Date: Tue, 31 Mar 2020 21:32:55 +0200 Subject: [PATCH 066/135] VirtualBox dev environment: english translation This commit translates the formerly French-only 'development environment with VirtualBox' documentation to english. The screen captures have been updated as well. --- images/virtualbox_packaging1-en.png | Bin 0 -> 42526 bytes ...ging1.jpg => virtualbox_packaging1-fr.jpg} | Bin images/virtualbox_packaging2-en.png | Bin 0 -> 20549 bytes ...ging2.jpg => virtualbox_packaging2-fr.jpg} | Bin images/virtualbox_packaging3-en.png | Bin 0 -> 54020 bytes ...ging3.jpg => virtualbox_packaging3-fr.jpg} | Bin images/virtualbox_packaging4-en.png | Bin 0 -> 116468 bytes ...ging4.jpg => virtualbox_packaging4-fr.jpg} | Bin images/virtualbox_packaging5-en.png | Bin 0 -> 115694 bytes ...ging5.jpg => virtualbox_packaging5-fr.jpg} | Bin packaging_apps_virtualbox.md | 92 +++++++++++++++++- packaging_apps_virtualbox_fr.md | 10 +- 12 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 images/virtualbox_packaging1-en.png rename images/{virtualbox_packaging1.jpg => virtualbox_packaging1-fr.jpg} (100%) create mode 100644 images/virtualbox_packaging2-en.png rename images/{virtualbox_packaging2.jpg => virtualbox_packaging2-fr.jpg} (100%) create mode 100644 images/virtualbox_packaging3-en.png rename images/{virtualbox_packaging3.jpg => virtualbox_packaging3-fr.jpg} (100%) create mode 100644 images/virtualbox_packaging4-en.png rename images/{virtualbox_packaging4.jpg => virtualbox_packaging4-fr.jpg} (100%) create mode 100644 images/virtualbox_packaging5-en.png rename images/{virtualbox_packaging5.jpg => virtualbox_packaging5-fr.jpg} (100%) diff --git a/images/virtualbox_packaging1-en.png b/images/virtualbox_packaging1-en.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1eaec05af9f3ed53443e1fbd6ec3c8d6a001b3 GIT binary patch literal 42526 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 O;dv0}R`K2GD}Mn?*mRQs literal 0 HcmV?d00001 diff --git a/images/virtualbox_packaging1.jpg b/images/virtualbox_packaging1-fr.jpg similarity index 100% rename from images/virtualbox_packaging1.jpg rename to images/virtualbox_packaging1-fr.jpg diff --git a/images/virtualbox_packaging2-en.png b/images/virtualbox_packaging2-en.png new file mode 100644 index 0000000000000000000000000000000000000000..87af1cca125ef3343c2d8315302665447f446eec GIT binary patch literal 20549 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 PXCdhK{@>O5hX48x@6`Eh literal 0 HcmV?d00001 diff --git a/images/virtualbox_packaging2.jpg b/images/virtualbox_packaging2-fr.jpg similarity index 100% rename from images/virtualbox_packaging2.jpg rename to images/virtualbox_packaging2-fr.jpg diff --git a/images/virtualbox_packaging3-en.png b/images/virtualbox_packaging3-en.png new file mode 100644 index 0000000000000000000000000000000000000000..6802a50bbda3b6e9fad18fac9317a6089e672393 GIT binary patch literal 54020 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 literal 0 HcmV?d00001 diff --git a/images/virtualbox_packaging3.jpg b/images/virtualbox_packaging3-fr.jpg similarity index 100% rename from images/virtualbox_packaging3.jpg rename to images/virtualbox_packaging3-fr.jpg diff --git a/images/virtualbox_packaging4-en.png b/images/virtualbox_packaging4-en.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0f76849381cd72afd06c1a8ab6a8788c0362ee GIT binary patch literal 116468 zcmb@tby$>L*FFrQgp`WXp`d`$AYCdV9g5Q3-Q9|G35YbPfQWR*07DO*l0y$Lboao_ zx4EDDdEejfzwbD{ZyyISaqXFF?Y-7I&vUIEuBt3Ue4F|<78Vw%NXmk`mj9_FHh&a-}@#7}`<2$dsv+4#J9x*+#yOF==2i2EJ@fmDH z&Lq@zXUwPHVEq4KM7O%)!Y*)L268Rj)}+pP^FLD-1rf7iI|mXyM7b(Ei(re8K6D=; z7Su&eB4X#}s_h`E6ciK{-KG*52hy+q9okRYO4YQrttA}|F>w|a;-{-VE~~ybw{Rmi zTrw|k*L<%oFE5I;&*6A)-@g43eCzx^#RH>?L?g;K;wn%6`@tjLDT>VOYym#lW?7IdB4V1h}M34h&vAp7!mzTItb``a;LUdm0+h5sm{P$|-ZwE&w*oqx= zq8?O985xa4EIuP+EH5UQtWe{-ety2K5s{l?3M&8o#>?potE-3i&`- z6%qFD_}l-U-owR>xugPHByyHpF=881kA|q+lA+&+P5_xpqFhfB$*b9@f@|lhFOXWV2Y#%}&c{ z7K=H7AVAVU#3O2@zM%NKpDP6S>8Yv3$iTHBEYiG>zVm(k&luQ$uc_I!{B$(su-k%G zSs~8_rWp|tdHuz9(k_M4s%`C-Mc)6OcS4eG;Wcl#(LA%Of!h^MmELvW;=1SUTJpX# z?{GCMd9vo9P6BmMK)tzOD{ODiSs5MixL)smaq+nJro?s~MIE{t(lyX+zg*2O=zb*2 zNzZqiOGQP!SPS-7tKumKhh1gX%6er*{C~zfsl472NF3}}|6^p1MR9tAZe}`9BzS6{ zXkeR`*y#aSfjmDE2Z?T<6K8ZYy5W2fx_^WqJ?xZ3_f%=N&JNthqN=ubcA|&KHaoEA$k6l~>2g1qa;EpH zm$S2TSAW0RMjvvj+z#)p-Sl(sbM42kfH$ST)7I|1bZBauoy~waG*VF%JRssWTB>Jb zDYb8VM6yYu>%aaMu&dqO5j|f!th1e~&p>Et-Mo3m zXWV62+_=Om^Zidw&Sz2y)Ta+N<8g@zQnsj*8Qy)7SD%9XOZvi*@#!CMSDuX*&$lPXwPDkK{BejnEjcJeY%I0181z}Z z$dZV$%L+Ju(9|Tcyu7TA%C+?CId3ZpXm6X1uE8ANeo?jk!Ms8^BxBBZqVaRc&BLrD z14fQ3e2-ZScO#iMui1eVR>NV7Odsk(hu&vT!Wdpt(wL!Ae40P#$x__=nSj(oke!@x z@zIYM-zQI=^qp5;A`>zaq(ax+XI!tUTz4pY2}>G!%IDRcMvo_WjV?QK7=(MoNhL$F zvbeY;F+`d4^m$E1>GsGdlawm`gjsuJM0gFieIKj5ynD3rwlgO;K*E{o?x~=bZ6>YsKxz@fn%D*Wn zR9&PEp$D#X&%5(Ox1{sr9rxW?SbcOF_GDUlmK%*AAG(#Ns#?vjS9mIao8S6ORmSk( zV4uRNTbg3r+xM2mbRF|Nr+zDi0mnjB&79H1PNS|*hgsrkm(R{FW})}i{1OtWa9XT4 zSnEevi`#89{B)y&;&Zc|Y**$z><|A0b6%kziv+4?UIIO|i66-RFo zt92PlVOwtV$hsc>Xa><#h5)@D78hua#w*~42W$JD*ZZm#wJ>t=jTht-HUZYdtd?kW1r+pBr{GQ@N8$VkFtHF z6HU;nF(M-nUrN51luA})22&DBWQb;!ko&{71(lY^!zcE8p!3V?78VK43l9;Tw9dQD6!Jvoec&EDKYbB%D>Xe7;NJ<==WtgWqm-aYSv46Oy}w@a9#d7d=T zBn4J58z9C;6Sy~|3KL*p*p+W#4vbE#IoMuen5^Im-b&ZSa(3wra_~_*!5OOYFwStP zpp#X)wE)=-SO!0Zm0Zy8-{k`bKxCE(Ctx?IOXYyqR9HCN#tOncDml3XF(-+Zzr?&hXYNyTnW$R!o9fb6JnW@7(Wi%g^;@bYvQ zJW@L24ZeyL^s*_e!qH@y))j=0rLSFK_`tXzL&c}0NE-$Q0G zrH6aG3p+?G(1JAiHi=#P{ZhRKCf%gjj3Rag-XXa+t+Q)brA;O1{eJtfCc|8~s!75N z@>V!@*1n{i7{`6*Ph&<#O3=XUShNj`Zs$x%(<2bB-P1Cbe#Sprsn^sCJh*%S|8(O9 zEs{4&1gXbAv7#tCaXgp5lgiF=!)>5aZYsP(=~>mf+{Us0s7nQ~MggD6i2+?p-MWf0 zu3=9fQrL6t4qs+KICLO&?)Qofi3mv6P7$FHQ3@g&kc6IICuRUK=uqSw=i$d`0%WrS z5l!I){Fx@bCv=nB?zktLQuF%ZH}P=Qr{|d&X#*2&CX6V@WQ2*beU(d3wx@5D`XM=g zPQM;%($kUolYgq0rB6^>R}bLThpp+xP_&=7N!9qJpP8fT!!|t9R&F9rN`ai7B{Kee z2jQx+Oiew3-JC~F4-V_LXKUt%l{=n1iMevCatV&8E|denK_D%9Xu%Np&D*%UScSS3 z<8OCBJjJqP&_f?;LY?>|FE80%Vq?=Ps~{0%Qm<_gilU-EO8ohoXJLB>`VIx-#U6d4 z8k+ByCj&%w1;Nc*iJ$B!{E%{m9LzcU``m|$ zolmZ>9~mMXpVY+Sz@FaEn^{k^Bfi0cA>e#8<0kHzNtO0gl5=340heLxS>$@gok4Ij zp0?A9z|0C8KiWKfyqq?3HvbesA!%%lWC*P?Yho-U>6*f^Ue`0U1NVL^+xmPSMTThS zJCDo=bhyoI7=eksD>y^+y6)gm$Z z1sUSvGX<4q(shUAzClTOEMDj5g|npu06m|TWn%};5r~J|({#jSbSq|x1eJa$z zjI9wwz+!%V{~o9@f5`>HKwle^$6&1h5rKExT1rP3d7+JD5W~S4)Qe7O7Cyr%x9LbeM%>N(wRxYv8VW7GC`8ID$OAIU{ooJ2kK^zk_yM=?0E z9|{Sg7pZUDxU6#RY+U!_^iMoWF*Re91`0fKQjjNan`w>LN;GMvu->j|{2VQf+>(N!Gh6gme%b%)OJiMQ*?)#CpY;&d>?(&2rI4*@ z)jHC^{|OsgTH5XzQ}4GDtc9T;ZA7#J@kQ`zep7zy<6)L8Ud#4dIk~wXAoJWrXxCkX z+TE5=>YN4|hsF$#`7AXAx?iW-8BtW@!p&dxvd4yXeSN**VtRAN6;2mL74S6R66)i5 zdL_KPyei-^7FZ7-qq=qL)-n<)s2c5m3g&m-U(t9Eapgocc&Y&halTiy^XH%0Q)tbcWfbG)cAJVMa)XWe4mtViq&X$-Zi9z; zWBEpbMJ#>8>4}b#wz;1F<+(*6IU(OK+<#Pq zr5M*hYRkgmV2OZ=zrVz8z}_PTfAlRC6%|ef$(VfvXQy%5b4_uP*EMYuu+Tx|07Av% zYPigA_Ja8F_H>6Cf|HR$e75W=DOcg#e%M&R0UiSaun8w+x7&n%5Cj5Y8XPg}JzMHM zx1G&=eOjDRceR=p9=S>KVq_o#SUQM*b7J(7NUErPV{rRtPb>l3nRdNXbntnWpQ5EK zehGA+`TYD=ZLQ|H*}C)0>}>5t4}mVPJuP!WzT7k`7gsDmfDw_A`+Ix81yuBo#k`*f zof`!7Md!IvYFu`r82sDU;+W1h;K9qQ%e>}Cw-oEqA~KMj zsfr{Iq;GSo+a^9KArsG|Oi>5O0}YJ{5%_}zO><_9&#B+HV$GM1s&^2a)V)uDS!@Lk zYc$X;7Kf`iAY8`kikaV6%k*q`IbG5;USu$c$Kcl*lOei3ktbL)>kP7d+}Nt$RkYyK zr%zh|?~Rqje5$Dt)KIETkL099cn18}EjCA3BVXIjl_$DwPGo%*5OPcJH%FA^{rcj> zo*+YCo0Vo?o9Q8W7RCj=`15iTXEc|wB6 zD38E5yxqo7f~0Hm<==r~@Lik4Y`5-unx8}xF^GK5k5&0)p{tu~I0X{+T4HkZUl>ES z6v}ePXDyBz*^HBnI-cupy1gIhL*cdIe)jBwwxUL@ij5g3DcHv4&1k^ z$Y`!^dLtz%3sz>5qU+x6$t<}?ae3)mhx{1Y)z$U;FDJA}yPqS0*%{t1$cx!@@Lb<5 z!TOSr&^CKI8(R`fs+Q%MzFAzC`engT#<6(mEOnY6EU)MeS~5Z*!s`qT<+fhNM_=?v zdN~Z>Vd=W8Jcy#?O$In@e_*r3=`cEhy6_4sB2q!Q4zEY8v&S4wC2}GJ$JK(>LE)qQwWItUosNuc6 zy3sQjNips?lf}jfZFspkS>nLp?Yh}RaoDuHBf4vN z6%uU=FH5laCEm}H<){C2w@7gQ{kj`Kr3L|zFK~y(;MP_~pv>8boebd+F$mlbe2L7^ zc#2^tu8${3(!2e__?4JJA0|Rcr}_>(y}sS-5@M z^2U2|*h4JzX;HxDSlHOuGpBo|_NlHo=jZ39$Yt)6)?wG(@uF$(aUj_ELhcwC7%)p7 zJp^*#A!T4*9^PQnnII>0>m4H#6T$7dlc(2_7q^YyFmn={!lr#S&j{#2TyY=r^C#+uhZE5Y1^Uo?ChwcTxX&&R*Js(v z-VL@-gY9!dceFVR8KLzi*xv`Z=bakqqDKE<-J@H$XNUa_e+o)68$Q{*b>c~@v9ma= z-flSRkz`xxEn2y9I^f4{Kiz7f*=-Rk*y75;!NGH^pHsv3#0*^k9$k;P&IwkR zp^V~W61vhUTT?T$;a^IhnWX=6-#=3PaP$*i=|)qdm>QOqWsoQ~H8sVqQy0<8NvE=_ zA6^+7(+P*e%b>;&CiNikG`TT())4}{QGXWSfU3#N%nZ;doi=EJOI^o2&L&HCJ&1dL zrS?vDc|`>sX0F15)Vw0R+OF5fAXSlB#ABnKLvXeWs(&sDPjD|c+f>i%*&WH{>s7ye zBPSPb0w2hL>>V6EE?1&~ovX~v{{{38=yYbA<94rKf7ZD0^7ir?^VD74M|}PEO+?>e zKJIl=Oj#BEHA1}}92ynwPY(82v!v{L$L-Eg=fjOUfz&%7pAPiit(h$;o{V z`TVzbV>4xAqJ|4|fl_eY`I|p|H8(f+`g8CBKr+TPQ{CO&iy5b@LMNdipB+K=-y7*I zF|2_T5D*xFE&Q0deKgkviCf~JRyn-s&?GJ2<9~6qBW-Dk59HD74X&R_PejApp6^l_ z8F4LF`yQ-Yyq2j!eMqq@+teCyvD*sfX+Y=i8M$&~eblOVT&7)N=Or^qT^<3$ZoxA(4@UA3uJ)j%6Co zycr_jPIYI14oOv!iD(_p7D{#cDmaH`sK`p0TXv)PcMpXO7h=~324Vq-Gi$;dLH7RcSLZo_`?q>XX-Xg5J!)?Dx4;gh#J8Go4~O z%D&(=cbLG+12F!-`n|sa5JWcNr=2Ujllm%8na=C9AG5cEV%R(TY6VCckL8Pih=>SB zC#OZQ#f(>7DukVnSOa{F1h5u=JX#^tZ`fljT?Bx*>v@PwkqR@h>)n$)b~%9 z4QA2WWWssu2KzLmVi!V@6n!vc&ZD+>kcoNE1dzcFHhKd@ixA>s{6y;ip%pp#$%?-Y zKd!i~*u4FhXL>6bB(Cy=HfsOF8u1}6K+5Mqpsl5e_pqE>X!GPj|IQ2-u!1;JhdQuV7;O(xKtm<%n(q9?jfSK+1q9Drm$A+7;_**@xh*CAL=u^>{ z{gE_LA%C&R0!62Cmw7!rS9s(lQ6(GIu#==c#5wv1;y-HWYi)R;Z{Z=u1`P z7kD@_ozUAqJu$OiL37EBJSnD2UfAF5-0uq}lzsmNNCyM|_!Kegu_Jc2D6UD(2Pj5U zn_hH0$Jxc_JBrqqABiX@PuU7Jt~^^C0iQ6XOzedS)W}~)}NhMAb%{c zuD(-MeW9gAr7Dp#Fgi*G7ExDEZ&UAAULFf5VSxl*)n)i~dbuxy?Nr4C)KGS{8ol`i z=RBG8>V+nlxP^q07Zwcf-MhCoRl(x2+V|+;!@#>tZ=O5brNwgaB^FLi7~Z!~Exn)- zEAghyx=U7uG*zvUyoibxZh$_SOsY$S_R+}IWNuRpm5^dF_lY$*iVeo-y?AwW-mfbK zf2Kb;HD*KkyW129%QB7yxo^|b>s(gQR+b?~d*{fkgp`zS98$4B2n1!7!NSQI zQ)U7?fIC3%GBBv94oyuk^|`YrA}UHctAbdXH0E9`Zah9%RnA^OVOob9llvC<|6H86 z&)hTF$CwG{j>^Q{9j9kPK9nHCUCN|XIFXTbUY;r-@LM9Bxs*yh`;)4!w^&mlELL+m zNxqZifjx_Wk78ask~rSnphvmW4(jJT1iDT-{j~^0{l$oKQkj5r($1aSuQqe?4jWe^ z?;S4E&G3c=<6vbv-?hIjp#_~)D^mgXD-hvLDi=MjK5}FbQHarVtCHZ29$um#;8BRx z)i<&9;-%@&Tf95IC;~YG#Fa^i2UjR512foZ`q=s3X85H3^{XF6nq{BF0d5!+KTUUc zEN&h8A=Ta2XF64Grt7_)OZ>j=+Ye_)d&=bI>;R3KrRjtkOa5{Ht9{C$D*4^I+jAx; z1ix6^r$l&}1#(gRLR*o3Mcm*D&3#WoyEV?DgmG)1%kfwg^(l=6xprql946p`nR(m( z#Ql4~{GXRI5f5jx=c5pHkq>gn?#5lH1uDPJ!JgW7-^z0}zu1O67P*<0vM+msne4Lk zdB!057K@hyXR@Me_)}6&B8K~&N1^vTH-d>TPxS8Lz+4M7>Xh>913QPaWt`mHa@F#b zUz|t$0%F$v`}eUHR#pH=V+Gj9b!##XVAZ&|xR;KOj){j8>h=n`0>UoHo~zL>Amp9_ zuc|wlwgI|`mdJmfg+p?wbKVCU~Qm>To;J z3f8ApZ{NM^T&07hT#PWI_vargGJ7t~WztS%be2^%$Rq!7@E_y-j4*sJ{fv{7SyD1< za#9luqzoBnXWqKHIzXUo1!#nYg&(u9RDd*tWo&HR)!Pe_XKl~9wE{=tzwt%tVkOCd zJ4F!~tgL0gs!Dr(79x0v9Asf*D`**j&or=zDQYS61k-qYG;-K`U+Rtbc zDy9@)y}A(|9-iEv81xk6L#&&)xbaCz9_mNrYX8PTRyOs*X6q_m$AxBG$r_MYm}Fv1 zkpmgD!p=D@gY&vKI%kzq6u5=wOKw4mTHXz`epvRYe8jTqE8@Nt7O8N2I9VkS3=vfI z-crrATfweR9nFU(-1aE`akTdFSD|}0{t>}S)u#Va^RHL_dezivZ`Ex!;3asC7apr| z=Si&B8(sPBKaQRu@|p|jNgubUKS><44T&+SnBpc9C9fce?1-8z)wn%kJD)=E;&n2M zFidCXPNN#mYmg&rArKQvT(Em%GL1kNRYLc&C-K7K;!BV;gM)(s>;t~>ZhLPi2#?fx zZ{a0yXl-fk4Oe&$M?M(s1IwhBAXOnd3P}C zA3!=ujAMI3op6ZmU~b(tS8xV(*w)Yl>CFp zoVftslEKQkIIM+2w15kFklceEyh^>KtzW%}FP70TXkJkUfF+i^ygYCiU}UoU@0;ou ztL@-xz(Bdp55D64j-eHPrK)-d(7SAz*n70JQE6#9kvr?IB6iNaVCR9ZGM|&JN6(*s z1qd$hh73oY(ni6foveg`kfOhi8&uz`NSyk6dVX3AW=6aFb8&GIwLKISrAg}_Uud&T zi+}r0cKBpv8FPu9+*077=(SseyEF?Wn~EG?sy|~`_WHW?K#(#aQYR<_n*V^g#A5!4 zEqskZYItAQT~at^GKFyOb}T2R(X`+^GykmdL#>ZE%3N2vy;(D&;sC7BJ>y>i!7A_D z`jaN_;5Hg|^cSID?i@uMx|I#p7@TS!9&e1^YAZe5Yf$i7JUD+`J<)m>gyKeX9sNJ` zhBGRXSM7U?Z3X>;HskE{0hjyo=jw%;EsJfTb%z6@URTExQH9KNO1LOCO3YrA}s+@u9vlUQNRSir^qR7n5jF~e8n;Z*7I5BZ?0uqu=7!2k# z0~QI;n3zmM01<%~e+Cc`0BE}NXVq29naam@32NtOXJ69O6&)S9!6eFqTodu|oTh;z zboiz=dQRl)w?V=mnC~cxQ}yXAda*CN0~kuI$i|y#Q)6%KZQg5ZYp+XKS?=uYXcno< zaE*^|bh&7#Rr(3PvEmtj$lx354l@mT29;HbhZ>PiN!tB5vJ~KKX*wg>{OGYeNqv~6 z*LRjaPki`|pEk{p1ExFcv@4NZDkEY2nax`FR`=$l;P!3Ci)t8DO2`!-&*xsZN=!DQ z&!K0Y(2O5Xkhrbc*_700E>kXTZhJ45BxsGhbldb)4H2HP?-qG`geoK)j`r-fVsNNP z8c$*Q;UTjXk`cP9-x--S$Wqq!eUuZlwGQa_-}_#$^Qfd64;ryBlYhN-A2jr&Q779x zL_vLhimJ{3N4eD~GfbjjECO(w#D(!wfW-wru>QgDhR(V#=|(2I`$Cyodr#C)UL0p=w!{jzRPKTxY{2*-COqK!Q&E>-BGfz zwFgQsLh)r(>h|=#8rT61HA-*5`nN{Y^nQ%td$%)@xYsL$vn72wMIjO76eL9C(3?O^F{n zGm=f;n|#zD&sDc~rpX;IC#vp2TL1e@;AUrKemocBBl5QDgk>@*b3g4DUk11pzfPsD z?#jo0b_X3l^k*aPu9?d!HZL-Z-j+?{$ z$!W#wowuZ>jVV_c$gR2B-Yb#TuhK1T?CivVY@H_Pz|6xFXFprNxVt-uzCslcX^1D5 zl$0=az1L}qp!ayt((tWwNS2Q(1@j6j;Eri& zG=L%|_peqwd*LB+I`|-Cq;6IsG;lLyiF|^7@R4{o#tG+^WO0dh;Mk|Zu$y8sN3Etj zCIlxY%Q7|l3Gl}cbF4Vau~YiZNoa)vq0oS$bD}oGp07_Y_u5DktKr-3)wWZu-#B!h z*%_1>ODFmQkI4p@Lf300ky!1V`Mrci>LGS=e75k{&+Yf-s|vF1g6@Ts3-ZCu@Ts3Gz@Tr4NbcqUrSdHRt+<30m4Oei(ThmpM${8Zqr69Cfv(OiN zmgeIRWHb=>uy9HEo^fwaSD7q##YNEymyhgQSy=%lP`TmIDV^iSL)6C8?H4Q&ba99f zoOi*fL3s~{Kk5oGrV`4$)({rpf_`PmGWaNtwe_aIQEbco&)4A@DP8Q=wl=UB*D~AD z)>J}R7(T#cfJwNGmoRc`Xf%Cmu+Fcr12uK*7w+!Y%l0`WM1&b3sRfHkL|T@^do|cO z*x4V08s>krpus;-r{l(esQ6bSy9(_-mL7nJ;ut!YEs6i)nlrgj7Y(hv=X%SpG!F`J3FF`g^XS&UX^VHMQM6@LJ|XM5y9rK2q)Rw(L&>sK1hWHE7qg1qq0T z*A!p!axaMKMUCY!;~x z>GcG$Cf1~Ia1uc+pKq!cF8$m@^6dYyj}nuN&{_R3Y62rIO|#B$oi0t&Ox8a?%{}ed zYuDBkXxLfQA^uVSBBk4uQA8vahy#Zpzl}Ee`52p+$SEs#+SeeENRKyWtINw@05Fi1 z?cG{mwoUsS9K5)`-VKx%d_uwk0U-^#gznFv`w|Aj1Bw(NNK2 z+yEH42C;Wz6F*!y)h2gu!(wlbpi|fCc;%OdM0=H$_mG`-!kdE-V>B&>F%HcGin9E2bwJS+ zd9Dy>KlJ@2yKe2!zW3?QY!tnC>hIsbpLwx;a^W-YTgcDLG(K4Fj`3r96SV;1`nBHR zx~uOMepsYaQ*Pc*jY~p1xzV)#Aa1ei}_k1xEjx{^64MeIeTlmmeI*@!jq0^}?oU@g>a{xYSe%EXtvXad4=%WNPTXcVUr$HdUGdJfpIz)#wydIJ`&gA% z5aJCPvD0kBDyxs+Dmbl!Lx;R=7x(@Dya-c&ir`oPTPDxl6 zezILKyNhIaZH#${)in5=e=YO|q;Xwc=y-4Mp`c(*r!WH4MS;h-un(!JtH06Kp0>KR z4$7f&Dk?Al3qdCmU$Ku#zC+r53W|i(RQWUkJ7ttqYG^1PK;@vHD$Bi5C;nna5=*0y zM#*uGTrnhi#z0_EP~^wP%M-Fe;?+N=G6N$VhJv0Pt^#IRpIi3&iJhpFn1O3|b;+ui z==TRx=xf@{spZ`xAR>Cq#MHJwZOS_g@z{M<($>~iw^&<1Y`x(t zP^=|4T%B8MhmIM^Ex?zJYBw#aLw-|%J@ggHG>|}-86U4{hty0f^axe6r+iXwW2F^~ zj~8%C)}1A=H8Z$}atq5oWJI|&`=ve3m+eV_XLZL-WY4Dg zQlmyq=6IQt-;Hp|b&q#S)rH-U&6qChCTxG+PY2Q;^>aAmT^79QXK20II}-^(E~9xW zCFM{6sDXG_YS?l^CeXg+(=Fhhcd4o6fxP*wC<0U*lF>r>ENc2^#5yU_dtI!$HdMwA zlRy5BJ7VYk(q&;35CECD+K>`gUtfQ0fXSOTvf~vH0YQcXfj`ejAd5C#)Oi^n=s{!X zB1?h|ICF7v@fix`0)&I^@)wE5#_!Qrfly6gntoIsh`l?f zIf<_`Bo3KX&jxPaCPE?h}yAuFke925C!1M@Qup6?1^sQ_nqPRN5#n z<1sa}*guhBo2qrDs@DEwu1}H5T7+n6l1MGb(=#=F3?T5bzJQ zG0#$_7aC**WAYgERhrukOo(ZjCVu$(8+T2gh}e}e8|m@-`wYF=&r9h%&qhF9KwVNW zCqR)_&)ly!2G;pWJh&_Q&*+d)8#mF3tWBz zTvPa7?Y;Vw{o)FW%W8fv+PS5HEFVdg_b-TmG%!#~jv*$APTr;|bjwTt=F@Ll@lx)Q=AYf+zuGvi_V)HOo`~p6)I5gy*|Uh3LAb(h zGr!+vpMfWo!Hdye_3qo(j5xZjS|{7&5EH(ACh>`Do!E@H=C^WJGiy1fh8((_+7H;@*!YN$*TGWr~v!Pd19D95GV#6lX>I$o3Kq2-{dpo9}p{j9crM zN2_9GiXw%vZ4K09r`5T3wnfuqF(JUV(z z21+&AYctlY4Ybumz)4N8HJy!F6BP*Q-aTRDPy^*f5FV;ldHg@#(=iH4ocb!I%LZ!y z6I9&2gM$_;J&6Fjf<_&UUFo~NzP_dK?JaPGuA_Lto7ZAGM+97JJ6##Rx914!Dc)8| zjV!9H{Av(zRW*HLqf{U*(w2h4Gn|mz{t!}?$?mD>5#tM?+QMxysW&N4dPRIHXG1*n z(#z2E@9($1CsP*J!U2$+CZ{edP89tCFd6Iyh zd(S9S-C@j6U5S@5_TbfEB;zqWNsi9-X`Eg`3TfGcgV^wFl*@dX-9a$r3C`;(8^p{< z+%5TOCGR-GYMP!P7qC@}1cZ`YJ;^*SPp{28Qdh%PE#f_}t*O>JZ0A1%-}SnMeEquJ zibG<<71W48#1uPHMHE(?>}p`v&rXppNM65jm&^45cpah|PMs@u_bz1i?{}9W{*^l# z7Ar{P;dR}OnmPgs#aQ9RKl7d~(yoeV@z&s*Lmo}gTbT2Yt~?60JD9Qm|;@Z*DfTODSG zyo=IWEzKtIO$08GJvw4p*mye6oB6( z(x(+^P5Y>o)lTh29^>h>9cLEY8G7>NXrAPYfCX-g3Mh%R{8l@MwGUsNOWXRHKA%(z zx7In8pN7Prd{N(uuv;SZ{9J7})*>9JIxle3E5wMeoV6eusXLO&8)HYhJco{ENM{4( z-@$I_PYsO?1F4G}K+7#4pARCrrj#+a7&k_Pig`e;YSJ$abRhSaIoJ_Dl8-|E3MX41 zMx5fI{{DSG=XENsUZ@+MRl-FPMcLvOP+Q$8IS@KJ;t5)H*fHCJw+RX5qGFK;y__oz zA8}~5MPBEeQ@NiljOmT-KrV_?Sys?T^LW$+^2GKX5f46p{=5JvLFdaHP@CHrE1=@H zem{#>c`uTJtL08e_J4Z;ip#f~KjKh^ytOjupmoiwHUT*`QcozmOj;5{)`90yik$Pm zc^XsbUR%IqYggdy`(jr%rg&1NZ(eN0(EZ|5N%sL4Phbyvc$$cT*kSB9F&H`J9|CYaQU?uc%VPD$w035rfr54e zB(9bM_Y3NfAi~Z1Hmd(u?I`#2`z9CLbd`D8`)kYER$6wp*jrt;k7*`x^lr7wQjFHLQCE~T)H@alyFE0xUKK6%6OE@scEiF+xyjC72pWSvl=hkqJ=)}J6(a%yz zx)b@Kj_T~V{vW=+I;zU{+ZIGYI;A8;y1Pq2K{};Fq`N^{rMtU9x@*&2(%s$N-S_eP z&hMOa?;m#zhGV$*yZ3(ICsxcg*L;q=(WZ@9s7G|RVJAZP)%OR%7}r`x$`npU{;dn8 z^2^i2n9oCyvqn{SVXqB(>rPHi@U1+aoj`BBC6|zjs_JJUA?W622Li2Aj*P0Rw&Pji z&u-V2MadIfu)MkxZ^gr8Hpe3Dc?J$NGagP$QP$^r35SW6s3s*UhK=j&*`f>?8S3dH z?T9@em;n)wS+J(EQg3G@!?;?#N}WEQkqBlSazg%+gsE+Y4 zBr4%a|{TWtvYVM&yvEBEb z$N9WN&&+w{Jfjm|_U8**nfnv{oB5mi=q0<7@`gxLHvBEm%U6m-9?^E&L(uW~3z)1VZDBa!Mkg(VMTBYf2ZVtglgMyE&~w92h96Q59_^pzXL!Y-VPL z^}$0($Rxp5T9a-v8^`pER$iVGP4mNnV)N~pU5>yF6i#I1_amL>9wQwk{(?lbwJRf* zUrXtQSEbaVW=(jZp`m~m`WLw~G|b^9i2)oab#;88Ofxe-uV-c^sicGjH~?U5?YN7T zB>_c1S68=2%NC`CVrTCzE-p?C6dXW;{2;ch@`uFyljUCINwyM9#jDOBjh|4%&+TCg2MwA5uOPq~uW3X95 z@7h4Q-DjLw{rizt^3-@T;ApX7eO-}E_PkCls7%oi!))lj*iC{}{4H9G*<8I2U=uc!4t) zX*U;^+rHdZ8US`;U!*<0t1H{pRb(=zuzyR2sFhGIYdj6vcpn!}9&`LVM#fU1zDd7U z+G|X;$DXucVoq!o6%`JvS%eR1sq%S~rY`n}?Ilh3H)eMAZ#$I8X( ziPPD%b#pvhfJ>ReU z?db3i7~d3ug+HU5N1vFtbX1*hFflM}=fULt-2>-(X58P&@F{6)D5QsCMvd8uw3{a$ zR9};HE=y)n?p#oed>OwJu`;c-z09!t{Mz01QXlk(BM}K;aH`-ajI)-NLkzcqccBK7 zIYP8tuTO{Ih))ll1j9iyiMTlY^&)%3RIz%-_- z;Z%$_A`aBfc%jiFETi|$JrlL+{ovs=0vOxTWH%TOPk(yPt7|Db_v%NuR&xNsEH9+nhKB}$GJ_ic%$yBtkSUf$_~g~OG!inNdnI&QcTm!s7ExJNjO?X95{jojU5{S;oOlDcpx2@N#I z-LdTa4r3P6YW(WE=eJQfWLfyNbEW z4Q{zIDK{rgGLu7Lfx%=nEMpIipuoh(>^c?liq;!V_%+Et|2$3M3kn%||JuVa?e?Xm z{GT^Ei}Oq{?CM1r?V5_Fg%pxOO+wjbFkif3*+(zd!lf2GR85rPjwX`g;zF zaf2Vku~XPkI|!Eq3(-<=VHnX8242y?o^+p#B|oo+IqVmvcrI&UIv*t%l{A3zh|}3j zlx(HmI4m2!w7Z|G5e^3Ct;MA2xg9MnE$FyBv6>1Fmr0S!H+`0`uzZBIJ+}qE*u1!J z|I)>thY$jRID|F`9L_exJ&wW+3|m-OoL-&1uM%?tII^Y7qi9w{X6E~%q9PD7*6v=i zL(*^m8Gt$kk#xf~x}8V#jp8CavayIva(?8s|2yCvxAb(gO+SOFkXMA2_9T_%~U zmr*j-`sR;3NF7b)bJ!p6uMEJoR9J!daiGblN1x>jmuOH>5HM8jU^ntfC#4K#RT6JU z;IZy378-dSNQyLE5g?-=r7QZOAQ3SANR^M++O3)6PM_Z2#YXRPwQ3#;Z}WO<&I`N~ zopy!yqU*H{Gr14YmT|cb{?=Y=1Gcr2v*toxK`1YnsuzjxgsulgJQi-nk<6N#gGZHI zPJb)J@9bo3=byMGCnw|oPDT@E^MyNVh-1zYgSMt%2)%yhjZ@J{^{R=(fns1_kj7h* z-koGcfD7@>T>HjSSus;1n5f8H9!$uJ-vBF--qqP%;oPrm$ba{_xY?SMEJmU$TnL64 z8o-vxT+Wf%{VLYeoxE0em7;}%hO3M%Ou7qP02G60gre0%dk!s1ZI9GhEQmj2_X4TRkkKTdDZu^pB zYATuEDHO&Jg<1EZHV372^kBXvEuoTVySagac|Rfn*n-IDXep3u7BABZ+#c8g9jov6 zgPa575c9>pb35&=k)=fy&kgp35(1o>t8)3M3cCsYUjSGQP2+0Q1D!H|ZO-{v(AHzq z^5umieFBC&>s2FysE;%jK=!6cgBF5?5GcqJt&n87JL z_FqrOvJYnJqJU}|yRLqSh)D)u`Tu#~tQ z(>ci3GO2x_(S)XIq%MXU3t`E5e=r9nOP!gyyzyb~?ZEvStFY?@lWfc5aC4uBcCEiS z=!Y0kl;yaAfF$O2b2|;+jTgE2fg6FzZ3eUt&in0#4ZY{1ixz@`TRPkRATm>Cf=Lq- z=(OZgDSTE8p>Og*6ZXFwBNH?M&oZ7Z87ImJOi9hJiwh)xuk?m$HPnVjOMUJ^8Hne} zo;xzW&&o;w&4^1L0K7xN3m!GzsQFT;R%gndpq7Ay$L8OQDloFMXh1+nxI0?>me=v< zJ}#>ey1Q_$`aPFIZ0$S9lnp46sEroU~kFAc1+K@G@@lUW>{7fko%V$graOlPaj zIB^set?jMfRk@x>4 zw|2|T2s1)X_u>cX{dHtonymivliS(q{l)HL(q9*`h$=YNqNDS4bI!<8S%uW1N2N$9 zsDBh{#gcI2K1lo*qXYDa-Q^lo;6CuU-Ec)^i1=~Y4^XzAPe{FBQC{ZRqi7!EGLG)wI`m>ZsW*g1PXK+bj_+<$dhx+I`yNAD z$B$nJi9O5AH?7FXDaUCmR-^8n>zws;M$Lgm_8E)||5ZO_XX*kv(bAUsiPw9_z2ylV#m z6WNxUHR^P|`DL3mXv84FZl;CSqfhqEOUif+$kyF>9p zO2cHc4xB*fNhzBmT*^7}o~u^b<}fUD>rc7fMR0Iu_gvyY5uJIFMOjUa(T8Ub^M$Ge zfhO10y}iK7N>(Vdr-vxelMhUl4ET=w%q;QY&qizB@LP9W?srJq+Nt&^@XX7V);%R! zWMrD}fD@;S#wOsi_ZOTlF*w*64N(x3b2-lYmV#1BtD_9fKt|4dT{&F0Kg0_*v~bpF znRyq2!1JCbAG<3DK#gLHReSkS`Thjz;H>ZMA+$bu`HdK}NhPuPJUs9TJRR5p490nL zIa?>u%uc59bjWpqU6-$t*xkFe^@I9Lxbq7{#?z_7QZ!uLAIC8O^MLjGX_V>-%_u9o z)p+v)(5D}+qhy(Jk$`#lNh%h`vY&7C{WKvr;cUbUK%{Il?xd0zE{@0Z!%3wN4Kn>e z&{W&`&_Q8rEMC9?;nSxsx2MTxE{`=b9k;uHx~`GPH?#@N1}u#H&jbLoZ#>)50O99& zjqEZ0eg?Hvz1<5tZD-_t6&<~cKj`**Gw70%{RjpnPMQn+CK&l9yP)`eepA!~un>`~ zQKtP>Jh!XKX}TMaCx-?WQDUB8ASTF~E1O$Z_5)QQHE7g$C1AD^`et)l=k{*?mXCR# zSu;81_Pn&(e7QO)qQfs?d-!=(?CJ8s&X^5>{Wntc6x{^cs8>x zYrVYa1X@f`3HlE8rc1O6`4}P@DfEntdOF5)eHdw_uO)M`s*w-yrw#(kfEfdCd?4X}Ldv|UCY_*mWpiO8pwjeNxm>bUd3r)A`52>$JZ=lRX1C8JWbK0e&SBv?~bp}(^tv_+;MZIhjoy}EiN(*Usm;oqD3eixVMX3HbXqb=7F zatd-A66OH7;|3f*TAc;{g~eNkU6!Gq9!xCU*FU_xd~Ni)<26`7nJ12dT`Z)1xRh;o zV`Zn6G01b%Rz@a^3>t_Cs6OmtH1hH9EERvdULF>B!X+lQvMVAUe2lKq@r(go#L#Hi z_5GhxgPE$f7QQwkv;adF9yH((U2xQ?*JeDypwXMmi@`W~F~UM*2l9gW!)5P>9~0%4UVR zyB5okQ`&Kvo9R0WNd!In)Iv^8dJhx%igfoDZ#w1IGLOOe39{9e7N}OwXwOK6s2Ds zQ0U$Oc)n$zVuv#ho(hE3S{X6j)u8F8tfsO!JpAx}xV?04Yff+x~>=M+}gq3oWenJFRi_24>d5$55 zi0BBwbm?0z#xxf5Rk}lxjAws3SV8=Uljd7HUVMmZSeP#~`qWk$iAzbqrsv)4ZO3JKbD4j*bo>!u*7wjxJYHa8&F-uhZQ(_g9YCPBH{Q6n7L?zYQg_Bew=6;qC#*qrZFh zCYjG6FjPf-djdi8fx{~|s z>Y}9O^q(*%ja%_~X8VQpRBuTX@|D(hSAUk4T7~G8NZRv2A^8U0o8&_}@A`HEzEGRB zeKRnaP2cuzO5vwLM2vl`cwK$BM;;|CU+)gIUSb*520$fq7UIr}DwWWEk|A=_;@PBh zyf|oKZoV^9LjRW2O7|j9zFOO}yaabK#)V;csyjy^ZsZJ0Q_EBOa%2Lm2RvX*o(2QI3|YVKFhP!I zQHXSGL{k zU#K=5b_s5L;7fI0{p9iV#QTuM-T?@rAx-=^7>pyp^>-sRL;@HU$Zvo6uA0XUzqz?9 z4&dpg%uG|McK}RKkK@Ee$}6c7KDjtqS;^>7RZ~ldVhtGt)P}9W$Jqu?K@0U7(PHIk z8U_HB^Hf>M`duB)mf2v6g%Z(Ak7&(0h}1z-0tyv19o5EIwj}8Nf(}nfk=7L=Av&6* z#7$04kRmzRloHRj*)Q1)TSO{RE4wY3TDAj4M8s@K~eX&T^FOMC)qH@X=a_WN@oxv8E% z{fvfMAN$Od(}>(}bcviF;A2ZQduy5XOk;i{BE2Tt{e}R_X%RlNCo`Pktr(|c}} zR1o#<-U}gLDlZrC#7>y9D=RB+5wjQYFics^bguk_*`2JUv}SKpjruRBg-i%o_>hu1 zPga@k&I;>M#+NT&mYJMy(e&qkq0vrd^}`F}>$78Y<(}*R4;P@hv$3?fQz&b7mXdh; zvS#^HvBG%1o*0O5fv{??`}M+jx(y{cWkghxSBa{ap)$5u7;%;}tEVuJ14~?h|7#<# ze~aeJenKqf00RCI)FePsC7P|EYhdt6!ImXJTpVa%PO3H+^-pGW_}Mr)^$btP0a)!X znpNnbBVv4Q3FsQuB-8;M#p>*)IOQiJOxTQS?GagGyGz9yAvT8#)rbJs04oK|`S0I3 z@fv5w2Z!?cN}%=PMb@Z)R21eIwmG!*+emxvWt_1KhLsrrkRtKFWy9mav^5IiTR%E94*>gD}0E)p#G5G|n~;arW;L>ceRbjx$c zc-Sxy-${zfm08_g6-rxbnyqknYh$zy;s!!xWsT>a0#(^E z*I}Z}_wQ{S9oIk|5X5w6-DaiV?8v#@HfERsNVYTD^p?Ngadj3)du=1fSo_Pz^g(+$pIzVS}xwG?8%C+tBgno({Uh?%T&lWL4Zya(ieI3{t1=v@G{VhUsGH2M--fV6v$Qq z-K(wD6s?y!?8_BSu$`Z0{r>$jM&i?UxQwP$-JfphBwS{5 z)sRhatOF3w+x#=C2U@l5dPXw9;Ir-y@y<3Gp=#7viCHnN?5>Vd(bM;xpIGO9vSu2E zLmg`dfQ-3$$=f*5EE0|@HaHYQ;cNx;nZ`Qj5Ac$bfOLvCa7D;lS9|)tDbrq`4sI3G^ak)6250^k1kRO#-gBSMdxF_0=sK{?FUt8NlK#|x3D_cRl$MNuQ zINZW;li%LNR_d^*rr*yZz0A&>%k}DRA-W)jjdb@pLeA zmZ&Ywm3_#3;a;s-k?SFVaBHh4uVASoD56Y^yhPsvKr_$#=9~>R?+Gy&EpzoRF58pp zmPnYy5#LaYaOxBlnb9#Vx(Se8vpa--x`aJnF1A-d}~Q!pEx3j1pXFw_T)7+ z33#23DY&R`WBPu95oR$zd8ZCBmp^a+TlcvUi+q{#Zw2V`;9{5cq3SETrDX{cAsd(? z>7wgVcL2A(wz&^yC=q@w53{>Q^IyfBHPH!3P+7|Np~E)%5Xbp3Nlde*@X2Mhk9f!e9U1IVkJ~>^2da zYC)#p>zQ>-tf+9olQn4EmQ~)KHXhbV;|BcqgD;7>tD|Np%G7jUo~i!|u3i%tjtc?4!p zm`J`-;`ZS}Q&Lt>DCS%i?;;?gw^RL{8In%Hu1uXc5Kn0xx&eAtRWGWR6QR*?iqWDk zGVsUDh7*5WLgilD6!Vbp1V?6oBAF?Wh(ICaejmW~&%BNPj+XGb71IN)L%sUK8FJ}z zR1(`dw~XGk4xe#UNWAmJfFpR%MfI9eOf3E4*XMuk-M^d7r2Xajy8C?=xAhJh2mmv! zj+dlyW6;)Ieg_qz2~S`e85sep$UNlu>xBR6m)HP)_r#fTqY*=+tm%EA`$1mh>I5n? zP^yjg)Gke_D2MZQXG%yuuU-N54m5P4Zor!5P7D7blbZ$1XvC^62p#@PY4#sAxz@%< z21;bV=VA&UAzGBr-@D*o{AYllNIEE95>v@z*;Qp5dR_%AkPs z>_hH2Iv%>r=bq5%CfLPhI~+=x)ZbRe+R1?dm6IMMs&_OQkFp=nPN4Tpjo2Az6$|J9N5^}W&-LQX-}wp(fDX- z*n`Bs8;k}JPPc9XFsWiBKr{$&Kmq}m=*UP6m+L*XjH0%$e-${lhyz7<9E&E|fr!qx z^C^ohvl&nXc~Y+lbv;TX6C^{lK{ojtCSG>-%>|}Lpo8EoLd*4PY+<=YAz_I>OO6T) z_`*2t9rFc!nO29rnKn%ZmiNgrggn*)0za$wrvaM?m(`Sv=;-J#0s!tY0>E8Fi}f}; ze{{jU?-F1Le^jOF>gswpIe#IO#w~K3D!--d`0rYeK0UEEdWdHRNHi$&e;)qxbv7^t zq0r^iU=d(_{BX{-hKcbPKQjfmGNTHGtU$K*{S59v&V(wlbliR9FZPNw*2P z+&o-gb#;a0KXHh>q;swJ(ESF_m zy2%krH8rsJ?E%{(zF%Ln{v${VpkVGUMT(WngxC`^{zd1(eNgAj^(f3raatUj!U^4!6-wd znaWt!o&L=#hoT@8?(2sSp-JYkranYm^){Ocwx_3}+jik{q&m8YhvEEe%Kcr`$7 ztCpW!9rK1K8zV)gCm@P)cf7Fb)nbUIm&7m%Nx`(SmL}>0cUnr)^n^*miMEL4x1ek! z7k;>>WZC_FvYlue$;@v4-o0TWa+gESDwGBoUNKInZvU|2mY-k(|#kM1nGNh=jy zn-MRY^O4to+iGFM{gLpz7%;YW=hq3&mnwtUwcC^1M0ws~>^DDizKUZte#`Bf9^Q<# zWf&2GD=A}0BS3G-(h3`%6w|jiY=q8X%26WFrV1#Mcl$0^f0Q|%Zdg!<7ej>QnP(M< zOZNxM9PCM-X0RDj`F)+Nb18y1j{Ap(Ld!;o%$LhCiS(iReeNdUOmsWN7bj#j-G+yzxZPC}} zs+E{vp)5SlCM=7#&*+)>8Rnh&MpnEWn>y!m#UQTqoBhYR9?tVbrRwH=1K)~qOzuig zWK3;UdjoFF`MANZKGBY{1ma9cMcvVz)tfkm)DB~+4C$NKc8Hzbp_S&YqT`bsrklC! z22E%VWQ38sKEqq=sg&@H1 zemvM6|DBzCKHmO`i<=uLhWP+?fD@1d9^c3LXB2AEDpHAz)`lW&sH1*8?6p+Zm@Foq zpTc)il9f5!JA&+D17FGCWs2-NJxIVhUQM8|mOr7g_PS0TD|GgU=d?|4H<^cx+m zfE(0sdP%UygCs*Y;o3Ejo!##AjBq%mgQtY(>K#j5^X9BCGb}U~CrkDcESzBC=v{v^ z+5hl0*Ta5~ch@wskWO2%Yo^p)^NR0wKq%BgOUmVeIl1wdF{VId>>?~M%TSoPS<`l= z(-KwGxi%NCJB!uc)}wg%zj`Jz)Lw4P&9b&y3MiKyEUfVOc2&}r`-O{PNhn?_-1Z1} z8?{t#EZHEB&Z0!42QQ$UK>Zmee;Z|eZ$2>``g(1;fLCq~!D_WIYsYojtn)zIhl3nt zc}mwi(2oZQ_m{%I$T$k>+*?5;;$(x!OQo$6G3D zhIeI(g7qjaP?B$5zX3hYsaMa?D-Adj4G3ZJmv00%>(>m)x@~Q@5fp|9Gk-Iowm{@B zYV~NYhEkyp)E>#}Gu`OuCddeuef!1|QJN^mIBX|k?wUQ2Z2UMXZgb^#ttmbaw%sRcXgFao1GI|Ea; zv3L)5Zfw!SIT^vc@b*vC(ei8WJ)L;dDtN-7itA%?T6Soo;VlPk?H|G!>9VD%5B28U zqFJMS?khi@z}Acc)kUnpu~_?t>w~6z3pF)$7LNnftAqKTu4t^W@$vGS%8t>tRYNC{ zf1Jib4k+VAB*chI9hd+f4v=~jE1k9z5NPf@1Kgc&r(^cu)!8a%L{i^HlIe8ei7X1d zE{CZo#*SI?v_mcy!E{whTxzwrFP@oZJMx+}K)8A7B5X`tn1D&nvvCSlnoY zA=3kYhcWB!Ug#(VA&2XM0_lS*h9&!kb=|AyC+Y@e4~e^55isvNd^fm(xs9mG_wX=wTXzVDYgwIij-yG%Cv}c*mq*I?n~^llO#UdnRYFE)|Y! zo`#hgW+`b~5Si1&y`r68s_RIay>U0O9q$_on5cdH-F-;;Y)g>>x6qLQ^LFO!ykB*e zdwpy9=fZ$K3q!K7fk}u{Ka;{xGzFZSy3hK`mWqW|7xBEP^>o|TZ351E8N{ipt?AAH ziiM%`WWGmnhsPeaxLq_Ht1?co`Fk)g(JfNT6u-oEhw)0Q&iM`tV7t+3gj#C!xm>-5-uepnlJum6{wToL^M?C@F5= zqDMhq|Kh47IjGn8-M0aAsLW}1*|mTa@a?a%eFC#Iu*(frlaNyHu+v*#9;jat6_a+4 z>)nvn-c~nfoKN-ALiq@btGA0M?{N#&Q1krso=BD$PjclRX}Mo!#rwW}WAjDE$t&UUfy)vh*H53uXbaZ(7kYy6 z)uvB;ZhDL>B5w+K zyAIdsWg50t3B`*LSR_%AnDRua?CbFP@(nF41oEu3Cv?u1Sh6(k)-)ZyzMq24>C&B_ z$A*Yu-s!K1*dMT>`v?b&ri+iq#yOF}D)7-HqoAV1{?o0d3~x|VRIam! zre(hhq5CvB7U_O?NMJRX_0j628O48e4u?Xd4U@6!461JU}`~;bTf@9c&?8^o^y^ zPOL`WUfVThNM88#p=YT&u&u2L59;U%)PNlZV*PN= z*2&0Y+s&PJla0BpE%fr^_gD_2uyw+T3=dAK|75lcYl**K5q`B4!dWtV4FH7JNga#}G0hqmTMe*~Rkb7>Y3 zFm}INcLO1z<@W85i##=ZD>N`fesF)-La=y4Dx~E%!eNUflR9X|zw_}l#`X0aPhCSDnqWtJ@vbaR~>;tQ9>$=$$0`d)JaP04GLLq3Xh zgB@!Q_v;tv>#4t2&d4hwWk%ihTw~S-8^2?_))<1XjNh)iscP+;g11oTYgSP|(6aKB zrocSyfuMWpBhF1!ZWxfmWRsRE-@EYED@NybDfQzPsQYmCk7u zeX4M=?7~))yStl-(Z~@P`XV+Ag;08+=uR`{)!h-BTu54zby}7^1LYjYsQcoI&e?B< zP;#&F$kF{cyJseMpHcNcKu#t)n>b>9nBe#EgVn7G&-yIYzRaqZ*7w}eUh1;# z&<<3}X(Ub07g@Z-d~OQ#UY{4|srHMS$Hu6%gJ0Ly3@+}j?z<`dGF1&RZ-E9;6w{u= z?_}OkC+p8K{dmZ*Qn2pXH__NMSlBe6Wv{^#A^R0gH9H074dftnt}pcWjIk{P`Do+# zhXVqBnyx}d>TcD{LN+Y}6R)xMin-~$#;hb9^aj^g8ChxRS>ya02D#;@^F}3*$fEbk zSlNq`{n}CWoz{oVDsSR?U()oCVH-VCwuA-ATKn8?)#rU{;_ScB)_6!6Bf0Z z9Pht+6pgflqO74yzsLO_ctN)Q^1KKELpOx zK5xX$?&@vG_1rEbG+PUM98*S@B?j`fP!1A!NAs+iQP#>|W}i0vv9wE{MLs&Mbj9?=X=<1s_Kz8rzfwGc3yG2$up=QzCR-piXj3@dt)1NPn(ikCIa*g>qH|y{Imk^1@9GN`l;#Z zY);K&6$Y9S#>a<+l766)P4HK5ENsvgD&i)OcG{bZ!ozZ#gFbh7?vUMAM>k< z6c0AfIAdbZk7tMvyHp`h7Z|)a^Xb!Xl&M^$pNiU_D|)nirPfPp-4Apw(R(-^f0Qu6 zWo39zMPLFO=CEj)J1w9*KQr#ULrS1|4)5v4f&3Ou7Qt=|>h;@eK5SE38H>Awto`Qh zrAcC5O4+d?!Vh3&2gyoC)36IzxJ0^{zBLm_35Zf*f}w~*;gU<8>n1V_dFwojw*|z_ zX)-CAI=ijX^t$e^MdiCve>_rk;jA+62!^O8@GNi4hwAd*6q&}IBWY3&b(sw?==U?n`V296>pEA zwPtP}CGGL}kh3KQM?(b18qd)dV0e^fw7--x{s^+7UAro6>!p2-Sp9|)LRTc$Trge# zV5X3S%VyaOl|0vkfOGtguSBYpfdMnUq9S|Vzh}1LK?|%~z85@^cGMB=$x=L54LzEn zX0eO|lNAps@Gl(*MLTbdOx;kj=~?U;w9-TFf8QOinf{u&ano!%92jR&JfmjOTD%@2 zH5_;DJb0_#vN8T2Pxr7mK`ms|*lX2na2;P5)GmpqDI-qGNSgBAf};)=Mp=|pqE&tU zNB8{OFl+!1#C`?r`^+-5PnOUq^uKU-#(#y((M9qv>|?p!R!lQYHxFy=1fFqwo}eBi zyBlLVP=fJF>`&BSj?sX)^;2ZQ^SuzkJ)7YRwbE|Q_9m@mMYS-EA7Sgl=~JhMwV~ZTx3rt6F2Ax!^J`#Z27#HYmeZ&+YT3qg+IDP+Xl-Na z)eP7774(T$u0~eD6elKxGSB&T+~o$)Huoy)=rakrvTk8PR)q-n+w&!yxz`WAB`Yk0 zJQrEh{E8oRbyJUb-gu`}qC#u=Wh$wCc}%3C+Y#J!4=s8Q-ClrmE^K z#_qD%^W0$&x~jPSXfk6}_YM7+WILw`#WCk1c(@bv>aehAZylC(Tyxb1-etFoOix6C(T7?R{Qp%1Dx5Uf@Ay zRM8Ig#fqBfVY4xOUK9n3@@O-p>lmU~NCv;W-t%heCPMUiksX6v>#Uewp|{)UbXy?F zOVL;k3C#PbMV7kI8+$9ux|O|Ytm(dQ(e#QtPW5We8g}U6#c}Ln0lgFV`isJ)rYK$6 zC;vj7eV6&>yn~ZDtAP2MK$~ZE-?2;?=LdE1AVDE*M+%|jwf}GdM6-9VWRAYWR+U~K zE*9}7rR6$*cy|ujWU_K)xZj#^dk_PMv0qzqKBZFs*ScRjroI@|&$%9BYN~-j@Oh6g z^JSbxn&tD$4?zc-bMbU1jYcnW?0Vy6(mKMUKZ?s>*Z+DkwmyuWk~mN^xbV5U`Y%&J zSNEs7i7rvfWqdKe7@sD*WdB-ov4-(@B{51UzSQmQ*UxQzobgAYsh33ef-z40L^C}1 zXf@A_JgE76kvk#vS4$?7+@8jyD5><;S0?18Mldu0iZHx?&x4W}Dx6<%UBBc)^|OFLWAG`?jhWGK;;l5O|lKP51!=lNeQvhtP!aEufu2H`jqw6t{e#d7&dGq_SnJf0B*)q#V}L{u@^ z0X*3i7sq9Bytyn@H)Is+>&pa+mK?qdn&xbl;c3*Iq0gRIN4zuzS;#9VRyeUs@>uAI z*hTX4tqfO78o^pvAx)jwAry&u%(2F7S4(CGP1nDWBQn3eLKljtM>GehG+;Uy()GqU z53Rm-0{YavE3;0^yqlypC2}~q73?2q9*x~iO=H5W40T>rJiU#=#~-!n%P{YMO)T~^ z(z1%630_2RTy|_4;f*SHJbKdEQGARSp7>ss)~}yQ4MwLYW1)Q0TJ@GrG&OjSr}(t5 zf4%#!zqB?SJRy}UX{6h}FWqt`Kep7k690TwIz7#cjQ%L#+UX*up(HA5(#wrE1aIs1 zg6MQiwY#0=lTfknd*+XsT0*kFe*TQE^dZQ*;KJ=Gm?U9Fm(B#e8{=VfSI>L_Sos;{ zJHyX*zM_U{2TnzDBKna}>$_Q0f@Iuq*3SzRG}YMfJVIzM|NUEC-V6#(rzOG+b6D&~ zLq|rB$Xj2N?~f9fC$l5v4i&==#qHI{#l`(rqQHEziWrDp*y$TB7j626#VfeC&K`qk zPCWt*!@rY(II)arLi`jL7k{(<5IRg79StL5|9)qp_FG9m!mn_NjK23mxe}5i&<10-U2X07z_{px>ebIg&Ay-iQ3ezt(+gSHpcHw{BsN&6g(j5dc z8YU;|kgYFli8ai5o3<0Zy=0xuo1t~^3NSE8ND9-*g?RWvb@;^rjW(gKKEV;6f18-4 z87%$aP&4$G$bPA($A(XhpN(N)%NM_~aMdbSdV(786;$&B*&1Ma$VNU!ZMJ-&SlApr zWW_4oxU}KF-@k9b zJ9V8_*HkxJ&)M0H1?LLxyu(~4cA&_&uI}>~{C{TuVSa;JDEH|zvD+b*IBt@L@QoRp z4ZLw=q!2X;vp}qzBq3TtnE=_ zm9HMZ9paNpusrv}0+AoS4x=5s_?s-_ktG^0Lm}TkD5xKD1WvpfPdBLyo0^J`$HhYU zRMPL~<0Id@hzUdun*_H%0$K|uCMbMP5RHQ#h-9_|^8VP(;#21lP_a`k)w%~2nnE4J zq4wt`{-#pu7zvs>SKEu3^5KO7C!ikY9}v(x&JF$Zr;_dU#_aia9nJInLS68kCGeEIvQG zoNr0z*a4yGnFcGt4lyA9F>YvoJedUgz9OS9EZtK^%9yqWlEkKu_>C8vNzZZU$nFm3 z>F&*E{>aanxl9yvw6=)=3KSDfjD&{a`qrS*X^{{pDlhQ>)(B`tUz^XE9Y%8z>~65V z#2-|zULD({ozts3+-~U@9u6y6bUk@+-VrNgB_a8FbF)CddM*nNm>DjM$np;j1&99J zy;syE$44If$i5f_`oWIFVTq^r=wPmeh zSyB6A0kmt%y3d)0e3tR(^TRWBwfZMp^`ZXj3wKAx;=u~!>se1eta;xoXT_19(p+M8N2V(^j&BlC1s}Bh99T~&8;Usj}S|L{zD2menLEM zc5k*CPAXeQR-X+k_kA&Dr-VLlh^*Kkj1nex}@ySd~JC+qg;xRzCw zjojZI^48?*lrs4G`p&_XA#OeR=H~}Mq)2*%dA9jbkvA`sjQiqf`@08|W<6Kl0YQND zFG1LvjrIW~q+;c!yJsz(%*A8Zrzk4_rKZ}d6mb3^)c_wzBk8C5IosP!J z7fyl$HN8Mnj1kXseJSI#)lz0ouHVv~5NCH#SeQ|7g@O4(J-=ez!o~S=_Ud}iG$IZ? z1rSb5XnA;$-+v?+7#xh~-z4C3izixkI~Om#{DfhT07LzeQur5vv;s>a7Wvl?fh>4+ zKcOiw0vumz{mOvul`plSQx8JnjAdD#O2mTckQ&#NYz)a#pU^<4GKP2R_$)5HChs`ee~!3c3}7u+n4Ftxr(C-PkicD(UeWk_gdv z575tE{k-r3)sf0kp>9`Zh{E-`rQkf3hL=7mOChSr$ddY9b7-1G_v>;+?KtL(e$M9< zi58#>@1_?s@C|)I%|KMHEVXtKt`@ID`_K?ae?8!x_nu80W9sQKGc$jkZ@$k{!k_4K ztumf_DfkQ(y5!WcXhVA|y>B*r&lvfcY#{NpKhCn-s8Vm5VXoRz9H>&-G0;8G(3yVZ@z+KW*%H&$(DBqgPQ>7sqPw?>TC8W5FR6_7P)HZ|5-NVMMk*6ZW@ zjQ>O0TL8rw1>J%WBS=E<;KAK3IKkar6WrZBXdq~CcNsLeLxAA!!3pjTgR__X_TIj# z-P+nJDyd?InQy+i_jdQ`)917%VA&YxtJfIQoo(IaE7e6uqoflw!j}SZq*cQAzq79$ zE^2#PG}+SNEZ*Rm1ZJquoWcKX{eT z6c9lkr|F`v5nxTGPu6#3L){!R6FqPzsmYia2(!gKZ)XdJjLw&_Er{>XsFXi%d=|Cr zZ!%DQYfK6uB4S5)W9xE6o31?@z165=?o!}6Fh*Ej(EtoWq-L4R0COfRbLCbe-eRo8 zthSF6CQcF}Gy28!n_yP17mJBAf$KNTmwA%$nTB8tOQ*HlZJ9i_Hc60bPXdCwzCN}} zCiN{+PJled?q;7;T1IAjIuG$+u6B%%l+)+$vy?h(k`I)L2pj#1ZMwW%PWu8NoVebT zC!4VtGg)=hdf$9O9ZF{X3nnV?xb1#q-Xc@(?n~E|rI{_!x=fg3Ac(|ofgn28C`19% zc)tDe*DzfQrAj5~@>_gSY&A7eBwPdmUxJenr)At1{H_8u)GF^keug2FtcQ7rjy`zE>+{#+4Abu9WU^ERG2>wgol+jgcYE6u z%xV5ga@bOUOe#Zd3tY<6(VZpnVRt;%UhQ#M6Mta*wo3q%Qy2woeBWbZbk*uKX;fK4 zE)zv_o<7C?TvY;yf4h?_}wvrSV2hQ{tc>Hb%4lFEStU#=Z-HMTs@fQ$nVW&&3x-I9GPX0(Vu!jH=f)4&9 z&C<;oP6yMOMvOeExbc)s#5Zr&Hj2eT3_#3nmBYowHcCl-Uhi}p;XJ9+EsWu-Ox*>M zCt44k{B=2$!hy%-oC@gqGu`Nlkl6U46c*zSVcju z`G~Z+M0CZq7~jm#T(wq0R|5&|dmjAVG+MQ^-!boGm6etAD>*ODZX2DCK7BWq0rFHG z&`rAj`uOf98$vJ+0W5j9YBLC@ij==>N42BdIlo%jEY&){!2W&We`{xJ+snj<^!9DO zRHW|ya*L8yPgbW`;zuKDaN{@X8XRUD9n^MD40_BavNZk62EmbOs-uR3;!`v*E^WA@B(hxqFEZ2g-oG}zQv9`XlP^5O@??IRi>^e z4cP6mh7-r(SVVIBOi`*GT%(VdUlS(3A-{W0HTf|m?fNz?@mhH%`}S)?g58W5e4m5%0^klEfjbaGA$N6>fDO+5Rh4pjm%F?7T;@n< z-C_B98A}1d!9Z9M{+C}v+h1N&MjeoAD0II1xIPl8OuaF@*fd$J6kOiqNKW}N5uRVV zYi=$mnXPE+PyGIH`L1f9TidYV`Bli^)s9#w7DLd4hs|(Q^3NN)ImZqX;`b|y$brNm zT~Y~ueHeWCAJq$GB#m5_Z?528FuPwdHaZ=2v_6O1o-XF_v04rV6A~a1VdUU28TEbW z-9Wg+|M;suBu2f-{3U8g02RLs2^m=+6NyrWZ%_bF2X!f7xlY^gpOBcu<3&^Vi|yft zGpu85<^U^P4&YIfHxcyf*9VYB)0>5S^0nf22D9nZU=G1At&}b}5^sw0$qRARl{Ku6(2v`rLEQNA*C1Mv$(MEo~t)lL@J@m?7+N5LI8wSFgY9Y&9&=i zyFU;yE77f!EszF^OUviG;XsoH93ja)kr|Ap+qTo?x)Rs+8_ZKlI{d~{aTWx9=Frj3@|UZ z-*DzW@Zx0~EnUFJCPe7>1y784(5r9D~j8 z=YLdXf57FP!NNTNJ@Ne|P*O^3XHT6Ab@KWVqZs3MeY!D25YuOfw0|@N=-WGUc`Ppx z(MKcFakm#E1AYh4qB-8^H!pPKA3>}5Kx{D>^@Xhl$PV~vJ9T$Vo@AoRXB3|8Fr%n$8s zPRV2iXFqiS<&i7wR}4*vyW^Yho?UjO%W%P{N1|Ayt>GV5ej^YQ>UK}gp$HkAF;s51 zd@#(FH;T@bl8UnMMZLIrXYXv4zUK^?*!%wAwI?;+l977WV#hM!hV9}RCqDUGWPpi@ zCC_$j)l^xrnG64eMD#Z|7I=yN7gib+CLWEBR^5Mvu$amY2db_JVas`H8v4~RPIivo z2n^v&HEiw;MBs*0Mm4ijjqFigRRY3WJ0MTUIuZQmwY+@~Rr5RI@w- zJ?%IuJa)`@hVP@{Xyi?4Rgq5!h_&$u|h`o3L-8w!&!&_{_f`fyzx{g?ET=Q59 za-I`%hL*}59WIa7%2>ddE0@cH%Jff#1r|v#a={n>SFDz!0$S6v4UAr1uTZeDLt4P- zAHCj}yF`Uahz_p6EyJ&D{sd-I-@422R>_TiypNuVV0D?853Kb>R)A8g3_k|w68VYv zoDRtGk7u@G!2sz(5HPhphFkC9o?_c66s_iKdQuYhgz;dmQqNnUYG%?nvwuU*ai8+A zUadV_>FzJ}=mGucy^ADvdDO*Zh43xM;FJ6L#dQ4a{R}~oDn#%|mlw8hcT@DU{5wF( zo=nLcfDm5P?0{ORwa(h%?IhMQJ zzjiPlOz$kpld6_L@jAS^HWTZBMWLFGTKm z*zHE7HC2<;B5-2<2Gc+`X*SEPMt!FkNW05=xQK>gIb-jzvHO68iRt)HzKDoMsR&nh zSNRG-H=xPV^^?fI!S0Ow0ru-)Iw#4*D_rar!nKXA+xrr^nc*}r-a-dsq%Bni{Y4by z$^EX}{Q?GzOcz*;=<;}6h5>)w-BObB3J1|ZL@e@*7G6>2q~Wcg{nZxcva;FkQEVfu z@7y0h{?rF*dCs@VuuG7Ga+NA_C?U^i{K&x;9AM@@#q+iM2Yfxl7mF-X4*J>YfcNh$ z|BU(#YB-Jqgp3{@C14gZW-34o8~!ymJny?cj%|vt8+xFO)E8Syq)s%|_wN(4$9y&8 zge4V``a$a5a$Mo>c2=k79lhHur2ZI8gKa}{1XyswiKS}V8x6yLq2q1ersW zp#9ah0=-^CKUjnv9eU<5Bn>AnBR*G*0s11TH8y21WK!|Jho^%;I5ccn@#(&urs=H0 zNs<vR&Hx}NS5@D;@l1{Lr14X>;P2^k%rml&zTMpk1Zac zE|`&sRe@;3=Sc!P*2JY3I?i5aS@$Uly*Xm&^y`H(!#h?k0x%$C=Kg3Z7(Tfy)iNq# zD8Emvzz258uG5eLhlP)wF>80%XRz-w-bFqq{zL%~oI8(P%D6io19HA4FDgC0v(8dS z$li!fu20aL!Xf~wvS^ms<%ojkl&IH;rjYj4KP=pqX}9z*1o|)@%_PmuV#UWp`U-^I zvSl>_d7RAiW!RZQM038ZZPGa&{2}1hTHMe-CnKPUAne(WCUHd}7zU$zJ9{kObhOz2 zuAW*4BnxJJ?w6aO)XaSi1~~^#=U}v0Nbg|gs!fN%A27>6;w1B~Ts>GUCr!Crc6*E1 zEKYW2IC@<7?%y-ionJV}(oPtg8ZOLE&v9L-3+iVtIh^+~IS&Vdy|=Hw4FwyoSed#^ zyGeE)sxO|juR~2+cT#H5?ibKH+NN~Wa|%EiPzOy%@K^`glHC{nWW^wVWLK`0mDZIkbHcPU}Wp56hQpdm31^Hyt?L%Py zR99^x_usEry+=QiGZ8PiMaRq!V5uU@4%??25c2l&jZ@ArT-L1A-(`7IR5(%hOyCAb zC8@7Xe_=*7+l3=kkwicqDZgHYNBY|~l;_LVG!&Cx@()l?|a^4pH3;fPs>EhFlLxHbCOKie}(lS+emB@|I zG+a?;l7opqGFr7i9iVz)*qnapi)}>2#C};h-KGO?k1z9`idCQ9f^Oc0(clsYepTcWmtB(UjRl`b9JidT#DEpCL1=bQ=@?lVKhI3laeYb_ zKBZ5()?4%xd4i>&K#26cnwO336!aA$Cc~Ip>5nD~0+mJe3P*Sb5@J_OoMbChIpXLQ z-O?iG_;13*eo1p*B8jfZv(Fg} zdhs*RCJ(GO57@ioduT(ekAZBk3fSm!S_bz(DaOxQOHmEz>22;DznjS25+t_=? z9Cn)Oaj>z$_;8|GvbE?GuaekUc*e(&TVz7!v#p&5(^BiO1Y8ZUQ_e-3-K3H7r*pPa zdAy?rsFnt(gS>st%J%i`YDE1d^8`zWxparEJd2g7s!F#EdX@YR4cN%KMtxIijbpM~BTx~lQefsMp>D%9W#L=iW#@*e_T@A;ZbQsIcT?z!B+H=tdmCcuM zaE=!yzkNnjqMyZjC4|i^gdG&boNFex;b7jR_}re?uAW&$&~qF&EG(R}isKuLhd&Hs z9drJDU0jHqyFar?cANKeAv|r1)fLT{t3s3JWB#F19sYL&ld(lQ-Y-6IvHFg3_qgKj zMiP?)b`-*-ZAWF$1O(uSqqzTPjWfKp_yEKWX4C47}4-*xmcxh(hLMlN`VB~ zG*F4~F1lZ?f}$>#PAMpPinn3!XawfSo0E^NruyglC-HCWjLy``lunDS+%DDMH(CiX zUBgWs}vg1JFo6m-0>zy`PUX-$cQln0qMa;JT{or-(blk8EY~ZrK6-dSxA}+a78LJp zcIUGdJ4U3nxkfwTa#Y#(>4%LIu)czWD~Je?^3V&O3@2OC%P0PL#doN(SbYT9qSwyU zJJRJc5)>q0GW;#BS!X)@fsin51_7N?0PNk5w#Of8ET)912C4? zkJ*bEy-6_j?YJ|@!ilm*#BMAmDSFq%2lC z{vo;$mUB4B$P~jlPDNGK6bY$Xt};)N3N<9mRIpUh0!unUT!5JA*XS>p z=g)<5U%e8~gOD8CPdLYkKGK&_=LNWmke0r}G#JUI=v|9V)W9A$muCvILJd(PHRklA zCvmtXjxCzOg=C?$_jpr4HYit#Gi<#U<@;;!A}7>jn3!wU_d6oy6olXA6*+K_MbC^J zq7Ysn&Fd2+&T?gq`3?@^a3|m>Tb8C+u`@D%%7Il0eHK2aSf`^O^ZGAgN2|D7rRFo$ zJFomQl+Dd}H|mm`0BgTPmBJq>1!#qOjc7`@cOgj%OEaat!%0)s)(XCb655^)ayB}eA~$=SwK_oQ z+1c3>^JFB%A2|!o&NixgIu=sB;NE5`LMYd_#UJh(C*Cd=t8^`vA}ohz^nS>g6bVo( z*ODtXmVwA;b-+QpcAfSrs%r9VzfcUP^7h;ZBVRjpGYITz65PJU%LQy<62K z4?s80^^AddfGp@!xZU5dMW*xQ*=P!I+Y0!!9?quBI&6-Yn4y85&|m9b^Gys$OS@7E>UdXO%MD>~$O8 zfQWgz*o!h-CK403aBg$6iSKcFm?I32MXg$x>A;|}xKOB?$869o_xV_W@ag)hjlK^% zY1Ucxbq{I1=Q#1Wx!4JpCSL>4BWsCX#%kAh0DbkX4XD-c9Yul|$$6R6%C17Gmku!6 zv-?;`7y%!Wn3&kJXV0ltRs>qAUw9ZAqIZjm{+ZqIdXD*ToBlw+q!n-XYqZGa^&kk% z%F2?JcI+8pm=Lc=$?1_VGL-0#qw~+oLR!Y<_~UW>4p+7O#Rm|pd*m_{=sO#KeqqpM z1UpqxF?JGqx(b@Wb2I(*jrxFVBm0Q<$aKCac6LlsosHkWsEq2dgXryRb;C~@2EKc~VNIgz!1d(zd^|%6Co)<6SKqq;3FbUND zpY`>nE3!pEiokh!wx!xT7Hw~&tx;`A)#7pafu2774fg66n1t1?*{VmFgmUfn$;sIM zIBFx@BMd4<()ssXIUsEMKHT3h+iu$eHHl+em#r_oLTMxK8}9FpSGy1aO#JYI_i7kx zmh{;QBpkyVlfh2ST#vLmv9d{ER026jnOqQgp={K{8&X4bkkBAJ^LFi1HGIsr|#iA z@SK^Eky%LpgOItQpy4+LNe|IKK_Gjxdgd0+m)6?&+djt*5U>6EeNUp37dAhwHdBIpbfMfXv zGkCun(WrrbjfVM5iNw+2V$^_AU0w~)AnkC;(Wo)T2P&6H1gwk`BeQ8XpvMbvTP7&< zrFM&ZT7`kAiR38u`}d4C!!{+FEkVnV>S1wtFJ)3#H}~ju9#r)_7aK@CphsI9#cGqs z=br~|oaPj~{XJhrrKS!JE^o@`{$x3rt0rf>;)}X@QLa9gZMoPQ6V($*wXgi`#6Wbc z+HO~{wJcAn%4*GhxOq#psS=Z9|4CH{Gz5vav!Bk${Nb@PMV;gF9z21TVY4G*g zWMR5nCzAmQiMCW+?l(Zn-1V3u;p9wOqmV_tTY(M4!-uHkyaF03lh&>kuGa`K)0TgJ zC%;LlcB(NOOWonWPwZKmkfV;U_SCif|7dk&qzi} zRu)m)P;y@fKjsNI$6^_@;%iH_P~M@J&`mU|NTu_5_2)wP6(RZ};N*<5YEDo>N>gyI z_$c5cC-?L+7q}c1CXe3cQ-xnGAV22D;u}J2RH!i?U|~JaoMxnF9uw`kXX}kOPB`e< zAu;!>o3jlc+n)F5zDP58%VdXi;S<`FkHCyBPD+gwZW;9+qg~GKhfyHu0{wbat*hhG zmPi2$D|^9o;o@w3lEZe{(%MD|kLh8W7s1&vH5r}xfKx=D0ZBupJ3{=Q2=RK-(&^l2G{V z@OUN2YEJg12fxp12Hp<_iT*J$yDPM6RhyP(xW~@whte>G*Rzf8q!X2U!*nL>Ii#RjcbcH4_6DSN`I5^G>wH+{$vqM zF3c-4y%2$SQ8%!EJ~*hj>3?9!15e|u^^!gdzVz6RGpq|I+P`Zk8%_exW#XTdwuvpHe**U@NV zlbm_}i7Wg%IH~Ee@T)g<_g?Mfc!3L)7@y*@f8~o~95i&tUqhCB-azH(dVG#pY4HaX zs*UB+wcn)(zwT&@(;Ayw_~;hhXq0@sm#Ok6F~rQ}kql&xhl>Epycs#)n-G(3y89hL z$p1Aju)&!Z?O*uy$+5X_Sg5z%VP1B;_ozY(a1joJnvwNy0PV)FKgcA32k{UPRu`9) z%>L53FhV&CWHa9EP7OKP9|~=lz0k>-BjodwecJoxrhz`)uem+}eoL0gvbX0Ri$IfX z^0ApGx8r-z1kVB~h+ZSrKde@Ql#C28Y|onMt$;ucd4B$!kz7EV+;7*6VPGqy(c=81 zVIl@mR4h=X0~v?EzYv)9f0e!5nrGD`TcTOZDyQ`Aag1d9AOG^o!;l%fSdA8|Db)KF z;?~GObwtS%Vd##ZiJiUsqZP+YGvHI)y(qo5L1S7f0CjFBKzrWv+W&@2v#~JfjK05R zl$t+2R6_j^O6L_8%Gdd==vLdG|G1_dTOahBeac3nQ~i0!x6du@sh>D#|NYak{6Tc| zzln)Yzwf|`t$VRpU>^9tJPTZnSO|(Ec=YiZXtXGn7X6XX`fvK^W3>4H{Uu2A>z_K? z|NYZ}Mf!id&HwqE*n$^nnubreRG&S}i zUMV1@t5U3buU_{*AI^|S4!&`(m4jb}`{~LXie|lcFg<^+83kweiyrOH$3o=qtV9?d7 zuIB5`vq^4OM!D~GM5vN=T+33 z6b^@rWQI6u)l3tpO`&|2V7^7y@89xu3Nf@t8|P!4e`aTQ@PLoQ+T;#PDvuY=qc02| zB6_CL*{0+EC;?c_Fo!Q+03Qex>xD)ckX?gH7WlDH0IHpPxdZ6!>n=U7=EtJaPQ;nw z-CnGskPSqD1u8$sB}$Qeyp1g8zinGCv|F6tWDs?#S9wxds}yb10YUlR;YA;&>)Q}< zQdDpRXfzvAL7zSQQ*T`=J6kZ4eljqqQLh3S{6LsNdrMV*cXtPLo@WP>*bq&&ItcTI zfkQJo!prIDX~MkLkppNTB19wS6;P7NxYKNq9X-H4Kf3n?`{-CNPqkQFHP`#dW1v3_(Je}fr&=W;aLPHZI;9c!5 z)dEV@f0Y)-muvMmsI70WPbQFKB&1^vZgp*;keZ|MI3oX7;}u@Fk&4TJ#}^VFZnVk3 z?-P6TA7{s-!_6SJ^IZ+x04>2bkOWG(x!Bb=1?-?`93J|_Gu-_ABLYfHd)i!w;j>YB z-L{Z?&xT5%v6=*!oKN!Qnl+~FpgsSd*&e+({z0Oq8XFs#fG=0hhj6aivi;8(NrUYP z>isM4f!z%$h|%a?KCRxJSiUp8b~R|drbvSszh9XjfF_e*=c@~|`9_RSK&Du? zHuWdg7hrtx%9lTZKF1OA<9uh<|FKOTyx)=YQd6lEg{!n=fYg=LM4CvRgfvkUgC? z0V8WeDW)8a+Ipog-gtG>3n&v75a_`lknV4C4`w^m;Ts*EK_uM1LvP#wO&vK z2y0;+)O4&G-unR-ujMGHX-)MsWqKw(Atp2Pvv=Yp3(bRe?pe^(M`Y*?nRcst+@?&j zXFP|-zr7g1K*!AdgU~1aQ|WH{)%Ehgc_RR;_OB6<2okx>>3RPjSbGOZu;uPfC&;f? ze)lQOy;$63voKpxiL_e|{{)Eh%LCu*n3zg5tKzR6yeA;@y}hsHkdf0281!0y^D}-E zIosN`iUdR@t`nWkS8sYvG9qWsHd!ot-$_eLt5>hMkfH(_>KVWQ=6^CJ(CZ8X{$PW> zQRqkRf(t3SIj7x0&}wA5n*THhG;)&wCe2kf5U?k*laSB z&&&N{T((cU*$`erqOaGGSvHj?FfZ@rlgPQs0A}xoJx-lz*QgELt~4Z(#fA?woRXmP z`_eOr2nfbQjZO>oPAQc}+B;J@+=o*|u<}jbLaVE5@JOvA&HR`O6BGVq-yJiCpER{F zhmwKieZbL>R;(RexXUshkjJXEoFBI0=Py!$bc_=DQ?2d~##_y+|J;@X4jX<+5Goi3 z-GGT^D{l5uozgSmdW~ZCW^c5iYV4{+b^}cQd&UrFt2vmJ|AYL-UGss9E7=K`-F9=q zO_`c)ig#gWv6uo7@r?F{bzq+OVgTV_xi27eI-~#wiTR~-j1D)fPdXv@aL5pi&LxX1nI>bk=Hfa`FnDOhVm^5eP-puI5J-F^Jvgm5%>vB&9s3M7h* z9Zi=bz$f|q`E%64@;|!tYluXS-qv82&Yo&4y^5rbA3ZB;SVB25RR+7FRF?c_OT$IeFIRb6K+ z+mOLzYGfu+x;q8mSdLpzXE_&eky1MfIJ5});n`1oRj}a>b((&f&0o^)@z|~am{qv| z;8HO8_a8AJ%Kd))m^-m7fZB9Wgdv`%*aA)YN6q~Hy=QdPmt||%z`{VN;4OZk_6`l8 zjSqIws8Is4kpHXm8FC?;rA86Gj8Ay{^@M;qL9gB1o9wh_Ccpe$C^+)?MuwFRfVhBU zH#j&5P&zkOdXf1+AqH+G#uE`7Y#0n6EX_BTMuu{n0&V2WI)VOEAOiUls2(iI_w zz(@i(yL>waxqgvqp3tpx5}!-6J4Tr=7;)spp& zjRABJkCUg0tIX!vW$}5l@A1=koRW2X?z=#-d~$BvQ{dx+P(b%}ZF^fh1#{?$Btb5d z8fBI7sPou*68MyR!Rk8gF}wd}Y_Vwu$=w)9&|j50>xhd&Wr&h?42FE8K6ay*M{L%8 z>+0NJ`a)$?Rvfm>EaNvWnsw%bYXKVC2o~XUD^|4^`IK?mtHaX&auBjSUewid`5UaKy58jpOw7vZmO7@*fv7T{}%SC_S zrUv9;k~U2oHj6<8!Eh7#vVdkE&-eTlv&S$Gc%NVA5G8SOX+uDEdO|_ICSchI`lWCz z^J2HSUZdto#byF}3D*UE;w^4GCZ;QpwTZv5fatI|>BL)r)oOevoXla>QKFX*&cWc3 zD5Brp-Om^|3d~--Ts9f(MG3=YK`0Om{8?F@t2I-`T684x2HB;yL{G}+$lLu0R3H^V zs1LxO?du_Et|!E)5B{$#GNOW8UUx1mq<(sS!{Rvl;Ry=>G`ngq@0FEL-gnnnIMd}L zBmA;iid~^esD^+|3Gmy~?Jm)j|2d2;58I=R<-ALo(l=0I)n7RVJ%l^fX9Zh&|^_ncfyq zzYQbcj%cj0P*^V3t)21F%hoQ#S4b!`i|JM_kxxG`LzaVm0$W>tW#T1xb9!Cksj!sD zBrGbAHcO)|HkdE~SY0}qG5tpOB9Zytq!GF!7J^DIeeF%WF%WNbd>jo(F0=z&o;Hh{ z5B_jZ#$*be!IeiVpHxdUf9(7H*EOa)h4F_c7T<{^7&Yvn1lrOTX=Y$3BQf9IffF2mmFZ*YP5I* zOC})s^rd@$w%T+$?5HPl?O^_W>&{fl4E6(g+f5NMg>1(3_1!7exBn>P0 zZ0MusHgWfqmmB6I$x2?Gl|pnh=oNj=+X`pSX?l3TKv!|06AF)Iy&#e%W`K zdni-S;*rs++W5J(b(-r$V>{Pf&P1C$bg-z;osND7S5?$~``m0B}0>0-R^9dT-c z0I|+tcVA<=O#9Qr-8F1w=}de3SBzrSiK_V-q~pu!ht@-W*GxK}#Tl$+t-1!=-2mtQ zFu~~G{cIN7;}E4<=)YOgN2if=ev|Hf&JxYW7Y+_*v;&JLXA=+j#@*FF$@Cuplq)1x49^f-tWs}y5n5M&=2X=$haygHhK zp}yfXemQN=XW_UU;{;W8bz6Vh?-P@EryC5m=ns(m1tVV8;0ot{4-M7-wURZL0mPX5 zFB&Z*BqX$(ywj9`gVL8NgtQqj#&~>kY5b>f%<*6W9z-wIGF|^j7d_Afs4RIJ5xXTK zI(K7myJk|pE+W3a&Exx3s?fq!Ae)h;slstE7;8RNRN*yaZN1nk6m6M*<;`J^4sNEv zu079yTDkGnXqHC2oQa7=v5a9njg~4d?iTvmV#}V~6m^{0pG;WP5Yh?9Ek|I@$CWc@ zK3&+}>L2|2HBzqb!`(i=>pNT;i+tJi60dq7T;37N2C;ZXPD;vX(@r>;`he!NHwpU- zSe-eiHU2a?;%mOWc$w)d1iK{MMn=8M_V(?yL-P?b8R|bwIeo+i1%$g;L63)to4H(42HJ; zffKYmpAl$0t(l97@> z8wEJ9XaxR9q5?@sXy~f7K<3g;-3{26hgY`_JyX^((Bu*Uj19!u3L< zQ_8E0mO`Z_c4K2>x5mgYFH0L6xoc)4*Yl4TApkT7WMv0XX%iYB7DR5K2RXc|rRMfzE8hRb1yDI?w1Wx9Wg`}W7grYJ%ox?@IB= z;_*j}k%%1=^Q4BSuusgGylbkp?C2tMx-msDF|pQZkp{3|o%QmU{%SK}F)@~l;69Do zET>=>jk6lXPiS{COCinznnfEj=UU3tQ*bsnQA%MmKp(R;<(T*0^VN8XodM1y zbes>yd%49ICIXK)Xj#Wcw;2g;sWb;nXa^JoHw_OWKksx|4h{+gnx>g(Tgi!u@^!Lw z&;0zVdrr4T-~>DcdES0|0kZ54AJy&vZR`9RV^*tF3KEKpm6ZtmBwZE@VlpC5t_izv zQGXmZMQP@i_+ik|3*G3q2g3bxwPrCJu_3wZq(5R}SoG#6S?3Ltl#?|xqNRht%$P+% zM9JdMXfR3h^Jw%7d)Y8giEf@^bhfgwCchjxi?FfjRl7y}PD>T^a0ZNy(b5ez9PSMO zY$BP%IyWYEFaivj<&%@2?=5}@gDgAE@vZpxFg7+I?dxhd+nTNPf@3ir`LdH8=wp$k zDJ1k&i@b0CDq{n7v_>z0~SLEl}2{JrR(qF zNyxX$>r*2)FHjPnG-3ThUiQh@yX9bK&j)CO^m~r@wE|hY-9cMrQ4MDPc!Y$eQL5*B4tWz-DX!7VAJr9CG!}Krw`CjQVRE>TH09vx zb%ajBqgkz(0CF4?Yzy+{TOUcqAIA7P_&VpyDQ?$lcZ>i0pH>O~8lX8qBr#ZwJ5gN( zg@mSVlk#vpl|K#6C*aJ)GKHjao}-sivc%WUM;pz9ND|dTlTpdIUlkUEp823{lN||qioMYkoCIK#r$|f~|1?bEHjDGTGE-lU* zB_<*wI;e`r9A?97z(f^ol$Zwu;;3xaZ< zV^~_fZgTtnawyqYi+`j^1!ZLUU;-+aotG!les>+>8Rzzl`C?gGUq72`dPE}31fZN2 zIimIK<^k6WZY3IZd^&!I3)i0|6R07r=~0E(*-MSuoVAwA!@nNx#~-|xrN}igsr=&O zG1ba+6^?=vV`G0etbEpNhPos)5~j7o(YW$)JV~1UZc7Cb&l%ftrI@QQDboWdy0?pj zX_96>IV26sAk!kzsA*W1ZF`~xH>O}{Ww5+WaiR}fNeK-=9Ac)X?}1rdN2@#A{y`D5 z<@(cHQcy(1+X1z*j)~HW?n+;7sJF>#ZeM*ENcM}>2C8-A z`Y~o*Rz6GvwvegeH#HfJ&b@vIIRf%0u zv^_$yQ$ywcpBmia@x0NgDFc9l?cRb)+H}5=jKz59Nh`-#HEOv`ucyphB^=vRg<8$H zKfo^R-kKRqH+Bz9kPJA(HeNesnY6(sCMK?YwiyBA@SKk4AFVWNVKN1;Pg$*2hk+j- zHghIF7(>)6kKd2gxWn>AtlCnsu@@`NA(EAu0o- zz|wHGxjC*EdiB397d_Nlcwoe5SJ#*B;r`6!4>fvRZKD7h6xgfL?)3E9jh-4h#yVwq zU=aU&dm1Any(NjsfqYnYSi9aex)T@{p#P+uumc!o;z83Tqt9@OqY(oM37EiQ8{$b} z^xT$bw_NzWqvw;CE~SHzl=3ud^6(sPY-}p4Rf-ot#mDBep_{t8u~Y_u(OE<&$b_qP zw7w55?#5g+hk$!zc5$Un(Ylv8u{0K${>B2Y}i0I`NL%n)^1D$E$?AKTQ`N7@&W`ChZDrezz z(X0?y7-Tx`D1y?KX#Ty8oBTUbQPEgh1;4AS7XV2TkCVih;B9iP$ks-FW3YJhCYDmc z52(wVUJeb!{E91n&*J@zE}4x4fQbO(cWQuyz_&EsFoIQ~A18^RrT+8r*C)_kIXOL+ zpYgcd=X7suTpvg{V)1s^k$7@~c*yzj1Dz6WDJm7Ij)4q~AiGE2MQ@JtqTdde*Tb=A zto`d^+g%610o|^5F~I6wRV;W5teC)uT?I0MUkB6}UD}CT*_m@IEJz+^^20^BF*i3s zp2K*3YZhBUJp}fSt#eV9!c#xWa=9g#tA-7k(ltXV9Or5%qi46qVz$wXVyZ~>%VJR` zEmZDSTQZJXL}8!r|LZQz*6;Hq|rLp_dOrlHaZ&>Apk{8X6%i#`nL z4P;|qdSSk9dv{wt+tuy~n@jV6QtE3Y0=DBsy+VKffNna$o%bW30fo2NMkoeEJxegC z>g8V3pLXJ#aYSgDC+BTCWb`& zLZS6yHRWPWvQDLWK##45-g=QsCrJX6pGvE`pd6C#n>Ur_Lzqq$1R^?}mpz8Ec$uJypB1_;bblK;$39ADYX<`4KQ{30xDDtBU*c zYl^`}d6_#{^k_T12->uMi1~h&}&lFv76^=M0h8lWU^RrQ1Wy$86ElQy%goiOJ(_ zAUJ?_H~Ii{I=Qi7WrfYH|B*(uyt_o;Q)>ou2yuM8Mz?F=AYugw+IR8SF*6?+-t5hE z7F4-3ns8WxiBlAm63wQ!&;5Do8yXc0@~aw~KYx8z0nl@odH> z_kdxhv=|vQ!Ymi#Q7L91D&OP2!tQD$z<`n21X>6FV(WZ{+&{Try#V|Kb%D&XU-Ozq;bmuiSK*l*Z3ahs0-O4HXSxUW)}7M53c zF1d;j)B84?oj+x1H|RP~s;HjW046BNYJ%gpQ7@=q(00b8*BzWN8A;@^TgBR6^cesd z;5N7EYmZv1>%#T)E7w+strNh@12>LS>_SgebanS{S1kORt&79JLy!wztB*KzPSmmd zj13_$o7|SG$;0p!@Zq@=o5d*a3KS|RG&tx-Zh6MUbXBQT`xvHHu3KSrE9>c#m_D!5 zHwjW4O119LN}qPi7N76xc|TN&)eKbT5YW&JWHYYg>TH(BGe6z$+h78@{NEWr#vU9v z?Vbvc8mkyDk!XXrmzU@@w1bCwm*Y8FGYf~qZT;W?VS2c+0EPqgK98`t-gATfwDBrF z+aQ~IkG-jK1i2&o&*NzNd@*BQr?&#|tuk{;WiEE79GYmbL&3JZ&(GLCoFJRHKM{66 zu~|mNEe7ULU8Lk>icQ8cs#mvXHPH&zE;3K?XQrxLHx1Z>=5mLyaX)x}AA9Ub*?61* zrxvr}ia`9U7o$T3QjJ1fzY757OU}d;4cJsC+kI$7^D1PNpRoae$Z5T{eX@qMJ0oY% zx0gUHr5*T=815nb>HmKo0Y1n8b`1y!poKDH`m_WDypX3Hz3vsRrM1KO_xRI4SHWYz ze{_9edGt0o!OM)9V%2czJ@%5X&5Hq1$*<08@{p zGV9&;W=CiE0Y!v@pz!aq9+Lk3IdP9MUBjmzUx6yODtTm{9cO+$Sev@HgL(|KmIKFH)~jC?jrM_YR0C=$o|qTz`J#H<+v!chLDWR-27>X z&2|hF+`XCOYW&z3Z*Y)m5D*lkSgKhw!uH}n@5H$V{B3`!DwwEK?CHvQZ_hWt#OO}C!|kON zxomn^iiwhF1c4Bku@1TiJZ+~SFY$XY)ooO}77id~r};-Fr@3=SBT(-IgQtSc$To31 zQ=(OHGI*KR46ojry1iXpstb}WNh1$n8p)e%#{B>kuWDUL$;rtlxIpsXACblldv$Q* zWPE#b3dl~Zjust2x(XB;1J2EaYYsiJFksSj<6>_nqqL=M4nU?3_mB9@{$N=MM?jP% zezy&jz94Mqizlm5Z@eMrMi%}&_xUx0m7wdL7}+Vtq7VVTRQPRW6|pI3-`nKN05XN? zbZkI?u=R55P_bHh>!fY#$46fQdcBr@z$^V0uA-mJu$*DekQ5s*y)~XKqjht+D^ZL| z$ETH&aXL7{N&a+;b6wWA6};yf-;fA(A`LL;HAuHKI)ThmwM{&Q!voXpbh~&Dy_T}X zPR>>M1%s}r;?i^w+un2qZ~_9rM2JZYc`BDzG6se?VO=^_&%h8Bd3 z4dA(glbzWV&>)ZpIb3+{*?M0m@Dv`uaCqnt0U2-<102(o;vY- zJont^t`Fxn;69#PG(Ks53ENyQ}A9vHb=UBQug%%RV%^s7UhX zNxd|qQ+tzVx~sKue!)fRjnkRav3a;DmG}DANRg3fl|xc^QE*Vu>k7vC&RpY(*z8Me z0_(A76cl(eGseuiYc2g>SJ%pQJt`YeZ!e@KSJ6>HxUQRU=yqLSGt6*5f#{JkE$Dx+ zIo~#%Us7J?RHU{SOeOQNx2!NGF|+y(Y_WZHCl{^Qkd?qWQyVxu<9)h)8PmV}zfSf9 zLziQ|R{!o~Z|zpBSXY0>a>h5;llMA0&)>MaLr;5EN=jx|}VDvBykQI2zI+~3+V**JG1sXpFa;`#8QXnkopalh_XPGM0Jn27!0vG)gi zq~0o@$YOTWod>j*t2$%VmaD8m!x^%W{>0wgObLw?%7^KSQdqoNmX<4NtT5};167m+_y|gJg8HrXqkQ|Ru zux$nmN5PEGU3>Q-wS0lR#&In&{AfJ8`lPCz&$ziLL$(ri>}I*wri&Z=%%9fP7aYX= zTC}QVuc3TI^E%$HdBVr%6vjd@S-QKW*X_-^K9Ude1wXd<@cqvAdz+;va#gNEhrUq>abw2L=)LwlmWk(dtp2o*vw` zC%!vHtS?$N&3RPDsRPYXLTS|`I?GyP_^LTM&|(u4-4N5Y&u1kk)~Xzizw?}8Oic{Q zL^<^I^widkN5ROr3sbd0Qy%o0-Vcgm-8F>99uN=+7e`kP71-v#sf2Eb!E{F&+Fu~H z$l@cQ9iaZfh6A&7o}=m;14F~+gzV09v_qCGduA(y?u$>2!ppyZzrE@r+f!v2Nj-{e z42i1FAM)_}oW&DYPBzH{{#i;k4SQMP_q4U-C*Ni#Ap2 zGL>0u{sLiX-=TwnNVv*f`>n3W@YG|xkP#&J8)BWA<|h-0c%48-ytgtMu>0#5zJ^jY zxCU_9O2K84(CFK4629D<+$mqy76a}9@8J!V)6qAM?A&d3T|$_IKCUtcfW3YD!PV4hrMX#=x5y zW<=m}7~oD87&Irv6yGnPTusDFEhs1`Fw2C>qwKVrEvaC0IbzZluiNv@4lMov0ciw78~F!^4)@~W;!tMM z)=*s_di>;3)z&}-1PuIx6(WZB4aP0U_%Cht|D4I+LtDV%cjVYr(s%@}1taP49e--zH zQqrsHC9(Gdx_4&ZAJS%8Z?n>dR2bc!AWJfI(pO;SGaM<~ZjF{&>c6@0a?kpcaMC#e zm)!$&fX zE3R~|yl|$hP(oFQeeACB2;<(el+k#ZA9M=L`U4NZI*2(sTqfMFkOdXhHYew~Yo=%m z!E$HiFS-}~LfFgQnN%pS!(_)HY+GhZHceF`Z@mbnlDns(LPSk-C;b$yE5V-4&u;tH zw!vhnk1CIy<|vMeiVB(dkCY2#xFgdCU$K)A`sPddiNqXN0sq)xk>g-iwR}Ut`1%s=hN8i|tCq!0NO6_ELu>3WXSNefeAfzNFYv`a1mCVn` z01Ol{7Cj&m_(E-oWicQdHEEu$l5>xwsFGZpvp957dJi`ED!fOoxf69iNFxVSiSH4cfh zCQDw9yWAKqwPzz!BVaNeW8c36`J&g)~XusdU_YuYkC6wO|Y{oSWM zPW57+w55pLsEYYNo5>(W<`@c26}%3=(+9ID z7Kz|}qHZzY?!n!c@V=TP)r-uKbR($p7iaL zUSG~*_?jcMtoP(g6O+yx{4m?J{y4s~b*|0{n@|*7yhK8=ztVmCQwWkp6t3!jH28ra zfssdiRF>xV;V;I{L#zPjvu(7%WYIe71q@v6?ujOwZAM9rQmy&h*kPMoNSDj!IFhTr5Gfv-FY7yy8#YM7`-hcJjvks zMJsqtEB#yfDMLy^rk}#Et1FB1^^2aFuYjvG)GW1JWUf0sf9r)5ow&On{ul9p=n@va z*XMS$52(XTKdwQ|8wQ(Sxoo$srDlyshSl{1Y_Ci$at7Id&Qh%x@GUY|QOnblO5hV= z`QagF{+ruwl`&sioAU+^MTw_>$C{!IpZAI{x7<}O^z;(H6z1mOz{932=n|I;3IEvO z-Q6%s01v*_Ne5!+w3VO9)*cs&AX3*<7J-V2`l96>0+Au49~2%Q9+!|%7ZSs2wml<& zd?d+ZjBH9+w8p}^rkj%kL&9Du2h&kuWVDIZ0n)&CFhTE7YT`7@MBphcp3y~k3en84we106Z zUBpUKT)D~ zr{mF>^h3~M+_%~#6YzQ1Y^pF_>&C#yJoobGi%9a;s*e8b($psing#fZ!KVJL-TvCk zUsrGBQJ=oI(m2A*TZsvI@=?&;T*<%_!?+ z%H;Lcl@*=7;EUrd1#@e0p@d3qr+Y*<*f>24L$d|-f1sR6YB%ox2g-?rXImHAnOn|7lc`PDHhSG0j(3vF z`M5S?W+Jds^Ox4rq#LvJ`VCeW+aoavp!}p&e}Q*kpVvOMps=vJySur&h)(U5*vFwh zX9AF5!$R@udssDqKtmmTjC4PCcXiz#eB)#V*JaXpEn!G8>ArfzZ=hx{*BZ(Pz@wqis zDVY`8kD0FS*#h0+SB{q+oeq~YoS*(ZtaUWEiQGOO(NRdJ+;^L(j1}2`#C;Xe>;35R zuX&ea9!%4y_wa=9sHhAKGr9)`9v{`-DB7H;TbaM|qD8U?c*P&|BUx8BrV|ABh}b=0 zQMFPEV#OVVWw>Rj87@9P?6Bn=><+XV+rrtoILxPK1n!Y=iM_AM6KO&kh!ky()SYqU z_XJn^`u@~y9bn!ysNIU=?`?SS>BLQUB@9Z#E%ZCH^Q}QLBw(8LN=+>Qv%x12)E;fs zU4)dt5}~?w&cMLhVRb2gL7|6xu2S{@n@YN- zweAaSyqG@j;W}{ILpxmuhf?Q#HZhPZHUDc=vHJf+6@%<;Z81yCu)&}q76joyox;L> z@RPPv*Wq|=*nH2zlCQPeP5kkn)pd-3`Z{5u zFV9a+p$)r7%v&3o@|<#LgmJ&zt1mSwZ_o>xmwYV|?F$z--*EbGFiSA+?#$WgjQqO8 zk9x1ZA{Gx0f|tX-x1LOTia1VdT83@D7EA>Bwym;fXXg~E1<(Bm5)JeW^z>@aPcepy zG{~W2>G1cbR;4E)GF+!_W&9q zFb0Rw1%eErP_2m{!);O3pSA;H)OfC3#8x$PgEZyVGq z0?GH*`(pwF19f}LuyGZYGPwdnS^m zhoI$g>-?b-r1~b5smScl6}?(;8_Kt)b800Ml4K&$zLvvz(rNOaSJ`?FLR;TC*sdNJ>ah=9rsB*w zzY$|IFugdR7?)BjAcvlUO}66oyR(4mUze{REH)}GSXo~bz~`LLbALu-*q=UDveKs3 zSSNu*?gt51Mw}$WY3IpZJwznM?J7$4;;lPJ5^Iw6jZGC^84+U1^^v1$La?Iw|Ie*z8YrK6_ zHt>X4KKBlf@0ylhzYVVwo=h!?l}0gT&{+wYiI<{vicMAb;LTIn^_8D{|j_<$zW$^7h^%0^6gtU z&QiOxQj98(`MT?X^EJ0upRJqxZLHUhnho17yK&4+a+*T_70B{b{;rgq@6F7~$yqvn zV;G4VAm95x@4?u=e&Nmk8u7ZhoqR*BBy3dWpWoz6{V%`Re}QRz|L*~@^|6gl@b+J3 zP1b3I6-{v#I|p<~I0E4*{JXpFhBp896WeN&&42ugGueL^woM!5j(gm zT1skoM4io1>b@~}zF;Ig*G~2BAJAPrU(6raZZ3kLShd^gyVJvKTXvT2$X5Wt%`W=L*7z7tMd$fm0 zfpE)#KLD9?R&sw1YUY23Woe%``r#jf(sG5(O5@Z&3Oc-8`%Yr_yCg5q8;$nXdP4(~ z#ggqi)<=uO*=-q(qDApI>_n2P%hkZ^T%APHS+&X`eBB1_MBVWNXBZ55RED#)JEs?h zgL<`{+V?Kt2GixvcO*By8bU|T$!Vw`LM4|CEADSFgJ_NTJAZf-yiNp-S93u}r&4jA z#-bRC6VTa*tEwDEbFt9JBk1kc*rA)uBid{#vD>FK9JPML%{`M}czm#~1hTjD;gQqy z_9#BS!ONIOOn=}-{9sD2qmm##wEy3rmYR|EJLJi~L=p5So=?skrDtSr%Q@Q#ZUr|e zH0V%fW+YwmZS%Fikq1Yaeffji5+8U`3RMQTuv6G~IoJDg-QNA2p7tesI`7w3ZuGMkho*UfZ2JYr{-ck(_=JK>NhsQ7YSk zis&E3{w^k(=SttLvIv$amhbOLZlj|&zdp}w!??cq*#KHXyjpEkIzW!CY>)W$y3iyUF1kEf>#hR|ew%v8?CSp3kJdbD> z3h@v~{DP^ZyGn?`7OHY`bC%7SxDxGdTM-dYWq}j>m7;-x0??7?Yj;YdCz+2}o9;dY zkK)=yBO#0Zme0=yJcL^{2*q}5ghaQlgok!ftj)t9d_JD4uNNf&m&+ZYhdzPWA zEOUK$G&rH;{Y@cUDDmTJ(Ynp4MIE3V52+P1atUYZn*;YY2GtxV7h;Mvm1NUZuNk?H z*IWO31wXT=TNW@2Se4L3S#2mG<7N!b>)kzt*}}oN`+>fN_}Z@IrUU z4(3}!L92*z*qF647YL+Q5JnO5TK&MGQ`O`O;jurI{F!rug-~kd2e>2`TTge!|8P~ z|JpRf(NI@^*-N%zFkD7cw|SiX=+78ZN=89}@X~i649e7LFRnc7?o7s9bkgOQ{O&TR ziT%|#KafW?+OGtM=}Rw0<$K5AeMT9;niX01KQ6qOn^4(5Nc%ga>`4 zUt`4@D@8ds-fsDoETZ*`%MjQhkC$7ik1a{Kj#o6#rA{JYo8WZ0Wj34V$cF#GSC`qS z@9WvIREVyo%)(}|=SKnWt#!6c1;Cl6`B9zsY#4VQJ#n$UgEKvn^H`!A1~j3+Lpy^y#_bu+i|G9D`?Oo?Z`Ic~ zGHMQ)%*@Vy4k9Iuawyw@s|~QO&yo61k?!Q)vBAix6`X6GhKtq4FTn3+IM*HnjvtW0 zP3K2gRtB=#t!Epjr0YIQ%#v%B8v7!fEyT;1mvonbD&oi`k{F zDkAHR3GgB*a6BwBniMNclSx@#3(~dkjOLkz@6X6=)m09Vq2#c>;6{#8zqkJCOO*+< zqs0qA`>4@rG1FnpwxoRHU8zE#4vg-=6OSdC8iJeF^IW;7x={#8P#=l zeFar>?^vtPW>rih5YF;Wg-~+x^ApsviBU4p6+2F3UZNmlC#<3>C{*$uFeQn_se^WQ zh3ykCr_nytC5ax}?wgHxb4>;h)f9}Emc4tdX! zDn}Fm8{-nh<-SY56CvbsCo}R>sM0HZL!eY-s4>zO&TML~0fONQyZs1wL6+}zfHurc zeS4ZBokr+)Y92_M1)mbH50Vfjoo!cG@Iox^{a@IruO}a22zZA+<9K%`bfDaZ07qDr z?S?T{FKcfhbwmuS;rJ1vlVVTr`tG9>t{T$bMNmU~L$+AH)j8@zn%(61O!O#Di&&$m zkrlQe1&GXOJ254O+>v-dJy80xWT-~-0NQ>?v#)I#%ZEKdlMd-0$;WJlcqe-la5Xj3 z8>>dJ=zG76=Em=AOKWQ!!3Tb(y!?aO0kV1Y!^IJLo9VIA6%@P=(=()dD-+n(#X-gX zGU?LlgLKs<+dYW=9>1c=f+T@mEfjf(Q#(+xUm7h>=EUuYq2q&0keOd!(Bu^qazWEr z1^mHAKfKI)zUX)FhH)EmW-1ld7pn6QTo!~k1&}~(_ysIm$Wp5LH9?G=Y5@z|P~*YD z$x^*D?O;L=a2ju`^&@0uALYJ@p*_+ze4TdtDSRm51CW%LW=BT&BKM;Jl9j5Zb;Aq% zaJr_STCDebxbbyJG;swG^DT7GlCLOOlbpaJ;=yei{PH9NmhWY0FV)nTs@|>3S$Q}U z@tL}$EaBo;7OT92D`B|Wp4@iACmgKhYKNyjux51FO%{uTm2`WfD4)ddF_B6GwqS){ zE+FL4Om#*9L4DWk{(bgK0pDJ7R!uc#40P8qkCH?`=dzb=g+>;d5(rb6km}^GnnP}K2r}H zzb_k-4c-=KaLA-eCgO701)b#Q2V!wqZB7FdxQ|BuYgD68a4RikD)&&*yExcFcofF|j znVFfQqT1SeoLsw8zpjDRP3>>f*=-B`wxD;Dh|yx8;_pDG21cK!5{T*PY3K$xpne%aHQrN3D5u&A*=;)-3^lCCk;-g!Gv!UcMvC3gRI* zL8W~!a-7&_(U=X=XUNS(aXmXAU?E&%nNXC=lnh6Td!7(Wrb-IjR(deA2AX47MFE|) zC(TyMa_RyuJSfZofIiK4&o*&8oV_NxiQF8#l6v*=3D7{21qW$^=!_$ED}&A##kwt{)v&wkD6_HIQTUu#q-IAl<*@a>b&QYd|OW8t);Ip=(U zMk&u>UJuM&>!P@2^C@{~4-fK_LT`{EPF7AM{LAZ#6YF{a3Z0&7D~KM{x%mod!QtjYeVK z-_aaOVK~}b@={88)0e&Y>X!>1c_VU|115s`zT!>TRiO492v>mqOAyW8kDs%uN9@$R zzRu%yQ@u|8#>vSEfZ2hoad9j9H|``o6H3sCXW&QDR~}#RlLeS)c9nctyI4-PK%izR z*4HOv+y*tIMBJ-8=N5=?3Ry`0tElYm??)tUD!W%!b2A4Pe@pdB^!3iCWTK}>krd;l z(vVS1fSvhWA|j%qvx09vICN%b^|v^WE$Zqr8D<-O8+&>fd-K{t5;a-e#pBY`k*yiP z*3;7)NfIFnIg#p}yi3`PwEnKw+bgdX7D|Pr0Hzk3nc2=pqm*NOc_pHx6bT}OX~V6b zZ9;n+BYs-Z(R=ITK4-@}4Cek?JMWRxqwc}xWaseIoge5`H5CF*_y`z)O;fZyE;0F{ z0rtdr@+41WhT_3(kQvQ39p3>y^P9N$Ci5#SE9F1i%Y-dyp1EG(ckj+LCx>w*B^$>k z^poA*5`%1F?@R(;bP}~h+vTsjd50>MR(|Q#D%xjZ3=00XP>ixCUw0SE#aJNt496R5 zsw%ga$2eM9d4ue{)1jFKM;O2jlekh@WIkWLv9-PN`&BjRYi@^nhsj}uCgY!OCU``j zl7NYoo67)~JiX=%XEL#<#@H+8=0Of^OQp9PnrPN#G#^YmYPRXZ6$y$pXkoHUc`U1I z0rMvu%J=Ej?l1wmfmYi#qUR`=d4I1j#re1e+iq{Usiga zW(s<>brFnwz&n=cYji=L>2!I zfYY!3;j4%DX2?yC@rnl680x^DdY?c`MJ1}UhYn7}%w$SL6p_B%bvT1y^r6Q<(($Vu*uQvTS7#u(;msDJ`1Sg zg|H8+$%}xH&7#S-^VQr4FAeJ$S`ZcSjh_$OUOpK7@it08TP~5&N+un2g2od;^0bVM zlIKL=HlK1hES#8`>F4h+=3k_HjA@2xo^&w^9zW7ecF3Jag#~!(yN8oKL`O$A1q=FK|yZ{5`V5HkT|mBdi(Ri#xk>OCbF>!y1^PRX|$ z=d>gMwLOH3eaFk!0^>Z#C`0!+2FK{M8`u0SCap^O1e=;eN z^8WGdO8dC5m6tZxM@B|gc+4InE=w`AYtacAgBWFHheqTRGBf#MQb%gM`dhDk3QGKW zxWQL5z-l-!UMCo^#AR~-)-5l9?;(x2b%hZ?&|Cg`s{iBy&@(gt6fDj<+FNV)4QDd7 zGFzx^@Ig+?v7Zp({Sy0othyDEhr{K>QVYmc~OQgxi<#lAL6*ezZzmvi) z@mD&63izcGNxs;?MTR2gIhluYa=4OeD!HLXLC%nzm`IB9zg2oy=rAw<%k1>**4SEJ zgQI*8hfXE_Wu;vZwZixLmoMQ%lYn=7W)`aiHu^G@G9rg(GY#HmJj}k9t8DM%U*Eb% z!VxdAF+cxqszt^ZkMA=8`IpF6kka|9$Yo^nK=qhOP%Zs@DCA* z9LPi_Zi6@e3m}rWXHkN|Pm*si_SZa@sX7H~2G-N?c0MEHMzg=-#5 z@*$11_uycrs7AqwT(M%xTMVs~4~v|YetI7F9yFCfR2l-g@pvS5U%!D#Xm_HZBK30l zhsP+O36xCNY9}lX#3s;RB^)fIR>p;hVW(wH`iX%M>3j&sRNMR&rp2qyk}bx|$Rj7hp>H0ck{d=j&lYvb0^(t{6crY9d&K97z6 zu<1f{{Q>n*E?azV{71UnLwpu1(T`p?^rhD-53?k4A4}9saHTxrj|@LVW8}Pg4IkaM z`C{NBPs!pK)8g3H!%;_ZQ}N5s4`#0Uz2SfL>Z<-g=Hhm5a*#D`(@ukriG_uTH34up zlGQdRIE7U&{~orGLkD!r8o=hLT9STGMU`&c6?s_{JzkC&x|Ml}3bW^=)%up<;D*m= z*!eE?+ooT{li&YUr^fj9O;iUZFOWc5mS}$yBb)C(KNJ3?`RqRfcc1^c$sqkqC3YNb7_i88vvye|{pZv*-FwSKPq10s6;3 zzuppEMh?)sea4E&Qd&sZ09`^Q=mK1iejhl$Qf)@+ov;l5z&zAr3$6Q|i`HmSn zs?C`*fkTz*?TCL-t+ELdoVF@{Y`IbdJ7jX{65JY_0VXO(>0obcB{pjk(G?d^^QzF zqra?{Z*Ax5RNwXUl}MF-{pQVzp;D%-IdCeRmiRucSXStcwRv=FG?{Lk9armGsHqi5 zHdh?)rjDjCoTJ{G=}r*Toj~SopJ3phvF&Y)5^x*f0y@{aWQ2SdEVUu$+CZufaZj6^puNsWxxq*=> z%GP3`ep?uekL>!0RBt&ksNkP4Gc&huJNd`PK2j{wZ3QlDwPGaF&Is11>4k^Zr-*~K zyO-83ZAfC}H}yU}Y*PlWNi^bH8oMq+)XI2`{?{;aQyD&)G<}HXrt&k49uLEt?dp%LAdq7AC($xFQK;q@f`#Esb!-@TboFsCE*&8#fI(H*5mBjr_ZP7ey4px zfy_oX@N!{JkqeMY7Vk}0a}J?C^4r;z;~p!q4ZIgs-jm|QgNm`#1Uj|lzDzV>9GX~U zF05f>czCYP#1GB$A3WB?0|Ns?Nl#G~m#V`EiZ|Z_uXnvLCFS`7o$~Lr!qwgilA4}c z7lq!WSlM*s%ilS}G2d`_1geO}-&_2gh|iZF!B@LeHIu#mtH#_iLkVq*rD_WH7Q^%QCRzFW?c*;XNtNOx ziIUA@Za!h0rrZ#o)T5fMlD?qre-MLIs`X{6aPeP5L)N7;XIsF9X34~A^If=J{&FUx z8q{G%#->M)mtBF>&**4k&UY!|ZmzB$z)BSMcW{#8=B+2y^&psSH%-xPN`H{uW+{jD zWwFJuS(?2J;&<$4B#+0|7I}AvP%CwGG9|4R7#bM(mPbZ*6hbS2>A>S!%GW7k-Uf#A z8msyhw&shC39oL*W-BEd79%2yj+pgZ)<><` z9rm6(5pjWcCMD2v=I54s$DEHm854zi`m?b}`ELKrzJ4RupkWiKPRdIZM(!OA40$UU z#8)|x!nI3FuwPDP((3xDe$D$K#rKac8`E`y+>RG6m}34fJ`y568f36>paIhmdp)B( zLm_`92u9Pdt-r1yL_Wsi08qSfjuysu%D>ZGQ}gKryjV?!OjJRgoZ%bLpq2BCK6VZcbuGP? z%F{y&OpE>1K4h;Yoi&#lC4lqSU%zJNsdRetZln(;@@g0_dr#_)reVV9U@o~48nUdl!VSKF(`aH~VoH?pc?f2VH{D)+(;9OC#f7^sA^HoBLvNH3 z`8^IlpY@dH{FA zbOq$yznJ80zIyZRT}srw^)GV4loVsB!ihr4Gx#{y1cb4ZWda=cHl!oW?G@m2-A(j68fWz}T{_Ilw{FKscH(?sQ`OgLzA!Vl^c$w6+|F>UN!sxeP_827 z+leaVeA0T@8iM|@(bhyE7gdZ31X#%;{18}@tc?L{aA9fbXLM?n@wWL%zWA)J)CzfB ziQ2|66JL2@VnR<;W|80;_!Rc}iEpQC$4VRplSLgn6_9;{*LKTz`Qg&YFkM3l`lDxi zbt3F2iHz843>C^SX)j0LBi|4%Xj+`;t-;2hknvyBh z^ENyWo(~11lKRF5QUbwI*344N(|gHc&TnrT4Huz@njyCLQo{7?fww$mr-KXRz1~vd zOlh-?Gh3v!%BNraDU!{Bda4wF6V478BHdcehTf;y${^ZYy$Y7Qyk5E8X4I-T5n|`; z+4XP&V4Sa?l@*FEjQ@2Wcaz@Lx%-~#VuFv4tCx%qZ+inrRZ;~c0Xw7xVq4>3+(8Wa6H@?=G&V0l=U8hx6 zx}%vWAZ&cF#_RUZ?Zt+m-?a+K^+|XhQWO$6(+4vU6HlClI57Ye|Y!gS?baD=(_-K?BObXHZTZI);m~3rWaUcRwety zOrCb`KU!-;DX=uDyd$+90@l;fwoY6?(46i zVFWoD8B&`uHCRb*?i`)!2j+UVwU8}Pn7_eWsJr{{!R>1+ePUyJ&va$Jq^24<1omYY z+`Ht2M8-%H*IzW;#%6bzdp@u7L${xi!HG((ihGsKaG__OYEBdpZcy5jxHQ7Su(6XO z|JnTWXHcAQ4(E*rfwE0Udw_$3Q!g+!ve=*@QJKSGwD?+0!*KZO!@Rmu}1#$@bYJWp( zI;DWmgDYK1A>SULl1!9PJ-E$HDLr-MRnL|-nC&sOv5=NeVMbOb(me83w{$mVFe?{q zhh4HzcaN5_rs{U)_&TDJ)z9rX_x*f%U1@ZA{ytgMypKP71(NmlXFnwsVoy}0GrcU8 zve+1UX`fl)<0E!8O}0Ivp8VNVwPrZ$%fsyp^OzIhhG}&~*JY#z=H}&Ht!be&J@wK- z6o`%EB4#kVPaK@(wAdETPtKsDspF|~U@+1tjKNjD23o(LrxahQ>kXO&QDs zGLZO6AUA!CXI@cxVDI&!E& zoe1{mb4OlS1)F{0Cli*qEFamyaY?9^d|4WcYGI z6o0|vbmm&?#(OsIbii%u^>IL4>#HO6(u$1BMMdM%Ur+b^ZR0LKPE`2SXWMsbA_$5M z5{bl*i*zHGrTIxoB{9}`n!YakL98OB#t(h-e2NcYg+tw_(yzSSoE08t{1h<%#?MR?#*7mSby1pe2a% z#tR4`9;z@Ta6H|+=z7EXvDkd^8ijPuCsq_6@gtKh55USh5JKh)0r`Dt$LbWVP0jUt z+KJQwJJULhiS9WfNc&lFS(b z`QY!n+k@i;0<$SSWhoh$Sis?=tE~T!S-(d4YyU`^=qA&mktgURxy>&06PQpAyGdv#P~4}gLcp68(0N4Ha4OJ znV8KLyZIpHjx4!A1ADiwSO{YEha67F!7^9$zmqQQHTZqC;*OxQHUjZk38sZW`DUC@ z;*9c#N21^_J|H|2u+f{TbwT?#O*gKsz1>ty{fqkk%kk^uyB@ccxp(~a1RQZkr`g*4 zr1(;Ik9Tn_)_UB^EcK*vUc98HZnNE*dJGxkamJm*e>+MBNNsfQ`@mSabIdi5fcNtWQq3q=2aIc4dcK>1k1}+PE-sgIO$=V-mMjKCpGc{kwCk4` zm<`9mV5Jg5trmUaymh!U-(FYv_5Ia>3{sGzgXPrg^g87%ZfT*g5{7@ zl4xB*JQ@zI>fBcDEVWw2^L|rq+Z|U!E^8+Hg*{CKWMVSwE%48x?&ETs#CEh*JbOpS z9@t0-7}Q&x=hM?(>CnZMd`?Zh1)G_=fdSUx^B5|nB7+S1nE=ZWYTb_LYX$ZTRX|mB zxp8}IW1I`0RbMR79i2k*C%tS)2)DzY=dsVj-ei05htIE8visPfyeSSkDMK!|+t@!L zgAy?!>;%?ZNKp)oOF{?7x($B1 z4G93JS{$y{AH9=;2gWp~So`wx7Z9oS<~TVTR>EcQ@uR_+j1x|k>z{_?>}jg>?VxSr zZk?$GQgjR#QCxZJhnZAX;=8IK>xJCEb`VZ*fb7Tk=~Ig3x%zrjjZ{ev)6ECq9+D&; z-nPbJj>n)yO-e|lJC<{0@D(p%1%0fsnwe&CopZC~6V>X*L}i6_UBpRC1hbJy2(`jc ziS3=;^Yi9Vatup7Qlsw%kZo9Le+V9zXx&1{XoNFXZC1d%kS8;mfmyfD6T0_f)7sZs zVv#~s0TW+GM@RENbYvszJHYhQ%Mw>&l0U%wc)T*5p85Z#AGvg~BF>7yDov(43pn&Yh$DCsz zTlL+yTDQ;j*w%~BAB|3{&c_COe?L%V+kg-krsUFmoS zj^Eo+BO$BJVIN0-LZr#5Lbz8hLxcANGUMnV44${myNh&7L;L*H9Qqx~C=2I|K0?va z%SM7EO*0L>Dr})&t_>*UnH)~=D7S_-4Go1cJbhyV+X8<=uExk>W8|k60Gn=&A>Xgj zVfn6sSWi9fY7Msp4`` z7xH0B@AK_gI4!qC|D3XAFF~$T%i6|9cSxZ^?)B27)9N8nCb!^htLL(@JyP1lyx%tN z+**h$G4l89M$~9>m998U9VFCh7gvu+oP936-gfx41$U1hw_c@F7THDd@HN1w(e>m= zOmEnpDtny7aC}s{PARl#d7c*YxMv_wR0)<}#|rjEZ71_`u;XbE$7*yg_Xm*R{tTV% z_6{i!Ahdf&K0VNmNz~dfuHHUtxYHOwbc$|&IEh@WAVrpqh5C}?lVT24oqmFKPoJcy zR6j=2IJ1fm)h-;0V~D#G^RQLYG=Ussb2YiQOi&AnK^zI1b;x<$@eq?pv@uMwQgbP^ zZ4_a_(N(I{LRVnaZk(8iwm;m+x2k(1yQGly1ZtP3Z)nej`7+Y(5mIZm{p|K9rLv7w zz$UrlxaN+uiTI_H^{YWOKS2yacF*8Mw}YQEzJK$yFW;uyt#>ZbdRo9-4_uHOt#LbI zK1U(jMKfxu&==wVs-hDg|+*VjS?2c zRfdY@2V)%Xx*X%O{|X@Har)s@X}?NsdtUyhIdQ$8s#t6nJYfch*SOs3s7U{iZT~HD zg`xHZ^g}pNxAhQ+eRR9s$$@(0~Sl zaJ=ywcNxpB{S(LfQ_cVJdVl{n&%6Iw=EnH-?@}~-U9}{v`#*GT)qa2eGxGOAe&6r^ z#oSxRRoTA#f?$A1DF{l5g$N4L9V&{_(%s$NX#i3p-Cfes4I(AoEE=S{JLg*X{?0zL z&zZf?o;fq0`RDz-Dl8VydY=2fuW!D%*jWGh(~Sq0|C85L=eK43%94kN7K%>Ogb(ylVNTG&5(_DBFcXvnv7aQydx2Vy^xT>YV31`qzm`lesmlW9s^4kWW9ciI@D zrdFiCy`r!*SSBGRnpUZ}lc{_6;iE@aZr={WTB*8t6&SMbI9b^pg1^(ElWg)ttfPrX@%I7a(%Q zE>d`-Bs{hM;q9-%%6L3XS&zKwpL|9JSocQh!znujHKTM{b@}j?2c+1XDp1Ae|cVA*qzLmLp{|2c4=k!y3!@?Y5E5(mf>$(_LnO_FTdrIW6`}*W^hes-eBW%( zJzAb$Dck;0T-?Y)M&Al>3gD8S`PwadxyqGRUQp--9h{2rURuT+Z6kP=ZwCufkU2X` z8XNu!7ats&z4zcjH1je`SBA19%ayFh5RN&_abKO4&3@^Yigf1V3Rkd!0J6Bax?Wr7 zi8N5dwgWDsC8oG})s$|%YC%r&DB#!tT-DwZ!>@4|nTT|EzY39E%8q+o#n#JMi=X~J z=!PIJo(lGwcw6J_ldk`Gz!;Y=r6*qWAjrYm0RNVgpR;;L>2NMZg*@}B^AXh7&Cx2= z_jygHL+$9E!>R&v&5+y~j&4V6iplCQ1Rd*GA$^(GHvKB?Hb0u^~u|5(@txl2;BGl$6CLa&PxmhKdl77=$5L5{m<= zWbdCy808ub<=h^wJ`PN{c7ARS(jQ31n46n(btKpF z%7ksm6+49b0~>{x00$qRh6bMAQVcqi`FH8}fDc46o4iQxDPuR!WvLaTg!GRjiN&~K za(w(x3fYezJlGww0Q+sQx%E7Ngu{l=$&~`wif9%1>v};RlrfMcl1qMMv73}amL8Jc zZ%}MB=3$!F!KBv{%)af?E6-yF?3BaKT2hrMbja(6N@vJ?0>HX0k}-@SXKiO;jB-r# zT{{r9dV_`RO<&2=EKAmyOy-i5IY{mPT;km!e<8B&;7iOH3h8ME>xM(AG*4x6v3!~o6!KXgVJ)$me1!L5G@egTq#zEf zJq6JrB-y?P!9C;`G6FlFXwW`fxW3R73rclnet2r9&b<_}b(VaInDhscTvDps{C`hI zjcWdTGRh!G00k!284I%)L_r60Ok7;iW5>AAQe$k4*Y=l>vN#wtNAgi~a&V9mGC_Bw zE~RXwfQ%HYwSgGOQ(o$GJUwF8Y!aIRK!Hjj`G;r(i0wozaPGmg_xkPAUhbr41tA2n z1k^Y12vaRVe{3*XZHY7xFDgxxTa&ZTV9=B4(xF1_2fcUcnBNC!5# zC+m$+42w)Qjv840ke4oOjl0xtF|gRFH>|#JA>vgrdXaBvYKe@pIwGe z9if7LYOV$aG&OCpBKUFZ$WMt^B=%R`tzu;$7qokVshAAA0~L0c82_XRKvkS@T1QCy zy(64E?{+!Hv4}Z>^%->-?3b8~?V)1msf(&W)Lu2y=Hb_}n#IPx*t-PHTHn0jUP?QN zu3^4Vu^b@Yr{jf{Ha5KImT1uL*Cemv44E5^CHyXR9od;!o0Rwz0_LVVDyX7e`fgZ1 zK5dl(23c?5`+Y!TGy={wewmCOBx<7qkf1SIABUWifSE}UPL~*F%{pocrB&?+H6B@< zLIi*v_a-r6cpGEvC7i`eSD0=buq!&@yL1umdtE=pR0h zN#zPcNu4&Wp)CT?jzdw>LufP2HRgqXU9GT@tT9nWLJtI-UP!9voPKH-M^(BMIULw8r%+oW!@ zl^KB+PR_JJDBXGl(2!uryXe}zsaYWu3zx!2w|>^v-gOJpf3yHQ#na0JUDYBafGQRu zay&iEkN3!8Tu%RzPsycyOcXFpCrdP3zjG&)Cu`&?I37;z z8lHsFH0AQ4Gc4)@#NP^3cRfQ0#qT(t&R{2#XCZ+hsHk8jVN@TzbDi+X3nV)PRuE_Z zSDDhSp?z6%Z{D!VBFViDml%{D-^)!WY_Z?E=+O3-TfcocZJveLlBbzktGo^;5Y>!X zZo3Hd(^#3~`dvN`|Gvf<*-xJqyHZFfgxKiSSCBv8_mcH;(LQVvjec=IyYVR(rVw6h z%H==Sf8IyKCi76pM#IA|?a*$$VfRO)yz!*yB0llP`Mbr_I=S&#KDF=fzkB(<*Dx^Q zUvs+J^&M+tYe>LIn2B)wx(5EZ{_fXP{sF4FIZsTQKL{v4ek?5gr1x30pUD2J}O z&=|)(q{FN-Lk2Z|)|Q9KxaW==2yyd`=S`sWB^5iTU|1(byJ8Q?GyHPLEO2fTWzg+t z`+l>o2(_rJjD4C?q%qB&(EyRv9EnY059xQ%VtYloN)Y%dlbjq#q+xVfkuyFA`NvHw z=J4$gAMB*EHl$;bn(2V(qHzt{F2?o_qkHg66_AoPGT2TgvX`PG|aU?=1 z1N_^mBB*AxvR`+jO3c`wTyu0hzP0T74080eS|bTGA3iiT!Z@1#*%HD9S_)hboR!?u zF~Oq=v3?-jNhmMRGzUd}Rjz=$5uqX5J6d8{-c+ZEIq+~_#@rcEsH z6(~=XzTazC1ls7=)z#4FaMhcC5Lx~8hWT%s_pDm}hn!MXce?5SI;W)m%YV9OWdx=L zyVE)B25-XCtbEv&K_8{x+x=XAsKR#ryIgGyvh)%1aft^qeZpj=LCkR}zGOu)KmTZB zj}>Udr?s_87&tmDzVaNq5}1wI47zA|pC%v4=RZ<$yiJDvVk6E~qPAUn-q;orvfjN< zw>#LlnIaVStCoin9J6TxN&KX|=7Dn}#QNv=Hy|by+3_5~+p%@fjDMHgK5|8*6nXwT zr~VI_rw$%n2>E%$b077bqP4I&$RF%seGrk&V7W)CBNF2awOsE7@?I7)D5RPAGMG1~ z0+8o$TuQBm4duiQ1C9J?E7SGUkU(&US0Aq+RfNJPb}tZ0bv}bjzBj>`1WKDyATv~l ze9xdYmicKxs^~y9+o@c!(a^%o$k#VMw4kv$s>M)PMm9@2_jq4s)NXm*nG+Miv8_w1TrRw8pdytcMb&UR!9vNbC=vi2FhO<=f>}+mzNrhHFzRE{Mu>4f$`g@lc`j`jqn2W(fLqkaY${hA`DTo=G z#G>P!(>nV0bLwEpXohsw3~h(Y4Y_t1VL)K%q^1HZAa+__ejJ)i$dxu&Aa<1L>vf+; z#diG#UtK-La{v>-r@f_Ikh(JB>gF&$4i<+fRh>s`FY#{P{E(}vOU$bG0vc(W4Gdcg zBg$W1DB91B&d*Mf%+%0N%o7gNYEgM2S=&*i=uK6+xHJg$J^#a3CBOxchoSv#mssxG zK(0ZOqF|SFhNE-1b=Zu7867Xyo!9d?tLb|#yv%M!@&%W?1oD8Os%PwstwFhGSZtK; z;?mWhdF9mJulphY0@*f{H@e~75DTwh*iwQ0qjF1 z%I~-unBizQI6NFkX=@U5`iEz>H;YI}HcJZ%NP}tRKLW0vI#kV{1SM>TvA@%~I}4L3 zLj`3y<3_j36f2V{aaN}0-`1gFvjNL)IAE&QQ%LkIoRb8AK!gHs1mv#s;a|9 z`t5L|E{wU}Lox6}3lU6F&WH>gEFHWRwhxi3>PALcr|d67;!9#o1^)U0nXk{a{~Eq( z4d=V=p$V+`bMdR|8g%ZEpSIsbEdI+e~kzJ8pG z3EpuuJ1S^&9*V_|F49_>nIS2HW85{vuum??LMY(Ikt~(DO~U!N1grIdkd>kQMVezN z1;|i@Beb2A**sizNU>-rnyk8Mx>w~$nq{*qK8TptR6qjIdNX9O*S zHj33^-%Z7l`kF(COT{APzE z2V#f2(^pMjy>^+^)XUFLWH$mVj2gUxA5&Oy+9DpJ(>URUA&LzUv3#DmltNu(Y9{^#7)c<}AX|KE~VF|1$H7Y9-pCrY-phkYaL5a}XX zT8}_()m7lQZ#5Pd_}Gs)Pow`L8UQ|!<}n~2-xfwSXo zSM{vz4>92{N6+O2p^O&;v!XU3sY$>4nR#bO^6Obhx5z6lehk|@)y@UdINuV%NXb4? zgCcBkUdxAtjcpyOqk?f=kOe-1DRUlorz_&73P*XoeS-^?XTOmrm1;ZjjA=VK zbB)-n>Fl*FHn%`FkzQY$XCw9!J!JUBMA!=is=Ryb#|}I2&7>x?MZp_@cTWvuD-M@~ z2B4>!=`>Tp^_+WFS;-%dH^FRMQ zl-k_s8laMkM^Ut0nQ0?;RnyVohiv$r#t#t;+8V#af`Eyp(CvtZga+>s+x70vpqb~7 z)-p?+=V`Csrv8$bhmpzSCC+KP^sZ!_SIyYiFDmmXw9fZ=tt+)wOfD&XeaYw9TV<#V zLxx=Wlr2)za(G@p-Q-WD^6apf(G~sgv?%sI{nnG|iNx-o?Lx$NuSC)PSbL@*yAnHB z1-{#z<=!aJy<31QW}Kg2qNmx*Yr0V)#bQd4>p$bH#765`U`SDd_L5ka)Z8p6pVn#) zbVn|#6BBVx_FM1MWTqb1vak${RzNrIi0zGRDd=42Ftyat)YAK2@{D4Uh%boW?^>l< z06C?w)?8uwFzdG?2oeak&UDd*sSb;ng%sF(YJ0mI_$0>-7#yG~xsoN<2pb5v1Oi|W zrMFnP5!3#u=(Ng8e*RGj$n>|i3#pzdRenYqx|-`QPq1Xar`AOIQIw|+?a|D$`2Y!Zc5pLT=f+{&=A$Czt=%&edF?i?Xwn z=E!i;$ef8}R-xQbWAWEvmIB#Nu)&)>RgInXxvf7U(!9p)nAaKb$(taMd`e5hNI36- zdvg@!ZXE#+0Swfel4+=SxLp!Ohk$G9NfuACDoGKWYm2bn+Y}N46X76~&Vv*>JTfwM z+5T*7Wp!1aZeDh-L-l9%WzUVB?`~qfk0D4zNij|R)6r;^tv^U$#Z#rI1Vf&s^Wrcu zJaDac0+nEZqV3u@&algT=zEC9GVVt7WXczWU6pmBz+78RJOE6+iMl)CyTBsI87wF7h?mczENaYcvd~j z>J*qRw9bL=Utwz!ca)0kJ#+oxbci|WdO~wX`GB33L6+Zk{yAo)*`^P!#sTN>F=4bv zxMaBkDQ*sl262#o+(=HMl?uXlEfhYI`>#Fh{^#^m41RZm>Nd>U1_;yNI|97o1^l~( zrZ@B@GW!plCcJI36%EBoL|TU|=NE=EaYtBl#1KMy&Z904uftkofWstmfAt3=T6FpD zr$TA~@Nb->bsSQg&wj(8U_@w3*8Jn(s&`coJnl?sYVOr7EI4UE1OOijHO2KA%!WM2 z_s{~KD5OJ2*c%YMg#*zVemvp?U5M$ML>Qd_P>EL=gw#YwA4~iVS9JZAp>oVv{rTFE4>|QM%J$X%76m zQ`-QvshzLIgbQtL`yiF6@v5q5JIlv!_DAFt3v8Qg+9t>eLvLO{pUA6$yz*#4GfIsu zzh_7L2>)pFjPVd8YrEq$1L>LWiGnVms!%@m0Vw$9&sF zs(cBQcHXysXxW**-I^^vXsr5IJ6Mh9#j9zBFJk5-F|ekLbuom?6Q{|m5)m{tlO_1Z z68=7Ep3VF5?a@C@t*P_B>53=XAb+e`s9t7O>CIQw21AsWzq?|sSee}pOG^oTxHe0} zQ06^%!MVNxRwjnVDjRy4PA>j;@2)|uysF`~e=bFUx)v@nwvh-bcTgWb#Glf(!?1 zoi!bELj}63DeItzPZQd|tC~WCyx?CE^R|932=! z4=cw$NLw-xn>r(VWWW?aPj5R?nhYG53Ady9R^OsloF&jOjbF+AZ9nm2k@0+-oSeLM zybV^XTgTsa2=3mEowI{@-%b5PZU8t3%3L<5DER%4Z-NO+uXjAGXc>V|P9CR00(L4Z zo)Y!mIpIi-5D<+l_bvD4^3seHQo#AU!3H=h^X;rQ?~tdvdnG_3eSZ5o`Plx9fP}?3 zQL$5{KCNf|`6g&P5)*q$tlN2!fHP24ln)*}s5|kX^r-{bt%x-CiM?^UL+`r%{Po_!P9fGkHi#4?MBQy?YpN4_)<2s0A>gyk&>DF|F ze~pMpFaG+e>Qe_d?p>Z4X}c>F(WLSOH-19Z&4&KCFVuLNFYV|%>@If(Uab*7JN5P? zVKwbZu#_e4&uyASJq50ZDW-f^Z87mG6s*2VGiGFDBy5ig%8COqP~Gq_v7+J#Q&VM^ zD?O{pM1oNS!>}RJ+TH2)!OCbN6w-(-_Q#b|JCClWNC>=Dosb%dq|>=&W5W)zO5OHy z>_RxMVxwj@2R!sF7JWB}4Lp{+Y=1`c+C-)G(>!x?hhxW$4RvT$@_^YpOR0*Zeg05Z zpD8l8r=v-yGo}fGx*|?`>vPBVN_5oKKLA*Uh~;SzYKaD1sB&xYZ6wA`8DOO z`PMLvn2P;1q)pz==+Vh<`!lc z$wi}+bxTZ8hOfk=rJ?hCq^DtluklBIA+pnBaB#3|t74swSwwijUOM{~Y&Edr%8~fc zC>KXBsYnws=-mS*$3R5|Dc+@M4c*@MUF0w(At9Mwn@hD^h03BUs<`TFos7Mt+e7z8 z65jty3jooH<(ib*f}wq7D!-b&vPlL4xE*a)i;!(g1KDYO$9vGsaccy`NzcG^WPh&2 zr9ZVz2H;tOuKyaxF5$uRRErcrt(IT`M;d5m1AJm()zs|#ZT{c~%bV<`_m5iNNo72b z@;2Szk;^YGMneu75M~z=lqP0*{^ub`7X@T%M1xPBg!|Z?My9leTJ9WRV1dC*b~{ll zH@10LrQC@fIZz)?z4?xZr`KJ~&BWs`l=#LwIXvDG@F=mkns{)0d<&0fq-Pn3`kQNLGoU<>C2!pV zm+ANHq#MIy`YuddTwUN%+Tu=qSUQlToy%A`7AZ?Ka8wkA(~@vMQh@f3V07$5Jw*bN z>jFa48c!rwwMJ*kR?XK&7{qyI=#@Zr7 zsp&y4NeDIdhEO%VT+^{~Y*0L@R6B(H4`fgVQ0INyId!|s_phi_zTVV$v$;I@0qjc1 zga)9mTf&~cU02~Q%3FkmZU~aX!Pnng-2Fp^J4d;uqwFW1C}cgM=7lyXQ>{yQ7l zF_Jub49o-u?^n&Ewur2;QVcg>z`6j{e0;)&;|9lx1LuB&9A(^uk5Ny@%B>(8aufxa z_#Yaxf)J|=U4W_Z57nz90h|cWenyo0_d&W38kKmr>Oq}d zdNd!$7Dn?)*@hF0R&|~@sP|}TzcL#l^3Eq;j=y;;iBu>Rn)=TkN2L54$0Ugu;p{(G znee^{51uNpmrnoXR_!c-rE%-})yqeFwaZCAA2Cx)PvId-?>te+V9Rz`NwQ7ri5}^_ z6e9S6KM9S=PRc4p{gc9|J*#`KKXGEm4u|roua6HU8(a9~q#Bf2{{qteyJ{Ls87W?v z9>kq&ZS_BmWHm$vF8mIpz*KhFn**y2%Il{gR!co0h+I`hEj8B@jw1~n1Md$X*5W!L zf|t&;_QBinWM0C{Jb3zd;K(B&-8vgr@meSZh9KY_VGP;*b*e-%&iwhqv&K z)E|?&Nf7bDQ)|7%8ZT3Igyi7h@>{KSBi)vcOK^k4l5G<@YpjRRs(5Cl?^0ujFhY|>@0^3S#D&>-ET-qr9uh~A?)ED z;lv_7&^!3b0m%_*}bnbGhq-u)}Z-P_$r7Eb>Yeb3Wpd#QR@h z!$dnJM*a%~5OkGtUG~IDgIqr0L;Xw8_XA0EK9IV5iEgfG^Ydp9dH}*auvWxq(a{+c z{o~exH6fcMBWm;pczTothNaQ55*K!Tw|h19qV&azE}p^u+BAwU^5Jy{BAJW^>9R zU7!nK*_ajso!ZKR_?^@(!b3=rMV1Drri!INl8D1`(29KUF}dSD89{$Hn%P0gPR2Fr zH#af&K7Ne*wjWA5@6DZaMR61vUcPbn=1aSJ{N0R- zonqq&*ka!FKK4WX;w@-jW}p@yaha`1m7VNt*7b;~+jP9A)coNtGthiE>mx}4vIm2k z_)6EVsZB@r4;62e9y1ZkD}a_ zb{mtZKy}F%cSA%G3TdXa=Jp;LP#lfJ!yF@Lmv7N11b-wXTv&v@`;+51pF>RN&Bgg_ zl>nJ+1L?iHY%jWIpZ2A%Hb!jM(Cf^Y?RLs6#Vs;h*+RW_#gU`pNaD`gdL00`Pn1gO zTv|hWlZ14S?9AtkqA~qIBJki#RA31&5F*P6~ zC56_N;O}A2>7Rc)-BY_539_J~n%=%e>d0|FRioj${D4q1uWe{`m1BCYw5>(YZ_9yF z@rQUpfg6g&ugJIrqFiaKCTNw^_D1d7B6tXTZJ#Cxi%80NG}Jfh_4)aT4CU*G^12o~ zD^<8$j^QY5rQ;POu>(v=YbuzkErLGgWT-HV8V-u4)g*6o*T%j}lvxy8D;BxdxEFtO zziOE(*8k2cFhi~O*lhFCuXcJN z_<~;g?1Tz2-dL~YAm#wMd*QR4VVWCEoB&QJVPpI;cz3N=r@i}$&)2W~ii%NC{K4S7 z*Qr$PbafvM*$8HndN=`_TH47eJD5@+M`rF%QWI6&O>*!T&Xo9s>GihoP2W`>+qXP` z;3mn+@N5n?bTv~`e|uC$WLhjvm%O6<<`XX4Of+6*j0@SSP!C8`3bL8Ay^;*+R*sWa zM)E26BE<1&#vf~O%_*fw1PC)I+|hc{`V}xU3c=ub$C4c3@Ev>z`}{MoI1x?%{O@`-f(&O&eSHo9YWiL9k`=Ermx~L{EzIX z+&?NcCLUqoh*z%;4Cj1jUD#oNrD^*ZX z&@eIiYTTW;R7b)vJygxzDx0ldkI?)ML5}?yvz2wP;K~FC(>GbjOh*I>*L@(*<9z6> zw#g^v(%;)#*Y(qlhr3E|NQp5`(cnf=TnTG77uN=_b0jukgxZbIoaQ@IoXRYScM-;e zKL=Jhp*8afceynMq(4HR^`&oF5(!e&{fg3z_;EMl7WY)Zzq7Nm(>Fm$6$GTaWgrU7 z^{{;MUA9aYBy8>EpO_o1w3m$We9*rUbbY+BrmK|jn8jP~Ep-OE?6J~~L4O*e|PgwX_PpWVE8GDpoUthC0wwTTg;aonwtks%M7 zL%73HASW<2>vKVYBtl43wBtt$FB21%F6CS6pN;2jkbJw-^BoGi$F*qX1pBlN95N z{T*?cPm!P{MEmT4s>9xbsMQY10GLY>Tuau+HGlcz>yKv6&Z8U&~@c7Sgq>c366|NCOENMSy^FR!_q=jpDuA31GP0; zb?$bZU_7_nk@RlIWI`QeWFSM5q3rjKvJ9BILE^G7frtVjDuZz&mXcu^-kn?Zo04Z) zO68AQ=f8k$8Zmy_787Icvh#r2dtjAYf4ci)?%S_zJMlTM)@9~Wcq~CsHu06Db2hV9 znE0FG;#Lz+0HlA9pLs5(yTV|}j1->@}HM8ETN zm+%8WHp$j((%USRlDiKd^1)=DNZ$-;-I}Z3+DH*;LQ-{Od z>=*H1YUw}|<#Ia9VW~MFSWBiU-{(2m4;OAt9<{&sJIwW4ZAACM@ZqU;76uO|VlY$e!IGCJa^Y zAA@FXuP?q=)HZ(nA&$$luH!)7M=2KCq0d$7hpm?*I5g2{As5VI5zo3JVhCdW20}yo zG9t`fl5^AE4)yHaDri44bKiMY_iKaK5yuUrzJ|f4Y-^lQ-X61DoDYp*Jbqj*?CDDB z4;*nxAJNj{T)zBC$!~t59gwRD`x*w=Z@Z-J1+I!5L$O_}XE&xFVU zs%J|Gd@G)IYp^!AW;yUYrvucV`z7Lj8m7_@WMXR zmScx;a-uqI%Ms}_LD0OscA|~?;U)Xs$!`d1UzS9{Pgm}ach%nO_!?J{n<7X*U%56w zS)kVaAV&$ivC~$(Bjhi>k*Di=CXh5oGgNHuoSNC0&*1v!71TU6)??uFXs(|r#-1Kh ziYOFo%mv5k^>uO2lf3>4$-tYCzyu|w8Db^v&F((87kLkaY)r?p#?g-Rlw2HyYdBJO zGNW*Tlt7DaUA&teeL+gt*LLTy$igB`rD_T0#q-?j9T!mMOi|lb=WJsH9KvH;v!fo^ zUMG0=&XXluzCyhYoxJ{@M16hZRD~ACTYoajdvxCpF>l`_Cl{;3y=G?u5!w3=*5?*x zYnsi3P-qN_JVSKyj%C`5;rPUmT{gEPp{jzB``S}Z7au|mHNArf@Zj`U$ck}TFTZ?U zj}P*P?Q+g@TfC`h(A#Q5F3uyWpzqUjjn{d3w<03vmd@aKT6XKs@BD`9xUw|)Amp}u zEdU)2moyxqd~v{W4X>_t$q}U!>0}B+#obi*9vn2YJ6G|2bZ{sRiO6^8jh;O8z&`zc zj2RwbZq{i6r%xX9P7AT((u*MLi?=#MkI^xkU5VB4;bMdMZv=!S9?}tle7unVd4PMd z82t06S6{dup&~K*b2j+o?Z>YE^JNDk?~qHzzyGR#z0B6P|MQRF`*%NLamE@+Q+yGd z9j_}9jVt z!|yd*!^N6CVv?n{>t~dU6>!Y%&y&g z>p(RLqw%zX*^kC~5PE!|>P_2b<5Ef*53BR&O;_B1Hg66lnx75XIGF=k&BZmUI3#co z_^#wXubQVl!UFF@c#1OGvD*1Kl-1NC%wR4K7!p<|b|W@%adG^S4mvgQy+(YnccX#ek zo*}CWNU{_v&YAklI zLwm@Zw{Ja5OM{#Hatm}c^z`C$G&PNr%scBqWO(+#+nb;TsuvvgR>nMaJ@+8Kx)w(D zJ6uL=txmTkPRDTEc}>O=Whc%GO@`obfHmC)t&2o--)4oJ(xvhe`A6Vb`%IqhIUnzQ zhpJmd1QB>5*e|Ap6Z3gmX)@A2#7A1yxz?Kx7gzgZkc`Os8MjWyp*x5`9rjluv=xII zUB&+V3Vr>i3JNS}tQP+?gzhebFUF@(?6dG1@`f%K>VOwAY(cR$Dvuqm?g0jj2Ke@iZjQ?rtAJ75cEzFqsET zE9{H53QWeY%zj(rxU)|gRRz5A!0y|h^{B4C%dDi-H-X5I58}Wku{>Il=WuYC+w%HL zUGTtJZ`!k2(kxT{)8w}a#$b4_pmVK@N4<>FhswdqDr;q(k3$4w2fidezW43tqL5w= z-uK&}>%OwHgvbIqz>wt7_YSsu>?OqfY^Llp#k{~c-S$2`MKLkU zj;lxk_bZc8t+P%To#!xbKhL-9R3W97?kQEtdv(>uWaxFmEB8JG6c5SQ=rdMTRzg}t zM6qmXP0-Cn`0P8y%h9fV`( zi@)NqDJ0qD1>6+yT3>hFIiME`rJX%-_X(yJzqCGHWtO8t<^~H#vC&8)=+@xyQ{T|+ zwYNGfQQznxvnu)c9a)7V>W{xCp&$T!LBNL$RWsGp(3=@|Q&CX~uXMaz4LdmGehA$p zAt_!R6)0oS4nOMEf*pCN$Pt&*cKy$x&pgs~Kh8Zdae=?N)&NeE+8Oy~MCNWVl`=;! z$`}ZE?ZJ>r@H7}*;*!;ogToNoJPNF587kJg>goyN5Jdk5USDHc;;{}aDr&&BJc~T` z;kbtU2Pgz4I&7DNBX4Yi-_9O6*E?|%LxX|usL4hcrv?Ytz}lUBQ_taWivs_#=vTIRG} z`!&=Yz#GTgnct3in|ABb78TrGmuJ{w7p<2DVju$A0*2E|A88>Uim1|Y{{a=17cw)C zf-M}%ALz9Sp0MzN-k==CRFMVO9GYP`5d;XOic_QDl_y31-XWj@(o^NpJdC3+pn5OjPGjvmmMVt(2vVo=Tok^^2N zW1maN`g4#^ur0b0r!YiB(su0ZEWPZ0ux?v{GFnO00#nDeYvsZ_QLHdvB)O`Z`bqnO z_dp)*QH0AmSyKiMa9(#H&ufrA3DqK6wxVp{m7-9TAz4#o9S$mqC%1g>98v7{3R~qTN~Ic^i+uUS5YpPM4cQ1g>AxB-lZjIke3xo=yN*!k zDBRL(8!PE$+b<<(9)8YS+6gEWa(^nJr|+||ygJ#*d!C#rD<&B7q#0z;dNXTZJHO=~ zoE}-Dz}eP!VvAsBZLy(G03Vqu2=N9<0ED$g#0HXUxA^n^P~R2wzD4yBf-gM1g4pbj zm`*E?Cwp_r;asiR7j6pS_%i$2r*kw)rB+@l+zwqWb(h^hYoD))Fgdc{pF7T*fMKAq zzM0oKbQKGEJUP%E21H2b+|QT4`1w7gr}9dr;no{Xq)2M?y?>AH z{q$WZa)d+n_qFiDS`~<%ymIBLc$r4a^i(8RT2WbV87OmDCyIYM z0=z?~ZYgAEcMYPagu?Ey>pW|ZVo@I!3qrOColn+6+!?XkCa>s>j^3Szp4i$uzyI9I z%exY z9vg$6SYkz1!7y5EH<+ZCNUdrSIp&klkGwkc25Q;+XCZU%;XS$=w{>+ylcZsg%-$yYPU?oLlnmqF}flh|Q_PK2t*7T7}bjQR~aVmZaYMK)Asc)Oo8V{-C6 z#fXh-jSE?Y?RIlpGI?j4)zPmY8{-j__ptcctd4a8HQ4t-5YsZcm0bE?S^!Lr-Hj=z zgMu(e-64L!W>L(tWc=DkY|SXx*ksE>eF$j;Ut(fHM|Jx9v(wIo6Zh(aoo$)icbV{{ z!^C`VVT)j?&t|&qaN-W5Md^|5)7{P;;_`~#t}*4)s%&F%hyDFOpy>hr=1z@v>tc5b z<7s6Ts+pxV#fm>~-)^q^=NSVPV?)DMD%W$;xP8lS7kH+t??3#*rL_Nh`~%cLI>TXP zt|Q{=&!wW}FLqm3!kAtbe_KYdThC?j-@uJm&J30|&Q`RiTZ%GW>~%$HCuVJ|dU=X9 z@~o#E0v{WEhB7E`q5xwPew%K3ZOn1W>-Cw_AyaVzvfULn%ktg5j;=Y7moO?JN3Z%C zAq@$8e3CpnXGTxRlz5gx{D(fVMhwql$3s4x_%_g59p~dYP6sB)dm$F&i5Rz z{<@0Ps6;PH(mR*nwe&G*Ys(26`SOpI4hGXi=^SqBjx-f5vv#HPakgRVrE&`V=bVJ3 zWB|&o{2yu^JLyYd@%jYMplXwIcY*qBct` zJAHc??mLVpsnA3;J3JB|F1#)vrm9L_aB^sY6{|xDq3C*?Zjpi&v?AOOmcCl zI*xqaM#b1zyCG>~G@JOO@6ik7P(e;%{DPKsM4>m5tsJecnzyBzMv)p_*J83 zuQWA5^P?p9mmc|mep~h1v-x8AE%ep-Xf}QA&C{^MP>5{X0a&iD_wJ+PspK%rza60&rj>*4C$_ zxY%KAIsOZ51nIxni1X8o3aNi%BNA&XoD5K|PRvSS;`;xr?mI3MnCaC;`HvWh&Uh^C z{{kaXrmVv?Qlfj9!R&kBfF(^Wovcul!Cnl&+B?CPaD4X6%{GD5KR=ab5UqATbKK;S z)KH0n%Xj%Q!0n0JmhI6d=`Z_S#>We{Hh!M(=(8A&{|Y85*off`+nR0B?^7*NzYIab zYBN6)b`}OgKp+IA#27E~1>Ggm``)1jshG_73$!E~jT}b*^C8avdmaMuf5}61>4Li_ zRHi+O-t^Bam=b(Gd_aZ6rY>~afvZXDaBiT!{_|rf_xB$>n=A`q)TZ; zHp_cWQP|zOTYCzH>yEa+jO)SXcisQ@4LhOM#zr)F^zU*xy*PCsXAQmhJkMt#(zTqR zl_@8N$1zme5K&;&eFO=MJJ4G9n|>lbGp%VSU9!uSm2gPF z(c4f|LbjV`ORS=&#@eE&ih%UqX{0`(U<@(TIu8&B^blh8=_Q4_3>(8e!M3}1W48nSvNm*WAenq)j z7@S8>#1pTy%I4HVnjv0;56mp@)ZX8a&P+B+e=2>!hIyt>!Idweo2&#QwC0j zd2p$Ha&l;aYimrB?-eeQPA2;#URSNr)3*p!R3OgRzRTtCdwaffalB|5oi`1Me4W(* z{h+R`onpRPTlW@v!SvehLqOU8CkzBPBi|6rmkK5O$$oD!tM9T)Xlkou{J%j#INQn* zzku2cq&|M$^%xs03K<-1bRcf#*k5S&l`qgAD8zs@8mN7S-%ZF$?8m1}?!>emaB((I z4lThw0s-H(s_&XJOB~mEKnUWl_h1U6`5r{s1L^e{Q zd6w9K95bB`xAGhg8A5ZF8VVx{;GmvVuE{JhF(xmsfRthp(rnfZ{to9~!(Mn=Gxv_CdzY2^m-FP-6(`?mwIJh@%kM2|E>^t^zs0 zkX6oUzV+y4KmZEXT^6NjMr0I+zM~^V_qRdShg^jTx1?^{&lCr18CvB;6IRA!T+;gC zor!T zM`l13Iu4X1dw%%vGN*BST?bq(>y@ezHNV3knf1?{0)D5BF@&Y0my1624@G9_tv^0- z0H4HRf8OzE}O-* zEmwv*D%e{iV*YK3pu6T$2>^x_7NlPj_P!6bE>rf@U zaVL2C1Lipk0Y8a&%F9c*rVDB}belTI5E3cjmMXS?fju#<<83iwX4B?kzhy>c=g<(q z=(j)`@mMr`g9uW$wpKcM^?ULO7}HK(CwZ)~Pu#Nzj*j-#ou}Pd7?yS}Hx>mW)4TIp z)qKZgon4ke|Jkix&7*$$6xA^&XbfPTR1)3So0WQr91&T~3NzdLHIJlP5YfhU9YSUo zQ1`ih#B5xvALD$7BzKr1>zlP(;9tTqR)8=r4_uxvFO$D``8C)!<3WX(=nJ)b+qY>S z@bJWXkl)w<-z>@6?$X)prD|6gLUM&*Utdlg&cwMBkY z{$EPrzrDtPLKgfxJ|Z~?L3Z(grmt~3wFcWG%Bv1k7h`|MEDT zDE=iXe*Y4lAbH}4wLss9%7l9TK5$|L_?Bj2GO&4f)c| zCLs>&%uio)?s{#San4}8q+Gvo%z;zqgvK`TTp(RgX6cBd+@ViTBGkG-%p5EN&}p^x zWB>2(_2v9_;3wou{svh#UU~V^qei~L*=uV`rR}L@%xwAHF-Y>@xMbwB^4ELxcXz|! z$3S)wY&=FIz&^|!cm+8zJ6%~5iRw{oQ2{39$2+3JYV!#&9qKz~#66@?{v&ew{yjtq5ywtkGy?M16g| z@JJ~!Y1U?0_OLYs|1EOi;3B^7&;Iyh1z=lpaOO#9FRMN2K`l)B?H{UcZ@j z;5zrF87Zb$>r%rjSlDi|JKm!)9iO3PZsP@V!Sn#W3|ddOvT*Z}^=ojkE%F0Dmj>6M zM_<#dFf}I3#n9{wcza8a?c?oPzAs<0K9;SzU|IX&D-wt%oO z(yCYq+l?i6hwgld6_M=6Plx8C`|#c+evWeGRy;!9y_2AKG#bhSv^q$*HCL(X)h7pQ z*f8(Y(rRyQFK0!7;qv?PpxlVw==MhU!`PZHi5l)(U?q#?c7$Ozf%`6vf*FM5q2ZEr zzzI#twIpfMU$JDNzl1kiv3PR%W*r;k1305$X&vIJQcGuj?=A+ZjSyj5YgZ@0!Qg=O zu&157<8vCi)f7`9Wo`Ce6|>wa;`v+OU!J}12NfJBNI@1xIH8A2qwq^ zow0J#rfrxAq~ele3X%3XXtRho>YWiA-<#KgmQd)Tf%dj|M?{W&5BfjP4bW4M>Qhg+ z=XMRTunLC?Ik8eC-dOak7wQdvp8U2q$l;+o7RmSZR#A9??c2}Qk7m4}dP2^* zN?@8lZdLvaXa2cTynWDPkTc9%|Bc(~0D!j2BiGpJ7 z*3sThpd6FMhX(G%df?Ef8hj+ z%y{mvUV;?g{&0z)RVHg@UY?P8c%Zj8$-~E|v4~PE_J+muW58%)rWsXB?E)abWa@o- zVB@Yg0rd~d*2mWgsFSM+;TV1-616xx>;5X?cVShAbf!exz}{GCY4^Z3CP+(b<3I2a z?>e1^N(0&eU)tA-4t`MU4!efq45VC7f*46bMXvqzLs&u*mqU_(krV^uNzZ z8KMr9mbb8A;Ivsw)QzjQD>QDZyo$+O{18IzJwEVNOHGtmkL;1Q8nEj9hJ(ReTa^DN zOKdcpLk2|Ww-83%&YlcqbdZMj+PdKy4?AX*;GkbY+v?wdtlNQ)>rG;lka)Fp3?z96 zz}p9NBkOv7Sy%ZyaHh9Ho+@3x_TH3$=(JtV&jl4(`3`Z|-4M&^u(#N{N5%=Ix=3=d zw6tG+WN(#tSGPT)4m2)be0((F&scYu!X5k~C;LaDE~DelEfE1S_ob7Hojqc)K&QJn z1f3>|wX+bJN%-GLiaDzPfuz8Bj0yvqI8Y~prNOK*|Iidr9sQc@N^eh3qW1P2Der72 zj1iVjp{MA$5`B%4k<1cvH-Tl{A)Bn5%T{Dws&YCE#K5QAo-SQ~A~~#*B&@2c`VhpF zFb4_?8|BCb&oVMMWb25Sc)05;nfClZwOtzrim`wg0Y-24f}n>WrE32l2ny%6QC*-O z3fBh(lKhI62ew!Dr;!)$)Cmm_oNeV!Kso?foVr;COaK4T-g}2NxozE}s9W6@z=kLa zh*G3Wml_ZO=`|o7L0ae~bP^O1rHImd=q*5i(5s5{UINmK)X+PGc30fze7|$PS` z`@7Hm>+U?yRyPpxW@Wu|%{k^6W15b>qxA_dX1G^oYXbT#M6lG*e|g>pK$%C}t{gU^ zbxF`FvLjwNRS36inB$h&W8hbu3cPoCZF@pxA&PWhR%~h~pj5yAbmyaIpBZpUdk+lG zcz^>M+#RHcXiZFVoR%`Nb9Uqx>trM_sAFMe>C`#_>2o+4{axEXdo7WzFf<)|?V>45 zRBGE-$*YU%et{Q-QZ!h={d9&Rza-vrwkNvEF4JMvfi<)QJCUIS?%v@t+lJyHr}k9;@M7vHZ60{G?j>Lzi2RZnG!7>`8Gx_#Q@z*4o_pFhzSL663zU zaJ{b6P#lP=fs67@b#-+PgUTPxTqc&|#h3aJvG0Hh5%{F%c9sV5hXZz_&q*mM8I|sY z0D7v&&b_Ze+D;au-3hWc8@Kq08u(hqsWF!@5RoQvO>z7CZouka5z81H!*9h89Ok|Q zh+-F5rcQRhf*)>dY%GtLp&~otQq$8LKoclSE0YZ3b;@1>t6c9WzZ5TgI>L1K95~LW zO;!MU;JLTjSBG(pMAzHCuQj}M@!Gw6G5|vaH%NE6l)QBCT}g4Hq()IbUfKCwL;WgVn?yq#lKTiehHaNbZl5KpR zQSpv4sB^W;EU^RxXycIIWC9MkmY^r}Ez=MJ>Nr4&oA?|be>Lq7dup`MHBf_~%}@GY z2NJCePv4E6q~xt`BT}+e=x;JPEAehsy)sbBUX?>x0I z->voMOk-mg8)*?6zRq-H_)b zi9{4erOrT~M96zewyM;IpH)<eie5*`AqDD4F0nd635%+43JcG3VE&%mPg-QwlHrw0Q(wQN-XF#W z0^_rDMus``f3=@f5>gs~-+Py4_diRi;iM7&ER_tBGv=JCxQ6rI=gt8&#VhC!GO){g z=0!g$x}~cc%FybRI?U})q4(bheQh%_inLi;SOBjU030yLX+$P}e!LlUfVfZ75zD>U zMC-Ub0!%N6Nf00-9wZg{lhcNR@w{c@<9A!fYrTP`3*XBU7wUvcmrMX;_G1h~xYOm& zz1H0ojESv9#@(l+Y{GrMmjC|U6Ptni!5-R*tBPB*=hPT+*_-pq6}$Y57koZXATu)p zv5g~JFevp4H5PX;@gAC^K_rM?iQ?!fge~nPeesUuaaI}=<5rN?BLro2?Qc0BD9Yl#6zGRu>3XkZSsxS%jh^BlhQeQ4N&6k3sZ}EMPE7d z1_-cb2G0lbwt`G{a(dZ+|KLbV8r|Rw3!6JN3jnWx^4Qo%g1`eFI-)Z9nhBr1e!`M zRD+M~7u`$kx;CL!cQ$tJ0Mq&xfM?`nZTOeu!{31@`5^8JoKmHy7%zjo?VJthZ(7by zy#ecL{j=JSna6BO7|Ai)7SWegXIp=v)OO-q^DD{4o;+5fv(sI%8$PciE~l$ykLSe3 z{BBI`QT=XAWuA!1#)R7lqr!f}GauN(*&Dit1owvIG0B&5ijG zQ7P8SCxKO~ouw=Nmuz(!rKK0}cw-|YpQ$Qw9YU9)sg3D*;Nfzov{cGT-^|3sH~Zry zp!Zj?yQrwFCF4)U!O?H;@U5liBTx}d@+3k0zzUYK)x;-GnSca(N(XxZw6zxI$C#P~ zdMlu{dV;$vkgr;j7tlKd?uHSoLx`YSP9S1N;ASmc+_R(sGyTwmh5qCn6 z5_R3z>9JEEKz2ujB8YTe+WMBBFL2gKOFd!lT{iSUzBw=uSg4WDyiP?GTXdtdQ%Rpw zP*6}(thBrPNqoY6T%GH2SA4RvGH0+5;PAf!NNzE#=RWG>n6H(Mojv=PPGHU9uIfk! z1^D!UFbeo-r$e{QZav{?+te;y`6)=u~-NcL{QC zx-JwX6JQAOBC}n2BV}1CwPy(gkN9nf6d-;9dUFwbn}Sjoi4hFeI<{5k0J1!y%Xsy- z_EsN+_u^TR7(qa!=I2U%wNu1&R~E|fydr=4xF!lNH;)#e#W}pRU~s93ku(rd*Pyyt+% zwU$~Su}#Z2hWEtNcA_>fUpMW=^&R=nx*V(dP7PPb@63UcyuGZ@BKoqmQB@==ZsVv5 z>h3!E^M9gL@wcA086F;1AXr}J(~Ad_)20u$=0_`BQR9nm>pq8S+3k&c1J>fl#6&Tx zz7FQY-NgT20u?ocU0FhyDbcmpq>-V8TD!{L50Q4(RXJ`Y@B#?x_j^h3#C(qOy z3bHglA^VFgF8206t5NQ+@o{mP{fv?XriAn|A*e~XGj9ZohS4VZ%`9D}*}SArpU8MJ z6-`&G54?mCXDQmEG8I|L^C!HJ>)$^lOBS+)hu#vv&&tQ=K%uCNNPX=Qew$_#1VZdp ze?if@l$P?^#D_YUivz9W1oA5oZWD3+5^2)gopFKrpOi{XV_G_RfC~uF={!Kh^TrJE zWS}Q3%rb#J31BD30$7m?A6FP18?7>eizwgU4j z^XP72WnC1;BK|560dpY|xq<=2>oDEV46CZ_#p(hG?-$7vP8A0qOw04Q)d6VlSP z1R&&xx_SVIY~aTgk89-8Q&P<@lFQ9#iNg5U7b5(Z%o?$Uk3C|yCRjLKdmd*XyG{^LSWl{Uj zU>5>=3P-*~qyQ)syylNvkECkv3prjD7>so*wQB3jRK~$|+>2*G+2$oMb@4un7SR%9 zsB6R-&TMPm)Yze0;l0Np75MWBQL9|d%MRl7ix)49@a@{SSYh%b19|1wsWLb)+Nl?= zAY$qPLkDy-$w7&#T3TE~=r;sS%enU07BEX;-*o&e5Lk2<%bEzeE@#t_b!epF1+fpv33 zC}eM%DXW>%!AEJ*F{fIIna6^Hce^_E7kWz21m}@>J%B8p_}0DN8|bL;u#BgULecbL zJ~1ET=OmL=%FoO@R?4tuUM6-Gnw$Sk-NN}zkl0W;GHhWx)w7KkbTz19G4!GW$8VZs z+(7PF!IUq#@ik^psBh>Oy-RKSL=29AE&L%QBy;NGA0ogC@4aVDB~tL|Ug7V;_s@;% z|Js(a=)|F&EY?=9G8NAKuCBns3 z*bc^#)0^IakB+{anwJq%@6#Kj-PvS_I(tsL^yeNAn4~|q&2QQ3KmPCCHTM_){$#rUXHRCr z2tOd&`8U=0+r@CN36-tZv_QQ9th{)GF^F1?rYfZoRpI)NOW8P;{rzH&HW_QA;nEkj z@BH#f{%G)N$7F)u-c0%NFS9=iEMV}UV1^e&W;O8|7k}4%C%!qtf{1=^ffF~`%vbR4 z9^4}?8e4x6x`i2PW5cFb(Oo1>1O{eki=4h8P`OZ@nyl5Pre;w+A*-ue41V{=v$Y5M z9+ZE+b(T<(IJ2mzDsipqAtKj$}qhPA*nYZ!|oX zEkVdx$=oHOzn6Juc4{^42Yuj$+D(79Z2pKGjb=m;HW1BrI}r3IoZ!KrDFVac`G(7o zb>F)Z)B)GLpDim}$YtSyGI>bd(!lCV4UKTKju;7XXF7pt)3Run`Bj40kpsOk@tTWQTh-=DqWqT@^YvFIbn`SzEc!Gh{jaJX zy4aKeADKM;G6T=u72<_%E9|X$WT{H}JKcvM^uQp!0iYYu$b(Uc_SMAYXk>@Z>HzT# zH0(CJQ*{)aHL7i5;xuC~?(^rQL~lZlM+wYhDR__}y)3TOW+Vd~8kS%*KxmqoV%$Ou z%~%A)u-3W@YrkO}jN%$1URs)O;sM}A}& zyOBcmWb^v%nO`9jIM0fExteGL_hV9-+Uci94j;7Pn{P&6W<+xLM@Me z7Vd2ilaNfF6xbencpo2=Z&s|n8s7n8om8+=%|k=lva*Z8H7&FuQU3l_H40PD{HQ+( z-n*UArj?>mp(e$ySN*aLaU!KGGOoQcQi_WNnEdOX^09o!PPooH5)RAz4m+z573$#< z9GJUY?B1riL%p4A))k!(B)r1$BlY!?JQ;}C^h9;BI2H(`PWQc2=(g0l0=2Na91ab| z)`tQ7= zZW*Pg6_VnH6ruqg&y0+8&L~$+9dRtuKi9m+P_Fl~IEC(od6 zN%7KTNZDChH*wIt2HQ>xCWnV?GLKe(iIKpM6`G@B08Ej?T3&Nk%7LIk#$iyMgKQzNow1e6ap*I#cx6!{D2GI)ZiYJKgcE(v^{&`XUr`<^8yOZEY>VW$}hTziu8CA1=?8mRcC02gNRS zFv;554&wX7)zU9h^w%guY(`4QlB0~8drXFl-2>mo@;f{|Ib1`k7&jiqhLPSAXf?y; z00p|ElT)9oe4R#5iqs0xClH;?8KU9l_AY>e)gz2&RtczUN?uRBt@BDmh5;5(j>;SH zJe?99ut^UR4N)5pN!B^%*HBu3(5Th?B~_;o1}``d0^Yksovg&dvy^=!a z<_rw!+3HKiq3lwcff|6S4PX6f0HtNiQ8d@Ve?2&57VKdOWLU|VSA3z+A05)zX3cLk zdXYBEB~NE_W8+I^W+u&JEu{!n!+YFRG&K3-V)xOzA#k<5#2Q}DPCW+3jLi3-F_EL0 znP}FLn96DP$5M|{2pZV$>6CZ`(=V36m!Nq{qTmktil_y;Bb?o+25Iac%ye|$k`2Ii zhp_8re3MMn3LLQE+bkJ$o)jn8f1nn2&9P}x3Qd!wlhLTL^)3OR#?<~zCM8(!3^RTl z8x_lImkgdY*r*t{d^pekGKp%3%A#!mOtRk*=ud&`lF}XobiR8(S4k#%m_9)?iO>KS zalR{dR>eO84H_pCCoo)o4Wk0#xr4)?<|Jsr6^SK2RSj|R&{Kx=sR!2SrG$syl3kSK z%fV%5VrmbhQOa@o;EnfQq!rrj9x3rGBYp#l)><0dJIRz8F6}G0&dEwY^MRh3fkBEG zPwJ(sb2V3n(S2e1yq24{^gjkTR@b4B1H@B^u|qe@_4Ldz;c!hGA=BI2%L`^oK+)>T zzZ#Lb@=+XC<8RO7Ar=M1_i662*ApclHN3Oipp``_^>qKeL3tocK(k)o^Ffr#C5Q!l^5Iy>m9Ms%Gc|`pf%BoVAz#? zyEQ*rKaQVZQ!lL#4$;WH%_Y$4)+zrCD7H+@-hW!1O8D;J1SXz_18bRqtiAEUg|dnM zbF-~xf?dJn8e!_846?QEo1;Z!F)Yv=dU99SgiE5o);+2;*>@V+W5~!eQ&UoSomNHQ zYs0e{^YNl~wH_kJ#iOI6^euGYBE1gI(zhh%g;{Pzvf~BpKhJUMWo4okvt@)u^RxRh z76CR+FqST;bY9Bu)UU*&F?C;Xun6b8vFca9q-A^4<)bvv2ub$C14>ew&Fa_^>vVx} z4_z=_b$6-yWKNf0KPp2uh{)1*I$rNnzD!O&n3{n4Ob=h|QODu?`wD+GF{Gc;AWrK; z@VK(NVaR|iO6hnsS+UY`%S`m}=n8B&CH;N%Q;i9)L;Xlk1v$CivI*}@i7ryrzT50L ztTKe%u<(1bg0XQ*MptyQlCn!rm@>St`ryj83U=>6ns4Qg<-`LJ{j z%DS*B9@3xJ!T!|*6QJ|TW) zb~YPuq%Cp7@K^z-_u$)5V3oHrjMWkwAJ0);`Nmc+4eaI6KJRQG=mesB|^20w7M~hssdjA9iLdbx;X;Giv-|R8rH^i@!j&U%jDFJOT{tEAzi-c#=SAAR13i6~^643&do*-l*0&V3P_Dk`u2B3|+*)nlp$SCI z2Wb$&43%RY$i+oMN*Alrs?=%#b9$3Q^AKtTMyJbeYIsqAR0ydAZrhI*mjf#2tbO>))8Ze)G z8qTWs)O&my7{IeWc<`X<5V)xHzilvt0gD+&2ZzEsm;Gkd2zK?xWCN7KfkrS@zm`g0 z#&ET%Rp~r{wfcd{2F3O3$wOOnRtulapS5jIUptiz(5`Lqaaz(V5@toezW6O>O-l^=2gh1RZ$j$ z+~~x6yego&q!M`b)~r1dT`P*}>7Mt03=&h?PpAhF2&BX-O=@?~v~Zz{7TMpYU)kK( zCkblsURF#^zB|@@%#l}~2vRtV`cs|Ym#BCM`VlNpHDI-=?9Su4s%JA=EOqX1F9M6j z-sU(_TdO&J)9C$F`fzt`aEmjz+v?GKwB4G4kn3u^SJ7Pq7=K)e>nVcIX7r^p++7Wv z%L^rCGA)CH%3x+#REJrgZt6G`xEdO`tqP{6r(5n;y9d;8{3&w(MhZ>MA*^}w4SwCi z^Z2BRe+TLE;VtA;0lw7#g+78)OKF}%Pi0{U%M!7HoHn3KI_GoxVfk6*z4{7pW||7F z5-1E68PUe6H)dBClT#SvTFkgu7e1mQ;=>mTxV<^kU_82(@xn5%6HlY@J49Fcd1oH06;J9M*E`tcpQy+Tb zjn{@GNW6LTMyJ*>-N18+S~20oPlwkopGg>!AqWh%nmQ9;6Zr}JHcEE6V!bI9^(6qP z&OZpO(*PQ03Xv73gZ+IA;PV{|G(3u^>$!{SkiIN|35_PEsw~*79AP_5RvSN3EPFFg zZ#NZOm??Kmu_F#vLl_v*DMR>*CWWQZD8qXSC=E400VpKaBh{posAgf2W!=lZw7$6> z)sLMZ!R6`mj0i3?hPWGoiJ5~Sx8FIEf3*Fp3u3ijkW8=~;`Wn@?^}8#vyjc9AO1Ny z3k+qmnj3Y;k7Sk|?|(fy*lyY1V9~GCC{?y*$VMa#$BH<-)zj1C-3U`Iwr|lQtopC< zZTnI3GVNbEAP`#n`qV)-gcr8|TxvU#|G{Y3gwV%OExYhGt(JCP>4`2*JR>V7X$q)Ni-$ z1QOvt_z;i1x!!=ca?4@0x@K@Jxb}F}Ge*Iz1a<(D9Tpay(3#cM@<}bT8rzcSpCBW< zb&nDwlYb@h?Af!$_$brOa@*^LC3SgyrPRX3ufKK7dydqYhZwkT*&OZx7C~5tSsTuo z0Wi;W2)IF(mk+w>io?^u%Hzrgc?b{PGN|~hvp|J&zAF*kmFbo8<43%Id7|h&GmMN2 z(CG8oNEck#TSEc6gHT?tpDLc^6dwESirO~ApC zkX9wI8($?B)TWevaTC@Q34zww>Q_`$p^d)WV0oGL4is_&daLO_!qH^231ew4)JqFx zP*1+&ul76Er`DzO9m_??{pK(CF*ewtVy<7z3-x!=CV=0VBUx1%E9O)R{H;yN7r=?S z{K|04Y;kKcLBv}c=$2sz&5vTSMqd!RbrS5f?$6s0`uUFO^4V%qO&8{RQk&>y^K^;VpY4z1<{r+JR_j4`jD`Sk7{ZWgB}$FYK*pFZ6e&EdH_w$zmXSyRae{Sa_K zs2Uk1Q4L@+!9Z+Q0v@Vge(fM?Nd@fmm<}_~2X1_fnxL2!a$EmQzgWL6IsX`C* zI+jO(;H-$8YqvSMM?e1?^}`DtBTRTW}?gUROL*wxR^kCj(MFZ32Q zMLPD?VsKAsp3cxc$rE=l!=$On@QSCQ_ZGWs@6sc~Qh{>%me9zIyFBJFP{Hgv5wl>B z=u@}sAC$P2#~jOg#`LDA2l;TYu_?4LGs`K-7GiG4F>`Zs&kNil@i`QS>BNrHZY6^W zf4`nUn}d7jQ6niQgQD?hFbP(2efve=ZQ>ETo-4TPvr0Iax7}_kwTXQ)tFCx|FIkjr zb3>Na^z-M1rwK3A8hIHIcUR)$@#Xd#QFwwIlcz9U-_EyRpnbkQ9?ccI-}BV7ikT@- zr&MFhpLPI<*^0rW*&0y-k~>ZTL{|OMSx&=`Y9&HD%M)5?H7RvQrRH5BW#`r0p{?5% zOKWvYKR$-#oESl&7)`~x(?a$p!jH!Ei{V2%4~c21aO#Bm$LR)KMW2a44QA>5{>8_0 z?j=T+J%Y>7ije1SE+`->4JpG-142Ty02h|mZt5X?Wk52d)Fw44 zDZ}HzqlKy-koJ{$&B_r^Evb0n%yp-EX!T1j+1?iQOpRiDI{(t?oj~|Yw%fELLk+tdzG5s_yg9QB%!TYFDIvjY<2fm&TnUGTU}js zY;C}6$JFe-rGlg}q1^N~95$$gUrj59ICT6OwyH^OE5e~}=DXXX6p}scOD?p$RS_)s z(l%UhFv#EEKQuIycVUQ5$Z0qC{Z*>0&JcM2G=qGJ$sUcYnwJ-$i)ZDwlb1%ehH4!0 zRC3~UKkV(>w=>hrxnPuPwk}4DMWet6)IH%Ki1KdFYArXtCJWnHZ$`Y#kJBZrrDpp3 z8z5&*W1Lq$x({)uudT11A=x*7Sptgyz36NkVHenDza`lru{x|Qfw8y|coXXEB>?GB zfOJEFF$`Fin9};a0w=2L1VZ$FKfU~+@#&j$9uE6$_=&2_SW^*|h%~Re-_)P~5cH?Z zrhLdL7kbulL6A|FnDNy5`fu;vvl|5-jejO)qqz$40{azghqWgs7fGo%b8En%H_m_g z>Q#-sOw_;>fKzt;X`QYvaBDg6fvWP_ovepa0k5^QaR|)8X0{#1e0!*P@$!|B?(mPa z6Gi3*b60r4Ugj78HmmjZ7PSYjOi!}`#@b<5AFO0}ez9us&jpf6$byS+g+hAZA*^Ma z|MI0vEt?vP={t-KOok3_>|A1sb(r9AL4FlO=R@YEEx_NyH_TsH3hNRZw6d$o6EL`& z4ZMWgMn-f2Ap;<+8Zq4I&`dK@o3T=TK=JHX*ROoc&#%d(t!vkk;7bB& zQOGRS{K&G20y^*BF(x5bwO{@;y`B2n{?{fHZ1JCmgqM#Fu9U%70nYSdLcT{U6;}yo zt#~TjW`>L9=21kUHm3brLU{Ew36ca)o)9+X!k>aALMY_0-j5Wl5 z4?=HadQn*fsa>lFFt=xC&YY2xm2K&D^ZHeyg)2Ga8QyH-XV)i0csQ?Rj8(a^PJKCj z`cEzZ7qe_f-1$Xt;na*&k!jp_=|(u)kWdg?W|o(8L9(%Yc!h%HF~rbN%CIJ9S}HKx zV+R)6%M@Sh!10WPWK{snP3%t*{B%XeX1GXd>o&(gyQTVU?1s@+^Or}9qEm8uap!)* zO3WMD8o;Cn=5-0Xo)c)GMgHOOCLXO+Pg-zyjCmAM5)a;-S?CM z*~ueWs_wFoqvLb03tztGjwu>N1qQY$F4-Tm`vK5+A7-L|%f#M$tG z&k7CPX^40w440c8W#A6=y-2EYvh;T3kxa;<*NhZ=WizcNGa0>9a&ZJWe5lMc$P2;2 zc8XwOkR@}ntE#NTe`}4{X)0ZTovfGi+ysPaEkLVXIiv6FOt4>$BfWB3b*=jhiESVN z|6l{{LbnDg8@ZAKugdr3!#7~NUvE<34xQX9J0vKsL|m&&xd%iBw(Z2<`TkU=u_7z zV-W6NRds>%{^xWrm)1!3M|lRRgX11DINID;(=TszTNJ6mv@%AphgO8$UL0Q_Q~MLy_R7`Px;r1p zg&%o&;}#1)g|^TOXlYT4IckV{>}bX|qr4Wc~mUm_o^yH1Bkn_{$ zw88EZuRhg2JAVbAAYd@qEHK{xjv19B9gJs*|k?qcX#0H$#K7HHl=$FVxZX})u@35CRkU;2ezt^!>NvILY$)2ksH(4T|F3~=rUt;DOE?dbt(TmA=)xiYQi#jN~I-j=v_4RTzIT4A#cjxC3$ArB-e-@Xb z{rSS~S|)Fx6wuW5f%*j2!}dZm4qB3<)kmz;*I(7&@0?wpNox{zQ2|LR4NL``kc#kV zc?K}2EXR;Zlms?Ws#vnZkg)T^gnFkVD$rI?);1%v$_2-x z3}FDcEbzp$`q53fGpYFg^QbI!bxjQ)e3KrBQP*WsMh#^1WIDlZU0q!}j*Kf4sk@cO z4Gf0MP0?q!X0-~1|IEnI$W6Mi(~Dw(3}=+w?udJYL?RF7JJ8u-OxYf|oXTtNs$ha~ z54zs4h<1KvChZb!aNp#KHzx(_1oPE7QG;E|Tjm|TkH{~kLw54jbtQsniww0wb;@AbF?|{MsSL&9 z)2|WO8a1!&b98kY|W-qU3l?$E7Oyz9tRfi^3vJJ8KS&a5=HZ4ZKn^hB$v(?=)Zv z(2*br#MF@;g@`&1!{le@FK2;%kM=G=*>k)qidYQT_RyF}04|AEx%PFARq^fqxKN}jkb^QR-@$+z4xivUf$h3<^s?y_!EO1D&3GlW zt9C!-HnQS*%p)LC+UbkoNv7hljh6;pgWTI_u~TQc$m`Sq5*SPiX@u>K*Ldt9*I2ig zwShpn*c)k9RrKnZ5c|YEAfqEX`NrK;zW9XRE*uzGsTjwt4Twg)0N=t*eZIz?2pOzR z@}u{A|GssorDbaG(4b|7WafRQa>D3l*}xwpC*S14+0rM2xh{|2La*4}=BgAreGy@> z(eK-#=Db?~1jcd}Y9W3e1#SZsGbc&_T7li!E*RC*FY#{6xZfrvC6z4|=K@O1o?(hQ zs$Re22_rCi0?%V#AS60$uvWXZn@3*WG(9~%Gc`rW#KhFl*a-XiA&QuVdvDFA#38`l zI9WG2oh}dS$w;WxFM2vMZZ3GRywyeFzL8QN5WByWp%jO8v^!;+187_9$PzuC%q+0h->+0g1vc@WNBg)GNeOG$MJXGm!BnB z4Txm`xmbyAf7&zo;CmwSh{O|VEoPae0Xr3NmM{s4NXTJ}Zev1q51f4VQs zA&c*==(F+u^9;%41WVPyyraq1zyxlk(qO3^xC~pS-o?)20sa83GgzIks^`1MZ>urW z5XhohT@K#%_Tqfs_GUqH#pQYW#qQ+#;SzI<^i}T-yL`)CklB*BHhiZ;2jxG@f0?Jr z-ty9~RBFrLPL*m8ONGl>eAb9}-dXC`1j<)jhGN`^;kTj=D2_nWWgoE7@(Uth%mkn;QC^CsR=JO5|FE6Ky-JiaqN$S07x>R~ve zcGWX=;>VJT-U`8*%yR(F-D53N;^#G~SjZB)?+;pL$*b~XLuPR{rT^=XwZj$geXvDY zWpkk46-(sGEw>kXunY+`xOsX_hx0yqMihf_BZW>;u)&-dbP+Hk>CK{!IGv*+Ui{Y@ zzRF#RL-T|Y{e}p-{C`}lAumkEG&moO;QPb?s4=7J+llAEx7O|8nJ8D{N3++TAf|d2 ze8~q{DSTZ0%PVT>49QoU!gMf-D>8Ix)65lBSIAHNZT4%|LAJJzu_Aulu#no!!tB^F)5EpjO4?HC^BYmN;@l30oPy*V7 z9jTr`{Qjh^(FazN$y$>VS&8(T^sx#~WL2f+PWL0ID3li!SS{Kf5Kv;#wMeh1PmA8V zG%y00nrI(sNPBBw#-M90bT7{PSg&0TC1l_+BcV*O?i7h*)US@sSZNC7MR@1ZXP1X) z=PNNL1Y%jl*j?@PlKi#ZM->8;N*C3pA!{|nRXfT1YY}$zYk3|e?aU%Vr|HLLCa`pu zisZOwH-+-eEH}eWa-akCQ#)tf6L3G;)J?P+j%Ga%gp2bg^P`0Km$vkB#i^l@q1KDLf!UM!(qQnX&4+K~73v-sh9nqAdE{J2gnk5a0p-m&~1 z@hXle#}=sw3-+1{`Gzov@;I63SSifvqo!z5Worp31&K&5xq4Y+zDE zm5fhLxcy-KL<--^o?At9Iy;8)3qAZ`JN|}RI?A82cM97gbmL1(Muezo;m_?xttdVd z@i%N3@))G7xiLFcZ?|p-+Jogm2=*Zdpx_YhCB4JrQYlJKHG;$%dRa z`d8*7Ntu(*A{J-Iy+p+Ae$vqmYKDOluTjYIWu9ajo?)ib3=p)*|HRz zvTAWU<1qC$T@>a+?`XoMO;?`92pKPEUU8L(o}v&{V#-I>R0>Bw@oQk^%J2PSk0^(+ z@iPm?`E;7`WlL5K2#9tm*X1@l7zRJ&aO942W*C^h);X3P&@ie|7#&B?%+ZtcA*f=? z*6Ua!NNTOLHMO+FJ3Jny?p!UEez_9XA9kkl36mP-uf7npHlz2?ybi_~h2BTF8aP*D ziaKSVv*17q2`y84+K@AskYbeW0!5iH8#LRJzd|UE7in~647R>VazM{pi@>5l5_Ef}?ApmmBLNgRlF z2-X_(kK_*Ud56cE_4T1pS})_Fsk(Bb3v1UF*kezx8~QFpW*m;e@^>D#Kl)$Oj#(xuMp_VnB7nyr(~+hrmTI zd+xU3z@G0}C_O4L15*n_`Pv?BT4>v-HB$su$14)j0_$=j9JK-iR;dnkb2r_haVeE$ z{M2#IG;0_4j%%} z6+>lCcnR~8=+{_N#noL~;rw&L%8TEG(oIWds`Y*xpck9w_Ta7X8e7xdQa3545ofw@ zIpX9_rI<40S4A`IYyPMNO&9l{4ww#BXf&h`7tg*3jn&u<#b~WARUW-8ilnW| z@|Um7aW^IBd%VUBv11BeUce;0TKs0@^4&O(YP4B5wXM8uVnkMqMrmkZ#e?E<#S1yZ zcheyP0Z*4%-6$sv!Ie+e1%Z3tUU}B+0~!ZYbJR(xjV;xVfKjMNR5BDJ5ARZsyKAl{ z=F2I`hvQ!$K8-bu3Z#gX8M5gsqpM zEVtoMTub=+wRyP49L)kEA_Wdi( z&*%6x;=3b-c(}xVHVrJ|kQCYrGy5>T_{^A?yTd6lByakAoq4y zye;>4$K_TuOJWx>kmPu(8^Z1ItZ}`PHRbf^0VR=4YNk+VU3Dfbe4{&Z@N(NC=Wbe6 z{Oi6wsL{5B%S~3YGDT+3`PqoZo$Jx~_K&{vM^14GWXBTDnx9-<9 zo9ZA9_m^AUg=*RrA6umC>MM|Ue|nyl_4#IJuTHGo#{xcfyV(=BP5( z2>Px1Q-_atatkrOlCrqr{l9S#Ots?QmN8{*#n3~Ur}FO}pQZ2slcU6x9G$qbXMZ>i zog9I6AQ?^6g|uEIndGQ+_+SO&H`GMSe$3`_+?CY`)->4MglmGo95>}OjA21H)J<%K zen92O+bTP1v;3AYcni0p>9AZmxl+8s>j2H=fG~fo?3OFjLX%BlfMNj)T}wvr#a|^` zZqtU9b(iiL?+js7F9$2Ao`IMjxC<}7bSoN-cceV=Yt-R$7@|lBkqg5_gU}+O{@-*~8AdZpK727)J+7nHSSpYc! zuy}Y4dSlK`LG=}NqTy+FrHzjnds3>!lvtLd5G$0CdOaZ{#&8hiZ@l4fN3`hWrPJ4t9 z4E!V94Wcqx1CIpAkuLeAtvK&SeGKjI70m|Tap$NGEyTk_xMLK8>1}Fo4#eGdCnL8m zSzfCLBsvhkyb5s@`VrA$LQEGIhA#%^ z6VC#YBlgwpEiypn{QdZyAb%BwXX@7y_w*#{6G%dR4lmUIPOXndjv~4QfB$mZ{!gvD z5Q9`J+SmV<{tnfym7TU)(5Z8@@riijXCj4bFO!VU|6eLM;;Z=}vnpxdS&5s_l3Iky zFotD+Ny{q}dQbCTi8=Aa{{1*dOj>_GE<6MY@bAaf=i(Rt`q!NgASV8PJh}F7Z{+va z{x#G8`xg?IO!*xq{ys*3F9XTnsmSkj zAZA~arz<}TNqxmh{*a*i(o1&c#;i(!t`pO?#FeMwtPq}!^OT(6XRqD(oy9$%|DD2# zzxbWM`F#E>d82#tJ9B$>_ILjI?vLN-?4Or@XMq3p#N-QQY9u7*$7P>OX#8*glE0rw z{M`PV75;m1{$3mslK-81^Y5MW|F@mfu>*Q!SVSj*2p^ogzCePoUzYa<<+;x{1p(KQ oRAS60F;bWy5dZ$4KB`;KYth}Li<2u;AU;J_O6ht2Go!cv2e`b=4*&oF literal 0 HcmV?d00001 diff --git a/images/virtualbox_packaging4.jpg b/images/virtualbox_packaging4-fr.jpg similarity index 100% rename from images/virtualbox_packaging4.jpg rename to images/virtualbox_packaging4-fr.jpg diff --git a/images/virtualbox_packaging5-en.png b/images/virtualbox_packaging5-en.png new file mode 100644 index 0000000000000000000000000000000000000000..942026abf8b6c97404e9981985d7fe6439d08205 GIT binary patch literal 115694 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
    2IiNL{m9YqZ`v%%Gj%SG> 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ɒz$m^rYt0&n6Hc7RcN?U7n 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 + +Here, we're creating a first snapshot + + +We can now start to work on the virtual machine and create as many snapshots as desired for each milestone of our modifications. + + + +In this example, after having validated our particular package removal works fine, we can easily get back in time by restoring the virtual machine to its previous state with the package still installed. +Once the package will be fully functional, it will just be a matter of deleting the snaphots associated with this package work to get the virtual machine back to its initial state. +For our next test, we will then be back to a freshly installed YunoHost serveur, without any trace of package installation. + +#### Using multiple snapshot branches + +In addition to successive snapshots, it is also possible to create a new machine state and additional snapshots from an older machine snapshot/state. + + + +In this example, I have created two branches since my successful package installation, so as to independently test just the application removal, upgrade and backup/restore steps. +I eventually got back to the virtual machine base state to start a new test on another package, without dropping my former test whatsoever. +At any time, it is possible to get back to a previous snapshot simply by restoring it. +The machine always start on the "Current state" state. + + + +> It is always possible to create a new snapshot, whether the machine is stopped or not. To restore a snapshot however, the machine cannot be running. + +## How do we connect to the virtual machine? + +Virtual machine connection is similar to any YunoHost server connection, that is by using `ssh`. + +```bash +ssh admin@my.domain +``` +Or, if the domain has not been added to the `hosts` file, via its IP address. + +```bash +ssh admin@11.22.33.44 +``` + +We can now work on the virtual machine using the commandline. + +To easily copy the package files or use a graphical text editor, one can also connect via `sftp` using a file explorer. + +It's a simple matter of using the `sftp://admin@my.domain/` address. + + +> Note: on Windows or macOS, the file explorer does not natively support the `sftp` protocol… diff --git a/packaging_apps_virtualbox_fr.md b/packaging_apps_virtualbox_fr.md index e046139f..baaa0f5c 100644 --- a/packaging_apps_virtualbox_fr.md +++ b/packaging_apps_virtualbox_fr.md @@ -40,14 +40,14 @@ Avant de commencer à jouer avec la machine virtuelle, il convient de faire un p Arrêtez la machine virtuelle avant tout. La gestion des instantanés se fait dans l'onglet "Instantanés" - + Et on crée un premier instantané - + À présent on peut commencer à travailler sur la machine virtuelle et créer autant d'instantanés que souhaité pour jalonner le travail. - + Dans cet exemple, on pourra facilement revenir en arrière, après avoir testé la suppression du package par exemple et restaurer la machine virtuelle dans l'état précédent avec le package encore installé avec succès. Et lorsque le package sera pleinement fonctionnel, il suffira de supprimer les instantanés liés à ce package pour revenir à l'état initial de la machine virtuelle. @@ -57,14 +57,14 @@ Nous disposerons ainsi d'un serveur YunoHost vierge de toute installation d'appl En plus de l'usage d'instantanés successifs, il est également possible de dériver un nouvel état actuel et de nouveaux instantanés depuis un instantané plus ancien que le dernier. - + Dans cet exemple, j'ai dérivé deux branches depuis mon installation réussie du package, pour tester indépendamment la suppression simple de l'application, l'upgrade et le backup/restore. Finalement je suis reparti de la base de la machine virtuelle pour démarrer un nouveau test sur un autre package, sans pour autant abandonner le précédent test. À tout moment, il est possible de revenir sur un instantané précédent en le restaurant. La machine démarrera toujours sur l'"État actuel". - + > Il est toujours possible de créer un nouvel instantané, que la machine soit à l'arrêt ou non. Mais pour restaurer un instantané, la machine ne doit pas être en cours d'exécution. From 9c6fb9819abacc593f4e7af5f32a2f4ebaa8f11a Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 6 Apr 2020 00:40:43 +0200 Subject: [PATCH 067/135] Propagate to french version --- app_nextcloud_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_nextcloud_fr.md b/app_nextcloud_fr.md index 4fcfa6f2..e5dc9000 100644 --- a/app_nextcloud_fr.md +++ b/app_nextcloud_fr.md @@ -128,7 +128,7 @@ Lancez un scan du nouveau répertoire par Nextcloud: ```bash cd /var/www/nextcloud -sudo -u nextcloud php occ files:scan --all +sudo -u nextcloud php7.3 occ files:scan --all ``` C'est terminé. À présent testez si tout va bien, essayez de vous connecter à votre instance Nextcloud, envoyer un fichier, vérifiez sa bonne synchronisation. From 7fc9e66b55381270b5eb74d55ad6b05c3b75209d Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 6 Apr 2020 01:35:54 +0200 Subject: [PATCH 068/135] Remove 'troubleshooting_guide' --- admindoc.md | 2 +- admindoc_de.md | 2 +- admindoc_fr.md | 2 +- troubleshooting_guide.md | 345 --------------------------------- troubleshooting_guide_fr.md | 366 ------------------------------------ 5 files changed, 3 insertions(+), 714 deletions(-) delete mode 100644 troubleshooting_guide.md delete mode 100644 troubleshooting_guide_fr.md diff --git a/admindoc.md b/admindoc.md index 9194c8a4..5a7e9d82 100644 --- a/admindoc.md +++ b/admindoc.md @@ -44,7 +44,7 @@ * [Hide services with Tor](/torhiddenservice) * [A discussion about the advantages of using a VPN](/vpn_advantage) * [(old) Jessie->Stretch migration procedure](jessie_stretch_migration) -* [Troubleshooting guide](/troubleshooting_guide) +* Troubleshooting * [Changing the administration password](/change_admin_password) * [Recover access to your server](/noaccess) * [Unban IPs in iptables/fail2ban](/fail2ban) diff --git a/admindoc_de.md b/admindoc_de.md index f9c0b256..ee77f645 100644 --- a/admindoc_de.md +++ b/admindoc_de.md @@ -40,6 +40,6 @@ * [Für externen Speicher hinzu](/external_storage) * [Migriere E-Mails zu Yunohost](/email_migration) * [Verstecke Services mit Tor](/torhiddenservice) -* [Hinweise zur Fehlersuche](/troubleshooting_guide) +* Hinweise zur Fehlersuche * [Entsperren von IPs in fail2ban](/fail2ban) * [Administrator-Passwort ändern](/change_admin_password) diff --git a/admindoc_fr.md b/admindoc_fr.md index 6dc54324..9b4c723f 100644 --- a/admindoc_fr.md +++ b/admindoc_fr.md @@ -55,7 +55,7 @@ * [Utilisation de certificats autres que Let's Encrypt](/certificate_custom) * [Une discussion sur les avantages d'utiliser un VPN](/vpn_advantage) * [(vieux) Procedure de Migration Jessie->Stretch](jessie_stretch_migration) -* [Guide de dépannage](/troubleshooting_guide) +* Dépannage * [Changer le mot de passe d’administration](/change_admin_password) * [Récupérer l'accès à son serveur](/noaccess) * [Débannir une IP dans Fail2ban/IPtables](/fail2ban) diff --git a/troubleshooting_guide.md b/troubleshooting_guide.md deleted file mode 100644 index f1d85a0b..00000000 --- a/troubleshooting_guide.md +++ /dev/null @@ -1,345 +0,0 @@ -# YunoHost troubleshooting guide - -You can consider this as some kind of administrator guide for troubleshooting or what to check when there is something wrong with your YunoHost server. It's not a step by step guide to make your YunoHost work but more of a list of things to check to help diagnose the issue you may have. This can also be useful for debug when packaging a new application or trying to understand YunoHost architecture. - -## General notes -### Do not break YunoHost -Best way to troubleshoot is to not have to troubleshoot because you have tested everything before deploying it on your server. -This means that everytime you want to try a new thing (non-official app, new specific config, package an app...), you should try it on a development or testing instance, *not* on your production server. For this, you can [set up a virtualbox](install_on_virtualbox), or for instance a [DigitalOcean droplet](install_on_vps) for 1 cent/hour. - -Also: https://wiki.debian.org/DontBreakDebian - -### Do not install bad quality apps - -Even if it can be tempting to install every [apps](/apps), be careful to their quality level as a bad quality app can ultimately break your server. If you absolutely wish to install such an app, at least try to do it on a test server or check if issues has been posted to this app's Github repository or on the [forum](http://forum.yunohost.org/). - -### Check the official documentation -Answer to your question may be already in [the documentation](/docs). - -### Check the command line help -Learn how to use the [YunoHost commands](/commandline) like a pro. - -## Upgrade -Problems often occur after an upgrade. After a YunoHost upgrade you may want to [update your apps](/app_update). - -**Check if some processes are using old libraries** - -You are probably familiar with: -```bash -$ apt update && apt dist-upgrade -``` -Most of the time it's enough. But in some cases it's possible that some process are still using old versions of upgraded files (such as libraries), that can cause bug. In rare cases that can lead to security concern (ex: upgrade OpenSSL because of a security bug, Nginx will continue to use the version it has in memory). The utility Checkrestart will help you to find and restart them. - -```bash -$ apt install debian-goodies -$ checkrestart -Found 0 processes using old versions of upgraded files -``` -If some process are running with old librairies versions checkrestart will tell you and propose you a way to restart them. In some cases checkrestart can't find a way to restart them. - - - -Easier way is to reboot if you can. - -You can also use [this script](https://github.com/octopuce/octopuce-goodies/blob/master/checkrestart/checkrestart.octopuce) to automaticaly restart some services if needed. More info in French [here](https://www.octopuce.fr/checkrestart-outil-pratique-de-debian-goodies-et-version-octopuce/). - -**Force an upgrade on a community app** - -/!\ Always check if there is a upgrade script and read it if you can /!\ -```bash -$ yunohost app upgrade -Warning: You must provide an URL to upgrade your custom app app_name -Error: No app to upgrade -$ yunohost app upgrade -u https://github.com/user/someapp_ynh app_name -``` - -## Services -YunoHost uses a bunch of software to accomplish its purpose. Most of theses software are registered as service in Debian. [More info](/whatsyunohost). - -### Check services status -When something doesn't work on your YunoHost, one of the first things to do is to check that all services used by YunoHost are running. -YunoHost include a helper to see the status of all services used by YunoHost: -```bash -$ yunohost service status -``` - -Sample result: - - - -All services should be enabled and running. Except glances (optional). If some are not, try to restart them. Here is a short description of what they do: - -- **Amavis**: anti-spam/virus/malwares, used when receiving email -- **Avahi-daemon**: system which facilitates service discovery on a local network via DNS -- **DNSmasq**: DNS server, you are not forced to use it -- **Dovecot**: IMAP email server, used to receive email -- **Glances**: optional, used by web administration to display server status -- **Metronome**: XMPP instant messaging server, used by Jappix and some external client -- **MySQL**: database, used by some app -- **Nginx**: web server, used by all web app -- **php5-fpm**: PHP service, used by all app written in PHP -- **Postfix**: SMTP email server, used to send email -- **Postgrey**: greylisting policy server, if you use YunoHost email, you should [learn more about greylisting](http://en.wikipedia.org/wiki/Greylisting) -- **Slapd**: LDAP server, used for authentification (SSO and apps) -- [**SSH**](/ssh): Secure Shell -- [**SSOwat**](https://github.com/Kloadut/SSOwat/): an simple sign-on -- **YunoHost-API**: YunoHost web administration - -Others services installed by applications can also be present. For instance, `seafile-serve` which serves Seafile app and `uwsgi` which serve Python apps such as Searx. - -##### Start or stop a service which is registered with YunoHost: - -```bash -$ yunohost service start -$ yunohost service stop -``` -You can also use the generic Debian command: -```bash -$ systemctl start/stop/restart/reload -``` -After a launch attempt, always check that the service is running. - -### Logs -If a service won't start you have to check the logs to see what's wrong. There is no generic way for services to store their logs, but there are mainly stocked in: `/var/log/` - -Here are the some useful logs files for YunoHost: - -##### auth.log -Contains connections or attempt of connection to your server. It includes every web, ssh, cron job connection. It also stockes all the failed (hopefully) attempts to connect by a potential intruders connections. - -##### fail2ban.log -When someone tries to connect to your server and fails multiple times, Fail2ban bans the IP address to avoid bruteforce and (D)DOS attacks. Here you can see if some IP have been banned. - -##### mail.err, mail.info, mail.log, mail.warn -These are Postfix (the mail server) logs, check theses if you have issues with email. - -##### metronome/metronome.err, metronome/metronome.log -XMPP chat server logs. - -##### mysql.err, mysql.log, mysql/error.log -MySQL database logs, these should be empty unless you have trouble with MySQL. - -##### php7.0-fpm.log -Generic logs for PHP apps. - -##### yunohost.log -This is the log created at the YunoHost install. If you have issue installing YunoHost, check this file. - -##### YunoHost operations logs -This is the logs created when you install, remove, backup, etc... an apps, they can be found using the Webadmin in Tools > Logs or using the command line: `yunohost log list` and `yunohost log display`. - -This list is not exhaustive. Furthermore, some app may put their logs in `/var/log` too. Slapd logs are unfortunately in `/var/log/syslog`. - -## RAM usage -Issues can be caused by a lack of RAM. To check your memory usage, do the following command: -```bash -free -m -``` - - -5-10% of free memory is fine but it's good to have margin (especially for upgrade). Since most of the time you can't upgrade your physical RAM, alternative it to use a swap file. Keep in mind that swap it's a memory 100.000 times slower, so you may to use it only if you got no other choice. - -##### Create a swap file: -If `free -m` indicate that you have 0 total for swap line, you may want to add a swap file. -```bash -sudo install -o root -g root -m 0600 /dev/null /swapfile -dd if=/dev/zero of=/swapfile bs=1k count=512k -mkswap /swapfile -swapon /swapfile -echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab -sudo sysctl -w vm.swappiness=10 -echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf -``` - -Change 512 with the quantity of swap memory you want, 512Mb should be enough for YunoHost. After that, check with `free -m` that you swap is activated. -[Source with more explanation](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880). - -## Disk space -One other common issue on a server is lack of disk space. You can check your filesystem are not full with the command: -```bash -df -h -``` -This will show you disk usage, if one file-system is near to be full you could encounter issues. You should take appropriate actions to free space or extend your file-system. - - - -## Nginx -Nginx play a big part in YunoHost since it serve all the web applications. YunoHost have a specific way to handle its configuration since there are multiple domain and multiple applications. - -### Configuration -##### General configuration structure -```bash -# Main nginx configuration, you don't want to touch this file -/etc/nginx/nginx.conf -# Directory where all YunoHost, domain and app config are located -/etc/nginx/conf.d/ -# Configuration of web administration -/etc/nginx/conf.d/yunohost_admin.conf -# Per domain configuration (one per domain) -/etc/nginx/conf.d/example.com.conf -``` - -##### Application configuration -For each application on a given domain there is a Nginx conf file located in: -```bash -/etc/nginx/conf.d/example.com.d/appname.conf -``` -Application configuration file usually follow this type of pattern -```bash -location YNH_WWW_PATH { # path to access the app in browser - alias YNH_WWW_ALIAS ; # Path to source, usually /var/www/app_name - -# Specific configuration for the application according to its programming language and deployment option -... -... -# Include SSOWAT user panel in bottom right -include conf.d/yunohost_panel.conf.inc; -} -``` - -### Logs -Nginx logs files are located in the directory: -```bash -/var/log/nginx/ -``` -#### Generic logs -##### access.log -Generic access logs, you will find here all the accesses to the YunoHost administration and sometimes intrusion tentative. - -##### error.log -Should be empty with a correct Nginx config. If Nginx doesn't start, error are probably located in this log. - -#### For each domain name -##### example.com-access.log -All accesses to the domain, including all apps. - -##### example.com-error.log -All error regarding app installed on the domain. - -Sometime application may have their logs located here too. - -## SSOwat -[SSowat](https://github.com/Kloadut/SSOwat) is the software that connect the web server nginx to the LDAP server. His purpose is to authentificate users to the YunoHost portal to switch easily between apps. - -### Configuration -You can view (don't edit it, it is oftently overwritten) your current SSOwat config in the file: -```bash -/etc/ssowat/conf.json -``` -Which is generated with the command: -```bash -yunohost app ssowatconf -``` -Protip: if you want to add a personalized rule for SSOwat, do it in this file: -```bash -/etc/ssowat/conf.json.persistent -``` -### Logs -There is no specific logs for SSOwat. There are are located in Nginx logs files. If you see some line with `lua` in it, it's probably SSOwat. - -## YunoHost -### Configuration -YunoHost configuration is located in: -```bash -/etc/yunohost/ -``` -If you want to keep a custom service configuration use this file: -```bash -/etc/yunohost/yunohost.conf -``` -For all the service you pass `yes`, YunoHost will not upgrade the config of the specified service. Do this only if you know what you're doing. - -All apps configurations are located in: -```bash -/etc/yunohost/apps/app_name/ -``` -In each app packages you will find: - -* **manifest.json**: manifest of the app -* **scripts/**: directory containing five Shell scripts to manage apps - * install - * upgrade - * remove - * backup - * restore -* **config/**: config directory -* **settings.yml**: config of the app, also accessible with: -```bash -yunohost app setting appname settingname -``` - -### Logs -There is no logfile for application install so when you install an app, keep the log. There is some log about the command line usage in: -```bash -/var/log/yunohost/ -``` - -## Applications -This part is more for packager or to understand the link between Nginx and webapps. First, you should know [how to package a new app](/packaging_apps). - -When troubleshooting an application issue can occur at several levels. There is a wide variety of applications and their deployment to YunoHost will depending on the programming language of the app. We will deal here with the most commons cases. -Applications configurations are not treated because it completely differs according to the application. - -##### Oversimplified schema -Web browser −> Nginx <− (web server) <− runtime (PHP, Python, Node.js,...) <− app - -App is interpretated by the runtime, runtime provide or not a webserver, if not a webserver can be added, webserver or runtime communicate with Nginx, Nginx serve webpage to the web browser. - -The purpose of this configuration is to have multiple application on one server with only the https port (443) open to the whole Internet. - -### PHP apps -##### Deployment option -PHP works natively with Nginx. - -##### Communication with Nginx -The PHP interpreter communicate with Nginx through [PHP-FPM](http://php-fpm.org/) which is a [FastCGI](http://en.wikipedia.org/wiki/FastCGI) implementation. - -##### Logs -```bash -/var/log/php5-fpm.log -``` -**YunoHost package example**: [Owncloud](https://github.com/Kloadut/owncloud_ynh). - -### Python apps -##### Deployment option -A Python webapp should run with it's own Python interpreter with and it's own dependencies, for this, the tool `virtualenv` is used. -Usually, a light web server will be used to serve the app behind Nginx. [Uwsgi](https://uwsgi-docs.readthedocs.org/en/latest/) is a good example. - -##### Communication with Nginx -Nginx can talk to Python server via three ways: -- [proxy_pass](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass) -- Websocket -- Native uwsgi: uwsgi_pass: [for instance](https://github.com/abeudin/searx_ynh/blob/master/conf/nginx.conf#L9-L10) - -##### Logs -Specific to the app and/or the webserver used, for instance uwsgi: -```bash -/var/log/uwsgi/ -``` -##### Ressources -[Great resource in french on Python virtualenv](http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/) - -**YunoHost package example**: [Searx](https://github.com/abeudin/searx_ynh) - -### Node.js apps -##### Deployment option -A Node.js app have it's own web server integrated in node runtime, usually Node will expose the app to a TCP port. - -##### Communication with Nginx -The http endpoint will be passed locally to Nginx via proxy_pass. - -##### Logs -This will be specific to the app. - -**YunoHost app example:** [Etherpad-Lite](https://github.com/abeudin/etherpadlite_ynh). - -**Note**: Node process can use **lot** of memory compared to other app processes, make sure you have enough. - -### Other (Go, Java...) -Webapp can take multiple form an can be deployed in many way. Go app have usually an integrated webserver, Java can be deployed with Tomcat or equivalent… There is no way to be exhaustive here, but most of the time your deployment option will expose an http endpoint that you can pass to Nginx via proxy_pass. - -##### Note on Apache -Never install Apache or a package withe Apache as dependency, this will probably break your YunoHost intance. - -##### Note on https -Sometimes the webserver integrated with the app is capable to serve https on its own, it's right to use this when you have one application on one server and you don't want to install Nginx for intance. But in YunoHost case, Nginx who serve https and it simplify configuration. So when passing the local URL to Nginx via proxy_pass, use http, nginx will https the thing to the open world later. diff --git a/troubleshooting_guide_fr.md b/troubleshooting_guide_fr.md deleted file mode 100644 index 15969124..00000000 --- a/troubleshooting_guide_fr.md +++ /dev/null @@ -1,366 +0,0 @@ -# Guide de dépannage de YunoHost - -Vous pouvez considérer ce guide comme une sorte de guide de dépannage permettant de voir ce qu’il faut regarder quand vous rencontrez un problème avec votre serveur YunoHost. Ce n’est pas un guide pour remettre en état votre instance YunoHost mais plutôt une liste de choses à vérifier pour aider à diagnostiquer les problèmes rencontrés. -Ce guide peut trouver son intérêt lors du débuggage d’une nouvelle application ou pour comprendre l’architecture de Yunohost. - -## Notes générales -### Ne cassez pas YunoHost -La meilleure manière de ne pas avoir de pannes est de ne pas bricoler sur votre serveur. Cela signifie que dès que vous souhaitez essayer quelque chose de nouveau (application non officielle, nouvelle configuration personnalisée, création d’une nouvelle application), essayez d'abord cela sur un serveur de test et non de production. Pour faire cela, vous pouvez par exemple utiliser une [virtualbox](/install_on_virtualbox) ou un [droplet DigitalOcean](/install_on_vps) pour 1 centime/heure. - -Vous pouvez aussi lire ceci si vous avez encore envie de bricoler sur votre instance YunoHost en production : https://wiki.debian.org/DontBreakDebian - -### N'installez pas d'applications de mauvaise qualité - -Bien que ce soit tentant d’installer toutes les [applications](/apps), faites attention à leur niveau de qualité car une mauvaise application peut casser votre serveur. Si la qualité d'une application laisse à désirez mais que vous souhaitez tout de même absolument l'installer, essayez de faire ça sur un serveur de test, ou vérifiez au minimum si des problèmes ont été remontés sur le dépôt Github associé ou bien sur le [forum](http://forum.yunohost.org/). - -### Vérifier la documentation officielle -Les réponses à vos questions existent peut être déjà dans [la documentation](/docs). - -### Vérifier l’aide dans les commandes en ligne -Vous pouvez apprendre à utiliser les [commandes YunoHost](/commandline) - -## Mise à jour -Les problèmes ont souvent lieu après une mise à jour. Après une mise à jour, vous pouvez avoir envie de [mettre à jour votre application](/app_update). - - -**Vérifier si un processus utilise une ancienne librairie** -vous avez sûrement l’habitude d’utiliser : -```bash -$ apt update && apt dist-upgrade -``` -La plupart du temps, cela suffit. Mais dans certaines situations, il est possible que certains processus utilisent toujours d’anciennes bibliothèques non mises à jour. -Cela peut entraîner des bugs et, dans certains rares cas, des problèmes de sécurité (ex : lors d’une mise à jour de OpenSSL à cause d’une faille de sécurité, Nginx va continuer à utiliser la version dont il dispose en mémoire). L’utilitaire Checkrestart va vous aider à identifier ces processus et les redémarrer. - -```bash -$ apt install debian-goodies -checkrestart -# Found 0 processes using old versions of upgraded files -``` -Si des processus fonctionnent avec des vieilles versions de bibliothèques, checkrestart va vous le dire et vous proposer une manière de les redémarrer. Il est possible que checkrestart ne trouve pas de manière de les redémarrer. Attention, il faut opérer l’opération manuellement. - - - -La solution la plus simple peut être de redémarrer si vous pouvez - -Vous pouvez aussi utiliser [ce script](https://github.com/octopuce/octopuce-goodies/blob/master/checkrestart/checkrestart.octopuce) pour redémarrer automatiquement ces services si besoin. Plus d’informations [ici](https://www.octopuce.fr/checkrestart-outil-pratique-de-debian-goodies-et-version-octopuce/). - -**Forcer une mise à jour d’une application non officielle** - -/!\ Pensez toujours à vérifier s’il existe un script de mise à jour et lisez-le si vous pouvez/!\ - - -```bash -$ yunohost app upgrade -Warning: You must provide an URL to upgrade your custom app app_name -Error: No app to upgrade - -$ yunohost app upgrade -u https://github.com/user/someapp_ynh app_name -``` - -## Les services -YunoHost utilise toute une série de logiciels pour fonctionner. La plupart de ces logiciels sont déclarés comme des services dans Debian [plus d’info](/whatsyunohost). - -### Vérifier le statut des services -Quand quelque chose ne fonctionne pas, une des premières choses à faire est de vérifier que tous les services utilisés par YunoHost sont lancés. -YunoHost inclus un outil qui permet de visualiser tous les services utilisés par YunoHost : -```bash -yunohost service status -``` -Exemple de résultat : - - - -Tous les services doivent être activés (enabled) et en fonctionnement (running) sauf Glances (optionnel). Si certains ne le sont pas, essayez de les redémarrer. -Voici une petite description de leurs fonctions respectives : - -- **Amavis** : anti-spam/virus/malwares, utilisé lors de l’échange de mails. -- **Avahi-daemon** : système qui facilite la découverte d’ordinateurs sur le réseau local en leur attribuant des noms. -- **DNSmasq** : serveur DNS, vous n’êtes pas obligé de l’utiliser (Non installé par défaut) -- **Dovecot** : serveur IMAP, utilisé pour la réception de mails. -- **Glances** : optionnel, utilisé pour l’administration web pour afficher les statuts du serveur -- **Metronome** : serveur XMPP utilisé par jappix comme client. -- **MySQL** : base de données utilisée par certaines applications -- **Nginx** : serveur web, utilisé par toutes les applications -- **php5-fpm** : serveur PHP, utilisé par toutes applications utilisant PHP -- **Postfix** : serveur SMTP, utilisé pour l’envoi de mails. -- **Postgrey** : serveur de listes grises, si vous utilisez YunoHost pour les mails, vous devriez regarder un peu plus sur cette question. -[En apprendre plus sur les listes grises](http://en.wikipedia.org/wiki/Greylisting) -- **Slapd** : serveur LDAP, utilisé pour l’authentification (SSO and apps) -- [**SSH**](/ssh) : Secure Shell, utilisé pour l’accès distant au serveur. -- [**SSOwat**](https://github.com/Kloadut/SSOwat/) : gestionnaire simple d’authentification. -- **YunoHost-API** : administration web de YunoHost - -Les autres services installés par des applications vont aussi apparaître. Par exemple `seafile-serve` utilisé par l’application Seafile et `uwsgi` qui est utilisé par des applications python comme Searx. -##### démarrer ou arrêter un service identifié avec YunoHost : -```bash -yunohost service start -yunohost service stop -``` -Vous pouvez aussi utiliser la commande Debian : -```bash -systemctl start/stop/restart/reload -``` -Après une tentative de lancement, vérifiez toujours que le service est lancé. - -### Logs -Si un service ne démarre pas, vous devez vérifier les logs pour voir ce qui ne pose problème. Il n’y a pas de règles définies où les services doivent stocker leurs logs. Cependant, ceux-ci se trouvent pour la plupart dans : -```bash -/var/log/ -``` -Voici quelques fichiers de log utiles pour YunoHost : -##### auth.log -Il contient les connexions ou tentatives de connexion à votre serveur. Il inclut aussi toutes les connexion web, ssh et cron job (tâches répétitives). Il stoque enfin toutes les tentatives (on l’espère) de connexion par des potentiels intrus. - -##### fail2ban.log -Quand quelqu’un tente de se connecter à votre serveur et rate plusieurs fois, Fail2ban bannit l’adresse IP afin d’éviter les attaques en bruteforce et/ou en (D)DOS. Vous pouvez donc trouver ici les IP qui auront été bannies. - -##### mail.err, mail.info, mail.log, mail.warn -Ce sont les logs de Postfix pour le serveur de mail. Vous pouvez les consulter si vous rencontrez des problèmes avec les mails. - -##### metronome/metronome.err, metronome/metronome.log -Logs du serveur de chat XMPP - -##### mysql.err, mysql.log, mysql/error.log -Logs de la base de données MySQL. Ils doivent être vides sauf si vous avez des problèmes avec MySQL. - -##### php7.0-fpm.log -Lieu générique d’emplacement des logs pour les applications PHP. - -##### yunohost.log -C’est le fichier de log créé à l’installation de YunoHost. Si vous rencontrez des problèmes à l’installation de YunoHost, vérifier ce fichier. - -Cette liste n’est pas exhaustive. De plus, certaines applications peuvent aussi mettre leurs fichiers de log dans `/var/log`. -Les logs de Slapd sont malheureusement stockés dans`/var/log/syslog`. - -## Utilisation de la RAM -Des problèmes peuvent être causés par un manque de RAM. Pour vérifier votre utilisation de la RAM, entrez la commande suivante : -```bash -free -m -``` - - -5 à 10 % de mémoire libre est acceptable, mais il est bien de disposer d’une marge (en particulier pour les mises à jour). Comme la plupart du temps, vous ne pouvez pas augmenter votre quantité de RAM, vous avez la possibilité d’utiliser une partition de SWAP (mémoire du disque dur attribuée à la RAM). -Gardez à l’esprit que le SWAP est une mémoire 100 000 fois plus lente, vous devriez donc l’utiliser uniquement si vous n’avez pas d’autre choix. - -##### créer un fichier de swap : -Si `free -m` indique que vous n’avez aucune ligne de SWAP, vous pouvez avoir envie d’ajouter un fichier de SWAP. -```bash -sudo install -o root -g root -m 0600 /dev/null /swapfile -dd if=/dev/zero of=/swapfile bs=1k count=512k -mkswap /swapfile -swapon /swapfile -echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab -sudo sysctl -w vm.swappiness=10 -echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf -``` - -Changez 512 avec la quantité de mémoire SWAP que vous voulez. -512 Mio devrait être suffisant pour YunoHost. Après quoi, vérifiez que votre swap est activé avec `free -m`. -[Source avec plus d’explication](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880). - -## Espace disque -Un des autres problèmes communs des serveurs est le manque d’espace disque. -Vous pouvez vérifier que votre disque n’est pas plein avec la commande : -```bash -df -h -``` -Cela va vous montrer l’utilisation du disque. Si une partition système est presque pleine, vous pouvez rencontrer des problèmes. Vous devez alors réaliser les opérations appropriées pour gagner de l’espace libre sur le disque ou étendre la capacité de celui-ci. - - - - - -## Nginx -Nginx joue un grand rôle dans YunoHost puisqu’il fournit toutes les applications web. -YunoHost a une manière particulière de gérer la configuration puisqu’il existe plusieurs domaines et plusieurs applications. - -### Configuration -##### Configuration générale de la structure -```bash -# Configuration principale de Nginx, vous ne devriez pas toucher ce fichier -/etc/nginx/nginx.conf -# Dossier où les configurations de toutes les applications et domaines sont situées - /etc/nginx/conf.d/ -# Configuration de l’administration web -/etc/nginx/conf.d/yunohost_admin.conf -# Configuration par domaine (une par domaine) - /etc/nginx/conf.d/example.com.conf -``` - -##### Configuration des applications -Pour chaque application ou domaine donné, il y a un fichier de configuration Nginx situé dans : -```bash -/etc/nginx/conf.d/example.com.d/nom_de_application.conf -``` -Les fichiers de configuration sont généralement utilisés pour ce genre de modèle - -```bash -location YNH_WWW_PATH { # Chemin pour atteindre votre application dans le navigateur -alias YNH_WWW_ALIAS ; # chemin pour accéder aux sources des fichiers aux fichiers (d’habitude /var/www/app_name) - -# Configuration particulière pour une application selon son langage de programmation et ses options de déploiement. - -# Inclure le logo SSOwat en bas à droite de la fenêtre -include conf.d/yunohost_panel.conf.inc; -} -``` - -### Les logs -Les fichiers de log de Nginx sont situés dans le dossier : - -```bash -/var/log/nginx/ -``` -#### Logs génériques -##### access.log -Le fichier générique d’accès. Vous trouverez ici toutes les tentatives d’accès à l’administration de YunoHost et certaines tentatives d’intrusion. - -##### error.log -Ce fichier devrait être vide avec une configuration correcte de Nginx. Si Nginx ne démarre pas, des informations sur les erreurs devraient se trouver dans ce fichier. - - -#### Pour chaque nom de domaine -##### example.com-access.log -Tous les accès à ce domaine (en prenant en comptes toutes les applications). - -##### example.com-error.log -Toutes les erreurs liées aux applications installées sur ce domaine, il se peut que certaines applications aient tous leurs logs soit dans ce fichier. - - -## SSOwat -[SSowat](https://github.com/Kloadut/SSOwat) -est le logiciel qui connecte le serveur web nginx au serveur LDAP. Son but est d’authentifier les utilisateurs au portail YunoHost pour pouvoir simplement se déplaçer entre les applications. - -### Configuration -Vous pouvez regarder le fichier de configuration SSOwat dans le fichier : - -```bash -/etc/ssowat/conf.json -``` -Celui-ci est généré avec la commande -```bash -sudo yunohost app ssowatconf -``` -Astuce : si vous souhaitez mettre en place des règles personnalisées dans le SSOwat, vous pouvez le faire dans ce fichier : -```bash -/etc/ssowat/conf.json.persistent -``` -### Logs -Il n’y a pas de fichier de log spécifiques pour SSOwat. Ils sont situés dans les fichiers de log de Nginx. Si vous voyez des lignes avec `lua` à l’intérieur, il s’agit probablement de logs de SSOwat. - -## YunoHost -### Configuration -La configuration de Yunohost est située ici -```bash -/etc/yunohost/ -``` -Si vous souhaitez utiliser et conserver un fichier de configuration personnalisé, utiliser ce fichier : -```bash -/etc/yunohost/yunohost.conf -``` -Pour tous les services avec la mention `yes`, YunoHost ne réalisera pas de mise à jour des services spécifiés. -Ne faites ça que si vous savez ce que vous faites. - -Toutes les configurations d’applications sont situées dans : -```bash -/etc/yunohost/apps/app_name/ -``` -Dans chaque paquet (d’application), vous trouverez : - - -* **manifest.json** : manifeste de l’application -* **scripts/** : dossier contenant cinq scripts Shell pour gérer l’application. - * install - * upgrade - * remove - * backup - * restore -* **config/** : dossier de configuration -* **settings.yml** : La configuration de l’application, aussi accessible via : -```bash -sudo yunohost app setting appname settingname -``` - -### Logs -Il n’y a pas de fichier de log créé lorsque vous installez une application. Essayez de conserver les logs. Vous pouvez trouver cependant certains logs peuvent se trouver dans : -```bash -/var/log/yunohost/ -``` - -## Applications -Cette partie concerne plus les créateurs d’applications YunoHost mais permet néanmoins de comprendre le lien entre Nginx et les applications web. - -Premièrement, vous devez savoir [comment créer un paquet pour une nouvelle application](/packaging_apps). - -Quand vous bricolez une application, des erreurs peuvent avoir lieu selon certains niveaux d’importance. Il y a une grande variété d’applications et le déploiement de celles-ci va dépendre du langage de programmation de l’application. -Nous allons voir ici les « cas classiques ». -La configuration des applications n’est pas abordée ici car leurs configurations respectives peuvent énormément varier. - -##### Schéma simplifié -Navigateur web −> Nginx <− (serveur web) <− interpréteur (PHP, Python, Node.js…) <− app - -L’application est exécutée par l’interpréteur, celui-ci peut potentiellement fournir un serveur web. Le runtime ou le serveur web va communiquer avec Nginx et ce dernier servira des pages au navigateur web. - -Le but de cette configuration est d’avoir plusieurs applications sur un seul serveur avec seulement le port https ouvert à l’internet entier. - -### Applications PHP -##### Options de déploiement -PHP fonctionne nativement avec Nginx - -##### La communication avec Nginx -L’interpréteur PHP communique avec Nginx par [PHP-FPM](http://php-fpm.org/) -qui est une implémentation de [FastCGI](http://en.wikipedia.org/wiki/FastCGI) implémentation. - -##### Les logs -```bash -/var/log/php5-fpm.log -``` -**Exemple de paquet YunoHost** : [Owncloud](https://github.com/Kloadut/owncloud_ynh). - -### Applications Python -##### Options de déploiement -Une application python devrait fonctionner avec son propre interpréteur Python et ses propres dépendances. Pour cela, on peut utiliser l’outil `virtualenv`. -D’habitude, un serveur web léger sera utilisé pour fournir l’application derrière Nignx [Uwsgi](https://uwsgi-docs.readthedocs.org/en/latest/) est un bon exemple. - - -##### La communication avec Nginx -Nginx communique de trois manières avec Python : - -- [proxy_pass](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass) -- Websocket -- Native uwsgi : uwsgi_pass : [par exemple](https://github.com/abeudin/searx_ynh/blob/master/conf/nginx.conf#L9-L10) - -##### Logs -Logs spécifiques à l’application et/ou au serveur web, par exemple uwsgi : -```bash -/var/log/uwsgi/ -``` -##### Ressources -[Bonnes ressources en français sur Python et virtualenv](http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/) - -**Exemple de paquet YunoHost en Python** : [Searx](https://github.com/abeudin/searx_ynh) - -### Applications Node.js -##### Options de déploiement -Une application Node.js a son propre serveur web intégré dans l’interpréteur Node. D’habitude, Node va exposer l’application sur un port TCP. - -##### Communication avec Nginx -Le point d’accès http va être réalisé en local vers Nginx via proxy_pass. - -##### Les Logs -Cela va être spécifique aux applications. - -**Exemple de paquet YunoHost en Node.js :** [Etherpad-Lite](https://github.com/abeudin/etherpadlite_ynh). - -**Note** : les processus Node peuvent utiliser **beaucoup** de mémoire comparée aux processus des autres applications. Assurez-vous donc d’en avoir assez. - -### Autres (Go, Java…) -Les webapp peuvent être déployées de nombreuses manières. -Les applications Go ont généralement un serveur web intégré, Java peut être déployé avec Tomcat ou une autre solution équivalente. Il n’est pas possible d’être exhaustif ici mais la plupart du temps, les déploiements vont exposer une adresse en http que vous pourrez passer dans Nginx via proxy_pass. - -##### Note sur Apache -Ne jamais installer le serveur web Apache ou un paquet avec Apache comme dépendance, cela va sûrement casser l’instance YunoHost. - -##### Note sur https -Parfois, le serveur web intégré avec l’application est capable de servir du https lui-même. -C’est une bonne chose de l’utiliser quand vous disposez d’une application sans Nginx devant. Dans le cadre de YunoHost, le fait que Nginx serve du https simplifie la configuration. Donc, quand vous passez par proxy_pass, utilisez http et Nginx le mettra a disposition en https pour le reste de l’internet. From c8e0a5a874421a98463fc8bb910294dd2ccff871 Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 14:52:53 +0200 Subject: [PATCH 069/135] Update with webadmin --- groups_and_permissions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/groups_and_permissions.md b/groups_and_permissions.md index 752b2698..8323681d 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -1,7 +1,7 @@ User groups and permissions =========================== -You can access the group and permissions management interface from the webadmin +You can access the 'group and permissions' management interface from the webadmin by going into the 'Users' section and clicking the corresponding button: ![](./images/button_to_go_to_permission_interface.png) @@ -9,13 +9,13 @@ by going into the 'Users' section and clicking the corresponding button: Managing groups --------------- -The group mechanism can be used to define group of users which then can be used to restrict permissions for applications and other services such as mail or xmpp. Note that it is *not* mandatory to create a group to do so : you can also restrict access to an app or service to just a specific list of user. +The group mechanism can be used to define group of users which then can be used to restrict permissions for applications and other services such as mail or xmpp. Note that it is *not* mandatory to create a group to do so: you can also restrict access to an app or service to just a specific list of users. -Using groups is however useful for semantic, for example if you host multiple group of friends, association or enterprise on your server, you might want to create groups like `association1` and `association2` and add members of each association to the relevant group. +Using groups is however useful for semantic, for example if you host multiple groups of friends, associations or businesses on your server, you might want to create groups like `association1` and `association2` and add members of each association to the relevant group. ### List existing groups -To list the currently existing groups : +The existing groups are listed at the top of the page, To list the currently existing groups in CLI : ```bash $ yunohost user group list From b610552f5369a7375f8b80551931ef1d64bfbde0 Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 15:23:46 +0200 Subject: [PATCH 070/135] update with web interface steps images are to be added afterwards. --- groups_and_permissions.md | 76 +++++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/groups_and_permissions.md b/groups_and_permissions.md index 8323681d..b6b121de 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -1,7 +1,7 @@ User groups and permissions =========================== -You can access the 'group and permissions' management interface from the webadmin +You can access the *groups and permissions* management interface from the webadmin by going into the 'Users' section and clicking the corresponding button: ![](./images/button_to_go_to_permission_interface.png) @@ -9,13 +9,24 @@ by going into the 'Users' section and clicking the corresponding button: Managing groups --------------- -The group mechanism can be used to define group of users which then can be used to restrict permissions for applications and other services such as mail or xmpp. Note that it is *not* mandatory to create a group to do so: you can also restrict access to an app or service to just a specific list of users. +The group mechanism can be used to define groups of users which then can be used to restrict permissions for applications and other services (such as mail or xmpp). Note that it is *not* mandatory to create a group to do so: you can also restrict access to an app or service on a user-per-user basis. Using groups is however useful for semantic, for example if you host multiple groups of friends, associations or businesses on your server, you might want to create groups like `association1` and `association2` and add members of each association to the relevant group. +### Default groups + +By default, two special groups are created: +- `all_users`, that contain all users registered on YunoHost, +- `visitors`, that applies to people viewing the server while not registered on the server. +The content of those groups cannot be changed, only the permissions given to them. + ### List existing groups -The existing groups are listed at the top of the page, To list the currently existing groups in CLI : +The existing groups are listed at the top of the *groups and permissions* page. + +![](./images/groups_default-groups.png) + +To list the currently existing groups in CLI : ```bash $ yunohost user group list @@ -28,17 +39,30 @@ groups: - delphine ``` -By default, a special group called `all_users` exists and contain all users registered on YunoHost. This group can not be edited. ### Creating a new group -To create a new group called `yolo_crew` +To create a new group, simply click on the "New Group" button at the top of the page. You may only choose a name formed with letters (uper- and lowercase) and spaces. The group is created empty and without any permission. + +![](./images/groups_button-new-group.png) + +In CLI, to create a new group called `yolo_crew` ```bash $ yunohost user group create yolo_crew ``` -Let's add Charlie and Delphine to this group: +### Updating a group + +Let's add a first to this group: in the group panel, click the button "add a user" and scroll to the desired user, then click on it. + +![](./images/groups_button-add-user.png) + +To remove a user, click on the cross next to their username, in the group panel. + +![](./images/groups_button-remove-user.png) + +In CLI, use the following command to add `charlie` and `delphine`to the `yolo_crew` group: ```bash $ yunohost user group update yolo_crew --add charlie delphine @@ -65,7 +89,11 @@ groups: ### Deleting groups -To delete the group `yolo_crew`, you may run +To delete a group, click on the red cross on the top right of the group panel. You will be asked for confirmation. + +![](./images/groups_button-delete-group.png) + +To delete the group `yolo_crew` in CLI, you may run ```bash $ yunohost user group delete yolo_crew @@ -74,11 +102,15 @@ $ yunohost user group delete yolo_crew Managing permissions -------------------- -The permission mechanism allow to restrict access to services (for example mail, xmpp, ...) and apps, or even specific part of the apps (for example the administration interface of wordpress). +The permission mechanism allow to restrict access to services (for example mail, xmpp, ...) and apps, or even specific parts of the apps (for example the administration interface of wordpress). ### List permissions -To list permissions and corresponding accesses: +The groups page lists the permissions given to each group, including the special groups `all_users` and `visitors`. + +![](./images/groups_default-with-permissions.png) + +To list permissions and corresponding accesses in CLI: ```bash $ yunohost user permission list @@ -93,19 +125,27 @@ permissions: allowed: all_users ``` -Here, we find that all registered users can use mails, xmpp, and access the wordpress blog. However, nobody can access the wordpress admin interface. +Here, we find that all registered users can use email, xmpp, and access the wordpress blog. However, nobody can access the wordpress admin interface. More details can be displayed by adding the `--full` option which will display the list of users corresponding to groups allowed, as well as urls associated to a permission (relevant for web apps). ### Add accesses to group or users -To allow a group to access the wordpress admin interface: +To add a permission to a group, simply click the "+" button in the group panel, scroll to the desired permission, then click on it. + +![](./images/groups_add-permission-group.png) + +To allow a group to access the wordpress admin interface in CLI: ```bash $ yunohost user permission update wordpress.admin --add yolo_crew ``` -Note that you can also allow a single user: +Note that you can also allow a single user, by using the panels at the bottom of the page. + +![](./images/groups_add-permission-user.png) + +or in CLI: ```bash $ yunohost user permission update wordpress.admin --add alice @@ -123,7 +163,7 @@ $ yunohost user permission list [...] ``` -Note that, for example, if we want to restrict permission for email so that only Bob is allowed to email, we should also remove `all_users` from the permission : +Note that, for example, if we want to restrict permission for email so that only Bob is allowed to email, we should also remove `all_users` from the permission, by deleting it from the `all_users` group panel, or in CLI : ```bash $ yunohost user permission update mail --remove all_users --add bob @@ -134,7 +174,7 @@ Notes for apps packagers Installing an app creates the permission `app.main` with `all_users` allowed by default. -If you wish to make the application publicly available, instead of the old `unprotected_urls` mechanism, you should give access to the special groups `visitors`: +If you wish to make the application publicly available, instead of the old `unprotected_urls` mechanism, you should give access to the special group `visitors`: ```bash ynh_permission_update --permission "main" --add visitors @@ -150,7 +190,7 @@ You don't need to take care of removing permissions or backing up/restoring them ### Migrating away from the legacy permission management -When migrating/fixing an app still using the legacy permission system, it should be understood that the accesses are now to be managed by features from the core, outside the application scripts! +When migrating/fixing an app still using the legacy permission system, it should be understood that the accesses are now to be managed by features from the core, outside of the application scripts! Application scripts are only expected to: - if relevant, during the install script, initialize the main permission of the app as public (`visitors`) or private (`all_users`) or only accessible to specific groups/users ; @@ -207,7 +247,7 @@ fi In this example, if the app is public the group `visitors` has access to the permission `create poll`, the group is removed from this permission otherwise. -Then create two files in the directory `hooks` at the root of the git repository: `post_app_addaccess` and `post_app_removeaccess`. In these hooks, you'll remove or readd the regex protection if the `visitors` group is add or remove from this permission: +Then create two files in the directory `hooks` at the root of the git repository: `post_app_addaccess` and `post_app_removeaccess`. In these hooks, you'll remove or readd the regex protection if the `visitors` group is added or removed from this permission: `post_app_addaccess`: @@ -280,6 +320,6 @@ fi Don't forget to replace `__APP__` during the install/upgrade script. -Here some apps that use this specific case: [Lutim](https://github.com/YunoHost-Apps/lutim_ynh/pull/44/files) and [Opensondage](https://github.com/YunoHost-Apps/opensondage_ynh/pull/59/files) +Here are some apps that use this specific case: [Lutim](https://github.com/YunoHost-Apps/lutim_ynh/pull/44/files) and [Opensondage](https://github.com/YunoHost-Apps/opensondage_ynh/pull/59/files) -If you have any questions, please contact someone from the apps-group. +If you have any question, please contact someone from the apps-group. From 74c8c4e013b1b9babc58650b4468fff65c5f635b Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 15:35:12 +0200 Subject: [PATCH 071/135] Annoted screen caps of Group web panel (FR) --- images/groups_add-permission-group.png | Bin 0 -> 66715 bytes images/groups_add-permission-user.png | Bin 0 -> 87440 bytes images/groups_alerte-permission.png | Bin 0 -> 23887 bytes images/groups_button-add-user.png | Bin 0 -> 30404 bytes images/groups_button-delete-group.png | Bin 0 -> 26366 bytes images/groups_button-new-group.png | Bin 0 -> 79466 bytes images/groups_button-remove-user.png | Bin 0 -> 26349 bytes images/groups_default-groups.png | Bin 0 -> 75243 bytes images/groups_default-with-permissions.png | Bin 0 -> 75668 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/groups_add-permission-group.png create mode 100644 images/groups_add-permission-user.png create mode 100644 images/groups_alerte-permission.png create mode 100644 images/groups_button-add-user.png create mode 100644 images/groups_button-delete-group.png create mode 100644 images/groups_button-new-group.png create mode 100644 images/groups_button-remove-user.png create mode 100644 images/groups_default-groups.png create mode 100644 images/groups_default-with-permissions.png diff --git a/images/groups_add-permission-group.png b/images/groups_add-permission-group.png new file mode 100644 index 0000000000000000000000000000000000000000..bb083791e83728dd648d944200a6693d9b25462c GIT binary patch literal 66715 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 Nz2P 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 literal 0 HcmV?d00001 diff --git a/images/groups_add-permission-user.png b/images/groups_add-permission-user.png new file mode 100644 index 0000000000000000000000000000000000000000..0a62a5418ec8c20410421c296401b3fd4c5909a4 GIT binary patch literal 87440 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
    M=gWal1So52ShR(IE|T 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 DR+xw{ literal 0 HcmV?d00001 diff --git a/images/groups_alerte-permission.png b/images/groups_alerte-permission.png new file mode 100644 index 0000000000000000000000000000000000000000..2b52b6d5974664c595bf14b44b36e09af6890496 GIT binary patch literal 23887 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 z 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 W_h@vOap%v8Ca)DhFH2sS`u_)?$VjOG literal 0 HcmV?d00001 diff --git a/images/groups_button-add-user.png b/images/groups_button-add-user.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4f3897b8ce26efc71febd2a6f22acb24d7f167 GIT binary patch literal 30404 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 a=Fq3X^|eyYD7tAQFC`%_Uiiw;|9=3M_!P|m literal 0 HcmV?d00001 diff --git a/images/groups_button-delete-group.png b/images/groups_button-delete-group.png new file mode 100644 index 0000000000000000000000000000000000000000..41f2e3f8929c8fd29e593aaf7accdf58c53a208c GIT binary patch literal 26366 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π{~H?jSBR-@@!Mq{EJ`LdJ=bTw$r z<*JA4Dh@m(>i#s+>52U-)YbUqN=;Mf*cUApkscnIa`i%Lb$R7VTn@TACG_3s>qd06WYy`($rgf)W5i!_#H%gt7G!@jQa+jZAlWBcEI=k!(v&eV6YZU{3ube3|=m z^><-X%H5kP?&@Y!;0rFQcR$(Yu}MIQ>P;t?oUWR4?=kDKOc}co8aPSZLys|-yd{z1 zsb5u55Se+?Jn7vowL1oq)@jJ8XV<+Xz zoUxV3jLNI6Uw(|p0qFvO@KM`&M}M{WX`6zUCeU|6&@Bk4FF!*TNxzMY5O=dRlJ63) z*ZUY#7`Kd;(7(xlkNUl(m!&ccyOHJ=FaCLU9O@tCfoO0sPm|*#a9YGe3nq^Hb1kuv zi&t-ny^6u(`sJWTg&J~YuqmrWCembdrS<*A?kJK|`cP26^G2a`kqdna*iZN435$#P zZ*!#XNACh6HR={bB(HZq%T+j1ME^r&p3sxoFJ_TYbSJuD&S+8CaDVbKt(1|>L}@vT z5P42`mRKw^sL<7XEMgap{yFw@dvJLhy~3}o`vv|j?w}W`JhcImD7HBp4El_fur_+$ zHy+DeOIU~%dsjwy$I504JKe;Ja1l$u$(MJw+U!0JvwdHI7NlIv=h)9W05_`1ee{{7 zz96T3u`NTds1n1=L`>&<%Vyb?kk8uJ6HQIB7x|S+YP)>kB(m*&zifh8+2VQeMdnwX zIfifQYqOIlyC@84zC2skr)5&K;S=p%&o~WwEDNtjTu}V|H}A|68`Fl6XB&lvThls$ zz0HqOP5XvxMUW&g@p!tugEPge|IxS1evq+u8dA~ajrkY}58CIML1_9;+qEQmMQCm3 zrrOQ@z;>7wzj*#d&7#b=Sk#lPUOs0N8v7*`70cQA`QpKl5Y1SmQjWb4dxLmR=TP-K z4peyc5d8uKX#~ki(~fSu*&R{aMIT;Rbo*K)(A0Z4to9A922o4dM<`;e{{~499k?;d z<-9uD5@-e~lAnh5Ce3d6t!99TCgz z^1a<&+@wEw6v2p*kCBKacGEkk{v=t?WVjAH6>-RzVA@hw-ip5xZRD`HhmU@3=-EDq z_0`PVs7H@40q>*mB}*7 z1QM^wRXSn4E6iP8L&G7b*!2&1AhZQt1-O4Bsac2XS{kb6!9s;&iIuZ=@KH;ml87T8 zNkI&q=15_v>PD_3-1A7A=(zV|ZmF zNU!Opv2&;&N;%Lcw3lsmN5H}DH3xNbbuvL7nE)j2XbUQn29}XkLj05crzKrjP9l*E z<=&|nM_c8ilrOukt=Fnm?=M;w*$m2};+q$m;{(or^6xP7hzfdU#D+X$My=ArstSv{ zcUYba*}6=kT!@v5ORHc^Oa^$wKLBH2J_Eu~|HXrGaR8z_KNgs7${nMo1?H>ffU6o{ zWeJSo;QE(R`tj}UY$Z|6wKmrzc0xDn;r)lH@t2mOlFUggySchfnGC7Z&=U>H{?SHs z_21OGe|Q;?XO9CRY0`;Tzre#9R{=bH@w5@^PFnDn&_U7|0M6HA&Yt?kBX*$K8oT3# zcXZ`Hox;3k2Vy!|Csuy(=+@yuq)}S%O|E06gFp@x1Au3~W1dz?%x9S{Yy81^xE}#Q zBaV?PtqtzN&l3}s^k5pqe^q!s93Y?P8(zIRwR6Gvi*5=482V;CO()}DWdN0G>bB`F z`a}ioRCD|la(ehXz`O-qMPBU`BK`^6F=1!azB#1!X|Mh(^9%5~V}^hQA5sZ-*?;2l zKoj34hIw3=VEf60H?;uc9-F1K3GH-;KW!LyaoZ>UZ*~m3&>h)rg)Xmb{8g;tFpmue z$dIL*J5s(xZ&#Y3ru~kMiuQQ=H$Vk)BW+eT7MF0z{>{Mm3AlX_#Eu8f_$T){qG1h# z5skpbVVA!>qAKK^+PAT5r7#lLe+CD*$tr6-SSPe_oQgU8(|`f~F~z!i3M;e7Ok@4K zlE1%xI=D(*45%)(V&m@5F_^mTFz5H6P^X`#i+Kmjmg?))5yiIj7aiLP=(N@KZscCG GzW+Z~rR3iL literal 0 HcmV?d00001 diff --git a/images/groups_button-new-group.png b/images/groups_button-new-group.png new file mode 100644 index 0000000000000000000000000000000000000000..a50f0981f0ed55eefab214c3432b31cf39048caf GIT binary patch literal 79466 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

    6D!w-aq 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 Lo@$A*b;$n!sX(mL literal 0 HcmV?d00001 diff --git a/images/groups_button-remove-user.png b/images/groups_button-remove-user.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6c8e59eee039819a70e3860aa1c0e9041b3e23 GIT binary patch literal 26349 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 literal 0 HcmV?d00001 diff --git a/images/groups_default-with-permissions.png b/images/groups_default-with-permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..6dafb1ed181108169a4421de4d083ad3dcfc5441 GIT binary patch literal 75668 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

    "Shit, I'm too lazy to reconfigure my mail server… Beudbeud, how were you able to get your little server running with LDAP?"

    -Kload, February 2012
    +

    « Merde, j’ai la flemme de me reconfigurer un serveur mail... Beudbeud, comment t’as fait pour configurer ton joli serveur sous LDAP ? »

    +Kload, février 2012
    -All that was needed was an admin interface for Beudbeud's server to make something usable, so Kload decided to develop one. Finally, after automating several configs and packaging in some web apps, YunoHost v1 was finished. +Il ne manquait en fait qu’une interface d’administration au serveur de Beudbeud pour en faire quelque chose d’exploitable, alors Kload a décidé de la développer. Finalement, après l’automatisation de quelques configurations et le packaging de quelques applications web, la première version de YunoHost était sortie. -Noting the growing enthusiasm around YunoHost and around self-hosting in general, the original developers along with new contributors decided to start work on version 2, a more extensible, more powerful, more easy-to-use, and at that, one that makes a nice cup of fair-trade coffee for the elves of Lapland. +Constatant l’engouement croissant autour de YunoHost et de l’auto-hébergement en général, les développeurs et les nouveaux contributeurs ont alors décidé de prendre le cap d’une version 2, plus accessible, plus extensible, plus puissante, et qui prépare du bon café commerce équitable pour les lutins de Laponie. -The name **YunoHost** comes from the jargon "Y U NO Host". The [Internet meme](https://en.wikipedia.org/wiki/Internet_meme) should illustrate it: +Le nom **YunoHost** vient de l’argot Internet anglais « Y U NO Host » signifiant approximativement « Pourquoi toi ne pas héberger ». Le [mème Internet](http://fr.wikipedia.org/wiki/M%C3%A8me_Internet) qui l’illustre est à peu près celui-ci :
    -What YunoHost is not? ---------------------- +Qu’est-ce que YunoHost n’est pas ? +---------------------------------- -Even if YunoHost can handle multiple domains and multiple users, it is **not meant to be a mutualized system**. +Même si YunoHost est multi-domaine et multi-utilisateur, il reste **inapproprié pour un usage mutualisé**. -First, the software is too young, not tested at scale and thus probably not optimized well enough for hundreds of users at the same time. With that said, we do not want to lead the software in that direction. Virtualization democratizes, and its usage is recommended since it is a more watertight way to achieve mutualization than a "full-stack" system like YunoHost. +Premièrement parce que le logiciel est trop jeune, donc non-testé et non-optimisé pour être mis en production pour des centaines d’utilisateurs en même temps. Et quand bien même, ce n’est pas le chemin que l’on souhaite faire suivre à YunoHost. La virtualisation se démocratise, et c’est une façon bien plus étanche et sécurisée de faire de la mutualisation. -You can host your friends, your family and your company safely and with ease, but you must **trust your users**, and they must trust you above all. If you want to provide YunoHost services for unknown persons anyway, a full VPS per user will be just fine, and we believe a better way to go. +Vous pouvez héberger vos amis, votre famille ou votre entreprise sans problème, mais vous devez **avoir confiance** en vos utilisateurs, et ils doivent de la même façon avoir confiance en vous. Si vous souhaitez tout de même fournir des services YunoHost à des inconnus, **un VPS entier par utilisateur** sera la meilleure solution. -Artworks ---------- +Logo +---- -Black and white YunoHost PNG logo by ToZz (400 × 400 px): +Logo Yunohost noir et blanc réalisé par ToZz (400 × 400 px) : -Click to download. +Cliquer pour télécharger. Licence: CC-BY-SA 4.0 From 61199e6839c37615559713d0fbb74bf4aa70141c Mon Sep 17 00:00:00 2001 From: Yunobot Date: Wed, 8 Apr 2020 11:56:08 +0000 Subject: [PATCH 090/135] Added TellForm and OhMyForm --- apps_wishlist.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apps_wishlist.md b/apps_wishlist.md index 153f5799..1fb5bda1 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -1,3 +1,5 @@ +
    La page demandée n'est pour le moment pas disponible en français. Voici à la place la version en anglais. Si vous souhaitez commencer une traduction de cette page, vous pouvez vous rendre sur [cette page](https://yunohost.org/#/apps_wishlist_fr).
    + # Apps wishlist
    Before to add an app in wishlist please check your app is not already in official or community list: see the apps list
    @@ -16,7 +18,6 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Auth0 SSO Dashboard](https://github.com/auth0-extensions/auth0-sso-dashboard-extension) - [Bitmessage](https://bitmessage.org/wiki/Compiling_instructions) / [github](https://github.com/Bitmessage/PyBitmessage) - [Beehive](https://github.com/muesli/beehive) -- [BigBlueButton](https://bigbluebutton.org) / [install instruction](http://docs.bigbluebutton.org/2.2/install.html) / [github](https://github.com/bigbluebutton/bigbluebutton) Complete open source web conferencing system. - [Bludit](https://www.bludit.com) / [github](https://github.com/bludit/bludit) - [Blynk](https://github.com/blynkkk/blynk-library) - [Bookstack](https://www.bookstackapp.com/) / [github](https://github.com/BookStackApp/BookStack) @@ -92,8 +93,8 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Netrunner](https://github.com/mtgred/netrunner) - [Nibbleblog](http://www.nibbleblog.com)/ [github](https://github.com/dignajar/nibbleblog) - [Nuage](https://nuage.kerjean.me/login) / [github](https://github.com/mickael-kerjean/filestash) +- [OhMyForm](https://github.com/ohmyform) (Only support Docker install way and some VPS aren't compatible, see TellForm which support non-Docker install but is discontinued) - [Ombi](https://github.com/tidusjar/Ombi) -- [Omeka S](https://omeka.org/s/) / [github](https://github.com/omeka/omeka-s) - [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar) - [OpenCart](https://www.opencart.com) / [github](https://github.com/opencart/opencart) - [openHAB](https://www.openhab.org/) - Smart home platform. / [github](https://github.com/openhab) @@ -134,13 +135,12 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Syspass](http://www.syspass.org/) / [github](https://github.com/nuxsmin/sysPass) - [Taiga](https://taiga.io) / [github](https://github.com/taigaio/) - [Taskwarrior](https://taskwarrior.org) / [github](https://github.com/GothenburgBitFactory/taskwarrior) -- [Technitium DNS](https://technitium.com/dns/) / [github](https://github.com/TechnitiumSoftware/DnsServer) +- [TellForm](https://github.com/tellform/tellform) (Discontinued (see OhMyForm) but it can be great to have it since OhMyForm does only support Docker install) - [TMate](https://tmate.io/) / [github](https://github.com/tmate-io/tmate) - [Tracim](https://github.com/tracim/tracim) - [Thredded](https://thredded.org/) / [github](https://github.com/thredded/thredded) - [Twister](http://twister.net.co) / [github](https://github.com/miguelfreitas/twister-core/) - [TwitRSS.me](http://twitrss.me/) / [Github](https://github.com/ciderpunx/twitrssme) Scrapes Twitter to create RSS feeds. -- [Uwazi](https://www.uwazi.io/) / [Github](https://github.com/huridocs/uwazi) - [Volumio](https://volumio.org) / [github](https://github.com/volumio) - [WebODF](http://webodf.org) / [github](https://github.com/webodf/WebODF) - [Webhook.site](https://docs.webhook.site/) / [github](https://github.com/fredsted/webhook.site) @@ -153,4 +153,3 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Zoneminder](https://github.com/ZoneMinder/zoneminder) - [Zulip](https://zulipchat.com/) / [github](https://github.com/zulip/zulip) - [Yggdrasil](https://yggdrasil-network.github.io/) / [github](https://github.com/yggdrasil-network/yggdrasil-go) -- [WiseMapping](http://www.wisemapping.com/inyourserver.html) / [developpement](https://bitbucket.org/wisemapping/wisemapping-open-source) From b9989a1ed0a5e5628dcc80141e25abfc2178fef0 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Wed, 8 Apr 2020 11:56:22 +0000 Subject: [PATCH 091/135] Correction de coquilles dans le texte --- dns_subdomains.md | 49 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/dns_subdomains.md b/dns_subdomains.md index 8f0b5a35..132ffe18 100644 --- a/dns_subdomains.md +++ b/dns_subdomains.md @@ -1,39 +1,38 @@ -## DNS and subdomains for the applications +## DNS et sous-domaines pour les applications -### Subdomains +### Sous-domaines -YunoHost allows the use of subdomains. If one owns a domain name `mydomain.com`, one first needs to create the subdomains in the DNS configuration (with one's registrar like Gandi). +YunoHost permet l’usage de sous-domaine. Il faut avoir un nom de domaine par exemple mon `domaine.fr` et créer au niveau de la configuration DNS (chez Gandi par exemple) des sous domaines. -### Configuration example with Gandi +### Configuration chez Gandi -The DNS configuration needs an A record with an IPv4 address, an AAAA record with an IPv6 address, and various CNAME records, one for each desired subdomain. - -If your DNS configuration looks like: +Dans la configuration de son DNS, on aura donc une entrée A avec l’adresse IPv4, une entrée AAAA avec l’adresse IPv6 et ensuite différents CNAME pour les sous-domaines que l’on souhaite créer. +Nom Type Valeur ```bash -@ A XYZ.XYZ.XYZ.XYZ -@ AAAA 1234:1234:1234:FFAA:FFAA:FFAA:FFAA:AAFF -* CNAME mydomain.com. -agenda CNAME mydomain.com. -blog CNAME mydomain.com. -rss CNAME mydomain.com. +@ A XYZ.XYZ.XYZ.XYZ +@ AAAA 1234:1234:1234:FFAA:FFAA:FFAA:FFAA:AAFF +* CNAME mondomaine.fr. +agenda CNAME mondomaine.fr. +blog CNAME mondomaine.fr. +rss CNAME mondomaine.fr. ``` -then you can access `agenda.mydomain.com`, `blog.mydomain.com` and `rss.mydomain.com` subdomains. +permet d’avoir un `agenda.mondomaine.fr`, un `blog.mondomaine.fr` etc… -### Install an application on a subdomain +### Installer une application sur un sous-domaine -To install an application on a subdomain in YunoHost, for example `blog.mydomain.com`, the configuration is done in the administration panel. One first add the subdomain to the available domains list. The creation of a subdomain in Yunohost will create the corresponding configuration files for Nginx (the web server used in YunoHost). +Pour installer une application sur un sous-domaine, par exemple `blog.mondomaine.fr`, dans YunoHost, tout se fait via la partie administration. On ajoute tout d’abord le sous-domaine à la liste des domaines disponibles. La création d’un sous-domaine dans YunoHost créera les fichiers de configuration correspondants pour Nginx (le serveur web de YunoHost). -Then, in the applications>install panel, one follows the classic installation process by choosing the desired subdomain as domain (for example `blog.mydomain.com`). One needs to choose the path `/` (in place of `/wordpress` for example). A warning message will appear telling that it won't be possible to install other application to this subdomain. After validation, the installation starts. +Puis dans la partie installation d’une application, on installe l’application de façon traditionnelle en choisissant ce sous-domaine comme domaine (par exemple `blog.mondomaine.fr`) et en indiquant comme chemin `/` (et non `/wordpress` qui est le chemin par défaut). On a alors un message d’avertissement indiquant qu’on ne pourra plus installer d’applications sur ce sous-domaine. On valide. Ça s’installe. -The application is then available at `blog.mydomain.com` (and not `mydomain.com/wordpress`). +L’application est alors accessible via `blog.mondomaine.fr` (et non via `mondomaine.fr/wordpress`). -### Moving an application to a subdomain +### Déplacer une application sur un sous-domaine ? -What happens if the application is already installed? For example, one wants to move `mydomain.com/wordpress` to `blog.mydomain.com`. -It depends on the application. -Some applications allow the change of domain. In that case, one can proceed to the change through the administration panel Applications>the_app>change URL. -If the application doesn't allow URL change, then there is no easy way to do it. The best solution is to reinstall the application. +Que se passe-t-il si on a déjà installé l’application ? On veut par exemple passer de `mondomaine.fr/wordpress` à `blog.mondomaine.fr`. +Pour l’instant il n’y a pas de façon simple (via l’interface graphique de l’administration de YunoHost) pour déplacer une application sur un sous-domaine. -### Reinstalling an application +Solution : réinstaller l’application -First, save the application data through the backup process. Then uninstall the application with the administration panel. Then reinstall the application to the desired domain. Finally, restore the backup. +### Réinstallation de l’application + +On sauvegarde ses données (base de données etc. via un script SQL par exemple, les fichiers etc.). On désinstalle l’application via l’interface graphique d’administration de YunoHost. Et on la réinstalle en suivant la procédure ci-dessus. From e32fe50219ee6256ac58d327ccbf10bd5fdd824c Mon Sep 17 00:00:00 2001 From: Yunobot Date: Wed, 8 Apr 2020 11:56:31 +0000 Subject: [PATCH 092/135] =?UTF-8?q?mal=20kurz=20was=20=C3=BCbersetzt=20;)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hardware.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hardware.md b/hardware.md index 3b4132d8..effdc0e1 100644 --- a/hardware.md +++ b/hardware.md @@ -1,14 +1,14 @@ # Hardware -YunoHost can be installed on the following hardware : -- ARM boards (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ; -- 'Old' desktop computers or laptops ; -- Remote servers, a.k.a Virtual Private Servers (VPS). +YunoHost kann auf folgender Hardware installiert werden: +- ARM Boards (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ; +- 'Alte' Desktop Computer oder Laptops/Notebooks ; +- Remote servers, auch bekannt als Virtual Private Servers (VPS). -Corresponding installation guides can be found on [this page](/install). +Entsprechende Installationsanleitungen finden Sie auf [dieser Seite](/install). -### Minimum requirements +### Minimale Voraussetzungen * 500 MHz CPU -* 512 MB RAM (recommended : 1 GB in order to run all the services and apps properly) -* 8 GB storage capacity (recommended : 32 GB to store mails and documents) +* 512 MB RAM (empfohlen : 1 GB um alle Apps und Programme schnell ausführen zu können) +* 8 GB Speicher/HDD (empfohlen : 32 GB bei Nutzung als Mail oder Dokumentenserver) From 679d4a168c3a13ef040c3f03dfe4746dc81bb665 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 8 Apr 2020 14:00:28 +0200 Subject: [PATCH 093/135] Fix wrong page name from simone :s --- whatsyunohost.md | 66 ++++++++++++++++++++++----------------------- whatsyunohost_fr.md | 2 +- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/whatsyunohost.md b/whatsyunohost.md index 320aba9c..6ed0efd3 100644 --- a/whatsyunohost.md +++ b/whatsyunohost.md @@ -1,58 +1,58 @@ -Qu'est-ce que YunoHost ? -======================== +What is YunoHost? +================= -YunoHost est un **système d’exploitation** qui vise à simplifier autant que possible l'administration d'un **serveur** pour ainsi démocratiser [l’auto-hébergement](/selfhosting) tout en restant fiable, sécurisé, éthique et léger. C'est un projet de logiciel libre maintenu exclusivement par des bénévoles. Techniquement, il peut être vu comme une distribution basée sur [Debian GNU/Linux](https://debian.org) et peut s'installer sur [de nombreux types de matériel](/install). +YunoHost is an **operating system** aiming for the simplest administration of a **server**, and therefore democratize [self-hosting](selfhosting), while making sure it stays reliable, secure, ethical and lightweight. It is a copylefted libre software project maintained exclusively by volunteers. Technically, it can be seen as a distribution based on [Debian GNU/Linux](https://debian.org) and can be installed on [many kinds of hardware](install). -Fonctionnalités ---------------- +Features +-------- -- basé sur Debian ; -- administration via une **interface web simple et claire** ; -- déployez des **applications en quelques clics** ; -- ajoutez des **utilisateurs** (gérés via un annuaire LDAP) ; -- gérez des **noms de domaine** ; -- créez et restaurez des **sauvegardes** ; -- connexion simultanée à toutes les apps via un **portail utilisateur** (nginx, SSOwat) ; -- fourni avec un **serveur mail complet** (Postfix, Dovecot, Rspamd, DKIM) ; -- ... ainsi qu'un **serveur de messagerie instantanée** (XMPP) ; -- gères les **certificats SSL** (basé sur Let's Encrypt) ; -- ... et des **systèmes de sécurité** (fail2ban, yunohost-firewall) ; +- Based on Debian ; +- Administrate your server through a **friendly web interface** ; +- Deploy **apps in just a few clicks** ; +- Manage **users** (based on LDAP); +- Manage **domain names** ; +- Create and restore **backups** ; +- Connect to all apps simultaneously through the **user portal** (NGINX, SSOwat) ; +- Includes a **full e-mail stack** (Postfix, Dovecot, Rspamd, DKIM) ; +- … as well as **an instant messaging server** (XMPP) ; +- Manages **SSL certificates** (based on Let's Encrypt) ; +- … and **security systems** (fail2ban, yunohost-firewall) ; -Origine -------- +Origin +------ -YunoHost est un projet né en février 2012 à la suite d’à peu près ça : +YunoHost was created in February 2012 after something like this: -

    « Merde, j’ai la flemme de me reconfigurer un serveur mail... Beudbeud, comment t’as fait pour configurer ton joli serveur sous LDAP ? »

    -Kload, février 2012
    +

    "Shit, I'm too lazy to reconfigure my mail server… Beudbeud, how were you able to get your little server running with LDAP?"

    +Kload, February 2012
    -Il ne manquait en fait qu’une interface d’administration au serveur de Beudbeud pour en faire quelque chose d’exploitable, alors Kload a décidé de la développer. Finalement, après l’automatisation de quelques configurations et le packaging de quelques applications web, la première version de YunoHost était sortie. +All that was needed was an admin interface for Beudbeud's server to make something usable, so Kload decided to develop one. Finally, after automating several configs and packaging in some web apps, YunoHost v1 was finished. -Constatant l’engouement croissant autour de YunoHost et de l’auto-hébergement en général, les développeurs et les nouveaux contributeurs ont alors décidé de prendre le cap d’une version 2, plus accessible, plus extensible, plus puissante, et qui prépare du bon café commerce équitable pour les lutins de Laponie. +Noting the growing enthusiasm around YunoHost and around self-hosting in general, the original developers along with new contributors decided to start work on version 2, a more extensible, more powerful, more easy-to-use, and at that, one that makes a nice cup of fair-trade coffee for the elves of Lapland. -Le nom **YunoHost** vient de l’argot Internet anglais « Y U NO Host » signifiant approximativement « Pourquoi toi ne pas héberger ». Le [mème Internet](http://fr.wikipedia.org/wiki/M%C3%A8me_Internet) qui l’illustre est à peu près celui-ci : +The name **YunoHost** comes from the jargon "Y U NO Host". The [Internet meme](https://en.wikipedia.org/wiki/Internet_meme) should illustrate it:
    -Qu’est-ce que YunoHost n’est pas ? ----------------------------------- +What YunoHost is not? +--------------------- -Même si YunoHost est multi-domaine et multi-utilisateur, il reste **inapproprié pour un usage mutualisé**. +Even if YunoHost can handle multiple domains and multiple users, it is **not meant to be a mutualized system**. -Premièrement parce que le logiciel est trop jeune, donc non-testé et non-optimisé pour être mis en production pour des centaines d’utilisateurs en même temps. Et quand bien même, ce n’est pas le chemin que l’on souhaite faire suivre à YunoHost. La virtualisation se démocratise, et c’est une façon bien plus étanche et sécurisée de faire de la mutualisation. +First, the software is too young, not tested at scale and thus probably not optimized well enough for hundreds of users at the same time. With that said, we do not want to lead the software in that direction. Virtualization democratizes, and its usage is recommended since it is a more watertight way to achieve mutualization than a "full-stack" system like YunoHost. -Vous pouvez héberger vos amis, votre famille ou votre entreprise sans problème, mais vous devez **avoir confiance** en vos utilisateurs, et ils doivent de la même façon avoir confiance en vous. Si vous souhaitez tout de même fournir des services YunoHost à des inconnus, **un VPS entier par utilisateur** sera la meilleure solution. +You can host your friends, your family and your company safely and with ease, but you must **trust your users**, and they must trust you above all. If you want to provide YunoHost services for unknown persons anyway, a full VPS per user will be just fine, and we believe a better way to go. -Logo ----- +Artworks +--------- -Logo Yunohost noir et blanc réalisé par ToZz (400 × 400 px) : +Black and white YunoHost PNG logo by ToZz (400 × 400 px): -Cliquer pour télécharger. +Click to download. Licence: CC-BY-SA 4.0 diff --git a/whatsyunohost_fr.md b/whatsyunohost_fr.md index 48b6550a..320aba9c 100644 --- a/whatsyunohost_fr.md +++ b/whatsyunohost_fr.md @@ -3,7 +3,7 @@ Qu'est-ce que YunoHost ? -YunoHost est un **système d’exploitation** qui vise à simplifier autant que possible l'administration d'un **serveur** pour ainsi démocratiser [l’auto-hébergement](/selfhosting) tout en restant fiable, sécurisé, éthique et léger. C'est un projet de logiciel libre maintenu exclusivement par des bénévoles. Techniquement, il peut être vu comme une distribution basé sur [Debian GNU/Linux](https://debian.org) et peut s'installer sur [de nombreux types de matériel](/install). +YunoHost est un **système d’exploitation** qui vise à simplifier autant que possible l'administration d'un **serveur** pour ainsi démocratiser [l’auto-hébergement](/selfhosting) tout en restant fiable, sécurisé, éthique et léger. C'est un projet de logiciel libre maintenu exclusivement par des bénévoles. Techniquement, il peut être vu comme une distribution basée sur [Debian GNU/Linux](https://debian.org) et peut s'installer sur [de nombreux types de matériel](/install). Fonctionnalités --------------- From 199422f92328a7c6501a8e79dd6cf7bcb78f3cce Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 8 Apr 2020 14:05:10 +0200 Subject: [PATCH 094/135] Fix simone diff --- apps_wishlist.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps_wishlist.md b/apps_wishlist.md index 1fb5bda1..ccafc1b6 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -1,5 +1,3 @@ -
    La page demandée n'est pour le moment pas disponible en français. Voici à la place la version en anglais. Si vous souhaitez commencer une traduction de cette page, vous pouvez vous rendre sur [cette page](https://yunohost.org/#/apps_wishlist_fr).
    - # Apps wishlist
    Before to add an app in wishlist please check your app is not already in official or community list: see the apps list
    @@ -18,6 +16,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Auth0 SSO Dashboard](https://github.com/auth0-extensions/auth0-sso-dashboard-extension) - [Bitmessage](https://bitmessage.org/wiki/Compiling_instructions) / [github](https://github.com/Bitmessage/PyBitmessage) - [Beehive](https://github.com/muesli/beehive) +- [BigBlueButton](https://bigbluebutton.org) / [install instruction](http://docs.bigbluebutton.org/2.2/install.html) / [github](https://github.com/bigbluebutton/bigbluebutton) Complete open source web conferencing system. - [Bludit](https://www.bludit.com) / [github](https://github.com/bludit/bludit) - [Blynk](https://github.com/blynkkk/blynk-library) - [Bookstack](https://www.bookstackapp.com/) / [github](https://github.com/BookStackApp/BookStack) @@ -95,6 +94,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Nuage](https://nuage.kerjean.me/login) / [github](https://github.com/mickael-kerjean/filestash) - [OhMyForm](https://github.com/ohmyform) (Only support Docker install way and some VPS aren't compatible, see TellForm which support non-Docker install but is discontinued) - [Ombi](https://github.com/tidusjar/Ombi) +- [Omeka S](https://omeka.org/s/) / [github](https://github.com/omeka/omeka-s) - [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar) - [OpenCart](https://www.opencart.com) / [github](https://github.com/opencart/opencart) - [openHAB](https://www.openhab.org/) - Smart home platform. / [github](https://github.com/openhab) @@ -135,12 +135,14 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Syspass](http://www.syspass.org/) / [github](https://github.com/nuxsmin/sysPass) - [Taiga](https://taiga.io) / [github](https://github.com/taigaio/) - [Taskwarrior](https://taskwarrior.org) / [github](https://github.com/GothenburgBitFactory/taskwarrior) +- [Technitium DNS](https://technitium.com/dns/) / [github](https://github.com/TechnitiumSoftware/DnsServer) - [TellForm](https://github.com/tellform/tellform) (Discontinued (see OhMyForm) but it can be great to have it since OhMyForm does only support Docker install) - [TMate](https://tmate.io/) / [github](https://github.com/tmate-io/tmate) - [Tracim](https://github.com/tracim/tracim) - [Thredded](https://thredded.org/) / [github](https://github.com/thredded/thredded) - [Twister](http://twister.net.co) / [github](https://github.com/miguelfreitas/twister-core/) - [TwitRSS.me](http://twitrss.me/) / [Github](https://github.com/ciderpunx/twitrssme) Scrapes Twitter to create RSS feeds. +- [Uwazi](https://www.uwazi.io/) / [Github](https://github.com/huridocs/uwazi) - [Volumio](https://volumio.org) / [github](https://github.com/volumio) - [WebODF](http://webodf.org) / [github](https://github.com/webodf/WebODF) - [Webhook.site](https://docs.webhook.site/) / [github](https://github.com/fredsted/webhook.site) @@ -153,3 +155,4 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Zoneminder](https://github.com/ZoneMinder/zoneminder) - [Zulip](https://zulipchat.com/) / [github](https://github.com/zulip/zulip) - [Yggdrasil](https://yggdrasil-network.github.io/) / [github](https://github.com/yggdrasil-network/yggdrasil-go) +- [WiseMapping](http://www.wisemapping.com/inyourserver.html) / [developpement](https://bitbucket.org/wisemapping/wisemapping-open-source) From d311bddf545f7ffd5249aeab4116ea8f7c130f71 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 8 Apr 2020 14:06:59 +0200 Subject: [PATCH 095/135] Fix simone diff :| --- dns_subdomains.md | 49 ++++++++++++++++++++++---------------------- dns_subdomains_fr.md | 10 ++++----- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/dns_subdomains.md b/dns_subdomains.md index 132ffe18..8f0b5a35 100644 --- a/dns_subdomains.md +++ b/dns_subdomains.md @@ -1,38 +1,39 @@ -## DNS et sous-domaines pour les applications +## DNS and subdomains for the applications -### Sous-domaines +### Subdomains -YunoHost permet l’usage de sous-domaine. Il faut avoir un nom de domaine par exemple mon `domaine.fr` et créer au niveau de la configuration DNS (chez Gandi par exemple) des sous domaines. +YunoHost allows the use of subdomains. If one owns a domain name `mydomain.com`, one first needs to create the subdomains in the DNS configuration (with one's registrar like Gandi). -### Configuration chez Gandi +### Configuration example with Gandi -Dans la configuration de son DNS, on aura donc une entrée A avec l’adresse IPv4, une entrée AAAA avec l’adresse IPv6 et ensuite différents CNAME pour les sous-domaines que l’on souhaite créer. -Nom Type Valeur +The DNS configuration needs an A record with an IPv4 address, an AAAA record with an IPv6 address, and various CNAME records, one for each desired subdomain. + +If your DNS configuration looks like: ```bash -@ A XYZ.XYZ.XYZ.XYZ -@ AAAA 1234:1234:1234:FFAA:FFAA:FFAA:FFAA:AAFF -* CNAME mondomaine.fr. -agenda CNAME mondomaine.fr. -blog CNAME mondomaine.fr. -rss CNAME mondomaine.fr. +@ A XYZ.XYZ.XYZ.XYZ +@ AAAA 1234:1234:1234:FFAA:FFAA:FFAA:FFAA:AAFF +* CNAME mydomain.com. +agenda CNAME mydomain.com. +blog CNAME mydomain.com. +rss CNAME mydomain.com. ``` -permet d’avoir un `agenda.mondomaine.fr`, un `blog.mondomaine.fr` etc… +then you can access `agenda.mydomain.com`, `blog.mydomain.com` and `rss.mydomain.com` subdomains. -### Installer une application sur un sous-domaine +### Install an application on a subdomain -Pour installer une application sur un sous-domaine, par exemple `blog.mondomaine.fr`, dans YunoHost, tout se fait via la partie administration. On ajoute tout d’abord le sous-domaine à la liste des domaines disponibles. La création d’un sous-domaine dans YunoHost créera les fichiers de configuration correspondants pour Nginx (le serveur web de YunoHost). +To install an application on a subdomain in YunoHost, for example `blog.mydomain.com`, the configuration is done in the administration panel. One first add the subdomain to the available domains list. The creation of a subdomain in Yunohost will create the corresponding configuration files for Nginx (the web server used in YunoHost). -Puis dans la partie installation d’une application, on installe l’application de façon traditionnelle en choisissant ce sous-domaine comme domaine (par exemple `blog.mondomaine.fr`) et en indiquant comme chemin `/` (et non `/wordpress` qui est le chemin par défaut). On a alors un message d’avertissement indiquant qu’on ne pourra plus installer d’applications sur ce sous-domaine. On valide. Ça s’installe. +Then, in the applications>install panel, one follows the classic installation process by choosing the desired subdomain as domain (for example `blog.mydomain.com`). One needs to choose the path `/` (in place of `/wordpress` for example). A warning message will appear telling that it won't be possible to install other application to this subdomain. After validation, the installation starts. -L’application est alors accessible via `blog.mondomaine.fr` (et non via `mondomaine.fr/wordpress`). +The application is then available at `blog.mydomain.com` (and not `mydomain.com/wordpress`). -### Déplacer une application sur un sous-domaine ? +### Moving an application to a subdomain -Que se passe-t-il si on a déjà installé l’application ? On veut par exemple passer de `mondomaine.fr/wordpress` à `blog.mondomaine.fr`. -Pour l’instant il n’y a pas de façon simple (via l’interface graphique de l’administration de YunoHost) pour déplacer une application sur un sous-domaine. +What happens if the application is already installed? For example, one wants to move `mydomain.com/wordpress` to `blog.mydomain.com`. +It depends on the application. +Some applications allow the change of domain. In that case, one can proceed to the change through the administration panel Applications>the_app>change URL. +If the application doesn't allow URL change, then there is no easy way to do it. The best solution is to reinstall the application. -Solution : réinstaller l’application +### Reinstalling an application -### Réinstallation de l’application - -On sauvegarde ses données (base de données etc. via un script SQL par exemple, les fichiers etc.). On désinstalle l’application via l’interface graphique d’administration de YunoHost. Et on la réinstalle en suivant la procédure ci-dessus. +First, save the application data through the backup process. Then uninstall the application with the administration panel. Then reinstall the application to the desired domain. Finally, restore the backup. diff --git a/dns_subdomains_fr.md b/dns_subdomains_fr.md index d2356ea4..132ffe18 100644 --- a/dns_subdomains_fr.md +++ b/dns_subdomains_fr.md @@ -6,7 +6,7 @@ YunoHost permet l’usage de sous-domaine. Il faut avoir un nom de domaine par e ### Configuration chez Gandi -Dans la configuration de son DNS, on aura donc une entrée A avec l’adresse IPv4, une entrée AAAA avec l’adresse IPv6 et ensuite différents CNAME pour le sous-domaines que l’on souhaite créer. +Dans la configuration de son DNS, on aura donc une entrée A avec l’adresse IPv4, une entrée AAAA avec l’adresse IPv6 et ensuite différents CNAME pour les sous-domaines que l’on souhaite créer. Nom Type Valeur ```bash @ A XYZ.XYZ.XYZ.XYZ @@ -20,19 +20,19 @@ permet d’avoir un `agenda.mondomaine.fr`, un `blog.mondomaine.fr` etc… ### Installer une application sur un sous-domaine -Pour installer une application sur un sous-domaine, par exemple `blog.mondomaine.fr`, dans YunoHost, tout ce fait via la partie administration. On ajoute tout d’abord le sous-domaine à la liste des domaines disponibles. La création d’un sous-domaine dans YunoHost créera les fichiers de configuration correspondant pour Nginx (le serveur web de YunoHost). +Pour installer une application sur un sous-domaine, par exemple `blog.mondomaine.fr`, dans YunoHost, tout se fait via la partie administration. On ajoute tout d’abord le sous-domaine à la liste des domaines disponibles. La création d’un sous-domaine dans YunoHost créera les fichiers de configuration correspondants pour Nginx (le serveur web de YunoHost). -Puis dans la partie installation d’une application, on installe l’application de façon traditionnelle en en choisissant ce sous-domaine comme domaine (par exemple `blog.mondomaine.fr`) et en indiquant comme chemin `/` (et non `/wordpress` qui est le chemin par défaut). On a alors un message d’avertissement indiquant qu’on ne pourra plus installer d’applications sur ce sous-domaine. On valide. Ça s’installe. +Puis dans la partie installation d’une application, on installe l’application de façon traditionnelle en choisissant ce sous-domaine comme domaine (par exemple `blog.mondomaine.fr`) et en indiquant comme chemin `/` (et non `/wordpress` qui est le chemin par défaut). On a alors un message d’avertissement indiquant qu’on ne pourra plus installer d’applications sur ce sous-domaine. On valide. Ça s’installe. L’application est alors accessible via `blog.mondomaine.fr` (et non via `mondomaine.fr/wordpress`). ### Déplacer une application sur un sous-domaine ? -Que ce passe-t-il si on a déjà installé l’application ? On veut par exemple passer de `mondomaine.fr/wordpress` à `blog.mondomaine.fr`. +Que se passe-t-il si on a déjà installé l’application ? On veut par exemple passer de `mondomaine.fr/wordpress` à `blog.mondomaine.fr`. Pour l’instant il n’y a pas de façon simple (via l’interface graphique de l’administration de YunoHost) pour déplacer une application sur un sous-domaine. Solution : réinstaller l’application ### Réinstallation de l’application -On sauvegarde ses données (base de données etc. via un script sql par exemple, les fichiers etc.). On désinstalle l’application via l’interface graphique d’administration de YunoHost. Et on la réinstalle en suivant la procédure ci-dessus. +On sauvegarde ses données (base de données etc. via un script SQL par exemple, les fichiers etc.). On désinstalle l’application via l’interface graphique d’administration de YunoHost. Et on la réinstalle en suivant la procédure ci-dessus. From 72b16a7aa39cc48d491de6d7e7fc587055ea4104 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 8 Apr 2020 14:10:20 +0200 Subject: [PATCH 096/135] Fix simone diff :| --- hardware.md | 16 ++++++++-------- hardware_de.md | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 hardware_de.md diff --git a/hardware.md b/hardware.md index effdc0e1..3b4132d8 100644 --- a/hardware.md +++ b/hardware.md @@ -1,14 +1,14 @@ # Hardware -YunoHost kann auf folgender Hardware installiert werden: -- ARM Boards (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ; -- 'Alte' Desktop Computer oder Laptops/Notebooks ; -- Remote servers, auch bekannt als Virtual Private Servers (VPS). +YunoHost can be installed on the following hardware : +- ARM boards (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ; +- 'Old' desktop computers or laptops ; +- Remote servers, a.k.a Virtual Private Servers (VPS). -Entsprechende Installationsanleitungen finden Sie auf [dieser Seite](/install). +Corresponding installation guides can be found on [this page](/install). -### Minimale Voraussetzungen +### Minimum requirements * 500 MHz CPU -* 512 MB RAM (empfohlen : 1 GB um alle Apps und Programme schnell ausführen zu können) -* 8 GB Speicher/HDD (empfohlen : 32 GB bei Nutzung als Mail oder Dokumentenserver) +* 512 MB RAM (recommended : 1 GB in order to run all the services and apps properly) +* 8 GB storage capacity (recommended : 32 GB to store mails and documents) diff --git a/hardware_de.md b/hardware_de.md new file mode 100644 index 00000000..effdc0e1 --- /dev/null +++ b/hardware_de.md @@ -0,0 +1,14 @@ +# Hardware + +YunoHost kann auf folgender Hardware installiert werden: +- ARM Boards (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ; +- 'Alte' Desktop Computer oder Laptops/Notebooks ; +- Remote servers, auch bekannt als Virtual Private Servers (VPS). + +Entsprechende Installationsanleitungen finden Sie auf [dieser Seite](/install). + +### Minimale Voraussetzungen + +* 500 MHz CPU +* 512 MB RAM (empfohlen : 1 GB um alle Apps und Programme schnell ausführen zu können) +* 8 GB Speicher/HDD (empfohlen : 32 GB bei Nutzung als Mail oder Dokumentenserver) From 94d1f40030c26d0c0a5d6629d578afcdd413b939 Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Wed, 8 Apr 2020 14:12:03 +0200 Subject: [PATCH 097/135] [Anonymous contrib] Add missing letter (#1243) * Add missing letter * Fix simone diff :| Co-authored-by: Yunobot Co-authored-by: Alexandre Aubin --- dev_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev_fr.md b/dev_fr.md index 49a3f883..50fd7ce5 100644 --- a/dev_fr.md +++ b/dev_fr.md @@ -63,7 +63,7 @@ C'est une dépendance *optionnelle* de YunoHost et correspond à une interface p Il contient essentiellement : - [des templates pour les vues](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/views) - les [contrôleurs javascript](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/js/yunohost/controllers) correspondants, qui interagissent avec l'API Yunohost -- et es [chaînes internationalisées](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/locales) +- et ses [chaînes internationalisées](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/locales) ### Travailler sur le cœur Python / ligne de commande From f0429d907ab314613b747263e9979511163d4108 Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Wed, 8 Apr 2020 16:10:29 +0200 Subject: [PATCH 098/135] [Anonymous contrib] root -> admin dans une commande scp (#1246) * root -> admin dans une commande scp * Fix simone's diff Co-authored-by: Yunobot Co-authored-by: Alexandre Aubin --- app_transmission.md | 2 +- app_transmission_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app_transmission.md b/app_transmission.md index f756fd93..854a2bda 100644 --- a/app_transmission.md +++ b/app_transmission.md @@ -36,4 +36,4 @@ cd /home/yunohost.transmission/completed zip -r your_archive.zip [dossier] ``` -More informations about file transfer using *scp*: http://doc.ubuntu-fr.org/ssh#transfert_-_copie_de_fichiers (french, need english documentation) \ No newline at end of file +More informations about file transfer using *scp*: http://doc.ubuntu-fr.org/ssh#transfert_-_copie_de_fichiers (french, need english documentation) diff --git a/app_transmission_fr.md b/app_transmission_fr.md index fb7f1e75..df00ad3d 100644 --- a/app_transmission_fr.md +++ b/app_transmission_fr.md @@ -23,7 +23,7 @@ utilisateur = admin ou root Pour transférer le fichier, entrez la commande suivante : ```bash -scp -r /votre/fichier/ root@votre-domaine.org:/home/yunohost.transmission/completed +scp -r /votre/fichier/ admin@votre-domaine.org:/home/yunohost.transmission/completed ``` ##### Comment télécharger un répertoire entier ? From 1f5d631d8c295d4d5f3aab4bbfcbb5be732b8666 Mon Sep 17 00:00:00 2001 From: Vincent Rubiolo Date: Wed, 8 Apr 2020 22:28:10 +0200 Subject: [PATCH 099/135] Orange ISP doc: english translation This commit updates the doc to add the English translation of the Orange French ISP page. --- isp_orange.md | 86 +++++++++++++++++++++++++++++++++++++++++++++++- isp_orange_fr.md | 2 +- 2 files changed, 86 insertions(+), 2 deletions(-) diff --git a/isp_orange.md b/isp_orange.md index c89a3e28..87a29d12 100644 --- a/isp_orange.md +++ b/isp_orange.md @@ -1 +1,85 @@ -Unfortunately, this page only exists [in french here](isp_orange_fr) for now. +# Orange +*Find the list of other Internet service providers **[here](/isp)**.* + +#### Email + +The Orange box has port 25 closed so as to limit the amount of spam that could be sent from a compromised home connection. + +The remaining solution to host one own's email at home is to route it through the Orange SMTP servers. + +To that end, one has to edit the postfix configuration file with the following command: + +```bash +sudo nano /etc/postfix/main.cf +``` + +then, add the SMTP Orange server as a relay on the associated line: + +```bash +relayhost = smtp.orange.fr +``` + +restart Postfix : + +```bash +sudo service postfix restart +``` + +##### Problems + +If you are having an "Authentication required" error, the solution is as follows (note: french website): **[source](http://viruslocker.free.fr/?page_id=1749)**. + +Edit the postfix configuration file + +```bash +sudo nano /etc/postfix/main.cf +``` +then, add the following lines: + +```bash +smtp_sasl_password_maps = hash:/etc/postfix/sasl/mdp_fai.conf +smtp_sasl_auth_enable = yes +smtp_sasl_security_options = noanonymous +relayhost = [smtp.orange.fr]:25 +``` + +Create the `mdp_fai.conf` file : + +```bash +sudo nano /etc/postfix/sasl/mdp_fai.conf +``` + +add + +```bash +# mdp_fai.conf +[smtp.orange.fr]:25 emailaddress@at.orange:my-own-password +``` +with your Orange account password. + +Integrate the password into Postfix : + +```bash +sudo postmap /etc/postfix/sasl/mdp_fai.conf +sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl/mdp_fai.conf +``` + +If you are having an "(SASL authentication failed; cannot authenticate to server smtp-auth.nowhere.com[38.123.22.160]: no mechanism available)" error + +Check that `libsasl2-modules` and `sasl2-bin` are present : + +```bash +apt search libsasl2-modules +apt search sasl2-bin +``` + +If they are not present, do install them : + +```bash +apt install libsasl2-modules sasl2-bin +``` + +It is possible that postfix does not immediately take into account your modifications. To force it to do so, run +```bash +systemctl restart postfix +``` diff --git a/isp_orange_fr.md b/isp_orange_fr.md index 1c80f9fe..ffde62c6 100644 --- a/isp_orange_fr.md +++ b/isp_orange_fr.md @@ -66,7 +66,7 @@ sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl/mdp_fai.conf Si vous avez une erreur "(SASL authentication failed; cannot authenticate to server smtp-auth.nowhere.com[38.123.22.160]: no mechanism available)" -Vérifier la présence de libsasl2-modules et de sasl2-bin : +Vérifier la présence de `libsasl2-modules` et de `sasl2-bin` : ```bash apt search libsasl2-modules From 7d5017419d8b753a610b0badd87b68090ce54606 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 10 Apr 2020 19:30:05 +0200 Subject: [PATCH 100/135] spelling correction for dev_fr.md --- dev_fr.md | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/dev_fr.md b/dev_fr.md index 50fd7ce5..2251fbfe 100644 --- a/dev_fr.md +++ b/dev_fr.md @@ -1,10 +1,10 @@ ## Contribuer au cœur de YunoHost Vous souhaitez ajouter une nouvelle fonctionnalité au cœur de YunoHost, mais ne -savez pas comment procéder ? Ce guide parcours les étapes du développement et du +savez pas comment procéder ? Ce guide parcourt les étapes du développement et du processus de contribution. -Si vous chercher quelque chose à implémenter ou un bug à réparer, le +Si vous cherchez quelque chose à implémenter ou un bug à réparer, le bug tracker est [ici](https://github.com/yunohost/issues/issues) ! **Venez dire coucou sur le [salon de dev](/chat_rooms)** ! @@ -34,15 +34,14 @@ C'est un petit framework "fait maison". [Son rôle principal](https://moulinette est de permettre de construire une API Web et une API en ligne de commande à partir d'un même code Python et d'un schéma YAML que nous appelons [l'actionmap] (https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/actionsmap/yunohost.yml). -Il prend en charge d'autres mécanismes tels que l'authentification, l'internationalisation -et des petites fonctions utilitaires techniques (par ex. lecture/écriture de fichiers json). +Il prend en charge d'autres mécanismes tels que l'authentification, l'internationalisation et des petites fonctions utilitaires techniques (par ex. lecture/écriture de fichiers json). Moulinette dispose de sa propre documentation [ici](https://moulinette.readthedocs.io/en/latest/). -##### Yunohost +##### YunoHost C'est le coeur même de YunoHost. Il contient : -- [le code python](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost) qui gère les utilisateurs, domaines, applications, services et autres +- [le code Python](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost) qui gère les utilisateurs, domaines, applications, services et autres - des [helpers bash](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/helpers.d) principalement utilisés par les packageurs d'applications dans les scripts de ces applications - des [hooks](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/hooks) et [templates](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/templates) qui sont utilisés pour configurer les différents éléments de l'écosystème tels que nginx, postfix, .... - des [chaînes internationalisées](https://github.com/YunoHost/yunohost/tree/stretch-unstable/locales) @@ -52,17 +51,17 @@ C'est le coeur même de YunoHost. Il contient : C'est le système de connexion unique (single sign-on) de YunoHost. Il contient principalement: - [du code LUA](https://github.com/YunoHost/ssowat) interfacé directement avec nginx et qui gère tous les aspects "techniques" de l'authentification et de la gestion des accès aux ressources. -- le [portail web utilisateur](https://github.com/YunoHost/SSOwat/tree/stretch-unstable/portal) qui est l'interface finale visible pour les utilisateurs de YunoHost +- le [portail web utilisateur](https://github.com/YunoHost/SSOwat/tree/stretch-unstable/portal) qui est l'interface finale visible par les utilisateurs de YunoHost SSOwat est configuré via `/etc/ssowat/conf.json` qui est généré par YunoHost. -##### Yunohost-admin +##### YunoHost-admin C'est une dépendance *optionnelle* de YunoHost et correspond à une interface pour l'API web créée par YunoHost et Moulinette (service `yunohost-api`). Il contient essentiellement : - [des templates pour les vues](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/views) -- les [contrôleurs javascript](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/js/yunohost/controllers) correspondants, qui interagissent avec l'API Yunohost +- les [contrôleurs JavaScript](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/js/yunohost/controllers) correspondants, qui interagissent avec l'API YunoHost - et ses [chaînes internationalisées](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/locales) ### Travailler sur le cœur Python / ligne de commande @@ -79,7 +78,7 @@ Il contient essentiellement : `domain`, l'action est `add` et `some.domain.tld` est un argument. - Moulinette va automatiquement faire le lien entre les commandes de - l'actionsmap et les fonctions python (ainsi que leurs arguments) dans + l'actionsmap et les fonctions Python (ainsi que leurs arguments) dans `src/yunohost/`. Par exemple, `yunohost domain add some.domain.tld` déclenchera un appel de `domain_add(domainName)` dans `domain.py`, avec l'argument `domainName` qui vaudra `"some.domain.tld"`. @@ -92,9 +91,9 @@ Il contient essentiellement : et mettez le message correspondant dans `locales/en.json`. Vous pouvez aussi utiliser des arguments pour construire les messages, avec `{{some-argument:s}}`. Ne modifiez pas de fichiers de locales autres que en.json, la traduction sera - faite avec [weblate](https://translate.yunohost.org/) ! + faite avec [Weblate](https://translate.yunohost.org/) ! -- YunoHost essaye de suivre le style de code [pep8](http://pep8.org/). Des +- YunoHost essaye de suivre le style de code [PEP8](http://pep8.org/). Des outils existent pour vérifier automatiquement la conformité du code. - Mettre un `_` devant les noms des fonctions "privées". @@ -105,36 +104,36 @@ Il contient essentiellement : - Exécutez `cd /ynh-dev && ./ynh-dev use-git yunohost-admin`. Ceci lance gulp, de sorte qu'à chaque fois que vous modifiez les sources, il recompilera le code - (js) et vous pourrez voir les changements dans le navigateur web (Ctrl+F5). + (JS) et vous pourrez voir les changements dans le navigateur web (Ctrl+F5). Pour stopper la commande, faites simplement Ctrl+C. - L'interface web utilise une API pour communiquer avec YunoHost. Les commandes/requêtes de l'API sont également définies dans l'actionsmap. Par exemple, accéder à la page ```https://domain.tld/yunohost/api/users``` - correspond à une requete `GET /users` vers l'API YunoHost. Cette requête + correspond à une requête `GET /users` vers l'API YunoHost. Cette requête est mappée sur `user_list()`. Accéder à cette URL devrait afficher le json retourné par cette fonction. Les requêtes 'GET' sont typiquement destinées à demander de l'information au serveur, tandis que les requêtes 'POST' sont destinées à demander au serveur de modifier/changer des informations ou de réaliser des actions. -- `js/yunohost/controllers` contiens les parties javascript, et définit quelles +- `js/yunohost/controllers` contient les parties JavaScript, et définit quelles requêtes faire à l'API pendant le chargement d'une page donnée de l'interface, et comment traiter les données récupérées pour générer la page, en utilisant des templates. - `views` contient les templates des pages de l'interface. Dans le template, - les données venant du javascript peuvent êtres utilisées avec la syntaxe + les données venant du JavaScript peuvent être utilisées avec la syntaxe `{{some-variable}}`, qui sera remplacée pendant la construction de la page. Il est également possible d'avoir des conditions avec la syntaxe d'[handlebars.js](http://handlebarsjs.com) : ```{{#if some-variable}}

    du HTML conditionnel ici !

    {{/if}}``` - Pour l'internationalisation des messages, utilisez `y18n.t('some-string-code')` - dans le javascript, ou `{{t 'some-string-code'}}` dans le template HTML, et + dans le JavaScript, ou `{{t 'some-string-code'}}` dans le template HTML, et mettez votre message dans `locales/en.json`. Ne modifiez pas de fichiers de locales autres que en.json, la traduction sera faite avec - [weblate](https://translate.yunohost.org/) ! + [Weblate](https://translate.yunohost.org/) ! ##### N'oubliez pas @@ -143,7 +142,7 @@ Il contient essentiellement : (Il faudra retaper le mot de passe administrateur dans l'interface web) - Il faudra peut-être régulièrement forcer le rafraîchissement du cache - navigateur pour propager correctement le javascript et/ou HTML (à chaque fois + navigateur pour propager correctement le JavaScript et/ou HTML (à chaque fois que l'on change quelque chose dans `js` ou `views`, donc). @@ -151,7 +150,7 @@ Il contient essentiellement : - Forkez le dépòt correspondant sur Github, et commitez vos changements dans une nouvelle branche, Il est recommandé de nommer la branche avec la - convention : + convention suivante : - Pour une nouvelle fonctionnalité ou amélioration : `enh-ISSUENUMBER-description-fonctionnalité` - Pour une correction de bug : `fix-REDMINETICKET-description-correctif` - `ISSUENUMBER` est optionnel et correspond au numéro du ticket sur le bug tracker From 2f7a63e3c3cbbf80ce97b2596550c426b27869ce Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 10 Apr 2020 20:08:27 +0200 Subject: [PATCH 101/135] various spelling corrections --- backup_fr.md | 20 ++++++++++---------- diagnostic_fr.md | 4 ++-- faq_fr.md | 19 ++++++++----------- hardware_fr.md | 4 ++-- 4 files changed, 22 insertions(+), 25 deletions(-) diff --git a/backup_fr.md b/backup_fr.md index 2dd77ff4..163d1301 100644 --- a/backup_fr.md +++ b/backup_fr.md @@ -1,7 +1,7 @@ Sauvegarder son serveur et ses apps =================================== -Dans le contexte de l'auto-hébergement, les sauvegardes (backup) sont un élément important pour palier les événements inattendus (incendies, corruption de base de données, perte d'accès au serveur, serveur compromis, ...). La politique de sauvegardes à mettre en place dépend de l'importance des services et des données que vous gérez. Par exemple, sauvegarder un serveur de test aura peu d'intérêt, tandis que vous voudrez être très prudent si vous gérez des données critiques pour une association ou une entreprise - et dans ce genre de cas, vous souhaiterez stocker les sauvegardes *dans un endroit différent*. +Dans le contexte de l'auto-hébergement, les sauvegardes (backup) sont un élément important pour pallier les événements inattendus (incendies, corruption de base de données, perte d'accès au serveur, serveur compromis, ...). La politique de sauvegardes à mettre en place dépend de l'importance des services et des données que vous gérez. Par exemple, sauvegarder un serveur de test aura peu d'intérêt, tandis que vous voudrez être très prudent si vous gérez des données critiques pour une association ou une entreprise - et dans ce genre de cas, vous souhaiterez stocker les sauvegardes *dans un endroit différent*. Les sauvegardes avec YunoHost ----------------------------- @@ -10,7 +10,7 @@ YunoHost contient un système de sauvegarde, qui permet de sauvegarder (et resta Vous pouvez gérer vos sauvegardes via la ligne de commande (`yunohost backup --help`) ou la webadmin (dans la section Sauvegardes) bien que certaines fonctionnalités ne soient pas disponibles via celle-ci. -Actuellement, la méthode de sauvegarde actuelle consiste à créer des archives `.tar.gz` qui contiennent les fichiers pertinents. Pour le futur, YunoHost envisage de supporter nativement [Borg](https://www.borgbackup.org/) qui est une solution plus flexible, performante et puissante pour gérer des sauvegardes. +La méthode de sauvegarde actuelle consiste à créer des archives `.tar.gz` qui contiennent les fichiers pertinents. Pour le futur, YunoHost envisage de supporter nativement [Borg](https://www.borgbackup.org/) qui est une solution plus flexible, performante et puissante pour gérer des sauvegardes. Créer des sauvegardes --------------------- @@ -25,7 +25,7 @@ Vous pouvez facilement créer des archives depuis la webadmin en allant dans Sau Vous pouvez créer de nouvelles archives depuis la ligne de commande. Voici quelques exemples de commandes et leur comportement correspondant: -- Tout sauvegarder (système et application) +- Tout sauvegarder (système et apps) ```bash yunohost backup create ``` @@ -35,7 +35,7 @@ yunohost backup create yunohost backup create --apps ``` -- Sauvegarder seulement deux apps (wordpress et shaarli) +- Sauvegarder seulement deux apps (WordPress et Shaarli) ```bash yunohost backup create --apps wordpress shaarli ``` @@ -45,19 +45,19 @@ yunohost backup create --apps wordpress shaarli yunohost backup create --system data_mail ``` -- Sauvegarder les mails et wordpress +- Sauvegarder les mails et WordPress ```bash yunohost backup create --system data_mail --apps wordpress ``` -Pour plus d'informations et d'options sur la création d'archives, consultez `yunohost backup create --help`. Vous pouvez également lister les parties de système qui sont sauvegardables avec `yunohost hook list backup`. +Pour plus d'informations et d'options sur la création d'archives, consultez `yunohost backup create --help`. Vous pouvez également lister les parties du système qui sont sauvegardables avec `yunohost hook list backup`. #### Configuration spécifique à certaines apps Certaines apps comme Nextcloud sont potentiellement rattachées à des quantités importantes de données. Il est possible de ne pas les sauvegarder par défaut. Dans ce cas, on dit que l'app "sauvegarde uniquement le core" (de l'app). Lors d'une mise à jour, les apps contenant une grande quantité de données effectuent généralement une sauvegarde sans ces données. -Pour désactiver manuellement la sauvegarde des données volumineuses, pour les applications qui implémentent cette fonctionnalité, vous pouvez définir la variable `BACKUP_CORE_ONLY`. Pour ce faire, la variable doit être définie avant la commande de backup : `sudo BACKUP_CORE_ONLY=1 yunohost backup create --apps nextcloud`. Soyez prudent : il vous faudra alors sauvegarder vous même les données des utilisateurs de nextcloud. Choisir ce type de sauvegarde vous permettra de mettre en place manuellement des sauvegardes incrémentielles ou différentielles (que yunohost ne permet pas encore de faire automatiquement). +Pour désactiver manuellement la sauvegarde des données volumineuses, pour les applications qui implémentent cette fonctionnalité, vous pouvez définir la variable `BACKUP_CORE_ONLY`. Pour ce faire, la variable doit être définie avant la commande de backup : `sudo BACKUP_CORE_ONLY=1 yunohost backup create --apps nextcloud`. Soyez prudent : il vous faudra alors sauvegarder vous-même les données des utilisateurs de Nextcloud. Choisir ce type de sauvegarde vous permettra de mettre en place manuellement des sauvegardes incrémentielles ou différentielles (que YunoHost ne permet pas encore de faire automatiquement). Télécharger et téléverser des sauvegardes ----------------------------------------- @@ -91,7 +91,7 @@ Allez dans Sauvegardes > Sauvegardes locales et sélectionnez l'archive. Vous po #### Depuis la ligne de commande -Depuis la ligne de commande, vous pouvez utiliser `yunohost backup restore ` (sans le `.tar.gz`) pour restaurer une archive. Tout comme `yunohost backup create`, cela restaure tout le contenu par défaut. Si vous souhaitez restaurer seulement certaines parties, vous pouvez utiliser par exemple `yunohost backup restore --apps wordpress` qui restaurera seulement l'app wordpress. +Depuis la ligne de commande, vous pouvez utiliser `yunohost backup restore ` (sans le `.tar.gz`) pour restaurer une archive. Tout comme `yunohost backup create`, cela restaure tout le contenu par défaut. Si vous souhaitez restaurer seulement certaines parties, vous pouvez utiliser par exemple `yunohost backup restore --apps wordpress` qui restaurera seulement l'app WordPress. #### Contraintes @@ -131,7 +131,7 @@ ln -s $PATH_TO_DRIVE/yunohost_backup_archives /home/yunohost.backup/archives #### Sauvegardes automatiques -Vous pouvez ajouter une tâche cron pour déclencher automatiquement une sauvegarde régulièrement. Par exemple pour sauvegarder l'application wordpress toutes les semaines, créez un fichier `/etc/cron.weekly/backup-wordpress` avec le contenu suivant : +Vous pouvez ajouter une tâche cron pour déclencher automatiquement une sauvegarde régulièrement. Par exemple pour sauvegarder l'application WordPress toutes les semaines, créez un fichier `/etc/cron.weekly/backup-wordpress` avec le contenu suivant : ```bash #!/bin/bash @@ -151,7 +151,7 @@ Vous pouvez suivre ce tutoriel sur le forum pour mettre en place Borg entre deux Il existe aussi l'application Archivist qui permet un système similaire : https://forum.yunohost.org/t/new-app-archivist/3747 -#### Eviter de sauvegarder certains dossiers +#### Éviter de sauvegarder certains dossiers Si besoin, vous pouvez spécifier que certains dossiers `home` d'utilisateurs ne soient pas sauvegardés par la commande `yunohost backup`, en créant un fichier vide nommé `.nobackup` à l'intérieur. #### Backup complet avec `dd` diff --git a/diagnostic_fr.md b/diagnostic_fr.md index f0cd0f34..b2971a70 100644 --- a/diagnostic_fr.md +++ b/diagnostic_fr.md @@ -9,7 +9,7 @@ Dans un navigateur web, essayez d’accéder à votre serveur grâce au nom de d Par exemple : `http://mondomaine.org`
    -Si vous avez optez pour un nom de domaine se terminant par .nohost.me ou .noho.st, vous devrez patienter cinq minutes avant que l’adresse soit atteignable. +Si vous avez opté pour un nom de domaine se terminant par .nohost.me ou .noho.st, vous devrez patienter cinq minutes avant que l’adresse soit atteignable.
    --- @@ -24,7 +24,7 @@ Si vous avez optez pour un nom de domaine se terminant par .nohost.me ou Cette étape n’est pas nécessaire si vous possédez un nom de domaine en .nohost.me ou un .noho.st -Rendez-vous sur https://www.whatsmydns.net/, entrez votre nom de domaine dans le champ prévu à cet effet et cliquez sur `Search`. Si vous ne voyez pas votre adresse IP, ou s’il y a des croix rouges par endroit, cela signifie que vous avez probablement mal configuré votre [DNS](/dns). +Rendez-vous sur https://www.whatsmydns.net/, entrez votre nom de domaine dans le champ prévu à cet effet et cliquez sur `Search`. Si vous ne voyez pas votre adresse IP, ou s’il y a des croix rouges par endroits, cela signifie que vous avez probablement mal configuré votre [DNS](/dns). --- diff --git a/faq_fr.md b/faq_fr.md index 7fe65a1b..5b9d49ca 100644 --- a/faq_fr.md +++ b/faq_fr.md @@ -28,10 +28,10 @@ YunoHost peut être appelé une distribution ou un système d’exploitation, ma dans les faits, c’est une « simple » sur-couche à Debian, qui gère les manipulations pénibles à votre place. -Par exemple, pour installer un Wordpress à la main, il vous faudrait taper +Par exemple, pour installer un WordPress à la main, il vous faudrait taper toute une série de commandes pour créer des utilisateurs, mettre en place un -serveur web, mettre en place un serveur SQL, télécharger l’archive de Wordpress, -la décompresser, configurer le serveur web, configurer la base de données SQL, et finalement configurer Wordpress. YunoHost gère toute cette partie technique et « tape les commandes à votre place », pour que vous puissiez vous concentrer sur ce qui compte vraiment. +serveur web, mettre en place un serveur SQL, télécharger l’archive de WordPress, +la décompresser, configurer le serveur web, configurer la base de données SQL, et finalement configurer WordPress. YunoHost gère toute cette partie technique et « tape les commandes à votre place », pour que vous puissiez vous concentrer sur ce qui compte vraiment. Plus d’informations sur [cette page](whatsyunohost) ! @@ -54,9 +54,7 @@ Pour des raisons techniques, le [SSO](https://github.com/YunoHost/SSOwat/) ne pe #### Quel est le modèle économique de YunoHost ? -À l’heure actuelle, YunoHost est maintenu uniquement par une équipe de bénévoles -travaillant pendant leur temps libre. Il n’y a pas d’argent impliqué dans le -projet (hormis quelques frais de serveurs et stickers :P). +À l’heure actuelle, YunoHost est maintenu uniquement par une équipe de bénévoles travaillant pendant leur temps libre. Il n’y a pas d’argent impliqué dans le projet (hormis quelques frais de serveurs et stickers :P). Étant donné que certains contributeurs sont très engagés dans ce projet, nous réfléchissons à un moyen de pérenniser le projet. @@ -76,7 +74,7 @@ Si vous le pouvez, vous pouvez aussi faire des contributions en nature (une part Il existe [plusieurs façons de contribuer](contribute) :). -N’hésitez pas à venir nous parler de vos idées! +N’hésitez pas à venir nous parler de vos idées ! Une idée répandue parmi les nouveaux contributeurs aux logiciels libres est de ne pas être « assez compétent ». En pratique, croyez-le, personne n’est @@ -91,8 +89,7 @@ pouvez, c’est déjà trop cool ! Il est décrit dans [ce document](project_organization) :). - -#### Pouvez-vous porter YunoHost sur [ma distro préféré] ? +#### Pouvez-vous porter YunoHost sur [ma distro préférée] ? Réponse courte : non. L’équipe n’a pas l’énergie et ce n’est pas pertinent pour le but recherché par YunoHost. @@ -114,9 +111,9 @@ Réponse moyenne : Par le passé, les apps étaient gérées via des .deb. C’ Longue réponse
    -

    YunoHost cherche à garder un système de packaging simple. L’idée depuis le départ était que « si tu sais installer l’app à la main, alors tu peux facilement créer un package basique en copiant-collant les étapes, sans besoin de connaissances particulière ». Ce n’est pas le cas des paquets Debian.

    +

    YunoHost cherche à garder un système de packaging simple. L’idée depuis le départ était que « si tu sais installer l’app à la main, alors tu peux facilement créer un package basique en copiant-collant les étapes, sans besoin de connaissances particulières ». Ce n’est pas le cas des paquets Debian.

    -

    Il se trouve que l’objectif des paquets d’application YunoHost est subtilement différent des paquets traditionnels (comme les .deb de Debian) qui remplissent le rôle d’installer des éléments bas-niveaux tels que des fichiers, commandes, programmes ou services sur le système. Il est à la charge de l’administrateur de les configurer ensuite proprement, simplement parce qu’il n’existe pas d’environnement standard. Typiquement, les applications web requièrent beaucoup de configuration car elles ont besoin de s’interfacer avec un serveur web et une base de données (et le système de connexion unique / SSO).

    +

    Il se trouve que l’objectif des paquets d’application YunoHost est subtilement différent de celui des paquets traditionnels (comme les .deb de Debian) qui remplissent le rôle d’installer des éléments bas-niveau tels que des fichiers, commandes, programmes ou services sur le système. Il est à la charge de l’administrateur de les configurer ensuite proprement, simplement parce qu’il n’existe pas d’environnement standard. Typiquement, les applications web requièrent beaucoup de configuration car elles ont besoin de s’interfacer avec un serveur web et une base de données (et le système de connexion unique / SSO).

    YunoHost manipule des abstractions haut-niveau (apps, domaines, utilisateurs…) et définit un environnement standard (Nginx, Postfix, Metronome, SSOwat…) et, grâce à cela, peut gérer la configuration à la place de l’administrateur.

    diff --git a/hardware_fr.md b/hardware_fr.md index 93b7ebe8..b5e721b9 100644 --- a/hardware_fr.md +++ b/hardware_fr.md @@ -1,6 +1,6 @@ # Matériel -YunoHost peut être installé sur les types de matériel suivant : +YunoHost peut être installé sur les types de matériel suivants : - Cartes ARM (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ; - 'Vieux' ordinateurs de bureau ou portables ; - Serveurs distants, aussi appelé Virtual Private Servers (VPS). @@ -10,5 +10,5 @@ Les guides d'installations peuvent être trouvés sur [cette page](/install). ### Configuration minimale * Processeur 500MHz -* 512 Mo de RAM (recommandée : 1Go pour pouvoir faire tourner les services et applications correctement) +* 512 Mo de RAM (recommandé : 1 Go pour pouvoir faire tourner les services et applications correctement) * 8 Go d'espace de stockage (recommandé : 32 Go pour pouvoir stocker emails et documents) From 640c4a9c084aa86a1888d7f783460e2fa4e0aaa5 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 10 Apr 2020 20:41:29 +0200 Subject: [PATCH 102/135] Various spelling corrections --- theming_fr.md | 8 ++++---- update.md | 3 +-- update_fr.md | 3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/theming_fr.md b/theming_fr.md index fa96496a..393e306d 100644 --- a/theming_fr.md +++ b/theming_fr.md @@ -39,17 +39,17 @@ Vous pouvez créer votre propre thème en copiant le thème existant de votre ch cp -r /usr/share/ssowat/portal/assets/themes/{light,votre_theme} ``` -Ensuite, éditez les fichiers css et js dans `/usr/share/ssowat/portal/assets/themes/votre_theme` selon ce que vous voulez faire : +Ensuite, éditez les fichiers CSS et JS dans `/usr/share/ssowat/portal/assets/themes/votre_theme` selon ce que vous voulez faire : - `custom_portal.css` peut être utilisé pour ajouter des règles CSS personnalisées au portail utilisateur ; -- `custom_overlay.css` peut être utilisé pour personnaliser le petit bouton YunoHost, présent sur les apps qui l'intègre ; -- `custom_portal.js' peut être utilisé pour ajouter du code JS personnalisé à exécuter à la fois sur le portail utilisateur ou lors de l'injection du petit bouton YunoHost ("overlay"). +- `custom_overlay.css` peut être utilisé pour personnaliser le petit bouton YunoHost, présent sur les apps qui l'intègrent ; +- `custom_portal.js` peut être utilisé pour ajouter du code JS personnalisé à exécuter à la fois sur le portail utilisateur ou lors de l'injection du petit bouton YunoHost ("overlay"). Vous pouvez également ajouter vos propres images et ressources qui peuvent ensuite être utilisées par les fichiers CSS et JS. ### Exemple : personnaliser le logo -Vous pouvez créer votre propre thème simplement pour changer le "branding" du portail utilisateur Yunohost et remplacer le logo YunoHost par votre propre logo ! +Vous pouvez créer votre propre thème simplement pour changer le "branding" du portail utilisateur YunoHost et remplacer le logo YunoHost par votre propre logo ! Pour ce faire, téléversez votre logo dans `/usr/share/ssowat/portal/assets/themes/votre_theme/`, et ajoutez les règles CSS suivantes : diff --git a/update.md b/update.md index 0a6005a9..b67f6f18 100644 --- a/update.md +++ b/update.md @@ -2,8 +2,7 @@ ## From the webadmin -On the administraton panel, choose Tools. -Click on Upgrade the system. +On the administraton panel, click on Upgrade the system. The application search for updates and propose it if so. diff --git a/update_fr.md b/update_fr.md index 64577aff..c025cdef 100644 --- a/update_fr.md +++ b/update_fr.md @@ -2,8 +2,7 @@ ## Depuis la webadmin -Dans la partie administration, aller dans la partie Outils. -Choisir Mettre à jour le système. +Dans la partie administration, choisir Mettre à jour le système. L’application recherche les mises à jour et les propose s’il y en a. From 4d98be8e16029a5485774be39a9d825c21daf445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Relland?= Date: Mon, 13 Apr 2020 13:03:34 +0200 Subject: [PATCH 103/135] =?UTF-8?q?Correction=20(mise=20=C3=A0=20jour)=20d?= =?UTF-8?q?'un=20lien=20vers=20le=20forum=20YNH=20/Apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [la catégorie Apps du forum](https://forum.yunohost.org/c/apps) Ce lien tombe sur la page 'Oups' du forum YNH :) J'ai corrigé l'url par : https://forum.yunohost.org/c/support/apps Peut être accepté directement. Amicalement, José, Tricassinux.org --- packaging_apps_guidelines_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging_apps_guidelines_fr.md b/packaging_apps_guidelines_fr.md index 847367d4..80925dc5 100644 --- a/packaging_apps_guidelines_fr.md +++ b/packaging_apps_guidelines_fr.md @@ -170,7 +170,7 @@ Une fois l’invitation acceptée, [transférer son dépôt sur l’organisation #### YEP 1.8 ##### Publier des demandes de test | validé | manuel | OFFICIAL | -Afin d'assurer le bon fonctionnement d'un paquet, il convient de publier une annonce afin d'ouvrir les tests sur le paquet. Cette annonce peut se faire sur le forum dans [la catégorie Apps du forum](https://forum.yunohost.org/c/apps). +Afin d'assurer le bon fonctionnement d'un paquet, il convient de publier une annonce afin d'ouvrir les tests sur le paquet. Cette annonce peut se faire sur le forum dans [la catégorie Apps du forum](https://forum.yunohost.org/c/support/apps). Il est recommandé d'indiquer si certains tests n'ont pas été menés. From 744608355da7a78d2a8cfaf5923cafbfaadebbf4 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Mon, 13 Apr 2020 14:49:12 +0200 Subject: [PATCH 104/135] Add change_url for level 8 --- packaging_apps_levels.md | 1 + packaging_apps_levels_fr.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packaging_apps_levels.md b/packaging_apps_levels.md index d6351047..ffde8e73 100644 --- a/packaging_apps_levels.md +++ b/packaging_apps_levels.md @@ -154,6 +154,7 @@ YEP à respecter pour atteindre le niveau 7: YEP to be respected to reach level 8: - [YEP 1.12](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-112) : Follow the template from example_ynh +- Supports change of URL - *[YEP 2.16](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-216---v%C3%A9rifier-la-disponibilit%C3%A9-des-d%C3%A9pendances-sur-arm-x86-et-x64----valid%C3%A9--manuel--official-) : Check dependency availability on ARM, x86 and x64* - [YEP 2.18.5](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2185---ajouter-la-tuile-yunohost-pour-naviguer-facilement-entre-les-applications----valid%C3%A9--manuel--official-) : Add the YunoHost tile to easily navigate between applications - [YEP 4.1](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-41---lier-au-ldap----valid%C3%A9--manuel--official-) : Link to ldap diff --git a/packaging_apps_levels_fr.md b/packaging_apps_levels_fr.md index 843c5f46..b2bfe53e 100644 --- a/packaging_apps_levels_fr.md +++ b/packaging_apps_levels_fr.md @@ -139,6 +139,8 @@ YEP à respecter pour atteindre le niveau 7: **Le package d'application respecte toute les recommandations de packaging d'apps. C'est une app de très bonne qualité.** YEP à respecter pour atteindre le niveau 8: +- [YEP 1.12](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-112) : Respect le modèle de l'application d'exemple +- Prise en charge du changement d'URL - *[YEP 2.16](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-216---v%C3%A9rifier-la-disponibilit%C3%A9-des-d%C3%A9pendances-sur-arm-x86-et-x64----valid%C3%A9--manuel--official-) : Vérifier la disponibilité des dépendances sur ARM, x86 et x64* - [YEP 2.18.5](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2185---ajouter-la-tuile-yunohost-pour-naviguer-facilement-entre-les-applications----valid%C3%A9--manuel--official-) : Ajouter la tuile YunoHost pour naviguer facilement entre les applications - [YEP 4.1](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-41---lier-au-ldap----valid%C3%A9--manuel--official-) : Lier au ldap From d52dfc983228ba092adb27e9f9dfb006ea82e6d5 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Tue, 14 Apr 2020 00:27:51 +0000 Subject: [PATCH 105/135] Adding ferdi server to the app wishlist. --- apps_wishlist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps_wishlist.md b/apps_wishlist.md index ccafc1b6..9acc494c 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -39,6 +39,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [ERPnext](https://erpnext.com/download) / [github](https://github.com/frappe/erpnext) - [EteSync](https://www.etesync.com/) / [github](https://github.com/etesync) - [Epicyon](https://epicyon.net/) / [gitlab](https://gitlab.com/bashrc2/epicyon) +- [Ferdi server](https://github.com/getferdi/server) is the server to self host the data and configuration of the [ferdi](https://getferdi.com/) messaging aggregator client. - [FEX](http://fex.rus.uni-stuttgart.de/) - [FitTrackee](https://github.com/SamR1/FitTrackee) - [Fossil](http://www.fossil-scm.org) From b37ec8e1746f417199aac5f2181cd208e3bd9e18 Mon Sep 17 00:00:00 2001 From: yala Date: Tue, 14 Apr 2020 06:24:41 +0200 Subject: [PATCH 106/135] update riot links --- use_case_non-profit_organisations.md | 2 +- use_case_non-profit_organisations_fr.md | 2 +- use_case_non-profit_organisations_oc.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/use_case_non-profit_organisations.md b/use_case_non-profit_organisations.md index f16fdf53..bc488f75 100644 --- a/use_case_non-profit_organisations.md +++ b/use_case_non-profit_organisations.md @@ -117,7 +117,7 @@ Out of the box, YunoHost provide an XMPP server, for which you can install a web You can also install a matrix server: * The server: [Synapse](https://github.com/YunoHost-Apps/synapse_ynh) -* A web client: [Riot](https://github.com/YunoHost-Apps/_ynh) +* A web client: [Riot](https://github.com/YunoHost-Apps/riot_ynh) ### Intranet diff --git a/use_case_non-profit_organisations_fr.md b/use_case_non-profit_organisations_fr.md index 5e95773f..292fff67 100644 --- a/use_case_non-profit_organisations_fr.md +++ b/use_case_non-profit_organisations_fr.md @@ -116,7 +116,7 @@ De base, YunoHost fournit immédiatement un serveur XMPP pour lequel vous pouvez Vous pouvez également installer un serveur Matrix : * Le serveur: [Synapse](https://github.com/YunoHost-Apps/synapse_ynh) -* Un client web: [Riot](https://github.com/YunoHost-Apps/_ynh) +* Un client web: [Riot](https://github.com/YunoHost-Apps/riot_ynh) ### Intranet diff --git a/use_case_non-profit_organisations_oc.md b/use_case_non-profit_organisations_oc.md index 946b3a54..8f4d6862 100644 --- a/use_case_non-profit_organisations_oc.md +++ b/use_case_non-profit_organisations_oc.md @@ -116,7 +116,7 @@ Tras l’installacion YunoHost fornís sul pic un servidor XMPP per lo qual pod Podètz tanben installar un servidor Matrix : * Lo servidor: [Synapse](https://github.com/YunoHost-Apps/synapse_ynh) -* Un client web: [Riot](https://github.com/YunoHost-Apps/_ynh) +* Un client web: [Riot](https://github.com/YunoHost-Apps/riot_ynh) ### Intranet From b8fe4c82d1b7c86ca7bd5dcf49655905740ffc79 Mon Sep 17 00:00:00 2001 From: Plumf Date: Tue, 14 Apr 2020 13:29:12 +0200 Subject: [PATCH 107/135] Various corrections --- app_writing_guide.md | 6 ++++-- app_writing_guide_fr.md | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app_writing_guide.md b/app_writing_guide.md index abaef509..edd0f3db 100644 --- a/app_writing_guide.md +++ b/app_writing_guide.md @@ -2,9 +2,11 @@ [![Install APPLICATION with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/APPLICATION.svg)](https://dash.yunohost.org/appci/app/APPLICATION) -- [Configuration](#Configuration) +### Index + +- [Configuration](#configuration) - [Limitations with YunoHost](#limitations-with-yunohost) -- [Customer Applications](#Customer-applications) +- [Customer Applications](#customer-applications) - [Useful links](#useful-links) **General presentation of the application.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* diff --git a/app_writing_guide_fr.md b/app_writing_guide_fr.md index b39fdfec..bc5f08e1 100644 --- a/app_writing_guide_fr.md +++ b/app_writing_guide_fr.md @@ -2,9 +2,11 @@ [![Install APPLICATION with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/APPLICATION.svg)](https://dash.yunohost.org/appci/app/APPLICATION) +### Index + - [Configuration](#configuration) -- [Limitations avec Yunohost](#limitations-avec-yunohost) -- [Applications clientes](#applications-clients) +- [Limitations avec YunoHost](#limitations-avec-yunohost) +- [Applications clientes](#applications-clientes) - [Liens utiles](#liens-utiles) **Présentation générale de l'application.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* @@ -13,7 +15,7 @@ **Si la configuration de l'application ne se fait pas avec le panel admin de YunoHost.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* -## Limitations avec Yunohost +## Limitations avec YunoHost **Explication des limitations actuelles en utilisation l'application avec YunoHost.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* From f6ec82c9f93433cba56536be2097b4ca18fc94e3 Mon Sep 17 00:00:00 2001 From: Vincent Rubiolo Date: Tue, 14 Apr 2020 23:06:47 +0200 Subject: [PATCH 108/135] noaccess_fr.md: fix typos and styling problems --- noaccess_fr.md | 46 +++++++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/noaccess_fr.md b/noaccess_fr.md index 20de8ea3..ec69c1cd 100644 --- a/noaccess_fr.md +++ b/noaccess_fr.md @@ -67,12 +67,12 @@ NB: le bannissement dure en général 10 à 12 minutes. Le bannissement n'est ac #### Le serveur web nginx est cassé -Peut-être que le serveur web nginx est en panne. Vous pouvez vérifier cela [en ssh](/ssh) avec `yunohost service status ssh`. Si il est en panne, vérifiez que la configuration ne comporte pas d'erreur avec `nginx -t`. Si la configuration est cassé, ceci est peut-être du à une l'installation ou désinstallation d'une application de mauvaise qualité... Si vous êtes perdu, [demandez de l'aide](/help). +Peut-être que le serveur web nginx est en panne. Vous pouvez vérifier cela [en ssh](/ssh) avec `yunohost service status ssh`. Si il est en panne, vérifiez que la configuration ne comporte pas d'erreur avec `nginx -t`. Si la configuration est cassée, ceci est peut-être du à une l'installation ou désinstallation d'une application de mauvaise qualité... Si vous êtes perdu, [demandez de l'aide](/help). -Il se peut également que le serveur web (nginx) ou le serveur ssh aient été tué suite à un manque d'espace disque ou de RAM / swap. +Il se peut également que le serveur web (nginx) ou le serveur ssh aient été tués suite à un manque d'espace disque ou de RAM / swap. - Tentez de relancer le service avec `systemctl restart nginx`. -- Vous pouvez contrôler l'espace disque utilisé avec `df -h`. Si une de vos partition est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place. Il est possible d'installer l'utilitaire `ncdu` avec `apt install ncdu` puis de faire `ncdu /` pour analyser la taille des dossiers de toute l'arborescence. -- Vous pouvez contrôler l'utilisation de la RAM / swap avec `free -h`. En fonction des résultats, il peut être nécessaire d'optimiser votre serveur pour qu'il utilise moins de ram (suppression d'app lourdes et inutiles, ...), d'ajouter de la RAM ou d'ajouter un fichier de swap. +- Vous pouvez contrôler l'espace disque utilisé avec `df -h`. Si une de vos partitions est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place. Il est possible d'installer l'utilitaire `ncdu` avec `apt install ncdu` puis de faire `ncdu /` pour analyser la taille des dossiers de toute l'arborescence. +- Vous pouvez contrôler l'utilisation de la RAM / swap avec `free -h`. En fonction des résultats, il peut être nécessaire d'optimiser votre serveur pour qu'il utilise moins de RAM (suppression d'app lourdes et inutiles, ...), d'ajouter de la RAM ou d'ajouter un fichier de swap. #### Votre serveur est accessible en IPv6 mais pas en IPv4 ou inversement @@ -82,7 +82,7 @@ Dans un tel cas, il est possible que vous arriviez à accéder à votre web admi Dans ce cas il faut résoudre votre problème de connectivité. -Dans certains cas une mise à jour de votre box a activé l'IPv6, entraînant des problèmes de configuration au niveau de votre nom de domaine. +Dans certains, cas une mise à jour de votre box a activé l'IPv6, entraînant des problèmes de configuration au niveau de votre nom de domaine. @@ -90,59 +90,55 @@ Dans certains cas une mise à jour de votre box a activé l'IPv6, entraînant de -## La webadmin fonctionne, mais certaines applications web me renvoie une erreur 502. +## La webadmin fonctionne, mais certaines applications web me renvoient une erreur 502. -Il est fort probablement que le service correspondant à ces applications soit en panne (Typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help). +Il est fort probablement que le service correspondant à ces applications soit en panne (typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help). ## Vous avez perdu votre mot de passe administrateur ? (ou bien le mot de passe est refusé) -Si vous arrivez à afficher la page web d'administration (forcer le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez. Vous avez probablement un mot de passe erroné. +Si vous arrivez à afficher la page web d'administration (forcez le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez, vous avez probablement un mot de passe erroné. -Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en root. -- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur root. -- Si vous êtes sur un VPS, votre hébergeur vous fourni peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web. +Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en `root`. +- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur `root`. +- Si vous êtes sur un VPS, votre hébergeur vous fournit peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web. Une fois connecté, il vous faut regarder l'état du service avec la commande `yunohost service status slapd` et/ou tenter de réinitialiser votre mot de passe avec la commande `yunohost tools adminpw`. -Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en root, vous allez devoir opérer en mode rescue. +Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en `root`, vous allez devoir opérer en mode rescue. TODO: à compléter - - ## Votre VPN a expiré ou ne se monte plus Si vous utilisez un VPN a IP fixe, peut être que celui-ci est arrivé à expiration ou que l'infrastructure de votre fournisseur est en difficulté. Dans ce cas, vous pouvez peut être accéder à votre serveur avec son IP locale s'agissant probablement d'un serveur auto-hébergé chez-vous. -Pour connaître votre ip locale, certaines BOX propose une cartographie du réseau en cours avec les équipements connectés. Sinon, en ligne de commande avec linux: +Pour connaître votre IP locale, certaines BOX proposent une cartographie du réseau en cours avec les équipements connectés. Sinon, en ligne de commande avec linux: ```bash sudo arp-scan --local ``` -Vous pouvez aussi essayer avec le domaine `yunohost.local` si il n'y a qu'un seul YunoHost sur votre réseau. +Vous pouvez aussi essayer avec le domaine `yunohost.local` s'il n'y a qu'un seul YunoHost sur votre réseau. Il faut voir avec votre fournisseur de VPN pour renouveler le VPN et mettre à jour les paramètre de l'app VPN Client. -TODO - - +TODO: à compléter ## Votre serveur est coincé au démarrage -Dans certains cas, votre serveur peut rester coincer au démarrage. Il peut s'agir d'un problème suite à l'installation d'un nouveau kernel. Essayez de choisir un autre kernel avec VNC ou avec l'écran lors du boot. +Dans certains cas, votre serveur peut rester coincé au démarrage. Il peut s'agir d'un problème suite à l'installation d'un nouveau kernel. Essayez de choisir un autre kernel avec VNC ou avec l'écran lors du boot. -Si vous êtes en grub rescue, dans ce cas il peut s'agir d'un problème de configuration de grub ou d'un disque corrompu. +Si vous êtes en mode `rescue` avec `grub`, dans ce cas il peut s'agir d'un problème de configuration de `grub` ou d'un disque corrompu. -Dans ce cas il faut accéder au disque avec un autre système (mode rescue du fournisseur, live usb, lire la carte SD ou le disque dur avec un autre ordinateur) et essayer de vérifier l'intégrité des partitions avec smartctl, fsck et mount. +Dans ce cas il faut accéder au disque avec un autre système (mode `rescue` du fournisseur, live usb, lire la carte SD ou le disque dur avec un autre ordinateur) et essayer de vérifier l'intégrité des partitions avec `smartctl`, `fsck` et `mount`. -Si les disques sont corrompus et difficile à monter, il faut sauvegarder les données et potentiellement refaire un formatage/réinstaller et/ou changer le disque. Si on arrive à monter le disque, il est possible d'utiliser systemd-nspawn pour entrer dans la base de donnée. +Si les disques sont corrompus et difficiles à monter, il faut sauvegarder les données et potentiellement refaire un formatage/réinstaller et/ou changer le disque. Si on arrive à monter le disque, il est possible d'utiliser `systemd-nspawn` pour entrer dans la base de données. -Sinon, relancer grub-update et grub-install en chroot ou avec systemd-nspawn. +Sinon, relancer `grub-update` et `grub-install` en `chroot` ou avec `systemd-nspawn`. @@ -152,4 +148,4 @@ Sinon, relancer grub-update et grub-install en chroot ou avec systemd-nspawn. Dans ce cas il peut s'agir d'un problème matériel sur votre serveur physique ou d'un problème d'hyperviseur si c'est un VPS. -Si c'est une machine loué contacter le support de votre fournisseur. Sinon essayez de dépanner votre machine en retirant les composants qui peuvent être en panne. +Si c'est une machine louée contactez le support de votre fournisseur. Sinon, essayez de dépanner votre machine en retirant les composants qui peuvent être en panne. From 2206066ad76ddb29fb1a41ced50d00219b37f295 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Thu, 16 Apr 2020 17:16:04 +0200 Subject: [PATCH 109/135] We don't have mailing lists anymore --- contribute.md | 2 +- contribute_ar.md | 4 ++-- contribute_fr.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contribute.md b/contribute.md index 04dc45d1..b5887fb3 100644 --- a/contribute.md +++ b/contribute.md @@ -47,7 +47,7 @@ Our support relies on contributors like you. Just come to [the support chatroom] You can involve in the YunoHost's development regardless of your skill. Sysadmins, web developers, designers and pythonists are welcome!
    -Learn [how to contribute](/dev), and join us on the [development chat room](xmpp:dev@conference.yunohost.org?join) and the mailing-list. +Learn [how to contribute](/dev), and join us on the [development chat room](xmpp:dev@conference.yunohost.org?join).
    diff --git a/contribute_ar.md b/contribute_ar.md index 0a810ce5..8ad74232 100644 --- a/contribute_ar.md +++ b/contribute_ar.md @@ -45,7 +45,7 @@ Notre support est communautaire et s’appuie sur des contributeurs comme vous.
    Vous pouvez vous impliquer dans le développement de YunoHost peu importe votre niveau. Administrateurs système, développeurs web, designers et pythonistes sont les bienvenus.
    -Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) et la mailing-list ! +Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) !
    @@ -80,7 +80,7 @@ Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discus
    Étendez les capacités de YunoHost en [packageant de nouveaux services et applications web](/packaging_apps). Jetez un œil à [ce qui a déjà été fait](/apps) !
    -Un [salon de développement](xmpp:dev@conference.yunohost.org?join) et une mailing-list est également disponible. +Un [salon de développement](xmpp:dev@conference.yunohost.org?join) est également disponible.
    diff --git a/contribute_fr.md b/contribute_fr.md index 825b47d4..dd785aaa 100644 --- a/contribute_fr.md +++ b/contribute_fr.md @@ -45,7 +45,7 @@ Notre support est communautaire et s’appuie sur des contributeurs comme vous.
    Vous pouvez vous impliquer dans le développement de YunoHost peu importe votre niveau. Administrateurs système, développeurs web, designers et pythonistes sont les bienvenus.
    -Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) et la mailing-list ! +Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) !
    From c399634638feeb9c9de48ca863168c0b0a4654ae Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 17 Apr 2020 11:48:51 +0200 Subject: [PATCH 110/135] Update and various corrections --- contributordoc.md | 3 ++ contributordoc_fr.md | 6 ++-- doc_markdown_guide.md | 15 +------- doc_markdown_guide_fr.md | 78 ++++++++++++++++++---------------------- doc_use_git.md | 29 +++++---------- doc_use_git_fr.md | 28 +++++---------- doc_writing_guide.md | 50 +++++++++++++------------- doc_writing_guide_fr.md | 46 +++++------------------- 8 files changed, 93 insertions(+), 162 deletions(-) diff --git a/contributordoc.md b/contributordoc.md index 31bc784e..9d6a6212 100644 --- a/contributordoc.md +++ b/contributordoc.md @@ -2,6 +2,9 @@ * [General ways of contributing to YunoHost](/contribute) * [Writing documentation](/write_documentation) + * [Documentation wrinting guide](doc_writing_guide) + * [markdown guide](/doc_markdown_guide) + * [Propulser son code avec Git & GitHub](/doc_use_git) * [Chat rooms](/chat_rooms) * Application packaging * [Apps wishlist](/apps_wishlist) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index 9821b97c..afcc9e9b 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -2,9 +2,9 @@ * [Liste des façons de contribuer à YunoHost](/contribute) * [Écrire de la documentation](/write_documentation) - * [Guide de redaction de la documentation](dc_writing_guide_fr) - * [Guide markdown](/doc_markdown_guide_fr) - * [Propulser son code avec Git & GitHub](/doc_use_git_fr) + * [Guide de redaction de la documentation](doc_writing_guide) + * [Guide markdown](/doc_markdown_guide) + * [Propulser son code avec Git & GitHub](/doc_use_git) * [Salons de discussion](/chat_rooms) * Packaging d'application * [Liste d'applications souhaitées par la communauté](/apps_wishlist) diff --git a/doc_markdown_guide.md b/doc_markdown_guide.md index 7afe55b8..b42deefe 100644 --- a/doc_markdown_guide.md +++ b/doc_markdown_guide.md @@ -1,21 +1,8 @@ # Markdown Guide -**Index** - - [The different title levels](#TitleLevels) - - [Paragraph formatting](#ParagraphFormatting) - - [Link creation](#LinkCreation) - + [Anchor creation](#AnchorCreation) - - [Display images](#DisplayImages) - - [Citation formatting](#CitationFormatting - - [Lists](#Lists) - + [Ordered](#Ordered) - + [Unordered](#Unordered) - - [Tables](#Tables) - - [Code segments](#CodeSegments) - Markdown is a markup language from 2004, with many add-ons supporting its function and existence. This guide explores the possibilities and formatting of the language in the context of YunoHost documentation, and not the Markdown language on its own. -Markdown allows formatting of text using tags, in human-readable format; even with formatting. Outside of plaintext editors, a number of specific programs exist. (Markdown on [framalibre.org] (https://framalibre.org/recherche-par-crit-res?keys=markdown)). It is easy to deal with. +Markdown allows formatting of text using tags, in human-readable format; even with formatting. Outside of plaintext editors, a number of specific programs exist. (Markdown on [framalibre.org](https://framalibre.org/recherche-par-crit-res?keys=markdown)). It is easy to deal with. ## The different title levels diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 1a8ac21d..dcc12fca 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -1,23 +1,10 @@ # Guide Markdown -**Index** - - [Les différents niveaux de titres](#NiveauxTitres) - - [Formatage dans les paragraphes](#FormatageParagraphe) - - [Créer des liens](#CreerLiens) - + [Créer des ancres](#LiensAncres) - - [Afficher des images](#AfficherImages) - - [Formater une citation](#FormaterCitation) - - [Les listes](#UtiliserListes) - + [Listes ordonnées](#ListesOrdonnees) - + [Listes non ordonnées](#ListesNonOrdonnees) - - [Les tableaux](#UtiliserTableaux) - - [Bloc de Codes](#BlockCodes) - -Le Markdown est un langage de balisage créé en 2004, de nombreux add-on développant les possibilités de ce langage existent. L'objectif de ce guide est de tendre vers l’exhaustivité des possibilités de ce langage de formatage dans le cadre de la documentation de YunoHost et non du langage Markdown en général. +Le Markdown est un langage de balisage créé en 2004, de nombreux add-on développant les possibilités de ce langage existent. L'objectif de ce guide est de tendre vers l’exhaustivité des possibilités de ce langage de formatage dans le cadre de la documentation de YunoHost et non des langages Markdown en général. Markdown permet de formater du texte à l'aide de balises, il permet une lecture *humaine* du texte ; même avec le formatage. Même si un unique bloc note est nécessaire il existe de nombreux logiciels markdowns (Markdown sur [framalibre.org](https://framalibre.org/recherche-par-crit-res?keys=markdown)). Sa prise en main est relativement facile. -## Les différents niveaux de titres +## Les différents niveaux de titres En rédigeant des titres comme suit : ```markdown @@ -37,7 +24,7 @@ Ils apparaissent comme cela : ##### Titre de niveau 5 ###### Titre de niveau 6 -## Formatage dans les paragraphes +## Formatage dans les paragraphes Pour taper un retour à la ligne sans créer de nouveau paragraphe, il est nécessaire de taper **deux espaces consécutifs**.Sans cela, le texte continuera à la suite en respectant les contraintes générales du style de la page. @@ -55,7 +42,7 @@ Pour du texte en *italique il faut encadrer par un astérisque `*` * Pour rédiger du **texte en gras par deux astérisques** On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` -## Créer des liens +## Créer des liens Pour créer un lien vers un site hors de la documentation de YunoHost : @@ -66,16 +53,17 @@ Pour créer un lien vers un site hors de la documentation de YunoHost : s'affichera comme tel : [Texte à afficher](https://lelien.tld) -C'est identique pour les pages de la documentation, excepté que le lien est interne. Il renvoie au fichier du wiki, sans extension de fichier (le `.md`) : +C'est identique pour les pages de la documentation, excepté que le lien est interne. Il renvoie au fichier du wiki, sans extension de langgue et de fichier (le `_fr.md`) : +```markdown +[Page du wiki](/write_documentation) ``` -[Page du wiki](write_documentation_fr) -``` -[Page du wiki](write_documentation) -### Créer des ancres +[Page du wiki](/write_documentation) + +### Créer des ancres Une ancre permet de faire un lien vers un point précis dans une page, c'est comme ça que fonctionnent les index en haut de page. Pour créer une ancre, il faut insérer du code à l'endroit de l'ancre sous la forme suivante : -``` +```markdown Du texte qui sera ne sait même pas qu'il a une ancre ``` @@ -84,33 +72,35 @@ Du texte qui sera ne sait même pas qu'il a une ancre Il ne reste plus qu'à désigner l'ancre au texte que l'on souhaite rendre interactif : -``` -[Mon titre qui renvoie](#NomDeLAncre) +```markdown +[Mon titre qui renvoie](#nom-du-titre) ``` -[Mon titre qui renvoie](#NomDeLAncre) +[Mon titre qui renvoie](#nom-du-titre) -## Afficher des images +## Afficher des images Pour afficher des images, le principe est identique aux liens, excepté l'ajout d'un `!` avant le texte à afficher qui est ici considéré comme le texte à afficher en cas d'impossibilité de chargement de l'image. Une description de l'image convient. -``` +```markdown ![Logo Yunohost](/images/logo.png) ``` ![Logo Yunohost](/images/logo.png) + Il est possible de faire un lien avec une image, exemple : +```markdown +[![Logo Yunohost](/images/logo.png)](/write_documentation) ``` -[![Logo Yunohost](/images/logo.png)](write_documentation) -``` -[![Logo Yunohost](/images/logo.png)](write_documentation) +[![Logo Yunohost](/images/logo.png)](/write_documentation) L'encart de *texte à afficher en cas d'impossibilité de chargement de l'image* n'est pas obligatoire mais fortement recommandé. -## Formater une citation +## Formater une citation Les citations permettent de mettre en valeur un propos tenu par une autre personne, le wiki gère lui même la façon dont c'est valorisé. Markdown utilise un chevron fermant, ce symbole : `>`, pour annoncer une citation. Il suffit de les rajouter avant la citation, comme tel : -``` + +```markdown >Du texte de citation du premier niveau >qui peut être formaté en différentes lignes @@ -125,15 +115,15 @@ S'affichera : >> Et une seconde citation >> avec des doubles chevrons -## Les listes +## Les listes Les listes permettent d'afficher une suite de textes dans une présentation facile, c'est ainsi que sont rédiger les index tels que celui de la page de la [documentation contributeur](contributordoc). -### Listes ordonnées +### Listes ordonnées Les listes ordonnées peuvent s'incrémenter autant que vous le désirez, il n'est pas obligé de donner la bonne correspondance au nombre. Il est possible de noter avec des `1.` comme des `7.` et installer trois espaces pour marquer l'incrémentation. Pour une meilleure compréhension du texte brut, il peut être bien d'utiliser les chiffres de manières croissantes pour marquer l'incrémentation, mais c'est bien les trois `espaces` conséquents avant la sous-liste qui désigneront l'incrémentation. -``` +```markdown 1. Liste 1 1. Liste 2 1. liste 3 @@ -167,11 +157,11 @@ On obtient : 3. Liste 5 4. liste 6 -### Listes non ordonnées +### Listes non ordonnées Pour créer une liste non ordonnée, il faut utiliser les symboles `*`, `+` ou `*`. Cela ne changera pas l'apparence du marqueur dans la restitution du texte. C'est l'incrémentation de la liste qui définira le visuel. Pour une meilleure lecture du texte brut, il peut être bien d'utiliser les différents symboles pour marquer l'incrémentation, mais c'est bien les trois espaces avant la sous-liste qui désigneront l'incrémentation. Comme tel : -``` +```markdown + Liste 1 + Liste 2 + liste 3 @@ -204,7 +194,7 @@ Ce qui affichera : * Liste 5 + liste 6 -## Les tableaux +## Les tableaux Pour créer un tableau, il faut utiliser la barre verticale `|` et les tirets `-`. Il est obligatoire d'ajouter une ligne de tiret sous la première ligne du tableau. Il n'y a aucune contrainte dans la taille de ce dernier. Il est possible de formater le tableau avec les `:` dans la seconde ligne du tableau, trois options s'offrent à vous : @@ -212,7 +202,7 @@ Pour créer un tableau, il faut utiliser la barre verticale `|` et les tirets `- |:-------------------------|:---------------:|-------------------------:| |`:-----` | `:----:` | `-----:` | -``` +```markdown | **Un tableau** | Une colonne | Une seconde | Autant que l'on veut | |:--------------:|:-----------:|:-----------:|:--------------------:| | Une ligne formatée | | Et du **texte en gras** | Ou en *italique* | @@ -225,15 +215,15 @@ Ce qui afficherait ça : | Une ligne formatée | | Et du **texte en gras** | Ou en *italique* | | D'autres lignes | |![une image](/images/cd.jpg) | [Ou un lien]( contributordoc) | -## Bloc de codes +## Bloc de codes Pour afficher du texte en brut, des `blocs de codes` peuvent être créer en utilisant l'accent grave `Alt Gr + è` : -```` +````markdown Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` ``` ou directement en bloc. -La seule différence est dans la quantité d'accents graves : +La seule différence est dans la quantité d'accents graves : Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne Ce qui donnera au rendu : @@ -246,7 +236,7 @@ La seule différence est dans la quantité d'accents graves : Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne ``` -## Liens utiles +## Liens utiles + La documentation du langage originel Markdown : [daringfireball.net/projects/markdown (en)](https://daringfireball.net/projects/markdown/) + Tutoriel Markdown sur [markdowntutorial.com (en)](https://markdowntutorial.com) diff --git a/doc_use_git.md b/doc_use_git.md index 968db224..bc875f29 100644 --- a/doc_use_git.md +++ b/doc_use_git.md @@ -1,25 +1,14 @@ -# Propel a contribution with Git - - **Index** - - [Creating an account on github.com](#CreationAccountGithub) - - [Fork the YunoHost documentation into your personal repository](#ForkerDocumentationYunoHost) - - [Edit files and add your contributions](#EditAddContrib) - - [Send your contributions with a Pull Request](#SendPR) - - [Track your contribution and take into account feedback from contributors](#TrackContributions) - - [Bringing up errors and wishes by creating a way out](#RemonterIssues) - - [Correct and Inspect Contributions](#ReviewContrib) - - [Going further with Git and working locally on his computer](#PlusLoinGitOrdi) - - [Some web resources](#WebLinks) +# Propel a contribution with GitHub It is of course possible to contribute directly to the YunoHost documentation, but this is not the most convenient way to do so for both the contributor and the person who will inject your contribution into the documentation. Here is a tutorial to understand and create a contribution to the Yunohost documentation using [Git](https://git-scm.com/) and [github.com](http://github.com/) which is the Git forge service that hosts and stores the YunoHost source code and documentation. -## Create an account on github.com +## Create an account on github.com To be able to send your contributions via GitHub, you need to have an account on GitHub, to create the account you will need a valid email address that you have access to. GitHub is a powerful tool with many features, the interface can be a little scary at first. You don't have to give your first and last names, you can use a nickname (when you register `Username`). */iframe video create a GitHub account /* -## Fork the YunoHost documentation in your personal repository +## Fork the YunoHost documentation in your personal repository To fork the source code allows you to create a new branch of development of a software source code or in this case the source code of the documentation. By creating a new branch, this allows you to modify the code and add your contributions without altering the code of the `master' branch, which is the public release of the documentation. This allows you not to have to write down everything at once, but to do it in several steps. (Especially for contributions that require more time). Forking a project on GitHub is extremely simple, just click on the Fork button, this will create a new repository on your GitHub account. @@ -33,28 +22,28 @@ In the title of the new repository, you will see where the repository comes from > If you forge the repository of another contributor than yunohost, you'll get the same files. Except that when you send your changes, they will be sent to the contributor and not to the yunohost repository. The advantage is that it allows you to develop another branch created by the contributor and work with another person on an improvement before submitting it to the main repository. > It is not possible to have a fork from a contributor's repository and the original repository fork at the same time in your own account. -## Modify and add your contribution +## Modify and add your contribution Once the repository is forked (copied), you will need to create a new development branch within your repository. It is through this branch that you will modify the files and thus propose improvements to the documentation. The fact that it is a new branch will allow you to make a Pull Request, i.e. a request to add your contributions to the `master' branch, which is the main documentation branch. The development rules on GitHub change depending on the developers of each repository, some have a testing branch in which to offer contributions. More information on what a branch on git-scm.com is: [Branching with Git - What a branch is](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). */iframe video edit files add contribution /* -## Send your contribution by a Pull Request +## Send your contribution by a Pull Request Create a Pull Request when you want to share your work with the other contributors and integrate it into the master repository (Yunohost's main repository). When publishing a Pull Request, commonly called PR, contributors will be able to amend, comment, add, correct your contribution before it is fully integrated into the repository. -## Track your contribution and take into account feedback from contributors +## Track your contribution and take into account feedback from contributors When you've already create a Pull Request (PR), changes to your development branch in the Git repository will automatically be added to the PR. This doesn't require any additional action. You can also include proposed changes from contributors, who, when they audit the code, may find errors or new, better wording. -## Bringing up mistakes and wishes through issues +## Bringing up mistakes and wishes through issues YunoHost has a specific Git repository to collect issues: [github.com/YunoHost/issues](https://github.com/YunoHost/issues) An issue, also called a ticket, is an identified problem or a development wish; in this case for documentation, but it is valid for any software repository. Within the framework of the YunoHost documentation it will be mainly proposed issues for the development of the documentation, the identified problems being easily correctable. -## Going further with Git and working on his workstation +## Going further with Git and working on his workstation Using the power of Git to work on your personal computer means you don't have to create a `commit' each time you save modified documentation pages. It also allows you to use tools and software that make it easier to distinguish between tags used in a documentation page. - Online resource: [docs.microsoft.com - Setting up a Git repository locally for documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) -## Some resources elsewhere on the net to go further +## Some resources elsewhere on the net to go further - [Managing your code with Git and GitHub - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) - [Git User Interface - git-scm.com](https://git-scm.com/download/gui/linux) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index faa2d579..3590179b 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -1,26 +1,15 @@ # Propulser une contribution avec Git -**Index** - - [Création d'un compte sur github.com](#CreationCompteGithub) - - [Forker la documentation de YunoHost dans votre dépôt personnel](#ForkerDocumentationYunoHost) - - [Modifier les fichiers et ajouter vos contributions](#ModifAjoutContrib) - - [Envoyer vos contributions avec une Pull Request](#EnvoyerPR) - - [Suivre votre contribution et prendre en compte les retours des contributeurs·trices](#SuivreContributions) - - [Faire remonter des erreurs et des souhaits en créant une issue](#RemonterIssues) - - [Corriger et inspecter les contributions](#ReviewContrib) - - [Aller plus loin avec Git et travailler en local sur son ordinateur](#PlusLoinGitOrdi) - - [Quelques ressources sur le web](#LiensWeb) - Il est bien sûr possible de contribuer directement sur la documentation de YunoHost, mais ce n'est pas la manière la plus pratique de le faire tant pour le/la contributeur·trice que pour la personne qui va injecter votre contribution dans la documentation. Voici un tutoriel pour comprendre et créer une contribution à la documentation de Yunohost en utilisant l'outil [Git (en)](https://git-scm.com/) et [github.com](http://github.com/) qui est le service de forge Git qui héberge et stocke le code source de YunoHost ainsi que sa documentation. -## Création d'un compte sur github.com +## Création d'un compte sur github.com Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur GitHub, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. GitHub est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utiliser un pseudonyme (lors de l'inscription `Username`). */iframe video creer compte GitHub /* -## Forker la documentation de YunoHost dans votre dépôt personel +## Forker la documentation de YunoHost dans votre dépôt personel Forker le code source permet de créer une nouvelle branche de développement d'un code source de logiciel ou dans le cas présent, le code source de la documentation. En créant une nouvelle branche, cela vous permet de modifier le code et d'ajouter vos contributions sans altérer le code de la branche `master` qui est le rendu public de la documentation. Ce qui vous permet de ne pas devoir tout marquer mais le faire en plusieurs étapes. (Notamment pour les contributions demandant plus de temps de travail). Forker un projet sur GitHub est extrêmement simple, il suffit ce cliquer sur le bouton Fork, cela créera un nouveau dépôt sur votre espace de GitHub. @@ -30,33 +19,32 @@ Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dép */iframe video forker code source GitHub /* - > **Point de vigilance !** > Si vous forkez le dépôt d'un autre contributeur que yunohost, vous aurez les mêmes fichiers. Sauf que quand vous enverrez vos modifications, elles seront envoyées au contributeur et non au dépôt yunohost. L'avantage est que ça vous permet de développer une autre branche créee par le contributeur et ainsi travailler avec une autre personne à une amélioration avant proposition au dépôt principal. > Il n'est pas possible d'avoir un fork du dépot d'un contributeur et le fork dépôt d'origine au même moment dans votre propre dépôt. -## Modifier et ajouter votre contribution +## Modifier et ajouter votre contribution Une fois le dépôt forker (copié), il faudra créer une nouvelle branche de développement au sein de votre dépôt. C'est à travers cette branche que vous allez modifier les fichiers et ainsi proposer des améliorations de la documentation. Le fait que ce soit une nouvelle branche vous permettra par la suite de faire une Pull Request, c'est à dire une demande d'ajout de vos contributions au sein de la branche `master` qui est la branche principale de la documentation. Les règles de développement sur GitHub change selon les développeurs de chaque dépôt, certains ont une branche testing dans laquelle il faut proposer les contributions. Plus d'informations sur qu'est une branche sur git-scm.com : [Les branches avec Git - Ce qu'est une branche](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). */iframe video modifier fichiers ajouter contribution /* -## Envoyer votre contribution par une Pull Request +## Envoyer votre contribution par une Pull Request Faire une Pull Request correspond au moment ou vous souahitez partager votre travaille avec le reste des contributeurs⋅trices et l'intégrer au dépot master (dépôt principale de Yunohost). Lors de la publication d'un Pull Request, couramment nommé PR, les contributeurs⋅trices pourront amender, commenter, ajouter, corriger votre contribution avant intégration complète au dépot. -## Suivre votre contribution et prendre en compte les retours des contributeurs·trices +## Suivre votre contribution et prendre en compte les retours des contributeurs·trices Lorsque vous avez déjà fait une PR (Pull Request), les modifications de votre branche de développement sur le dépôt Git se rajouteront automatiquement à la PR. Cela ne nécessite aucune action supplémentaire. Vous pouvez aussi intégrer les propositions de modifications de contributeurs, qui lorsqu'ils/elles auditeront le code, peuvent trouver des erreurs ou de nouvelles formulations plus adaptées. -## Faire remonter des erreurs et des souhaits par des issues +## Faire remonter des erreurs et des souhaits par des issues YunoHost dispose d'un dépôt Git spécifique pour le recueil des issues : [github.com/YunoHost/issues](https://github.com/YunoHost/issues) Une issue aussi appelé ticket, est un problème identifié ou alors un souhait de développement ; dans le cas présent pour la documentation, mais c'est valable pour tout dépôt logiciel. Dans le cadre de la documentation de YunoHost il sera surtout proposé des issues pour le développement de la documentation, les problèmes identifiés étant facilement corrigeable. -## Aller plus loin avec Git et travailler sur son poste de travail +## Aller plus loin avec Git et travailler sur son poste de travail Utiliser la puissance de Git et ainsi travailler sur son ordinateur personnel, permet entre autres de ne pas avoir à créer de `commit` à chaque enregistrement intermédiaire des pages de documentations modifiées. Cela permet aussi d'utiliser des outils et logiciels qui permettent une distinction plus facile des codes utilisés dans une page de documentation. - Ressource en ligne : [docs.microsoft.com - Configurer un référentiel Git localement pour la documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) -## Quelques ressources ailleurs sur le net pour aller plus loin +## Quelques ressources ailleurs sur le net pour aller plus loin - [Gérer son code avec Git et GitHub - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) - [Interface utilisateurs·trices de Git - git-scm.com](https://git-scm.com/download/gui/linux) diff --git a/doc_writing_guide.md b/doc_writing_guide.md index ec2e62da..14d64208 100644 --- a/doc_writing_guide.md +++ b/doc_writing_guide.md @@ -1,37 +1,39 @@ # Guide to writing application documentation -## Pages for user / administative documentation +## User documentation pages / administrateurs⋅trices -Add a one-click installation button (like for example: https://yunohost.org/#/app_piwigo) +Add a one-click install button (such as https://yunohost.org/#/app_piwigo_fr) and a button on the application integration level. -Classification of the application can be done using the available tags (genre, Git, management association, e-mails, etc.) -*/Find a suitable documentation license. Permissive or not? (CC BY_SA)/* +Classification of available applications by tags (genre, Git, association management, emails, etc.). -## Clarify the types of uses it has (special and general application (editorial choice) +*/Definition of a license to distribute the documentation, but which one? Permissive or not (CC BY-SA)/* - + For links to other languages, add (en)` for Egnlish, and so on. +## Some typical and general uses (writing framework) -### Things to include in application documentation + + When a link points to a page that is not in the language of the original page, it is customary to add `(en)` (for a link that points to a page in English). + + rename the images in the following order:`description_application.ext`. - 1. An index of what is included, without reiterating the full content of what is to be found in subsequent chapters. - 1. A one-click install button. +### General frame application documentation + + 1. Logo (dimension 80 pixels high) + level 1 title. + 1. One-click install button, Integration level for each type of processor. + 1. An index at the top of the documentation with cross-references to all the chapters of the documentation. 1. A general presentation of the application and its function. - 1. A section detailing administration of the application. - 1. A further section on changes specific to YunoHost. - 1. A section about the desktop client (if applicable). Links to different third party applications (if they exist), (or a link to a list of applications [framalibre.org](https://framalibre.org)) or a link to a page that has to do with the different official applications (if applicable). - + A further section: - - Links to the official website. - - Links to the package in YunoHost. - 1. Documentation of any further uses (documentation of an application). + 2. A configuration part of the application. + 1. An administration part of the application. + 1. A part on limitations related to YunoHost. + 1. A part on desktop clients (if any). A link to different third-party applications if there are several (possible link to the applications catalgue [framalibre.org](https://framalibre.org)) or a link to the page about desktop applications if official applications are provided. + 1. A part with : + - the link to the official site + - the link to the documentation + - Links to the YunoHost package and issues + +Screen for writing documentation pages: [here](/app_writing_guide) ## Roadmap -1. Documentation of the applications. - 1. Document how the application operates in use (marked: work) level 8/7/6. - 1. Translate the documentation at-least into French and English. - 1. Send a PR to the repository of the app that details its documentation. - -## Document an application - -Do you need to detail how it works? +1. Document applications. + 1. Document applications at work (marked: work) level 8/7/6. + 1. Translate the documentation page at least into French and English. + 1. Do a PR on the application repository diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index c04910fa..f62f3598 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -2,7 +2,8 @@ ## Pages de documentations utilisateurs.trices / administrateurs⋅trices -Ajouter un bouton installer en un clique (comme par exemple : https://yunohost.org/#/app_piwigo_fr) +Ajouter un bouton installer en un clique (comme par exemple : https://yunohost.org/#/app_piwigo_fr) et un bouton sur le niveau d'intégration de l'application. + Classement des applications disponibles par tags (genre, Git, gestion associations, courriels, etc.). @@ -16,18 +17,19 @@ Classement des applications disponibles par tags (genre, Git, gestion associatio ### Trame général documentation applications 1. Logo (dimension 80 pixels de hauteurs) + titre de niveau 1. - 1. Bouton installer en un clique, Niveau d'intégration, et le status. + 1. Bouton installer en un clique, Niveau d'intégration pour chaque type de processeur. 1. Un index en tête de documentations avec renvois vers l'ensemble des chapitres de la documentation. 1. Une présentation général de l'application et de sa fonction. + 2. UNe partie configuration de l'application. 1. Une partie administration de l'application. - 1. Une partie aller plus loin, Manipulations techniques, liés spécifiquement à YunoHost mais aussi les limitations. + 1. Une partie sur les limitation liés à YunoHost. 1. Une partie sur les client desktop (si il en existe). Lien vers différentes applications tierces si il en existe plusieurs (lien possible avec le catalgue d'applications [framalibre.org](https://framalibre.org)) ou un lien vers la page concernant les applications desktop si des applications officiels sont fournis. - 1. Documentation de l'utilisation si besoin (cf. Documenter une application). 1. Une partie avec : - - les liens vers le site officiel - - Les liens vers le package de YunoHost + - le lien vers le site officiel + - le lien vers la documentation + - Les liens vers le package de YunoHost et issues -Trame markdown pour la rédaction des pages de documentations : [ici](/app_writing_guide_fr) +Trame pour la rédaction des pages de documentations : [ici](/app_writing_guide) ## Feuille de route @@ -35,33 +37,3 @@ Trame markdown pour la rédaction des pages de documentations : [ici](/app_writi 1. Documenter les applications au travail (marqué : work) niveau 8/7/6. 1. Traduire la page de documentation à minima en français et en anglais. 1. Faire une PR sur le dépôt de l'application concerné vers la page de documentation. - -## Documenter une application - -Faut-il documenter son utilisation ? - -``` -La documentation de l'application est elle disponible en français & en anglais ? - / \ - / \ - / \ - / \ - / \ - ------- ------- - | Oui | | Non |----> Documenter l'application <----<----<----<----- - ------- ------- dans la documentation de YunoHost | - | | - La documentation utilisateur est elle de bonne qualité et suffisante ? | - / \ | - / \ | - / \ | - / \ | - / \ | - ------- ------- | - Renvoi dans la page de doc ------- | Oui | | Non |---->---->---->---->---->---->---->---->---->---->---->---->---->- -YunoHost vers le site officiel ------- ------- -``` - -## Potentielles problématiques rencontrés ? - -Quid des applications qui sont des containers à d'autres applications, tel que Nextcloud et qui présentes de multiples possibilités d'usages. From 3399103b50125f2cc0a5fd761b17bdf3d982127a Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 17 Apr 2020 12:05:29 +0200 Subject: [PATCH 111/135] Fix errors --- app_pihole.md | 75 ++++++++++++++++++++++++++++++++++++++-- app_pihole_fr.md | 16 +++++---- contributordoc.md | 2 +- contributordoc_fr.md | 2 +- doc_markdown_guide_fr.md | 33 ++++++++++-------- 5 files changed, 101 insertions(+), 27 deletions(-) diff --git a/app_pihole.md b/app_pihole.md index 86ede826..cfb6e255 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -1,5 +1,74 @@ -===== Pihole ===== +# Pi-hole's logo Pi-hole -Homepage: https://pi-hole.net +[![Install Pi-hole with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=pihole) [![Integration level](https://dash.yunohost.org/integration/pihole.svg)](https://dash.yunohost.org/appci/app/pihole) -**Pi-hole®** Network-wide ad blocking via your own DNS server, with nice Performance And Statistics web page. +### Index + +- [Use Pi-Hole as DHCP server](#use-pi-hole-as-server-dhcp) + - [Configure Pi-Hole](#configure-pi-hole) + - [Configure my router](#configure-my-router) + - [Restore Network](#restore-network) +- [Useful links] [# Useful links] + +Pi-hole is a network-level ad blocker that acts as a DNS liar and possibly a DHCP3 server for use on a private network. It is designed to be installed on embedded devices with network capabilities, such as the Raspberry Pi, but can be used on other machines running Linux or in virtualized environments. + +## Using Pi-Hole as a DHCP server + +> **Warning, you should be aware that touching your DHCP could break your network. +In case your server is inaccessible, you will lose your dns resolution and IP address. +Thus, you would lose any connection to the internet and even the connection to your router.** + +> If you encounter this kind of problem, please read the section "How to restore my network". + +### Configuring Pi-hole + +There are 2 ways to configure Pi-hole to be used as your DHCP server. +- Either you can choose to use it when you install the application. +- Or you can activate the DHCP server afterwards in the "Settings" tab, part "Pi-hole DHCP Server". +In this second case, it may be preferable to force the server ip to a static address. + +### Configure my router + +Your router or your ISP's router has a DHCP server enabled by default. +If you keep this DHCP, along with Pi-hole's, you will have transparent conflicts between them. +The first DHCP server to respond will distribute its own ip and settings. +So you need to turn off your router's DHCP server and let Pi-hole manage your network. + +#### Why should I use Pi-hole's DHCP? + +By using Pi-hole's DHCP, you allow Pi-hole to give its dns configuration to each of your clients. This way, every request will be filtered by Pi-hole. + +Another case of using Pi-hole DHCP is if you have hairpinning problems (you can't connect to your server because its ip is your public ip, and your router doesn't allow this). +In this case, using Pi-hole's dns will allow you to connect to your server by its local address rather than its public address. + +### Restore the network + +> Oops! +Your Pi-hole server has crashed, and you don't have DHCP anymore. +Don't panic. We'll get through this. + +Use your favorite device on your desktop computer. +And first, get your network interface (usually `eth0`). +```bash +sudo ifconfig +``` + +Then change your ip to a static ip. +```bash +sudo ifconfig eth0 192.168.1.100 +``` + +Now you can connect to your router and reboot its DHCP server to use it again. +You can now remove your static ip and get a dynamic ip again. +```bash +sudo ifconfig eth0 0.0.0 && sudo dhclient eth0 +``` + +> Remember to turn off your router's DHCP if your server is running again. + +## Useful links + ++ Website: [WEBSITE](#) ++ Official documentation: [DOCUMENTATION](#) ++ Application software repository: [github.com - YunoHost-Apps/pihole](https://github.com/YunoHost-Apps/pihole_ynh) ++ Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/pihole/issues](https://github.com/YunoHost-Apps/pihole_ynh/issues) diff --git a/app_pihole_fr.md b/app_pihole_fr.md index 98e7e6bc..bafd85a7 100644 --- a/app_pihole_fr.md +++ b/app_pihole_fr.md @@ -1,12 +1,12 @@ # logo de Pi-hole Pi-hole -[![Installer Pi-hole avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=pihole)[![Niveau d'intégration](https://dash.yunohost.org/integration/pihole.svg)](https://dash.yunohost.org/appci/app/pihole) ![](https://ci-apps.yunohost.org/ci/badges/pihole.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/pihole.maintain.svg) +[![Installer Pi-hole avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=pihole)[![Niveau d'intégration](https://dash.yunohost.org/integration/pihole.svg)](https://dash.yunohost.org/appci/app/pihole) -- [Utiliser Pi-Hole comme serveur DHCP](#utiliser-pi-Hole-comme-serveur-dhcp) +- [Utiliser Pi-Hole comme serveur DHCP](#utiliser-pi-hole-comme-serveur-dhcp) - [Configurer Pi-Hole](#configurer-pi-hole) - [Configurer mon routeur](#configurer-mon-routeur) - - [Restaurer le réseau](#restaurer-le-reseau) -- [Liens utiles](#quelques-liens-utiles) + - [Restaurer le réseau](#restaurer-le-réseau) +- [Liens utiles](#liens-utiles) Pi-hole est un bloqueur de publicité au niveau du réseau qui agit comme un DNS menteur et éventuellement un serveur DHCP3, destiné à être utilisé sur un réseau privé. Il est conçu pour être installé sur des périphériques intégrés dotés de capacités réseau, tels que le Raspberry Pi, mais il peut être utilisé sur d'autres machines exécutant Linux ou dans des environnements virtualisés. @@ -64,7 +64,9 @@ sudo ifconfig eth0 0.0.0.0 && sudo dhclient eth0 > N'oubliez pas d'éteindre le DHCP de votre routeur si votre serveur fonctionne à nouveau. -## Quelques liens utiles +## Liens utiles -+ Site officiel : [pi-hole.net](https://pi-hole.net) -+ Documentation Pi-Hole : [docs.pi-hole.net](https://docs.pi-hole.net/) + + Site web : [pi-hole.net (en)](https://pi-hole.net) + + Documentation officielle : [docs.pi-hole.net (en)](https://docs.pi-hole.net/) + + Dépôt logiciel de l'application : [github.com - YunoHost-Apps/pihole](https://github.com/YunoHost-Apps/pihole_ynh) + + Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com - YunoHost-Apps/pihole/issues](https://github.com/YunoHost-Apps/pihole_ynh/issues) diff --git a/contributordoc.md b/contributordoc.md index 9d6a6212..7f117acb 100644 --- a/contributordoc.md +++ b/contributordoc.md @@ -2,7 +2,7 @@ * [General ways of contributing to YunoHost](/contribute) * [Writing documentation](/write_documentation) - * [Documentation wrinting guide](doc_writing_guide) + * [Documentation wrinting guide](/doc_writing_guide) * [markdown guide](/doc_markdown_guide) * [Propulser son code avec Git & GitHub](/doc_use_git) * [Chat rooms](/chat_rooms) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index afcc9e9b..49691e01 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -2,7 +2,7 @@ * [Liste des façons de contribuer à YunoHost](/contribute) * [Écrire de la documentation](/write_documentation) - * [Guide de redaction de la documentation](doc_writing_guide) + * [Guide de redaction de la documentation](/doc_writing_guide) * [Guide markdown](/doc_markdown_guide) * [Propulser son code avec Git & GitHub](/doc_use_git) * [Salons de discussion](/chat_rooms) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index dcc12fca..d28ca94e 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -31,8 +31,8 @@ Pour taper un retour à la ligne sans créer de nouveau paragraphe, il est néce En rédigeant ça : ```markdown -Pour du texte en *italique il faut encadrer par un astérisque`*`* -Pour rédiger du **texte en gras par deux astérisques** +Pour du texte en *italique il faut encadrer par un astérisque* `*` +Pour rédiger du **texte en gras par deux astérisques** `**` On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` ``` @@ -53,11 +53,12 @@ Pour créer un lien vers un site hors de la documentation de YunoHost : s'affichera comme tel : [Texte à afficher](https://lelien.tld) -C'est identique pour les pages de la documentation, excepté que le lien est interne. Il renvoie au fichier du wiki, sans extension de langgue et de fichier (le `_fr.md`) : +C'est identique pour les pages de la documentation, excepté que le lien est interne. Il renvoie au fichier du wiki, sans extension de langue et de fichier (le `_fr.md`) : ```markdown [Page du wiki](/write_documentation) ``` +Le lien renverra vers la page avec la bonne configuration de langue si la page existe. [Page du wiki](/write_documentation) ### Créer des ancres @@ -94,7 +95,7 @@ Il est possible de faire un lien avec une image, exemple : ``` [![Logo Yunohost](/images/logo.png)](/write_documentation) -L'encart de *texte à afficher en cas d'impossibilité de chargement de l'image* n'est pas obligatoire mais fortement recommandé. +L'encart de *texte à afficher en cas d'impossibilité de chargement de l'image* entre les corchets dans le lien de l'image n'est pas obligatoire mais fortement recommandé. ## Formater une citation @@ -129,9 +130,9 @@ Les listes ordonnées peuvent s'incrémenter autant que vous le désirez, il n'e 1. liste 3 1. Liste 3a 1. Liste 3b - 3. Liste 3b1 - 3. Liste 3b2 - 3. Liste 3b3 + 7. Liste 3b1 + 7. Liste 3b2 + 7. Liste 3b3 4. Liste 1 4. Liste 2 4. liste 3 @@ -206,41 +207,43 @@ Pour créer un tableau, il faut utiliser la barre verticale `|` et les tirets `- | **Un tableau** | Une colonne | Une seconde | Autant que l'on veut | |:--------------:|:-----------:|:-----------:|:--------------------:| | Une ligne formatée | | Et du **texte en gras** | Ou en *italique* | -| D'autres lignes | |![une image](/images/cd.jpg) | [Ou un lien]( contributordoc) | +| D'autres lignes | |![une image](/images/cd.jpg) | [Ou un lien](/contributordoc) | ``` Ce qui afficherait ça : | **Un tableau** | Une colonne | Une seconde | Autant que l'on veut | |:--------------:|:-----------:|:-----------:|:--------------------:| | Une ligne formatée | | Et du **texte en gras** | Ou en *italique* | -| D'autres lignes | |![une image](/images/cd.jpg) | [Ou un lien]( contributordoc) | +| D'autres lignes | |![une image](/images/cd.jpg) | [Ou un lien](/contributordoc) | ## Bloc de codes Pour afficher du texte en brut, des `blocs de codes` peuvent être créer en utilisant l'accent grave `Alt Gr + è` : -````markdown -Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` +```markdown +Soit inline, par exemple pour mettre en valeur une touche comme 'Ctrl' ``` + ou directement en bloc. La seule différence est dans la quantité d'accents graves : -Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne +Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne Ce qui donnera au rendu : +``` +''' Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` - +''' ``` ou directement en bloc. La seule différence est dans la quantité d'accents graves : Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne -``` ## Liens utiles + La documentation du langage originel Markdown : [daringfireball.net/projects/markdown (en)](https://daringfireball.net/projects/markdown/) + Tutoriel Markdown sur [markdowntutorial.com (en)](https://markdowntutorial.com) -## Aller plus loin +## Aller plus loin De manière plus général, pour comprendre comment est formaté un texte il suffit juste d'inspecter le document source avec une application note. Ce n'est pas pour autant que le wiki de YunoHost pourra l'exploiter. Il existe bien d'autres possibilités d'utiliser la syntaxe markdown, n'hésitez pas à ajouter des fonctionnalités manquantes. Si vous avez observé des manques et/ou que vous avez des questions, contactez-nous sur [le forum](https://forum.yunohost.org) ou par message directe sur le salon IRC : **#yunohost** sur [irc.freenode.net](https://irc.freenode.net). From fb41e9c8a4fb6786326ab6b2be29234bfc32662d Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 17 Apr 2020 12:57:12 +0200 Subject: [PATCH 112/135] update --- app_pihole.md | 10 +++++----- doc_markdown_guide_fr.md | 23 +++++++++++------------ 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app_pihole.md b/app_pihole.md index cfb6e255..bd7edc66 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -4,7 +4,7 @@ ### Index -- [Use Pi-Hole as DHCP server](#use-pi-hole-as-server-dhcp) +- [Using Pi-Hole as a DHCP server](#using-pi-hole-as-a-dhcp-server) - [Configure Pi-Hole](#configure-pi-hole) - [Configure my router](#configure-my-router) - [Restore Network](#restore-network) @@ -20,7 +20,7 @@ Thus, you would lose any connection to the internet and even the connection to y > If you encounter this kind of problem, please read the section "How to restore my network". -### Configuring Pi-hole +### Configure Pi-Hole There are 2 ways to configure Pi-hole to be used as your DHCP server. - Either you can choose to use it when you install the application. @@ -41,7 +41,7 @@ By using Pi-hole's DHCP, you allow Pi-hole to give its dns configuration to each Another case of using Pi-hole DHCP is if you have hairpinning problems (you can't connect to your server because its ip is your public ip, and your router doesn't allow this). In this case, using Pi-hole's dns will allow you to connect to your server by its local address rather than its public address. -### Restore the network +### Restore network > Oops! Your Pi-hole server has crashed, and you don't have DHCP anymore. @@ -68,7 +68,7 @@ sudo ifconfig eth0 0.0.0 && sudo dhclient eth0 ## Useful links -+ Website: [WEBSITE](#) -+ Official documentation: [DOCUMENTATION](#) ++ Website: [pi-hole.net](https://pi-hole.net) ++ Official documentation: [docs.pi-hole.net](https://docs.pi-hole.net/) + Application software repository: [github.com - YunoHost-Apps/pihole](https://github.com/YunoHost-Apps/pihole_ynh) + Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/pihole/issues](https://github.com/YunoHost-Apps/pihole_ynh/issues) diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index d28ca94e..59d0e4f4 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -38,8 +38,8 @@ On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` On peut lire ça : -Pour du texte en *italique il faut encadrer par un astérisque `*` * -Pour rédiger du **texte en gras par deux astérisques** +Pour du texte en *italique il faut encadrer par un astérisque* `*` +Pour rédiger du **texte en gras par deux astérisques** `**` On peut aussi ~~barrer le texte~~ en encadrant avec deux tildes `~` ## Créer des liens @@ -69,7 +69,7 @@ Du texte qui sera ne sait même pas qu'il a une ancre ``` Ce qui s'affiche : -Du texte qui sera ne sait même pas qu'il a une ancre +Du texte qui sera ne sait même pas qu'il a une ancre Il ne reste plus qu'à désigner l'ancre au texte que l'on souhaite rendre interactif : @@ -77,7 +77,7 @@ Il ne reste plus qu'à désigner l'ancre au texte que l'on souhaite rendre inter [Mon titre qui renvoie](#nom-du-titre) ``` -[Mon titre qui renvoie](#nom-du-titre) +[Mon titre qui renvoie](#nomdelancre) ## Afficher des images @@ -158,7 +158,7 @@ On obtient : 3. Liste 5 4. liste 6 -### Listes non ordonnées +### Listes non ordonnées Pour créer une liste non ordonnée, il faut utiliser les symboles `*`, `+` ou `*`. Cela ne changera pas l'apparence du marqueur dans la restitution du texte. C'est l'incrémentation de la liste qui définira le visuel. Pour une meilleure lecture du texte brut, il peut être bien d'utiliser les différents symboles pour marquer l'incrémentation, mais c'est bien les trois espaces avant la sous-liste qui désigneront l'incrémentation. Comme tel : @@ -221,7 +221,7 @@ Ce qui afficherait ça : Pour afficher du texte en brut, des `blocs de codes` peuvent être créer en utilisant l'accent grave `Alt Gr + è` : ```markdown -Soit inline, par exemple pour mettre en valeur une touche comme 'Ctrl' +Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` ``` ou directement en bloc. @@ -230,19 +230,18 @@ Minimum trois accents graves en ouverture et fermeture de bloc et deux accent gr Ce qui donnera au rendu : -``` -''' Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` -''' -``` + +```markdown ou directement en bloc. La seule différence est dans la quantité d'accents graves : -Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne +Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne +``` ## Liens utiles + La documentation du langage originel Markdown : [daringfireball.net/projects/markdown (en)](https://daringfireball.net/projects/markdown/) - + Tutoriel Markdown sur [markdowntutorial.com (en)](https://markdowntutorial.com) + + Tutoriel Markdown sur [markdowntutorial.com](https://markdowntutorial.com) ## Aller plus loin From 6fbe1fa79370668c2de48b62d89b6f7154a9e1b6 Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 17 Apr 2020 13:04:15 +0200 Subject: [PATCH 113/135] Fix errors --- app_pihole.md | 2 +- doc_markdown_guide_fr.md | 18 +++++++++--------- doc_use_git.md | 10 ---------- doc_use_git_fr.md | 10 ---------- doc_writing_guide.md | 5 +---- doc_writing_guide_fr.md | 5 +---- 6 files changed, 12 insertions(+), 38 deletions(-) diff --git a/app_pihole.md b/app_pihole.md index bd7edc66..9333f479 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -8,7 +8,7 @@ - [Configure Pi-Hole](#configure-pi-hole) - [Configure my router](#configure-my-router) - [Restore Network](#restore-network) -- [Useful links] [# Useful links] +- [Useful links](#useful-links) Pi-hole is a network-level ad blocker that acts as a DNS liar and possibly a DHCP3 server for use on a private network. It is designed to be installed on embedded devices with network capabilities, such as the Raspberry Pi, but can be used on other machines running Linux or in virtualized environments. diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 59d0e4f4..0fd54bd3 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -130,9 +130,9 @@ Les listes ordonnées peuvent s'incrémenter autant que vous le désirez, il n'e 1. liste 3 1. Liste 3a 1. Liste 3b - 7. Liste 3b1 - 7. Liste 3b2 - 7. Liste 3b3 + 1. Liste 3b1 + 1. Liste 3b2 + 1. Liste 3b3 4. Liste 1 4. Liste 2 4. liste 3 @@ -148,9 +148,9 @@ On obtient : 1. liste 3 1. Liste 3a 1. Liste 3b - 3. Liste 3b1 - 3. Liste 3b2 - 3. Liste 3b3 + 1. Liste 3b1 + 1. Liste 3b2 + 1. Liste 3b3 4. Liste 1 4. Liste 2 4. liste 3 @@ -158,7 +158,7 @@ On obtient : 3. Liste 5 4. liste 6 -### Listes non ordonnées +### Listes non ordonnées Pour créer une liste non ordonnée, il faut utiliser les symboles `*`, `+` ou `*`. Cela ne changera pas l'apparence du marqueur dans la restitution du texte. C'est l'incrémentation de la liste qui définira le visuel. Pour une meilleure lecture du texte brut, il peut être bien d'utiliser les différents symboles pour marquer l'incrémentation, mais c'est bien les trois espaces avant la sous-liste qui désigneront l'incrémentation. Comme tel : @@ -231,13 +231,13 @@ Minimum trois accents graves en ouverture et fermeture de bloc et deux accent gr Ce qui donnera au rendu : Soit inline, par exemple pour mettre en valeur une touche comme `Ctrl` - +''' ```markdown ou directement en bloc. La seule différence est dans la quantité d'accents graves : Minimum trois accents graves en ouverture et fermeture de bloc et deux accent grave qui encadre le morceau de texte à formater dans une ligne ``` - +''' ## Liens utiles + La documentation du langage originel Markdown : [daringfireball.net/projects/markdown (en)](https://daringfireball.net/projects/markdown/) diff --git a/doc_use_git.md b/doc_use_git.md index bc875f29..6c846bbd 100644 --- a/doc_use_git.md +++ b/doc_use_git.md @@ -6,8 +6,6 @@ It is of course possible to contribute directly to the YunoHost documentation, b To be able to send your contributions via GitHub, you need to have an account on GitHub, to create the account you will need a valid email address that you have access to. GitHub is a powerful tool with many features, the interface can be a little scary at first. You don't have to give your first and last names, you can use a nickname (when you register `Username`). -*/iframe video create a GitHub account /* - ## Fork the YunoHost documentation in your personal repository To fork the source code allows you to create a new branch of development of a software source code or in this case the source code of the documentation. By creating a new branch, this allows you to modify the code and add your contributions without altering the code of the `master' branch, which is the public release of the documentation. This allows you not to have to write down everything at once, but to do it in several steps. (Especially for contributions that require more time). @@ -16,8 +14,6 @@ Forking a project on GitHub is extremely simple, just click on the Fork button, In the title of the new repository, you will see where the repository comes from, in this case `YunoHost/doc`. ![Screenshots title and subtitle of the repository](/images/dug_fork_source.png) -*/iframe video forker source code GitHub /* - > **Point of vigilance !** > If you forge the repository of another contributor than yunohost, you'll get the same files. Except that when you send your changes, they will be sent to the contributor and not to the yunohost repository. The advantage is that it allows you to develop another branch created by the contributor and work with another person on an improvement before submitting it to the main repository. > It is not possible to have a fork from a contributor's repository and the original repository fork at the same time in your own account. @@ -26,8 +22,6 @@ In the title of the new repository, you will see where the repository comes from Once the repository is forked (copied), you will need to create a new development branch within your repository. It is through this branch that you will modify the files and thus propose improvements to the documentation. The fact that it is a new branch will allow you to make a Pull Request, i.e. a request to add your contributions to the `master' branch, which is the main documentation branch. The development rules on GitHub change depending on the developers of each repository, some have a testing branch in which to offer contributions. More information on what a branch on git-scm.com is: [Branching with Git - What a branch is](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). -*/iframe video edit files add contribution /* - ## Send your contribution by a Pull Request Create a Pull Request when you want to share your work with the other contributors and integrate it into the master repository (Yunohost's main repository). When publishing a Pull Request, commonly called PR, contributors will be able to amend, comment, add, correct your contribution before it is fully integrated into the repository. @@ -46,7 +40,3 @@ Using the power of Git to work on your personal computer means you don't have to ## Some resources elsewhere on the net to go further - [Managing your code with Git and GitHub - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) - [Git User Interface - git-scm.com](https://git-scm.com/download/gui/linux) - -*/ To do/* -*/Add videos explanation/* - Add videos explanation/* -*/Add ## Correct and inspect contributions /* diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 3590179b..8cdab1c3 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -6,8 +6,6 @@ Il est bien sûr possible de contribuer directement sur la documentation de Yuno Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur GitHub, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. GitHub est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utiliser un pseudonyme (lors de l'inscription `Username`). -*/iframe video creer compte GitHub /* - ## Forker la documentation de YunoHost dans votre dépôt personel Forker le code source permet de créer une nouvelle branche de développement d'un code source de logiciel ou dans le cas présent, le code source de la documentation. En créant une nouvelle branche, cela vous permet de modifier le code et d'ajouter vos contributions sans altérer le code de la branche `master` qui est le rendu public de la documentation. Ce qui vous permet de ne pas devoir tout marquer mais le faire en plusieurs étapes. (Notamment pour les contributions demandant plus de temps de travail). @@ -17,8 +15,6 @@ Forker un projet sur GitHub est extrêmement simple, il suffit ce cliquer sur le Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dépôt, dans le cas présent `YunoHost/doc` ![Capture d'écran titre et sous-titre du dépot](/images/dug_fork_source.png) -*/iframe video forker code source GitHub /* - > **Point de vigilance !** > Si vous forkez le dépôt d'un autre contributeur que yunohost, vous aurez les mêmes fichiers. Sauf que quand vous enverrez vos modifications, elles seront envoyées au contributeur et non au dépôt yunohost. L'avantage est que ça vous permet de développer une autre branche créee par le contributeur et ainsi travailler avec une autre personne à une amélioration avant proposition au dépôt principal. > Il n'est pas possible d'avoir un fork du dépot d'un contributeur et le fork dépôt d'origine au même moment dans votre propre dépôt. @@ -27,8 +23,6 @@ Dans le titre du nouveau dépôt, vous verrez de quelle provenance vient le dép Une fois le dépôt forker (copié), il faudra créer une nouvelle branche de développement au sein de votre dépôt. C'est à travers cette branche que vous allez modifier les fichiers et ainsi proposer des améliorations de la documentation. Le fait que ce soit une nouvelle branche vous permettra par la suite de faire une Pull Request, c'est à dire une demande d'ajout de vos contributions au sein de la branche `master` qui est la branche principale de la documentation. Les règles de développement sur GitHub change selon les développeurs de chaque dépôt, certains ont une branche testing dans laquelle il faut proposer les contributions. Plus d'informations sur qu'est une branche sur git-scm.com : [Les branches avec Git - Ce qu'est une branche](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). -*/iframe video modifier fichiers ajouter contribution /* - ## Envoyer votre contribution par une Pull Request Faire une Pull Request correspond au moment ou vous souahitez partager votre travaille avec le reste des contributeurs⋅trices et l'intégrer au dépot master (dépôt principale de Yunohost). Lors de la publication d'un Pull Request, couramment nommé PR, les contributeurs⋅trices pourront amender, commenter, ajouter, corriger votre contribution avant intégration complète au dépot. @@ -47,7 +41,3 @@ Utiliser la puissance de Git et ainsi travailler sur son ordinateur personnel, p ## Quelques ressources ailleurs sur le net pour aller plus loin - [Gérer son code avec Git et GitHub - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) - [Interface utilisateurs·trices de Git - git-scm.com](https://git-scm.com/download/gui/linux) - -*/ To do/* -*/Ajouter vidéos explicative - Add videos explication/* -*/Ajouter ## Corriger et inspecter les contributions /* diff --git a/doc_writing_guide.md b/doc_writing_guide.md index 14d64208..13e87128 100644 --- a/doc_writing_guide.md +++ b/doc_writing_guide.md @@ -4,10 +4,7 @@ Add a one-click install button (such as https://yunohost.org/#/app_piwigo_fr) and a button on the application integration level. - -Classification of available applications by tags (genre, Git, association management, emails, etc.). - -*/Definition of a license to distribute the documentation, but which one? Permissive or not (CC BY-SA)/* +Classification of available applications by tags (genre, Git, association management, emails, etc). ## Some typical and general uses (writing framework) diff --git a/doc_writing_guide_fr.md b/doc_writing_guide_fr.md index f62f3598..d210baf6 100644 --- a/doc_writing_guide_fr.md +++ b/doc_writing_guide_fr.md @@ -4,10 +4,7 @@ Ajouter un bouton installer en un clique (comme par exemple : https://yunohost.org/#/app_piwigo_fr) et un bouton sur le niveau d'intégration de l'application. - -Classement des applications disponibles par tags (genre, Git, gestion associations, courriels, etc.). - -*/Définition d'une license de diffusion de la documentation, mais laquelle ? Permissive ou non (CC BY-SA)/* +Classement des applications disponibles par tags (genre, Git, gestion associations, courriels, etc). ## Quelques usages types et d'ordres général (trame de rédaction) From d8a43cbd2516ab7a4a2cb2edd51d00f3cbe66cf4 Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 17 Apr 2020 13:26:50 +0200 Subject: [PATCH 114/135] Fix doc markdown guide english --- doc_markdown_guide.md | 258 +++++++++++++++++++++++++++++++++++++-- doc_markdown_guide_fr.md | 21 ++-- 2 files changed, 259 insertions(+), 20 deletions(-) diff --git a/doc_markdown_guide.md b/doc_markdown_guide.md index b42deefe..928315e5 100644 --- a/doc_markdown_guide.md +++ b/doc_markdown_guide.md @@ -1,16 +1,252 @@ -# Markdown Guide +# Guide Markdown -Markdown is a markup language from 2004, with many add-ons supporting its function and existence. This guide explores the possibilities and formatting of the language in the context of YunoHost documentation, and not the Markdown language on its own. +Markdown is a markup language created in 2004, many add-ons developing the possibilities of this language exist. The objective of this guide is to aim for the exhaustiveness of the possibilities of this formatting language within the framework of the YunoHost documentation and not Markdown languages in general. -Markdown allows formatting of text using tags, in human-readable format; even with formatting. Outside of plaintext editors, a number of specific programs exist. (Markdown on [framalibre.org](https://framalibre.org/recherche-par-crit-res?keys=markdown)). It is easy to deal with. +Markdown allows text to be formatted using tags, it allows *human* reading of the text; even with formatting. Even if only one notepad is needed there are many markdowns software (Markdown on [framalibre.org](https://framalibre.org/recherche-par-crit-res?keys=markdown)). It is relatively easy to use. -## The different title levels +## The different levels of titles + +By writing titles as follows: +```Markdown +# Level 1 title +## Level 2 title +### Level 3 title +#### Level 4 title +### Level 5 title +#### Level 6 title +``` + +They appear like this: +# Level 1 title +## Level 2 title +### Level 3 title +#### Level 4 title +### Level 5 title +#### Level 6 title + +## Formatting in paragraphs + +To type a line break without creating a new paragraph, it is necessary to type **two consecutive spaces**. Otherwise, the text will continue in a row respecting the general constraints of the page style. + +By writing this : -Write headlines like this: ```markdown -# Level 1 -## Level 2 -### Level 3 -#### Level 4 -##### Level 5 -###### Level 6 +For text in *italic you have to frame it with an asterisk* `*` +To write **bold text by two asterisks** `**` +You can also ~~bar the text~~ by framing it with two tildes `~` +``` + +It reads like this: + +For text in *italic you have to frame it with an asterisk* `*` +To write **bold text by two asterisks** `**` +You can also ~~bar the text~~ by framing it with two tildes `~` + +## Create links ## + +To create a link to a site outside of the YunoHost documentation: + +```markdown +[Text to display](https://lelien.tld) +``` + +will be displayed as such: +[Text to display](https://lelien.tld) + +It is the same for the documentation pages, except that the link is internal. It refers to the wiki file, without language and file extension (the `_en.md`) : +```markdown +[Wiki Page](/write_documentation) +``` + +The link will return to the page with the correct language setting if the page exists. +Wiki page](/write_documentation) + +### Create anchors +An anchor allows you to make a link to a specific point in a page, that's how the indexes at the top of the page work. To create an anchor, you need to insert code at the anchor location in the following form : + +```markdown +Text that will be doesn't even know it has an anchor. +``` + +What's displayed is: +Text that will be doesn't even know it has an anchor. + +It is also possible to return an anchor directly to the title, noting the link in lower case with `-`s instead of spaces. +All that remains is to designate the anchor to the text you want to make interactive: + +```markdown +[My Anchor Returns to Lists] [#AnchorName] +[My Anchor that refers to the title of the tables](#the tables) +``` + +[My Anchor Returns to Lists] [#AnchorName] +[My Anchor that refers to the title of the tables](#the tables) + +## Displaying images + +To display images, the principle is the same as for links, except that a `!` is added before the text to be displayed, which is considered here as the text to be displayed if the image cannot be loaded. A description of the image is appropriate. + +```markdown +[Yunohost Logo](/images/logo.png) +``` +[Yunohost Logo](/images/logo.png) + + +It is possible to make a link with an image, for example : +```markdown +[! [Yunohost Logo](/images/logo.png)](/write_documentation) +``` +[! [Yunohost Logo](/images/logo.png)](/write_documentation) + +The insert of *text to be displayed if the image cannot be loaded* between the brackets in the image link is not mandatory but strongly recommended. + +## Format a quote + +Quotes are used to highlight a statement made by another person, the wiki itself manages the way it is highlighted. Markdown uses a closing chevron, this symbol: `>`, to announce a quote. Just add it before the quote, as such: + +```markdown +>First level quotation text +>which can be formatted in different lines + +>> And a second quote +>> with double rafters +``` +Will be displayed : + +>First level quotation text +>which can be formatted in different lines + +>> And a second quote +>> with double rafters + +## Lists + +Lists allow to display a series of texts in an easy presentation, this is how indexes such as the [contributing documentation](contributordoc) page are written. + +### Ordered lists + +The ordered lists can be incremented as much as you wish, it is not necessary to give the right match to the number. It is possible to write down with `1.` and put in three spaces to mark the increment. For a better understanding of the plain text, it may be fine to use the numbers in ascending order to mark the increment, but it is the three consistent `spaces' before the sub-list that will mark the increment. + +```markdown +1. List 1 +1. List 2 +1. list 3 + 1. List 3a + 1. List 3b + 1. List 3b1 + 1. List 3b2 + 1. List 3b3 + 1. List 1 + 1. List 2 + 1. list 3 +1. List 4 +1. List 5 +1. list 6 +``` + +You get: + +1. List 1 +1. List 2 +1. list 3 + 1. List 3a + 1. List 3b + 1. List 3b1 + 1. List 3b2 + 1. List 3b3 + 1. List 1 + 1. List 2 + 1. list 3 +5. List 4 +3. List 5 +4. list 6 + +### Unordered lists + +To create an unordered list, use the symbols `*`, `+` or `*`. This will not change the appearance of the marker in the text output. It is the incrementing of the list that will define the visual. For a better reading of the plain text, it may be good to use the different symbols to mark the increment, but it is the three spaces before the sub-list that will indicate the increment. +As such: +```markdown ++ List 1 ++ List 2 ++ list 3 + - List 3a + - List 3b + * List 3b1 + * List 3b2 + * List 3b3 + + List 1 + + List 2 + + list 3 +- List 4 +* List 5 ++ list 6 +``` + +This will read: ++ List 1 ++ List 2 ++ list 3 + - List 3a + - List 3b + * List 3b1 + * List 3b2 + * List 3b3 + + List 1 + + List 2 + + list 3 +- List 4 +* List 5 ++ list 6 + +## Tables + +To create an array, use the vertical bar `|` and dashes `--`. It is mandatory to add a line of dashes under the first line of the table. There is no constraint in the size of the table. It is possible to format the array with the `:` in the second row of the array, three options are available: + +| Left aligned column | Centered column | Right aligned column | +|:-------------------------|:---------------:|-------------------------:| +|`:-----` | `:----:` | `-----:` | + +```markdown +|| One table | | One column | | One second | | As many as you want | +|:--------------:|:-----------:|:-----------:|:--------------------:| +| | And formatted line | | And bold text | | Or *italic* | +| More lines | |! [An image](/images/cd.jpg) | [Or a link](/contributordoc) | +``` +Which would say this: + +| ? A table ? ? A column ? ? A second ? ? As many as you want ? +|:--------------:|:-----------:|:-----------:|:--------------------:| +| | And formatted line | | And bold text | | Or *italic* | +| More lines | |! [An image](/images/cd.jpg) | [Or a link](/contributordoc) | + +## Code block + +To display plain text, `blocks of code' can be created using the grave accent `Alt Gr + è` : + +```markdown +Either inline, for example to highlight a key like `Ctrl`. +``` + +or directly as a block. +The only difference is in the amount of bass accents: +At least three low pitched accents at the opening and closing of the block and two low pitched accents that frame the piece of text to be formatted in a line. + +Which will give the rendering: + +Either inline, for example to highlight a key like `Ctrl`. +''' +```markdown +or directly as a block. +The only difference is in the amount of bass accents: +At least three low pitched accents at the opening and closing of the block and two low pitched accents that frame the piece of text to be formatted in a line. +``` +''' + +## Useful links + + + The documentation of the original Markdown language: [daringfireball.net/projects/markdown (en)](https://daringfireball.net/projects/markdown/) + + Markdown Tutorial on [markdowntutorial.com](https://markdowntutorial.com) + +## Going further ## + +In a more general way, to understand how a text is formatted just inspect the source document with a note application. This does not mean that the YunoHost wiki will be able to exploit it. There are many other possibilities to use markdown syntax, feel free to add missing features. If you've noticed some missing features and/or have questions, please contact us on [the forum](https://forum.yunohost.org) or by direct message on the IRC room: **#yunohost** on [irc.freenode.net](https://irc.freenode.net). diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 0fd54bd3..12e6071f 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -71,13 +71,16 @@ Du texte qui sera ne sait même pas qu'il a une ancre Ce qui s'affiche : Du texte qui sera ne sait même pas qu'il a une ancre +Il est aussi possible de directement renvoyer une ancre au titre, en notant le lien en minuscule avec des `-` à la place des espaces. Il ne reste plus qu'à désigner l'ancre au texte que l'on souhaite rendre interactif : ```markdown -[Mon titre qui renvoie](#nom-du-titre) +[Mon ancre qui renvoie vers les listes](#nomdelancre) +[Mon ancre qui renvoie vers le titre des tableaux](#les-tableaux) ``` -[Mon titre qui renvoie](#nomdelancre) +[Mon ancre qui renvoie vers les listes](#nomdelancre) +[Mon ancre qui renvoie vers le titre des tableaux](#les-tableaux) ## Afficher des images @@ -122,7 +125,7 @@ Les listes permettent d'afficher une suite de textes dans une présentation faci ### Listes ordonnées -Les listes ordonnées peuvent s'incrémenter autant que vous le désirez, il n'est pas obligé de donner la bonne correspondance au nombre. Il est possible de noter avec des `1.` comme des `7.` et installer trois espaces pour marquer l'incrémentation. Pour une meilleure compréhension du texte brut, il peut être bien d'utiliser les chiffres de manières croissantes pour marquer l'incrémentation, mais c'est bien les trois `espaces` conséquents avant la sous-liste qui désigneront l'incrémentation. +Les listes ordonnées peuvent s'incrémenter autant que vous le désirez, il n'est pas obligé de donner la bonne correspondance au nombre. Il est possible de noter avec des `1.` et installer trois espaces pour marquer l'incrémentation. Pour une meilleure compréhension du texte brut, il peut être bien d'utiliser les chiffres de manières croissantes pour marquer l'incrémentation, mais c'est bien les trois `espaces` conséquents avant la sous-liste qui désigneront l'incrémentation. ```markdown 1. Liste 1 @@ -133,9 +136,9 @@ Les listes ordonnées peuvent s'incrémenter autant que vous le désirez, il n'e 1. Liste 3b1 1. Liste 3b2 1. Liste 3b3 - 4. Liste 1 - 4. Liste 2 - 4. liste 3 + 1. Liste 1 + 1. Liste 2 + 1. liste 3 1. Liste 4 1. Liste 5 1. liste 6 @@ -151,9 +154,9 @@ On obtient : 1. Liste 3b1 1. Liste 3b2 1. Liste 3b3 - 4. Liste 1 - 4. Liste 2 - 4. liste 3 + 1. Liste 1 + 1. Liste 2 + 1. liste 3 5. Liste 4 3. Liste 5 4. liste 6 From 94cba7fa6bd3a9b1414c3bab1e52ddc56c00ce97 Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 17 Apr 2020 13:46:04 +0200 Subject: [PATCH 115/135] Fix markdown guide --- doc_markdown_guide.md | 54 ++++++++++++++++++++-------------------- doc_markdown_guide_fr.md | 6 ++--- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/doc_markdown_guide.md b/doc_markdown_guide.md index 928315e5..c30ef925 100644 --- a/doc_markdown_guide.md +++ b/doc_markdown_guide.md @@ -2,7 +2,7 @@ Markdown is a markup language created in 2004, many add-ons developing the possibilities of this language exist. The objective of this guide is to aim for the exhaustiveness of the possibilities of this formatting language within the framework of the YunoHost documentation and not Markdown languages in general. -Markdown allows text to be formatted using tags, it allows *human* reading of the text; even with formatting. Even if only one notepad is needed there are many markdowns software (Markdown on [framalibre.org](https://framalibre.org/recherche-par-crit-res?keys=markdown)). It is relatively easy to use. +Markdown allows text to be formatted using tags, it allows *human* reading of the text; even with formatting. Even if only one notepad is needed there are many markdowns software (Markdown on [framalibre.org (fr)](https://framalibre.org/recherche-par-crit-res?keys=markdown)). It is relatively easy to use. ## The different levels of titles @@ -12,8 +12,8 @@ By writing titles as follows: ## Level 2 title ### Level 3 title #### Level 4 title -### Level 5 title -#### Level 6 title +##### Level 5 title +###### Level 6 title ``` They appear like this: @@ -21,8 +21,8 @@ They appear like this: ## Level 2 title ### Level 3 title #### Level 4 title -### Level 5 title -#### Level 6 title +##### Level 5 title +###### Level 6 title ## Formatting in paragraphs @@ -42,7 +42,7 @@ For text in *italic you have to frame it with an asterisk* `*` To write **bold text by two asterisks** `**` You can also ~~bar the text~~ by framing it with two tildes `~` -## Create links ## +## Create links To create a link to a site outside of the YunoHost documentation: @@ -53,13 +53,13 @@ To create a link to a site outside of the YunoHost documentation: will be displayed as such: [Text to display](https://lelien.tld) -It is the same for the documentation pages, except that the link is internal. It refers to the wiki file, without language and file extension (the `_en.md`) : +It is the same for the documentation pages, except that the link is internal. It refers to the wiki file, without language and file extension (the `_fr.md`) : ```markdown [Wiki Page](/write_documentation) ``` The link will return to the page with the correct language setting if the page exists. -Wiki page](/write_documentation) +[Wiki page](/write_documentation) ### Create anchors An anchor allows you to make a link to a specific point in a page, that's how the indexes at the top of the page work. To create an anchor, you need to insert code at the anchor location in the following form : @@ -75,28 +75,28 @@ It is also possible to return an anchor directly to the title, noting the link i All that remains is to designate the anchor to the text you want to make interactive: ```markdown -[My Anchor Returns to Lists] [#AnchorName] -[My Anchor that refers to the title of the tables](#the tables) +[My Anchor Returns to Lists](#anchorname) +[My Anchor that refers to the title of the tables](#tables) ``` -[My Anchor Returns to Lists] [#AnchorName] -[My Anchor that refers to the title of the tables](#the tables) +[My Anchor Returns to Lists](#anchorame) +[My Anchor that refers to the title of the tables](#tables) ## Displaying images To display images, the principle is the same as for links, except that a `!` is added before the text to be displayed, which is considered here as the text to be displayed if the image cannot be loaded. A description of the image is appropriate. ```markdown -[Yunohost Logo](/images/logo.png) +![Yunohost Logo](/images/logo.png) ``` -[Yunohost Logo](/images/logo.png) +![Yunohost Logo](/images/logo.png) It is possible to make a link with an image, for example : ```markdown -[! [Yunohost Logo](/images/logo.png)](/write_documentation) +[![Yunohost Logo](/images/logo.png)](/write_documentation) ``` -[! [Yunohost Logo](/images/logo.png)](/write_documentation) +[![Yunohost Logo](/images/logo.png)](/write_documentation) The insert of *text to be displayed if the image cannot be loaded* between the brackets in the image link is not mandatory but strongly recommended. @@ -121,7 +121,7 @@ Will be displayed : ## Lists -Lists allow to display a series of texts in an easy presentation, this is how indexes such as the [contributing documentation](contributordoc) page are written. +Lists allow to display a series of texts in an easy presentation, this is how indexes such as the [contributing documentation](/contributordoc) page are written. ### Ordered lists @@ -161,7 +161,7 @@ You get: 3. List 5 4. list 6 -### Unordered lists +### Unordered lists To create an unordered list, use the symbols `*`, `+` or `*`. This will not change the appearance of the marker in the text output. It is the incrementing of the list that will define the visual. For a better reading of the plain text, it may be good to use the different symbols to mark the increment, but it is the three spaces before the sub-list that will indicate the increment. As such: @@ -203,21 +203,21 @@ This will read: To create an array, use the vertical bar `|` and dashes `--`. It is mandatory to add a line of dashes under the first line of the table. There is no constraint in the size of the table. It is possible to format the array with the `:` in the second row of the array, three options are available: | Left aligned column | Centered column | Right aligned column | -|:-------------------------|:---------------:|-------------------------:| +|:--------------------|:---------------:|---------------------:| |`:-----` | `:----:` | `-----:` | ```markdown -|| One table | | One column | | One second | | As many as you want | -|:--------------:|:-----------:|:-----------:|:--------------------:| +| **One table** | One column | One second | As many as you want | +|:-------------:|:----------:|:----------:|:-------------------:| | | And formatted line | | And bold text | | Or *italic* | -| More lines | |! [An image](/images/cd.jpg) | [Or a link](/contributordoc) | +| More lines | |![An image](/images/cd.jpg) | [Or a link](/contributordoc) | ``` Which would say this: -| ? A table ? ? A column ? ? A second ? ? As many as you want ? -|:--------------:|:-----------:|:-----------:|:--------------------:| +| **One table** | One column | One second | As many as you want | +|:-------------:|:----------:|:----------:|:-------------------:| | | And formatted line | | And bold text | | Or *italic* | -| More lines | |! [An image](/images/cd.jpg) | [Or a link](/contributordoc) | +| More lines | |![An image](/images/cd.jpg) | [Or a link](/contributordoc) | ## Code block @@ -244,9 +244,9 @@ At least three low pitched accents at the opening and closing of the block and t ## Useful links - + The documentation of the original Markdown language: [daringfireball.net/projects/markdown (en)](https://daringfireball.net/projects/markdown/) + + The documentation of the original Markdown language: [daringfireball.net/projects/markdown](https://daringfireball.net/projects/markdown/) + Markdown Tutorial on [markdowntutorial.com](https://markdowntutorial.com) -## Going further ## +## Going further In a more general way, to understand how a text is formatted just inspect the source document with a note application. This does not mean that the YunoHost wiki will be able to exploit it. There are many other possibilities to use markdown syntax, feel free to add missing features. If you've noticed some missing features and/or have questions, please contact us on [the forum](https://forum.yunohost.org) or by direct message on the IRC room: **#yunohost** on [irc.freenode.net](https://irc.freenode.net). diff --git a/doc_markdown_guide_fr.md b/doc_markdown_guide_fr.md index 12e6071f..ded2225d 100644 --- a/doc_markdown_guide_fr.md +++ b/doc_markdown_guide_fr.md @@ -65,11 +65,11 @@ Le lien renverra vers la page avec la bonne configuration de langue si la page e Une ancre permet de faire un lien vers un point précis dans une page, c'est comme ça que fonctionnent les index en haut de page. Pour créer une ancre, il faut insérer du code à l'endroit de l'ancre sous la forme suivante : ```markdown -Du texte qui sera ne sait même pas qu'il a une ancre +Du texte qui sera ne sait même pas qu'il a une ancre ``` Ce qui s'affiche : -Du texte qui sera ne sait même pas qu'il a une ancre +Du texte qui sera ne sait même pas qu'il a une ancre Il est aussi possible de directement renvoyer une ancre au titre, en notant le lien en minuscule avec des `-` à la place des espaces. Il ne reste plus qu'à désigner l'ancre au texte que l'on souhaite rendre interactif : @@ -121,7 +121,7 @@ S'affichera : ## Les listes -Les listes permettent d'afficher une suite de textes dans une présentation facile, c'est ainsi que sont rédiger les index tels que celui de la page de la [documentation contributeur](contributordoc). +Les listes permettent d'afficher une suite de textes dans une présentation facile, c'est ainsi que sont rédiger les index tels que celui de la page de la [documentation contributeur](/contributordoc). ### Listes ordonnées From 523771c4c4bad02149b7188e582fd8f0e60623f2 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 17 Apr 2020 21:24:59 +0200 Subject: [PATCH 116/135] Removing references to the community list --- apps_overview.md | 6 +----- apps_overview_fr.md | 6 +----- apps_wishlist.md | 2 +- contributordoc.md | 2 +- contributordoc_fr.md | 2 +- orga/yunohost_project_organization.md | 3 +-- packaging_apps_guidelines.md | 4 ++-- packaging_apps_guidelines_fr.md | 8 ++++---- 8 files changed, 12 insertions(+), 21 deletions(-) diff --git a/apps_overview.md b/apps_overview.md index f4a73f24..db6acaa3 100644 --- a/apps_overview.md +++ b/apps_overview.md @@ -12,11 +12,7 @@ Application lists From the technical point of view, applications are public code repository (such as [this one](https://github.com/YunoHost-Apps/wordpress_ynh)). Existing applications are indexed using "application lists". Those lists can be managed in Applications > Install > Manage applications lists or with commands such as `yunohost app fetchlist`. -By default, YunoHost only knows about the official application list. Those are applications which have been carefully packaged, integrated, reviewed and shall be maintained by the YunoHost team. - -Nevertheless, you might want to have access to the larger catalog of the community list. It can easily be added through the 'Manage applications lists' view of the webadmin, or with the command `yunohost app fetchlist -n community -u https://app.yunohost.org/community.json`. Just be aware that apps in this list offer less guarantees than the official apps and the YunoHost team is not responsible for them ! - -The full list of application (official and community) can be browsed at [this page](/apps). +The full list of application can be browsed at [this page](/apps). Integration and quality levels ------------------------------ diff --git a/apps_overview_fr.md b/apps_overview_fr.md index 3fbaaaa7..c6fd8bda 100644 --- a/apps_overview_fr.md +++ b/apps_overview_fr.md @@ -12,11 +12,7 @@ Listes d'applications Du point de vue technique, les applications sont des dépôts de code public (comme [celui-ci](https://github.com/YunoHost-Apps/wordpress_ynh)). Les applications existantes sont indexées à l'aide de "listes d'applications". Ces listes peuvent être gérées dans Applications > Installer > Gérer les listes d'applications, ou avec des commandes telles que `yunohost app fetchlist`. -Par défaut, YunoHost ne connaît que la liste officielle des applications. Il s'agit d'applications qui ont été soigneusement packagées, intégrées, revues et doivent être maintenues par l'équipe YunoHost. - -Néanmoins, vous souhaiterez peut-être avoir accès au catalogue plus fourni de la liste communautaire. Cette liste peut facilement être ajouté via la vue 'Gérer les listes d'applications' de l'administrateur web, ou avec la commande `yunohost app fetchlist -n community -u https://app.yunohost.org/community.json`. Sachez simplement que les applications de cette liste offrent moins de garanties que les applications officielles et que l'équipe YunoHost n'en est pas responsable ! - -La liste des applications existantes (officielles et communautaires) peut être consultée sur [cette page](/apps). +La liste des applications existantes peut être consultée sur [cette page](/apps). Niveaux d'intégration et de qualité ------------------------------ diff --git a/apps_wishlist.md b/apps_wishlist.md index 9acc494c..c26b5a16 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -1,6 +1,6 @@ # Apps wishlist -
    Before to add an app in wishlist please check your app is not already in official or community list: see the apps list
    +
    Before to add an app in wishlist please check your app is not already in apps list: see the apps list
    The following list is a compiled wishlist of applications that would be nice-to-have. diff --git a/contributordoc.md b/contributordoc.md index 4570723d..6d713486 100644 --- a/contributordoc.md +++ b/contributordoc.md @@ -16,7 +16,7 @@ * [Multi-instance](packaging_apps_multiinstance) * [Helpers](packaging_apps_helpers) * [Trap usage](/packaging_apps_trap) - * [Adding your app to the community list](https://github.com/YunoHost/Apps/#contributing) + * [Adding your app to the apps list](https://github.com/YunoHost/Apps/#contributing) * Quality tests * [Package linter](https://github.com/YunoHost/package_linter) * [Package check](https://github.com/YunoHost/package_check) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index 4c932803..49fc3006 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -16,7 +16,7 @@ * [Multi-instance](/packaging_apps_multiinstance) * [Fonctions utiles](/packaging_apps_helpers) * [Utilisation de 'trap'](/packaging_apps_trap) - * [Ajouter son application à la liste community](https://github.com/YunoHost/Apps/#contributing) + * [Ajouter son application à la liste des apps](https://github.com/YunoHost/Apps/#contributing) * Tests de qualité * [Package linter](https://github.com/YunoHost/package_linter) * [Package check](https://github.com/YunoHost/package_check) diff --git a/orga/yunohost_project_organization.md b/orga/yunohost_project_organization.md index 4fdfe208..b464be93 100644 --- a/orga/yunohost_project_organization.md +++ b/orga/yunohost_project_organization.md @@ -62,8 +62,7 @@ Groups are structured as a result of the fact that YunoHost counts many sub-proj - [yunopaste](http://paste.yunohost.org/) - ##### Apps Group - - Official apps - - Community-based apps + - apps.json list - App development tools (package_checker, package linter) - ##### Communication Group diff --git a/packaging_apps_guidelines.md b/packaging_apps_guidelines.md index 41fe5afb..2bf888de 100644 --- a/packaging_apps_guidelines.md +++ b/packaging_apps_guidelines.md @@ -119,9 +119,9 @@ For the `apps.json` list maintained by the project team, registration is on [the ##### Indicate the license associated with the package | draft | AUTO | WORKING | The license of the packet must be specified in a `LICENSE` file at the root of the packet. Be careful not to confuse with the license of the application that will be installed whose acronym is to be entered in the `license` field of the manifest. -The application lists official.json and community.json only accept packages with a free license, as well as the license for the contained application. Some free applications require non-free dependencies (example: mp3, drivers, etc.). In this case, you should add `&dep-non-free` to the acronym and if possible give details in the README.md of the package, in this case the integration will be accepted on a case-by-case basis. +The application list apps.json only accept packages with a free license, as well as the license for the contained application. Some free applications require non-free dependencies (example: mp3, drivers, etc.). In this case, you should add `&dep-non-free` to the acronym and if possible give details in the README.md of the package, in this case the integration will be accepted on a case-by-case basis. -**NB:** Apps not included in offical lists may still be installed: either manually with the URL to the app, or in a more practical way using non-official lists (which can be created and maintained by the community). +**NB:** Apps not included in apps.json lists may still be installed: either manually with the URL to the app, or in a more practical way using non-official lists (which can be created and maintained by the community). In the future, YunoHost will probably display details about the license of the application. To achieve this, the acronym must be the one from this [list of licenses listed in the SPDX](https://spdx.org/licenses/) (if there are 2 acronyms, the one containing the version number). For consistency, the case must be respected. diff --git a/packaging_apps_guidelines_fr.md b/packaging_apps_guidelines_fr.md index 80925dc5..b3d2636d 100644 --- a/packaging_apps_guidelines_fr.md +++ b/packaging_apps_guidelines_fr.md @@ -89,7 +89,7 @@ La YEP 1 est une meta YEP, elle explique ce qu'il faut faire pour échanger avec ##### Nommer son app et son dépôt | validé | manuel | NOTWORKING | Chaque application YunoHost possède un id inscrit dans le manifeste de l'application. Cet identifiant doit être unique entre chaque paquet d'application. -Il est donc recommandé de vérifier sa disponibilité en consultant la liste des applications référencées dans les dépôts d'applications connus (official, community, internetcube). +Il est donc recommandé de vérifier sa disponibilité en consultant la liste des applications référencées dans les dépôts d'applications connus (apps, internetcube). De plus l'identifiant doit respecter l'expression régulière suivante `^[a-z1-9]((_|-)?[a-z1-9])+$`. Autrement dit, il doit respecter les règles suivantes : * être en minuscule @@ -114,15 +114,15 @@ Ces dépôts ont plusieurs fonctions : * indiquer l'état de fonctionnement du paquet ; * indiquer des informations sur le support d'un paquet. -Pour les listes `official.json` et `community.json` maintenues par l'équipe du projet Yunohost, l'inscription se fait sur [le dépôt git "apps"](https://github.com/YunoHost/apps). D'autres listes non-officielles (notamment celles incluant des applications non-libres) peuvent exister, se réferer au [Forum](https://forum.yunohost.org) de la communauté. +Pour la liste `apps.json` maintenue par l'équipe du projet Yunohost, l'inscription se fait sur [le dépôt git "apps"](https://github.com/YunoHost/apps). D'autres listes non-officielles (notamment celles incluant des applications non-libres) peuvent exister, se réferer au [Forum](https://forum.yunohost.org) de la communauté. #### YEP 1.3 ##### Indiquer la licence associée au paquet | brouillon | AUTO | WORKING | La licence du paquet est à indiquer dans un fichier `LICENSE` à la racine du paquet. Attention à ne pas confondre avec la licence de l'application qui va être installée dont l'acronyme est à renseigner dans le champ `license` du manifeste. -Les listes d'applications official.json et community.json n'acceptent que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas. +La liste d'application apps.json n'acceptent que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas. -**NB :** Les applications non-présentes dans les listes maintenues par le projet peuvent tout de même être installées : soit manuellement via le lien de l'application, soit de manière plus intégrée via des listes non-officielles (qui peuvent être créées et maintenues par la communauté). +**NB :** Les applications non-présentes dans la liste maintenue par le projet peuvent tout de même être installées : soit manuellement via le lien de l'application, soit de manière plus intégrée via des listes non-officielles (qui peuvent être créées et maintenues par la communauté). Dans le futur, YunoHost affichera sans doute des détails sur la licence de l'application. Pour y parvenir, l'acronyme doit être celui issu de cette [liste de licences répertoriées du SPDX](https://spdx.org/licenses/) (si il y a 2 acronymes, il faut prendre celui contenant le numéro de version). Pour plus de cohérence, la casse doit être respectée. From 3e48726f0f6245f3b55fed9c1b8d8aeacdff48aa Mon Sep 17 00:00:00 2001 From: Plumf Date: Fri, 17 Apr 2020 22:49:52 +0200 Subject: [PATCH 117/135] Fix Jaxom99 observation --- doc_use_git.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc_use_git.md b/doc_use_git.md index 6c846bbd..14323aaf 100644 --- a/doc_use_git.md +++ b/doc_use_git.md @@ -7,7 +7,7 @@ To be able to send your contributions via GitHub, you need to have an account on You don't have to give your first and last names, you can use a nickname (when you register `Username`). ## Fork the YunoHost documentation in your personal repository -To fork the source code allows you to create a new branch of development of a software source code or in this case the source code of the documentation. By creating a new branch, this allows you to modify the code and add your contributions without altering the code of the `master' branch, which is the public release of the documentation. This allows you not to have to write down everything at once, but to do it in several steps. (Especially for contributions that require more time). +To fork the source code allows you to create a new branch of development of a software source code or in this case the source code of the documentation. By creating a new branch, this allows you to modify the code and add your contributions without altering the code of the `master` branch, which is the public release of the documentation. This allows you not to have to write down everything at once, but to do it in several steps. (Especially for contributions that require more time). Forking a project on GitHub is extremely simple, just click on the Fork button, this will create a new repository on your GitHub account. ![Screenshot GitHub fork button screenshot](/images/dug_fork.png) @@ -19,11 +19,11 @@ In the title of the new repository, you will see where the repository comes from > It is not possible to have a fork from a contributor's repository and the original repository fork at the same time in your own account. ## Modify and add your contribution -Once the repository is forked (copied), you will need to create a new development branch within your repository. It is through this branch that you will modify the files and thus propose improvements to the documentation. The fact that it is a new branch will allow you to make a Pull Request, i.e. a request to add your contributions to the `master' branch, which is the main documentation branch. The development rules on GitHub change depending on the developers of each repository, some have a testing branch in which to offer contributions. +Once the repository is forked (copied), you will need to create a new development branch within your repository. It is through this branch that you will modify the files and thus propose improvements to the documentation. The fact that it is a new branch will allow you to make a Pull Request, i.e. a request to add your contributions to the `master` branch, which is the main documentation branch. The development rules on GitHub change depending on the developers of each repository, some have a testing branch in which to offer contributions. More information on what a branch on git-scm.com is: [Branching with Git - What a branch is](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). ## Send your contribution by a Pull Request -Create a Pull Request when you want to share your work with the other contributors and integrate it into the master repository (Yunohost's main repository). When publishing a Pull Request, commonly called PR, contributors will be able to amend, comment, add, correct your contribution before it is fully integrated into the repository. +Create a Pull Request when you want to share your work with the other contributors and integrate it into the master repository (YunoHost's main repository). When publishing a Pull Request, commonly called PR, contributors will be able to amend, comment, add, correct your contribution before it is fully integrated into the repository. ## Track your contribution and take into account feedback from contributors When you've already create a Pull Request (PR), changes to your development branch in the Git repository will automatically be added to the PR. This doesn't require any additional action. You can also include proposed changes from contributors, who, when they audit the code, may find errors or new, better wording. @@ -33,7 +33,7 @@ YunoHost has a specific Git repository to collect issues: [github.com/YunoHost/i An issue, also called a ticket, is an identified problem or a development wish; in this case for documentation, but it is valid for any software repository. Within the framework of the YunoHost documentation it will be mainly proposed issues for the development of the documentation, the identified problems being easily correctable. ## Going further with Git and working on his workstation -Using the power of Git to work on your personal computer means you don't have to create a `commit' each time you save modified documentation pages. It also allows you to use tools and software that make it easier to distinguish between tags used in a documentation page. +Using the power of Git to work on your personal computer means you don't have to create a `commit` each time you save modified documentation pages. It also allows you to use tools and software that make it easier to distinguish between tags used in a documentation page. - Online resource: [docs.microsoft.com - Setting up a Git repository locally for documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) From 1e915e51a25e9eb4d438167a5ae9d78871aa8db6 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sat, 18 Apr 2020 00:02:46 +0200 Subject: [PATCH 118/135] spelling --- packaging_apps_guidelines_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging_apps_guidelines_fr.md b/packaging_apps_guidelines_fr.md index b3d2636d..bffee5b9 100644 --- a/packaging_apps_guidelines_fr.md +++ b/packaging_apps_guidelines_fr.md @@ -120,7 +120,7 @@ Pour la liste `apps.json` maintenue par l'équipe du projet Yunohost, l'inscript ##### Indiquer la licence associée au paquet | brouillon | AUTO | WORKING | La licence du paquet est à indiquer dans un fichier `LICENSE` à la racine du paquet. Attention à ne pas confondre avec la licence de l'application qui va être installée dont l'acronyme est à renseigner dans le champ `license` du manifeste. -La liste d'application apps.json n'acceptent que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas. +La liste d'application apps.json n'accepte que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas. **NB :** Les applications non-présentes dans la liste maintenue par le projet peuvent tout de même être installées : soit manuellement via le lien de l'application, soit de manière plus intégrée via des listes non-officielles (qui peuvent être créées et maintenues par la communauté). From acb69665dfc05499ac7c1f62d16b8ed2859a65ca Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:28:59 +0200 Subject: [PATCH 119/135] Update contributordoc_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- contributordoc_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index df6bb942..3c2d9d5b 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -3,7 +3,7 @@ * [Liste des façons de contribuer à YunoHost](/contribute) * [Écrire de la documentation](/write_documentation) * [Guide de redaction de la documentation](/doc_writing_guide) - * [Guide markdown](/doc_markdown_guide) + * [Guide Markdown](/doc_markdown_guide) * [Propulser son code avec Git & GitHub](/doc_use_git) * [Salons de discussion](/chat_rooms) * Packaging d'application From 219ea0c71fb802224a45e6d67d84c73088110602 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:29:10 +0200 Subject: [PATCH 120/135] Update doc_writing_guide.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide.md b/doc_writing_guide.md index 13e87128..fdd26a0b 100644 --- a/doc_writing_guide.md +++ b/doc_writing_guide.md @@ -4,7 +4,7 @@ Add a one-click install button (such as https://yunohost.org/#/app_piwigo_fr) and a button on the application integration level. -Classification of available applications by tags (genre, Git, association management, emails, etc). +Classification of available applications by tags (genre, Git, association management, e-mails, etc). ## Some typical and general uses (writing framework) From 6b6830a1b14358389e5fbca0c5a5296f05643883 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:29:23 +0200 Subject: [PATCH 121/135] Update doc_writing_guide.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_writing_guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_writing_guide.md b/doc_writing_guide.md index fdd26a0b..8ebd0d08 100644 --- a/doc_writing_guide.md +++ b/doc_writing_guide.md @@ -21,7 +21,7 @@ Classification of available applications by tags (genre, Git, association manage 1. An administration part of the application. 1. A part on limitations related to YunoHost. 1. A part on desktop clients (if any). A link to different third-party applications if there are several (possible link to the applications catalgue [framalibre.org](https://framalibre.org)) or a link to the page about desktop applications if official applications are provided. - 1. A part with : + 1. A part with: - the link to the official site - the link to the documentation - Links to the YunoHost package and issues From 5e3907f47caf582eff444cecb103f88721910fd9 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:29:36 +0200 Subject: [PATCH 122/135] Update app_pihole.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- app_pihole.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_pihole.md b/app_pihole.md index 9333f479..6faa5aa5 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -38,7 +38,7 @@ So you need to turn off your router's DHCP server and let Pi-hole manage your ne By using Pi-hole's DHCP, you allow Pi-hole to give its dns configuration to each of your clients. This way, every request will be filtered by Pi-hole. -Another case of using Pi-hole DHCP is if you have hairpinning problems (you can't connect to your server because its ip is your public ip, and your router doesn't allow this). +Another case of using Pi-hole DHCP is if you have hairpinning problems (you can't connect to your server because its IP is your public IP, and your router doesn't allow this). In this case, using Pi-hole's dns will allow you to connect to your server by its local address rather than its public address. ### Restore network From bb8a743c5d68d992737686cc20fdbc5598af3c66 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:29:48 +0200 Subject: [PATCH 123/135] Update app_pihole.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- app_pihole.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_pihole.md b/app_pihole.md index 6faa5aa5..2b3a62ef 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -10,7 +10,7 @@ - [Restore Network](#restore-network) - [Useful links](#useful-links) -Pi-hole is a network-level ad blocker that acts as a DNS liar and possibly a DHCP3 server for use on a private network. It is designed to be installed on embedded devices with network capabilities, such as the Raspberry Pi, but can be used on other machines running Linux or in virtualized environments. +Pi-hole is a network-level ad blocker that acts as a DNS layer and possibly a DHCP3 server for use on a private network. It is designed to be installed on embedded devices with network capabilities, such as the Raspberry Pi, but can be used on other machines running Linux or in virtualised environments. ## Using Pi-Hole as a DHCP server From 702190f27efc1f054dec506183b57f263dab885e Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:30:00 +0200 Subject: [PATCH 124/135] Update app_pihole.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- app_pihole.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_pihole.md b/app_pihole.md index 2b3a62ef..7a3e985d 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -25,7 +25,7 @@ Thus, you would lose any connection to the internet and even the connection to y There are 2 ways to configure Pi-hole to be used as your DHCP server. - Either you can choose to use it when you install the application. - Or you can activate the DHCP server afterwards in the "Settings" tab, part "Pi-hole DHCP Server". -In this second case, it may be preferable to force the server ip to a static address. +In this second case, it may be preferable to force the server IP to a static address. ### Configure my router From 3da49e25332f246aa7f7f2405384029134eff5e4 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:30:12 +0200 Subject: [PATCH 125/135] Update doc_use_git_fr.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- doc_use_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc_use_git_fr.md b/doc_use_git_fr.md index 8cdab1c3..c5001956 100644 --- a/doc_use_git_fr.md +++ b/doc_use_git_fr.md @@ -3,7 +3,7 @@ Il est bien sûr possible de contribuer directement sur la documentation de YunoHost, mais ce n'est pas la manière la plus pratique de le faire tant pour le/la contributeur·trice que pour la personne qui va injecter votre contribution dans la documentation. Voici un tutoriel pour comprendre et créer une contribution à la documentation de Yunohost en utilisant l'outil [Git (en)](https://git-scm.com/) et [github.com](http://github.com/) qui est le service de forge Git qui héberge et stocke le code source de YunoHost ainsi que sa documentation. ## Création d'un compte sur github.com -Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur GitHub, pour créer le compte vous aurez besoin d'une adresse email valide à laquelle vous avez accès. GitHub est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. +Pour pouvoir envoyer vos contributions via GitHub, il est nécessaire avoir un compte sur GitHub, pour créer le compte vous aurez besoin d'une adresse e-mail valide à laquelle vous avez accès. GitHub est un outil puissant qui propose de nombreuses fonctionnalités, l'interface peut être un peu effrayant au début. Vous n'êtes pas obligé·ée de donner vos noms et prénoms, vous pouvez utiliser un pseudonyme (lors de l'inscription `Username`). From 543219db0c2bf10caa87b0d1ca4360ab1782a33b Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:30:22 +0200 Subject: [PATCH 126/135] Update app_pihole.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- app_pihole.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_pihole.md b/app_pihole.md index 7a3e985d..d9856a66 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -59,7 +59,7 @@ sudo ifconfig eth0 192.168.1.100 ``` Now you can connect to your router and reboot its DHCP server to use it again. -You can now remove your static ip and get a dynamic ip again. +You can now remove your static IP and get a dynamic IP again. ```bash sudo ifconfig eth0 0.0.0 && sudo dhclient eth0 ``` From a7344f8c88b50d2d5f2da40d44aacf6490b57d4a Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:30:32 +0200 Subject: [PATCH 127/135] Update app_pihole.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- app_pihole.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_pihole.md b/app_pihole.md index d9856a66..3ebb0e1c 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -31,7 +31,7 @@ In this second case, it may be preferable to force the server IP to a static add Your router or your ISP's router has a DHCP server enabled by default. If you keep this DHCP, along with Pi-hole's, you will have transparent conflicts between them. -The first DHCP server to respond will distribute its own ip and settings. +The first DHCP server to respond will distribute its own IP and settings. So you need to turn off your router's DHCP server and let Pi-hole manage your network. #### Why should I use Pi-hole's DHCP? From 933df61643cba67561ae0e22faece35bbb11e668 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:30:44 +0200 Subject: [PATCH 128/135] Update app_pihole.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- app_pihole.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_pihole.md b/app_pihole.md index 3ebb0e1c..3366a39b 100644 --- a/app_pihole.md +++ b/app_pihole.md @@ -53,7 +53,7 @@ And first, get your network interface (usually `eth0`). sudo ifconfig ``` -Then change your ip to a static ip. +Then change your IP to a static one. ```bash sudo ifconfig eth0 192.168.1.100 ``` From 5568477f931442ccb00b63c2fb383ab6f2f0032c Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:30:53 +0200 Subject: [PATCH 129/135] Update contributordoc.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- contributordoc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributordoc.md b/contributordoc.md index 2b6a8f7b..045a7055 100644 --- a/contributordoc.md +++ b/contributordoc.md @@ -3,7 +3,7 @@ * [General ways of contributing to YunoHost](/contribute) * [Writing documentation](/write_documentation) * [Documentation wrinting guide](/doc_writing_guide) - * [markdown guide](/doc_markdown_guide) + * [Markdown guide](/doc_markdown_guide) * [Propulser son code avec Git & GitHub](/doc_use_git) * [Chat rooms](/chat_rooms) * Application packaging From bf6241bc1f77dbb397c59547600a3733887284c4 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Sun, 19 Apr 2020 19:31:20 +0200 Subject: [PATCH 130/135] Update app_writing_guide.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Allan Nordhøy --- app_writing_guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app_writing_guide.md b/app_writing_guide.md index edd0f3db..46f2d222 100644 --- a/app_writing_guide.md +++ b/app_writing_guide.md @@ -5,7 +5,7 @@ ### Index - [Configuration](#configuration) -- [Limitations with YunoHost](#limitations-with-yunohost) +- [Limitations of YunoHost](#limitations-with-yunohost) - [Customer Applications](#customer-applications) - [Useful links](#useful-links) From 41e455b533c5a3d183bb0e8bddcbba57964d9b1b Mon Sep 17 00:00:00 2001 From: Yunobot Date: Mon, 20 Apr 2020 13:13:37 +0000 Subject: [PATCH 131/135] Adding isso commenting server (disqs-like open source) --- apps_wishlist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps_wishlist.md b/apps_wishlist.md index 9acc494c..fe8d8255 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -62,6 +62,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Invoice Ninja](https://www.invoiceninja.com) / [github](https://github.com/invoiceninja/invoiceninja) - [InvoicePlane](https://invoiceplane.com) / [github](https://github.com/InvoicePlane/InvoicePlane) - [IPFS](https://ipfs.io) / [github](https://github.com/ipfs/ipfs) +- [Isso](https://posativ.org/isso) commenting server - [Jellyfin](https://github.com/jellyfin) - [JS Bin](http://jsbin.com/help/2-second-setup) / [github](https://github.com/jsbin/) - [Joplin](http://joplin.cozic.net/) / [github](https://github.com/laurent22/joplin) From 7b6ac9571c393c6f7674a04ae29e584f552f7247 Mon Sep 17 00:00:00 2001 From: Plumf <45500657+Plumf@users.noreply.github.com> Date: Mon, 20 Apr 2020 15:52:11 +0200 Subject: [PATCH 132/135] Update apps_wishlist.md --- apps_wishlist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps_wishlist.md b/apps_wishlist.md index fe8d8255..217ef172 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -62,7 +62,7 @@ The following list is a compiled wishlist of applications that would be nice-to- - [Invoice Ninja](https://www.invoiceninja.com) / [github](https://github.com/invoiceninja/invoiceninja) - [InvoicePlane](https://invoiceplane.com) / [github](https://github.com/InvoicePlane/InvoicePlane) - [IPFS](https://ipfs.io) / [github](https://github.com/ipfs/ipfs) -- [Isso](https://posativ.org/isso) commenting server +- [Isso](https://posativ.org/isso) commenting server / [github](https://github.com/posativ/isso) - [Jellyfin](https://github.com/jellyfin) - [JS Bin](http://jsbin.com/help/2-second-setup) / [github](https://github.com/jsbin/) - [Joplin](http://joplin.cozic.net/) / [github](https://github.com/laurent22/joplin) From 16d27bf8e579d07812c6f61ce8f8b932362ee5db Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 20 Apr 2020 19:17:40 +0200 Subject: [PATCH 133/135] Misc fixes / improvements / drop outdated stuff.. --- admin.md | 25 ---------------- admin_es.md | 26 ----------------- admin_fr.md | 25 ---------------- admindoc.md | 2 ++ admindoc_fr.md | 1 + burn_or_copy_iso.md | 31 ++++++++++---------- burn_or_copy_iso_fr.md | 26 ++++++++--------- change_admin_password.md | 18 ++++++------ change_admin_password_fr.md | 25 +++++++--------- copy_image.md | 47 ----------------------------- copy_image_es.md | 39 ------------------------- copy_image_fr.md | 52 --------------------------------- dns_resolver.md | 30 ------------------- dns_resolver_fr.md | 32 -------------------- doc_markdown_guide.md | 2 +- groups_and_permissions.md | 24 +++++++-------- groups_and_permissions_fr.md | 20 ++++++------- install_on_arm_board.md | 4 +-- install_on_arm_board_es.md | 4 +-- install_on_arm_board_fr.md | 4 +-- install_on_raspberry.md | 2 +- install_on_raspberry_de.md | 2 +- install_on_raspberry_es.md | 2 +- install_on_raspberry_fr.md | 2 +- install_on_raspberry_it.md | 3 -- moving_app_folder.md | 38 ++++++++++++++++++++++++ packaging_apps_nginx_conf.md | 6 ++-- packaging_apps_nginx_conf_fr.md | 4 +-- packaging_apps_scripts.md | 2 +- security.md | 2 +- security_fr.md | 2 +- 31 files changed, 130 insertions(+), 372 deletions(-) delete mode 100644 copy_image.md delete mode 100644 copy_image_es.md delete mode 100644 copy_image_fr.md delete mode 100644 dns_resolver.md delete mode 100644 dns_resolver_fr.md delete mode 100644 install_on_raspberry_it.md create mode 100644 moving_app_folder.md diff --git a/admin.md b/admin.md index 288471af..d7c9b574 100644 --- a/admin.md +++ b/admin.md @@ -10,28 +10,3 @@ You can access your administrator web interface at this address: https://example - -### Reset admin password - -To reset the admin password (as root) : - -```bash -$ yunohost-reset-ldap-password -``` - -A temporary password will be created, which you can use to define the new password. - - -### How to move application folder - -To change an application folder, only a few commands are needed: move content, create a symlink and set access rights. - -Sample with WordPress: -```bash -# Move wordpress folder to an external hard drive -$ sudo mv /var/www/wordpress /media/externalharddrive -# Symbolic link -$ sudo ln -s /media/externalharddrive/wordpress /var/www/wordpress -# Folder must belong to www-data -$ sudo chown -R www-data:www-data /media/externalharddrive/wordpress -``` diff --git a/admin_es.md b/admin_es.md index 573adb3b..c92be31c 100644 --- a/admin_es.md +++ b/admin_es.md @@ -9,29 +9,3 @@ La interfaz admin está accesible desde tu instancia Yunohost en esta dirección
    - - -### Reinicia la contraseña del administrador - -Para reiniciar la contraseña de administración de Yunohost (con el usuario root) : - -```bash -$ yunohost-reset-ldap-password -``` - -Una contraseña provisional será creada, podrás utilizarla para luego definir una nueva contraseña. - - -### Cómo mover la carpeta de una aplicación - -Para cambiar la carpeta donde está una aplicación, sólo algunos comandos son necesarios : desplazar el contenido, crear un vínculo simbólico y definir los derechos de acceso. - -Ejemplo con WordPress : -```bash -# Desplazamiento del wordpress hacia otro soporte -$ sudo mv /var/www/wordpress /mon/dossier/cible -# Creación del vínculo simbólico -$ sudo ln -s /media/disqueexterne/wordpress /var/www/wordpress -# El directorio debe pertenecer a www-data -sudo chown -R www-data:www-data /media/externalharddrive/wordpress -``` diff --git a/admin_fr.md b/admin_fr.md index 5601de0f..1d7bc291 100644 --- a/admin_fr.md +++ b/admin_fr.md @@ -10,28 +10,3 @@ L’interface admin est accessible depuis votre instance YunoHost à l’adresse - -### Réinitialiser le mot de passe administrateur - -Pour réinitialiser le mot de passe administrateur de YunoHost (à partir de l'utilisateur root) : - -```bash -$ yunohost-reset-ldap-password -``` - -Un mot de passe temporaire sera créé, que vous pouvez utiliser pour ensuite définir un nouveau mot de passe. - - -### Comment déplacer le dossier d’une application - -Pour changer le dossier contenant une application, seules quelques commandes sont nécessaires : déplacer le contenu, créer un lien symbolique et définir les droits d’accès. - -Exemple avec WordPress : -```bash -# Deplacement du wordpress vers un autre support -$ sudo mv /var/www/wordpress /mon/dossier/cible -# Création du lien symbolique -$ sudo ln -s /media/disqueexterne/wordpress /var/www/wordpress -# Le répertoire doit appartenir à www-data -sudo chown -R www-data:www-data /media/externalharddrive/wordpress -``` diff --git a/admindoc.md b/admindoc.md index ce519fe5..c51a3cd8 100644 --- a/admindoc.md +++ b/admindoc.md @@ -38,9 +38,11 @@ * Going further * [Specific apps documentations](/appsdoc) * [Noho.st / nohost.me / ynh.fr domain names](/dns_nohost_me) + * [DNS and subdomains for apps](/dns_subdomains) * [Exchange files with your server using a graphical interface](/filezilla) * [Customize the appearance of the YunoHost portal](/theming) * [Adding an external storage](/external_storage) + * [Moving an app folder to an other storage](/moving_app_folder) * [Migrating emails to YunoHost](/email_migration) * [Hide services with Tor](/torhiddenservice) * [A discussion about the advantages of using a VPN](/vpn_advantage) diff --git a/admindoc_fr.md b/admindoc_fr.md index 8b76abd5..629c83e9 100644 --- a/admindoc_fr.md +++ b/admindoc_fr.md @@ -51,6 +51,7 @@ * [Échanger des fichiers avec son serveur à l'aide d'une interface graphique](/filezilla) * [Modifier l'apparence du portail utilisateur](/theming) * [Ajouter un stockage externe](/external_storage) + * [Déplacer un dossier d'app vers un autre stockage](/moving_app_folder) * [Migrer ses emails vers YunoHost](/email_migration) * [YunoHost avec un service caché Tor](/torhiddenservice) * [Utilisation de certificats autres que Let's Encrypt](/certificate_custom) diff --git a/burn_or_copy_iso.md b/burn_or_copy_iso.md index f24af473..1199ffcd 100644 --- a/burn_or_copy_iso.md +++ b/burn_or_copy_iso.md @@ -1,15 +1,13 @@ -# Flashing the YunoHost ISO on a USB stick or CD/DVD +# Flashing the YunoHost ISO -Now that you downloaded the ISO image of YunoHost, you should flash/burn it on a physical medium. Typically, this is done on a **USB stick** but you might want to use a **CD/DVD** for older machines. +Now that you downloaded the ISO image of YunoHost, you should flash/burn it on a physical medium. Typically, this is done on a **USB stick** or an **SD card**. + + - + ---- - -## USB stick - -### With Etcher +### (Recommended) With Etcher Download Etcher for your operating system and install it. @@ -25,20 +23,23 @@ Download UNetbootin for your operati Put your USB stick on, select your YunoHost ISO and click "OK" + ### With `dd` -If you know your way around command line, you may also flash your USB stick with -`dd`. Assuming your USB stick is `/dev/sdz` (be careful !!), you may run : +If you are on Linux / Mac and know your way around command line, you may also +flash your USK stick or SD card with `dd`. You can identify which device corresponds to your +USB stick or SD card with `fdisk -l` or `lsblk`. An SD card name typically is something like `/dev/mmcblk0`. BE CAREFUL and make sure you got the right name. + +Then run : ```bash -dd if=/path/to/yunohost.iso of=/dev/sdz +# Replace /dev/mmcblk0 if the name of your device is different... +dd if=/path/to/yunohost.img of=/dev/mmcblk0 ``` ---- +### Burning a CD/DVD -## CD/DVD - -The software to use differs regarding your operating system. +For older devices, you might want to burn a CD/DVD. The software to use depends on your operating system. * On Windows, use [ImgBurn](http://www.imgburn.com/) to write the image file on the disc diff --git a/burn_or_copy_iso_fr.md b/burn_or_copy_iso_fr.md index c2849fbe..c3760c6d 100644 --- a/burn_or_copy_iso_fr.md +++ b/burn_or_copy_iso_fr.md @@ -1,15 +1,15 @@ -# Flasher l'ISO YunoHost sur une clef USB ou un CD/DVD +# Flasher l'ISO YunoHost -Maintenant que vous avez téléchargé l’image ISO de YunoHost, vous devez la mettre sur un support physique. Classiquement, il s'agit d'une **Clé USB** mais pour certaines raisons vous pouvez aussi utiliser un **CD/DVD**. +Maintenant que vous avez téléchargé l’image ISO de YunoHost, vous devez la mettre sur un support physique. Classiquement, il s'agit d'une **Clé USB** ou d'une **Carte SD**. + + - + --- -## Clé USB - -### Avec Etcher +### (Recommandé) Avec Etcher Téléchargez Etcher pour votre système d'exploitation et installez-le. @@ -28,18 +28,18 @@ Branchez votre clef USB, selectionnez l'ISO YunoHost puis cliquez sur 'OK' ### Avec `dd` Si vous êtes familier avec la ligne de commande, il est possible de flasher la -clef USB avec `dd`. En supposant que votre clef USB soit `/dev/sdz` (faites -attention !!), vous pouvez exécuter : +clef USB ou carte SD avec `dd`. Vous pouvez identifier le nom du périphérique +avec `fdisk -l` ou `lsblk`. Une carte SD s'apelle typiquement `/dev/mmcblk0`. +ATTENTION à faire attention de prendre le bon nom! ```bash -dd if=/chemin/de/yunohost.iso of=/dev/sdz +# Remplacer /dev/mmcblk0 par le nom de votre périphérique +dd if=/chemin/de/yunohost.iso of=/dev/mmcblk0 ``` ---- +### CD/DVD -## CD/DVD - -Le logiciel à utiliser est différent suivant votre système d’exploitation. +Pour les anciens matériels, il vous faut peut-être utiliser un CD/DVD. Le logiciel à utiliser est différent suivant votre système d’exploitation. * Sur Windows, utilisez [ImgBurn](http://www.imgburn.com/) pour écrire l’image sur le disque diff --git a/change_admin_password.md b/change_admin_password.md index e1feb7f9..5aec634c 100644 --- a/change_admin_password.md +++ b/change_admin_password.md @@ -1,20 +1,20 @@ -#Change administration password +# Changing the administration password -For security reasons you may have to change your administration password. To achieve this, 2 different methods exists. +You may want to change your administrator password for security reason or because you forgot it. -
    - -The current administration password is **required** to perform this task. -
    +If you forgot your password or are unable to connect using the `admin` user, you +may still be able to change the password if you're able to login as `root` on +SSH (from your local network! or using a rescue mode if you're on a VPS...) -##Web administration +## Using the web administration interface First, connect to your [web administration](/admin). -Then go to `Tools` > `Change administration password`. +Then go to Tools > Change administration password. -##Command line +## Using the command line interface + ```bash yunohost tools adminpw diff --git a/change_admin_password_fr.md b/change_admin_password_fr.md index f92f7c71..02ada64f 100644 --- a/change_admin_password_fr.md +++ b/change_admin_password_fr.md @@ -1,26 +1,21 @@ -#Changer le mot de passe d’administration +# Changer le mot de passe d’administration -Pour des raisons de sécurité vous pouvez avoir besoin de changer votre mot de passe d’administration. Pour cela, deux méthodes sont possibles. +Vous voudrez peut-être changer votre mot de passe d'administrateur pour des raisons de sécurité ou parce que vous l'avez oublié. -
    - -Le mot de passe d’administration actuel est **requis** pour effectuer cette modification. -
    +Si vous avez oublié votre mot de passe ou si vous ne pouvez pas vous connecter en utilisant l'utilisateur `admin`, vous +pouvez peut-être encore changer le mot de passe en vous connectant en tant que "root" sur +SSH (à partir de votre réseau local ! ou en utilisant un mode rescure si vous êtes sur un VPS...) -##Administration web +## Sur l'interface d'administration web -Premièrement, connectez-vous à [l’administration web](/admin). +1. Connectez-vous à [l’administration web](/admin). +2. Allez dans la section Outis > Changer le mot de passe d’administration. -Puis allez dans la section `Outils` > `Changer le mot de passe d’administration`. -##Ligne de commande +## En ligne de commande + ```bash yunohost tools adminpw ``` -Si vous avez oublié votre mot de passe, utilisez plutôt: - -```bash -yunohost-reset-ldap-password -``` diff --git a/copy_image.md b/copy_image.md deleted file mode 100644 index 50d3e68b..00000000 --- a/copy_image.md +++ /dev/null @@ -1,47 +0,0 @@ -# Flashing an SD card - -Now that you download the YunoHost image, you have to copy its content to an SD -card. This step is also sometimes called 'flashing' the SD card. - -
    -In the context of self-hosting, it is recommended that your SD card be at least -8 GB (to have a reasonable space available for the system and a few data) and at -least Class 10 (to ensure reasonable performances). -
    - - - -### With Etcher - -Download Etcher for your -operating system and install it. - - - -Plug your SD card, select your YunoHost image and click "Flash" - -### With `dd` - -If you are on Linux / Mac and know your way around command line, you may also -flash your SD card with `dd`. You can identify which device corresponds to your -SD card with `fdisk -l` or `lsblk`. Assuming your SD card is `/dev/mmcblk0` (be -careful !!), you may run : - -```bash -dd if=/path/to/yunohost.img of=/dev/mmcblk0 -``` - -## Expand the root partition (optional) - -
    -This step is optional as it should be performed automatically during the first -boot on recent images. -
    - -By default, the root partition of your SD card is very small. -You can resize it by using software like `resize2fs` (command-line) or `gparted` -(graphical). - - - -

    Preview of the Gparted window

    diff --git a/copy_image_es.md b/copy_image_es.md deleted file mode 100644 index c979e3e2..00000000 --- a/copy_image_es.md +++ /dev/null @@ -1,39 +0,0 @@ -# Flashear una tarjeta SD - -Ahora que has descargado la imagen de Yunohost, tienes que copiar su contenido en una tarjeta SD. Esta etapa también puede llamarse 'flashear' la tarjeta SD. - -
    -En el marco del self-hosting / auto-alojamiento, está recomendado que tu tarjeta SD tenga una capacidad de por lo menos 8 Go (para diponer de suficientemente espacio para el sistema y un poco de datos) y esté al menos certificada de clase 10 (para tener bueno rendimiento). -
    - - - -### Con Etcher - -Descarga Etcher para tu sistema operativo, e instálalo. - - - -Conecta tu tarjeta SD, selecciona tu imagen Yunohost y luego haz clic en 'Flash'. - -### Con `dd` - -Si estás en Linux / Mac y que estás cómodo con la línea de comandos, también puedes flashear tu tarjeta SD con el comando `dd`. Empieza por identificar el periférico que corresponde a tu tarjeta SD con `fdisk -l` o -`lsblk`. Suponiendo que tu tarjeta SD sea `/dev/mmcblk0` (¡ ten cuidado -!), puedes iniciar : - -```bash -dd if=/chemin/vers/yunohost.img of=/dev/mmcblk0 -``` - -## Extiende la partición root (optionnel) - -
    -Esta etapa es opcional porque normalmente la realiza automáticamente el sistema durante el primer inicio sobre las imágenes recientes. -
    - -Por defecto, la partición root instalada en tu tarjeta SD con el comando `dd` es muy pequeña. Puedes redimensionarla con un programa como `resize2fs` (línea de comandos) o `Gparted` (interfaz gráfica) extendiendo la partición ext4 al máximo de modo a utilizar todo el espacio que no está asignado. - - - -

    Vistazo de la interfaz de Gparted

    diff --git a/copy_image_fr.md b/copy_image_fr.md deleted file mode 100644 index 3e5ff1f1..00000000 --- a/copy_image_fr.md +++ /dev/null @@ -1,52 +0,0 @@ -# Flasher une carte SD - -Maintenant que vous avez téléchargé l'image de YunoHost, il vous faut copier son -contenu sur une carte SD. Cette étape est aussi souvent appelé 'flasher' la -carte SD. - -
    -Dans le contexte de l'auto-hébergement, il est recommandé que votre carte SD -fasse au moins 8 Go (pour disposer d'un espace raisonnable pour le système et -quelques données) et soit au moins certifiée classe 10 (pour avoir des -performances raisonnables). -
    - - - -### Avec Etcher - -Télécharger Etcher pour votre -système d'exploitation, et installez-le. - - - -Connectez votre carte SD, sélectionnez votre image YunoHost, puis cliquez sur -'Flash'. - -### Avec `dd` - -Si vous êtes sous Linux / Mac et que vous êtes à l'aise avec la ligne de -commande, vous pouvez aussi flasher votre carte SD avec `dd`. Commencez par -identifier le périphérique correspondant à votre carte SD avec `fdisk -l` ou -`lsblk`. En supposant que votre carte SD soit `/dev/mmcblk0` (faites attention -!), vous pouvez lancer : - -```bash -dd if=/chemin/vers/yunohost.img of=/dev/mmcblk0 -``` - -## Étendre la partition root (optionnel) - -
    -Cette étape est optionnelle car elle est normalement effectuée automatiquement -par le système lors du premier démarrage sur les images récentes. -
    - -Par défaut, la partition root installée sur votre carte SD avec la commande `dd` -est très petite. Vous pouvez la redimensionner avec un logiciel comme -`resize2fs` (ligne de commande) ou `Gparted` (interface graphique) en étendant -la partition ext4 au maximum de façon à utiliser tout l’espace non alloué. - - - -

    Aperçu de l’interface de Gparted

    diff --git a/dns_resolver.md b/dns_resolver.md deleted file mode 100644 index de33802b..00000000 --- a/dns_resolver.md +++ /dev/null @@ -1,30 +0,0 @@ -# YunoHost DNS Resolver - -+
    This page is deprecated / obsolete. Information it contains should be updated (or should be removed).
    - -### Presentation -YunoHost provide a DNS service for DNS name resolution. Usually, your server is not configured to use it, it's your ISP DNS. For instance, for the Free ISP with Freebox router the DNS resolver IP is `192.168.0.254`. - -How to known: watch the file `/etc/resolv.conf`. This file is not modifiable because it is rewriten by the DHCP service. A DHCP client is configured, it requests the router to get DNS resolver IPs. -This IPs is provided by your ISP. - -### Configuration -To use YunoHost DNS resolver of your server, modify your DHCP configuration client: remove DNS name server request, and add static IP of your server `127.0.0.1`. - -Edit the file `/etc/dhcp/dhclient.conf`, add the line `supersede` and remove in the line `request` the word `domain-name-servers`: -```bash -supersede domain-name-servers 127.0.0.1, 192.168.0.254; -request subnet-mask, broadcast-address, time-offset, routers, - domain-name, domain-search, host-name, - dhcp6.name-servers, dhcp6.domain-search, - netbios-name-servers, netbios-scope, interface-mtu, - rfc3442-classless-static-routes, ntp-servers; -``` -Apply this modification by rebooting the DNS server: - -```bash -service dnsmasq restart -``` - -(TODO: It's possible to restart a service to take into account the modification -DHCP?-, but didn't work for me). -It's possible to do same modification in all machine in local network by replacing *127.0.0.1* by IP server. diff --git a/dns_resolver_fr.md b/dns_resolver_fr.md deleted file mode 100644 index 8f9060eb..00000000 --- a/dns_resolver_fr.md +++ /dev/null @@ -1,32 +0,0 @@ -# Résolveur DNS de YunoHost - -
    Cette page est dépréciée / obsolète. Les informations présentées ont besoin d'être mise à jour (ou doivent être retirée).
    - -### Présentation -YunoHost est installé avec un service DNS pour la résolution des noms de domaine. En général, votre serveur n’est pas configuré, c’est celui de votre FAI. -Par exemple pour une Freebox la résolution se fait par l’adresse `192.168.0.254`. - -Comment savoir ? Regarder le contenu du fichier `/etc/resolv.conf`. Ce fichier n’est pas modifiable car il est réécrit par le service DHCP. -Un client DHCP est configuré, celui-ci interroge votre routeur pour les adresses IP de vos serveurs de résolution de DNS. Ces IPs sont fournis par votre FAI. - -### Configuration -Afin d’utiliser le résolveur DNS de votre instance YunoHost, il faut modifier la configuration DHCP pour ne pas faire de requêtes à votre routeur. Il faut donc mettre de façon statique la nouvelle adresse à savoir dans ce cas `127.0.0.1`. - -Éditer le fichier `/etc/dhcp/dhclient.conf`, ajouter une ligne `supersede` et supprimer de la ligne `request` le mot `domain-name-servers` : -```bash -supersede domain-name-servers 127.0.0.1, 192.168.0.254; -request subnet-mask, broadcast-address, time-offset, routers, - domain-name, domain-search, host-name, - dhcp6.name-servers, dhcp6.domain-search, - netbios-name-servers, netbios-scope, interface-mtu, - rfc3442-classless-static-routes, ntp-servers; -``` - -Afin de prendre en compte la modification, redémarrer le serveur DNS : - -```bash -service dnsmasq restart -``` - -(TODO : il doit être possible de reconfigurer à chaud, mais ça n’a pas fonctionné). -Il est possible de faire la même modification sur toutes vos machines du réseau local en remplaçant 127.0.0.1 par l’IP de votre serveur. diff --git a/doc_markdown_guide.md b/doc_markdown_guide.md index c30ef925..cb004e8a 100644 --- a/doc_markdown_guide.md +++ b/doc_markdown_guide.md @@ -7,7 +7,7 @@ Markdown allows text to be formatted using tags, it allows *human* reading of th ## The different levels of titles By writing titles as follows: -```Markdown +```markdown # Level 1 title ## Level 2 title ### Level 3 title diff --git a/groups_and_permissions.md b/groups_and_permissions.md index 4397968c..97d7e35c 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -29,7 +29,7 @@ The existing groups are listed at the top of the *groups and permissions* page. To list the currently existing groups in CLI : -```bash +```shell $ yunohost user group list groups: all_users: @@ -49,7 +49,7 @@ To create a new group, simply click on the "New Group" button at the top of the In CLI, to create a new group called `yolo_crew` -```bash +```shell $ yunohost user group create yolo_crew ``` @@ -65,7 +65,7 @@ To remove a user, click on the cross next to their username, in the group panel. In CLI, use the following command to add `charlie` and `delphine`to the `yolo_crew` group: -```bash +```shell $ yunohost user group update yolo_crew --add charlie delphine ``` @@ -73,7 +73,7 @@ $ yunohost user group update yolo_crew --add charlie delphine Now in the group list we should see : -```bash +```shell $ yunohost user group list groups: all_users: @@ -96,7 +96,7 @@ To delete a group, click on the red cross on the top right of the group panel. Y To delete the group `yolo_crew` in CLI, you may run -```bash +```shell $ yunohost user group delete yolo_crew ``` @@ -113,7 +113,7 @@ The groups page lists the permissions given to each group, including the special To list permissions and corresponding accesses in CLI: -```bash +```shell $ yunohost user permission list permissions: mail.main: @@ -138,7 +138,7 @@ To add a permission to a group, simply click the "+" button in the group panel, To allow a group to access the wordpress admin interface in CLI: -```bash +```shell $ yunohost user permission update wordpress.admin --add yolo_crew ``` @@ -148,13 +148,13 @@ Note that you can also allow a single user, by using the specific panel at the b or in CLI: -```bash +```shell $ yunohost user permission update wordpress.admin --add alice ``` And now we may see that both the YoloCrew and Alice have access to the wordpress admin interface : -```bash +```shell $ yunohost user permission list [...] wordpress.admin: @@ -166,7 +166,7 @@ $ yunohost user permission list Note that, for example, if we want to restrict permission for email so that only Bob is allowed to email, we should also remove `all_users` from the permission, by deleting it from the `all_users` group panel, or in CLI : -```bash +```shell $ yunohost user permission update mail --remove all_users --add bob ``` @@ -180,13 +180,13 @@ Installing an app creates the permission `app.main` with `all_users` allowed by If you wish to make the application publicly available, instead of the old `unprotected_urls` mechanism, you should give access to the special group `visitors`: -```bash +```shell ynh_permission_update --permission "main" --add visitors ``` If you wish to create a custom permission for your app (e.g. to restrict access to an admin interface) you may use the following helpers: -```bash +```shell ynh_permission_create --permission "admin" --url "/admin" --allowed "$admin_user" ``` diff --git a/groups_and_permissions_fr.md b/groups_and_permissions_fr.md index 73c40696..7f3a2af7 100644 --- a/groups_and_permissions_fr.md +++ b/groups_and_permissions_fr.md @@ -28,7 +28,7 @@ Les groupes existants sont listés en haut de la page *groupes et autorisations* Pour obtenir la liste des groupes existants en CLI : -```bash +```shell $ yunohost user group list groups: all_users: @@ -47,7 +47,7 @@ Pour créer un nouveau groupe, il suffit de cliquer sur le bouton "Nouveau group Dans la CLI, pour créer un nouveau groupe appelé `yolo_crew`, il faut utiliser -```bash +```shell $ yunohost user group create yolo_crew ``` @@ -62,7 +62,7 @@ Pour supprimer un utilisateur, cliquez sur la croix à côté de son nom d'utili En CLI, utilisez la commande suivante pour ajouter `charlie` et `delphine` au groupe `yolo_crew` : -```bash +```shell $ yunohost user group update yolo_crew --add charlie delphine ``` @@ -70,7 +70,7 @@ $ yunohost user group update yolo_crew --add charlie delphine Dans la liste des groupes, nous devrions voir : -```bash +```shell $ yunohost user group list groups: all_users: @@ -93,7 +93,7 @@ Pour supprimer un groupe, cliquez sur la croix rouge en haut à droite du pannea Pour supprimer le groupe `yolo_crew` dans CLI, vous pouvez exécuter -```bash +```shell $ yunohost user group delete yolo_crew ``` @@ -109,7 +109,7 @@ La page des groupes liste les permissions données à chaque groupe, y compris l ![](./images/groups_default-with-permissions.png) Pour répertorier les permissions et les accès correspondants en CLI : -```bash +```shell $ yunohost user permission list permissions: mail.main: @@ -133,7 +133,7 @@ Pour ajouter une permission à un groupe, il suffit de cliquer sur le bouton "+" Pour permettre à un groupe d'accéder à l'interface d'administration de wordpress via la CLI : -```bash +```shell $ yunohost user permission update wordpress.admin --add yolo_crew ``` @@ -143,13 +143,13 @@ Notez que vous pouvez également autoriser un seul utilisateur, en utilisant le ou en CLI : -```bash +```shell $ yunohost user permission update wordpress.admin --add alice ``` Et maintenant, nous pouvons voir que YoloCrew et Alice ont tous deux accès à l'interface d'administration de Wordpress : -```bash +```shell $ yunohost user permission list [...] wordpress.admin: @@ -163,7 +163,7 @@ Notez que, par exemple, si nous voulons restreindre la permission pour le courri afin que seul Bob soit autorisé à envoyer des courriels, nous devons également supprimer `all_users` de la permission, en la supprimant du panneau de groupe `all_users`, ou en CLI : -```bash +```shell $ yunohost user permission update mail --remove all_users --add bob ``` diff --git a/install_on_arm_board.md b/install_on_arm_board.md index 9703b54f..b6d96620 100644 --- a/install_on_arm_board.md +++ b/install_on_arm_board.md @@ -29,7 +29,7 @@ YunoHost doesn't yet support ARM64 boards. For more information, see [this issue 0. Download the pre-installed image for your board
    If no pre-installed image exists for your board, you can follow the instructions to "Install on top of ARMbian" -1. Flash the SD card with the image +1. Flash the SD card with the image 2. Power up the board and let it boot @@ -43,7 +43,7 @@ YunoHost doesn't yet support ARM64 boards. For more information, see [this issue 0. Download the ARMbian image for your board -1. Flash the SD card with the image +1. Flash the SD card with the image 2. Plug & boot diff --git a/install_on_arm_board_es.md b/install_on_arm_board_es.md index 8a3d5278..6f6d636f 100644 --- a/install_on_arm_board_es.md +++ b/install_on_arm_board_es.md @@ -27,7 +27,7 @@ YunoHost todavía no es compatible con las tarjetas ARM64. Para obtener más inf 0. Descargar la imagen pre-instalada para tu tarjeta ARM
    Si no existe una imagen dedicada a tu tarjeta, puedes seguir la sección "Instalación encima de ARMbian". -1. Poner la imagen en tu tarjeta SD +1. Poner la imagen en tu tarjeta SD 2. Conectar y encender @@ -41,7 +41,7 @@ YunoHost todavía no es compatible con las tarjetas ARM64. Para obtener más inf 0. Descargar la imagen ARMbian para tu tarjeta ARM -1. Poner la imagen en tu tarjeta SD +1. Poner la imagen en tu tarjeta SD 2. Conectar y encender diff --git a/install_on_arm_board_fr.md b/install_on_arm_board_fr.md index 68be4675..d373ee28 100644 --- a/install_on_arm_board_fr.md +++ b/install_on_arm_board_fr.md @@ -27,7 +27,7 @@ YunoHost ne supporte pour le moment pas les cartes ARM64. Pour plus d'informatio 0. Télécharger l'image pré-installée pour votre carte ARM
    Si il n'existe pas d'image pré-installée pour votre carte, vous pouvez suivre la section "Installation par dessus ARMbian". -1. Flasher la carte SD avec l'image +1. Flasher la carte SD avec l'image 2. Brancher la carte et la laisser démarrer @@ -41,7 +41,7 @@ YunoHost ne supporte pour le moment pas les cartes ARM64. Pour plus d'informatio 0. Télécharger l'image ARMbian pour votre carte ARM -1. Flasher la carte SD avec l'image +1. Flasher la carte SD avec l'image 2. Brancher & démarrer diff --git a/install_on_raspberry.md b/install_on_raspberry.md index fa204721..ceef5c12 100644 --- a/install_on_raspberry.md +++ b/install_on_raspberry.md @@ -25,7 +25,7 @@ Before setting up a server at home, it is recommended that you know the [possibl 0. Download the pre-installed image for Raspberry Pi -1. Flash the SD card with the image +1. Flash the SD card with the image 2. Power up the board and let it boot diff --git a/install_on_raspberry_de.md b/install_on_raspberry_de.md index 5105d8b7..c57f34de 100644 --- a/install_on_raspberry_de.md +++ b/install_on_raspberry_de.md @@ -25,7 +25,7 @@ Vor der Einrichtung eines Servers zuhause ist es empfehlenswert [mögliche Einsc 0. Download the pre-installed image for Raspberry Pi -1. Flash the SD card with the image +1. Flash the SD card with the image 2. Plug & boot diff --git a/install_on_raspberry_es.md b/install_on_raspberry_es.md index b4fd51bf..9ab592f8 100644 --- a/install_on_raspberry_es.md +++ b/install_on_raspberry_es.md @@ -25,7 +25,7 @@ Antes de alojar tu propio servidor en tu casa, te recomendamos que consultes las 1. Descargar la imagen para Raspberry Pi -2. Poner la imagen en tu tarjeta SD +2. Poner la imagen en tu tarjeta SD 3. Conectar y encender diff --git a/install_on_raspberry_fr.md b/install_on_raspberry_fr.md index c3fd6452..8ddbd031 100644 --- a/install_on_raspberry_fr.md +++ b/install_on_raspberry_fr.md @@ -25,7 +25,7 @@ Avant d'héberger un serveur chez vous, il est recommandé de prendre connaissan 1. Télécharger l'image pour Raspberry Pi -2. Flasher la carte SD avec l'image +2. Flasher la carte SD avec l'image 3. Brancher la carte et la laisser démarrer diff --git a/install_on_raspberry_it.md b/install_on_raspberry_it.md deleted file mode 100644 index 1b3ca866..00000000 --- a/install_on_raspberry_it.md +++ /dev/null @@ -1,3 +0,0 @@ -# Installa YunoHost su Raspberry Pi - -*Consulta la guida completa in inglese [qui](/install_on_raspberry)* diff --git a/moving_app_folder.md b/moving_app_folder.md new file mode 100644 index 00000000..941d3d03 --- /dev/null +++ b/moving_app_folder.md @@ -0,0 +1,38 @@ +# Moving an app folder to a different storage + +Applications folder are (*usually*) located in `/var/www/$appname` + +If an application folder is expected to get bigger because of the amount of data +it contains, it might be relevant to move it to another storage (like an +external hard drive). + +Here's a summary of how to do this the application wordpress. Here, is is assumed that +[you already mounted the external hard-drive](/external_storage). + +#### 1. Move the entire wordpress folder to an external hard drive + +```shell +mv /var/www/wordpress /media/externalharddrive/ +``` + +#### 2. Create a symbolic link + +So that programs looking for files in /var/www/wordpress will actually take them from the harddrive + +```shell +ln -s /media/externalharddrive/wordpress /var/www/wordpress +``` + +#### 3. Tweak permissions (maybe?) + +After this, note that you may need to tweak the permissions of `/media/externalharddrive` so that `www-data` (or the user corresponding to the app) is able to read through the folder... Something like : + +```shell +chgrp www-data /media/externalharddrive +chmod g+rx /media/externalharddrive + +``` + +(but it depends on your exact setup... Please update this doc page if you figure +out what to do exactly) + diff --git a/packaging_apps_nginx_conf.md b/packaging_apps_nginx_conf.md index 80b8ce5d..7756793f 100644 --- a/packaging_apps_nginx_conf.md +++ b/packaging_apps_nginx_conf.md @@ -4,7 +4,7 @@ This tutorial aim to help setup Nginx configuration for application packaging. #### Nginx configuration Configuration must be in `conf/nginx.conf`. We must use **FastCGI** or a **proxy_pass** following the application: * **FastCGI** is used with PHP applications: -```bash +```nginx location YNH_EXAMPLE_PATH { alias YNH_WWW_PATH ; if ($scheme = http) { @@ -28,7 +28,7 @@ location YNH_EXAMPLE_PATH { ``` * **`proxy_pass`** in Python, Node.js, Go and Java applications: -```bash +```nginx location YNH_EXAMPLE_PATH/ { rewrite ^YNH_EXAMPLE_PATH$ YNH_EXAMPLE_PATH/ permanent; proxy_pass http://YNH_EXEMPLE_DOMAIN:YNH_EXAMPLE_PORT/; @@ -56,4 +56,4 @@ We must remove Nginx configuration of this application, then reload Nginx config ```bash rm -f /etc/nginx/conf.d/$domain.d/$app.conf sudo service nginx reload -``` \ No newline at end of file +``` diff --git a/packaging_apps_nginx_conf_fr.md b/packaging_apps_nginx_conf_fr.md index 6e4b2702..1f512cc3 100644 --- a/packaging_apps_nginx_conf_fr.md +++ b/packaging_apps_nginx_conf_fr.md @@ -4,7 +4,7 @@ Ce tutoriel a pour but d’aider à la mise en place d’une configuration Nginx #### Configuration Nginx La configuration doit être mise dans `conf/nginx.conf`. Il s’agira d’utiliser **FastCGI** ou un **proxy_pass** suivant l’application : * **FastCGI** est utilisé dans les applications PHP : -```bash +```nginx location YNH_EXAMPLE_PATH { alias YNH_WWW_PATH ; if ($scheme = http) { @@ -28,7 +28,7 @@ location YNH_EXAMPLE_PATH { ``` * **`proxy_pass`** dans le cas d’applications Python, Node.js, Go et Java : -```bash +```nginx location YNH_EXAMPLE_PATH/ { rewrite ^YNH_EXAMPLE_PATH$ YNH_EXAMPLE_PATH/ permanent; proxy_pass http://YNH_EXEMPLE_DOMAIN:YNH_EXAMPLE_PORT/; diff --git a/packaging_apps_scripts.md b/packaging_apps_scripts.md index 7d5c4a88..6e4f6f88 100644 --- a/packaging_apps_scripts.md +++ b/packaging_apps_scripts.md @@ -45,7 +45,7 @@ For example, if in the manifest we have a question like this "de": "Wählen Sie bitte einen Domain für OpenSondage" }, "example": "domain.org" -}, +} ``` The name of the question is `domain` so in the script we can access it with YNH_APP_ARG_DOMAIN. The usage is to create a shorter name in the script like this: diff --git a/security.md b/security.md index 8884ccab..8982c940 100644 --- a/security.md +++ b/security.md @@ -88,7 +88,7 @@ nano /etc/fail2ban/jail.d/my_ssh_port.conf and you can then fill it in with -```bash +```ini [sshd] port = diff --git a/security_fr.md b/security_fr.md index 8d9c94e2..24abb535 100644 --- a/security_fr.md +++ b/security_fr.md @@ -101,7 +101,7 @@ nano /etc/fail2ban/jail.d/my_ssh_port.conf et de le compléter ainsi : -```bash +```ini [sshd] port = From b99386a4a1d044f601b615a1fdce92b655142737 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Thu, 23 Apr 2020 11:46:31 +0000 Subject: [PATCH 134/135] correction typo --- dev_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev_fr.md b/dev_fr.md index 2251fbfe..230bac7e 100644 --- a/dev_fr.md +++ b/dev_fr.md @@ -21,7 +21,7 @@ bug tracker est [ici](https://github.com/yunohost/issues/issues) ! - **Implémentez et testez votre fonctionnalité**. Suivant ce sur quoi vous voulez travailler : - - **Cœur Python/ligne de comande** : allez dans `/ynh-dev/yunohost/` + - **Cœur Python/ligne de commande** : allez dans `/ynh-dev/yunohost/` - **Interface d'administration web** : allez dans `/ynh-dev/yunohost-admin/` - Vous pouvez aussi travailler sur les autres projets liés sur lesquels s'appuie YunoHost (SSOwat, moulinette) de façon similaire. From 06249c5012dd565278d63a2d3af6d8bdff20e957 Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Fri, 24 Apr 2020 10:18:09 +0200 Subject: [PATCH 135/135] [Anonymous contrib] How to set an IP adress in Fail2ban whitelist (#1014) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * How to set an IP adress in Fail2ban whitelist * Utilisation d'un fichier dédié .local pour fail2ban * Reformulation + linter markdown + typos * Reformulation + typos * Add "whitelist" howto + wording + typos Changes made following french page * Update fail2ban_fr.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Update fail2ban_fr.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Update fail2ban_fr.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Update fail2ban.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Update fail2ban.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Update fail2ban.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Update fail2ban_fr.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Update fail2ban_fr.md Co-Authored-By: Plumf <45500657+Plumf@users.noreply.github.com> * Change location of "whitelist" config file from 'jail.local' to 'jail.d/yunohost-whitelist.conf' * remove deepl reference * add missing slashs * fix typo in file name * Simplify wording Co-authored-by: Yunobot Co-authored-by: Gofannon <17145502+Gofannon@users.noreply.github.com> Co-authored-by: Plumf <45500657+Plumf@users.noreply.github.com> --- fail2ban.md | 51 +++++++++++++++++++++++++++++++++++++++++--------- fail2ban_fr.md | 49 ++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 83 insertions(+), 17 deletions(-) diff --git a/fail2ban.md b/fail2ban.md index aa6acf5b..8448f04c 100644 --- a/fail2ban.md +++ b/fail2ban.md @@ -1,17 +1,17 @@ # Fail2ban -Fail2Ban is an intrusion prevention software that protects computer servers from brute-force attacks. It monitors some log files and will ban IP addresses that shows brute-force-like behavior. +**Fail2Ban** is an intrusion prevention software that protects computer servers against brute-force attacks. It monitors certain logs and will ban IP addresses that show brute-force-like behavior. -In particular, Fail2ban monitors SSH connection attempts. After 5 failed login attempts on SSH, Fail2ban will ban the corresponding IP address from connecting through SSH for 10 minutes. If this IP is found to recidive several times, it might get ban for a week. +In particular, **Fail2ban** monitors `SSH` connection attempts. After 5 failed SSH connection attempts, Fail2ban will ban the IP address from connecting via SSH for 10 minutes. If this address fails several times, it might get banned for a week. ## Unban an IP -To unban an IP from fail2ban, you first need to access your server by some mean (e.g. from another IP by the one being banned). +To unblock an IP address, you must first access your server by some means (for example from another IP or from another internet connection than the banned one). -Then look at fail2ban's log to identify in which jail the IP was put : +Then, look at the **fail2ban's log** to identify in which `jail` the IP has been banned: ```bash -$ tail /var/log/fail2ban.log +sudo tail /var/log/fail2ban.log 2019-01-07 16:24:47 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 2019-01-07 16:24:49 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 2019-01-07 16:24:51 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 @@ -21,12 +21,45 @@ $ tail /var/log/fail2ban.log 2019-01-07 16:24:57 fail2ban.filter [1837]: NOTICE [recidive] Ban 11.22.33.44 ``` -Here, the IP `11.22.33.44` was banned in the `sshd` and `recidive` jails. +Here, the `11.22.33.44` IP has been banned in the `sshd` and `recidive` jails. -Then unban the IP with the following commands : +Then deban the IP address with the following commands: ```bash -$ fail2ban-client set sshd unbanip 11.22.33.44 -$ fail2ban-client set recidive unbanip 11.22.33.44 +sudo fail2ban-client set sshd unbanip 11.22.33.44 +sudo fail2ban-client set recidive unbanip 11.22.33.44 ``` +## Whitelist an IP + +If you don't want a "legitimate" IP address to be blocked by **YunoHost** anymore, then you have to fill it in the whitelist of the `jail` configuration file. + +When updating the **Fail2ban** software, the original `/etc/fail2ban/jail.conf` file is overwritten. So it is on a new dedicated file that we will store the changes. They will thus be preserved over time. + +1. Start by creating the new jail configuration file which will be called `yunohost-whitelist.conf`: + + ```bash + sudo touch /etc/fail2ban/jail.d/yunohost-whitelist.conf + ``` + +2. Edit this new file with your favorite editor: + + ```bash + sudo nano /etc/fail2ban/jail.d/yunohost-whitelist.conf + ``` + +3. Paste the following content into the file and adapt the IP address `XXX.XXX.XXX.XXX` : + + ```bash + [DEFAULT] + + ignoreip = 127.0.0.1/8 XXX.XXX.XXX.XXX #<= the IP address (you can put more than one, separated by a space) that you want to whitelist + ``` + +4. Save the file and reload the fail2ban configuration: + + ```bash + sudo fail2ban-client reload + ``` + +Congratulations, no more risks of banning yourself from your own YunoHost server! diff --git a/fail2ban_fr.md b/fail2ban_fr.md index cac68680..acb521a5 100644 --- a/fail2ban_fr.md +++ b/fail2ban_fr.md @@ -1,17 +1,17 @@ # Fail2ban -Fail2Ban est un logiciel de prévention des intrusions qui protège les serveurs informatiques contre les attaques de brute-force. Il surveille certains journaux et bannira les adresses IP qui montrent un comportement de brute-forcing. +**Fail2Ban** est un logiciel de prévention des intrusions qui protège les serveurs informatiques contre les attaques de brute-force. Il surveille certains journaux et bannira les adresses IP qui montrent un comportement de brute-forcing. -En particulier, Fail2ban surveille les tentatives de connexion SSH. Après 5 tentatives de connexion échouées sur SSH, Fail2ban banniera l'IP de se connecter via SSH pendant 10 minutes. Si cette adresse récidive plusieurs fois, elle peut être bannie pendant une semaine. +En particulier, **Fail2ban** surveille les tentatives de connexion `SSH`. Après 5 tentatives de connexion échouées sur SSH, Fail2ban banniera l'adresse IP de se connecter via SSH pendant 10 minutes. Si cette adresse récidive plusieurs fois, elle peut être bannie pendant une semaine. ## Débannir une IP -Pour débloquer une IP de fail2ban, vous devez d'abord accéder à votre serveur par un moyen quelconque (par exemple à partir d'une autre IP que celle bannie). +Pour débloquer une addresse IP, vous devez d'abord accéder à votre serveur par un moyen quelconque (par exemple à partir d'une autre adresse IP ou d'une autre connexion internet que celle bannie). -Ensuite, regardez le journal de fail2ban pour identifier dans quelle 'prison' (jail) l'IP a été bannie : +Ensuite, regardez le **journal de fail2ban** pour identifier dans quelle `prison` ou `jail` l'adresse IP a été bannie : ```bash -$ tail /var/log/fail2ban.log +sudo tail /var/log/fail2ban.log 2019-01-07 16:24:47 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 2019-01-07 16:24:49 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 2019-01-07 16:24:51 fail2ban.filter [1837]: INFO [sshd] Found 11.22.33.44 @@ -23,10 +23,43 @@ $ tail /var/log/fail2ban.log Ici, l'IP `11.22.33.44` a été bannie dans les jails `sshd` et `recidive`. -Puis débanissez l'IP avec les commandes suivantes : +Puis débanissez l'adresse IP avec les commandes suivantes : ```bash -$ fail2ban-client set sshd unbanip 11.22.33.44 -$ fail2ban-client set recidive unbanip 11.22.33.44 +sudo fail2ban-client set sshd unbanip 11.22.33.44 +sudo fail2ban-client set recidive unbanip 11.22.33.44 ``` +## Passer une IP en liste blanche / whitelist + +Si vous ne voulez plus qu'une adresse IP "légitime" soit bloquée par **YunoHost**, alors il faut la renseigner dans la liste blanche ou whitelist du fichier de configuration de la `prison`. + +Lors d'une mise à jour du logiciel **Fail2ban**, le fichier d'origine `/etc/fail2ban/jail.conf` est écrasé. C'est donc dans un nouveau fichier que nous allons stocker les modifications. Elles seront ainsi conservées dans le temps. + +1. Commencez par créer le nouveau fichier de configuration des prisons qui s’appelera `yunohost-whitelist.conf` : + + ```bash + sudo touch /etc/fail2ban/jail.d/yunohost-whitelist.conf + ``` + +2. Éditez ce nouveau fichier avec votre éditeur préféré : + + ```bash + sudo nano /etc/fail2ban/jail.d/yunohost-whitelist.conf + ``` + +3. Coller le contenu suivant dans le fichier et adapter l'adresse IP `XXX.XXX.XXX.XXX` : + + ```bash + [DEFAULT] + + ignoreip = 127.0.0.1/8 XXX.XXX.XXX.XXX #<= l'adresse IP (on peut en mettre plusieurs, séparées par un espace) que vous voulez passer en liste blanche / whitelist + ``` + +4. Sauvegardez le fichier et rechargez la configuration de fail2ban : + + ```bash + sudo fail2ban-client reload + ``` + +Félicitations, plus de risques de se bannir de son propre serveur YunoHost!

    P#fY9)_kZ!^yqzlTFq z`zQVL7&SV#&IM+sS1;hT>GK$$A)e@wgUMzL6MQKq37U!IHqnL(x_{J3Fklhtc3_G*5Edsm@>oF6BQaD4i?%Q@jj&k!bn_ zmKu$zf>@w5)p|ooubAwK9%4?UXcj)t^s$Jdp4E4+?N+H%pqOX^coN(Dv0h)RXfK@M zSIO*8U|SO54E_mtc@dp!dr%+SyXS^g4#*MAO&6>lE-%&F>V5JP2?90P(IL zGpGH|u?G+$_v-)N9UDBb((H)X($bPknSs+dt`r?Kq~xC%r*9acrjE^8O9@+LK-&(y za9RC4qhsMziD)Td4>gMIf?U;O-f_GzKeK*5aJ*ZikF{K(7R2uS_p|Y~qL1vcv_jwf zh)DRd6p2q$_47{Ww#LV3(e}8=Kc95Ftr2l(8P1W>#UpI0p^UsgB!@9wbMUx4$dJ}I z{m&@$tl$TvzKUrKs-a&5=PzgOxO8-tt^=LwZEn~C0ss;nyGM|OAi$+8GVwhU0eRhhOpk2{Ow zlvxW6xP;$yxy>nc%mQPoDKR!i@~i7W)EEEV0YMMSG2^o`D*N_7Z(LeswyF9Hd(|Tw%h1OZ#YNVD&b99%#fiU zb8cwce=0X+IC5B=5sAC+w{it=T&%m|B(b`3IR2L;XD>Mb#olYwRWTpI%Y#n7T4#>? z3Q)ho$;rvN2dHDJF59QkM8|)%r67?^4fX`LOe~t7EkK$!OFH`4zhf$xVQQ{Yt_wPN zdyL|WDII?i?*|VN6945kc`$-gz)rr!9%@ji0j&yti;O*Td(pYBk%@bayF%$9l3(Hb zFX14UEG% zT|GS`!4MYHd5^_K6*6k<9X|NY>uT&SlnJK=r5CVBmtwf4@$)R|dX6HrJX($J)j?M> zWb~k^5|1grOvAbUPsIqRB#t5In1aDI>GsJ4M8GH{oRg#^-6W%_l_=drB!i{J1dJ3* ztX=EVcH~tZ+DzdEX7Ym#W}C~WGa>vYs1JU>Zz{cP@1{C_th|p9!sFz`=DzQMwb&oW zciCfKoA~v$FqYScm4J02MHN2-Awu^|FsTd3FH7Q;eO)fsG`dpU6v@fiX?(W+6EQ)0 zK#W+UtY9$Zxx$t_YYMjE@(rOs7C2>^}JJi*4uPwSO3I{T%s>G>d( z(Yhp-jtAjHhZ zVW@D)a`;B7W5di7I9JsMu3+l98br(wvQ=mEv>Mic#SAU)Mu&*|-Cym$++{Y|(r5>Rf-5p7)Au1{=dIGoL8x$*sFM^R^KB&qc}38aY;UTekSgcZko786E-TaVi=E)H0`52-0d3=(`$ouM>Jy((J$yX& ze-?r5{(zoE1O6`zhzMvHp6{siZ(<%5zn3x|AiYdLt;INVBYmBJY_Spt0n{SmzZCSb zMYOQs(DGlBETxE1ersp~w1^4!PEhUsmQnVusMiT@w{K(V zh3ww^gEjBHc7gxL`oRD_u5#9u^uJBk-#iG~ptN1vcd_$Q6uzdIcdXe5jI zLwWvprLP73-iQay3>ox4G*Z5wt>TT&|A%8jFW!4z*UBmv{-eJ{S|mI`q5oflgFhk{ z0@TSYpivS8{@7uM=NTZdp4zneT=Wbm>^H8)xP?B@zNK^gOPb!3?wf~o9NiQW75G2b zHV-(+yO7P(X%p;W9XG0!M-~A&{^x&N`oW~{vzIrk{V$=EQ-E4Q_%D{g=$sFJX#br6 z{?1apV4knGHobyu%8_fE@u7bJp3(*@%Q(32S5+$sDlxCY}D@&_3oQi cC&K;Pgp|&4@CM=R2f&wzz<2&qJ}s~R1sj7IIRF3v literal 0 HcmV?d00001 From 1e716280f5d496b164799ed998da67fd075d6d50 Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 15:43:20 +0200 Subject: [PATCH 072/135] typo and alert image --- groups_and_permissions.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/groups_and_permissions.md b/groups_and_permissions.md index b6b121de..4397968c 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -11,13 +11,14 @@ Managing groups The group mechanism can be used to define groups of users which then can be used to restrict permissions for applications and other services (such as mail or xmpp). Note that it is *not* mandatory to create a group to do so: you can also restrict access to an app or service on a user-per-user basis. -Using groups is however useful for semantic, for example if you host multiple groups of friends, associations or businesses on your server, you might want to create groups like `association1` and `association2` and add members of each association to the relevant group. +Using groups is however useful for semantics, for example if you host multiple groups of friends, associations or businesses on your server, you might want to create groups like `association1` and `association2` and add members of each association to the relevant group. ### Default groups By default, two special groups are created: - `all_users`, that contain all users registered on YunoHost, -- `visitors`, that applies to people viewing the server while not registered on the server. +- `visitors`, that applies to people viewing the server while not logged in. + The content of those groups cannot be changed, only the permissions given to them. ### List existing groups @@ -141,7 +142,7 @@ To allow a group to access the wordpress admin interface in CLI: $ yunohost user permission update wordpress.admin --add yolo_crew ``` -Note that you can also allow a single user, by using the panels at the bottom of the page. +Note that you can also allow a single user, by using the specific panel at the bottom of the page. ![](./images/groups_add-permission-user.png) @@ -169,6 +170,9 @@ Note that, for example, if we want to restrict permission for email so that only $ yunohost user permission update mail --remove all_users --add bob ``` +The webadmin will issue a warning if you set a permission that is superseeded by a wider permission. +![](./images/groups_alerte-permission.png) + Notes for apps packagers ------------------------ From ea9f167089ace8fba77338911fbf9305d2a07284 Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 16:07:14 +0200 Subject: [PATCH 073/135] add french groups page --- groups_and_permissions_fr.md | 176 +++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 groups_and_permissions_fr.md diff --git a/groups_and_permissions_fr.md b/groups_and_permissions_fr.md new file mode 100644 index 00000000..73c40696 --- /dev/null +++ b/groups_and_permissions_fr.md @@ -0,0 +1,176 @@ +Groupes et permissions +=========================== + +Vous pouvez accéder à l'interface de gestion des *groupes et des permissions* depuis la webadmin +en allant dans la section "Utilisateurs" et en cliquant sur le bouton correspondant : + +![](./images/button_to_go_to_permission_interface_fr.png) + +Gestion des groupes +--------------- +Le mécanisme de groupe peut être utilisé pour définir des groupes d'utilisateurs qui peuvent ensuite être utilisés pour restreindre les autorisations pour les applications et autres services (tels que l'email ou xmpp). Notez qu'il n'est *pas* obligatoire de créer un groupe pour ce faire : vous pouvez également restreindre l'accès à une application ou à un service de manière individuelle. + +L'utilisation de groupes est cependant utile pour la sémantique, par exemple si vous hébergez plusieurs groupes d'amis, des associations ou des entreprises sur votre serveur, vous pouvez créer des groupes comme "association1" et "association2" et ajouter les membres de chaque association au groupe concerné. + + +### Groupes par défaut +Par défaut, deux groupes spéciaux sont créés : +- `all_users`, qui contient tous les utilisateurs enregistrés sur YunoHost, +- `visitors`, c'est-à-dire les personnes qui consultent le serveur sans être connectées. + +Vous ne pouvez pas changer le contenu de ces groupes, seulement les permissions qui leur sont accordées. + +### Lister les groupes existants +Les groupes existants sont listés en haut de la page *groupes et autorisations*. + +![](./images/groups_default-groups.png) + +Pour obtenir la liste des groupes existants en CLI : + + +```bash +$ yunohost user group list +groups: + all_users: + members: + - alice + - bob + - charlie + - delphine +``` + + +### Créer un nouveau groupe +Pour créer un nouveau groupe, il suffit de cliquer sur le bouton "Nouveau groupe" en haut de la page. Vous ne pouvez choisir qu'un nom formé de lettres (majuscules et minuscules) et d'espaces. Le groupe est créé vide et sans aucune permissions. + +![](./images/groups_button-new-group.png) + +Dans la CLI, pour créer un nouveau groupe appelé `yolo_crew`, il faut utiliser + +```bash +$ yunohost user group create yolo_crew +``` + +### Mettre à jour un groupe +Ajoutons un premier utilisateur à ce groupe : dans le panneau du groupe, cliquez sur le bouton "ajouter un utilisateur" et faites défiler jusqu'à l'utilisateur souhaité, puis cliquez dessus. + +![](./images/groups_button-add-user.png) + +Pour supprimer un utilisateur, cliquez sur la croix à côté de son nom d'utilisateur, dans le panneau du groupe. + +![](./images/groups_button-remove-user.png) + +En CLI, utilisez la commande suivante pour ajouter `charlie` et `delphine` au groupe `yolo_crew` : + +```bash +$ yunohost user group update yolo_crew --add charlie delphine +``` + +(De même, `--remove` peut être utilisé pour retirer des membres d'un groupe) + +Dans la liste des groupes, nous devrions voir : + +```bash +$ yunohost user group list +groups: + all_users: + members: + - alice + - bob + - charlie + - delphine + yolo_crew: + members: + - charlie + - delphine +``` + +### Supprimer un groupe + +Pour supprimer un groupe, cliquez sur la croix rouge en haut à droite du panneau du groupes. Une confirmation vous sera demandée. + +![](./images/groups_button-delete-group.png) + +Pour supprimer le groupe `yolo_crew` dans CLI, vous pouvez exécuter + +```bash +$ yunohost user group delete yolo_crew +``` + +Gestion des permissions +-------------------- + +Le mécanisme de permissions permet de restreindre l'accès aux services (par exemple mail, xmpp, ...) et aux applications, ou même à des parties spécifiques des applications (par exemple l'interface d'administration de wordpress). + +### Liste des permissions + +La page des groupes liste les permissions données à chaque groupe, y compris les groupes spéciaux `all_users` et `visitors`. + +![](./images/groups_default-with-permissions.png) + +Pour répertorier les permissions et les accès correspondants en CLI : +```bash +$ yunohost user permission list +permissions: + mail.main: + allowed: all_users + wordpress.admin: + allowed: + wordpress.main: + allowed: all_users + xmpp.main: + allowed: all_users +``` +Ici, nous constatons que tous les utilisateurs enregistrés peuvent utiliser le courrier électronique, xmpp, et accéder au blog wordpress. Cependant, personne ne peut accéder à l'interface d'administration de wordpress. + +Plus de détails peuvent être affichés en ajoutant l'option `--full` qui affichera la liste des utilisateurs correspondant aux groupes autorisés, ainsi que les urls associées à une permission (pertinent pour les applications web). + +### Ajouter des permissions à un groupe ou un utilisateur + +Pour ajouter une permission à un groupe, il suffit de cliquer sur le bouton "+" dans le panneau du groupe, de faire défiler jusqu'à la permission souhaitée, puis de cliquer dessus. + +![](./images/groups_add-permission-group.png) + +Pour permettre à un groupe d'accéder à l'interface d'administration de wordpress via la CLI : + +```bash +$ yunohost user permission update wordpress.admin --add yolo_crew +``` + +Notez que vous pouvez également autoriser un seul utilisateur, en utilisant le panneau spécifique en bas de la page. + +![](./images/groups_add-permission-user.png) + +ou en CLI : + +```bash +$ yunohost user permission update wordpress.admin --add alice +``` + +Et maintenant, nous pouvons voir que YoloCrew et Alice ont tous deux accès à l'interface d'administration de Wordpress : + +```bash +$ yunohost user permission list + [...] + wordpress.admin: + allowed: + - yolo_crew + - alice + [...] +``` + +Notez que, par exemple, si nous voulons restreindre la permission pour le courrier électronique +afin que seul Bob soit autorisé à envoyer des courriels, nous devons également supprimer `all_users` +de la permission, en la supprimant du panneau de groupe `all_users`, ou en CLI : + +```bash +$ yunohost user permission update mail --remove all_users --add bob +``` + +La webadmin émettra un avertissement si vous définissez une permission qui est remplacée par une permission plus large. +![](./images/groups_alerte-permission.png) + +Notes pour les packageurs d'applications +------------------------ + +[Voir la version anglaise de cette page](groups_and_permissions). From bec9cce40d7738672f8cac610825a206d4079d59 Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 16:09:31 +0200 Subject: [PATCH 074/135] groups interface button FR --- .../button_to_go_to_permission_interface_fr.png | Bin 0 -> 31012 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/button_to_go_to_permission_interface_fr.png diff --git a/images/button_to_go_to_permission_interface_fr.png b/images/button_to_go_to_permission_interface_fr.png new file mode 100644 index 0000000000000000000000000000000000000000..3d524b5edb684f99758552046712f069e118e03c GIT binary patch literal 31012 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 Date: Mon, 6 Apr 2020 16:37:59 +0200 Subject: [PATCH 075/135] add groups entry --- admindoc.md | 1 + 1 file changed, 1 insertion(+) diff --git a/admindoc.md b/admindoc.md index 9194c8a4..27de3c56 100644 --- a/admindoc.md +++ b/admindoc.md @@ -26,6 +26,7 @@ * [Web administration interface](/admin) * [SSH](/ssh) and [command-line administration](/commandline) * [Users and the SSO](/users) + * [Groups and permissions](/groups_and_permissions) * [Applications](/apps_overview) * [Domains, DNS and certificates](/domains) * [Email](/email) From 5d94d5e53e69a316cb96faf7a7cc41542158b15b Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 16:40:02 +0200 Subject: [PATCH 076/135] ajout page groupes --- admindoc_fr.md | 1 + 1 file changed, 1 insertion(+) diff --git a/admindoc_fr.md b/admindoc_fr.md index 6dc54324..93b83145 100644 --- a/admindoc_fr.md +++ b/admindoc_fr.md @@ -26,6 +26,7 @@ * [L'interface d'administration web](/admin) * [SSH](/ssh) et [l'administration en ligne de commande](/commandline) * [Les utilisateurs et le SSO](/users) + * [Les groupes et les permissions](/groups_and_permissions) * [Les applications](/apps_overview) * [Les domaines, la configuration DNS et les certificats](/domains) * [Les emails](/email) From db72fd8bee395c8bef5a72ec35460057a5742f3b Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 16:56:25 +0200 Subject: [PATCH 077/135] update groups entry --- apps_overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps_overview.md b/apps_overview.md index 16cbe218..f4a73f24 100644 --- a/apps_overview.md +++ b/apps_overview.md @@ -37,7 +37,7 @@ Some applications support the ability to be installed several times (at differen User access management ---------------------- -Access to apps can be restricted to some users only. This can be configured via the webadmin in Applications > (choose an app) > Access, or similarly via the command line `yunohost app addaccess`, `removeaccess` and `clearaccess`. +Access to apps can be restricted to some users only. This can be configured via the webadmin in the [Groups and permissions panel](/groups_and_permissions), or similarly via the command-line subcategory `yunohost user permission`. Packaging applications ---------------------- From acfa495d1efc6d2315e1c7efd469d4463fc7e836 Mon Sep 17 00:00:00 2001 From: Jaxom99 <30865395+Jaxom99@users.noreply.github.com> Date: Mon, 6 Apr 2020 16:58:40 +0200 Subject: [PATCH 078/135] maj Groupes et permissions --- apps_overview_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps_overview_fr.md b/apps_overview_fr.md index 8aa7b904..3fbaaaa7 100644 --- a/apps_overview_fr.md +++ b/apps_overview_fr.md @@ -37,7 +37,7 @@ Certaines applications peuvent être installées plusieurs fois (à différents Gestion de l'accès des utilisateurs ---------------------- -L'accès aux applications peut être limité à certains utilisateurs seulement. Ceci peut être configuré via la webadmin dans Applications > (une application) > Accès, ou de la même manière via les commandes `yunohost app addaccess`, `removeaccess` et `clearaccess`. +L'accès aux applications peut être limité à certains utilisateurs seulement. Ceci peut être configuré via la webadmin sur la page [Groupes et permissions](groups_and_permissions), ou de la même manière via la sous-catégorie de commandes `yunohost user permission`. Packaging d'applications ------------------------ From ed0ba8a454194be9a9a02a24eb053059e025b2b7 Mon Sep 17 00:00:00 2001 From: Plumf Date: Mon, 6 Apr 2020 18:31:36 +0200 Subject: [PATCH 079/135] Add doc_use_git english version --- doc_use_git.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/doc_use_git.md b/doc_use_git.md index 3d97c508..968db224 100644 --- a/doc_use_git.md +++ b/doc_use_git.md @@ -1 +1,63 @@ -# Propel your contribution with Git +# Propel a contribution with Git + + **Index** + - [Creating an account on github.com](#CreationAccountGithub) + - [Fork the YunoHost documentation into your personal repository](#ForkerDocumentationYunoHost) + - [Edit files and add your contributions](#EditAddContrib) + - [Send your contributions with a Pull Request](#SendPR) + - [Track your contribution and take into account feedback from contributors](#TrackContributions) + - [Bringing up errors and wishes by creating a way out](#RemonterIssues) + - [Correct and Inspect Contributions](#ReviewContrib) + - [Going further with Git and working locally on his computer](#PlusLoinGitOrdi) + - [Some web resources](#WebLinks) + +It is of course possible to contribute directly to the YunoHost documentation, but this is not the most convenient way to do so for both the contributor and the person who will inject your contribution into the documentation. Here is a tutorial to understand and create a contribution to the Yunohost documentation using [Git](https://git-scm.com/) and [github.com](http://github.com/) which is the Git forge service that hosts and stores the YunoHost source code and documentation. + +## Create an account on github.com +To be able to send your contributions via GitHub, you need to have an account on GitHub, to create the account you will need a valid email address that you have access to. GitHub is a powerful tool with many features, the interface can be a little scary at first. +You don't have to give your first and last names, you can use a nickname (when you register `Username`). + +*/iframe video create a GitHub account /* + +## Fork the YunoHost documentation in your personal repository +To fork the source code allows you to create a new branch of development of a software source code or in this case the source code of the documentation. By creating a new branch, this allows you to modify the code and add your contributions without altering the code of the `master' branch, which is the public release of the documentation. This allows you not to have to write down everything at once, but to do it in several steps. (Especially for contributions that require more time). + +Forking a project on GitHub is extremely simple, just click on the Fork button, this will create a new repository on your GitHub account. +![Screenshot GitHub fork button screenshot](/images/dug_fork.png) +In the title of the new repository, you will see where the repository comes from, in this case `YunoHost/doc`. +![Screenshots title and subtitle of the repository](/images/dug_fork_source.png) + +*/iframe video forker source code GitHub /* + +> **Point of vigilance !** +> If you forge the repository of another contributor than yunohost, you'll get the same files. Except that when you send your changes, they will be sent to the contributor and not to the yunohost repository. The advantage is that it allows you to develop another branch created by the contributor and work with another person on an improvement before submitting it to the main repository. +> It is not possible to have a fork from a contributor's repository and the original repository fork at the same time in your own account. + +## Modify and add your contribution +Once the repository is forked (copied), you will need to create a new development branch within your repository. It is through this branch that you will modify the files and thus propose improvements to the documentation. The fact that it is a new branch will allow you to make a Pull Request, i.e. a request to add your contributions to the `master' branch, which is the main documentation branch. The development rules on GitHub change depending on the developers of each repository, some have a testing branch in which to offer contributions. +More information on what a branch on git-scm.com is: [Branching with Git - What a branch is](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Ce-qu-est-une-branche). + +*/iframe video edit files add contribution /* + +## Send your contribution by a Pull Request +Create a Pull Request when you want to share your work with the other contributors and integrate it into the master repository (Yunohost's main repository). When publishing a Pull Request, commonly called PR, contributors will be able to amend, comment, add, correct your contribution before it is fully integrated into the repository. + +## Track your contribution and take into account feedback from contributors +When you've already create a Pull Request (PR), changes to your development branch in the Git repository will automatically be added to the PR. This doesn't require any additional action. You can also include proposed changes from contributors, who, when they audit the code, may find errors or new, better wording. + +## Bringing up mistakes and wishes through issues +YunoHost has a specific Git repository to collect issues: [github.com/YunoHost/issues](https://github.com/YunoHost/issues) +An issue, also called a ticket, is an identified problem or a development wish; in this case for documentation, but it is valid for any software repository. Within the framework of the YunoHost documentation it will be mainly proposed issues for the development of the documentation, the identified problems being easily correctable. + +## Going further with Git and working on his workstation +Using the power of Git to work on your personal computer means you don't have to create a `commit' each time you save modified documentation pages. It also allows you to use tools and software that make it easier to distinguish between tags used in a documentation page. + +- Online resource: [docs.microsoft.com - Setting up a Git repository locally for documentation](https://docs.microsoft.com/fr-fr/contribute/get-started-setup-local) + +## Some resources elsewhere on the net to go further + - [Managing your code with Git and GitHub - openclassrooms.com](https://openclassrooms.com/fr/courses/2342361-gerez-votre-code-avec-git-et-github) + - [Git User Interface - git-scm.com](https://git-scm.com/download/gui/linux) + +*/ To do/* +*/Add videos explanation/* - Add videos explanation/* +*/Add ## Correct and inspect contributions /* From 5b5baca40d873f7ec282742a31379583bd7f0c8f Mon Sep 17 00:00:00 2001 From: Plumf Date: Mon, 6 Apr 2020 19:39:40 +0200 Subject: [PATCH 080/135] git adaptation --- packaging_apps_git_fr.md | 98 ++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/packaging_apps_git_fr.md b/packaging_apps_git_fr.md index b66fefc4..b8e3ccc9 100644 --- a/packaging_apps_git_fr.md +++ b/packaging_apps_git_fr.md @@ -1,72 +1,72 @@ # Comment utiliser Git pour packager les applications -Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t", selon Linus. +Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t" ( P *t**n de camion de m*rde), selon Linus. Si vous ne connaissez pas encore Git, soyez sûr que vous serez bientôt d'accord avec cette description. -YunoHost et toutes nos applications sont sur la forge Git GitHub. Ce qui veut dire que si vous voulez travailler sur une application, tôt ou tard vous allez devoir faire face à Git. +YunoHost et toutes nos applications sont sur la forge Git GitHub. Ce qui veut dire que si vous voulez travailler sur une application, tôt ou tard vous allez devoir faire face à Git. Alors voyons comment travailler avec Git pour pouvoir contribuer dans le contexte de YunoHost. ## Travailler avec GitHub Commençons par la partie facile, GitHub est livré avec une interface web "facile" à utiliser. -*Tout d'abord, malheureusement il n'y a pas moyen de contourner ça, vous devez avoir un compte sur GitHub.* +*Tout d'abord et malheureusement, il n'y a pas moyen de contourner ça, vous devez avoir un compte sur GitHub.* #### Branches -Ensuite, et c'est probablement l'une des choses les plus importantes, **ne travaillez pas directement sur la branche master**. +Ensuite, et c'est probablement l'une des choses les plus importantes, **ne travaillez pas directement sur la branche master**. Désolé, il fallait que ce soit dit ! Les branches sont, comme l'explique GitHub, "*une version parallèle d'un dépôt. Elle est contenue dans le dépôt, mais n'affecte pas les autres branches. Elle vous permet de travailler librement sans perturber la version "live".*" -La branche master est la branche qui contient la version de l'application que les utilisateurs installeront et utiliseront effectivement. -La chose habituelle à faire est de travailler à partir de la branche testing, et lorsque tout est réglé et testé, vous pouvez fusionner la branche testing dans master, afin que les utilisateurs puissent profiter de la nouvelle version de votre package. +La branche master est la branche qui contient la version de l'application que les utilisateurs installeront et utiliseront effectivement. +La bonne habitude à prendre est de travailler à partir de la branche testing, et lorsque tout est réglé et testé, vous pouvez fusionner la branche testing dans master, afin que les utilisateurs puissent profiter de la nouvelle version de votre package. -Pour voir et modifier la branche actuelle, utilisez ce bouton : +Pour voir et modifier la branche actuelle, utilisez ce bouton : #### Modifier un fichier Maintenant que vous êtes sur la bonne branche, voyons comment éditer un fichier sur GitHub. -Vous pouvez éditer n'importe quel fichier en utilisant l'icône du petit crayon : +Vous pouvez éditer n'importe quel fichier en utilisant l'icône du petit crayon : -Si vous n'avez pas la permission d'écrire sur le dépôt, vous verrez (comme sur l'image) que vous allez créer un fork (nous verrons plus loin ce qu'est un fork). +Si vous n'avez pas la permission d'écrire sur le dépôt, vous verrez (comme sur l'image) que vous allez créer un fork (nous verrons plus loin ce qu'est un fork). Si vous avez la permission d'écrire, vous allez simplement modifier le fichier, sans forker. #### Validez vos modifications -Lorsque vous avez fini de modifier le fichier, vous pouvez faire un commit de vos modifications. -Derrière ce mot, l'idée est assez simple, vous allez juste enregistrer vos modifications... +Lorsque vous avez fini de modifier le fichier, vous pouvez faire un commit de vos modifications. +Derrière ce mot, l'idée est assez simple, vous allez juste enregistrer vos modifications... -Le premier champ est le nom de votre commit, une phrase très courte pour expliquer pourquoi vous avez fait cette modification. +Le premier champ est le nom de votre commit, une phrase très courte pour expliquer pourquoi vous avez fait cette modification. Le deuxième champ est un champ plus grand pour une explication plus complète, si vous en avez besoin. -Enfin, si vous modifiez un dépôt sur lequel vous avez la permission d'écrire, vous pouvez soit faire un commit directement sur la branche en cours, soit créer une nouvelle branche. +Enfin, si vous modifiez un dépôt sur lequel vous avez la permission d'écrire, vous pouvez soit faire un commit directement sur la branche en cours, soit créer une nouvelle branche. Il est généralement préférable de créer une nouvelle branche, de cette façon vous gardez vos modifications sur une version *parallèle* du dépôt. Vos modifications seront discutées dans une pull request (expliquée ci-dessous) puis finalement fusionnées dans la branche d'origine. #### Forker ou ne pas forker -Un fork est une copie d'un dépôt sur votre propre compte. -Nous avons déjà vu que si vous n'avez pas l'autorisation d'écrire dans un dépôt, la modification d'un fichier créera automatiquement un fork. -Comme le fork est sur votre compte, vous avez toujours la permission d'écrire dessus. +Un fork est une copie d'un dépôt sur votre propre compte. +Nous avons déjà vu que si vous n'avez pas l'autorisation d'écrire dans un dépôt, la modification d'un fichier créera automatiquement un fork. +Comme le fork est sur votre compte, vous avez toujours la permission d'écrire dessus. Mais même si un fork n'est pas le véritable dépôt, mais juste une copie, un fork est toujours lié à son parent. Nous verrons plus tard que la création d'un fork est vraiment utile lors de l'ouverture d'une pull request. -Lorsque vous créez un nouveau package, il est courant d'utiliser l'[application d'exemple](https://github.com/YunoHost/example_ynh) comme base. -Mais, comme vous ne voulez pas garder ce lien vers l'application d'exemple, vous ne devez pas forker l'application d'exemple. Vous la clonerez plutôt. +Lorsque vous créez un nouveau package, il est courant d'utiliser l'[application exemple](https://github.com/YunoHost/example_ynh) comme base. +Mais, comme vous ne voulez pas garder ce lien vers l'application d'exemple, vous ne devez pas forker l'application d'exemple. Vous la clonerez plutôt. Malheureusement, cloner une application est un peu plus compliqué sur GitHub. Nous verrons plus tard comment cloner vers un dépôt local à la place. -Nous avons vu comment éditer un fichier, et comment cela peut forker l'application. -Mais, lorsque vous voulez éditer plusieurs fichiers, l'interface GitHub n'est pas vraiment la meilleure solution. Dans une telle situation, vous préférez cloner le dépôt et travailler sur un dépôt local. +Nous avons vu comment éditer un fichier, et comment cela peut forker l'application. +Mais, lorsque vous voulez éditer plusieurs fichiers, l'interface GitHub n'est pas vraiment la meilleure solution. Dans une telle situation, vous préférerez cloner le dépôt et travailler sur un dépôt local. Il se peut que vous deviez tout de même forker sur votre propre compte pour pouvoir enregistrer vos modifications si vous n'avez pas les autorisations sur le dépôt distant. #### Pull request -Après avoir effectué vos commits, que ce soit sur une branche ou un fork, vous souhaitez proposer vos modifications pour qu'elles soient intégrées dans le dépôt principal, ou dans la branche d'origine. -Pour ce faire, vous allez créer une pull request. GitHub vous demande généralement directement si vous souhaitez le faire. -Sinon, vous trouverez le bouton de création d'une pull request juste ici : +Après avoir effectué vos commits, que ce soit sur une branche ou un fork, vous souhaitez proposer vos modifications pour qu'elles soient intégrées dans le dépôt principal, ou dans la branche d'origine. +Pour ce faire, vous allez créer une pull request. GitHub vous demande généralement directement si vous souhaitez le faire. +Sinon, vous trouverez le bouton de création d'une pull request juste ici : Lors de la création d'une pull request à partir d'un fork, pour faciliter le travail de révision du code, **ne jamais** décocher la case *Allow edits from maintainers*. Cette option permet simplement aux mainteneurs du dépôt d'origine de modifier directement votre travail. @@ -77,25 +77,25 @@ Conformément à la [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packag Tout d'abord, vous devez avoir la permission d'écrire dans l'organisation, pour ce faire, demandez au groupe Apps sur le salon xmpp Apps. -Pour transférer votre application sur l'organisation YunoHost-Apps, allez dans votre dépôt et dans l'onglet *Settings*. -En bas de la page, vous trouverez *Transfer ownership*. -Dans le champ *New owner’s GitHub username or organization name*, tapez *YunoHost-Apps*. +Pour transférer votre application sur l'organisation YunoHost-Apps, allez dans votre dépôt et dans l'onglet *Settings*. +En bas de la page, vous trouverez *Transfer ownership*. +Dans le champ *New owner’s GitHub username or organization name*, tapez *YunoHost-Apps*. Votre dépôt sera déplacé dans l'organisation, vous n'avez pas besoin de supprimer le dépôt d'origine. ## Travailler avec Git en local -Comme nous l'avons vu, vous pouvez faire beaucoup de choses directement sur GitHub. +Comme nous l'avons vu, vous pouvez faire beaucoup de choses directement sur GitHub. Mais lorsque vous devez modifier plusieurs fichiers, ou lorsque vous devez travailler sur votre code de votre côté, il est préférable de travailler directement sur votre ordinateur. Avant d'aller dans la partie infernale de Git, voyons 2 façons différentes de commencer à travailler avec Git. #### Premier cas : Créer un nouveau package -Vous avez découvert, choqué, que la merveilleuse application que vous aimez utiliser tous les jours n'a pas encore son package YunoHost. Et parce que vous êtes sympa, vous avez décidé de créer vous-même le package, pour que tout le monde puisse apprécier cette application. +Vous avez découvert, choqué, que la merveilleuse application que vous aimez utiliser tous les jours n'a pas encore son package YunoHost. Et parce que vous êtes sympa, vous avez décidé de créer vous-même le package, pour que tout le monde puisse apprécier cette application. Quelle bonne idée ! -Le mieux est de commencer par l'[application d'exemple] (https://github.com/YunoHost/example_ynh). Mais comme nous l'avons déjà expliqué, vous ne voulez pas forker, parce que si vous le faites, vous allez garder ce lien vers l'application d'exemple et c'est vraiment ennuyeux. +Le mieux est de commencer par l'[application d'exemple](https://github.com/YunoHost/example_ynh). Mais comme nous l'avons déjà expliqué, vous ne voulez pas forker, parce que si vous le faites, vous allez garder ce lien vers l'application d'exemple et c'est vraiment ennuyeux. Donc, vous allez le faire différemment. Vous allez cloner ! ##### git clone @@ -110,15 +110,15 @@ git clone est généralement le point de départ de tout travail local avec Git. *Toutefois, si vous comptez envoyer vos modifications sur le dépôt distant sur GitHub, assurez-vous d'avoir les droits d'écriture sur ce dépôt. Sinon, forkez avant et clonez votre fork, pour lequel vous avez la permission.* -##### Mon tout nouveau package, suite +##### Mon nouveau package, suite -Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package. Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*. -Ne vous embêtez pas avec des README, .gitignore ou licence. Créez simplement le dépôt lui-même. -vous pouvez maintenant cloner ce nouveau dépôt avec Git. +Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package. Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*. +Ne vous embêtez pas avec des README, .gitignore ou licence. Créez simplement le dépôt lui-même. +vous pouvez maintenant cloner ce nouveau dépôt avec Git. -Vous disposez maintenant de 2 dépôts clonés sur votre ordinateur. -Copiez tous les fichiers de l'application example_ynh, **excepté le répertoire .git** (vous voulez juste les fichiers eux-mêmes) dans votre nouveau package. +Vous disposez maintenant de 2 dépôts clonés sur votre ordinateur. +Copiez tous les fichiers de l'application example_ynh, **excepté le répertoire .git** (vous voulez juste les fichiers eux-mêmes) dans votre nouveau package. *Si vous le souhaitez, vous pouvez supprimer l'application example_ynh. Nous n'en avons plus besoin.* @@ -126,14 +126,14 @@ Vous êtes prêt à travailler sur votre nouveau package ! #### Deuxième cas : Travailler localement sur un dépôt -Vous disposez déjà d'un dépôt, mais ce que vous voulez, c'est travailler localement, de sorte que vous puissiez modifier plusieurs fichiers. +Vous disposez déjà d'un dépôt, mais ce que vous voulez, c'est travailler localement, de sorte que vous puissiez modifier plusieurs fichiers. Il vous suffit de cloner le dépôt, le répertoire .git est le lien vers le dépôt distant. Rien d'autre à faire qu'un `git clone`. #### Branches Vous avez bien votre copie local du dépôt, mais comme vous avez lu attentivement cette documentation jusque-là, vous savez que vous devez vous assurer d'être sur la branche testing avant de commencer à travailler. -Pour voir les branches, et savoir sur quelle branche vous êtes réellement, alors que vous êtes dans le répertoire de votre dépôt, tapez `git branch`. +Pour voir les branches, et savoir sur quelle branche vous êtes réellement, alors que vous êtes dans le répertoire de votre dépôt, tapez `git branch`. La branche courante est mise en évidence et précédée d'un "*". #### git checkout @@ -146,16 +146,16 @@ git checkout testing #### git pull avant tout -Vous êtes enfin dans la bonne branche, et prêt à travailler. -**Attendez ! Un vilain piège vous attend...** +Vous êtes enfin dans la bonne branche, et prêt à travailler. +**Attendez ! Un vilain piège vous attend...** Avant de vous retrouver dans une situation inextricable. Commencez par un `git pull` pour mettre à jour votre branche avec les derniers changements du dépôt distant. -*Parfois, vous rencontrerez une situation impossible où Git vous dira que vous ne pouvez pas pull parce que vous avez des changements locaux. Mais vous ne vous souciez pas de ces modifications locales, vous voulez juste obtenir la dernière version de la branche distante. Mais Git ne se soucie pas de ce que VOUS voulez...* +*Parfois, vous rencontrerez une situation impossible où Git vous dira que vous ne pouvez pas pull parce que vous avez des changements locaux. Mais vous ne vous souciez pas de ces modifications locales, vous voulez juste obtenir la dernière version de la branche distante. Mais Git ne se soucie pas de ce que VOUS voulez...* *Je dois admettre que ma seule solution est aussi efficace que sale... Un bon vieux `rm -r` du dépôt et un `git clone`* #### Il est temps de travailler -Vous pouvez finalement travailler sur votre code. +Vous pouvez finalement travailler sur votre code. Lorsque vous êtes enfin d'accord avec ce que vous avez fait, il est temps de valider votre travail. La première étape consiste à informer Git sur le(s) fichier(s) à valider. Pour ce faire, nous utiliserons `git add`. @@ -163,26 +163,26 @@ La première étape consiste à informer Git sur le(s) fichier(s) à valider. Po git add mon_fichier ajouter mon_autre_fichier et_aussi_celui_ci ``` -Si vous souhaitez valider tous votre travail, vous pouvez aussi simplement faire +Si vous souhaitez valider l'ensemble de votre travail, vous pouvez aussi simplement faire ```bash git add --all ``` -Pour vérifier l'état actuel de votre validation, vous pouvez utiliser `git status`. Il vous montrera quels fichiers seront inclus dans votre commit, et quels fichiers sont modifiés, mais pas encore inclus. +Pour vérifier l'état actuel de votre validation, vous pouvez utiliser `git status`. Il vous montrera quels fichiers seront inclus dans votre commit, et quels fichiers sont modifiés, mais pas encore inclus. `git status -v` vous indiquera également quelle partie des fichiers est modifiée. Une bonne façon de s'assurer que vous n'avez pas fait d'erreur avant de faire un commit. #### git checkout -b -Avant de faire un commit, ou après, ou avant de commencer à travailler. Quand vous en avez envie ! +Avant de faire un commit, ou après, ou avant de commencer à travailler. Quand vous en avez envie ! Vous devriez envisager d'ajouter votre travail à une branche séparée, de cette façon, il sera facile de créer une pull request dans la branche testing et de discuter avec les autres packagers de ce que vous suggérez de changer. Pour créer une nouvelle branche et passer à cette branche, vous pouvez utiliser `git checkout -b my_new_branch`. #### Commit -Faire un commit, c'est simplement valider son travail dans Git. Comme vous pouvez le faire dans GitHub. -Pour avoir les mêmes champs que vous aviez sur GitHub, avec le nom du commit, et une explication plus longue. Vous pouvez simplement utiliser `git commit`. -La première ligne, avant les commentaires, est pour le nom du commit. +Faire un commit, c'est simplement valider son travail dans Git. Comme vous pouvez le faire dans GitHub. +Pour avoir les mêmes champs que vous aviez sur GitHub, avec le nom du commit, et une explication plus longue. Vous pouvez simplement utiliser `git commit`. +La première ligne, avant les commentaires, est pour le nom du commit. Après tous les commentaires, vous pouvez ajouter une explication si vous le souhaitez. Si vous voulez faire un commit avec seulement un nom pour votre commit, vous pouvez utiliser une simple commande : @@ -192,8 +192,8 @@ git commit -m "My commit name" #### Push vers le dépôt distant -Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub. -Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information). +Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub. +Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information). Ensuite, vous pouvez git push ```bash git push -u origin BRANCH_NAME From 04602a6f161904789611c3e21d44e37c9a805353 Mon Sep 17 00:00:00 2001 From: Plumf Date: Tue, 7 Apr 2020 15:20:28 +0200 Subject: [PATCH 081/135] Update app writing guide fr --- app_writing_guide_fr.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app_writing_guide_fr.md b/app_writing_guide_fr.md index 8896a407..f0b47e0d 100644 --- a/app_writing_guide_fr.md +++ b/app_writing_guide_fr.md @@ -1,13 +1,18 @@ -# logo de Wallabag Wallabag +# logo de APPLICATION APPLICATION -[![Install Wallabag with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/#.svg)](https://dash.yunohost.org/appci/app/APPLICATION) +[![Install APPLICATION with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/#.svg)](https://dash.yunohost.org/appci/app/APPLICATION) +- [Configuration](#configuration) - [Limitations avec Yunohost](#limitations-avec-yunohost) - [Applications clientes](#applications-clients) - [Liens utiles](#liens-utiles) **Présentation générale de l'application.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* +## Configuration + +**Si la configuration de l'application ne se fait pas avec le panel admin de YunoHost** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* + ## Limitations avec Yunohost **Explication des limitations actuelles en utilisation l'application avec YunoHost.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* From bf1a036e817d1d2fcdc4329af734f95c19aeb219 Mon Sep 17 00:00:00 2001 From: Plumf Date: Tue, 7 Apr 2020 15:33:29 +0200 Subject: [PATCH 082/135] Update Writing guide fr + add english version --- app_writing_guide.md | 31 +++++++++++++++++++++++++++++++ app_writing_guide_fr.md | 10 +++++----- 2 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 app_writing_guide.md diff --git a/app_writing_guide.md b/app_writing_guide.md new file mode 100644 index 00000000..abaef509 --- /dev/null +++ b/app_writing_guide.md @@ -0,0 +1,31 @@ +# APPLICATION's logo APPLICATION + +[![Install APPLICATION with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/APPLICATION.svg)](https://dash.yunohost.org/appci/app/APPLICATION) + +- [Configuration](#Configuration) +- [Limitations with YunoHost](#limitations-with-yunohost) +- [Customer Applications](#Customer-applications) +- [Useful links](#useful-links) + +**General presentation of the application.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* + +## Configuration + +**If the configuration of the application is not done with the admin panel of YunoHost.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* + +## Limitations with YunoHost + +**Explanation of the current limitations in using the application with YunoHost.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* + +## Customer applications + +| Application name | Platform | Multi-account | Other supported networks | Play Store | F-Droid | Apple Store | *Other* | +|------------------|----------|---------------|--------------------------|------------|---------|-------------|---------| +| | | | | | | | | + +## Useful links + ++ Website: [WEBSITE](#) ++ Official documentation: [DOCUMENTATION](#) ++ Application software repository: [github.com - YunoHost-Apps/APPLICATION](https://github.com/YunoHost-Apps/APPLICATION_ynh) ++ Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/APPLICATION/issues](https://github.com/YunoHost-Apps/APPLICATION_ynh/issues) diff --git a/app_writing_guide_fr.md b/app_writing_guide_fr.md index f0b47e0d..b39fdfec 100644 --- a/app_writing_guide_fr.md +++ b/app_writing_guide_fr.md @@ -1,6 +1,6 @@ # logo de APPLICATION APPLICATION -[![Install APPLICATION with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/#.svg)](https://dash.yunohost.org/appci/app/APPLICATION) +[![Install APPLICATION with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=APPLICATION) [![Integration level](https://dash.yunohost.org/integration/APPLICATION.svg)](https://dash.yunohost.org/appci/app/APPLICATION) - [Configuration](#configuration) - [Limitations avec Yunohost](#limitations-avec-yunohost) @@ -11,7 +11,7 @@ ## Configuration -**Si la configuration de l'application ne se fait pas avec le panel admin de YunoHost** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* +**Si la configuration de l'application ne se fait pas avec le panel admin de YunoHost.** *Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum sodales mauris eu viverra. Sed dapibus, tellus sit amet interdum condimentum, enim eros faucibus ligula, sed suscipit orci velit at felis. Etiam quam lacus, vulputate eu scelerisque ac, sollicitudin rutrum orci. Cras eu ante porttitor, laoreet odio sed, hendrerit tellus. Nulla luctus sem in arcu scelerisque cursus. Nulla ut tellus at leo porttitor tincidunt. Morbi vitae purus convallis, elementum lectus non, dignissim orci. Integer eget egestas mauris. Nunc nunc dolor, cursus in quam mollis, rutrum fermentum nibh. Aliquam molestie velit a nulla porttitor, sit amet tincidunt erat laoreet.* ## Limitations avec Yunohost @@ -26,6 +26,6 @@ ## Liens utiles + Site web : [SITE WEB](#) - + Documentation officielle : [LIEN DOCUMENTATION](#) - + Dépôt logiciel de l'application : [github.com - YunoHost-Apps/APPLICATION](#) - + Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com -YunoHost-Apps/APPLICATION/issues](#) + + Documentation officielle : [DOCUMENTATION](#) + + Dépôt logiciel de l'application : [github.com - YunoHost-Apps/APPLICATION](https://github.com/YunoHost-Apps/APPLICATION_ynh) + + Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com - YunoHost-Apps/APPLICATION/issues](https://github.com/YunoHost-Apps/APPLICATION_ynh/issues) From 5c48290eaea2e39f841f7f92013daf80d2b6a727 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Tue, 7 Apr 2020 17:06:27 +0000 Subject: [PATCH 083/135] [alex] Improvements for the noaccess page --- noaccess.md | 152 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 151 insertions(+), 1 deletion(-) diff --git a/noaccess.md b/noaccess.md index a2ed2d20..88d70eca 100644 --- a/noaccess.md +++ b/noaccess.md @@ -1 +1,151 @@ -Unfortunately, this page only exists [in french here](noaccess_fr) for now. +# Récupérer l'accès à son YunoHost +Si vous avez perdu l'accès à votre YunoHost qui était auparavant fonctionnel, cette page est faite pour vous. + +Il existe de nombreuses causes pouvant empêcher totalement ou partiellement d'accéder en administrateur à un serveur YunoHost. Dans de nombreux cas, un des moyens d'accès est inaccessible, mais les autres sont fonctionnels. + +Cette page va vous aider à diagnostiquer, obtenir un accès et si besoin réparer votre système. Les pannes les plus courantes sont priorisées de haut en bas. Il vous suffit de tester chaque hypothèse. + + + + +## Vous avez accès au serveur via l'adresse IP, mais pas avec le nom de domaine ? + +#### Si vous êtes auto-hébergé à la maison : il faut configurer les redirection de ports + +Vérifier que vous arrivez à accéder au serveur en utilisant son IP globale (que vous pouvez trouver sur https://ip.yunohost.org). Si cela ne fonctionne pas: + - Assurez-vous d'avoir [configuré les redirections de ports](/isp_box_config) + - Certaines box de FAI ne supportent pas le hairpinning et vous ne pouvez pas accéder à votre serveur depuis l'intérieur du réseau local (sauf à passer par l'IP locale). Pour contourner le problème, vous pouvez tester d'accéder à votre serveur en passant par un proxy comme proxfree.com + +#### Il faut configurer vos enregistrement DNS + +(N.B.: ce n'est pas nécessaire si vous utilisez un domaine de type nohost.me, noho.st ou ynh.fr) + +Il vous faut configurer vos enregistrement DNS comme expliqué sur [cette page](/dns_config) (à minima l'enregistrement A, et AAAA si vous avez de l'IPv6). + +Vous pouvez valider que les enregistrements DNS sont corrects en comparant le résultat de https://www.whatsmydns.net/ avec l'IP globale de votre serveur (si vous êtes hébergé à la maison, vous pouvez obtenir cette IP sur https://ip.yunohost.org) + + + + + +#### Autres causes possibles + +- Votre nom de domaine noho.st, nohost.me ou ynh.fr est inaccessible suite à une panne de l'infra YunoHost. Vérifiez sur le forum si d'autre personnes signalent le même problème. +- Votre nom de domaine est peut-être expiré. Vous pouvez vérifier que votre nom de domaine a expiré en vous connectant sur l'interface de votre registrar ou en utilisant le whois par exemple via la commande `whois NOM_DE_DOMAINE`. +- Vous avez une IP dynamique. Dans ce cas, il faut mettre en place un script qui se charge de mettre à jour régulièrement votre IP (ou d'utiliser un nom de domaine en nohost.me, noho.st ou ynh.fr qui inclue un tel mécanisme) + + +## Vous êtes face à une erreur de certificat qui vous empêche d'accéder à la webadmin + +Si vous venez d'installer votre serveur ou d'ajouter un nouveau domaine, il utilise pour le moment un certificat auto-signé. Dans ce cas, il devrait être possible et légitime d'ajouter *exceptionnellement* une exception de sécurité le temps d'[installer un certificat Let's Encrypt](/certificate) à condition d'être sur une connexion internet sûre (pas avec Tor Browser par exemple). + +Une erreur de certificat peut également être affichée dans certain cas où vous avez fait une faute de frappe dans la barre d'adresse de votre navigateur. + + + + +## La webadmin fonctionne, mais certaines applications web me renvoie une erreur 502. + +Il est fort probablement que le service correspondant à ces applications soit en panne (Typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help). + + + + + +## Vous avez perdu votre mot de passe administrateur ? (ou bien le mot de passe est refusé) + +Si vous arrivez à afficher la page web d'administration (forcer le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez. Vous avez probablement un mot de passe erroné. + +Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en root. +- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur root. +- Si vous êtes sur un VPS, votre hébergeur vous fourni peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web. +Une fois connecté, il vous faut regarder l'état du service avec la commande `yunohost service status slapd` et/ou tenter de réinitialiser votre mot de passe avec la commande `yunohost tools adminpw`. + +Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en root, vous allez devoir opérer en mode rescue. + +TODO: à compléter + + + + +## Vous avez accès en SSH mais pas à la Web admin ou inversement + + +#### Vous essayez de vous connecter en SSH avec `root` plutôt qu'avec `admin` + +Par défaut, la connexion en SSH doit s'effectuer avec l'utilisateur `admin`. Il est possible de se connecter à la machine avec l'utilisateur `root` *seulement depuis le réseau local* sur lequel se situe le serveur. + +Lorsque vous exécutez des commandes `yunohost` en tant qu'admin, il faut les précéder de la commande `sudo` (par exemple `sudo yunohost user list`). Vous pouvez également devenir `root` en tapant `sudo su`. + +#### Vous avez été banni temporairement + +Votre serveur YunoHost inclut un mécanisme (fail2ban) qui banni automatiquement les IPs qui échouent plusieurs fois à s'authentifier. Dans certains cas, il peut s'agir d'un programme (par exemple un client Nextcloud) qui est configuré avec un ancien mot de passe ou d'un utilisateur qui utilise la même IP que vous. + +Si vous avez été banni en tentant d'accéder à une page web, seul les pages web sont inaccessibles, vous devriez donc pouvoir accéder au serveur en SSH. De même, si vous avez été banni en SSH vous devriez pouvoir accéder à la webadmin. + +Si vous avez été banni à la fois en SSH et à la webadmin, vous pouvez essayer d'accéder à votre serveur avec une autre IP, par exemple en utilisant la 4G d'un smartphone ou en utilisant Tor Browser. + +Voir aussi: [débannir une IP sur Fail2ban](/fail2ban) + +NB: le bannissement dure en général 10 à 12 minutes. Le bannissement n'est actif qu'en IPv4. + + +#### Le serveur web nginx est cassé + +Peut-être que le serveur web nginx est en panne. Vous pouvez vérifier cela [en ssh](/ssh) avec `yunohost service status ssh`. Si il est en panne, vérifiez que la configuration ne comporte pas d'erreur avec `nginx -t`. Si la configuration est cassé, ceci est peut-être du à une l'installation ou désinstallation d'une application de mauvaise qualité... Si vous êtes perdu, [demandez de l'aide](/help). + +Il se peut également que le serveur web (nginx) ou le serveur ssh aient été tué suite à un manque d'espace disque ou de RAM / swap. +- Tentez de relancer le service avec `systemctl restart nginx`. +- Vous pouvez contrôler l'espace disque utilisé avec `df -h`. Si une de vos partition est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place. Il est possible d'installer l'utilitaire `ncdu` avec `apt install ncdu` puis de faire `ncdu /` pour analyser la taille des dossiers de toute l'arborescence. +- Vous pouvez contrôler l'utilisation de la RAM / swap avec `free -h`. En fonction des résultats, il peut être nécessaire d'optimiser votre serveur pour qu'il utilise moins de ram (suppression d'app lourdes et inutiles, ...), d'ajouter de la RAM ou d'ajouter un fichier de swap. + +#### Votre serveur est accessible en IPv6 mais pas en IPv4 ou inversement + +Vous pouvez le vérifier en tentant de faire des ping sur votre serveur en IPv4 et en IPv6. + +Dans un tel cas, il est possible que vous arriviez à accéder à votre web admin en IPv6 mais pas en SSH potentiellement en IPv4 par défaut... + +Dans ce cas il faut résoudre votre problème de connectivité. + +Dans certains cas une mise à jour de votre box a activé l'IPv6, entraînant des problèmes de configuration au niveau de votre nom de domaine. + +## Votre VPN a expiré ou ne se monte plus + +Si vous utilisez un VPN a IP fixe, peut être que celui-ci est arrivé à expiration ou que l'infrastructure de votre fournisseur est en difficulté. + +Dans ce cas, vous pouvez peut être accéder à votre serveur avec son IP locale s'agissant probablement d'un serveur auto-hébergé chez-vous. + +Pour connaître votre ip locale, certaines BOX propose une cartographie du réseau en cours avec les équipements connectés. Sinon, en ligne de commande avec linux: +```bash +sudo arp-scan --local +``` + +Vous pouvez aussi essayer avec le domaine `yunohost.local` si il n'y a qu'un seul YunoHost sur votre réseau. + +Il faut voir avec votre fournisseur de VPN pour renouveler le VPN et mettre à jour les paramètre de l'app VPN Client. + +TODO + + + +## Votre serveur est coincé au démarrage + +Dans certains cas, votre serveur peut rester coincer au démarrage. Il peut s'agir d'un problème suite à l'installation d'un nouveau kernel. Essayez de choisir un autre kernel avec VNC ou avec l'écran lors du boot. + +Si vous êtes en grub rescue, dans ce cas il peut s'agir d'un problème de configuration de grub ou d'un disque corrompu. + +Dans ce cas il faut accéder au disque avec un autre système (mode rescue du fournisseur, live usb, lire la carte SD ou le disque dur avec un autre ordinateur) et essayer de vérifier l'intégrité des partitions avec smartctl, fsck et mount. + +Si les disques sont corrompus et difficile à monter, il faut sauvegarder les données et potentiellement refaire un formatage/réinstaller et/ou changer le disque. Si on arrive à monter le disque, il est possible d'utiliser systemd-nspawn pour entrer dans la base de donnée. + +Sinon, relancer grub-update et grub-install en chroot ou avec systemd-nspawn. + + + + + +## L'accès en VNC ou via écran ne fonctionne pas + +Dans ce cas il peut s'agir d'un problème matériel sur votre serveur physique ou d'un problème d'hyperviseur si c'est un VPS. + +Si c'est une machine loué contacter le support de votre fournisseur. Sinon essayez de dépanner votre machine en retirant les composants qui peuvent être en panne. From 0c5c43c6378dc298df15e6f14c3f9f951e294f99 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Tue, 7 Apr 2020 19:10:04 +0200 Subject: [PATCH 084/135] Ugh... Simone commited this to the en page instead of fr -.- --- noaccess.md | 152 +-------------------------------------------- noaccess_fr.md | 165 ++++++++++++++++++++++++++----------------------- 2 files changed, 87 insertions(+), 230 deletions(-) diff --git a/noaccess.md b/noaccess.md index 88d70eca..a2ed2d20 100644 --- a/noaccess.md +++ b/noaccess.md @@ -1,151 +1 @@ -# Récupérer l'accès à son YunoHost -Si vous avez perdu l'accès à votre YunoHost qui était auparavant fonctionnel, cette page est faite pour vous. - -Il existe de nombreuses causes pouvant empêcher totalement ou partiellement d'accéder en administrateur à un serveur YunoHost. Dans de nombreux cas, un des moyens d'accès est inaccessible, mais les autres sont fonctionnels. - -Cette page va vous aider à diagnostiquer, obtenir un accès et si besoin réparer votre système. Les pannes les plus courantes sont priorisées de haut en bas. Il vous suffit de tester chaque hypothèse. - - - - -## Vous avez accès au serveur via l'adresse IP, mais pas avec le nom de domaine ? - -#### Si vous êtes auto-hébergé à la maison : il faut configurer les redirection de ports - -Vérifier que vous arrivez à accéder au serveur en utilisant son IP globale (que vous pouvez trouver sur https://ip.yunohost.org). Si cela ne fonctionne pas: - - Assurez-vous d'avoir [configuré les redirections de ports](/isp_box_config) - - Certaines box de FAI ne supportent pas le hairpinning et vous ne pouvez pas accéder à votre serveur depuis l'intérieur du réseau local (sauf à passer par l'IP locale). Pour contourner le problème, vous pouvez tester d'accéder à votre serveur en passant par un proxy comme proxfree.com - -#### Il faut configurer vos enregistrement DNS - -(N.B.: ce n'est pas nécessaire si vous utilisez un domaine de type nohost.me, noho.st ou ynh.fr) - -Il vous faut configurer vos enregistrement DNS comme expliqué sur [cette page](/dns_config) (à minima l'enregistrement A, et AAAA si vous avez de l'IPv6). - -Vous pouvez valider que les enregistrements DNS sont corrects en comparant le résultat de https://www.whatsmydns.net/ avec l'IP globale de votre serveur (si vous êtes hébergé à la maison, vous pouvez obtenir cette IP sur https://ip.yunohost.org) - - - - - -#### Autres causes possibles - -- Votre nom de domaine noho.st, nohost.me ou ynh.fr est inaccessible suite à une panne de l'infra YunoHost. Vérifiez sur le forum si d'autre personnes signalent le même problème. -- Votre nom de domaine est peut-être expiré. Vous pouvez vérifier que votre nom de domaine a expiré en vous connectant sur l'interface de votre registrar ou en utilisant le whois par exemple via la commande `whois NOM_DE_DOMAINE`. -- Vous avez une IP dynamique. Dans ce cas, il faut mettre en place un script qui se charge de mettre à jour régulièrement votre IP (ou d'utiliser un nom de domaine en nohost.me, noho.st ou ynh.fr qui inclue un tel mécanisme) - - -## Vous êtes face à une erreur de certificat qui vous empêche d'accéder à la webadmin - -Si vous venez d'installer votre serveur ou d'ajouter un nouveau domaine, il utilise pour le moment un certificat auto-signé. Dans ce cas, il devrait être possible et légitime d'ajouter *exceptionnellement* une exception de sécurité le temps d'[installer un certificat Let's Encrypt](/certificate) à condition d'être sur une connexion internet sûre (pas avec Tor Browser par exemple). - -Une erreur de certificat peut également être affichée dans certain cas où vous avez fait une faute de frappe dans la barre d'adresse de votre navigateur. - - - - -## La webadmin fonctionne, mais certaines applications web me renvoie une erreur 502. - -Il est fort probablement que le service correspondant à ces applications soit en panne (Typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help). - - - - - -## Vous avez perdu votre mot de passe administrateur ? (ou bien le mot de passe est refusé) - -Si vous arrivez à afficher la page web d'administration (forcer le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez. Vous avez probablement un mot de passe erroné. - -Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en root. -- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur root. -- Si vous êtes sur un VPS, votre hébergeur vous fourni peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web. -Une fois connecté, il vous faut regarder l'état du service avec la commande `yunohost service status slapd` et/ou tenter de réinitialiser votre mot de passe avec la commande `yunohost tools adminpw`. - -Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en root, vous allez devoir opérer en mode rescue. - -TODO: à compléter - - - - -## Vous avez accès en SSH mais pas à la Web admin ou inversement - - -#### Vous essayez de vous connecter en SSH avec `root` plutôt qu'avec `admin` - -Par défaut, la connexion en SSH doit s'effectuer avec l'utilisateur `admin`. Il est possible de se connecter à la machine avec l'utilisateur `root` *seulement depuis le réseau local* sur lequel se situe le serveur. - -Lorsque vous exécutez des commandes `yunohost` en tant qu'admin, il faut les précéder de la commande `sudo` (par exemple `sudo yunohost user list`). Vous pouvez également devenir `root` en tapant `sudo su`. - -#### Vous avez été banni temporairement - -Votre serveur YunoHost inclut un mécanisme (fail2ban) qui banni automatiquement les IPs qui échouent plusieurs fois à s'authentifier. Dans certains cas, il peut s'agir d'un programme (par exemple un client Nextcloud) qui est configuré avec un ancien mot de passe ou d'un utilisateur qui utilise la même IP que vous. - -Si vous avez été banni en tentant d'accéder à une page web, seul les pages web sont inaccessibles, vous devriez donc pouvoir accéder au serveur en SSH. De même, si vous avez été banni en SSH vous devriez pouvoir accéder à la webadmin. - -Si vous avez été banni à la fois en SSH et à la webadmin, vous pouvez essayer d'accéder à votre serveur avec une autre IP, par exemple en utilisant la 4G d'un smartphone ou en utilisant Tor Browser. - -Voir aussi: [débannir une IP sur Fail2ban](/fail2ban) - -NB: le bannissement dure en général 10 à 12 minutes. Le bannissement n'est actif qu'en IPv4. - - -#### Le serveur web nginx est cassé - -Peut-être que le serveur web nginx est en panne. Vous pouvez vérifier cela [en ssh](/ssh) avec `yunohost service status ssh`. Si il est en panne, vérifiez que la configuration ne comporte pas d'erreur avec `nginx -t`. Si la configuration est cassé, ceci est peut-être du à une l'installation ou désinstallation d'une application de mauvaise qualité... Si vous êtes perdu, [demandez de l'aide](/help). - -Il se peut également que le serveur web (nginx) ou le serveur ssh aient été tué suite à un manque d'espace disque ou de RAM / swap. -- Tentez de relancer le service avec `systemctl restart nginx`. -- Vous pouvez contrôler l'espace disque utilisé avec `df -h`. Si une de vos partition est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place. Il est possible d'installer l'utilitaire `ncdu` avec `apt install ncdu` puis de faire `ncdu /` pour analyser la taille des dossiers de toute l'arborescence. -- Vous pouvez contrôler l'utilisation de la RAM / swap avec `free -h`. En fonction des résultats, il peut être nécessaire d'optimiser votre serveur pour qu'il utilise moins de ram (suppression d'app lourdes et inutiles, ...), d'ajouter de la RAM ou d'ajouter un fichier de swap. - -#### Votre serveur est accessible en IPv6 mais pas en IPv4 ou inversement - -Vous pouvez le vérifier en tentant de faire des ping sur votre serveur en IPv4 et en IPv6. - -Dans un tel cas, il est possible que vous arriviez à accéder à votre web admin en IPv6 mais pas en SSH potentiellement en IPv4 par défaut... - -Dans ce cas il faut résoudre votre problème de connectivité. - -Dans certains cas une mise à jour de votre box a activé l'IPv6, entraînant des problèmes de configuration au niveau de votre nom de domaine. - -## Votre VPN a expiré ou ne se monte plus - -Si vous utilisez un VPN a IP fixe, peut être que celui-ci est arrivé à expiration ou que l'infrastructure de votre fournisseur est en difficulté. - -Dans ce cas, vous pouvez peut être accéder à votre serveur avec son IP locale s'agissant probablement d'un serveur auto-hébergé chez-vous. - -Pour connaître votre ip locale, certaines BOX propose une cartographie du réseau en cours avec les équipements connectés. Sinon, en ligne de commande avec linux: -```bash -sudo arp-scan --local -``` - -Vous pouvez aussi essayer avec le domaine `yunohost.local` si il n'y a qu'un seul YunoHost sur votre réseau. - -Il faut voir avec votre fournisseur de VPN pour renouveler le VPN et mettre à jour les paramètre de l'app VPN Client. - -TODO - - - -## Votre serveur est coincé au démarrage - -Dans certains cas, votre serveur peut rester coincer au démarrage. Il peut s'agir d'un problème suite à l'installation d'un nouveau kernel. Essayez de choisir un autre kernel avec VNC ou avec l'écran lors du boot. - -Si vous êtes en grub rescue, dans ce cas il peut s'agir d'un problème de configuration de grub ou d'un disque corrompu. - -Dans ce cas il faut accéder au disque avec un autre système (mode rescue du fournisseur, live usb, lire la carte SD ou le disque dur avec un autre ordinateur) et essayer de vérifier l'intégrité des partitions avec smartctl, fsck et mount. - -Si les disques sont corrompus et difficile à monter, il faut sauvegarder les données et potentiellement refaire un formatage/réinstaller et/ou changer le disque. Si on arrive à monter le disque, il est possible d'utiliser systemd-nspawn pour entrer dans la base de donnée. - -Sinon, relancer grub-update et grub-install en chroot ou avec systemd-nspawn. - - - - - -## L'accès en VNC ou via écran ne fonctionne pas - -Dans ce cas il peut s'agir d'un problème matériel sur votre serveur physique ou d'un problème d'hyperviseur si c'est un VPS. - -Si c'est une machine loué contacter le support de votre fournisseur. Sinon essayez de dépanner votre machine en retirant les composants qui peuvent être en panne. +Unfortunately, this page only exists [in french here](noaccess_fr) for now. diff --git a/noaccess_fr.md b/noaccess_fr.md index 94d19af8..88d70eca 100644 --- a/noaccess_fr.md +++ b/noaccess_fr.md @@ -1,73 +1,116 @@ # Récupérer l'accès à son YunoHost Si vous avez perdu l'accès à votre YunoHost qui était auparavant fonctionnel, cette page est faite pour vous. -Il existe de nombreuses causes pouvant empécher totalement ou partiellement d'accéder en administrateur à un serveur YunoHost. Dans de nombreux cas, un des moyens d'accès est inaccessible, mais les autres sont fonctionnels. +Il existe de nombreuses causes pouvant empêcher totalement ou partiellement d'accéder en administrateur à un serveur YunoHost. Dans de nombreux cas, un des moyens d'accès est inaccessible, mais les autres sont fonctionnels. Cette page va vous aider à diagnostiquer, obtenir un accès et si besoin réparer votre système. Les pannes les plus courantes sont priorisées de haut en bas. Il vous suffit de tester chaque hypothèse. -## Vous avez perdu votre mot de passe administrateur + + + +## Vous avez accès au serveur via l'adresse IP, mais pas avec le nom de domaine ? + +#### Si vous êtes auto-hébergé à la maison : il faut configurer les redirection de ports + +Vérifier que vous arrivez à accéder au serveur en utilisant son IP globale (que vous pouvez trouver sur https://ip.yunohost.org). Si cela ne fonctionne pas: + - Assurez-vous d'avoir [configuré les redirections de ports](/isp_box_config) + - Certaines box de FAI ne supportent pas le hairpinning et vous ne pouvez pas accéder à votre serveur depuis l'intérieur du réseau local (sauf à passer par l'IP locale). Pour contourner le problème, vous pouvez tester d'accéder à votre serveur en passant par un proxy comme proxfree.com + +#### Il faut configurer vos enregistrement DNS + +(N.B.: ce n'est pas nécessaire si vous utilisez un domaine de type nohost.me, noho.st ou ynh.fr) + +Il vous faut configurer vos enregistrement DNS comme expliqué sur [cette page](/dns_config) (à minima l'enregistrement A, et AAAA si vous avez de l'IPv6). + +Vous pouvez valider que les enregistrements DNS sont corrects en comparant le résultat de https://www.whatsmydns.net/ avec l'IP globale de votre serveur (si vous êtes hébergé à la maison, vous pouvez obtenir cette IP sur https://ip.yunohost.org) + + + + + +#### Autres causes possibles + +- Votre nom de domaine noho.st, nohost.me ou ynh.fr est inaccessible suite à une panne de l'infra YunoHost. Vérifiez sur le forum si d'autre personnes signalent le même problème. +- Votre nom de domaine est peut-être expiré. Vous pouvez vérifier que votre nom de domaine a expiré en vous connectant sur l'interface de votre registrar ou en utilisant le whois par exemple via la commande `whois NOM_DE_DOMAINE`. +- Vous avez une IP dynamique. Dans ce cas, il faut mettre en place un script qui se charge de mettre à jour régulièrement votre IP (ou d'utiliser un nom de domaine en nohost.me, noho.st ou ynh.fr qui inclue un tel mécanisme) + + +## Vous êtes face à une erreur de certificat qui vous empêche d'accéder à la webadmin + +Si vous venez d'installer votre serveur ou d'ajouter un nouveau domaine, il utilise pour le moment un certificat auto-signé. Dans ce cas, il devrait être possible et légitime d'ajouter *exceptionnellement* une exception de sécurité le temps d'[installer un certificat Let's Encrypt](/certificate) à condition d'être sur une connexion internet sûre (pas avec Tor Browser par exemple). + +Une erreur de certificat peut également être affichée dans certain cas où vous avez fait une faute de frappe dans la barre d'adresse de votre navigateur. + + + + +## La webadmin fonctionne, mais certaines applications web me renvoie une erreur 502. + +Il est fort probablement que le service correspondant à ces applications soit en panne (Typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help). + + + + + +## Vous avez perdu votre mot de passe administrateur ? (ou bien le mot de passe est refusé) + Si vous arrivez à afficher la page web d'administration (forcer le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez. Vous avez probablement un mot de passe erroné. -Dans ce cas, à moins d'avoir un accès root actif (en SSH par exemple) auquel cas vous pouvez changer le mot de passe de l'utilisateur admin, vous allez devoir opérer en mode rescue. +Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en root. +- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur root. +- Si vous êtes sur un VPS, votre hébergeur vous fourni peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web. +Une fois connecté, il vous faut regarder l'état du service avec la commande `yunohost service status slapd` et/ou tenter de réinitialiser votre mot de passe avec la commande `yunohost tools adminpw`. -TODO +Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en root, vous allez devoir opérer en mode rescue. + +TODO: à compléter -## Vous avez une erreur de certificat qui vous empêche d'accéder à la webadmin -Si vous n'avez jamais activé Let's Encrypt ou que vous accéder à la web admin via une IP ou un domaine locale, vous pouvez accepter le certificat invalide exceptionnellement à condition d'être sur une connexion internet sûre (pas avec Tor Browser par exemple). -Pour y parvenir, il faut aller sur la page d'administration web en utilisant la navigation privée, votre navigateur devrait vous autoriser d'ajouter une exception temporaire pour accéder à la page. ## Vous avez accès en SSH mais pas à la Web admin ou inversement -### Vous avez été banni temporairement -Votre serveur YunoHost inclut un pare-feu qui banni les IP qui échouent plusieurs fois à se connecter. Dans certains cas, il peut s'agir d'un programme (nextcloud-client) qui est configuré avec un ancien mot de passe ou d'un utilisateur qui utilise la même IP que vous. + +#### Vous essayez de vous connecter en SSH avec `root` plutôt qu'avec `admin` + +Par défaut, la connexion en SSH doit s'effectuer avec l'utilisateur `admin`. Il est possible de se connecter à la machine avec l'utilisateur `root` *seulement depuis le réseau local* sur lequel se situe le serveur. + +Lorsque vous exécutez des commandes `yunohost` en tant qu'admin, il faut les précéder de la commande `sudo` (par exemple `sudo yunohost user list`). Vous pouvez également devenir `root` en tapant `sudo su`. + +#### Vous avez été banni temporairement + +Votre serveur YunoHost inclut un mécanisme (fail2ban) qui banni automatiquement les IPs qui échouent plusieurs fois à s'authentifier. Dans certains cas, il peut s'agir d'un programme (par exemple un client Nextcloud) qui est configuré avec un ancien mot de passe ou d'un utilisateur qui utilise la même IP que vous. Si vous avez été banni en tentant d'accéder à une page web, seul les pages web sont inaccessibles, vous devriez donc pouvoir accéder au serveur en SSH. De même, si vous avez été banni en SSH vous devriez pouvoir accéder à la webadmin. Si vous avez été banni à la fois en SSH et à la webadmin, vous pouvez essayer d'accéder à votre serveur avec une autre IP, par exemple en utilisant la 4G d'un smartphone ou en utilisant Tor Browser. -NB: le bannissement dure en général quelques minutes. Le bannissement n'est actif qu'en IPv4. +Voir aussi: [débannir une IP sur Fail2ban](/fail2ban) -### Vous n'avez plus d'espace disque... -... et votre serveur web nginx qui distribue les pages de la web admin ou votre serveur SSH ne fonctionne plus. +NB: le bannissement dure en général 10 à 12 minutes. Le bannissement n'est actif qu'en IPv4. -Pour vérifier si vous avez de l'espace disque, vous pouvez le faire de puis la web admin TODO ou avec la commande `df -h`. -Si une de vos partition est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place. +#### Le serveur web nginx est cassé -Attention, dans certains cas il peut s'agir d'erreur qui arrive tellement souvent qu'elles remplissent les fichiers de logs et votre système avec. +Peut-être que le serveur web nginx est en panne. Vous pouvez vérifier cela [en ssh](/ssh) avec `yunohost service status ssh`. Si il est en panne, vérifiez que la configuration ne comporte pas d'erreur avec `nginx -t`. Si la configuration est cassé, ceci est peut-être du à une l'installation ou désinstallation d'une application de mauvaise qualité... Si vous êtes perdu, [demandez de l'aide](/help). -A partir de la web admin vous pouvez relancer le service SSH. De même en SSH, vous pouvez redémarrer le serveur web nginx avec la commande `yunohost service start nginx` +Il se peut également que le serveur web (nginx) ou le serveur ssh aient été tué suite à un manque d'espace disque ou de RAM / swap. +- Tentez de relancer le service avec `systemctl restart nginx`. +- Vous pouvez contrôler l'espace disque utilisé avec `df -h`. Si une de vos partition est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place. Il est possible d'installer l'utilitaire `ncdu` avec `apt install ncdu` puis de faire `ncdu /` pour analyser la taille des dossiers de toute l'arborescence. +- Vous pouvez contrôler l'utilisation de la RAM / swap avec `free -h`. En fonction des résultats, il peut être nécessaire d'optimiser votre serveur pour qu'il utilise moins de ram (suppression d'app lourdes et inutiles, ...), d'ajouter de la RAM ou d'ajouter un fichier de swap. -### Vous manquez de RAM et n'avez pas de swap -... et votre serveur web nginx qui distribue les pages de la web admin ou votre serveur SSH a été tués aléatoirement. +#### Votre serveur est accessible en IPv6 mais pas en IPv4 ou inversement -Quand votre serveur n'a plus de ram, il est obligé d'écrire sur le disque dans la swap, si il n'y en a pas, dans ce cas il doit tuer un des processus pour faire de l'espace. +Vous pouvez le vérifier en tentant de faire des ping sur votre serveur en IPv4 et en IPv6. -Vous pouvez vérifier que vous n'avez plus beaucoup de ram via la web admin ou en SSH via la commande `free -m`. - -Pour régler cette situation, vous pouvez soit: - -* optimiser votre serveur pour qu'il utilise moins de ram (suppression arrêt de services inutiles) -* ajouter de la ram -* ajouter un fichier de swap - -A partir de la web admin vous pouvez relancer le service SSH. De même en SSH, vous pouvez redémarrer le serveur web nginx avec la commande `yunohost service start nginx` - -### Vous avez installé une app qui a cassé votre configuration web -Si vous avez installé une app de mauvaise qualité, celle-ci peut échouer à l'installation et laisser des bouts de configuration qui vont empécher le redémarrage de votre serveur web nginx qui vous permet d'accéder à la web admin. - -Dans ce cas, il faut accéder en SSH et essayer de terminer la suppression de l'app. Si elle est déjà supprimée, il faut enlever manuellement les résidus de configuration. - -### Votre serveur est accessible en IPv6 mais pas en IPv4 ou inversement Dans un tel cas, il est possible que vous arriviez à accéder à votre web admin en IPv6 mais pas en SSH potentiellement en IPv4 par défaut... Dans ce cas il faut résoudre votre problème de connectivité. -Dans certains cas une mise à jour de votre box a activé l'ipv6, entraînant des problèmes de configuration au niveau de votre nom de domaine. +Dans certains cas une mise à jour de votre box a activé l'IPv6, entraînant des problèmes de configuration au niveau de votre nom de domaine. ## Votre VPN a expiré ou ne se monte plus + Si vous utilisez un VPN a IP fixe, peut être que celui-ci est arrivé à expiration ou que l'infrastructure de votre fournisseur est en difficulté. Dans ce cas, vous pouvez peut être accéder à votre serveur avec son IP locale s'agissant probablement d'un serveur auto-hébergé chez-vous. @@ -83,51 +126,10 @@ Il faut voir avec votre fournisseur de VPN pour renouveler le VPN et mettre à j TODO -## Votre routeur ne redirige plus vers votre serveur -Si votre routeur a été remis à zéro ou mis à jour, votre configuration de redirection de port pourrait avoir disparu. De même, l'ipv6 ou le hairpining pourrait avoir été activé. -Typiquement si en tapant votre IP publique vous tombez sur votre box, c'est soit le hairpinning soit la redirection de port qui est manquante. -## Votre serveur ping avec son IP, mais pas avec le nom de domaine -### Votre nom de domaine a expiré -Si votre nom de domaine expire il ne redirigera plus vers votre serveur. +## Votre serveur est coincé au démarrage -Vous pouvez vérifier que votre nom de domaine a expiré en vous connectant sur l'interface de votre registrar ou en utilisant le whois par exemple via la commande `whois NOM_DE_DOMAINE`. - -Dans ce cas il faut renouveler le nom de domaine (si ile st encore temps. - -### Votre nom de domaine est mal configuré -Si votre serveur ping avec son ip mais ne ping pas avec le nom de domaine alors il y a un problème de configuration au niveau du champs A. - -Si c'est un nom de domaine fournit par YunoHost, lancez -```bash -yunohost dyndns update -``` - -Si c'est un autre nom de domaine, il faut mettre à jour votre ipv4 et votre ipv6 dans l'interface de votre registrar. - -Attention, si votre IP change régulièrement il faut mettre en place un script qui se lance régulièrement pour mettre à jour votre IP. - -### Votre nom de domaine noho.st, nohost.me, ynh.fr est inaccessible suite à une panne de l'infra YunoHost -Il arrive environ trois fois par an que l'infra de YunoHost soit en panne suite à une coupure de courant ou à un problème d'administration système. - -Vérifiez sur le forum si d'autre sont signalez le même problème. - -## Vous avez perdu l'accès en IPv4 mais vous avez accès en IPv6 ou inversement - -Dans ce cas, il faut tenter d'accéder en SSH avec l'autre IP et essayer de comprendre pourquoi le réseau en IPv4 ou en IPv6 a disparu. - -Si ce n'est pas lié à une erreur de configuration réseau sur votre système, il peut être nécessaire d’appeler votre fournisseur de serveur ou d'accès à internet pour vérifier que le problème n'est pas chez eux. - -## Vous avez perdu l'accès en IPv4 (ET en IPv6 le cas échéant) -Vous pouvez le vérifier en tentant de faire des ping sur votre serveur en IPv4 et en IPv6. - -Dans ce cas, vous devriez essayer de brancher un clavier/écran sur votre serveur ou d'y accéder par VNC si c'est un serveur distant. - -### Vous pouvez vous connecter avec l'utilisateur admin et le mot de passe -A partir de là vous devriez diagnostiquer votre problème réseau le réparer ou si ce n'est pas lié au système contacter le support de votre fournisseur de serveur ou de connexion Internet. - -### Votre serveur est coincé au démarrage Dans certains cas, votre serveur peut rester coincer au démarrage. Il peut s'agir d'un problème suite à l'installation d'un nouveau kernel. Essayez de choisir un autre kernel avec VNC ou avec l'écran lors du boot. Si vous êtes en grub rescue, dans ce cas il peut s'agir d'un problème de configuration de grub ou d'un disque corrompu. @@ -138,7 +140,12 @@ Si les disques sont corrompus et difficile à monter, il faut sauvegarder les do Sinon, relancer grub-update et grub-install en chroot ou avec systemd-nspawn. -### L'accès en VNC ou via écran ne fonctionne pas + + + + +## L'accès en VNC ou via écran ne fonctionne pas + Dans ce cas il peut s'agir d'un problème matériel sur votre serveur physique ou d'un problème d'hyperviseur si c'est un VPS. Si c'est une machine loué contacter le support de votre fournisseur. Sinon essayez de dépanner votre machine en retirant les composants qui peuvent être en panne. From e58c903846dde79170fed300585ba15b276dee7b Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Tue, 7 Apr 2020 19:16:10 +0200 Subject: [PATCH 085/135] Reorder a few things --- noaccess_fr.md | 62 +++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/noaccess_fr.md b/noaccess_fr.md index 88d70eca..20de8ea3 100644 --- a/noaccess_fr.md +++ b/noaccess_fr.md @@ -1,5 +1,5 @@ # Récupérer l'accès à son YunoHost -Si vous avez perdu l'accès à votre YunoHost qui était auparavant fonctionnel, cette page est faite pour vous. + Il existe de nombreuses causes pouvant empêcher totalement ou partiellement d'accéder en administrateur à un serveur YunoHost. Dans de nombreux cas, un des moyens d'accès est inaccessible, mais les autres sont fonctionnels. @@ -25,9 +25,6 @@ Il vous faut configurer vos enregistrement DNS comme expliqué sur [cette page]( Vous pouvez valider que les enregistrements DNS sont corrects en comparant le résultat de https://www.whatsmydns.net/ avec l'IP globale de votre serveur (si vous êtes hébergé à la maison, vous pouvez obtenir cette IP sur https://ip.yunohost.org) - - - #### Autres causes possibles - Votre nom de domaine noho.st, nohost.me ou ynh.fr est inaccessible suite à une panne de l'infra YunoHost. Vérifiez sur le forum si d'autre personnes signalent le même problème. @@ -35,6 +32,8 @@ Vous pouvez valider que les enregistrements DNS sont corrects en comparant le r - Vous avez une IP dynamique. Dans ce cas, il faut mettre en place un script qui se charge de mettre à jour régulièrement votre IP (ou d'utiliser un nom de domaine en nohost.me, noho.st ou ynh.fr qui inclue un tel mécanisme) + + ## Vous êtes face à une erreur de certificat qui vous empêche d'accéder à la webadmin Si vous venez d'installer votre serveur ou d'ajouter un nouveau domaine, il utilise pour le moment un certificat auto-signé. Dans ce cas, il devrait être possible et légitime d'ajouter *exceptionnellement* une exception de sécurité le temps d'[installer un certificat Let's Encrypt](/certificate) à condition d'être sur une connexion internet sûre (pas avec Tor Browser par exemple). @@ -44,36 +43,12 @@ Une erreur de certificat peut également être affichée dans certain cas où vo -## La webadmin fonctionne, mais certaines applications web me renvoie une erreur 502. - -Il est fort probablement que le service correspondant à ces applications soit en panne (Typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help). - - - - - -## Vous avez perdu votre mot de passe administrateur ? (ou bien le mot de passe est refusé) - -Si vous arrivez à afficher la page web d'administration (forcer le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez. Vous avez probablement un mot de passe erroné. - -Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en root. -- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur root. -- Si vous êtes sur un VPS, votre hébergeur vous fourni peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web. -Une fois connecté, il vous faut regarder l'état du service avec la commande `yunohost service status slapd` et/ou tenter de réinitialiser votre mot de passe avec la commande `yunohost tools adminpw`. - -Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en root, vous allez devoir opérer en mode rescue. - -TODO: à compléter - - - - ## Vous avez accès en SSH mais pas à la Web admin ou inversement #### Vous essayez de vous connecter en SSH avec `root` plutôt qu'avec `admin` -Par défaut, la connexion en SSH doit s'effectuer avec l'utilisateur `admin`. Il est possible de se connecter à la machine avec l'utilisateur `root` *seulement depuis le réseau local* sur lequel se situe le serveur. +Par défaut, la connexion en SSH doit s'effectuer avec l'utilisateur `admin`. Il est possible de se connecter à la machine avec l'utilisateur `root` *seulement depuis le réseau local* sur lequel se situe le serveur (ou bien via la console web / VNC pour des VPS). Lorsque vous exécutez des commandes `yunohost` en tant qu'admin, il faut les précéder de la commande `sudo` (par exemple `sudo yunohost user list`). Vous pouvez également devenir `root` en tapant `sudo su`. @@ -109,6 +84,35 @@ Dans ce cas il faut résoudre votre problème de connectivité. Dans certains cas une mise à jour de votre box a activé l'IPv6, entraînant des problèmes de configuration au niveau de votre nom de domaine. + + + + + + +## La webadmin fonctionne, mais certaines applications web me renvoie une erreur 502. + +Il est fort probablement que le service correspondant à ces applications soit en panne (Typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help). + + + + +## Vous avez perdu votre mot de passe administrateur ? (ou bien le mot de passe est refusé) + +Si vous arrivez à afficher la page web d'administration (forcer le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez. Vous avez probablement un mot de passe erroné. + +Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en root. +- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur root. +- Si vous êtes sur un VPS, votre hébergeur vous fourni peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web. +Une fois connecté, il vous faut regarder l'état du service avec la commande `yunohost service status slapd` et/ou tenter de réinitialiser votre mot de passe avec la commande `yunohost tools adminpw`. + +Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en root, vous allez devoir opérer en mode rescue. + +TODO: à compléter + + + + ## Votre VPN a expiré ou ne se monte plus Si vous utilisez un VPN a IP fixe, peut être que celui-ci est arrivé à expiration ou que l'infrastructure de votre fournisseur est en difficulté. From 1dbacb07d9cbd20a45a97681d14ecbf9fbc94957 Mon Sep 17 00:00:00 2001 From: Plumf Date: Wed, 8 Apr 2020 13:03:08 +0200 Subject: [PATCH 086/135] correction --- packaging_apps_git_fr.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packaging_apps_git_fr.md b/packaging_apps_git_fr.md index b8e3ccc9..12d9748a 100644 --- a/packaging_apps_git_fr.md +++ b/packaging_apps_git_fr.md @@ -1,6 +1,6 @@ # Comment utiliser Git pour packager les applications -Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t" ( P *t**n de camion de m*rde), selon Linus. +Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t" (Un stupide putain gros tas de merde), selon Linus. Si vous ne connaissez pas encore Git, soyez sûr que vous serez bientôt d'accord avec cette description. YunoHost et toutes nos applications sont sur la forge Git GitHub. Ce qui veut dire que si vous voulez travailler sur une application, tôt ou tard vous allez devoir faire face à Git. @@ -112,7 +112,8 @@ git clone est généralement le point de départ de tout travail local avec Git. ##### Mon nouveau package, suite -Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package. Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*. +Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package. +Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*. Ne vous embêtez pas avec des README, .gitignore ou licence. Créez simplement le dépôt lui-même. vous pouvez maintenant cloner ce nouveau dépôt avec Git. @@ -193,7 +194,7 @@ git commit -m "My commit name" #### Push vers le dépôt distant Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub. -Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information). +Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information). Ensuite, vous pouvez git push ```bash git push -u origin BRANCH_NAME From d426601e432741f3fc5f7ae00b69770040d12481 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Wed, 8 Apr 2020 13:19:43 +0200 Subject: [PATCH 087/135] Put back spaces at the end of lines --- packaging_apps_git_fr.md | 84 ++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/packaging_apps_git_fr.md b/packaging_apps_git_fr.md index 12d9748a..2cc085ad 100644 --- a/packaging_apps_git_fr.md +++ b/packaging_apps_git_fr.md @@ -1,9 +1,9 @@ # Comment utiliser Git pour packager les applications -Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t" (Un stupide putain gros tas de merde), selon Linus. +Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t" (Un stupide putain gros tas de m\*rde), selon Linus. Si vous ne connaissez pas encore Git, soyez sûr que vous serez bientôt d'accord avec cette description. -YunoHost et toutes nos applications sont sur la forge Git GitHub. Ce qui veut dire que si vous voulez travailler sur une application, tôt ou tard vous allez devoir faire face à Git. +YunoHost et toutes nos applications sont sur la forge Git GitHub. Ce qui veut dire que si vous voulez travailler sur une application, tôt ou tard vous allez devoir faire face à Git. Alors voyons comment travailler avec Git pour pouvoir contribuer dans le contexte de YunoHost. ## Travailler avec GitHub @@ -14,59 +14,59 @@ Commençons par la partie facile, GitHub est livré avec une interface web "faci #### Branches -Ensuite, et c'est probablement l'une des choses les plus importantes, **ne travaillez pas directement sur la branche master**. +Ensuite, et c'est probablement l'une des choses les plus importantes, **ne travaillez pas directement sur la branche master**. Désolé, il fallait que ce soit dit ! Les branches sont, comme l'explique GitHub, "*une version parallèle d'un dépôt. Elle est contenue dans le dépôt, mais n'affecte pas les autres branches. Elle vous permet de travailler librement sans perturber la version "live".*" -La branche master est la branche qui contient la version de l'application que les utilisateurs installeront et utiliseront effectivement. +La branche master est la branche qui contient la version de l'application que les utilisateurs installeront et utiliseront effectivement. La bonne habitude à prendre est de travailler à partir de la branche testing, et lorsque tout est réglé et testé, vous pouvez fusionner la branche testing dans master, afin que les utilisateurs puissent profiter de la nouvelle version de votre package. -Pour voir et modifier la branche actuelle, utilisez ce bouton : +Pour voir et modifier la branche actuelle, utilisez ce bouton : #### Modifier un fichier Maintenant que vous êtes sur la bonne branche, voyons comment éditer un fichier sur GitHub. -Vous pouvez éditer n'importe quel fichier en utilisant l'icône du petit crayon : +Vous pouvez éditer n'importe quel fichier en utilisant l'icône du petit crayon : -Si vous n'avez pas la permission d'écrire sur le dépôt, vous verrez (comme sur l'image) que vous allez créer un fork (nous verrons plus loin ce qu'est un fork). +Si vous n'avez pas la permission d'écrire sur le dépôt, vous verrez (comme sur l'image) que vous allez créer un fork (nous verrons plus loin ce qu'est un fork). Si vous avez la permission d'écrire, vous allez simplement modifier le fichier, sans forker. #### Validez vos modifications -Lorsque vous avez fini de modifier le fichier, vous pouvez faire un commit de vos modifications. -Derrière ce mot, l'idée est assez simple, vous allez juste enregistrer vos modifications... +Lorsque vous avez fini de modifier le fichier, vous pouvez faire un commit de vos modifications. +Derrière ce mot, l'idée est assez simple, vous allez juste enregistrer vos modifications... -Le premier champ est le nom de votre commit, une phrase très courte pour expliquer pourquoi vous avez fait cette modification. +Le premier champ est le nom de votre commit, une phrase très courte pour expliquer pourquoi vous avez fait cette modification. Le deuxième champ est un champ plus grand pour une explication plus complète, si vous en avez besoin. -Enfin, si vous modifiez un dépôt sur lequel vous avez la permission d'écrire, vous pouvez soit faire un commit directement sur la branche en cours, soit créer une nouvelle branche. +Enfin, si vous modifiez un dépôt sur lequel vous avez la permission d'écrire, vous pouvez soit faire un commit directement sur la branche en cours, soit créer une nouvelle branche. Il est généralement préférable de créer une nouvelle branche, de cette façon vous gardez vos modifications sur une version *parallèle* du dépôt. Vos modifications seront discutées dans une pull request (expliquée ci-dessous) puis finalement fusionnées dans la branche d'origine. #### Forker ou ne pas forker -Un fork est une copie d'un dépôt sur votre propre compte. -Nous avons déjà vu que si vous n'avez pas l'autorisation d'écrire dans un dépôt, la modification d'un fichier créera automatiquement un fork. -Comme le fork est sur votre compte, vous avez toujours la permission d'écrire dessus. +Un fork est une copie d'un dépôt sur votre propre compte. +Nous avons déjà vu que si vous n'avez pas l'autorisation d'écrire dans un dépôt, la modification d'un fichier créera automatiquement un fork. +Comme le fork est sur votre compte, vous avez toujours la permission d'écrire dessus. Mais même si un fork n'est pas le véritable dépôt, mais juste une copie, un fork est toujours lié à son parent. Nous verrons plus tard que la création d'un fork est vraiment utile lors de l'ouverture d'une pull request. -Lorsque vous créez un nouveau package, il est courant d'utiliser l'[application exemple](https://github.com/YunoHost/example_ynh) comme base. -Mais, comme vous ne voulez pas garder ce lien vers l'application d'exemple, vous ne devez pas forker l'application d'exemple. Vous la clonerez plutôt. +Lorsque vous créez un nouveau package, il est courant d'utiliser l'[application exemple](https://github.com/YunoHost/example_ynh) comme base. +Mais, comme vous ne voulez pas garder ce lien vers l'application d'exemple, vous ne devez pas forker l'application d'exemple. Vous la clonerez plutôt. Malheureusement, cloner une application est un peu plus compliqué sur GitHub. Nous verrons plus tard comment cloner vers un dépôt local à la place. -Nous avons vu comment éditer un fichier, et comment cela peut forker l'application. -Mais, lorsque vous voulez éditer plusieurs fichiers, l'interface GitHub n'est pas vraiment la meilleure solution. Dans une telle situation, vous préférerez cloner le dépôt et travailler sur un dépôt local. +Nous avons vu comment éditer un fichier, et comment cela peut forker l'application. +Mais, lorsque vous voulez éditer plusieurs fichiers, l'interface GitHub n'est pas vraiment la meilleure solution. Dans une telle situation, vous préférerez cloner le dépôt et travailler sur un dépôt local. Il se peut que vous deviez tout de même forker sur votre propre compte pour pouvoir enregistrer vos modifications si vous n'avez pas les autorisations sur le dépôt distant. #### Pull request -Après avoir effectué vos commits, que ce soit sur une branche ou un fork, vous souhaitez proposer vos modifications pour qu'elles soient intégrées dans le dépôt principal, ou dans la branche d'origine. +Après avoir effectué vos commits, que ce soit sur une branche ou un fork, vous souhaitez proposer vos modifications pour qu'elles soient intégrées dans le dépôt principal, ou dans la branche d'origine. Pour ce faire, vous allez créer une pull request. GitHub vous demande généralement directement si vous souhaitez le faire. -Sinon, vous trouverez le bouton de création d'une pull request juste ici : +Sinon, vous trouverez le bouton de création d'une pull request juste ici : Lors de la création d'une pull request à partir d'un fork, pour faciliter le travail de révision du code, **ne jamais** décocher la case *Allow edits from maintainers*. Cette option permet simplement aux mainteneurs du dépôt d'origine de modifier directement votre travail. @@ -78,24 +78,24 @@ Conformément à la [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packag Tout d'abord, vous devez avoir la permission d'écrire dans l'organisation, pour ce faire, demandez au groupe Apps sur le salon xmpp Apps. Pour transférer votre application sur l'organisation YunoHost-Apps, allez dans votre dépôt et dans l'onglet *Settings*. -En bas de la page, vous trouverez *Transfer ownership*. -Dans le champ *New owner’s GitHub username or organization name*, tapez *YunoHost-Apps*. +En bas de la page, vous trouverez *Transfer ownership*. +Dans le champ *New owner’s GitHub username or organization name*, tapez *YunoHost-Apps*. Votre dépôt sera déplacé dans l'organisation, vous n'avez pas besoin de supprimer le dépôt d'origine. ## Travailler avec Git en local -Comme nous l'avons vu, vous pouvez faire beaucoup de choses directement sur GitHub. +Comme nous l'avons vu, vous pouvez faire beaucoup de choses directement sur GitHub. Mais lorsque vous devez modifier plusieurs fichiers, ou lorsque vous devez travailler sur votre code de votre côté, il est préférable de travailler directement sur votre ordinateur. Avant d'aller dans la partie infernale de Git, voyons 2 façons différentes de commencer à travailler avec Git. #### Premier cas : Créer un nouveau package -Vous avez découvert, choqué, que la merveilleuse application que vous aimez utiliser tous les jours n'a pas encore son package YunoHost. Et parce que vous êtes sympa, vous avez décidé de créer vous-même le package, pour que tout le monde puisse apprécier cette application. +Vous avez découvert, choqué, que la merveilleuse application que vous aimez utiliser tous les jours n'a pas encore son package YunoHost. Et parce que vous êtes sympa, vous avez décidé de créer vous-même le package, pour que tout le monde puisse apprécier cette application. Quelle bonne idée ! -Le mieux est de commencer par l'[application d'exemple](https://github.com/YunoHost/example_ynh). Mais comme nous l'avons déjà expliqué, vous ne voulez pas forker, parce que si vous le faites, vous allez garder ce lien vers l'application d'exemple et c'est vraiment ennuyeux. +Le mieux est de commencer par l'[application d'exemple](https://github.com/YunoHost/example_ynh). Mais comme nous l'avons déjà expliqué, vous ne voulez pas forker, parce que si vous le faites, vous allez garder ce lien vers l'application d'exemple et c'est vraiment ennuyeux. Donc, vous allez le faire différemment. Vous allez cloner ! ##### git clone @@ -112,13 +112,13 @@ git clone est généralement le point de départ de tout travail local avec Git. ##### Mon nouveau package, suite -Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package. -Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*. -Ne vous embêtez pas avec des README, .gitignore ou licence. Créez simplement le dépôt lui-même. -vous pouvez maintenant cloner ce nouveau dépôt avec Git. +Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package. +Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*. +Ne vous embêtez pas avec des README, .gitignore ou licence. Créez simplement le dépôt lui-même. +vous pouvez maintenant cloner ce nouveau dépôt avec Git. -Vous disposez maintenant de 2 dépôts clonés sur votre ordinateur. +Vous disposez maintenant de 2 dépôts clonés sur votre ordinateur. Copiez tous les fichiers de l'application example_ynh, **excepté le répertoire .git** (vous voulez juste les fichiers eux-mêmes) dans votre nouveau package. *Si vous le souhaitez, vous pouvez supprimer l'application example_ynh. Nous n'en avons plus besoin.* @@ -127,14 +127,14 @@ Vous êtes prêt à travailler sur votre nouveau package ! #### Deuxième cas : Travailler localement sur un dépôt -Vous disposez déjà d'un dépôt, mais ce que vous voulez, c'est travailler localement, de sorte que vous puissiez modifier plusieurs fichiers. +Vous disposez déjà d'un dépôt, mais ce que vous voulez, c'est travailler localement, de sorte que vous puissiez modifier plusieurs fichiers. Il vous suffit de cloner le dépôt, le répertoire .git est le lien vers le dépôt distant. Rien d'autre à faire qu'un `git clone`. #### Branches Vous avez bien votre copie local du dépôt, mais comme vous avez lu attentivement cette documentation jusque-là, vous savez que vous devez vous assurer d'être sur la branche testing avant de commencer à travailler. -Pour voir les branches, et savoir sur quelle branche vous êtes réellement, alors que vous êtes dans le répertoire de votre dépôt, tapez `git branch`. +Pour voir les branches, et savoir sur quelle branche vous êtes réellement, alors que vous êtes dans le répertoire de votre dépôt, tapez `git branch`. La branche courante est mise en évidence et précédée d'un "*". #### git checkout @@ -147,16 +147,16 @@ git checkout testing #### git pull avant tout -Vous êtes enfin dans la bonne branche, et prêt à travailler. -**Attendez ! Un vilain piège vous attend...** +Vous êtes enfin dans la bonne branche, et prêt à travailler. +**Attendez ! Un vilain piège vous attend...** Avant de vous retrouver dans une situation inextricable. Commencez par un `git pull` pour mettre à jour votre branche avec les derniers changements du dépôt distant. -*Parfois, vous rencontrerez une situation impossible où Git vous dira que vous ne pouvez pas pull parce que vous avez des changements locaux. Mais vous ne vous souciez pas de ces modifications locales, vous voulez juste obtenir la dernière version de la branche distante. Mais Git ne se soucie pas de ce que VOUS voulez...* +*Parfois, vous rencontrerez une situation impossible où Git vous dira que vous ne pouvez pas pull parce que vous avez des changements locaux. Mais vous ne vous souciez pas de ces modifications locales, vous voulez juste obtenir la dernière version de la branche distante. Mais Git ne se soucie pas de ce que VOUS voulez...* *Je dois admettre que ma seule solution est aussi efficace que sale... Un bon vieux `rm -r` du dépôt et un `git clone`* #### Il est temps de travailler -Vous pouvez finalement travailler sur votre code. +Vous pouvez finalement travailler sur votre code. Lorsque vous êtes enfin d'accord avec ce que vous avez fait, il est temps de valider votre travail. La première étape consiste à informer Git sur le(s) fichier(s) à valider. Pour ce faire, nous utiliserons `git add`. @@ -169,21 +169,21 @@ Si vous souhaitez valider l'ensemble de votre travail, vous pouvez aussi simplem git add --all ``` -Pour vérifier l'état actuel de votre validation, vous pouvez utiliser `git status`. Il vous montrera quels fichiers seront inclus dans votre commit, et quels fichiers sont modifiés, mais pas encore inclus. +Pour vérifier l'état actuel de votre validation, vous pouvez utiliser `git status`. Il vous montrera quels fichiers seront inclus dans votre commit, et quels fichiers sont modifiés, mais pas encore inclus. `git status -v` vous indiquera également quelle partie des fichiers est modifiée. Une bonne façon de s'assurer que vous n'avez pas fait d'erreur avant de faire un commit. #### git checkout -b -Avant de faire un commit, ou après, ou avant de commencer à travailler. Quand vous en avez envie ! +Avant de faire un commit, ou après, ou avant de commencer à travailler. Quand vous en avez envie ! Vous devriez envisager d'ajouter votre travail à une branche séparée, de cette façon, il sera facile de créer une pull request dans la branche testing et de discuter avec les autres packagers de ce que vous suggérez de changer. Pour créer une nouvelle branche et passer à cette branche, vous pouvez utiliser `git checkout -b my_new_branch`. #### Commit -Faire un commit, c'est simplement valider son travail dans Git. Comme vous pouvez le faire dans GitHub. -Pour avoir les mêmes champs que vous aviez sur GitHub, avec le nom du commit, et une explication plus longue. Vous pouvez simplement utiliser `git commit`. -La première ligne, avant les commentaires, est pour le nom du commit. +Faire un commit, c'est simplement valider son travail dans Git. Comme vous pouvez le faire dans GitHub. +Pour avoir les mêmes champs que vous aviez sur GitHub, avec le nom du commit, et une explication plus longue. Vous pouvez simplement utiliser `git commit`. +La première ligne, avant les commentaires, est pour le nom du commit. Après tous les commentaires, vous pouvez ajouter une explication si vous le souhaitez. Si vous voulez faire un commit avec seulement un nom pour votre commit, vous pouvez utiliser une simple commande : @@ -193,7 +193,7 @@ git commit -m "My commit name" #### Push vers le dépôt distant -Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub. +Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub. Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information). Ensuite, vous pouvez git push ```bash From ff4901d6022a638273f3bab2a9787e3d35621805 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Wed, 8 Apr 2020 13:21:12 +0200 Subject: [PATCH 088/135] Update packaging_apps_git_fr.md --- packaging_apps_git_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging_apps_git_fr.md b/packaging_apps_git_fr.md index 2cc085ad..95172258 100644 --- a/packaging_apps_git_fr.md +++ b/packaging_apps_git_fr.md @@ -77,7 +77,7 @@ Conformément à la [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packag Tout d'abord, vous devez avoir la permission d'écrire dans l'organisation, pour ce faire, demandez au groupe Apps sur le salon xmpp Apps. -Pour transférer votre application sur l'organisation YunoHost-Apps, allez dans votre dépôt et dans l'onglet *Settings*. +Pour transférer votre application sur l'organisation YunoHost-Apps, allez dans votre dépôt et dans l'onglet *Settings*. En bas de la page, vous trouverez *Transfer ownership*. Dans le champ *New owner’s GitHub username or organization name*, tapez *YunoHost-Apps*. Votre dépôt sera déplacé dans l'organisation, vous n'avez pas besoin de supprimer le dépôt d'origine. From 365b087711b8e9ecc2be9b099ba7edda2a9d44ca Mon Sep 17 00:00:00 2001 From: Yunobot Date: Wed, 8 Apr 2020 11:55:38 +0000 Subject: [PATCH 089/135] conjugaison --- whatsyunohost.md | 66 ++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/whatsyunohost.md b/whatsyunohost.md index 6ed0efd3..320aba9c 100644 --- a/whatsyunohost.md +++ b/whatsyunohost.md @@ -1,58 +1,58 @@ -What is YunoHost? -================= +Qu'est-ce que YunoHost ? +======================== -YunoHost is an **operating system** aiming for the simplest administration of a **server**, and therefore democratize [self-hosting](selfhosting), while making sure it stays reliable, secure, ethical and lightweight. It is a copylefted libre software project maintained exclusively by volunteers. Technically, it can be seen as a distribution based on [Debian GNU/Linux](https://debian.org) and can be installed on [many kinds of hardware](install). +YunoHost est un **système d’exploitation** qui vise à simplifier autant que possible l'administration d'un **serveur** pour ainsi démocratiser [l’auto-hébergement](/selfhosting) tout en restant fiable, sécurisé, éthique et léger. C'est un projet de logiciel libre maintenu exclusivement par des bénévoles. Techniquement, il peut être vu comme une distribution basée sur [Debian GNU/Linux](https://debian.org) et peut s'installer sur [de nombreux types de matériel](/install). -Features --------- +Fonctionnalités +--------------- -- Based on Debian ; -- Administrate your server through a **friendly web interface** ; -- Deploy **apps in just a few clicks** ; -- Manage **users** (based on LDAP); -- Manage **domain names** ; -- Create and restore **backups** ; -- Connect to all apps simultaneously through the **user portal** (NGINX, SSOwat) ; -- Includes a **full e-mail stack** (Postfix, Dovecot, Rspamd, DKIM) ; -- … as well as **an instant messaging server** (XMPP) ; -- Manages **SSL certificates** (based on Let's Encrypt) ; -- … and **security systems** (fail2ban, yunohost-firewall) ; +- basé sur Debian ; +- administration via une **interface web simple et claire** ; +- déployez des **applications en quelques clics** ; +- ajoutez des **utilisateurs** (gérés via un annuaire LDAP) ; +- gérez des **noms de domaine** ; +- créez et restaurez des **sauvegardes** ; +- connexion simultanée à toutes les apps via un **portail utilisateur** (nginx, SSOwat) ; +- fourni avec un **serveur mail complet** (Postfix, Dovecot, Rspamd, DKIM) ; +- ... ainsi qu'un **serveur de messagerie instantanée** (XMPP) ; +- gères les **certificats SSL** (basé sur Let's Encrypt) ; +- ... et des **systèmes de sécurité** (fail2ban, yunohost-firewall) ; -Origin ------- +Origine +------- -YunoHost was created in February 2012 after something like this: +YunoHost est un projet né en février 2012 à la suite d’à peu près ça : -