From 9c4a7026b89f4a4a78b806c8f8fa0c272d412662 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Tue, 17 Mar 2020 12:49:54 +0000 Subject: [PATCH 01/83] 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 02/83] 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 dcdf9522e64f93e5f312bea187e530d7beb1971f Mon Sep 17 00:00:00 2001 From: Kayou Date: Mon, 23 Mar 2020 00:53:37 +0100 Subject: [PATCH 03/83] https://github.com/YunoHost/yunohost/pull/894 --- groups_and_permissions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/groups_and_permissions.md b/groups_and_permissions.md index 4b28d3ee..7d8070b0 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -134,7 +134,7 @@ 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 groups `visitors`: ```bash -ynh_permission_update --permission "main" --add "visitors" +ynh_permission_update --permission "main" --add "all_users" "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: @@ -181,7 +181,7 @@ But you can create a fake permission and use hooks to handle if there is a chang In the install script, create the fake permission (with no url): -`ynh_permission_create --permission="create poll" --allowed="visitors"` +`ynh_permission_create --permission="create poll" --allowed "visitors" "all_users"` Then use the legacy protection: @@ -278,4 +278,4 @@ 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) -If you have any questions, please contact someone from the apps-group. \ No newline at end of file +If you have any questions, please contact someone from the apps-group. From ffd82d1c8f91109f64141978b21f4ff6c442eda8 Mon Sep 17 00:00:00 2001 From: Kayou Date: Thu, 26 Mar 2020 21:32:50 +0100 Subject: [PATCH 04/83] Update groups_and_permissions.md --- groups_and_permissions.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/groups_and_permissions.md b/groups_and_permissions.md index 4b28d3ee..d08c3231 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -159,6 +159,7 @@ When migrating away from the legacy permission, you should: - remove any management of `$is_public`-like or `$admin_user`-like setting, except for any manifest question meant to either *initialize* the app as public/private or specific permissions ; - remove any management of `skipped_`, `unprotected_` and `protected_uris` (and `_regex`) settings that are now considered obsolete and deprecated. (N.B.: you should **explicitly delete them in the upgrade script**). Instead, you should now rely on the new `ynh_permission_*` helpers instead. If you do feel like you still need to use them, please contact the core team to provide your feedback and we'll figure out something ; For example, in the upgrade script if you used the `protected_uris` key before, you may use this code in the `DOWNWARD COMPATIBILITY` section: + ```bash protected_uris=$(ynh_app_setting_get --app=$app --key=protected_uris) @@ -278,4 +279,4 @@ 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) -If you have any questions, please contact someone from the apps-group. \ No newline at end of file +If you have any questions, please contact someone from the apps-group. From bbbe87418eee988855fa4ee14bc5943d27565030 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 27 Mar 2020 02:36:14 +0100 Subject: [PATCH 05/83] Update groups_and_permissions.md --- groups_and_permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/groups_and_permissions.md b/groups_and_permissions.md index fbeed2ef..b24c1f09 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -134,7 +134,7 @@ 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 groups `visitors`: ```bash -ynh_permission_update --permission "main" --add "all_users" "visitors" +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: From b400ba3bbe87198a5759d1e79c0e6b9f2b04181f Mon Sep 17 00:00:00 2001 From: Aeris One Date: Fri, 27 Mar 2020 22:48:51 +0100 Subject: [PATCH 06/83] Remove old application lists --- packaging_apps_guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging_apps_guidelines.md b/packaging_apps_guidelines.md index b9607d37..0c606a94 100644 --- a/packaging_apps_guidelines.md +++ b/packaging_apps_guidelines.md @@ -113,7 +113,7 @@ These deposits have several functions: * indicate the state of operation of the packet; * indicate information about the support of a package. -For the `official.json` and` community.json` lists maintained by the project team, registration is on [the git apps repository](https://github.com/YunoHost/apps). Other non-official lists may exists (including those for non-free apps for example), see more about that in the [community forum](https//forum.yunohost.org). +For the `apps.json` list maintained by the project team, registration is on [the git apps repository](https://github.com/YunoHost/apps). Other non-official lists may exists (including those for non-free apps for example), see more about that in the [community forum](https//forum.yunohost.org). #### YEP 1.3 ##### Indicate the license associated with the package | draft | AUTO | WORKING | From 343dcaf505c82d47b6b1350f1cb895e89f3ec59e Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 28 Mar 2020 01:55:03 +0100 Subject: [PATCH 07/83] Now permissions are managed from the webadmin as well --- groups_and_permissions.md | 5 ++++- images/button_to_go_to_permission_interface.png | Bin 0 -> 18969 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 images/button_to_go_to_permission_interface.png diff --git a/groups_and_permissions.md b/groups_and_permissions.md index b24c1f09..752b2698 100644 --- a/groups_and_permissions.md +++ b/groups_and_permissions.md @@ -1,7 +1,10 @@ User groups and permissions =========================== -Warning : for now, these features are only available through the command line (c.f. `yunohost user group --help` and `yunohost user permission --help`) +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) Managing groups --------------- diff --git a/images/button_to_go_to_permission_interface.png b/images/button_to_go_to_permission_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..65b998d9ca7cabd718b1dc18e20674a9647cbefd GIT binary patch literal 18969 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 SA2p2t0000 Date: Sat, 28 Mar 2020 01:55:19 +0100 Subject: [PATCH 08/83] Update small section to point to new group and permission page --- users_fr.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/users_fr.md b/users_fr.md index 931551a4..dbb273f6 100644 --- a/users_fr.md +++ b/users_fr.md @@ -25,10 +25,11 @@ Dans le portail, les utilisateurs peuvent également cliquer sur l'avatar en hau Vous devez être conscient que le SSO ne peut être atteint que par le nom de domaine (c.-à-d. `https://the.domain.tld/yunohost/sso`), et non pas en utilisant l'IP du serveur (c.-à-d. `https://11.22.33.44/yunohost/sso`), contrairement à l'administrateur web ! C'est un peu déroutant dans certaines situations, mais c'est nécessaire pour des raisons techniques. Si vous êtes dans une situation où vous avez besoin d'accéder au SSO sans avoir votre DNS correctement configuré pour une raison quelconque, vous pouvez envisager de modifier votre `/etc/hosts` comme décrit dans [cette page](dns_local_nework). -Permissions d'accès aux applications ---------------- +Gestion des groupes d'utilisateurs et permissions +--------------------------- + +Voir [cette page de documentation dédiée](groups_and_permissions). -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 la ligne de commande `yunohost app addaccess`, `removeaccess` et `clearaccess`. Accès SSH ---------- From 0d5165a604e364f119896d577a2411115105c98f Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 28 Mar 2020 06:52:25 +0100 Subject: [PATCH 09/83] Many typo or broken links / outdated info --- app_piwigo_fr.md | 4 ++-- chat_rooms.md | 2 +- chat_rooms_fr.md | 2 +- faq.md | 2 +- faq_de.md | 2 +- faq_fr.md | 2 +- troubleshooting_guide.md | 7 +++---- troubleshooting_guide_fr.md | 8 +++----- users.md | 2 +- users_fr.md | 2 +- whatsyunohost_de.md | 2 +- 11 files changed, 16 insertions(+), 19 deletions(-) diff --git a/app_piwigo_fr.md b/app_piwigo_fr.md index ada13e24..1c5b704a 100644 --- a/app_piwigo_fr.md +++ b/app_piwigo_fr.md @@ -13,8 +13,8 @@ Les extensions rendent Piwigo facilement personnalisable. Cerise sur le gâteau, ## Fonctionnalités -En plus des [fonctionnalités principales](Piwigo) de Piwigo, ce paquet propose également: - +En plus des [fonctionnalités principales](http://piwigo.org/basics/features) de Piwigo, ce paquet propose également: + * une intégration avec le système de gestion des utilisateurs et le SSO de Yunohost : * installation privée : limitée aux utilisateurs de YunoHost * installation publique : diff --git a/chat_rooms.md b/chat_rooms.md index f4844f5c..19c1ab2b 100644 --- a/chat_rooms.md +++ b/chat_rooms.md @@ -10,7 +10,7 @@ You could join those chat rooms using : #### Help and support chatroom -There is a [support](support_fr) chatroom for YunoHost users mutual support and help. +There is a [support](help_fr) chatroom for YunoHost users mutual support and help. - IRC: **#yunohost** on irc.freenode.net ; - Matrix: **#freenode_#yunohost:matrix.org** ; diff --git a/chat_rooms_fr.md b/chat_rooms_fr.md index 249d49f1..30dde1aa 100644 --- a/chat_rooms_fr.md +++ b/chat_rooms_fr.md @@ -9,7 +9,7 @@ Vous pouvez rejoindre ces salons avec: #### Salon d'entraide et de support -Le salon d’[entraide](support_fr) est là pour permettre aux utilisateurs de YunoHost de s'aider mutuellement. +Le salon d’[entraide](help_fr) est là pour permettre aux utilisateurs de YunoHost de s'aider mutuellement. - IRC : **#yunohost** sur irc.freenode.net (voir kiwiirc ci-dessus) - Matrix : **#freenode_#yunohost:matrix.org** - XMPP : **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)** diff --git a/faq.md b/faq.md index 6b83f90b..06a77692 100644 --- a/faq.md +++ b/faq.md @@ -95,7 +95,7 @@ and having some free time. Other than that, just doing what you can is already a #### What's YunoHost's political model? -It is described in [this document](yunohost_project_organization.md) :). +It is described in [this document](project_organization) :). #### Will you port YunoHost to [insert favorite distro]? diff --git a/faq_de.md b/faq_de.md index 5a1928e1..2f131cd5 100644 --- a/faq_de.md +++ b/faq_de.md @@ -72,7 +72,7 @@ Es ist ein weit verbreitetes Missverständnis, dass Neulinge bei offenen Softwar #### Was sind YunoHost organisatorische Grundsätze ? -Das beschreiben wir in [diesem Dokument](yunohost_project_organization) :). +Das beschreiben wir in [diesem Dokument](project_organization) :). #### Werdet ihr YunoHosts für [Lieblingsdistribution hier einfügen] portieren ? diff --git a/faq_fr.md b/faq_fr.md index 22b4d10c..cac06172 100644 --- a/faq_fr.md +++ b/faq_fr.md @@ -88,7 +88,7 @@ pouvez, c’est déjà trop cool ! #### Quel est le modèle politique de YunoHost ? -Il est décrit dans [ce document](yunohost_project_organization) :). +Il est décrit dans [ce document](project_organization) :). diff --git a/troubleshooting_guide.md b/troubleshooting_guide.md index 50683619..7bb35784 100644 --- a/troubleshooting_guide.md +++ b/troubleshooting_guide.md @@ -9,10 +9,9 @@ This means that everytime you want to try a new thing (non-official app, new spe Also: https://wiki.debian.org/DontBreakDebian -### Use non-official apps with caution -While it's tempting to install every [non-official apps](https://yunohost.org/#/apps_in_progress_en) please don't. Even if the app is marked as ready. Before testing an app you should read at least part of the package source code. Install, remove and upgrade script should be present. -Keep in mind that when you install an app, you execute code on your server with root privileges. -From my experience, some packaging are excellent and others can break some part of your YunoHost instance. Some packages are unmaintained. So before install check package issues, the [Forum](http://forum.yunohost.org/) and the [YunoHost support room](support_en) to see if other have problem with the app. +### Do not install bad quality apps + +Even if it can be tempting to install every [apps](https://yunohost.org/#/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](https://yunohost.org/#/docs_en). diff --git a/troubleshooting_guide_fr.md b/troubleshooting_guide_fr.md index 2f107da0..6a0f1e12 100644 --- a/troubleshooting_guide_fr.md +++ b/troubleshooting_guide_fr.md @@ -9,11 +9,9 @@ La meilleure manière de ne pas avoir de pannes est de ne pas bricoler sur votre Vous pouvez aussi lire ceci si vous avez encore envie de bricoler sur votre instance YunoHost en production : https://wiki.debian.org/DontBreakDebian -### Utilisez les applications non-officielles avec attention -Bien que ce soit tentant d’installer toutes les [applications non officielles](https://yunohost.org/#/apps_in_progress_fr), s’il vous plaît ne le faites pas, même si l’application est indiquée comme prête. -Avant de tester, vous devriez lire au moins le code source de l’application et vérifier que les fichiers d’installation, de suppression et de mise à jour sont bien présents. -Garder à l’esprit que quand vous installez une application, vous exécutez du code avec des droits root. De mon expérience, certaines applications sont excellentes, d’autres peuvent casser votre instance YunoHost et certaines ne sont plus maintenues. Alors, avant d’installer, regardez les problèmes rencontrés (issues dans GitHub), le [Forum](http://forum.yunohost.org/) -et [le salon de discussion Yunohost](support_fr) pour voir si d’autres ont eu des problèmes avec l’application. +### N'installez pas d'applications de mauvaise qualité + +Bien que ce soit tentant d’installer toutes les [applications](https://yunohost.org/#/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_fr). diff --git a/users.md b/users.md index cccdaf76..a570d767 100644 --- a/users.md +++ b/users.md @@ -22,7 +22,7 @@ The user portal, also called the SSO for 'Single Sign On' allows user to browse In the portal, users can also click on the avatar in the top-left to configure some other settings such as their identify, mail aliases, automatic mail forwards, or change their password.
-You should be aware that the SSO can only be reached through the actual domain name (i.e. `https://the.domain.tld/yunohost/sso`), and NOT by just using the IP of the server (i.e. `https://11.22.33.44/yunohost/sso`), contrarily to the webadmin ! This is a bit confusing but is necessary for technical reason. If you are in a situation where you need to access the SSO without having your DNS properly configured for some reason, you might consider tweaking your `/etc/hosts` as described in [this page](dns_local_nework). +You should be aware that the SSO can only be reached through the actual domain name (i.e. `https://the.domain.tld/yunohost/sso`), and NOT by just using the IP of the server (i.e. `https://11.22.33.44/yunohost/sso`), contrarily to the webadmin ! This is a bit confusing but is necessary for technical reason. If you are in a situation where you need to access the SSO without having your DNS properly configured for some reason, you might consider tweaking your `/etc/hosts` as described in [this page](dns_local_network).
User groups and permissions diff --git a/users_fr.md b/users_fr.md index dbb273f6..c52522dc 100644 --- a/users_fr.md +++ b/users_fr.md @@ -22,7 +22,7 @@ Le portail utilisateur, également appelé SSO pour 'Single Sign On', permet à Dans le portail, les utilisateurs peuvent également cliquer sur l'avatar en haut à gauche pour configurer d'autres paramètres tels que leur identité, les alias de messagerie, les transferts automatiques de courrier ou changer leur mot de passe.
-Vous devez être conscient que le SSO ne peut être atteint que par le nom de domaine (c.-à-d. `https://the.domain.tld/yunohost/sso`), et non pas en utilisant l'IP du serveur (c.-à-d. `https://11.22.33.44/yunohost/sso`), contrairement à l'administrateur web ! C'est un peu déroutant dans certaines situations, mais c'est nécessaire pour des raisons techniques. Si vous êtes dans une situation où vous avez besoin d'accéder au SSO sans avoir votre DNS correctement configuré pour une raison quelconque, vous pouvez envisager de modifier votre `/etc/hosts` comme décrit dans [cette page](dns_local_nework). +Vous devez être conscient que le SSO ne peut être atteint que par le nom de domaine (c.-à-d. `https://the.domain.tld/yunohost/sso`), et non pas en utilisant l'IP du serveur (c.-à-d. `https://11.22.33.44/yunohost/sso`), contrairement à l'administrateur web ! C'est un peu déroutant dans certaines situations, mais c'est nécessaire pour des raisons techniques. Si vous êtes dans une situation où vous avez besoin d'accéder au SSO sans avoir votre DNS correctement configuré pour une raison quelconque, vous pouvez envisager de modifier votre `/etc/hosts` comme décrit dans [cette page](dns_local_network).
Gestion des groupes d'utilisateurs et permissions diff --git a/whatsyunohost_de.md b/whatsyunohost_de.md index 74f436f3..226b6a0f 100644 --- a/whatsyunohost_de.md +++ b/whatsyunohost_de.md @@ -3,7 +3,7 @@ Was ist YunoHost? -YunoHost ist ein **Betriebssystem**, das auf die einfachste Verwaltung eines **Servers** abzielt und daher das [Self-Hosting](Selfhosting) demokratisiert, wobei sichergestellt wird, dass es zuverlässig, sicher, ethisch einwandfrei und leichtgewichtig bleibt. Es ist ein Copylefted-Libre-Softwareprojekt, das ausschließlich von Freiwilligen betrieben wird. Technisch gesehen kann es als eine Distribution angesehen werden, die auf [Debian GNU / Linux](https://debian.org) basiert und auf [vielen Arten von Hardware](install) installiert werden kann. +YunoHost ist ein **Betriebssystem**, das auf die einfachste Verwaltung eines **Servers** abzielt und daher das [Self-Hosting](selfhosting) demokratisiert, wobei sichergestellt wird, dass es zuverlässig, sicher, ethisch einwandfrei und leichtgewichtig bleibt. Es ist ein Copylefted-Libre-Softwareprojekt, das ausschließlich von Freiwilligen betrieben wird. Technisch gesehen kann es als eine Distribution angesehen werden, die auf [Debian GNU / Linux](https://debian.org) basiert und auf [vielen Arten von Hardware](install) installiert werden kann. Features -------- From 7fd17c3eb64c0ce0102b107a6218895ca7486976 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 28 Mar 2020 06:54:10 +0100 Subject: [PATCH 10/83] Reuniformize links --- OVH_fr.md | 6 +- XMPP.md | 2 +- XMPP_es.md | 2 +- XMPP_fr.md | 2 +- admin_es.md | 2 +- admin_fr.md | 2 +- admindoc_fr.md | 94 +++++++++++------------ app_jappix_fr.md | 2 +- app_nextcloud.md | 2 +- app_nextcloud_fr.md | 10 +-- app_transmission_fr.md | 2 +- apps.md | 2 +- apps_ar.md | 2 +- apps_es.md | 2 +- apps_it.md | 2 +- apps_overview.md | 2 +- apps_overview_fr.md | 2 +- apps_wishlist.md | 2 +- apps_wishlist_fr.md | 2 +- backup_fr.md | 2 +- boot_and_graphical_install_fr.md | 2 +- certificate_custom_fr.md | 4 +- certificate_es.md | 2 +- certificate_fr.md | 2 +- change_admin_password_fr.md | 2 +- chat_rooms.md | 2 +- chat_rooms_fr.md | 2 +- collabora_en.md | 2 +- collabora_fr.md | 2 +- commandline_es.md | 2 +- contribute.md | 2 +- contribute_ar.md | 10 +-- contribute_fr.md | 12 +-- contributordoc.md | 8 +- contributordoc_fr.md | 36 ++++----- diagnostic_fr.md | 6 +- dns.md | 6 +- dns_config_es.md | 2 +- dns_config_fr.md | 2 +- dns_dynamicip.md | 8 +- dns_dynamicip_fr.md | 8 +- dns_es.md | 10 +-- dns_fr.md | 10 +-- docs.md | 8 +- docs_ar.md | 10 +-- docs_de.md | 8 +- docs_fr.md | 14 ++-- docs_it.md | 10 +-- domains_fr.md | 4 +- email_es.md | 10 +-- email_fr.md | 2 +- email_migration.md | 2 +- email_migration_fr.md | 2 +- faq.md | 2 +- faq_de.md | 2 +- faq_fr.md | 2 +- filezilla_fr.md | 2 +- hardware_es.md | 2 +- hardware_fr.md | 2 +- index.md | 2 +- index_ar.md | 10 +-- index_de.md | 4 +- index_es.md | 2 +- index_fr.md | 14 ++-- index_it.md | 4 +- index_oc.md | 26 +++---- install_ar.md | 14 ++-- install_es.md | 16 ++-- install_fr.md | 14 ++-- install_iso_es.md | 12 +-- install_iso_fr.md | 12 +-- install_iso_it.md | 2 +- install_manually_es.md | 2 +- install_on_arm_board.md | 8 +- install_on_arm_board_es.md | 22 +++--- install_on_arm_board_fr.md | 22 +++--- install_on_debian_fr.md | 6 +- install_on_raspberry_es.md | 16 ++-- install_on_raspberry_fr.md | 16 ++-- install_on_raspberry_it.md | 2 +- install_on_virtualbox_es.md | 6 +- install_on_virtualbox_fr.md | 4 +- install_on_vps_es.md | 6 +- install_on_vps_fr.md | 6 +- isp.md | 4 +- isp_box_config.md | 8 +- isp_box_config_es.md | 10 +-- isp_box_config_fr.md | 10 +-- isp_es.md | 14 ++-- isp_fr.md | 14 ++-- isp_free_fr.md | 6 +- isp_orange_fr.md | 2 +- isp_sfr_fr.md | 2 +- packaging_apps.md | 22 +++--- packaging_apps_arguments_management.md | 2 +- packaging_apps_arguments_management_fr.md | 2 +- packaging_apps_fr.md | 24 +++--- packaging_apps_guidelines.md | 6 +- packaging_apps_guidelines_fr.md | 6 +- packaging_apps_hooks_fr.md | 2 +- packaging_apps_manifest.md | 4 +- packaging_apps_manifest_fr.md | 4 +- packaging_apps_multiinstance.md | 6 +- packaging_apps_multiinstance_fr.md | 6 +- packaging_apps_scripts.md | 2 +- packaging_apps_scripts_fr.md | 2 +- packaging_apps_start.md | 4 +- packaging_apps_start_fr.md | 4 +- packaging_apps_virtualbox_fr.md | 6 +- postinstall_es.md | 16 ++-- postinstall_fr.md | 16 ++-- security_fr.md | 6 +- selfhosting_ru.md | 4 +- ssh.md | 2 +- ssh_es.md | 6 +- ssh_fr.md | 4 +- ssh_it.md | 2 +- troubleshooting_guide.md | 14 ++-- troubleshooting_guide_fr.md | 16 ++-- use_case_non-profit_organisations.md | 2 +- use_case_non-profit_organisations_fr.md | 2 +- use_case_non-profit_organisations_oc.md | 2 +- whatsyunohost_ar.md | 6 +- whatsyunohost_fr.md | 2 +- 124 files changed, 444 insertions(+), 444 deletions(-) diff --git a/OVH_fr.md b/OVH_fr.md index 92df9c1f..303626bd 100644 --- a/OVH_fr.md +++ b/OVH_fr.md @@ -10,16 +10,16 @@ Cliquez sur l'onglet **Zone DNS**, puis sur **Ajouter une entrée**: -Il suffit maintenant d'ajouter les redirections DNS comme indiqué dans la [configuration DNS standard](/dns_config_fr). +Il suffit maintenant d'ajouter les redirections DNS comme indiqué dans la [configuration DNS standard](/dns_config). ###IP dynamique -[Tutoriel plus général sur l’IP dynamique](dns_dynamicip_fr). +[Tutoriel plus général sur l’IP dynamique](/dns_dynamicip). Cette partie est à suivre, que si votre IP est dynamique. -Pour savoir si votre fournisseur d’accès internet vous fournit une IP dynamique [voir ici](/isp_fr). +Pour savoir si votre fournisseur d’accès internet vous fournit une IP dynamique [voir ici](/isp). Commencez par créer un identifiant DynHost. diff --git a/XMPP.md b/XMPP.md index 2cef78c0..f549d01d 100644 --- a/XMPP.md +++ b/XMPP.md @@ -53,7 +53,7 @@ XMPP chats can be made secure and private using [OMEMO] encryption (https://xmpp To create a chatroom (multi-user chat) on your YunoHost server, use the identifier `chatroomname@muc.yourdomain.tld`. -For this to work you need to [add the corresponding `muc.` DNS record](dns_config_fr) in the DNS configuration. +For this to work you need to [add the corresponding `muc.` DNS record](/dns_config) in the DNS configuration. ## VoIP and videoconferences diff --git a/XMPP_es.md b/XMPP_es.md index 228b941f..76f45f25 100644 --- a/XMPP_es.md +++ b/XMPP_es.md @@ -43,7 +43,7 @@ Es posible cifrar tu conversaciones XMPP con la ayuda de [OMEMO](https://xmpp.or Para crear un salón de discusión (Multi-user chat) en tu servidor Yunohost, utiliza el ID nombredelsalon@muc.dominio.tld (donde dominio.tld es el dominio principal de tu servidor). -Si utilizas un nombre de dominio personal, es necesario [añadir una redirección de tipo CNAME para el subdominio `muc.`](dns_config_es) en tu servidor DNS. +Si utilizas un nombre de dominio personal, es necesario [añadir una redirección de tipo CNAME para el subdominio `muc.`](/dns_config) en tu servidor DNS. ### VoIP y videoconferencias diff --git a/XMPP_fr.md b/XMPP_fr.md index 594f2151..0273219f 100644 --- a/XMPP_fr.md +++ b/XMPP_fr.md @@ -52,7 +52,7 @@ Il est possible de rendre les conversations plus sécurisées et privées en les Pour créer un salon de discussion (Multi-user chat) sur votre serveur Yunohost utilisez l’identifiant nomsalon@muc.domaine.tld (où domaine.tld est le domaine principal de votre serveur). -Si vous utilisez un nom de domaine personnel, il est nécessaire d’[ajouter une redirection de type CNAME pour le sous domaine `muc.`](dns_config_fr) au niveau de votre serveur DNS. +Si vous utilisez un nom de domaine personnel, il est nécessaire d’[ajouter une redirection de type CNAME pour le sous domaine `muc.`](/dns_config) au niveau de votre serveur DNS. ## VoIP et visioconférence diff --git a/admin_es.md b/admin_es.md index dc6bea60..573adb3b 100644 --- a/admin_es.md +++ b/admin_es.md @@ -1,6 +1,6 @@ # La interfaz de administración web -Yunohost tiene una interfaz gráfica de administración. El otro método consiste en utilizar la [linea de comando](/commandline_es). +Yunohost tiene una interfaz gráfica de administración. El otro método consiste en utilizar la [linea de comando](/commandline). ### Acceso diff --git a/admin_fr.md b/admin_fr.md index ec8476e5..5601de0f 100644 --- a/admin_fr.md +++ b/admin_fr.md @@ -1,6 +1,6 @@ # L’interface d’administration web -YunoHost est fourni avec une interface graphique d’administration. L’autre méthode est d’utiliser la [ligne de commande](/commandline_fr). +YunoHost est fourni avec une interface graphique d’administration. L’autre méthode est d’utiliser la [ligne de commande](/commandline). ### Accès diff --git a/admindoc_fr.md b/admindoc_fr.md index 2f186795..d248a210 100644 --- a/admindoc_fr.md +++ b/admindoc_fr.md @@ -1,56 +1,56 @@ # Documentation pour les administrateurs YunoHost * Découvrir l'auto-hébergement - * [Qu'est-ce que l'auto-hébergement](/selfhosting_fr) - * [Qu'est-ce que YunoHost](/whatsyunohost_fr) - * [Essayer YunoHost](/try_fr) - * [Choisir son mode d'hébergement](howtohostyourself_fr) - * [Matériel compatible](/hardware_fr) - * [À propos des fournisseurs d'accès internet](/isp_fr) -* [Guide d’installation](/install_fr) - * [Sur un ordinateur "standard"](/install_iso_fr) - * [Sur un serveur dédié ou virtuel (VPS)](/install_on_vps_fr) - * [Sur un Raspberry Pi](/install_on_raspberry_fr) - * [Sur une carte ARM](/install_on_arm_board_fr) - * [Sur Debian](/install_on_debian_fr) - * [Sur VirtualBox](/install_on_virtualbox_fr) + * [Qu'est-ce que l'auto-hébergement](/selfhosting) + * [Qu'est-ce que YunoHost](/whatsyunohost) + * [Essayer YunoHost](/try) + * [Choisir son mode d'hébergement](/howtohostyourself) + * [Matériel compatible](/hardware) + * [À propos des fournisseurs d'accès internet](/isp) +* [Guide d’installation](/install) + * [Sur un ordinateur "standard"](/install_iso) + * [Sur un serveur dédié ou virtuel (VPS)](/install_on_vps) + * [Sur un Raspberry Pi](/install_on_raspberry) + * [Sur une carte ARM](/install_on_arm_board) + * [Sur Debian](/install_on_debian) + * [Sur VirtualBox](/install_on_virtualbox) * Finaliser son installation - * [Post-installation](/postinstall_fr) - * [Configurer les redirections de port](/isp_box_config_fr) - * [Configurer les enregistrements DNS](/dns_config_fr) - * [Installer un certificat SSL](/certificate_fr) - * [Diagnostic du bon fonctionnement du YunoHost](/diagnostic_fr) + * [Post-installation](/postinstall) + * [Configurer les redirections de port](/isp_box_config) + * [Configurer les enregistrements DNS](/dns_config) + * [Installer un certificat SSL](/certificate) + * [Diagnostic du bon fonctionnement du YunoHost](/diagnostic) * Apprendre à connaitre YunoHost - * [Vue d'ensemble de YunoHost](/overview_fr) - * [Conseil généraux](/guidelines_fr) - * [L'interface d'administration web](/admin_fr) - * [SSH](/ssh_fr) et [l'administration en ligne de commande](/commandline_fr) - * [Les utilisateurs et le SSO](/users_fr) - * [Les applications](/apps_overview_fr) - * [Les domaines, la configuration DNS et les certificats](/domains_fr) - * [Les emails](/email_fr) - * [Formulaires pour enlever son adresse IP des listes noires](/blacklist_forms_fr) - * [XMPP](/XMPP_fr) - * [Les sauvegardes](/backup_fr) - * [Mettre à jour le système](/update_fr) et [les applications](/app_update_fr) - * [La sécurité](/security_fr) + * [Vue d'ensemble de YunoHost](/overview) + * [Conseil généraux](/guidelines) + * [L'interface d'administration web](/admin) + * [SSH](/ssh) et [l'administration en ligne de commande](/commandline) + * [Les utilisateurs et le SSO](/users) + * [Les applications](/apps_overview) + * [Les domaines, la configuration DNS et les certificats](/domains) + * [Les emails](/email) + * [Formulaires pour enlever son adresse IP des listes noires](/blacklist_forms) + * [XMPP](/XMPP) + * [Les sauvegardes](/backup) + * [Mettre à jour le système](/update) et [les applications](/app_update) + * [La sécurité](/security) * Pour aller plus loin * Noms de domaine - * [Nom de domaine en noho.st / nohost.me / ynh.fr](/dns_nohost_me_fr) - * [Configurer un DNS dynamique avec une adresse IP dynamique](/dns_dynamicip_fr) - * [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr) - * [Utiliser le résolveur DNS local](/dns_resolver_fr) - * [Gérer les enregistrements DNS chez OVH](/OVH_fr) + * [Nom de domaine en noho.st / nohost.me / ynh.fr](/dns_nohost_me) + * [Configurer un DNS dynamique avec une adresse IP dynamique](/dns_dynamicip) + * [DNS et installation d’une application sur un sous-domaine](/dns_subdomains) + * [Utiliser le résolveur DNS local](/dns_resolver) + * [Gérer les enregistrements DNS chez OVH](/OVH) * Notes à propos de certains fournisseurs d'accès à Internet - * [SFR](/isp_sfr_fr) - * [Orange](/isp_orange_fr) - * [Free](/isp_free_fr) + * [SFR](/isp_sfr) + * [Orange](/isp_orange) + * [Free](/isp_free) * [Échanger des fichiers avec son serveur à l'aide d'une interface graphique](/filezilla) - * [Modifier l'apparence du portail utilisateur](/theming_fr) - * [Ajouter un stockage externe](/external_storage_fr) - * [Migrer ses emails vers YunoHost](/email_migration_fr) - * [YunoHost avec un service caché Tor](/torhiddenservice_fr) - * [Utilisation de certificats autres que Let's Encrypt](/certificate_custom_fr) -* [Guide de dépannage](/troubleshooting_guide_fr) - * [Débloquer une IP dans Fail2ban](/fail2ban_fr) - * [Changer le mot de passe d’administration](/change_admin_password_fr) + * [Modifier l'apparence du portail utilisateur](/theming) + * [Ajouter un stockage externe](/external_storage) + * [Migrer ses emails vers YunoHost](/email_migration) + * [YunoHost avec un service caché Tor](/torhiddenservice) + * [Utilisation de certificats autres que Let's Encrypt](/certificate_custom) +* [Guide de dépannage](/troubleshooting_guide) + * [Débloquer une IP dans Fail2ban](/fail2ban) + * [Changer le mot de passe d’administration](/change_admin_password) diff --git a/app_jappix_fr.md b/app_jappix_fr.md index e9b0fd2d..aa044fe2 100644 --- a/app_jappix_fr.md +++ b/app_jappix_fr.md @@ -1,3 +1,3 @@ #Jappix -Jappix est un client web [XMPP](/XMPP_fr). +Jappix est un client web [XMPP](/XMPP). diff --git a/app_nextcloud.md b/app_nextcloud.md index 66ad3fb7..44bfa713 100644 --- a/app_nextcloud.md +++ b/app_nextcloud.md @@ -37,7 +37,7 @@ Finally click on the check mark to validate the folder. #### II. Migrate Nextcloud data to a larger partition -**Note**: The following assumes that you have a hard disk mounted on `/media/storage`. Refer to[this article](/external_storage_en) to prepare your system. +**Note**: The following assumes that you have a hard disk mounted on `/media/storage`. Refer to[this article](/external_storage) to prepare your system. **Note**: Replace `nextcloud` with the name of its instance, if you have several Nextcloud apps installed. diff --git a/app_nextcloud_fr.md b/app_nextcloud_fr.md index fb889026..4fcfa6f2 100644 --- a/app_nextcloud_fr.md +++ b/app_nextcloud_fr.md @@ -37,7 +37,7 @@ Enfin cliquer sur la coche pour valider le dossier. #### II. Migrer les données de Nextcloud dans une partition plus grosse -**Remarque** : Ce qui suit suppose que vous avez un disque dur monté sur `/media/stockage`. Référez-vous à [cet article](/external_storage_fr) pour préparer votre système. +**Remarque** : Ce qui suit suppose que vous avez un disque dur monté sur `/media/stockage`. Référez-vous à [cet article](/external_storage) pour préparer votre système. **Remarque** : Remplacez `nextcloud` par le nom de son instance, si vous avez plusieurs apps Nextcloud installées. @@ -158,10 +158,10 @@ Sauvegarder et nettoyer vos caches (Cloudflare, navigateur, ...) et le tour est ## Applications Tiers
- + [Calendrier](app_nextcloud_calendar_fr) - + [contact](app_nextcloud_contact_fr) - + [KeeWeb](app_nextcloud_keeweb_fr) - + [Carnet](app_nextcloud_carnet_fr) + + [Calendrier](/app_nextcloud_calendar) + + [contact](/app_nextcloud_contact) + + [KeeWeb](/app_nextcloud_keeweb) + + [Carnet](/app_nextcloud_carnet) ## Quelques liens utiles diff --git a/app_transmission_fr.md b/app_transmission_fr.md index cb94f3bb..fb7f1e75 100644 --- a/app_transmission_fr.md +++ b/app_transmission_fr.md @@ -27,7 +27,7 @@ scp -r /votre/fichier/ root@votre-domaine.org:/home/yunohost.transmission/comple ``` ##### Comment télécharger un répertoire entier ? -Une fois connecté en [SSH](ssh_fr), placez-vous dans le répertoire de téléchargement et zippez le répertoire : +Une fois connecté en [SSH](/ssh), placez-vous dans le répertoire de téléchargement et zippez le répertoire : ```bash cd /home/yunohost.transmission/completed zip -r votre_archive.zip [dossier] diff --git a/apps.md b/apps.md index 70eff9be..7b5ff79b 100644 --- a/apps.md +++ b/apps.md @@ -44,7 +44,7 @@ Disclaimers
-
If you don't find the app you are looking for, you can try to look for a appname_ynh repository on Github or on the internet, or add it to the apps wishlist.
+
If you don't find the app you are looking for, you can try to look for a appname_ynh repository on Github or on the internet, or add it to the apps wishlist.
@@ -33,8 +33,8 @@ @@ -43,7 +43,7 @@

Installatz vòstre servidor simplament, avètz ja tot çò que cal a l’ostal

-

Far veire los requistes

+

Far veire los requistes

@@ -62,7 +62,7 @@

Profitatz de vòstras aplicacions web e fabricatz vòstre canton d’Internet

-


Lista de las aplicacions disponiblas

+


Lista de las aplicacions disponiblas

@@ -71,7 +71,7 @@

Gerissètz vòstre servidor coma volgatz : via web, mobil o en linha de comanda

-


Ensajar l’interfàcia d’administracion

+


Ensajar l’interfàcia d’administracion

@@ -85,18 +85,18 @@ diff --git a/install_ar.md b/install_ar.md index 65c5dde5..67afb69a 100644 --- a/install_ar.md +++ b/install_ar.md @@ -14,11 +14,11 @@ @@ -32,15 +32,15 @@ @@ -58,7 +58,7 @@ @@ -72,7 +72,7 @@
diff --git a/install_es.md b/install_es.md index 3c3fb448..cb16720a 100644 --- a/install_es.md +++ b/install_es.md @@ -1,6 +1,6 @@ # Guía de instalación -Existen varias maneras de instalar YunoHost. El método y el hardware difieren un poco si quieres instalarlo en tu casa o en acceso remoto : **[ver el hardware compatible](/hardware_es)** +Existen varias maneras de instalar YunoHost. El método y el hardware difieren un poco si quieres instalarlo en tu casa o en acceso remoto : **[ver el hardware compatible](/hardware)** Esta página enumera varios tipos de instalaciones, clasificados por categorías. @@ -11,11 +11,11 @@ Esta página enumera varios tipos de instalaciones, clasificados por categorías @@ -29,15 +29,15 @@ Esta página enumera varios tipos de instalaciones, clasificados por categorías @@ -55,7 +55,7 @@ Esta página enumera varios tipos de instalaciones, clasificados por categorías @@ -69,7 +69,7 @@ Esta página enumera varios tipos de instalaciones, clasificados por categorías
diff --git a/install_fr.md b/install_fr.md index a6ceeac1..7521f412 100644 --- a/install_fr.md +++ b/install_fr.md @@ -1,6 +1,6 @@ # Guide d’installation -Il existe plusieurs manières d’installer YunoHost. La méthode d’installation diffère légèrement si vous souhaitez l’installer chez vous ou à distance, et du matériel utilisé : **[voir le matériel compatible](/hardware_fr)** +Il existe plusieurs manières d’installer YunoHost. La méthode d’installation diffère légèrement si vous souhaitez l’installer chez vous ou à distance, et du matériel utilisé : **[voir le matériel compatible](/hardware)** Cette page liste plusieurs types d’installations, classés par catégories. @@ -11,11 +11,11 @@ Cette page liste plusieurs types d’installations, classés par catégories. @@ -29,7 +29,7 @@ Cette page liste plusieurs types d’installations, classés par catégories.
@@ -37,7 +37,7 @@ Cette page liste plusieurs types d’installations, classés par catégories.
@@ -55,7 +55,7 @@ Cette page liste plusieurs types d’installations, classés par catégories. @@ -69,7 +69,7 @@ Cette page liste plusieurs types d’installations, classés par catégories.
diff --git a/install_iso_es.md b/install_iso_es.md index 91de3195..51b5889d 100644 --- a/install_iso_es.md +++ b/install_iso_es.md @@ -1,6 +1,6 @@ # Instalación en un ordenador -*Encontrar otros medios de instalar Yunohost **[aquí](/install_es)**.* +*Encontrar otros medios de instalar Yunohost **[aquí](/install)**.* ## Prerrequisitos @@ -10,7 +10,7 @@ * Un ordenador compatible x86 dedicado a YunoHost : portátil, netbook, ordenador de escritorio. Puedes reutilizar calquiera máquina con **256 Mo de RAM mínimo** * Otro ordenador para examinar esta guía y acceder a tu servidor -* Un [proveedor de Internet ético](/isp_es), de preferencia con acceso de buena velocidad (ascendente) +* Un [proveedor de Internet ético](/isp), de preferencia con acceso de buena velocidad (ascendente) * Una **memoria USB** con capacidad mínima de 1Go **O** un **CD en blanco** estándar * ***Casos particulares*** : si tu servidor no tiene tarjeta gráfica, hay que preparar un iso que se inicie sobre el puerto de serie](https://github.com/luffah/debian-mkserialiso). @@ -18,13 +18,13 @@ ## Etapas de instalación -0. Descargar la imagen ISO +0. Descargar la imagen ISO -1. Copiar la imagen ISO +1. Copiar la imagen ISO -2. Encender e instalar +2. Encender e instalar -3. Post-instalación +3. Post-instalación --- diff --git a/install_iso_fr.md b/install_iso_fr.md index 043b5198..85bddef8 100644 --- a/install_iso_fr.md +++ b/install_iso_fr.md @@ -1,6 +1,6 @@ # Installation sur ordinateur -*Trouvez d’autres moyens d’installer YunoHost **[ici](/install_fr)**.* +*Trouvez d’autres moyens d’installer YunoHost **[ici](/install)**.* ## Prérequis @@ -10,7 +10,7 @@ * Un matériel compatible x86 dédié à YunoHost : portable, netbook, ordinateur. Vous pouvez réutiliser n’importe quelle machine avec **256 Mo de RAM minimum** * Un autre ordinateur pour parcourir ce guide et accéder à votre serveur -* Un [fournisseur d’accès correct](/isp_fr), de préférence avec une bonne vitesse de téléversement (débit montant) +* Un [fournisseur d’accès correct](/isp), de préférence avec une bonne vitesse de téléversement (débit montant) * Une **clé USB** d’une capacité minimum d’1Go **OU** un **CD vierge** standard * ***Cas particulier*** : Si votre serveur n'a pas de carte graphique, il faut [préparer un iso qui démarre sur le port série](https://github.com/luffah/debian-mkserialiso). @@ -18,13 +18,13 @@ ## Étapes d’installation -0. Télécharger l'image ISO de YunoHost +0. Télécharger l'image ISO de YunoHost -1. Flasher l’image ISO sur une clef USB +1. Flasher l’image ISO sur une clef USB -2. Démarrer la machine et installer YunoHost +2. Démarrer la machine et installer YunoHost -3. Effectuer la configuration initiale (post-installation) +3. Effectuer la configuration initiale (post-installation) --- diff --git a/install_iso_it.md b/install_iso_it.md index dfec6cdd..b16d068e 100644 --- a/install_iso_it.md +++ b/install_iso_it.md @@ -1,6 +1,6 @@ # Installazione in un computer -*Altri modi per installare YunoHost **[Clicca qui](/install_it)**.* +*Altri modi per installare YunoHost **[Clicca qui](/install)**.* ### Requisiti diff --git a/install_manually_es.md b/install_manually_es.md index c5120e0a..8f273361 100644 --- a/install_manually_es.md +++ b/install_manually_es.md @@ -8,7 +8,7 @@ curl https://install.yunohost.org | bash *(Si `curl` no está instalado en tu sistema, tal vez tendrás que instalarlo con `apt install curl`. De otro modo, si el comando no muestra nada, puedes intentar `apt install ca-certificates`)* -Cuando la instalación esté terminada, habrá que [**proceder a la post-instalación**](/postinstall_es) +Cuando la instalación esté terminada, habrá que [**proceder a la post-instalación**](/postinstall) --- diff --git a/install_on_arm_board.md b/install_on_arm_board.md index f6f70aa9..9703b54f 100644 --- a/install_on_arm_board.md +++ b/install_on_arm_board.md @@ -43,10 +43,10 @@ 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 +2. Plug & boot -3. Connect to your server with SSH +3. Connect to your server with SSH -4. Follow the generic install procedure +4. Follow the generic install procedure diff --git a/install_on_arm_board_es.md b/install_on_arm_board_es.md index 26477bf7..8a3d5278 100644 --- a/install_on_arm_board_es.md +++ b/install_on_arm_board_es.md @@ -1,6 +1,6 @@ # Instalar Yunohost en una tarjeta ARM -*Encontrar otros medios de instalar Yunohost **[aquí](/install_es)**.* +*Encontrar otros medios de instalar Yunohost **[aquí](/install)**.*
@@ -19,21 +19,21 @@ YunoHost todavía no es compatible con las tarjetas ARM64. Para obtener más inf - Un adaptador de corriente para alimentar la tarjeta ; - Una tarjeta microSD : al menos **8 Go** y **Clase 10** (por ejemplo una [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; - Un cable ethernet/RJ-45 para conectar la carte con el router / caja internet. (Con el Raspberry Pi 0, puedes conectar tu tarjeta con un cable OTG y un adaptador Wifi USB.) -- Un [proveedor de Internet ético](/isp_es), de preferencia con una buena velocidad de upload. +- Un [proveedor de Internet ético](/isp), de preferencia con una buena velocidad de upload. --- ## Instalación con la imagen pre-instalada (recomendada) -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". +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 +2. Conectar y encender -3. Conectarse en SSH +3. Conectarse en SSH -4. Proceder a la post-instalación +4. Proceder a la post-instalación --- @@ -41,11 +41,11 @@ 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 +2. Conectar y encender -3. Conectarse en SSH +3. Conectarse en SSH -4. Proceder a la post-instalación genérica +4. Proceder a la post-instalación genérica diff --git a/install_on_arm_board_fr.md b/install_on_arm_board_fr.md index 02f207cd..68be4675 100644 --- a/install_on_arm_board_fr.md +++ b/install_on_arm_board_fr.md @@ -1,6 +1,6 @@ # Installer YunoHost sur carte ARM -*Toutes les autres façons d’installer YunoHost sont listées **[ici](/install_fr)**.* +*Toutes les autres façons d’installer YunoHost sont listées **[ici](/install)**.*
@@ -19,21 +19,21 @@ YunoHost ne supporte pour le moment pas les cartes ARM64. Pour plus d'informatio - Un adaptateur secteur pour alimenter la carte ; - Une carte microSD : au moins **8 Go** et **Classe 10** (par exemple une [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; - Un câble ethernet/RJ-45 pour brancher la carte à votre routeur/box internet. (Avec le Raspberry Pi 0, vous pouvez connecter votre carte avec un câble OTG et un adaptateur Wifi USB.) -- Un [fournisseur d’accès correct](/isp_fr), de préférence avec une bonne vitesse d’upload. +- Un [fournisseur d’accès correct](/isp), de préférence avec une bonne vitesse d’upload. --- ## Installation avec l'image pré-installée (recommandée) -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". +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 +2. Brancher la carte et la laisser démarrer -3. Se connecter en SSH sur le serveur +3. Se connecter en SSH sur le serveur -4. Effectuer la configuration initiale (post-installation) +4. Effectuer la configuration initiale (post-installation) --- @@ -41,11 +41,11 @@ 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 +2. Brancher & démarrer -3. Se connecter en SSH +3. Se connecter en SSH -4. Suivre la procédure d'installation générique +4. Suivre la procédure d'installation générique diff --git a/install_on_debian_fr.md b/install_on_debian_fr.md index 4b05905e..eaa21951 100644 --- a/install_on_debian_fr.md +++ b/install_on_debian_fr.md @@ -1,6 +1,6 @@ # Installation sur Debian -*Trouvez d’autres moyens d’installer YunoHost **[ici](/install_fr)**.* +*Trouvez d’autres moyens d’installer YunoHost **[ici](/install)**.* ## Prérequis @@ -18,7 +18,7 @@ Sur une plateforme ARM, un VPS, un serveur dédié, un ordinateur x86 standard, ## Étapes d’installation -1. Installer manuellement +1. Installer manuellement -2. Post-installation +2. Post-installation diff --git a/install_on_raspberry_es.md b/install_on_raspberry_es.md index 902c8ab1..b4fd51bf 100644 --- a/install_on_raspberry_es.md +++ b/install_on_raspberry_es.md @@ -1,6 +1,6 @@ # Instalar YunoHost en un Raspberry Pi -*Encontrar otros medios de instalar Yunohost **[aquí](/install_es)**.* +*Encontrar otros medios de instalar Yunohost **[aquí](/install)**.*
@@ -17,21 +17,21 @@ Antes de alojar tu propio servidor en tu casa, te recomendamos que consultes las - Un adaptador de corriente para alimentar la tarjeta ; - Una tarjeta microSD : al menos **8 Go** y **Clase 10** (por ejemplo una [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; - Un cable ethernet/RJ-45 para conectar la tarjeta con tu enrutador o tu caja internet. (Con el Raspberry Pi 0, puedes conectar tu tarjeta con un cable OTG y un adaptador Wifi USB.) -- Un [proveedor de Internet ético](/isp_es), de preferencia con buena velocidad de upload. +- Un [proveedor de Internet ético](/isp), de preferencia con buena velocidad de upload. --- ## Instalación con la imagen pre-instalada (recomendada) -1. Descargar la imagen para Raspberry Pi +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 +3. Conectar y encender -4. Conectarse en SSH +4. Conectarse en SSH -5. Proceder a la post-instalación +5. Proceder a la post-instalación --- @@ -56,5 +56,5 @@ sudo passwd root 3. Desconéctate et reconéctate con el usuario root esta vez. -4. Sigue con el procedimiento de instalación manual genérico. +4. Sigue con el procedimiento de instalación manual genérico. diff --git a/install_on_raspberry_fr.md b/install_on_raspberry_fr.md index 3290b24f..c3fd6452 100644 --- a/install_on_raspberry_fr.md +++ b/install_on_raspberry_fr.md @@ -1,6 +1,6 @@ # Installer YunoHost sur Raspberry Pi -*Toutes les autres façons d’installer YunoHost sont listées **[ici](/install_fr)**.* +*Toutes les autres façons d’installer YunoHost sont listées **[ici](/install)**.*
@@ -17,21 +17,21 @@ Avant d'héberger un serveur chez vous, il est recommandé de prendre connaissan - Un adaptateur secteur pour alimenter la carte ; - Une carte microSD : au moins **8 Go** et **Classe 10** (par exemple une [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; - Un câble ethernet/RJ-45 pour brancher la carte à votre routeur/box internet. (Avec le Raspberry Pi 0, vous pouvez connecter votre carte avec un câble OTG et un adaptateur Wifi USB.) -- Un [fournisseur d’accès correct](/isp_fr), de préférence avec une bonne vitesse d’upload. +- Un [fournisseur d’accès correct](/isp), de préférence avec une bonne vitesse d’upload. --- ## Installation avec l'image pré-installée (recommandée) -1. Télécharger l'image pour Raspberry Pi +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 +3. Brancher la carte et la laisser démarrer -4. Se connecter en SSH sur le serveur +4. Se connecter en SSH sur le serveur -5. Effectuer la configuration initiale (post-installation) +5. Effectuer la configuration initiale (post-installation) --- @@ -57,5 +57,5 @@ sudo passwd root 3. Déconnectez-vous et reconnectez-vous avec l'utilisateur root cette fois. -4. Poursuivez avec la procédure d'installation manuelle générique. +4. Poursuivez avec la procédure d'installation manuelle générique. diff --git a/install_on_raspberry_it.md b/install_on_raspberry_it.md index b2f88cb0..1b3ca866 100644 --- a/install_on_raspberry_it.md +++ b/install_on_raspberry_it.md @@ -1,3 +1,3 @@ # Installa YunoHost su Raspberry Pi -*Consulta la guida completa in inglese [qui](https://yunohost.org/#/install_on_raspberry_en)* +*Consulta la guida completa in inglese [qui](/install_on_raspberry)* diff --git a/install_on_virtualbox_es.md b/install_on_virtualbox_es.md index be31c3d2..9a6260d6 100644 --- a/install_on_virtualbox_es.md +++ b/install_on_virtualbox_es.md @@ -1,13 +1,13 @@ # Instalar YunoHost en VirtualBox -*Encontrar otros medios de instalar Yunohost **[aquí](/install_es)**.* +*Encontrar otros medios de instalar Yunohost **[aquí](/install)**.* ## Prerrequisitos * Un ordenador x86 con VirtualBox instalado y bastante RAM disponible para iniciar una pequeña máquina virtual. -* La última **imagen ISO YunoHost** estable, disponible [aquí](/images_es). +* La última **imagen ISO YunoHost** estable, disponible [aquí](/images).
N.B. : Instalar YunoHost en VirtualBox es útil para probar la distribución. Para realmente autoalojarse a largo plazo, probablement necesitarás una máquina virtual (viejo ordenador, tarjeta ARM...) o un VPS. @@ -73,4 +73,4 @@ Si te encuentras con el error "VT-x is not available", probablement hay que acti Después del reinicio, la máquina debería proponerte de efectuar la post-instalación : -Documentación de post-instalación +Documentación de post-instalación diff --git a/install_on_virtualbox_fr.md b/install_on_virtualbox_fr.md index f83a3151..d99807af 100644 --- a/install_on_virtualbox_fr.md +++ b/install_on_virtualbox_fr.md @@ -1,13 +1,13 @@ # Installer YunoHost sur VirtualBox -*Trouvez d’autres moyens d’installer YunoHost **[ici](/install_fr)**.* +*Trouvez d’autres moyens d’installer YunoHost **[ici](/install)**.* ## Prérequis * Un ordinateur x86 avec VirtualBox installé et assez de RAM disponible pour lancer une petite machine virtuelle. -* La dernière **image ISO YunoHost** stable, disponible [ici](/images_fr). +* La dernière **image ISO YunoHost** stable, disponible [ici](/images).
N.B. : Installer YunoHost dans une VirtualBox est utile pour tester la diff --git a/install_on_vps_es.md b/install_on_vps_es.md index 0263d71f..f6eb2eb7 100644 --- a/install_on_vps_es.md +++ b/install_on_vps_es.md @@ -1,6 +1,6 @@ # Instalación en un servidor dedicado -*Encontrar otros medios de instalar Yunohost **[aquí](/install_es)**.* +*Encontrar otros medios de instalar Yunohost **[aquí](/install)**.* ## Prerrequisitos @@ -14,7 +14,7 @@ ## Etapas de instalación -1. Instalar manualmente +1. Instalar manualmente -2. Post-instalación +2. Post-instalación diff --git a/install_on_vps_fr.md b/install_on_vps_fr.md index 9194d9b7..a0924cb8 100644 --- a/install_on_vps_fr.md +++ b/install_on_vps_fr.md @@ -1,6 +1,6 @@ # Installation sur un serveur dédié -*Trouvez d’autres moyens d’installer YunoHost **[ici](/install_fr)**.* +*Trouvez d’autres moyens d’installer YunoHost **[ici](/install)**.* ## Prérequis @@ -14,6 +14,6 @@ ## Étapes d’installation -1. Installer manuellement +1. Installer manuellement -2. Effectuer la configuration initiale (post-installation) +2. Effectuer la configuration initiale (post-installation) diff --git a/isp.md b/isp.md index d84d9e87..ba3f8626 100644 --- a/isp.md +++ b/isp.md @@ -1,12 +1,12 @@ # Internet service providers - Main configuration box + Main configuration box Here is a non-comprehensive list of internet service providers by country, which contains criteria about tolerance to self-hosting. A "no" may cause problems for using your server or may require you to make additional configuration changes. Status in brackets indicates the default behavior. -A list of French and Belgian ISPs is available on the [french page](/isp_fr). +A list of French and Belgian ISPs is available on the [french page](/isp). ### USA | Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP | diff --git a/isp_box_config.md b/isp_box_config.md index 465a82eb..883889c0 100644 --- a/isp_box_config.md +++ b/isp_box_config.md @@ -28,16 +28,16 @@ In your router admin interface, look for something like 'router configuration' o Opening the ports listed below is necessary for the various services available in YunoHost to work. For each of them, the 'TCP' forwarding is needed. Some interfaces refer to 'external' and 'internal' ports : these are the same in our case. * Web: 80 (HTTP), 443 (HTTPS) -* [SSH](/ssh_en): 22 -* [XMPP](/XMPP_en): 5222 (clients), 5269 (servers) -* [Email](/email_en): 25, 587 (SMTP), 993 (IMAP) +* [SSH](/ssh): 22 +* [XMPP](/XMPP): 5222 (clients), 5269 (servers) +* [Email](/email): 25, 587 (SMTP), 993 (IMAP) If you use both a modem and a router, then you need to do the following: 1. first on the modem (the box closest to the internet) create rules to forward the above ports to your router; 2. then on the router (the box between the modem and your devices) create rules to forward the above ports to the static IP address for your server.
- Some internet service providers block port 25 (mail SMTP) by default to fight spam. Some other ISP don't allow to use port 80/443 (web) freely, though it's less likely. Depending on the ISP, it might be possible to open them in the admin interface... Check [this page](isp_en) for more info. + Some internet service providers block port 25 (mail SMTP) by default to fight spam. Some other ISP don't allow to use port 80/443 (web) freely, though it's less likely. Depending on the ISP, it might be possible to open them in the admin interface... Check [this page](/isp) for more info.
## Automatic port forwarding / UPnP diff --git a/isp_box_config_es.md b/isp_box_config_es.md index dc239ef0..3d5b93f3 100644 --- a/isp_box_config_es.md +++ b/isp_box_config_es.md @@ -1,6 +1,6 @@ # Configurar la redirección de los puertos -Si te estás auto-alojando en casa y sin VPN, tienes que redirigirse los puertos de tu router (caja/box). Si quieres una explicación sencilla de lo que es y por qué necesitas redirigir los puertos, puedes echar un vistazo a [esta página](port_forwarding_es). [Esta página](https://www.testdevelocidad.es/configuraciones/abrir-correctamente-los-puertos-router/) también propone explicaciones detalladas sobre el funcionamiento de los puertos, y las etapas de configuración para un router genérico. +Si te estás auto-alojando en casa y sin VPN, tienes que redirigirse los puertos de tu router (caja/box). Si quieres una explicación sencilla de lo que es y por qué necesitas redirigir los puertos, puedes echar un vistazo a [esta página](/port_forwarding). [Esta página](https://www.testdevelocidad.es/configuraciones/abrir-correctamente-los-puertos-router/) también propone explicaciones detalladas sobre el funcionamiento de los puertos, y las etapas de configuración para un router genérico. ### 0. Diagnosticar los puertos abiertos @@ -29,12 +29,12 @@ En la interfaz de administración de tu router/caja/box, tienes que encontrar un Luego tienes que redirigir cada uno de los puertos listados a continuación hacia la IP local de tu router para que los varios servicios de Yunohost funcionen. Para cada uno de ellos, una redirección 'TCP' es necesaria. En algunas interfaces, tal vez encontrarás referencias a un puerto 'externo' y un puerto 'interno' : en nuestro caso, se trata del mismo número de puerto, que sea interno o externo. * Web: 80 (HTTP), 443 (HTTPS) -* [SSH](/ssh_es): 22 -* [XMPP](/XMPP_es): 5222 (clients), 5269 (servers) -* [Email](/email_es): 25, 587 (SMTP), 993 (IMAP) +* [SSH](/ssh): 22 +* [XMPP](/XMPP): 5222 (clients), 5269 (servers) +* [Email](/email): 25, 587 (SMTP), 993 (IMAP)
- Algunos proveedores de acceso a Internet bloquean el puerto 25 (mail SMTP) por defecto para luchar con el spam. Otros (más escasos) no permiten utilizar libremente los puertos 80/443. Dependiendo de tu proveedor, puede ser posible de abrir estos puertos en la interfaz... Ver [esta página](isp_es) por más informaciones. + Algunos proveedores de acceso a Internet bloquean el puerto 25 (mail SMTP) por defecto para luchar con el spam. Otros (más escasos) no permiten utilizar libremente los puertos 80/443. Dependiendo de tu proveedor, puede ser posible de abrir estos puertos en la interfaz... Ver [esta página](/isp) por más informaciones.
## Redirección automática / UPnP diff --git a/isp_box_config_fr.md b/isp_box_config_fr.md index 866b38b0..31b38b1d 100644 --- a/isp_box_config_fr.md +++ b/isp_box_config_fr.md @@ -1,6 +1,6 @@ # Configurer la redirection des ports -Si vous vous auto-hébergez à la maison et sans VPN, il vous faut rediriger les ports de votre routeur ("machin-box"). Si vous souhaitez une explication courte de ce qu'est et pourquoi vous avez besoin de rediriger les ports, vous pouvez jeter un œil à [cette page-ci](port_forwarding_fr). [Cette page-là](https://craym.eu/tutoriels/utilitaires/ouvrir_les_ports_de_sa_box.html) propose également des explications détaillées sur le fonctionnement des ports, et les étapes de configuration pour différents routeurs. +Si vous vous auto-hébergez à la maison et sans VPN, il vous faut rediriger les ports de votre routeur ("machin-box"). Si vous souhaitez une explication courte de ce qu'est et pourquoi vous avez besoin de rediriger les ports, vous pouvez jeter un œil à [cette page-ci](/port_forwarding). [Cette page-là](https://craym.eu/tutoriels/utilitaires/ouvrir_les_ports_de_sa_box.html) propose également des explications détaillées sur le fonctionnement des ports, et les étapes de configuration pour différents routeurs. ### 0. Diagnostiquer les ports ouverts @@ -33,12 +33,12 @@ nom diffère suivant le type / marque de la box... Il vous faut ensuite rediriger chacun des ports listés ci-dessous vers l'IP locale de votre serveur pour que les différents services de YunoHost fonctionnent. Pour chacun d'eux, une redirection 'TCP' est nécessaire. Certains interfaces font références à un port 'externe' et un port 'interne' : dans notre cas il s'agit du même. * Web: 80 (HTTP), 443 (HTTPS) -* [SSH](/ssh_fr): 22 -* [XMPP](/XMPP_fr): 5222 (clients), 5269 (servers) -* [Email](/email_en): 25, 587 (SMTP), 993 (IMAP) +* [SSH](/ssh): 22 +* [XMPP](/XMPP): 5222 (clients), 5269 (servers) +* [Email](/email): 25, 587 (SMTP), 993 (IMAP)
- Certains fournisseurs d'accès internet bloquent le port 25 (mail SMTP) par défaut pour combattre le spam. D'autres (plus rares) ne permettent pas d'utiliser librement les ports 80/443. En fonction de votre FAI, il peut être possible d'ouvrir ces ports dans l'interface... Voir [cette page](isp_fr) pour plus d'informations. + Certains fournisseurs d'accès internet bloquent le port 25 (mail SMTP) par défaut pour combattre le spam. D'autres (plus rares) ne permettent pas d'utiliser librement les ports 80/443. En fonction de votre FAI, il peut être possible d'ouvrir ces ports dans l'interface... Voir [cette page](/isp) pour plus d'informations.
## Redirection automatique / UPnP diff --git a/isp_es.md b/isp_es.md index e0c42cf0..fed12f76 100644 --- a/isp_es.md +++ b/isp_es.md @@ -1,8 +1,8 @@ # Proveedores de acceso a Internet - Configuración general del router + Configuración general del router -Aquí tienes una lista (no exhaustiva) de proveedores de acceso a Internet por país, con criterios de compatibilidad con el [self-hosting](selfhosting_es). +Aquí tienes una lista (no exhaustiva) de proveedores de acceso a Internet por país, con criterios de compatibilidad con el [self-hosting](/selfhosting). Un « **no** » puede implicar problemas de utilización del servidor o puede obligarte a hacer configuraciones adicionales. El estatus entre paréntesis indica el comportamiento por defecto. @@ -14,14 +14,14 @@ Todos los proveedores de acceso a Internet [miembros de la Federación French Da * ✔ : sí * ✘ : no -| Proveedor de acceso | OVH | [Free](/isp_free_fr) | [SFR](/isp_sfr_fr) | [Orange](/isp_orange_fr) | Bouygues
Télécom | Darty | +| Proveedor de acceso | OVH | [Free](/isp_free) | [SFR](/isp_sfr) | [Orange](/isp_orange) | Bouygues
Télécom | Darty | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | **Box/router** | Personal/OVH Télécom | Freebox | Neufbox | Livebox | Bbox | Dartybox | | **[UPnP](https://fr.wikipedia.org/wiki/Universal_Plug_and_Play)** | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| **[Puerto 25 que se abre](email_fr)**
(cerrado por defecto) | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | +| **[Puerto 25 que se abre](/email)**
(cerrado por defecto) | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | | **[Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning)** | ✔ | ✔ | ✔/✘ | ✘ | ✔ | ✔ | | **[Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup)
personalizable ** | ✔ | ✔ (excepto IPv6) | … | ✘ | ✘ | ✘ | -| **[IP fija](/dns_dynamicip_es)** | ✔ | ✔ | ✔/✘ | ✘ | ✔ | ✔ | +| **[IP fija](/dns_dynamicip)** | ✔ | ✔ | ✔/✘ | ✘ | ✔ | ✔ | | **[IPv6](https://fr.wikipedia.org/wiki/IPv6)** | ✔ | ✔ | ✔ | ✔ | … | … | | **[No listado en el DUL](https://en.wikipedia.org/wiki/Dialup_Users_List)** | … | ✘ | … | … | … | … | Para obtener una lista más completa y precisa, refiérete a la muy buena documentación (fr) de [wiki.auto-hebergement.fr](http://wiki.auto-hebergement.fr/fournisseurs/fai#d%C3%A9tail_des_fai). @@ -30,7 +30,7 @@ Para obtener una lista más completa y precisa, refiérete a la muy buena docume ### Bélgica -| Proveedor de acceso | Box/ router | uPnP activable | [Puerto 25 que se abre](email_fr)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fija | +| Proveedor de acceso | Box/ router | uPnP activable | [Puerto 25 que se abre](/email)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fija | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | **Proximus** | BBox2 | sí (activado) | sí | **no** | **no** | **no** | | | BBox3 | sí (activado) | sí | **no** | **no** | **no** | @@ -40,7 +40,7 @@ Para obtener una lista más completa y precisa, refiérete a la muy buena docume ### Costa de Marfil -| Proveedor de acceso | Box/ router | uPnP activable | [Puerto 25 que se abre](email_fr)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fija | +| Proveedor de acceso | Box/ router | uPnP activable | [Puerto 25 que se abre](/email)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fija | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | **Orange** | Livebox2 | sí (activado) | no | **no** | **no** | **no** | | **Moov** | | sí (activado) | | | | | diff --git a/isp_fr.md b/isp_fr.md index 1e8a3900..35e6d8be 100644 --- a/isp_fr.md +++ b/isp_fr.md @@ -1,8 +1,8 @@ # Fournisseurs d’accès à Internet - Configuration générale box + Configuration générale box -Voici une liste non exhaustive des fournisseurs d’accès à Internet par pays, contenant les critères de tolérance à l’[auto-hébergement](selfhosting_fr). +Voici une liste non exhaustive des fournisseurs d’accès à Internet par pays, contenant les critères de tolérance à l’[auto-hébergement](/selfhosting). Un « **non** » peut entraîner des problèmes d’utilisation de votre serveur ou peut vous obliger à faire des configurations supplémentaires. Le statut entre parenthèses indique le comportement par défaut. @@ -12,14 +12,14 @@ Tous les fournisseurs d’accès à Internet [membres de la Fédération French * ✔ : oui * ✘ : non -| Fournisseur d’accès | OVH | [Free](/isp_free_fr) | [SFR](/isp_sfr_fr) | [Orange](/isp_orange_fr) | Bouygues
Télécom | Darty | +| Fournisseur d’accès | OVH | [Free](/isp_free) | [SFR](/isp_sfr) | [Orange](/isp_orange) | Bouygues
Télécom | Darty | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | **Box/routeur** | Personnel/OVH Télécom | Freebox | Neufbox | Livebox | Bbox | Dartybox | | **[UPnP](https://fr.wikipedia.org/wiki/Universal_Plug_and_Play)** | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| **[Port 25 ouvrable](email_fr)**
(fermé par défaut) | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | +| **[Port 25 ouvrable](/email)**
(fermé par défaut) | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | | **[Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning)** | ✔ | ✔ | ✔/✘ | ✔ (depuis la Livebox 4) | ✔ | ✔ | | **[Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup)
personnalisable ** | ✔ | ✔ (sauf IPv6) pas de support | … | ✘ | ✘ | ✘ | -| **[IP fixe](/dns_dynamicip_fr)** | ✔ | ✔ | ✔/✘ | ✘ | ✔ | ✔ | +| **[IP fixe](/dns_dynamicip)** | ✔ | ✔ | ✔/✘ | ✘ | ✔ | ✔ | | **[IPv6](https://fr.wikipedia.org/wiki/IPv6)** | ✔ | ✔ | ✔ | ✔ | … | … | | **[Non listé sur le DUL](https://en.wikipedia.org/wiki/Dialup_Users_List)** | … | ✘ | … | … | … | … | Pour une liste plus complète et précise, référez-vous à la très bonne documentation de [wiki.auto-hebergement.fr](http://wiki.auto-hebergement.fr/fournisseurs/fai#d%C3%A9tail_des_fai). @@ -28,7 +28,7 @@ Pour une liste plus complète et précise, référez-vous à la très bonne docu ### Belgique -| Fournisseur d’accès | Box/ routeur | uPnP activable | [Port 25 ouvrable](email_fr)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fixe | +| Fournisseur d’accès | Box/ routeur | uPnP activable | [Port 25 ouvrable](/email)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fixe | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | **Proximus** | BBox2 | oui (activé) | oui | **non** | **non** | **non** | | | BBox3 | oui (activé) | oui | **non** | **non** | **non** | @@ -38,7 +38,7 @@ Pour une liste plus complète et précise, référez-vous à la très bonne docu ### Côte d'Ivoire -| Fournisseur d’accès | Box/ routeur | uPnP activable | [Port 25 ouvrable](email_fr)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fixe | +| Fournisseur d’accès | Box/ routeur | uPnP activable | [Port 25 ouvrable](/email)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fixe | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | | **Orange** | Livebox2 | oui (activé) | non | **non** | **non** | **non** | | **Moov** | | oui (activé) | | | | | diff --git a/isp_free_fr.md b/isp_free_fr.md index 59242ee9..58ebb590 100644 --- a/isp_free_fr.md +++ b/isp_free_fr.md @@ -1,6 +1,6 @@ # Free -*Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp_fr)**.* +*Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp)**.* #### Accès à l’administration de la box (v5/v6) @@ -14,13 +14,13 @@ Allez à l’adresse : [mafreebox.free.fr](http://mafreebox.free.fr/) puis authe #### Ouverture des ports -[Liste des ports à ouvrir](/isp_box_config_fr). +[Liste des ports à ouvrir](/isp_box_config). ##### Freebox ≤ v5 Cela se passe dans la section *Ma Freebox / Configurer mon routeur*. Il faut : -- Rediriger les [ports à ouvrir](/isp_box_config_fr) vers l'adresse locale de votre serveur YunoHost. +- Rediriger les [ports à ouvrir](/isp_box_config) vers l'adresse locale de votre serveur YunoHost. - Définir une DMZ vers votre serveur YunoHost. La présence conjointe de ces deux règles permettent d'accéder à votre serveur de l'extérieur comme de l'intérieur de votre réseau local. diff --git a/isp_orange_fr.md b/isp_orange_fr.md index 56cabf4d..1c80f9fe 100644 --- a/isp_orange_fr.md +++ b/isp_orange_fr.md @@ -1,5 +1,5 @@ # Orange -*Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp_fr)**.* +*Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp)**.* #### Le courrier électronique diff --git a/isp_sfr_fr.md b/isp_sfr_fr.md index a163878f..9b159b56 100644 --- a/isp_sfr_fr.md +++ b/isp_sfr_fr.md @@ -1,5 +1,5 @@ #SFR -*Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp_fr)**.* +*Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp)**.* #### Accès à l’administration de la box * Allez à cette adresse : http://192.168.1.1. * Authentifiez-vous, soit en appuyant sur le bouton de la box pendant 5 secondes soit avec les identifiants d’administration. diff --git a/packaging_apps.md b/packaging_apps.md index dee9331a..5da09827 100644 --- a/packaging_apps.md +++ b/packaging_apps.md @@ -6,7 +6,7 @@ The purpose of this document is to teach you how to package an application for Y 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; -* A testing [virtual machine or a distant server](/install_en), or a development environement, [ynh-dev](https://github.com/yunohost/ynh-dev) or [VirtualBox](/packaging_apps_virtualbox_fr), to package and test the package. +* 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 A YunoHost package is composed of: @@ -21,21 +21,21 @@ A YunoHost package is composed of: feel free to use it as a framework. ## Manifest -Manifest +Manifest ## Scripts -Scripts +Scripts ### Architecture and arguments Since YunoHost has a unified architecture, you will be able to guess most of the settings you need. But if you need variable ones, like the domain or web path, you will have to ask the administrator at installation (see `arguments` section in the manifest above). -Arguments management +Arguments management ### Nginx configuration -Nginx configuration +Nginx configuration ### Multi-instance -Multi-instance +Multi-instance ### Hooks YunoHost provides a hook system, which is accessible via the packager's script callbacks in command line. @@ -46,7 +46,7 @@ The scripts have to be placed in the `hooks` repository at the root of the YunoH Take a look at the [Nextcloud package](https://github.com/YunoHost-Apps/nextcloud_ynh/) for a working example. ### Helpers -Helpers +Helpers ### Registering a log file @@ -85,7 +85,7 @@ In order to test your package, you can execute your script standalone as `admin` su - admin -c "/bin/bash /path/to/my/script my_arg1 my_arg2" ``` -Or you can use [command line](/commandline_en): +Or you can use [command line](/commandline): ```bash yunohost app install /path/to/my/app/package ``` @@ -97,14 +97,14 @@ yunohost app install https://github.com/author/my_app_package.git ### Packaging best practices Here is a list of best practices for application install scripts: * scripts should use `sudo cp -a ../sources/. $final_path` instead of `sudo cp -a ../sources/* $final_path`; -* install script must contain support in case of script errors to delete residuals files thanks to `set -e` and [trap](packaging_apps_trap_fr); +* install script must contain support in case of script errors to delete residuals files thanks to `set -e` and [trap](/packaging_apps_trap); * install script should use the command-line method instead of calls to curl through web install form; * install script should save install answers; * application sources should be checked with a control sum (sha256, sha1 or md5) or a PGP signature; * scripts should be tested on Debian Stretch 32 bits, 64 bits and ARM architectures; * backup and restore scripts should be present and functional. -To be define the quality of a package, it'll obtained a [level](packaging_apps_levels_fr), determined according to somes criteria of installation and according to respect to [package guidelines](packaging_apps_guidelines). +To be define the quality of a package, it'll obtained a [level](/packaging_apps_levels), determined according to somes criteria of installation and according to respect to [package guidelines](packaging_apps_guidelines). ### Package script checker Package checker @@ -124,7 +124,7 @@ A continuous integration server is available for packagers who want to test thei * Publishing a [post on the Forum](https://forum.yunohost.org/) with the [`App integration` category](https://forum.yunohost.org/c/app-integration), to ask for testing and feedback on your application. -* If your application is released under a free software license, you may ask the YunoHost app team to integrate your application to the [app repository](https://github.com/YunoHost/apps) (c.f. also the [app list](apps_en)). You can add your application even if it is not stable or working yet : the current state can be specified to `notworking`, `inprogress`, or `working`. +* If your application is released under a free software license, you may ask the YunoHost app team to integrate your application to the [app repository](https://github.com/YunoHost/apps) (c.f. also the [app list](/apps)). You can add your application even if it is not stable or working yet : the current state can be specified to `notworking`, `inprogress`, or `working`. * If your application is *not* free software, then in the future, a non-official list might be created to handle them but is non-existent yet. diff --git a/packaging_apps_arguments_management.md b/packaging_apps_arguments_management.md index e967af6b..130e3de4 100644 --- a/packaging_apps_arguments_management.md +++ b/packaging_apps_arguments_management.md @@ -1,4 +1,4 @@ -Application packaging +Application packaging ## Arguments management #### Retrieve arguments in the install script from manifest diff --git a/packaging_apps_arguments_management_fr.md b/packaging_apps_arguments_management_fr.md index 28471773..5d66e707 100644 --- a/packaging_apps_arguments_management_fr.md +++ b/packaging_apps_arguments_management_fr.md @@ -1,4 +1,4 @@ -Packaging d’application +Packaging d’application ## Gestion des arguments #### Récupérer les arguments du manifeste dans le script d’installation diff --git a/packaging_apps_fr.md b/packaging_apps_fr.md index 7e06bae8..df480230 100644 --- a/packaging_apps_fr.md +++ b/packaging_apps_fr.md @@ -6,10 +6,10 @@ Ce document a pour but de vous apprendre à packager une application pour YunoHo 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 ; -* Une [machine virtuelle ou sur un serveur distant](/install_fr) ou un environnement de développement, [ynh-dev](https://github.com/yunohost/ynh-dev) ou [VirtualBox](/packaging_apps_virtualbox_fr), pour packager et tester son paquet. +* 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. -Si vous ne comprenez pas ces prérequis, ou si vous ne savez pas comment écrire du code, consulter d'abord l'[introduction au packaging](/packaging_apps_start_fr). +Si vous ne comprenez pas ces prérequis, ou si vous ne savez pas comment écrire du code, consulter d'abord l'[introduction au packaging](/packaging_apps_start). ### Contenu Un paquet YunoHost est composé : @@ -23,27 +23,27 @@ Un paquet YunoHost est composé : Paquet de base n’hésitez pas à vous en servir comme base de travail. ## Manifeste -Manifeste +Manifeste ## Les scripts -Scripts +Scripts ### Architecture et arguments Comme les instances de YunoHost possèdent une architecture unifiée, vous serez capable de deviner la plupart des réglages nécessaires. Mais si vous avez besoin de réglages spécifiques, comme le nom de domaine ou un chemin web pour configurer l’application, vous devrez les demander aux administrateurs lors de l’installation (voir la section `arguments` dans le § **Manifeste** ci-dessus). -Gestion des arguments +Gestion des arguments ### Configuration Nginx -Configuration Nginx +Configuration Nginx ### Multi-instance -Multi-instance +Multi-instance ### Hooks -Hooks +Hooks ### Commandes pratiques -Commandes pratiques +Commandes pratiques ### Référencement des logs Dans de nombreuses situations, vous pouvez vouloir indexer un fichier de log pour qu'il soit affiché dans la webadmin. Pour indexer un log, il faut créer un fichier d'indexation dans `/var/log/yunohost/categories/app/APPNAME.yml`. @@ -79,14 +79,14 @@ Ces informations seront utilisées pour permettre de filtrer les logs en relatio ### Améliorer la qualité du paquet d’installation Vous trouverez ci-dessous une liste des points à vérifier concernant la qualité de vos scripts : * Vos scripts utilisent bien `sudo cp -a ../sources/. $final_path` plutôt que `sudo cp -a ../sources/* $final_path` ; -* Votre script d’installation contient une gestion en cas d’erreurs du script pour supprimer les fichiers résiduels à l’aide de `set -e` et de [trap](/packaging_apps_trap_fr) ; +* Votre script d’installation contient une gestion en cas d’erreurs du script pour supprimer les fichiers résiduels à l’aide de `set -e` et de [trap](/packaging_apps_trap) ; * Votre script d’installation utilise une méthode d’installation en ligne de commande plutôt qu’un appel curl via un formulaire web d’installation ; * Votre script d’installation enregistre les réponses de l’utilisateur ; * Vous avez vérifié les sources de l’application avec une somme de contrôle (sha256, sha1 ou md5) ou une signature PGP ; * Vos scripts ont été testés sur Debian Stretch 32 bits, 64 bits et ARM ; * Les scripts backup et restore sont présents et fonctionnels. -Pour mesurer la qualité d'un paquet, celui-ci obtiendra un [niveau](packaging_apps_levels_fr), déterminé en fonction de divers critères d'installation et selon le respect des [règles de packaging](packaging_apps_guidelines_fr). +Pour mesurer la qualité d'un paquet, celui-ci obtiendra un [niveau](/packaging_apps_levels), déterminé en fonction de divers critères d'installation et selon le respect des [règles de packaging](/packaging_apps_guidelines). ### Script de vérification du paquet Vérificateur de paquets @@ -106,7 +106,7 @@ Un serveur d'intégration continue est a disposition des packagers désirant tes * Demandez des tests et des retours sur votre application en publiant un [post sur le Forum](https://forum.yunohost.org/) dans la [catégorie `App integration`](https://forum.yunohost.org/c/app-integration). -* Si votre paquet et l'application qu'il contient sont sous licence libre, faites une demande d’ajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) (voir aussi [la liste des apps](apps_fr)). Vous pouvez ajouter une application même si celle-ci n'est pour le moment pas fonctionelle : l'état d'avancement peut être `notworking`, `inprogress` ou `working`. +* Si votre paquet et l'application qu'il contient sont sous licence libre, faites une demande d’ajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) (voir aussi [la liste des apps](/apps)). Vous pouvez ajouter une application même si celle-ci n'est pour le moment pas fonctionelle : l'état d'avancement peut être `notworking`, `inprogress` ou `working`. * Si votre application n'est *pas* sous licence libre, il se peut qu'une liste non-officielle soit créée pour gérer ces applications. Ce n'est pour l'instant pas le cas. diff --git a/packaging_apps_guidelines.md b/packaging_apps_guidelines.md index 0c606a94..41fe5afb 100644 --- a/packaging_apps_guidelines.md +++ b/packaging_apps_guidelines.md @@ -164,7 +164,7 @@ Adding an app to the [YunoHost-Apps organization](https://github.com/YunoHost-Ap It is also a way to quickly deploy a security patch if necessary in the event that the maintainer is unavailable. -Transfer Procedure: Ask the [chat room](chat_rooms_en) to be invited to the organization by providing the name of their GitHub account. +Transfer Procedure: Ask the [chat room](/chat_rooms) to be invited to the organization by providing the name of their GitHub account. Once the invitation is accepted, [transfer its deposit to the organization by following this tutorial](https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/# Transferring-a-repository-to-another-user-account-or-to-an-organization). #### YEP 1.8 @@ -221,7 +221,7 @@ Keep your code as easy as possible, keep everything a script needs directly into #### Stabilize an app #### YEP 2.1 ##### Respect the manifest format | validated | Home | INPROGRESS | -The manifest allows to describe an app so that YunoHost can apply the good treatments. For more information see [dedicated documentation](https://yunohost.org/#/packaging_apps_manifest). +The manifest allows to describe an app so that YunoHost can apply the good treatments. For more information see [dedicated documentation](/packaging_apps_manifest). #### YEP 2.2 ##### Using bash for main scripts | validated | Home | WORKING | @@ -287,7 +287,7 @@ It is advisable to make the scripts as generic as possible, a good way to do thi In order to simplify packaging, standardize practices, avoid errors and increase the lifetime of a script vis-à-vis future versions of YunoHost. A set of helpers to do many actions is proposed. For more information : -* consult [helpers documentation](https://yunohost.org/#/packaging_apps_helpers) +* consult [helpers documentation](/packaging_apps_helpers) * explore [helpers directory](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d) #### YEP 2.13 diff --git a/packaging_apps_guidelines_fr.md b/packaging_apps_guidelines_fr.md index 4048f777..847367d4 100644 --- a/packaging_apps_guidelines_fr.md +++ b/packaging_apps_guidelines_fr.md @@ -165,7 +165,7 @@ L'ajout d'une app sur l'[organisation YunoHost-Apps](https://github.com/YunoHost C'est aussi un moyen pour permettre de déployer rapidement un correctif de sécurité si nécessaire dans le cas où le mainteneur ne serait pas disponible. -Procédure de transfert : demander sur le [salon de discussion `Apps`](chat_rooms_fr) à être invité à l’organisation en lui fournissant le nom de son compte GitHub. +Procédure de transfert : demander sur le [salon de discussion `Apps`](/chat_rooms) à être invité à l’organisation en lui fournissant le nom de son compte GitHub. Une fois l’invitation acceptée, [transférer son dépôt sur l’organisation en suivant ce tutoriel](https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/#transferring-a-repository-to-another-user-account-or-to-an-organization). #### YEP 1.8 @@ -222,7 +222,7 @@ Gardez votre code aussi simple que possible, gardez tout ce dont un script a bes #### Stabiliser une app #### YEP 2.1 ##### Respecter le format du manifeste | validé | auto | INPROGRESS | -Le manifeste permet de décrire une app afin que YunoHost puisse lui appliquer les bons traitements. Pour plus d'information voir la [documentation dédiée](https://yunohost.org/#/packaging_apps_manifest). +Le manifeste permet de décrire une app afin que YunoHost puisse lui appliquer les bons traitements. Pour plus d'information voir la [documentation dédiée](/packaging_apps_manifest). #### YEP 2.2 ##### Utiliser bash pour les scripts principaux | validé | auto | WORKING | @@ -289,7 +289,7 @@ Il est conseillé de rendre les scripts le plus générique possible, un bon moy Afin de simplifier le packaging, d'uniformiser les pratiques, d'éviter les erreurs et d'augmenter la durée de vie d'un script vis-à-vis des futures versions de YunoHost. Un ensemble de helpers permettant de faire de nombreuses actions est proposé. Pour plus d'informations : -* consulter [la documentation des helpers](https://yunohost.org/#/packaging_apps_helpers_fr) +* consulter [la documentation des helpers](/packaging_apps_helpers) * explorer [le répertoire des helpers](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d) #### YEP 2.13 diff --git a/packaging_apps_hooks_fr.md b/packaging_apps_hooks_fr.md index 76578e28..c81dc654 100644 --- a/packaging_apps_hooks_fr.md +++ b/packaging_apps_hooks_fr.md @@ -115,7 +115,7 @@ backup_name=$1 ##### `post_app_install`, `post_app_upgrade`, `post_app_remove` et `post_app_change_url` -Les variables utilisables dans ces scripts sont les mêmes que celles disponibles dans [les scripts d'actions associés](/packaging_apps_scripts_fr). +Les variables utilisables dans ces scripts sont les mêmes que celles disponibles dans [les scripts d'actions associés](/packaging_apps_scripts). Example: pour `post_app_install` les variables sont les mêmes que pour le script `install` diff --git a/packaging_apps_manifest.md b/packaging_apps_manifest.md index d757bdba..f4407aa1 100644 --- a/packaging_apps_manifest.md +++ b/packaging_apps_manifest.md @@ -1,4 +1,4 @@ -Application packaging +Application packaging ## Manifest The `manifest.json` file defines the app's constants, a bunch of values that YunoHost needs to identify the app and install it correctly. It looks like this: @@ -71,7 +71,7 @@ The `manifest.json` file defines the app's constants, a bunch of values that Yun - **requirements**: dependency of the application package to a Debian YunoHost package version. For instance, "yunohost": ">> 2.3.12", `yunohost` package version must be up to `2.3.12`. -* [**multi_instance**](packaging_apps_multiinstance_en): it defines app's ability to be installed multiple times. +* [**multi_instance**](/packaging_apps_multiinstance): it defines app's ability to be installed multiple times. * **services**: services needed by the application among `nginx`, `php5-fpm`, `mysql`, `uwsgi`, `metronome`, `postfix`, `dovecot`… diff --git a/packaging_apps_manifest_fr.md b/packaging_apps_manifest_fr.md index 72791575..50a9c611 100644 --- a/packaging_apps_manifest_fr.md +++ b/packaging_apps_manifest_fr.md @@ -1,4 +1,4 @@ -Packaging d’application +Packaging d’application ## Manifeste Le fichier `manifest.json` définit les constantes de l’application, un ensemble de valeurs dont YunoHost a besoin pour identifier l’application et l’installer correctement. Voici un exemple : @@ -71,7 +71,7 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb - **requirements** : dépendance du paquet de l’application à la version d’un paquet Debian de YunoHost. Par exemple : "yunohost": ">> 2.3.12", le paquet `yunohost` doit être de version supérieur à `2.3.12`. -* [**multi_instance**](packaging_apps_multiinstance_fr) : capacité d’une application d’être installée plusieurs fois. +* [**multi_instance**](/packaging_apps_multiinstance) : capacité d’une application d’être installée plusieurs fois. * **services** : liste des services nécessaires au fonctionnement de l’application. `nginx`, `php5-fpm`, `mysql`, `uwsgi`, `metronome`, `postfix`, `dovecot`… diff --git a/packaging_apps_multiinstance.md b/packaging_apps_multiinstance.md index 7f847ba5..03bc6680 100644 --- a/packaging_apps_multiinstance.md +++ b/packaging_apps_multiinstance.md @@ -1,4 +1,4 @@ -Application packaging +Application packaging ### Multi-instance Multi-instance is application capacity to be installed several times. @@ -6,7 +6,7 @@ Multi-instance is application capacity to be installed several times. #### Scripts When YunoHost installs the application, it passes `$YNH_APP_INSTANCE_NAME` var to the script, set to value `id__n` with the application `id` coming from the manifest and `n` being an integer incremented each time a new instance of the application is installed. -**E.g.** in the roundcube script, database is called `roundcube`, the install directory `roundcube` and the [Nginx configuration](packaging_apps_nginx_conf_en) `roundcube`. This way, the second instance of roundcube will not conflict with the first one, and will be installed in the `roundcube__2` database, in the `roundcube__2`directory, and with the `roundcube__2` Nginx configuration. +**E.g.** in the roundcube script, database is called `roundcube`, the install directory `roundcube` and the [Nginx configuration](/packaging_apps_nginx_conf) `roundcube`. This way, the second instance of roundcube will not conflict with the first one, and will be installed in the `roundcube__2` database, in the `roundcube__2`directory, and with the `roundcube__2` Nginx configuration. Retrieve app identifier (including the multi-instance id): ```bash @@ -14,7 +14,7 @@ app=$YNH_APP_INSTANCE_NAME ``` #### Manifest -Set `multi_instance` variable to `true` in the [manifest](packaging_apps_manifest_en): +Set `multi_instance` variable to `true` in the [manifest](/packaging_apps_manifest): ```json "multi_instance": true, ``` diff --git a/packaging_apps_multiinstance_fr.md b/packaging_apps_multiinstance_fr.md index d652343a..58a6809b 100644 --- a/packaging_apps_multiinstance_fr.md +++ b/packaging_apps_multiinstance_fr.md @@ -1,4 +1,4 @@ -Packaging d’application +Packaging d’application ### Multi-instances Le multi-instance est la capacité d’une application à être installée plusieurs fois. @@ -6,7 +6,7 @@ Le multi-instance est la capacité d’une application à être installée plusi #### Scripts Lorsque YunoHost installe l’application, il passe au script dans la variable `$YNH_APP_INSTANCE_NAME` la valeur `id__n` avec l’identifiant de l’application `id` provenant du manifeste et `n` un nombre incrémentée à chaque nouvelle instance de l’application. -**Par exemple** : dans le script roundcube, il faut nommer la base de données `roundcube`, le dossier d’installation `roundcube` et la [configuration Nginx](packaging_apps_nginx_conf_fr) `roundcube`. De cette manière, la seconde installation de roundcube ne rentrera pas en conflit avec la première, et sera installée dans la base de données `roundcube__2`, dans le répertoire `roundcube__2`, et avec la configuration Nginx `roundcube__2`. +**Par exemple** : dans le script roundcube, il faut nommer la base de données `roundcube`, le dossier d’installation `roundcube` et la [configuration Nginx](/packaging_apps_nginx_conf) `roundcube`. De cette manière, la seconde installation de roundcube ne rentrera pas en conflit avec la première, et sera installée dans la base de données `roundcube__2`, dans le répertoire `roundcube__2`, et avec la configuration Nginx `roundcube__2`. Récupération de l'identifiant de l'app (incluant l'id multi-instance) : @@ -15,7 +15,7 @@ app=$YNH_APP_INSTANCE_NAME ``` #### Manifeste -Passer la variable `multi_instance` à `true` dans le [manifeste](packaging_apps_manifest_fr) : +Passer la variable `multi_instance` à `true` dans le [manifeste](/packaging_apps_manifest) : ```json "multi_instance": true, ``` diff --git a/packaging_apps_scripts.md b/packaging_apps_scripts.md index 78592f57..7d5c4a88 100644 --- a/packaging_apps_scripts.md +++ b/packaging_apps_scripts.md @@ -1,4 +1,4 @@ -Application packaging +Application packaging ## Scripts diff --git a/packaging_apps_scripts_fr.md b/packaging_apps_scripts_fr.md index d17dde86..8854f287 100644 --- a/packaging_apps_scripts_fr.md +++ b/packaging_apps_scripts_fr.md @@ -1,4 +1,4 @@ -Packaging d’application +Packaging d’application ## Les scripts diff --git a/packaging_apps_start.md b/packaging_apps_start.md index 9cbecf34..7f4e99de 100644 --- a/packaging_apps_start.md +++ b/packaging_apps_start.md @@ -43,7 +43,7 @@ Scripts used during application packaging are simply a series of bash commands. A [bash](https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29) command is a line of text that will be interpreted by the computer and will produce a result. This is commonly refered to as a command line. -You can ony interact with your server through the command line as it does not provide a graphical interface. Usual access is through [ssh](/ssh_en). +You can ony interact with your server through the command line as it does not provide a graphical interface. Usual access is through [ssh](/ssh). Package scripts are therefore a series of bash commands as if you had typed them directly in the ssh console. @@ -53,7 +53,7 @@ To know what you can write in a bash script, you should start reading this [simp Before starting the packaging process, you need to successfully install the application. The script will only perform what you instruct it to do. -Once completed, you need to read a little bit more documentation about application packaging. [This one is more technical](/packaging_apps_en) but now you should understand all the wizardry. +Once completed, you need to read a little bit more documentation about application packaging. [This one is more technical](/packaging_apps) but now you should understand all the wizardry. ### HELP! NEED BACKUP! diff --git a/packaging_apps_start_fr.md b/packaging_apps_start_fr.md index cb64df10..0d8c3ce8 100644 --- a/packaging_apps_start_fr.md +++ b/packaging_apps_start_fr.md @@ -37,7 +37,7 @@ Les scripts d'un package d'application sont simplement des commandes bash les un #### ... Et c'est quoi une commande bash ? Une commande [bash](https://fr.wikipedia.org/wiki/Bourne-Again_shell) c'est une ligne de texte qui sera interprétée et produira un résultat. C'est ce qu'on a l'habitude d'appeler la ligne de commande. -Or puisque votre serveur, sur lequel est installé YunoHost, ne dispose pas d'une interface graphique, vous n'avez que la ligne de commande de disponible. Vous l'atteignez en général après vous être connecté avec [ssh](/ssh_fr). +Or puisque votre serveur, sur lequel est installé YunoHost, ne dispose pas d'une interface graphique, vous n'avez que la ligne de commande de disponible. Vous l'atteignez en général après vous être connecté avec [ssh](/ssh). Les scripts d'un package ne sont donc qu'une succession de commandes bash, comme si vous les aviez tapées directement dans la console ssh pour installer l'application. @@ -47,7 +47,7 @@ Pour savoir quoi écrire dans un script bash, je vous conseille de commencer par Avant d'envisager de faire un package d'application, il faut réussir à installer correctement la dites application. Car le script ne fera que ce que vous lui direz de faire. -Ensuite, il faut aller lire (et oui encore) la documentation sur le packaging, mais la vrai cette fois, [celle qui emploie des mots bizarres](/packaging_apps_fr). +Ensuite, il faut aller lire (et oui encore) la documentation sur le packaging, mais la vrai cette fois, [celle qui emploie des mots bizarres](/packaging_apps). Mais maintenant vous devriez les comprendre tout ces mots étranges. Mais heureusement, vous n'êtes pas seul pour affronter cette épreuve titanesque, il y a d'autres packageurs que vous pouvez venir rencontrer sur le [forum](https://forum.yunohost.org/c/apps-packaging) et sur le [salon de discussion](xmpp:apps@conference.yunohost.org?join). diff --git a/packaging_apps_virtualbox_fr.md b/packaging_apps_virtualbox_fr.md index 1aadff27..e046139f 100644 --- a/packaging_apps_virtualbox_fr.md +++ b/packaging_apps_virtualbox_fr.md @@ -9,7 +9,7 @@ Il y a principalement deux raisons pour préférer l'usage d'un serveur virtuel - Vous pouvez torturer à loisir un serveur virtuel sans courir le risque de le casser, puisque vous pourrez toujours restaurer un état précédent. Alors qu'il serait dommage de casser son propre serveur ! - Un serveur virtuel sera restauré avant de travailler dessus, pour garder en permanence un système sans résidus d'une précédente installation. Cela permet de se rapprocher au plus près d'une première installation par un utilisateur. -Nous parlerons ici de VirtualBox, pour son approche graphique facile à utiliser. Si vous préférez une interface en ligne de commande pour la gestion de la machine virtuelle, tournez-vous de préférence vers [ynh-dev](/dev_fr). +Nous parlerons ici de VirtualBox, pour son approche graphique facile à utiliser. Si vous préférez une interface en ligne de commande pour la gestion de la machine virtuelle, tournez-vous de préférence vers [ynh-dev](/dev). ## Installer VirtualBox @@ -20,12 +20,12 @@ Quel que soit votre système, il ne devrait pas être nécessaire d'installer l' ## Installer YunoHost sur VirtualBox -Suivez simplement la documentation idoine pour l'[installation sur VirtualBox](/install_on_virtualbox_fr) puis la documentation sur la [post-installation](/postinstall_fr). +Suivez simplement la documentation idoine pour l'[installation sur VirtualBox](/install_on_virtualbox) puis la documentation sur la [post-installation](/postinstall). Lors de la post-installation, il est inutile d'utiliser un nom de domaine en `.nohost.me` ou `.noho.st`, votre serveur virtuel ne sera pas accessible depuis l'extérieur de votre réseau local. Nous préférerons l'usage d'un faux nom de domaine qui restera cantonné au réseau local. Par exemple, `yunohost.packaging`. -Ce nom de domaine n'étant enregistré dans aucun serveur DNS, on l'enregistrera dans le fichier `hosts` de l'ordinateur qui y accédera. Voir la documentation sur le [DNS local](/dns_local_network_fr). +Ce nom de domaine n'étant enregistré dans aucun serveur DNS, on l'enregistrera dans le fichier `hosts` de l'ordinateur qui y accédera. Voir la documentation sur le [DNS local](/dns_local_network). Votre serveur virtuel est à présent installé. Avant de commencer à l'utiliser, nous allons voir comment créer un premier instantané et comment les utiliser. diff --git a/postinstall_es.md b/postinstall_es.md index 015515f4..7cb92da2 100644 --- a/postinstall_es.md +++ b/postinstall_es.md @@ -32,14 +32,14 @@ Es el nombre de dominio que permitirá el acceso a tu servidor así como al port * YunoHost te propone un DNS dinámico, proveando nombres de dominio del tipo *midominio.nohost.me*, *midominio.noho.st* o *midominio.ynh.fr*. Si no posees un nombre de dominio y/o que quieres aprovechar de este servicio, elige un dominio terminando con `.nohost.me`, `.noho.st` o `.ynh.fr`. Si no está utlizado ya, el dominio automáticamente estará vinculado a tu servidor Yunohost, y no tendrás más etapas de configuración. -* Si, en cambio, dominas la noción de **DNS**, puedes utilizar tu propio nombre de dominio. En este caso, refiérete a la página [yunohost.org/dns](/dns_es) por más información. +* Si, en cambio, dominas la noción de **DNS**, puedes utilizar tu propio nombre de dominio. En este caso, refiérete a la página [yunohost.org/dns](/dns) por más información. -* Si no tienes nombre de dominio y que no quieres uno que acabe con *.nohost.me*, *.noho.st* ou *.ynh.fr*, puedes utilizar un dominio local. Más información sobre cómo [acceder a tu servidor desde la red local](/dns_local_network_es). +* Si no tienes nombre de dominio y que no quieres uno que acabe con *.nohost.me*, *.noho.st* ou *.ynh.fr*, puedes utilizar un dominio local. Más información sobre cómo [acceder a tu servidor desde la red local](/dns_local_network). ### Contraseña de administración -Es la contraseña que permitirá acceder a la [interfaz de administración](/admin_es) de tu servidor. También podrás utilizarla para conectarte remotamente vía **SSH**, o vía **SFTP** para transferir archivos. +Es la contraseña que permitirá acceder a la [interfaz de administración](/admin) de tu servidor. También podrás utilizarla para conectarte remotamente vía **SSH**, o vía **SFTP** para transferir archivos. De manera general, ésta es la **llave de entrada en tu sistema**, pues piensa en **[elegirla atentamente](https://es.wikihow.com/escoger-una-contrase%C3%B1a-segura)**. @@ -54,10 +54,10 @@ Si llegas aquí después de haber visto “Yunohost fue instalado con éxito" de ### ¿ Y ahora ? -- Si te auto-alojas en casa y sin VPN, tienes que asegurarte que [los puertos de tu caja internet estén redirigidos](isp_box_config_es) ; +- Si te auto-alojas en casa y sin VPN, tienes que asegurarte que [los puertos de tu caja internet estén redirigidos](/isp_box_config) ; - Si utilizas tu propio nombre de dominio (i.e. que no sea un nohost.me / - noho.st), tienes que [configurar el nombre de dominio según la configuración recomendada](dns_config_es) ; -- Si no puedes configurar el nombre de dominio de momento (porque todavía no lo has comprado, ou porque es un dominio test), puedes solucionar temporalmente el problema con las instrucciones del último párrafo [aquí](dns_local_network_es) ; -- No te asustes demasiado por [la advertencia a propósito del certificado](certificate_es), tendrás la posibilidad de obtener un certificado Let's Encrypt :). -- Echa un vistazo a las [aplicaciones disponibles](apps_es) ! + noho.st), tienes que [configurar el nombre de dominio según la configuración recomendada](/dns_config) ; +- Si no puedes configurar el nombre de dominio de momento (porque todavía no lo has comprado, ou porque es un dominio test), puedes solucionar temporalmente el problema con las instrucciones del último párrafo [aquí](/dns_local_network) ; +- No te asustes demasiado por [la advertencia a propósito del certificado](/certificate), tendrás la posibilidad de obtener un certificado Let's Encrypt :). +- Echa un vistazo a las [aplicaciones disponibles](/apps) ! diff --git a/postinstall_fr.md b/postinstall_fr.md index d02cee89..7b912a8e 100644 --- a/postinstall_fr.md +++ b/postinstall_fr.md @@ -33,14 +33,14 @@ C’est le nom de domaine qui permettra l’accès à votre serveur ainsi qu’a * YunoHost propose un service de DNS dynamique fournissant des noms de domaine de type *mondomaine.nohost.me*, *mondomaine.noho.st* ou *mondomaine.ynh.fr*. Si vous ne possédez pas de nom de domaine et/ou que vous souhaitez profiter de ce service, choisissez un domaine se terminant en `.nohost.me`, `.noho.st` ou `.ynh.fr`. S'il n'est pas déjà utilisé, le domaine sera automatiquement rattaché à votre serveur YunoHost, et vous n’aurez pas d’étape de configuration supplémentaire. -* Si en revanche vous maîtrisez la notion de **DNS**, vous pouvez utiliser votre propre nom de domaine. Dans ce cas, référez-vous à la page [yunohost.org/dns](/dns_fr) pour plus d’informations. +* Si en revanche vous maîtrisez la notion de **DNS**, vous pouvez utiliser votre propre nom de domaine. Dans ce cas, référez-vous à la page [yunohost.org/dns](/dns) pour plus d’informations. -* Si vous n'avez pas de nom de domaine et que vous n'en voulez pas en *mondomaine.nohost.me*, *mondomaine.noho.st* ou *mondomaine.ynh.fr*, vous pouvez utilisez un domaine local. Plus d'infos sur comment [accéder à son serveur depuis le réseau local](/dns_local_network_fr). +* Si vous n'avez pas de nom de domaine et que vous n'en voulez pas en *mondomaine.nohost.me*, *mondomaine.noho.st* ou *mondomaine.ynh.fr*, vous pouvez utilisez un domaine local. Plus d'infos sur comment [accéder à son serveur depuis le réseau local](/dns_local_network). ### Mot de passe d’administration -C’est le mot de passe qui vous permettra d’accéder à l’[interface d’administration](/admin_fr) de votre serveur. Vous pourrez également l’utiliser pour vous connecter à distance via **SSH**, ou en **SFTP** pour transférer des fichiers. +C’est le mot de passe qui vous permettra d’accéder à l’[interface d’administration](/admin) de votre serveur. Vous pourrez également l’utiliser pour vous connecter à distance via **SSH**, ou en **SFTP** pour transférer des fichiers. De manière générale, c’est la **clé d’entrée à votre système**, pensez donc à la **[choisir attentivement](http://www.commentcamarche.net/faq/8275-choisir-un-bon-mot-de-passe)**. @@ -56,16 +56,16 @@ votre navigateur ou la ligne de commande, alors félicitations ! ### Et maintenant ? - Si vous vous auto-hébergez à la maison et sans VPN, il faut vous assurer - de bien [rediriger les ports de votre box internet](isp_box_config_fr) ; + de bien [rediriger les ports de votre box internet](/isp_box_config) ; - Si vous utilisez votre propre nom de domaine (c.-à-d. pas un nohost.me / noho.st), il vous faut [configurer le nom de domaine d'après la configuration - recommandée](dns_config_fr) ; + recommandée](/dns_config) ; - Si vous ne pouvez pas configurer le nom de domaine pour le moment (parce qu'il n'est pas encore acheté, ou parce que c'est un domaine de test), vous pouvez contourner temporairement le problème avec les instructions du dernier - paragraphe [ici](dns_local_network_fr) ; + paragraphe [ici](/dns_local_network) ; - Ne soyez pas trop effrayé par [l'avertissement à propos du - certificat](certificate_fr), vous aurez probablement la possibilité + certificat](/certificate), vous aurez probablement la possibilité d'installer un certificat Let's Encrypt :). -- Jetez un oeil aux [applications disponibles](apps_fr) ! +- Jetez un oeil aux [applications disponibles](/apps) ! diff --git a/security_fr.md b/security_fr.md index 16af38ea..8d9c94e2 100644 --- a/security_fr.md +++ b/security_fr.md @@ -11,9 +11,9 @@ Deux points sont néanmoins importants à noter : * Le fait que YunoHost soit un logiciel répandu augmente les chances de subir une attaque. Si une faille est découverte, elle peut potentiellement **toucher toutes les instances YunoHost** à un temps donné. Nous nous efforçons de corriger ces failles le plus rapidement possible, pensez donc à **mettre à jour régulièrement** votre système. -*Si vous avez besoin de conseil, n’hésitez pas à [nous demander](/help_fr).* +*Si vous avez besoin de conseil, n’hésitez pas à [nous demander](/help).* -*Pour discuter d'une faille de sécurité, contactez l'[équipe sécurité de YunoHost](/security_team_fr).* +*Pour discuter d'une faille de sécurité, contactez l'[équipe sécurité de YunoHost](/security_team).* --- @@ -178,7 +178,7 @@ sudo yunohost settings set security.ssh.compatibility -v modern ### Désactivation de l’API YunoHost -YunoHost est administrable via une **API HTTP**, servie sur le port 6787 par défaut (seulement sur `localhost`). Elle permet d’administrer une grande partie de votre serveur, et peut donc être utilisée à des **fins malveillantes**. La meilleure chose à faire si vous êtes habitués aux lignes de commande est de désactiver le service `yunohost-api`, et **utiliser la [ligne de commande](/commandline_fr)** en SSH. +YunoHost est administrable via une **API HTTP**, servie sur le port 6787 par défaut (seulement sur `localhost`). Elle permet d’administrer une grande partie de votre serveur, et peut donc être utilisée à des **fins malveillantes**. La meilleure chose à faire si vous êtes habitués aux lignes de commande est de désactiver le service `yunohost-api`, et **utiliser la [ligne de commande](/commandline)** en SSH. ```bash sudo systemctl disable yunohost-api diff --git a/selfhosting_ru.md b/selfhosting_ru.md index 07881197..40f82c63 100644 --- a/selfhosting_ru.md +++ b/selfhosting_ru.md @@ -4,11 +4,11 @@ **Свой хостинг** - это сервер, расположенный у вас дома и предназначенный для размещения информации для личных нужд. #### Обязанности администратора -Свой хостинг создает для вас определенные обязанности, если вы хотите разместить на нём сайт, [e-mail](email_en), а также запустить [систему мгновенных сообщений](XMPP), ваш сервер должен работать и оставаться онлайн 24/7. +Свой хостинг создает для вас определенные обязанности, если вы хотите разместить на нём сайт, [e-mail](/email), а также запустить [систему мгновенных сообщений](XMPP), ваш сервер должен работать и оставаться онлайн 24/7. Распространенные проблемы, по причине которых сервер может быть недоступен включают в себя: отсутствие электроэнергии, потеря доступа к Интернету, итд. -К примеру, если вы используете [e-mail](email_en) и ваш сервер по какой-то причине становится недоступен, отправленные на него сообщения будут отправлены снова только по прошествии от 3 до 7 дней. +К примеру, если вы используете [e-mail](/email) и ваш сервер по какой-то причине становится недоступен, отправленные на него сообщения будут отправлены снова только по прошествии от 3 до 7 дней. #### Минусы своего хостинга * Медленная передача данных. При использовании ADSL, скорость загрузки составляет 1/10 от скорости закачки. К примеру при скорости загрузки 1Мб/с скорость загрузки будет около 100Кб/с; diff --git a/ssh.md b/ssh.md index 05073dbe..68084a69 100644 --- a/ssh.md +++ b/ssh.md @@ -95,4 +95,4 @@ yunohost user ssh list-keys N.B. : `fail2ban` will ban your IP for 10 mimutes if you perform 5 failed login attempts. If you need to unban the IP, have a look at the page about [fail2ban](/fail2ban) -A more extensive discussion about security & SSH can be found on the [dedicated page](security_en). +A more extensive discussion about security & SSH can be found on the [dedicated page](/security). diff --git a/ssh_es.md b/ssh_es.md index 6b09207c..2cb0cba8 100644 --- a/ssh_es.md +++ b/ssh_es.md @@ -45,7 +45,7 @@ Si sólo conoces el IP de tu servidor : ssh admin@111.222.333.444 ``` -Luego, entra la contraseña de administración que has elegido durante la post-instalación [post-installation](postinstall_es). +Luego, entra la contraseña de administración que has elegido durante la post-instalación [post-installation](/postinstall). Si has configurado tus DNS (o modificar tu `/etc/hosts`), puedes utilizar tu nombre de dominio : @@ -86,6 +86,6 @@ yunohost user ssh list-keys ## SSH y seguridad -N.B. : `fail2ban` proscribirá tu IP durante 10 minutos si fracasas más de 5 veces consecutivas en identificarte. Si esto ocurre y que quieres re-validar tu IP, puedes echar un vistazo a la página [fail2ban](/fail2ban_es) +N.B. : `fail2ban` proscribirá tu IP durante 10 minutos si fracasas más de 5 veces consecutivas en identificarte. Si esto ocurre y que quieres re-validar tu IP, puedes echar un vistazo a la página [fail2ban](/fail2ban) -Encontrarás explicaciones más completa sobre la seguridad y SSH en [la página dedicada](security_es). +Encontrarás explicaciones más completa sobre la seguridad y SSH en [la página dedicada](/security). diff --git a/ssh_fr.md b/ssh_fr.md index 124dac3b..dbc8243f 100644 --- a/ssh_fr.md +++ b/ssh_fr.md @@ -90,6 +90,6 @@ yunohost user ssh list-keys ## SSH et sécurité -N.B. : `fail2ban` bannira votre IP pour 10 minutes si vous échouez plus de 5 fois à vous identifier. Pour débannir une IP, vous pouvez regarder la page sur [fail2ban](/fail2ban_fr) +N.B. : `fail2ban` bannira votre IP pour 10 minutes si vous échouez plus de 5 fois à vous identifier. Pour débannir une IP, vous pouvez regarder la page sur [fail2ban](/fail2ban) -Une discussion plus complète de la sécurité et de SSH peut être trouvée sur [la page dédiée](security_fr). +Une discussion plus complète de la sécurité et de SSH peut être trouvée sur [la page dédiée](/security). diff --git a/ssh_it.md b/ssh_it.md index 5206a2d3..b172629c 100644 --- a/ssh_it.md +++ b/ssh_it.md @@ -89,4 +89,4 @@ yunohost user ssh list-keys N.B.: `fail2ban` bannerà il tuo IP per 10 minuti nel caso di almeno 5 tentativi di accesso falliti. Se devi togliere il ban al tuo IP leggi la pagina relativa [fail2ban](/fail2ban) -Una discussione più approfondita relativa a sicurezza & SSH è su [questa pagina](security_en). +Una discussione più approfondita relativa a sicurezza & SSH è su [questa pagina](/security). diff --git a/troubleshooting_guide.md b/troubleshooting_guide.md index 7bb35784..f1d85a0b 100644 --- a/troubleshooting_guide.md +++ b/troubleshooting_guide.md @@ -11,16 +11,16 @@ Also: https://wiki.debian.org/DontBreakDebian ### Do not install bad quality apps -Even if it can be tempting to install every [apps](https://yunohost.org/#/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/). +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](https://yunohost.org/#/docs_en). +Answer to your question may be already in [the documentation](/docs). ### Check the command line help -Learn how to use the [YunoHost commands](https://yunohost.org/#/commandline) like a pro. +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](https://yunohost.org/#/app_update_en). +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** @@ -54,7 +54,7 @@ $ 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](https://yunohost.org/#/whatsyunohost_fr). +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. @@ -81,7 +81,7 @@ All services should be enabled and running. Except glances (optional). If some a - **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_en): Secure Shell +- [**SSH**](/ssh): Secure Shell - [**SSOwat**](https://github.com/Kloadut/SSOwat/): an simple sign-on - **YunoHost-API**: YunoHost web administration @@ -275,7 +275,7 @@ There is no logfile for application install so when you install an app, keep the ``` ## 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](https://yunohost.org/#/packaging_apps_en). +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. diff --git a/troubleshooting_guide_fr.md b/troubleshooting_guide_fr.md index 6a0f1e12..15969124 100644 --- a/troubleshooting_guide_fr.md +++ b/troubleshooting_guide_fr.md @@ -5,22 +5,22 @@ Ce guide peut trouver son intérêt lors du débuggage d’une nouvelle applicat ## 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_fr) ou un [droplet DigitalOcean](install_on_vps_fr) pour 1 centime/heure. +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](https://yunohost.org/#/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/). +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_fr). +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_fr) +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_fr). +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** @@ -58,7 +58,7 @@ $ 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_fr). +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. @@ -86,7 +86,7 @@ Voici une petite description de leurs fonctions respectives : - **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_en) : Secure Shell, utilisé pour l’accès distant au serveur. +- [**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 @@ -290,7 +290,7 @@ Il n’y a pas de fichier de log créé lorsque vous installez une application. ## 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_fr). +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 ». diff --git a/use_case_non-profit_organisations.md b/use_case_non-profit_organisations.md index 146494b0..f16fdf53 100644 --- a/use_case_non-profit_organisations.md +++ b/use_case_non-profit_organisations.md @@ -201,4 +201,4 @@ But for production, localy stored backup are not enough, so you will need to imp ## Conclusion YunoHost can cover 99% of the needs of non-profit organizations, allowing them to own and protect their data, choose applications they want to use. -And if one is not available, they can [package it for YunoHost](https://yunohost.org/#/contributordoc), it's very simple. +And if one is not available, they can [package it for YunoHost](/contributordoc), it's very simple. diff --git a/use_case_non-profit_organisations_fr.md b/use_case_non-profit_organisations_fr.md index 2409f3e8..5e95773f 100644 --- a/use_case_non-profit_organisations_fr.md +++ b/use_case_non-profit_organisations_fr.md @@ -200,4 +200,4 @@ Mais pour la production, la sauvegarde stockée localement ne suffit pas, vous d ## Conclusion YunoHost peut couvrir 99% des besoins des organisations à but non lucratif, leur permettant de posséder et de protéger leurs données, de choisir les applications qu'elles souhaitent utiliser. -Et s’ils ne sont pas disponibles, ils peuvent [les packager pour YunoHost](https://yunohost.org/#/contributordoc), c’est très simple. +Et s’ils ne sont pas disponibles, ils peuvent [les packager pour YunoHost](/contributordoc), c’est très simple. diff --git a/use_case_non-profit_organisations_oc.md b/use_case_non-profit_organisations_oc.md index 3dc63891..946b3a54 100644 --- a/use_case_non-profit_organisations_oc.md +++ b/use_case_non-profit_organisations_oc.md @@ -200,4 +200,4 @@ Mas per la produccion, la salvagarda gardada localament basta pas, vos cal emple ## Conclusion YunoHost pòt cumplir 99% dels besonhs de las organizacions sens tòca lucrativa, en lor permetent de téner e protegir lors donadas, de causir las aplicacions que vòlon utilizar. -E se son pas disponiblas, pòdon [crear un paquet per YunoHost](https://yunohost.org/#/contributordoc), es fòrça simple. +E se son pas disponiblas, pòdon [crear un paquet per YunoHost](/contributordoc), es fòrça simple. diff --git a/whatsyunohost_ar.md b/whatsyunohost_ar.md index f6634cb6..d1776397 100644 --- a/whatsyunohost_ar.md +++ b/whatsyunohost_ar.md @@ -64,16 +64,16 @@ Constatant l’engouement croissant autour de YunoHost et de l’auto-hébergeme YunoHost est développé pour être le plus **simple** et le moins intrusif possible pour garder la compatibilité avec Debian. Il propose uniquement un ensemble de configurations automatiques et opère via des interfaces accessibles. -Le tout est bien entendu **entièrement libre**. La philosophie de l’[الإستضافة الذاتية](selfhosting_fr) étant à nos yeux incompatible avec tout autre modèle de développement logiciel. +Le tout est bien entendu **entièrement libre**. La philosophie de l’[الإستضافة الذاتية](/selfhosting) étant à nos yeux incompatible avec tout autre modèle de développement logiciel. -لا تتردّدوا في زيارة صفحة « [ساهموا](/contribute_ar) ». +لا تتردّدوا في زيارة صفحة « [ساهموا](/contribute) ».
--- ###
الأمان
-لقد بُذِلت كل المجهودات مِن أجل تأمين واي يونوهوست YunoHost و **تعمية و تشفير البروتوكولات** . بإمكانكم الإطلاع على الشرح بتفاصيليه [هنا](/security_fr). +لقد بُذِلت كل المجهودات مِن أجل تأمين واي يونوهوست YunoHost و **تعمية و تشفير البروتوكولات** . بإمكانكم الإطلاع على الشرح بتفاصيليه [هنا](/security).
--- diff --git a/whatsyunohost_fr.md b/whatsyunohost_fr.md index dcec435b..48b6550a 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_fr) 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_fr). +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). Fonctionnalités --------------- From e41e91b37f8859d20ff840a9e93825e2c711d436 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 28 Mar 2020 07:13:50 +0100 Subject: [PATCH 11/83] No need to have this page now with the new Simone auto-fallback to english --- apps_wishlist_fr.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 apps_wishlist_fr.md diff --git a/apps_wishlist_fr.md b/apps_wishlist_fr.md deleted file mode 100644 index 88160e7b..00000000 --- a/apps_wishlist_fr.md +++ /dev/null @@ -1,3 +0,0 @@ -# Apps souhaitées - -La liste des applications souhaitées n’est maintenue qu’en version anglaise. Merci de vous y référer. From 1d25c263ae4ca366e938f949b4762e51caef874a Mon Sep 17 00:00:00 2001 From: Yunobot Date: Sun, 29 Mar 2020 01:20:21 +0000 Subject: [PATCH 12/83] 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 fb885da9b81a8f38ad27adbf8b8cb67fbc50c4ef Mon Sep 17 00:00:00 2001 From: Yunobot Date: Sun, 29 Mar 2020 16:58:55 +0000 Subject: [PATCH 13/83] Fixed english typos/grammatical mistakes --- security.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/security.md b/security.md index b2cff099..8884ccab 100644 --- a/security.md +++ b/security.md @@ -1,6 +1,6 @@ # Security -YunoHost has been developed to provide the best security without too much complication. Every protocol used in YunoHost are **encrypted**, only password's hashs are stored and by default each user is able to access to his personal directory only. +YunoHost has been developed to provide the best security without too much complication. Every protocol used in YunoHost is **encrypted**, only password's hashes are stored and by default each user is able to access his personal directory only. Two things remain important to note: @@ -40,33 +40,33 @@ nano /etc/ssh/sshd_config PasswordAuthentication no ``` -Save and restart SSH daemon. +Save and restart the SSH daemon. ```bash systemctl restart ssh ``` --- -### Modify SSH port +### Modify the SSH port -To prevent SSH connection attempts by robots that scan the Internet for any servers with SSH accessible, you can change the SSH port. +To prevent SSH connection attempts by robots that scan the Internet for any server with SSH enabled, you can change the SSH port. -**On your server**, edit the ssh configuration file, in order to modify SSH port. +**On your server**, edit the ssh configuration file, in order to modify the SSH port. ```bash nano /etc/ssh/sshd_config ``` -**Search line "Port" and replace** port number (by default 22) by another not used number +**Search the line "Port" and replace** port number (by default 22) by another unused number ```bash # What ports, IPs and protocols we listen for Port 22 # to replace by 9777 for example ``` -**Open the port** in firewall (you can use `-6` option to deny ipv4 connection) +**Open the port** in the firewall (you can use `-6` option to deny ipv4 connection) ```bash yunohost firewall allow TCP 9777 ``` -Save and restart SSH daemon. Switch over to the new port by restarting SSH. +Save and restart the SSH daemon. Switch over to the new port by restarting SSH. ```bash systemctl restart ssh ``` @@ -86,7 +86,7 @@ To do that you need to create the configuration file `my_ssh_port.conf` with the nano /etc/fail2ban/jail.d/my_ssh_port.conf ``` -and you can fill it with +and you can then fill it in with ```bash [sshd] @@ -114,7 +114,7 @@ ssh -p admin@ ### Change the user authorized to connect via SSH -To avoid multiple forced login attempts to admin by robots, change the authorized user who can connect. +To avoid multiple forced login attempts to the admin account by robots, change the authorized user who can connect.
In the case of a key authentication, a brute force attack has no chance of succeeding. This step is not really useful in this case. @@ -124,8 +124,8 @@ In the case of a key authentication, a brute force attack has no chance of succe ```bash sudo adduser user_name ``` -Choose a strong password, since this user will be responsible to obtain root privileges. -Add the user to sudo group to allow him/her to perform maintenance tasks that require root privileges. +Choose a strong password, since this user will be responsible with obtaining root privileges. +Add the user to the sudo group to allow him/her to perform maintenance tasks that require root privileges. ```bash sudo adduser user_name sudo ``` @@ -140,7 +140,7 @@ AllowUsers user_name ``` Only users listed in the AllowUsers directive will then be allowed to connect via SSH, which excludes the admin user. -Save and restart SSH daemon. +Save and restart the SSH daemon. ```bash systemctl restart ssh ``` @@ -148,9 +148,9 @@ systemctl restart ssh ### Change cipher compatibility configuration -The default TLS configuration for services tend to offer a good compatibility to support old devices. You can tune this policy for specific services like SSH and NGINX. By default, the NGINX configuration follows the [intermediate compatibility recommendation](https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29) from Mozilla. You can choose to switch to the 'modern' configuration which uses more recent security recommendations, but decreases the compatibility, which may be an issue for your users and visitors using older devices. More details about the compatibility can be found on [this page](https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility). +The default TLS configuration for services tends to offer good compatibility to support old devices. You can tune this policy for specific services like SSH and NGINX. By default, the NGINX configuration follows the [intermediate compatibility recommendation](https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29) from Mozilla. You can choose to switch to the 'modern' configuration which uses more recent security recommendations, but decreases the compatibility, which may be an issue for your users and visitors using older devices. More details about the compatibility can be found on [this page](https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility). -Changing the compatibility level is not definitive and can be reverted if it doesn't feet your environment. +Changing the compatibility level is not definitive and can be reverted if it doesn't fit with your environment. **On your server**, change the policy for NGINX ```bash @@ -162,8 +162,8 @@ sudo yunohost settings set security.nginx.compatibility -v modern sudo yunohost settings set security.ssh.compatibility -v modern ``` -### Disable YunoHost API -YunoHost administration is accessible through an **HTTP API**, served on the 6787 port by default (only on `localhost`). It can be used to administrate a lot of things on your server, so malicious actors can also use it to damage your server. The best thing to do, if you know how to use the [command-line interface](/commandline), is to deactivate the `yunohost-api` service. +### Disable the YunoHost API +YunoHost administration is accessible through an **HTTP API**, served on the 6787 port by default (only on `localhost`). It can be used to administer a lot of things on your server, so malicious actors can also use it to damage your server. The best thing to do, if you know how to use the [command-line interface](/commandline), is to deactivate the `yunohost-api` service. ```bash sudo systemctl disable yunohost-api From 2ea08ef1e3d88f853bed54b7219a60b2585d92ab Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 29 Mar 2020 21:18:30 +0200 Subject: [PATCH 14/83] Attempt to add travis tests (+ autolinter script for links) --- .travis.yml | 5 +++++ tests/dead_links.sh | 19 +++++++++++++++++++ tests/uniformize_links.sh | 13 +++++++++++++ tests/unreferenced_pages.sh | 25 +++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 .travis.yml create mode 100644 tests/dead_links.sh create mode 100644 tests/uniformize_links.sh create mode 100644 tests/unreferenced_pages.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..ec7369c8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: bash + +script: + - bash tests/dead_links.sh + - bash tests/unreferenced_pages.sh diff --git a/tests/dead_links.sh b/tests/dead_links.sh new file mode 100644 index 00000000..f51cec96 --- /dev/null +++ b/tests/dead_links.sh @@ -0,0 +1,19 @@ +returncode=0 + +# Find all markdown links and generate a list of filename.md:N:linktarget (with N the line number) +for LINK in $(grep -nr -o -E "\]\(\/?(\w|-)+\)" ./*.md | tr -d ']()/') +do + PAGE=$(echo $LINK | awk -F: '{print $3}') + [ -e "$PAGE.md" ] || echo "This link looks dead (page doesn't exist in english?) $LINK" + [ -e "$PAGE.md" ] || returncode=1 +done + +# Find all HTML/href links and generate a list of filename.md:N:linktarget (with N the line number) +for LINK in $(grep -nr -o -E 'href="\/?(\w|-)+\"' ./*.md | sed -E 's@href="/?@@g' | tr -d '"') +do + PAGE=$(echo $LINK | awk -F: '{print $3}') + [ -e "$PAGE.md" ] || echo "This link looks dead (page doesn't exist in english?) $LINK" + [ -e "$PAGE.md" ] || returncode=1 +done + +exit $returncode diff --git a/tests/uniformize_links.sh b/tests/uniformize_links.sh new file mode 100644 index 00000000..4a4e76be --- /dev/null +++ b/tests/uniformize_links.sh @@ -0,0 +1,13 @@ +for FILE in $(ls *.md); +do + # Replace markdown links with full url ... we only need the relative url + sed -i -E 's@\(https://yunohost.org/#/(\w+)\)@(/\1)@g' $FILE + + # Replace (/foo_fr) to (foo) + sed -i -E 's@\(\/?((\w|-)+)_(en|fr|es|it|ar|de|oc)\)@(/\1)@g' $FILE + + # Replace href="/foo_fr" to href="foo" + sed -i -E 's@href="/?((\w|-)+)_(en|fr|es|it|ar|de|oc)"@href="/\1"@g' $FILE; +done + +git checkout project_organization.md project_organization_fr.md diff --git a/tests/unreferenced_pages.sh b/tests/unreferenced_pages.sh new file mode 100644 index 00000000..21c72119 --- /dev/null +++ b/tests/unreferenced_pages.sh @@ -0,0 +1,25 @@ + + +MARKDOWN_TARGETS=$(grep -nr -o -E "\]\(\/?(\w|-)+\)" ./*.md | tr -d ']()/' | awk -F: '{print $3}' | sort | uniq) +HTML_TARGETS=$(grep -nr -o -E 'href="\/?(\w|-)+\"' ./*.md | sed -E 's@href="/?@@g' | tr -d '"' | awk -F: '{print $3}' | sort | uniq) + +ALL_TARGETS=$(echo $MARKDOWN_TARGETS $HTML_TARGETS) + +PAGES=$(ls *.md | sed -E 's/(_(fr|it|de|ar|oc|es|ru))?.md//g' | sort | uniq) + +returncode=0 + +for PAGE in $PAGES +do + if [[ $PAGE == "index" ]] || [[ $PAGE == "README" ]] || [[ $PAGE == "default" ]] + then + continue + fi + if ! echo $ALL_TARGETS | grep -q $PAGE + then + returncode=1 + echo "The following page is not referenced by any other page :( -> $PAGE" + fi +done + +exit $returncode From ffe15295d9e53e73c05ec7166af0326896b359dd Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sun, 29 Mar 2020 22:18:12 +0200 Subject: [PATCH 15/83] Fix dead links --- app_nextcloud_calendar.md | 1 + app_nextcloud_carnet.md | 1 + app_nextcloud_contact.md | 1 + certificate_custom.md | 1 + isp_free.md | 1 + isp_orange.md | 1 + isp_sfr.md | 1 + packaging_apps_hooks.md | 1 + packaging_apps_trap.md | 1 + packaging_apps_virtualbox.md | 1 + tests/uniformize_links.sh | 4 +++- 11 files changed, 13 insertions(+), 1 deletion(-) create mode 120000 app_nextcloud_calendar.md create mode 120000 app_nextcloud_carnet.md create mode 120000 app_nextcloud_contact.md create mode 100644 certificate_custom.md create mode 100644 isp_free.md create mode 100644 isp_orange.md create mode 100644 isp_sfr.md create mode 100644 packaging_apps_hooks.md create mode 100644 packaging_apps_trap.md create mode 100644 packaging_apps_virtualbox.md diff --git a/app_nextcloud_calendar.md b/app_nextcloud_calendar.md new file mode 120000 index 00000000..7800f978 --- /dev/null +++ b/app_nextcloud_calendar.md @@ -0,0 +1 @@ +default.md \ No newline at end of file diff --git a/app_nextcloud_carnet.md b/app_nextcloud_carnet.md new file mode 120000 index 00000000..7800f978 --- /dev/null +++ b/app_nextcloud_carnet.md @@ -0,0 +1 @@ +default.md \ No newline at end of file diff --git a/app_nextcloud_contact.md b/app_nextcloud_contact.md new file mode 120000 index 00000000..7800f978 --- /dev/null +++ b/app_nextcloud_contact.md @@ -0,0 +1 @@ +default.md \ No newline at end of file diff --git a/certificate_custom.md b/certificate_custom.md new file mode 100644 index 00000000..29b129cb --- /dev/null +++ b/certificate_custom.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](certificate_custom_fr) for now. diff --git a/isp_free.md b/isp_free.md new file mode 100644 index 00000000..e97c35fb --- /dev/null +++ b/isp_free.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](isp_free_fr) for now. diff --git a/isp_orange.md b/isp_orange.md new file mode 100644 index 00000000..c89a3e28 --- /dev/null +++ b/isp_orange.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](isp_orange_fr) for now. diff --git a/isp_sfr.md b/isp_sfr.md new file mode 100644 index 00000000..e5002600 --- /dev/null +++ b/isp_sfr.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](isp_sfr_fr) for now. diff --git a/packaging_apps_hooks.md b/packaging_apps_hooks.md new file mode 100644 index 00000000..748cc17d --- /dev/null +++ b/packaging_apps_hooks.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](packaging_apps_hooks_fr) for now. diff --git a/packaging_apps_trap.md b/packaging_apps_trap.md new file mode 100644 index 00000000..e129d61c --- /dev/null +++ b/packaging_apps_trap.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](packaging_apps_trap_fr) for now. diff --git a/packaging_apps_virtualbox.md b/packaging_apps_virtualbox.md new file mode 100644 index 00000000..c47bbfae --- /dev/null +++ b/packaging_apps_virtualbox.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](packaging_apps_virtualbox_fr) for now. diff --git a/tests/uniformize_links.sh b/tests/uniformize_links.sh index 4a4e76be..9a5ab061 100644 --- a/tests/uniformize_links.sh +++ b/tests/uniformize_links.sh @@ -1,5 +1,7 @@ for FILE in $(ls *.md); -do +do + grep -q "Unfortunately, this page only exists" $FILE && continue + # Replace markdown links with full url ... we only need the relative url sed -i -E 's@\(https://yunohost.org/#/(\w+)\)@(/\1)@g' $FILE From 7de2493dca32db3c3e43981fa22255af6a2d073d Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 30 Mar 2020 00:25:55 +0200 Subject: [PATCH 16/83] Fix code block syntax breaking rendering... + add test --- .travis.yml | 1 + app_spip.md | 4 ++-- app_spip_fr.md | 2 +- noaccess_fr.md | 4 ++-- tests/check_code_block_syntax.sh | 17 +++++++++++++++++ 5 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 tests/check_code_block_syntax.sh diff --git a/.travis.yml b/.travis.yml index ec7369c8..18a27402 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,3 +3,4 @@ language: bash script: - bash tests/dead_links.sh - bash tests/unreferenced_pages.sh + - bash tests/check_code_block_syntax.sh diff --git a/app_spip.md b/app_spip.md index fb51d7ab..880b41e6 100644 --- a/app_spip.md +++ b/app_spip.md @@ -20,7 +20,7 @@ $ sudo yunohost app install https://github.com/YunoHost-Apps/spip_ynh.git_ynh.gi ##### Update -``` +```bash sudo yunohost app upgrade --verbose spip -u https://github.com/YunoHost-Apps/spip_ynh.git_ynh.git ``` @@ -30,4 +30,4 @@ Access the administration of the site by entering the following address in your https://www.domain.tld/spip/ecrire -Make a "forgotten password" request to change your password, you will receive an email telling you how to change your password. \ No newline at end of file +Make a "forgotten password" request to change your password, you will receive an email telling you how to change your password. diff --git a/app_spip_fr.md b/app_spip_fr.md index b765947e..78310855 100644 --- a/app_spip_fr.md +++ b/app_spip_fr.md @@ -20,7 +20,7 @@ $ sudo yunohost app install https://github.com/YunoHost-Apps/spip_ynh.git #### Mise à jour -``` +```bash $ sudo yunohost app upgrade --verbose spip -u https://github.com/YunoHost-Apps/spip_ynh.git ``` diff --git a/noaccess_fr.md b/noaccess_fr.md index 059fc32a..94d19af8 100644 --- a/noaccess_fr.md +++ b/noaccess_fr.md @@ -73,7 +73,7 @@ Si vous utilisez un VPN a IP fixe, peut être que celui-ci est arrivé à expira 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 ``` @@ -100,7 +100,7 @@ Dans ce cas il faut renouveler le nom de domaine (si ile st encore temps. 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 ``` diff --git a/tests/check_code_block_syntax.sh b/tests/check_code_block_syntax.sh new file mode 100644 index 00000000..62e83a0f --- /dev/null +++ b/tests/check_code_block_syntax.sh @@ -0,0 +1,17 @@ +returncode=0 +for FILE in $(ls *.md) +do + NB_OPENING=$(grep -E "^ *\`\`\` *\w+ *$" $FILE | wc -l) + NB_CLOSE=$(grep -E "^ *\`\`\` *$" $FILE | wc -l) + if [[ "$NB_OPENING" != "$NB_CLOSE" ]] + then + echo "There are some mistakes in code block syntax in $FILE ..." + returncode=1 + fi +done + +if [[ $returncode == 1 ]] +then + echo "Make sure that all the code block in the problematic files do specific the language in the opening backticks (for example, \`\`\`bash). Otherwise, rendering in the actual website will be broken because of a bug in markdown parsing lib..." + exit 1 +fi From 6c459ef23ffdd93b8bbc5457a86c50a1aaef2389 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 30 Mar 2020 01:27:51 +0200 Subject: [PATCH 17/83] Update donation link --- faq.md | 2 +- faq_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/faq.md b/faq.md index 197a7b3d..48517168 100644 --- a/faq.md +++ b/faq.md @@ -74,7 +74,7 @@ Yes, you can! YunoHost needs money to pay servers and domain names. We would also like contributors to be able to continue contributing rather than look for jobs elsewhere. -You can donate on [Liberapay](https://liberapay.com/yunohost). +You can donate using [our donation interface](https://donate.yunohost.org) If you can, you can also make in-kind contributions, like servers (some of our infrastructure relies on servers from a few associations). diff --git a/faq_fr.md b/faq_fr.md index 9308206d..7fe65a1b 100644 --- a/faq_fr.md +++ b/faq_fr.md @@ -67,7 +67,7 @@ Il est question de financement par dons ou subventions, certains contributeurs m Oui, c'est possible ! YunoHost a besoin de payer des serveurs et noms de domaine, par ailleurs nous souhaiterions pouvoir permettre aux développeurs principaux de continuer à développer YunoHost plutôt que de chercher un emploi ailleurs. -Pour faire un don ça se passe via notre [Liberapay](https://liberapay.com/YunoHost) +Pour faire un don ça se passe via [notre interface de don](https://donate.yunohost.org) Si vous le pouvez, vous pouvez aussi faire des contributions en nature (une partie de notre infrastructure vient d'associations qui nous fournissent des serveurs). From 36a18a096b065f008d77a302ab1550defa6e6492 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 30 Mar 2020 01:52:15 +0200 Subject: [PATCH 18/83] Update framasoft app list --- apps_framasoft.md | 49 +------------------------------------------- apps_framasoft_fr.md | 48 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 48 deletions(-) create mode 100644 apps_framasoft_fr.md diff --git a/apps_framasoft.md b/apps_framasoft.md index 714a78b1..b8965af1 100644 --- a/apps_framasoft.md +++ b/apps_framasoft.md @@ -1,48 +1 @@ -# Équivalence avec les applications Framasoft - -| App Framasoft | Équivalent | Package | Status | -| :---: | :---: | :---: | :---: | -| Framapad | Etherpad + mypads | [](https://github.com/YunoHost-Apps/etherpad_mypads_ynh) | ![](https://dash.yunohost.org/integration/etherpad_mypads.svg) | -| Framadrive | Nextcloud | [](https://github.com/YunoHost-apps/nextcloud_ynh) | ![](https://dash.yunohost.org/integration/nextcloud.svg) | -| Framagit | GitLab | [](https://github.com/YunoHost-Apps/gitlab_ynh) | ![](https://dash.yunohost.org/integration/gitlab.svg) | -| | Gogs | [](https://github.com/YunoHost-Apps/gogs_ynh) | ![](https://dash.yunohost.org/integration/gogs.svg) | -| Framadrop | Lufi | [](https://github.com/YunoHost-Apps/lufi_ynh) | ![](https://dash.yunohost.org/integration/lufi.svg) | -| Framapiaf | Mastodon | [](https://github.com/YunoHost-Apps/mastodon_ynh) | ![](https://dash.yunohost.org/integration/mastodon.svg) | -| Framapic | Lutim | [](https://github.com/YunoHost-Apps/lutim_ynh) | ![](https://dash.yunohost.org/integration/lutim.svg) | -| Framabin | PrivateBin | [](https://github.com/YunoHost-apps/zerobin_ynh) | ![](https://dash.yunohost.org/integration/zerobin.svg) | -| Frama.link | Lstu | [](https://github.com/YunoHost-Apps/lstu_ynh) | ![](https://dash.yunohost.org/integration/lstu.svg) | -| Framatube | Peertube | [](https://github.com/YunoHost-Apps/peertube_ynh) | ![](https://dash.yunohost.org/integration/peertube.svg) | -| Framanews | TinyTinyRSS | [](https://github.com/YunoHost-apps/ttrss_ynh) | ![](https://dash.yunohost.org/integration/ttrss.svg) | -| Framabee | Searx | [](https://github.com/YunoHost-Apps/searx_ynh) | ![](https://dash.yunohost.org/integration/searx.svg) | -| Framabag | Wallabag | [](https://github.com/YunoHost-Apps/wallabag_ynh) | ![](https://dash.yunohost.org/integration/wallabag.svg) | -| Framacalc | Ethercalc | [](https://github.com/YunoHost-Apps/ethercalc_ynh) | ![](https://dash.yunohost.org/integration/ethercalc.svg) | -| Framaboard | Kanboard | [](https://github.com/YunoHost-Apps/kanboard_ynh) | ![](https://dash.yunohost.org/integration/kanboard.svg) | -| Framadate | OpenSondage | [](https://github.com/YunoHost-Apps/opensondage_ynh) | ![](https://dash.yunohost.org/integration/opensondage.svg) | -| Framasphère | Diaspora* | [](https://github.com/aymhce/diaspora_ynh) | ![](https://dash.yunohost.org/integration/diaspora.svg) | -| Framabookin | BicBucStriim | [](https://github.com/YunoHost-Apps/BicBucStriim_ynh) | ![](https://dash.yunohost.org/integration/BicBucStriim.svg) | -| Framanotes | Turtl | [](https://github.com/YunoHost-Apps/Turtl_ynh) | ![](https://dash.yunohost.org/integration/Turtl.svg) | -| Framemo | Scrumblr | [](https://github.com/YunoHost-Apps/scrumblr_ynh) | ![](https://dash.yunohost.org/integration/scumblr.svg) | -| Framinetest | Minetest | [](https://github.com/YunoHost-Apps/minetest_ynh) | ![](https://dash.yunohost.org/integration/minetest.svg) | -| Framatalk | Jitsi Meet | [](https://github.com/YunoHost-Apps/jitsi_ynh) | ![](https://dash.yunohost.org/integration/jitsi.svg) | -| Framalistes | Mailman | [](https://github.com/YunoHost-Apps/mailman_ynh) | ![](https://dash.yunohost.org/integration/mailman.svg) | -| | Sympa | [](https://github.com/alexAubin/sympa_ynh) | ![](https://dash.yunohost.org/integration/sympa.svg) | -| Framindmap | Wisemapping | [](https://github.com/YunoHost-Apps/wisemapping_ynh) | ![](https://dash.yunohost.org/integration/wisemapping.svg) | -| Framavectoriel | SVG-Edit | Non packagé | | -| Framacarte | uMap | [](https://github.com/YunoHost-Apps/umap_ynh) |![](https://dash.yunohost.org/integration/umap.svg) | -| Framaforms | Framaforms | [](https://github.com/YunoHost-Apps/framaforms_ynh) |![](https://dash.yunohost.org/integration/framaforms.svg) | -| Framaestro | Framaestro | [](https://github.com/YunoHost-Apps/framaestro_ynh) |![](https://dash.yunohost.org/integration/framaestro.svg) | -| Framavox | Loomio | Non packagé | | -| Framagenda | (Agenda Nextcloud) | c.f. Nextcloud | | -| Framagames | Framagames | [](https://github.com/YunoHost-Apps/framagames_ynh) |![](https://dash.yunohost.org/integration/framagames.svg) | -| Framateam | Mattermost | [](https://github.com/YunoHost-Apps/mattermost_ynh) |![](https://dash.yunohost.org/integration/mattermost.svg) | -| MyFrama | Shaarli | [](https://github.com/YunoHost-Apps/shaarli_ynh) |![](https://dash.yunohost.org/integration/shaarli.svg) | -| Framaslides | Strut | [](https://github.com/YunoHost-Apps/strut_ynh) |![](https://dash.yunohost.org/integration/strut.svg) | -| Framasites | Grav | [](https://github.com/YunoHost-Apps/grav_ynh) |![](https://dash.yunohost.org/integration/grav.svg) | -| Framaclic | Matomo | [](https://github.com/YunoHost-Apps/matomo_ynh) |![](https://dash.yunohost.org/integration/matomo.svg) | -| Framatrad | ? | Non packagé | | - -### Voir aussi - -- [Liste complète des applications packagées](/apps) -- [La roadmap 'Dégooglisons'](https://github.com/YunoHost/issues/milestone/13) - +Unfortunately, this page only exists [in french here](apps_framasoft_fr) for now. diff --git a/apps_framasoft_fr.md b/apps_framasoft_fr.md new file mode 100644 index 00000000..d57bcdbd --- /dev/null +++ b/apps_framasoft_fr.md @@ -0,0 +1,48 @@ +# Équivalence avec les applications Framasoft + +| App Framasoft | Équivalent | Package | +| :---: | :---: | :---: | +| Framabag | Wallabag | [](https://github.com/YunoHost-Apps/wallabag2_ynh) ![](https://ci-apps.yunohost.org/ci/badges/wallabag2.status.svg) ![](https://dash.yunohost.org/integration/wallabag2.svg) | +| Framabee | Searx | [](https://github.com/YunoHost-Apps/searx_ynh) ![](https://ci-apps.yunohost.org/ci/badges/searx.status.svg) ![](https://dash.yunohost.org/integration/searx.svg) | +| Framabin | PrivateBin | [](https://github.com/YunoHost-apps/zerobin_ynh) ![](https://ci-apps.yunohost.org/ci/badges/zerobin.status.svg) ![](https://dash.yunohost.org/integration/zerobin.svg) | +| Framaboard | Kanboard | [](https://github.com/YunoHost-Apps/kanboard_ynh) ![](https://ci-apps.yunohost.org/ci/badges/kanboard.status.svg) ![](https://dash.yunohost.org/integration/kanboard.svg) | +| Framabookin | BicBucStriim | [](https://github.com/YunoHost-Apps/bicbucstriim_ynh) ![](https://ci-apps.yunohost.org/ci/badges/bicbucstriim.status.svg) ![](https://dash.yunohost.org/integration/bicbucstriim.svg) | +| Framacalc | Ethercalc | [](https://github.com/YunoHost-Apps/ethercalc_ynh) ![](https://ci-apps.yunohost.org/ci/badges/ethercalc.status.svg) ![](https://dash.yunohost.org/integration/ethercalc.svg) | +| Framacarte | uMap | [](https://github.com/YunoHost-Apps/umap_ynh) ![](https://ci-apps.yunohost.org/ci/badges/umap.status.svg) ![](https://dash.yunohost.org/integration/umap.svg) | +| Framaclic | Matomo | [](https://github.com/YunoHost-Apps/matomo_ynh) ![](https://ci-apps.yunohost.org/ci/badges/matomo.status.svg) ![](https://dash.yunohost.org/integration/matomo.svg) | +| Framadate | OpenSondage | [](https://github.com/YunoHost-Apps/opensondage_ynh) ![](https://ci-apps.yunohost.org/ci/badges/opensondage.status.svg) ![](https://dash.yunohost.org/integration/opensondage.svg) | +| Framadrive | Nextcloud | [](https://github.com/YunoHost-apps/nextcloud_ynh) ![](https://ci-apps.yunohost.org/ci/badges/nextcloud.status.svg) ![](https://dash.yunohost.org/integration/nextcloud.svg) | +| Framadrop | Lufi | [](https://github.com/YunoHost-Apps/lufi_ynh) ![](https://ci-apps.yunohost.org/ci/badges/lufi.status.svg) ![](https://dash.yunohost.org/integration/lufi.svg) | +| Framaestro | Framaestro | [](https://github.com/YunoHost-Apps/framaestro_ynh) ![](https://ci-apps.yunohost.org/ci/badges/framaestro.status.svg) ![](https://dash.yunohost.org/integration/framaestro.svg) | +| Framaforms | Framaforms | [](https://github.com/YunoHost-Apps/framaforms_ynh) ![](https://ci-apps.yunohost.org/ci/badges/framaforms.status.svg) ![](https://dash.yunohost.org/integration/framaforms.svg) | +| Framagames | Framagames | [](https://github.com/YunoHost-Apps/framagames_ynh) ![](https://ci-apps.yunohost.org/ci/badges/framagames.status.svg) ![](https://dash.yunohost.org/integration/framagames.svg) | +| Framagenda | (Agenda Nextcloud) | c.f. Nextcloud | +| Framagit | GitLab | [](https://github.com/YunoHost-Apps/gitlab_ynh) ![](https://ci-apps.yunohost.org/ci/badges/gitlab.status.svg) ![](https://dash.yunohost.org/integration/gitlab.svg) | +| | Gogs | [](https://github.com/YunoHost-Apps/gogs_ynh) ![](https://ci-apps.yunohost.org/ci/badges/gogs.status.svg) ![](https://dash.yunohost.org/integration/gogs.svg) | +| Frama.link | Lstu | [](https://github.com/YunoHost-Apps/lstu_ynh) ![](https://ci-apps.yunohost.org/ci/badges/lstu.status.svg) ![](https://dash.yunohost.org/integration/lstu.svg) | +| Framalistes | Mailman | [](https://github.com/YunoHost-Apps/mailman_ynh) ![](https://ci-apps.yunohost.org/ci/badges/mailman.status.svg) ![](https://dash.yunohost.org/integration/mailman.svg) | +| | Sympa | [](https://github.com/alexAubin/sympa_ynh) ![](https://ci-apps.yunohost.org/ci/badges/sympa.status.svg) ![](https://dash.yunohost.org/integration/sympa.svg) | +| Framanews | TinyTinyRSS | [](https://github.com/YunoHost-apps/ttrss_ynh) ![](https://ci-apps.yunohost.org/ci/badges/ttrss.status.svg) ![](https://dash.yunohost.org/integration/ttrss.svg) | +| Framanotes | Turtl | [](https://github.com/YunoHost-Apps/turtl_ynh) ![](https://ci-apps.yunohost.org/ci/badges/turtl.status.svg) ![](https://dash.yunohost.org/integration/turtl.svg) | +| Framapad | Etherpad + mypads | [](https://github.com/YunoHost-Apps/etherpad_mypads_ynh) ![](https://ci-apps.yunohost.org/ci/badges/etherpad_mypads.status.svg) ![](https://dash.yunohost.org/integration/etherpad_mypads.svg) | +| Framapiaf | Mastodon | [](https://github.com/YunoHost-Apps/mastodon_ynh) ![](https://ci-apps.yunohost.org/ci/badges/mastodon.status.svg) ![](https://dash.yunohost.org/integration/mastodon.svg) | +| Framapic | Lutim | [](https://github.com/YunoHost-Apps/lutim_ynh) ![](https://ci-apps.yunohost.org/ci/badges/lutim.status.svg) ![](https://dash.yunohost.org/integration/lutim.svg) | +| Framasites | Grav | [](https://github.com/YunoHost-Apps/grav_ynh) ![](https://ci-apps.yunohost.org/ci/badges/grav.status.svg) ![](https://dash.yunohost.org/integration/grav.svg) | +| Framaslides | Strut | [](https://github.com/YunoHost-Apps/strut_ynh) ![](https://ci-apps.yunohost.org/ci/badges/strut.status.svg) ![](https://dash.yunohost.org/integration/strut.svg) | +| Framasphère | Diaspora | [](https://github.com/aymhce/diaspora_ynh) ![](https://ci-apps.yunohost.org/ci/badges/diaspora.status.svg) ![](https://dash.yunohost.org/integration/diaspora.svg) | +| Framatalk | Jitsi Meet | [](https://github.com/YunoHost-Apps/jitsi_ynh) ![](https://ci-apps.yunohost.org/ci/badges/jitsi.status.svg) ![](https://dash.yunohost.org/integration/jitsi.svg) | +| Framateam | Mattermost | [](https://github.com/YunoHost-Apps/mattermost_ynh) ![](https://ci-apps.yunohost.org/ci/badges/mattermost.status.svg) ![](https://dash.yunohost.org/integration/mattermost.svg) | +| Framatrad | ? | Non packagé | +| Framatube | Peertube | [](https://github.com/YunoHost-Apps/peertube_ynh) ![](https://ci-apps.yunohost.org/ci/badges/peertube.status.svg) ![](https://dash.yunohost.org/integration/peertube.svg) | +| Framavectoriel | SVG-Edit | [](https://github.com/YunoHost-Apps/svgedit_ynh) ![](https://ci-apps.yunohost.org/ci/badges/svgedit.status.svg) ![](https://dash.yunohost.org/integration/svgedit.svg) | +| Framavox | Loomio | Non packagé | +| Framemo | Scrumblr | [](https://github.com/YunoHost-Apps/scrumblr_ynh) ![](https://ci-apps.yunohost.org/ci/badges/scrumblr.status.svg) ![](https://dash.yunohost.org/integration/scrumblr.svg) | +| Framindmap | Wisemapping | [](https://github.com/YunoHost-Apps/wisemapping_ynh) ![](https://ci-apps.yunohost.org/ci/badges/wisemapping.status.svg) ![](https://dash.yunohost.org/integration/wisemapping.svg) | +| Framinetest | Minetest | [](https://github.com/YunoHost-Apps/minetest_ynh) ![](https://ci-apps.yunohost.org/ci/badges/minetest.status.svg) ![](https://dash.yunohost.org/integration/minetest.svg) | +| MyFrama | Shaarli | [](https://github.com/YunoHost-Apps/shaarli_ynh) ![](https://ci-apps.yunohost.org/ci/badges/shaarli.status.svg) ![](https://dash.yunohost.org/integration/shaarli.svg) | + +### Voir aussi + +- [Liste complète des applications packagées](/apps) +- [La roadmap 'Dégooglisons'](https://github.com/YunoHost/issues/milestone/13) + From a4f6cccb997fd82628c633a67864aebd4958eae8 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 30 Mar 2020 01:58:11 +0200 Subject: [PATCH 19/83] Fix missing reference to some pages... --- admindoc.md | 5 +- admindoc_fr.md | 6 +- collabora_en.md => app_collaboradocker.md | 0 collabora_fr.md => app_collaboradocker_fr.md | 0 apps_group_PR_model.md | 46 ------ appsdoc.md | 32 ++++ contributordoc.md | 1 + contributordoc_fr.md | 1 + create_live_usb.md | 150 ------------------ create_live_usb_fr.md | 152 ------------------- docs.md | 3 +- docs_fr.md | 9 +- noaccess.md | 1 + vpn_advantage.md | 1 + 14 files changed, 52 insertions(+), 355 deletions(-) rename collabora_en.md => app_collaboradocker.md (100%) rename collabora_fr.md => app_collaboradocker_fr.md (100%) delete mode 100644 apps_group_PR_model.md create mode 100644 appsdoc.md delete mode 100644 create_live_usb.md delete mode 100644 create_live_usb_fr.md create mode 100644 noaccess.md diff --git a/admindoc.md b/admindoc.md index f4937dbb..6553d651 100644 --- a/admindoc.md +++ b/admindoc.md @@ -35,12 +35,15 @@ * [Updating the system](/update) and [apps](/app_update) * [Security](/security) * Going further + * [Specific apps documentations](/appsdoc) * [Noho.st / nohost.me / ynh.fr domain names](/dns_nohost_me) * [Exchange files with your server using a graphical interface](/filezilla) * [Customize the appearance of the YunoHost portal](/theming) * [Adding an external storage](/external_storage) * [Migrating emails to YunoHost](/email_migration) * [Hide services with Tor](/torhiddenservice) + * [(old) Jessie->Stretch migration procedure](jessie_stretch_migration) * [Troubleshooting guide](/troubleshooting_guide) - * [Unlock IP in iptables](/fail2ban) * [Changing the administration password](/change_admin_password) + * [Recover access to your server](/noaccess) + * [Unban IPs in iptables/fail2ban](/fail2ban) diff --git a/admindoc_fr.md b/admindoc_fr.md index d248a210..d7021620 100644 --- a/admindoc_fr.md +++ b/admindoc_fr.md @@ -45,12 +45,16 @@ * [SFR](/isp_sfr) * [Orange](/isp_orange) * [Free](/isp_free) + * [Documentation spécifique à certaines apps](/appsdoc) + * [Equivalence entre service framasoft et apps](/apps_framasoft) * [É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) * [Migrer ses emails vers YunoHost](/email_migration) * [YunoHost avec un service caché Tor](/torhiddenservice) * [Utilisation de certificats autres que Let's Encrypt](/certificate_custom) + * [(vieux) Procedure de Migration Jessie->Stretch](jessie_stretch_migration) * [Guide de dépannage](/troubleshooting_guide) - * [Débloquer une IP dans Fail2ban](/fail2ban) * [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/collabora_en.md b/app_collaboradocker.md similarity index 100% rename from collabora_en.md rename to app_collaboradocker.md diff --git a/collabora_fr.md b/app_collaboradocker_fr.md similarity index 100% rename from collabora_fr.md rename to app_collaboradocker_fr.md diff --git a/apps_group_PR_model.md b/apps_group_PR_model.md deleted file mode 100644 index 82c5e940..00000000 --- a/apps_group_PR_model.md +++ /dev/null @@ -1,46 +0,0 @@ -## Problem -- *Description of why you made this PR* - -## Solution -- *And how you fix that* - -## PR Status -*Obviously, you should really check these affirmations* -Work finished. Package_check, basic tests and upgrade from last version OK. -Could be reviewed and tested. - -## Validation ---- -*Minor decision* -- [ ] **Upgrade previous version** : -- [ ] **Code review** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link* -When the PR is mark as ready to merge, you have to wait for 3 days before really merge it. - -*Medium decision* -- [ ] **Complete test** : -- [ ] **Upgrade previous version** : -- [ ] **Code review** : -- [ ] **Code review** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link* -When the PR is mark as ready to merge, you have to wait for 7 days before really merge it. - -*Major decision* -- [ ] **Complete test** : -- [ ] **Complete test** : -- [ ] **Upgrade previous version** : -- [ ] **Upgrade previous version** : -- [ ] **Code review** : -- [ ] **Code review** : -- [ ] **Code review** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link* -When the PR is mark as ready to merge, you have to wait for 7 days before really merge it. diff --git a/appsdoc.md b/appsdoc.md new file mode 100644 index 00000000..1c5ef65c --- /dev/null +++ b/appsdoc.md @@ -0,0 +1,32 @@ +- [Baikal](app_baikal) +- [Blogotext](app_blogotext) +- [Collabora (Docker)](app_collaboradocker) +- [Dokuwiki](app_dokuwiki) +- [FirefoxSync](app_ffsync) +- [Fireflyiii](app_firefly_iii) +- [FluxBB](app_fluxbb) +- [Gogs](app_gogs) +- [Hextris](app_hextris) +- [Jappix](app_jappix) +- [Limesurvey](app_limesurvey) +- [Mediawiki](app_mediawiki) +- [Minidlna](app_minidlna) +- [CustomWebapp](app_my_webapp) +- [Netdata](app_netdata) +- [Noalyss](app_noalyss) +- [Peertube](app_peertube) +- [Pihole](app_pihole) +- [Piwigo](app_piwigo) +- [Pleroma](app_pleroma) +- [Pluxml](app_pluxml) +- [Radicale](app_radicale) +- [Rainloop](app_rainloop) +- [Sogo](app_sogo) +- [Spip](app_spip) +- [Transmission](app_transmission) +- [TinyTinyRSS](app_ttrss) +- [Wallabag2](app_wallabag2) +- [Webtrees](app_webtrees) +- [Yunofav](app_yunofav) +- (Note that you can add a new page here if you want to start document in another `app...)) + diff --git a/contributordoc.md b/contributordoc.md index 9fb24915..31bc784e 100644 --- a/contributordoc.md +++ b/contributordoc.md @@ -32,3 +32,4 @@ * [Raspberry Pi images](https://github.com/YunoHost/rpi-image) * [Other ARM board images](https://github.com/YunoHost/arm-images) * [Using the YunoHost API outside of the webadmin](/admin_api) +* [A discussion about shell variable scope](shell_variables_scope) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index 0b37388b..57ad494d 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -33,3 +33,4 @@ * [Images Raspberry Pi](https://github.com/YunoHost/rpi-image) * [Autres images pour cartes ARM](https://github.com/YunoHost/arm-images) * [Utiliser l'API YunoHost en dehors de la webadmin](/admin_api) +* [Une discussion sur la portée des variables en bash](shell_variables_scope) diff --git a/create_live_usb.md b/create_live_usb.md deleted file mode 100644 index bcf39bc2..00000000 --- a/create_live_usb.md +++ /dev/null @@ -1,150 +0,0 @@ -# Create a YunoHost Live ISO - -
This page is deprecated / obsolete / outdated. Information -it contains should be updated (or should be removed).
- -Tested on Debian Wheezy (should work on Ubuntu as well). -Original tutorial here: http://willhaley.com/blog/create-a-custom-debian-live-environment/ - -**Warning**: I have **highlighted** all the places you should be in the **chroot** environment. - -1. Install applications we need to build the environment. -```bash -sudo apt-get install debootstrap syslinux squashfs-tools genisoimage memtest86+ rsync -``` - -2. Setup the base Debian environment. I am using wheezy for my distribution and i386 for the architecture. Please do change your mirror if you are not in the Netherlands or know of a mirror close to you. -```bash -mkdir live_boot && cd live_boot -sudo debootstrap --arch=i386 --variant=minbase wheezy chroot http://ftp.nl.debian.org/debian/ -``` - -3. A couple of important steps before we chroot. -```bash -sudo mount -o bind /dev chroot/dev && sudo cp /etc/resolv.conf chroot/etc/resolv.conf -``` - -4. Chroot to our Debian environment. -```bash -sudo chroot chroot -``` - -5. **chroot** -Set a few required variables and system settings in our Debian environment. -```bash -mount none -t proc /proc && -mount none -t sysfs /sys && -mount none -t devpts /dev/pts && -export HOME=/root && -export LC_ALL=C && -apt-get install dialog dbus --yes && -dbus-uuidgen > /var/lib/dbus/machine-id && -apt-get update -``` - -6. **chroot** Set the root password to **yunohost** -```bash -passwd root -``` - -7. **chroot** Install the required packages, replace the kernel version if needed. -```bash -apt-get install --no-install-recommends \ -linux-image-3.2.0-4-486 live-boot \ -net-tools wireless-tools wpagui tcpdump wget openssh-client \ -xserver-xorg-core xserver-xorg xinit xterm \ -pciutils usbutils gparted ntfsprogs hfsprogs rsync dosfstools syslinux partclone nano pv \ -chromium-browser libnss3-tools openbox git ca-certificates openssl -``` - -8. **chroot** NetworkManager can break your network configuration in the chroot environment. You can install it afterward, and CTRL-C during the installation -```bash -apt-get --no-install-recommends install network-manager -``` - -9. **chroot** Install YunoHost -```bash -git clone https://github.com/YunoHost/install_script /tmp/yunohost_install -cd /tmp/yunohost_install && ./install_yunohost -a -``` - -10. **chroot** Set parameters in order to launch everything right -```bash -echo "127.0.0.1 yunohost.org" >> /etc/hosts -echo "chromium --user-data-dir=/root/.config/chromium --app=https://yunohost.org/yunohost/admin/" >> /etc/xdg/openbox/autostart -echo -e "if [ -z \"\$DISPLAY\" ] && [ \$(tty) == /dev/tty1 ]; \nthen \n startx \nfi" >> /root/.bashrc -certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n YunoHostCA -i /etc/yunohost/certs/yunohost.org/ca.pem -certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YunoHostCrt -i /etc/yunohost/certs/yunohost.org/crt.pem -``` - -11. **chroot** Edit `/etc/inittab` to login automatically -```bash -nano /etc/inittab -# Replace the following line -1:2345:respawn:/sbin/getty 38400 tty1 -# by this one -1:2345:respawn:/bin/login -f root tty1 /dev/tty1 2>&1 -``` - -12. **chroot** Clean up our Debian environment before leaving. -```bash -rm -f /var/lib/dbus/machine-id && -apt-get clean && -rm -rf /tmp/* && -rm /etc/resolv.conf && -umount -lf /proc && -umount -lf /sys && -umount -lf /dev/pts -# Then exit -exit -``` - -13. Unmount dev from the chroot -```bash -sudo umount -lf chroot/dev -``` - -14. Make directories that will be copied to our bootable medium. -```bash -mkdir -p image/{live,isolinux} -``` - -15. Compress the chroot environment into a Squash filesystem. -```bash -sudo mksquashfs chroot image/live/filesystem.squashfs -e boot -``` - -16. Prepare our USB/CD bootloader. -```bash -cp chroot/boot/vmlinuz-3.2.0-4-486 image/live/vmlinuz1 && -cp chroot/boot/initrd.img-3.2.0-4-486 image/live/initrd1 -``` - -17. Create `image/isolinux/isolinux.cfg` menu for the bootloader. - -```bash -UI menu.c32 - -prompt 0 -menu title YunoHost Live - -timeout 300 - -label YunoHost Live -menu label ^YunoHost Live -menu default -kernel /live/vmlinuz1 -append initrd=/live/initrd1 boot=live -``` - -### Build the .iso - -Copy files necessary for the ISO to boot and then create the ISO - -```bash -cp /usr/lib/syslinux/isolinux.bin image/isolinux/ && -cp /usr/lib/syslinux/menu.c32 image/isolinux/ -cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd .. -``` - -Great success! Now you can burn the .iso or use [Unetbootin](http://unetbootin.sourceforge.net/) to copy it on a USB stick. diff --git a/create_live_usb_fr.md b/create_live_usb_fr.md deleted file mode 100644 index 5ea68d8b..00000000 --- a/create_live_usb_fr.md +++ /dev/null @@ -1,152 +0,0 @@ -# Créer une Live ISO de YunoHost - -
This page is deprecated / obsolete / outdated. Information -it contains should be updated (or should be removed).
- -Testé sur Debian Wheezy (devrait marcher sur Ubuntu également). -Tutoriel original : http://willhaley.com/blog/create-a-custom-debian-live-environment/ - -**Attention** : toutes les sections où vous devrez être dans un environnement **chroot** sont **surlignées**. - -1. Installation des applications nécessaires à la compilation de l’environnement -```bash -sudo apt-get install debootstrap syslinux squashfs-tools genisoimage memtest86+ rsync -``` - -2. Configuration de l’environnement de base Debian. Debian wheezy et une architecture i386 ont été utilisés pour effectuer les tests. -Changer le miroir si vous n’êtes pas aux Pays-Bas ou que vous connaissez un miroir plus proche. - -```bash -mkdir live_boot && cd live_boot -sudo debootstrap --arch=i386 --variant=minbase wheezy chroot http://ftp.nl.debian.org/debian/ -``` - -3. Deux étapes importantes avant de chroot : -```bash -sudo mount -o bind /dev chroot/dev && sudo cp /etc/resolv.conf chroot/etc/resolv.conf -``` - -4. Chroot l’environnement Debian : -```bash -sudo chroot chroot -``` - -5. **chroot** -Configuration de variables et d’options système de l’environnement Debian : -```bash -mount none -t proc /proc && -mount none -t sysfs /sys && -mount none -t devpts /dev/pts && -export HOME=/root && -export LC_ALL=C && -apt-get install dialog dbus --yes && -dbus-uuidgen > /var/lib/dbus/machine-id && -apt-get update -``` - -6. **chroot** Configuration du mot de passe root de **yunohost** : -```bash -passwd root -``` - -7. **chroot** Installation des paquets requis, remplacement du noyau si nécessaire : -```bash -apt-get install --no-install-recommends \ -linux-image-3.2.0-4-486 live-boot \ -net-tools wireless-tools wpagui tcpdump wget openssh-client \ -xserver-xorg-core xserver-xorg xinit xterm \ -pciutils usbutils gparted ntfsprogs hfsprogs rsync dosfstools syslinux partclone nano pv \ -chromium-browser libnss3-tools openbox git ca-certificates openssl -``` - -8. **chroot** Le NetworkManager peut casser la configuration de votre environnement chroot. Il est possible de l’installer a posteriori et d’annuler en pressant CTRL-C pendant l’installation. -```bash -apt-get --no-install-recommends install network-manager -``` - -9. **chroot** Installation de YunoHost : -```bash -git clone https://github.com/YunoHost/install_script /tmp/yunohost_install -cd /tmp/yunohost_install && ./install_yunohost -a -``` - -10. **chroot** Configuration des paramètres : -```bash -echo "127.0.0.1 yunohost.org" >> /etc/hosts -echo "chromium --user-data-dir=/root/.config/chromium --app=https://yunohost.org/yunohost/admin/" >> /etc/xdg/openbox/autostart -echo -e "if [ -z \"\$DISPLAY\" ] && [ \$(tty) == /dev/tty1 ]; \nthen \n startx \nfi" >> /root/.bashrc -certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n YunoHostCA -i /etc/yunohost/certs/yunohost.org/ca.pem -certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YunoHostCrt -i /etc/yunohost/certs/yunohost.org/crt.pem -``` - -11. **chroot** Éditer `/etc/inittab` pour se connecter automatiquement : -```bash -nano /etc/inittab -# Remplacer la ligne suivante : -1:2345:respawn:/sbin/getty 38400 tty1 -# par : -1:2345:respawn:/bin/login -f root tty1 /dev/tty1 2>&1 -``` - -12. **chroot** Nettoyage de l’environnement Debian avant de quitter : -```bash -rm -f /var/lib/dbus/machine-id && -apt-get clean && -rm -rf /tmp/* && -rm /etc/resolv.conf && -umount -lf /proc && -umount -lf /sys && -umount -lf /dev/pts -# Puis exit -exit -``` - -13. Démonter dev du chroot : -```bash -sudo umount -lf chroot/dev -``` - -14. Créer les répertoires qui seront copiés dans le média bootable : -```bash -mkdir -p image/{live,isolinux} -``` - -15. Compresser l’environnement chroot dans un système de fichier Squash : -```bash -sudo mksquashfs chroot image/live/filesystem.squashfs -e boot -``` - -16. Préparer le bootloader USB/CD : -```bash -cp chroot/boot/vmlinuz-3.2.0-4-486 image/live/vmlinuz1 && -cp chroot/boot/initrd.img-3.2.0-4-486 image/live/initrd1 -``` - -17. Créer le menu `image/isolinux/isolinux.cfg` pour le bootloader. - -```bash -UI menu.c32 - -prompt 0 -menu title YunoHost Live - -timeout 300 - -label YunoHost Live -menu label ^YunoHost Live -menu default -kernel /live/vmlinuz1 -append initrd=/live/initrd1 boot=live -``` - -### Compiler le .iso - -Copier les fichiers nécessaires au démarrage de l’ISO et créer l’ISO : - -```bash -cp /usr/lib/syslinux/isolinux.bin image/isolinux/ && -cp /usr/lib/syslinux/menu.c32 image/isolinux/ -cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd .. -``` - -Félicitations ! L’ISO peut désormais être gravée ou utilisée avec [Unetbootin](http://unetbootin.sourceforge.net/) pour la copier sur une clé USB. diff --git a/docs.md b/docs.md index 5dd8fa41..7b05f70c 100644 --- a/docs.md +++ b/docs.md @@ -20,8 +20,9 @@ YunoHost's documentation has 2 different sections: * Project's life: * [Frequently asked questions](/faq) + * [Project news](/news) * [Project organization](/project_organization) - * [Blog](https://forum.yunohost.org/c/announcement) + * [Project budget](/project_budget) * [Forum](https://forum.yunohost.org) * [Chat rooms](/chat_rooms) * [Communication](/communication) diff --git a/docs_fr.md b/docs_fr.md index f8c7b56f..b236385f 100644 --- a/docs_fr.md +++ b/docs_fr.md @@ -20,10 +20,11 @@ La documentation de YunoHost s’articule autour de deux sections : * Vie du projet : * [Foire aux questions](/faq) - - [Organisation du projet](/project_organization) - * [Blog](https://forum.yunohost.org/c/announcement) - - [Forum](https://forum.yunohost.org) - - [Salons de discussions](/chat_rooms) + * [Nouvelles du projet](/news) + * [Organisation du projet](/project_organization) + * [Budget previsionnel](/project_budget) + * [Forum](https://forum.yunohost.org) + * [Salons de discussions](/chat_rooms) * [Communication extérieure](/communication) * [Support / Aide](/help) diff --git a/noaccess.md b/noaccess.md new file mode 100644 index 00000000..a2ed2d20 --- /dev/null +++ b/noaccess.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](noaccess_fr) for now. diff --git a/vpn_advantage.md b/vpn_advantage.md index e69de29b..d2244385 100644 --- a/vpn_advantage.md +++ b/vpn_advantage.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](vpn_advantage_fr) for now. From 120ba7ac9e01db5f7d7e5b1e8ba2262d76827767 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 30 Mar 2020 02:14:41 +0200 Subject: [PATCH 20/83] More fixes for unreferenced pages --- admindoc.md | 1 + admindoc_fr.md | 1 + appsdoc.md | 3 ++- images/docker.png | Bin 0 -> 6373 bytes install.md | 4 ++++ install_fr.md | 4 ++++ tests/unreferenced_pages.sh | 2 +- 7 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 images/docker.png diff --git a/admindoc.md b/admindoc.md index 6553d651..9194c8a4 100644 --- a/admindoc.md +++ b/admindoc.md @@ -42,6 +42,7 @@ * [Adding an external storage](/external_storage) * [Migrating emails to YunoHost](/email_migration) * [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) * [Changing the administration password](/change_admin_password) diff --git a/admindoc_fr.md b/admindoc_fr.md index d7021620..6dc54324 100644 --- a/admindoc_fr.md +++ b/admindoc_fr.md @@ -53,6 +53,7 @@ * [Migrer ses emails vers YunoHost](/email_migration) * [YunoHost avec un service caché Tor](/torhiddenservice) * [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) * [Changer le mot de passe d’administration](/change_admin_password) diff --git a/appsdoc.md b/appsdoc.md index 1c5ef65c..aadd5eb7 100644 --- a/appsdoc.md +++ b/appsdoc.md @@ -1,6 +1,7 @@ - [Baikal](app_baikal) - [Blogotext](app_blogotext) - [Collabora (Docker)](app_collaboradocker) +- [Custom Webapp](app_my_webapp) - [Dokuwiki](app_dokuwiki) - [FirefoxSync](app_ffsync) - [Fireflyiii](app_firefly_iii) @@ -11,8 +12,8 @@ - [Limesurvey](app_limesurvey) - [Mediawiki](app_mediawiki) - [Minidlna](app_minidlna) -- [CustomWebapp](app_my_webapp) - [Netdata](app_netdata) +- [Nextcloud](app_nextcloud) - [Noalyss](app_noalyss) - [Peertube](app_peertube) - [Pihole](app_pihole) diff --git a/images/docker.png b/images/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..780a8d5ce5539d454ae7af5336fb83a3e2c15c0c GIT binary patch literal 6373 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 Lk`|^OZ4v%IL9Dml literal 0 HcmV?d00001 diff --git a/install.md b/install.md index 5e768242..255f78f0 100644 --- a/install.md +++ b/install.md @@ -83,4 +83,8 @@ This page lists a few installation guides.

Dev environment in LXD/LXC

+ +
diff --git a/install_fr.md b/install_fr.md index 7521f412..a64868bd 100644 --- a/install_fr.md +++ b/install_fr.md @@ -77,4 +77,8 @@ Cette page liste plusieurs types d’installations, classés par catégories.

Environnement de dev avec LXD/LXC

+ +
diff --git a/tests/unreferenced_pages.sh b/tests/unreferenced_pages.sh index 21c72119..92fa14e1 100644 --- a/tests/unreferenced_pages.sh +++ b/tests/unreferenced_pages.sh @@ -15,7 +15,7 @@ do then continue fi - if ! echo $ALL_TARGETS | grep -q $PAGE + if ! echo $ALL_TARGETS | grep -q -w $PAGE then returncode=1 echo "The following page is not referenced by any other page :( -> $PAGE" From bb11c9acc725a560baa41d696967117f1535614c Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 30 Mar 2020 02:18:38 +0200 Subject: [PATCH 21/83] Fix pages not existing in english... --- app_gogs.md | 1 + app_pleroma.md | 1 + app_sogo.md | 1 + 3 files changed, 3 insertions(+) create mode 100644 app_gogs.md create mode 100644 app_pleroma.md create mode 100644 app_sogo.md diff --git a/app_gogs.md b/app_gogs.md new file mode 100644 index 00000000..f2ee0bed --- /dev/null +++ b/app_gogs.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](app_gogs_fr) for now. diff --git a/app_pleroma.md b/app_pleroma.md new file mode 100644 index 00000000..595e2038 --- /dev/null +++ b/app_pleroma.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](app_pleroma_fr) for now. diff --git a/app_sogo.md b/app_sogo.md new file mode 100644 index 00000000..09a46e5f --- /dev/null +++ b/app_sogo.md @@ -0,0 +1 @@ +Unfortunately, this page only exists [in french here](app_sogo_fr) for now. From 0928b203205202893ef5db2e2e3b0a8b3c6af1e8 Mon Sep 17 00:00:00 2001 From: Kay0u Date: Mon, 30 Mar 2020 16:19:47 +0200 Subject: [PATCH 22/83] 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 23/83] 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 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 24/83] 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 7175e2c10cecbc9332576d743c5da3c1073e25a0 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Tue, 31 Mar 2020 09:12:59 +0000 Subject: [PATCH 25/83] 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 26/83] 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 27/83] 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 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 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 28/83] 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 29/83] 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 42998393e60d328f0ef0e06830d5fa14810e147b Mon Sep 17 00:00:00 2001 From: Yunobot Date: Thu, 2 Apr 2020 08:43:49 +0000 Subject: [PATCH 30/83] 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 31/83] 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 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 32/83] 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 f9039620a360bc94b184f5a43fb4347f8e918977 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Thu, 2 Apr 2020 20:52:02 +0200 Subject: [PATCH 33/83] 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 326196a2ccb0af09d40d43f273990a8a171a5ddd Mon Sep 17 00:00:00 2001 From: Yunobot Date: Fri, 3 Apr 2020 14:27:39 +0000 Subject: [PATCH 34/83] =?UTF-8?q?J'ai=20ajout=C3=A9=20BigBlueButton=20?= =?UTF-8?q?=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 35/83] 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 36/83] 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 37/83] 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 38/83] 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 39/83] 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 40/83] 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 41/83] 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 42/83] 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 43/83] 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 44/83] 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 zcmbq*byQSc+c$^;N{L99g3{6;sK^uDp}B*Fg+-*O@IoC6>t;I^7EU%k zE_g-Je2p9YbJO*?;#+($eDE#8!Qa$wFLm5B9If0uOkFIotQ{QfEuXlWyI5K}xW03A z+r@!NVPQSMQhXuv)-!Eu#>3~W=6TmXJnm?g?8Z%e$uBpblda$QVbW5^G4Af}pI=1I zsX$8JS5#M2H>O$28U6$R(`Tl}#Aj^SH*SCUGHboF8~r8bi*TS|_vwYV;p5W`D7=={ zH8zAxd~Dm4A;*LSpBB` z(1X=YBog7V@=03i{Y;(vI~hNQmmwkJc0Z{?)w*7P4FB(V3b)`lE!A;$_2_CFj=*6@ z4||{PKn;zIW;uGxI@9V^=r@k`4i9OQDwv(6s2otWqVA5B|9)6Oa{uTATj?dexCeD= ze0=47R)LOo1~;nU%qtjeNOi81>4+paM-c1vdn=*tn=L)U+fnhRKcuB zJ1@FxsL=(rIREWiRnDx$zo(1| zjmgM}na;TiIAlw;fXQjG7O&IZqoFY!f2CS%`S1Cdh#ou=tRbJ@RMNG^F)L!JHywTc z_1}X-bjiJo21SE$?!phON@+tC_j&(4yG_&PtdD<}L>Rf>`u?zmNXt>hft$<`O*>QPwz|&BSUg+{Z#?37 zeWlY9zr?dzmtXYTY0J2{X^`i20v~DtZ;hU^k6CrlM1PTZ2e#=*$nf;rP^DI}Av_Xk zl>IsBkkx>w3su3hi$M0`54?BU-@K4PO4akQBij?16&LK3eLH0M=ra&A>m*%uhWupN1L z7QNky-*h2ek@T5wDiaYGZfQ!)8G=v#dtED2KM@9SW)15vzOB%oThnw5 znNqQ@i)$|hi?->AlJAp}+F(m%ibrS9K%aU%lb$_4mG(OLi|2J1Pg#3@@S2^CZFy8= z?t6B2MQ*CD;&UH52Zy39;&T^Nhk5OG=k10A%y31N-AgTqFrJ16Z9$X9x;0pGF)sFc z@@4jD;tbCX-LmrXo}M1l-bm|-26yp7{mS=y=R&zn;o;r7McLVLUUL@#_4VQ&vp&q+ zTAWlSt?fdI(bn7NL|fC9VdVK^ylZKf2Hx95k+cGLv?;ayE`4u*K z!cmr1_wLTa_gaE$&dXlY1%6*#G?O}C)R>oQz7Gvp#xy;)^;KIXgf9lAf-y!bq~I4mWnVM~TA zTwtC)o@YKop$>-1RTtJ5oDceX*ZowaQ`D9uC$=HnsZM0(^3mBf*&pI<$4pC;YS)4e zsik*X_26M;-?OiLcX5R6CWG?x37Er(R?0<;+5ONjm8|tZ#HKv`xeZUd~`-e7nNpi=)pg# z>=eheg+9Fzm>5+b5W)Qv)_K?`It(90`TaF(I=7N4ZoFU+_t;+8=;O}i?V1p{@(w9R z`bTGG^32pjO#4n=Fr-Swj#RWw`z^fycY3y!Uo4uC+~Gfm4){8xzEgKG#u02f?;|Y^ zRXwD<>`vJJ=(c`e8KS~{g5^mH4nz;K&rRVKljh1KdO+F^>v@k}67yRf{Hbh(Ko zEj`EKpP7i~FeDHq76n%HLF=%_M|=X;I4Dw@NA%K{P3SXhM&zRqt*}eW+M&X9a{Gom zZTR|R$hxY8f$39I6^EjwIb7U)grmvnti>RsXqvb~6LtVzW>Rm;F)ce6N1mXXFUqO& zb85A^fqLur3PJT@Vga+Y2mKVTKcO@tR`;c^nm)i+eUyu97<~4RMLeNU=h>1LpCeRa z7g-|5sjT6KD2hh&7!eJ_bjBQI8StOnz(k+=qC_>TTbk$QiaY&^#zQ|L{f`GQcZ~g| zPHDv|BAC8w(@l9iDurCgEqb@}uEgN+CM$tcYWql8Gt6QDG0>AY&e)!>bDZu^~X@VHld=F^{f9@zRuAzhE74YvZ08< ze$PcxB^EM9f4(qy(>YD^I%2A4PPXxs9AsBdiU@M;MCmznt&X9Sv$IXyT-zYYb>58; zP!E7HV#y0cX?kIFtSGP+zJHJMm6Dnz4-&_s6}DeMzmzV8I`ZpIh+-`-$K9$wd9;i3 zO?CH74>>lO`SnIKiS%VZ_%T?}G4k{K8IY8k%6WU=nM=R))4)_!DO8mo3kQ9ge{kN^ zBo#>`73oOHW$|~>ShvcITssOzW<0`<;PSv`9D>g0rrw#sYv zPfH}NhO?((K&Em0t|;!wW?vb3zD{|OU6TNhs_LRyo%Y3Ld%$aMy0+5@zs1VxxwiL} z{E(6E6y%&(hxdETdHaQ22S22~aY%}AytI7P4`M~k=b(BvN#k^=B7l@b5o4tiOjhm3KWr zIA{irba}*rOu_x%Y+j~@yUfqa{E|lB;2BIC`*v(g%m>y?d0JS#IFg87Nm223aTAI- zaBw*39LY(En?DKJ@)GG{H+fBC1#p0-QN5Tg6M`02EPq3(ItE6C2IGVH^wPT}a4AmP~iw$hbE;mLhGg5S-i~W+JtzZ5gplVLGW{_(+KNiip_9xG44ZMuCa=v}L zn>rx(&WYEmJb5gJ6stg|u~Th#l86@j9i`^Ug-*38ne@fExC}Nn-K*D2!%MQnwu?&F z+if&=8xy`)R!{^$M|72lla0%bPC6cudd;{RB%!f3jH6XtwEggCkh6YCN_{+0v!~A@ zp;4!wU07GOy2g>b+uFv1AZdc69Rs^u!WMh!@j&u|tp`mqzqvFp=g@e&eBy=sI{$*H zWg9yT<@eCb3uQN1SNObEYQGdD%u;3>N)l<&;G*;&ij$3r{+MkD;H9N{g@E_K(;Sfk ze$ydGQ4yBgp`RuA-EncwPadw!KWu1hsPS49(yW@B8Hk_VFXb|>r3r9FpMKxCpL=jc zt5mb$a{l<}2cU)TRg1+&z4IoGe;G~z1g-n*4?__*E_u6*o<-~*AG7c?rNznSN(g$< z%o-WljW={StJq&`tuGkm^7L({i(iQY!q+pzm!-dxZ=q35l^E$cE-OG7mGB`UFR|`S1TB_RofC4jDzv< za$X&|gQocexO}Lv{Xc|rJ95Uyw{O;tc6df@(5#aG_%EJljxi%KqiAbu2Tc7v=VMk8%JPoZ z&j_Q>qwiOyZb^TIJW9vA+V{Wy1~1etAHGxClb_l1iyP`ol7w5vRd=#;a_~we%{l0$ zYiIl}{f?B^+B z+JX6@RD$j>>(ci2z!alj``<`&gR8`ReEdD+>PLiG`Gn{3fJf=XcFrigaz?}5cWn#B zQl8w!SeICn!Iw=Z(SC`;ezZ>RkGaD_`1|;HwSV(DP!!h@g;?1Qx(KWKn5Zu%{B*A= zx>i~Wv1dnpwLa&g2nnCLnWNWhqay>?>{)K4^mTu2bJ=9Cjk@o(f)mY}u!C?Vlm(JN z>eELzg-!UA-_cU%o|b@3qW*Z`;XgXfx}x?FSq^wB$e?D(otdr4^2CQo;s+93Hygvi zoX6y)O_nKwPcShJya<3vi`Le1ov(<1q*Al>gP;~r=af2KaBwJ6l>YAU+}O3g%NC`P zvbft8MwnM&ylZ@&=*3cGm9CFm554>U{p#y;KKWFeOZ(vZx9c&KbpKiv{xf1IUdC=* z>#Xac5TOnT3;DhOIVg}B`j4{w&%s5vP@Uc;Numkj|9%)mW5MlN!PWdBO&LAY5Wa*& zV@loa|9lCPvWhGVxTt?d_Di*A|Id}(YX9%+FaEa&;=GB%?I#QBJo&6`3=O7rsQvtRiF>v9%7b#(|7q%0TG}rM znm16G7_+o=Wio?Ve*<%{*~(il@Gbk z+q3a*6A=}b6dS(1Z(=gOO%?k0?x@&+gUFfLpuwddl0H7FP`5szl2&*Krn)Ql{`24E z3+J-7uxO{LtC^SZq#XmP%X>jLf)!L%tuH!1*VNYvxgTx}_|Km4OiYL>r5?P{5cxOu zG-|;&+ZWBCLv`+(9MKoM+ak0-dd1LZhdi|hW&0mOLPSrfLtCJXX+~pehR0ifgGpw6 z>(w?32H>#EPork0=W#tr1O6+~G zO^j>|7^x8Kx|~bkS_lh?7_V@rHOk0{lyba@Fz_Yc+1ZKWf1SX+l3$E0wbW+<GWYu?{{rkg*4g0J5%PT8O zi)Jg;kNccFJeGRgBJjJnW8fTlGah>C-N- z@b8uJhU|7Kizq$%1=Y>u(!a!G^uyfFk|RW>?oxhbLML-OrU+R|OrK~EWGGcQQ< z5k-$BxFXMLbR1wSRtAQKw%ghPS=7{+-3t=kG9S?v8JWmN6GBQ5mhy>yX=A?-p4CAd zlZD01THrFUNT0lGJTf*cG^~z_mO@2ti$ng1d>5&nc4IDNX3pnAccwb385l&4c7$a5 zUl2JuIu=p+vs0!?Pwt=J{qL4e5$eu9PZf4F-L7+IwcAV=gIksFcay~`N~g5Qp3VTJ zYS@Qn^le4V`DhexyO!$JqCz*5fuWL3FGUz<9p>9SfKYw#=xNP!RCczZTV&MgW&N%h zrh{^S6fw8AAkQcsdlH>qbAdM__PwzCg)BroHCTE(4m{_wLbc;fKa&8XLk^S65x8(y!#zoJmP$(Ij$FRD%&bSE(dc{x_R7 z6OB88F|n5TC*pM0^D}L6rjFwU-kY~?eTD?yRQ+U>)cZcYA!O@maqw0yS|ZveHuC}R zgMj*-Mp$Rpy z;4HetQ%e;9mS0oKDG@NlSR^DGdaF7*+no-H5IBEe#?rv5>pCFkq>@;h2J1iSFa4R_ z3EBtDsFl>I#I2AJ1NR9}ZU&Kr-&OYM@2%00ZO^qpG@T{h(QX%pk)l+RFGhy-CLJTx z;vO(xv2NbH=>!jstubA62fHjLK7AnRQ2uYDel^FGt_IBS^x}q(uW#~E^98V}2ER*Z zWH3lvV5Do0zD9hEjC{n#c9)WpvJSGX&T|3z(SY%}Jc&l7EF5s;jCtYF65 zbY?;mA$(lg9(ta;jrew=aowr)8p1>y;GdOX@#9ljF~_Teog; zov*WkC92Zf5={5h6Q74i6^ocbOaT~a>0)x)`iPG*cSJ-)Fh0IL0|V}Lg%2OL0NAWqm@pI&R@frWI$rEHE0y{$cKbJg~g?$MH&u;Wbc_mQ%P zze7S^k`IcOI@Uqf37@@sb*FK0iCXZRG+6NumO3M?{?sCe>a~4B`s-89-TSJxkG5y( zTj}08mzDxfs;*AFsNHc|D|HL^>~LnfH(xfRrqu$htJEq7^Wic3hP?wAXIx+I!m;zB zBzF7BR!iz`qpFn^3pO@(&V3`=irUVO#_dfCM;i65W|LQ#xGD zP@Ox>9v&XJ83NY}5rCpg0=Kb|{j;rhh{JS6a{Uf8K=Je<_%AcOt*a}wuei`l=f}F| zx31AqB5iH$45$^0c+xr^new!fIzHPArqbc z3n5toRc)_?@y;juwIHcrFc^;bp59)w^-u8zF8fctPe0`Ve4d@1japjCf4eiCJo3O^ zLf8B##`G=mZf#A?{OW3GadET;LZ=b(WP9qR^TI9jwaLoYA)^wiaq;mhXQw+e^?a$y z6*d|PhVS^3*QRsHL}r{Mue?ykcCV*fR-fpn<-uMj4ssb@;(@|Tl&?5stG#bHwp*)^ z4k5koX)cgDK)5y)_C&wx9x18O0(yOAMRVJWx+_XeU48M)d+Ovxom*tlKHY!rlN6;9 z`>WT}Gj1TT(yLDkbAef#Eu^K4V(5t#uyR49d)#GU=sanE@m%(Ko?-lf+wt~r*cE2; zmYB!J+ZAU3B}}c)QOo7<(y1*AYwN>VymI<3S=r|`n6D9@3qKQq_4VPyhZ1`<1c2=N zP_1iYbv57l+UM$77Ev$8+l^3C8k*;T+ei2rL?-6o$>NbfHfZeitF6#c={_eY$`>yy zR}zi=i_50TG;#zMc(lz+_0Hh5jxLAow{POzD!ppPZaRBU3{JGLyV(`0oXQJA7v<)_ zw)2wGsC!FQ%6vmZfZAi>mW8F&{()_=EBtCEFvohr2?0@4^EsTkp;cfI5*7w@3G^vK z=6EfE)^R>`>Z(`T*gHgxS^i6GY~SSZCTg>=dVX>7xrxbxDKfH&CZUGA}*dfUdo*zO0gGHYVbn>ui`GnzlSL=h2!%<%i<4?7VX&hSeZPufvxSbaY$ z-lX@i+3@OA1k8r#=>N@vKWowxqheS)E=|DL}E?p!DsNnp!+(p(TM*fHP4GoPo8wY)KvCH*3 zg*s0tF41G++4Q2%tGUy?)@yYu?58?&&t;znd7XYnc%mDx_D2ND!*~8pfV1p-1kx#tDV0q>CL~>R+u~kVr57?a|mjIWaT2^1Dw#vADR{ zYUnZB5@~JaeAZ2RiJIoZ0@vJ2f$zEF^+UYE8bot#uGnSnx=;m%!f0B$=X(=Bqn#mK z`;QfDeF;}BARYJqKppOhn&Rh;Y<(7)Gh14H(r`W`t-9_*qDqtx+&nO1$`gAm#3*&N z^lPnzuDz@O3gvOv14L|#TXOc<%*8i9OC>7IpnmXCORy#H~ zt;)^j|ND6ryms$Xm3Q5c@bI*%cjsW9Y`Dcmv{fKwatB74UuOrvU4$K zP?~b&qgWTVO!d^iCdWEYSeTe4Y8`y;GvkE`=}39S+qvCY5?0qoS(=;!?E9P`-y=V18s~LIPig!g> zx~y~<(i9ZM(o1^BU7%0N?%#i*qoWh-mn2LW929ipWP3^;R0<3AMlVeZ*ng|47{B)N zqtSD5;pfyUFxj1Lq!Wh_`uqEvnVVBf`$;S;EC3&lpP&Ei7-8&nI^(gwzyIAAebV09 zd5?^2cx1p)T~3C$qke4Of0N2!QvT@)rQ=*z>8Zcj?nZq3@jBwe6FYC*Kl_8FqYSFv z_EN7CxJ<`OOh1qP`c)!gPH^fgc_X#(gH6^dDW%Zw+|)zC08f6Tww4?NTe$xM*n`74a2{4 zr?syyzh#p@S;^De`yPmbo*qq8Qxh=dMLZkbe@cn^K3PH8u!WkIceE2NS&d})NJ(X|`ABWPs}rvX#1E*>6fexeS)XM6`faZcPlzciSSQYsSyZ(4uhbt(3JQQ~YTNsu zBHWdx_>p$Itx4`Hs|EJJe{QOiItNBB+JZ0q4I^W^P2(jvq z`fN;0%F5TliLrx-TSfdF!aE;Q7x(8HZ;6>%H*oQLbZRsj{Cmu3+zuB_vRdw=EN1NA zknx4Mg^+5PI)4;ZsR-B@1giV&SLyin2}jsXn$VWNS@NJz{NT}}58d4g5)u-;gu$(? z&p~JuU%zf^YYYDN?VA`8r(m)YRp@Y$-BlFyf3fI^V^_ZHPdfH>ox2C>6 zbI9Gy%#2FFiqIdkk5^h+dh=GgFSTk_7CT+4`{SZ*$^Ax**d49MU&XCCP|{5}@+T(z z!HDiWWUxy_bmvvIWt5Ha^~1=DEC$#Qw+RT$;Te*2Vs6(MA$BVu#dS6CeEFy{4w=*R#JDMK zrryI9Vd# zbCv249noFBi#-|&)yq%z*Gz#zAV#r@PLv(8*%Jy zKfSM=l!vD=6|8tlEOl;dXkKYM6RKf`@THH)vBNHskAze+g(}Cwzw&P2%SX|*jE=?w zh{m?$#cBU1*y~SEuTH=e0H5v!v{~HV`atexr zrD$oF<5BIUg#|Sp1f7Tj9Z%C4)AnQ~v#@ZLQPBk5vd`sxIUC%jMB_K6JEG-@;!R6< z;_gJT^_)hsOB{^6se9-?r%zTs%}u8{Lpy_%@JUSy{lzamjnw+6F72$fznm$4zKi)! zv?=Zj@Y!5G&7emY{&V|rhyDrVq@od2p@D_>yC8x>iEZ^7UYLxGB&9vLNVULrChbHW zbL`?h+K!H&c9VXQ>^yeM@gDd1lIKh7p)Q`<9P%2joCf*73QMH};_&=?s{s@q92|s4 zMd4nf#iPfMV`5{22dvtx%45>gmDSbnp-;APzR89WFR!kuzkU05-CM~1{|4jYWXch= zq=-SbbQ}>CdWA$X9Z|hUZ6(@g z-x|GE7`S02Pcj&^{4f`HjR)r|R!EuUO3b^6 zi5aB~b`g#o*yg+0Baf4|7!d(8T8{cBLGjC86-@PQwQgJEq?Czy$cN&?_qX&^d;SKK zpTys4&zn=ZOnzHpF7#ObM8v9`_Qf|H|Hx+~Z>_rmmL|4l0 zm*Q9)ejpA(+BT=cotT)2>SvAZ`OstG;zKmQupnb&!wwvan%Y|63L309wc+3qJIyy^ z-ytA?htI=vPZUuJ>FGqzKp~Txo15;b)3=UW?EphHjK_)$`)ZLH5&8MH!3Hqs>5he^ zWlUPy^aF(BovMDpt#x$CnfKGvMJE>lwD9*tIORv5%Fv{-)X8)@B>`gvT-)f7v=x-_Pz+9p^woX7? zK74R!KaE&zDJH*9Mrxy&VnOj&p1~`-_d-?r!Y#cQWWv?K^uCSJ{PmG*$?Qgkb#<}p zKT+?&1DKBiWWv&2?-tlSxNT>y>P~IEyd~z92^R$=6R%3Ah@$A8SYigGvA$%e=`8r9 zPW10x#l@e}5g2d(uFH5W{uYBZ_g0prZ$p?aFoP@_G{$Ka=wLqsy49+j8h92#LA_eW zQ+4i~pqnxOE?ZDpz@LS-u-kyD*$KNYcasJM2RpmE+KwelnB%9NnJdd8ARw?lQEnY%l(8k-{+uLeYK8h~s z@3gp2`KHF6+6(4)(`s*H<~vt?eun4i=8Lgbp&D-Q5QFG@4Q9BeF3$PYn<7;~+3s8E z5K+<#u{WMvVTRGskG(s68d|e@{kSLc{H=QZ9mu!zx@On4@A5rJ`O$9xQEmz+9&T#M zalaVw&}PJyvhElt+>u$SATn_;{gdN(O4E1zYAwig+{Ryb%3)GilewJy;X$7e-uhCUfZaedR3GHQs2^Gv*7*O5gcmsVCna&mH*r*gl2!@`Q_2+GM}1?Y8lcJ_4e zdXlvAM`PCC>gn}f&k-?kCjx;`EAlaR9bC?}%}nd>>I%!wegvj$|LDlg+plDGn$_LC z4z8+%C_{|3j7Ve<_=fBl&loOv>g{3qJw4UH;yN+2v(lDtwEpq+>(@JQMPFABkFNKX zVr7Exw_%yJUt8__cwc=g!9~rBXN$84ygirk4r(~A?>V;=cr0J$bo->k;~hx@R9;(u zcFU|2Iqi@nQoOoWkT1Hi5d}S!`5<|uh%>F$)~l-5H=CPC`ZtIEa=Y!j@6&NIMQCpUg$M2kwL3o??3Zdo#>Mbn7}0h$3ysisSvpQFsR^2vF4ieI(xGBPp} zw#|3PFvrEk`F?xqbH@Ad;X`t%WhfL1a#g>+E@BU6J%OTd-Ao8_v4Z2 zsoMR?Th+|s_<92{?G=dSuO)IR0mhjl6 zk89*FpP}*PS#&&$RZO-_kmi&oE=;oh)`PJx9#uU4Cd(;5QBo5%{@SBtbKlu5jgN76 zY!r`*Hr5m`wXxAUGc#* zZP7+&xJ+SkUDc`>A#?@qqAZl_Cn_y1eJ!dt#|r85AF;5q0w4t5P0{^j4(%qMCr^k1 z{`~pF(HD<51O{D8`D*8clxT89L_}6}Z?LJRVev0-I7QAm=4gMqN2AbsNuYo=#J0)e z%{eqF7o(K4_1K`!lZv}#wkCS5HN2zxz#OA*?e?a$q~tEhs5!lj=NtK4Iwj5fVN&H2 zO28GRmhj~5ilR3MlJ#2nGBUyk)5THiIhnkKIN%+?qE?mIe<3@k5)595CVpsXJaQMG zGZA$tHxwp;wM`bjIZ19jM{41=(O+8a&{=Q2oiCpIrI^i7C@EXuZpV2;ydv){HxoBaTUBuOk}R)pip=${ikqZC zp1z8%sREY54*KApQ4Pk{o1Kk?$wlk^7&c!sDPby~Ic~J{)AOv#cC%10PbDr+l_ne>c9rq0ILSon%tc(EtWS#Vc#Wo? zNZWm>p~apzvP=XigfPuxk}a?aQ>v@4Ujlv_Sa#vj(K-6n4rgd|x#L{Zt2Rc})y>UK z{Ed;fMG{#B5}sqzPp4Qx2QR>GY)ct|h>qtvI#j^1jxW+~I(QV&V*yYL%r!tPAP_-l zeY9@1tE`}E3p8k|C#}hx2JQlBvmjc->Lp#wdWCe4=Pc3Nqh<(0?inR8F z_&KNIe-Ip09%BXtOYj)L{^@CPX__gOQieowrr&vPt6%-h;Oao?M1z-W$OXWM;{vNdv4u(l@3b9!%^^v!*X!)sHS z#GcxiPFsQ*b7+Zuw8!urSAG>Gmhro+7R6S$u>BqU` z{XMKfMurYlTNX!pYN~eY5}dn>0Sl6K&V^f_{>okO_={oyVAx+{V|A+?=z$FZn)rj3 zmn}f2d*L=G$%j#`BGKZ!HM>k;Nn(A8kAG=q#srjER8ODkNU3>;C}iuTjGUa{&K=P0 z4f+mb!AcE+F$H%-GGdR-3xt=^{=!(}%MvOlK$n>zKCC0rWD_Dc`$G3wFEo z#ZfHtgDR(m=Rbb@$V)q1Y&RK?q!!?y+x+t#2c)Ge`>86;v2w_^9$@u7TS*n~vYg(y8}(OlcsVcw5`eyuG%t*2aOHn%ys8=Izp>#?YDepo&k@hz6by zU1QBdrj;akc_f;*et~XLH8r(s{cr4l5f9m(B&DanmVe+G1Zip5aGn5g@hd6>pFdBr zW{EEMy+=V23JAtjwIeGRS3$3djwUz(Kr?`2K0ZFcphC{K1V^E|265fJ{3hkjvAFNM z(+AtEcz6=62lo7QaFmYxaqj@}sO+goMpQywF+XDDM^=_DtZ7vd4;We3)+D_#9v)uo zmoK2L6f^&pe&rA}U&sLRS#C98w%VVZGrPuOLWPT}S9gxy>)O&n+deWekw5VF4vCCP z$6psoX>BLZZuG_rL_%ENcmHhs{h?J>cR<+Fn7lfi_=R#tTU1w9kS`_a%%qTlB(M!V zj)kL^b=YeT*d=^|__THCtM=oGlI_w6OF!ppDC!xv&zWbk4#9Bv`1n4n7lYovB9`0X zM08KT+#;ZO+B92fOPMA2`G@=FSbT2+UfVC#%t10$iI!}|Sh}uI62`&&;-*(QD(P#p zjf?8N`c-zO#~Y)BRJ`+%XoB2uLEPZQA49JKJ!5-bwKfORiF?O6`p@-DWnKpL@z!i+ zwy4WPtw*3=LCY-+)S|{K-fzZU-pzD=I5L z=HY?In2yqkPO(0I{1{|L@pwt?>qkm}13wP)m#&J5_)h5myV5zkufnbiMIrFQMbX9PdK&k z`55NM%LqDZCEKwA><14Yejh@B+spv#a>x6mvu8!&v#mM=|BccRQ%Ps3^2Q zO}2})ZwpevPG;66mh|s2(ngq0Dd!h$ZycXr&*3(N7^%nJ@ScU?dm%7JyGAQ*g8#}f z6D3bqoZ~~srp{nz$nc}xXTbdg+fTrdZHZXjRRwo0+l z200A~A@+J$GkHy0Z;E;B5IzH`h|wRz2gDVKC*tXTQ+S1vy`ER>SDygk?MY3qX}EOw znV$?6Cdo7pA+i90E)_Pf0r9D#qEhMVS6f?4N?bU4eeqB8(*sF_w4yNk zcE`5{E3sQ${;*U|X~v1y!of51m49^O{3vkSgh#vV1yg?iW@BPz)~$R`j?DD;`)sM2 z@tld5_X{BUT?m%gkF$+X?Q<~+i8S$@n&4E&rsSieBdhw~FO~IFleZZvn}?>%=*DqQFotIJdPt9|1P2jP~IvZ~~>`OzmiZVpP% zAC$6Ul=22wN2wn<2Ea~JUfSMjd+}n>TUj{w@?&7(fxotp#Q{i(pc#>ae)n${9twr( z&y=1cy_+iSF9mkzhtSZWEcxg=`GFt9u`uptsw~o{cvb4O3o(Vxg{JQ+O~dZ#U)=Jf zaW%SFTYCq}JdvhUo?c#>qQ*-ffiVPt=0C)IZ73miP*_;lFf!gcQAU?#{9{WA8Ej{= zk`oyF6^?Tm+=g`{j!U#^2AP-R-p3Ek;izm?8ildWi?gnmV^hZhh@H03_^t2$kF)Is zO-)U~$`nC4HES%)NriH&`pPe6QJRdO+?&`xy2P>ru@~Nc^aTE@M+m;iFqr~66s$-I zadb{C9>OpO5yLCP2d9Ubm9gPlHd)Xhk)Ks5NXDr;mIxeL!!u~HH8~-$As(h6bK;kJ zwe@c#iMexV{8CzI!DB3VTLg#~FoY?iiid}WuKC#OL~a^xb|%d_3ne`Ma(=JVSaLg^ z();>EG91N+%5ftHa&_D^0asL09T zUf&i9B{Y=@17^Y-3N8t!d90Y281f*qj~_qA_kwD+w%+HVfr0JF{>j`|h8c_jQ+gBM zv(LHuj!^j}NJ_@5)AtSDRV{B{{-R3LCHt1iCM=xb2)jsdY(jt$Sb+f|E!v0g#s`|Zg3JIU}@zNz~>FP}XFsizK zOvZL}BsP>khMq%JdXcb=cf9fO$2JuAePc8iLszirfIY*kXgAXl8RQ5uKxD^w`MGgs}ex}24AVFA{z)g?~zh;200?rPmW(KkIXo^I}S2V zegXssB;hyP@E>>yNo<91LcXm18)k13NP(Lzr=_J;h@A{dOF%U#fRU~xcXV*T#Kjc} zh#u%j0&YRk{k!i~Hh_!60nlF1XUL&?xXBkPpM2moBIfq{>1j-dnW*gzvw6%Rj>%Ot z{i{6x(5;`sUA6-jhWzj)U>XdLX` zl||%GmK-k}wlrmSL)`m+3z#6P9u3_wWNU;_>^vM0pjs`U&rPk_o*}rs`BffqGn$4H zhCNN=%nw?IMxD|giEo);iTTM%*JAKF)ODrIyhOXa=-wP#upher|;)1?O%^<=9<9PI21 zr*ok7<7zN_bSrJ4{}89-aPH()+auNc5_RHXu(_L%;Q7BZd=sy~r68A;h{9!bA3&D7 zW3D$Ios>@!SZ1RsitC{B8<qn!Nu!r!iJ>oBF%nl58UhEo?82vY-S(wZJ}*us^VQ)X-Wi~DQ!Zy z$BQ@#LOZ&;GD}-Z+GS~Lx6`k~D~p^h8h_tIIMq~_#H@c&Q@>k&C-h@@#j^paURO{c z+8D`|*n8Giz;k?_e+9vy`$S!ngb%4NA?U(sNZ%78^~~@z(JhEZjB=z3{HLz13-gl%%?{)@1Vc@oj@Hx)v}}J$ zaT#}%KX&=NqrBL^+w9P0!8eS$j3JLg1KdJih2DrGisve#l9)mbnQguNX~MriF`D&v za^|jFG{Zp9ErRRnxNe;rd-b#nfnhzQa6fIc7?u%2Kv`ysD0Q#K^Ca2yWBzN=x+h=i(Lz4F1tle43|J{O z_fHPQY(v3=zJeYDQnG|52g^NCw~sf!J{-FX7S-HfCftL-?|}`%0rZu+0E6*pZ68T{ z1Wf-~=oL;vu})xSF%Oc6aZt#=wrP5R(D7}=oyLEh5QA5_bVx+XcufMEN?(B6T@XMFGp#4il{GA5Feee)0IkS9J!NmuG zc0m6)wxcqTabz<75&z2EclviBlhfIDs!(QX@{dZt5uiTE?dmzJKi_21Tn9w~v}<`q<>zz4 zB@PLz=lq}{A=E%5QHi;+rHgwMxjTmoD7Fu%mR~ekW^>IdFaMF&R;?hPP|$bB7x5Rl zQHN_-yp%qp~HlDQe9!&*&Jw+r!UHsGbFA^Eyr+Jwd>PQ?^fL+*E#_le`hv zqRnC+8Z4OlK^S(7;2f< z6hzozwm$+skmuG28eVrWXu~bVS$TtKh7X}1_NIm`BVk8FEH&b!xxME$n$}?*k~?Zk zd73~2hEgAkfTqgpLMjAW=>Mj>zrWp17$K$|V@hRhC>&=><*wJbyWGUZ#`f-SJ_93q z2d2|laFg`|;;By=hs^$Wx+%{u<^;2kFej9>ze7IfU@Bw2d7+J0Q}1< z_^fZ(OXo@=x=Z_?+$9e*UwksW|M}J}XmqDTma6=lu6Nyc3H|#RN^f#2vFs9-7)A@-X&TJ zxWKos)Ar#JtI+(sZi01s>iu!G(+RW{&@`lGCng3)&-$j`Mi{(?s1SoHUpGuHs|Aio z1h3KtxBU6$PWl|*SuP8&{cBmF#O1c)$-3juO><~3#fIa`A8%Sy`d8tEPRFmmq zs`SrsvxQt%EAVI*73h$t^_tu+Fepy|8;X=di!b$&0B6L~N7nsAp@Xr_VlzP+p4u>l zhuoUPc*yNnD95@u=HR1*(@s^FL`|rtk zCBWk!5<$VXJFRZ)E;Jdq8aQu2M6V zOr{hZsAn70YokSex{hL%mmAnuX)_Yjb8PYp`E=h!2G6glWqDp~drXwsi;oSd1D71D z`P=aDbMPN|fNoy}Da?^;6uq<&`vVH9yU*-S9j>4A!~Q>Hy>(brZM!}UqJT&#Akr9g zgLDZ92$G6)r*tzkD%~n2UDDlM(hcHJ!_YAF&^5$&`@YY!_wn1`A9x(I)^g3PJFYmd z^Ey|j%vg~ugg%O<_tVWa$Bf_afO<8?u&w6z4g9Az-$^^c_%=&$fo4~LGXu9PQKAme z7jjB`*&OtaL4Ttb&yzyO@_j!FX;pRsT6JAr1yEHOPM&f+t$Q1wjg;Ata(?5vsjchn z;x2o!ST5K%mo!qKm-u>g<6Y*}JON~RY9_s%x+CA!%84LZphh_PakP(@+}+N3?;}N! z{H|TW0aphUpFyJ-Xp?RRYy-3iVFn%VgXQj5Gybm8)S@XosrrQ?QaVH@%TD+$5b^c; zWEE7<7(MrQ;HN5U%)cAdW6H`gS-}%aV`_~l=q~6qg`;U{E2%*4uyJ{UFik%&^+kzv zV_4`Of(h&Ci+bJG7$FK~oi24O0}Ve_K+dXw+Rl@zu01}%6zuDazx(?JEa7^6|I9jk~e;^ynd>1ZU$CF5dXbW;cL}I%3!a*qpPd*y&vIW0|O~>1p6=S zJ@+wrB**gpK zf84dW$<)F5G~lCTWZF~n8Wxf-8f(ohF4H88tgJR)olc%E9}5tP-<}E+F+}u^j)MLf zb=#KeM3k^4(Nn*DTqy zJzO%85NrF!KsHz{RHr475Kl_A-8W6Em{@u$q^5ud2tMMU8KEim>+TBw!Qk{O3(sc375bsInB;2;21i(q^z><15u9N}+M zHOj^VL{F(gIrM{(V=(L==d@V4wIw1k8S2VS%0zuBx7>+-!;%NY(V)i(OG2gvnsHx&~Y!HhE zO=DLVXNEnEdWl|dxoWoMI^wOT`D44%(xD%|!e~6XiY8!Oo6only-&L-osN!}*x1&B zm|`qpxp)9ghVb)OIxC3m?>`@E+*YDjYQRrbk{z|v`09T60__@gTCgzi;OSO+*7B$_ zM+++k;N@GCKgdu{7yE#pgr>E6=>+7 zPO^r2g)>6Q$=R8uWpb!D?^i@xf-rCwo~?D?0s`*N*4ZztqG$FzUL@*TtOs=4Q@^2# zx3quFfIjfzJNS$R^q64tDQoMFW>gRh!#_vCsk<*fyc$x!w#NIQ^gkC%Vt>qHkAa%I zFyU$ZzegobiXIrI3TyiM#1sAR&F>^JN)^|~CmNh+{Xds~`SgUDq~RW)E}Ug=*0?rP z{r}uAiI#R!cp!Cn@co960C7tZCYp6cekU@KL(gZ6K43r|ld zauwE>uxLb(e3K;xqwq7)_C}IH&L_Ahdfh_8iLqVEZ++cv_Li5wwE6M;(ype>b+)LU zon1IgxT%Tw^6L(8y#_^xe93r4(6FW^uheb5^qcwWP&S=9K|fFsW)NTuNfT|HDAuY9 zpKtA4YB#O`9T{I_vKuybd28+0hgahG=bdh-;jL5{SjQFvtNp;X^BD~nTGYXqSXsM3 zDRU->M0!d5*5^xk`Qtf36B(kZa!&x6vFcX_hM^oQc3CSQ$O!j zG~6Ri2jw65pAWVwfc}SQx;UC?u;vHUs%rbGcnJ(lPP?5aYRn%Zx08p>iKPq1WZufl z1C#_{p~4A?PRE5n5u+9>xx+tma~_gClxPz>P)OoL2Mh^jSa)DyA^iT+fcol} zp09Q$bR-)tcklXM3lIdqJ5~Owo-@YO-gDhD1n4d=|2svB{JNv{6((o`-mBPU%?FQ_ zMY)m}GicEOpp{(dNt$Dy?%s@x$x25Dgp|rb4-ozfO4FP?aWJy66&Se!$VDb z#ZU}8soz#LxHLj{?}10$fwiUIdqB!%b_gZCPBY|Q<3=_if4nrh)6pSu@_tEXeRHW} zo1-nHbBUHoFp)s~B6e7(_HbU`>|cuY^E+38BOVDwqKFW#Rz;Bf5Hgd%?^rPiDOegU$3pn2B~_>Yc`j_8G!q@?+U zZeVjR|Ngykdl7`%)Izya;8O~`^7U;!8rCgQ2Py-*R~B`xgZH0y%>eUt9LNJoWV(p}R9gpXOf$yY1HBOcvP8RyRmu4u~hp=PY+4(yh0w)L5P_(JG5v zv!*xSvWt2hJFvGMm$eSGCZ4fPDWtUfpDj!+qPWQ;z0ZcH@LJP@+)jCMIIULWa4E;q zVaO!8vgtHjD(+PpKfIR#W-RI%P%Dpv3k37sCadIrR$z}(isZy_++1CA0PYj15A4X+ zGajCB>2T62yG~3c`aHr3rligH_C>W`6Y(WFiN0s7`tFxZGPpEBolA>(bmCR+{iCJ` zQy%XP6}y&;Tp6VA((bNev>jZt&KKjL#Y_0i@2cxQD6T6-^}kk8p*?VPJWpldDQ!GN zogyvP3ZZDts2eP_p+*!tnv()OpUw0eD^K!yef{H|dH;}*{UDJ!c~FuVx8fC`v@kam zG-v@>5Ukc7v6v}EOhQToLVbi%D(B@nCs?Lvn&l2p(P9`BK{q1MLg@ibbpoC{PjYhj zp8e|FgtJVN+2}QR@&dmL6yWe*yjZk8Hrx3z&KUM9DpgnzWcS_gBwxQ4aBT4uoU+EH z5^`xDhQ@Wpgn}Inx^PdLkGHl(Ty9&uMIqE$T6yQ@Bc#9>ReE>J`|4JQnDj;y!K$z( z@)Vy}dpKtlKR8G*@EHcJSr?Z5qpNGAoK9VwV2I2S2Y*}?b)B#Az|Kzt5pfX}gu$*B9)}`3WaXmS{U7hP0}!VewuT!*>T7`F$>+8do*m_o(;w6rPAjIhync zG}V@Z)^LvnpV6BD|JRU@qwP1>6s+&JTL{EgXNwp~c zXdhp{YCh}0B7U4SzUfk|+X6^m8l|Zs4U$uxNh4AwJc$ZmVX6}6%tn+S)r4#4dqpB2 zUtzZccVIl!$FjLl#t}W_d*@SWMGN|LjTzBj!Y#VLJE}$lGDCt(j~r6B+$}gmbI$#@DB4aiyP+Y7X8dN7Ag1BBI3;zQ?CY zAoVNec#iCdgPrEj8jj!uzSq0_zPeXL{Y*^9k=Eyio<eh9&PB(Um1~1V zHl+9OV`w+pvBXK)7@!xgX=NdP3U%6>K7dn0&)Zk&3q-Dp0QAs^ORjrG{v?^Er`~Af3$rX zNzDq4+UqNLKXY}7LPpT=$FDzq8tF8blasR}?tqp&tW=bruMM>xoGby7Bf(;hj=&Co zPmS?UE}{UnVqEH%U)NaFf43PJ00YTM9*Oq%HlR`4(*>ynn8nF;c62-}Ko*Z)aI_ax zu>cMB=Uasc=b;8y3cjyD+(GTUFCUr8mkp_6WnwZ{3w)3=xZ>p<`qje}&jwsP}Dix4u#+aGIu&8}f5b2)ZLqZ&q z((&6LygrS|^xw{^3+x*C(> ztn81u31~AEIa|GjT8c`mx*u*@ycz6UJT0g*s)*eOKeYm~;5+Y!u(gmGx{?l0^o0S$ zs;@Ie!0`)1x)*i!cppF+tV9SDmy(JYxKRChjy_wKJyES;BdJ1}Q`;=Df(A|Xr%Bdt zM*9F5={!2rbg;kQZpg`b6t&rmTIwCTK0G>di-a|rFl1&9Cpw~biAhNhwvz3a9Htu} zldNd1s3k11n;qx9R1f}Endfb{2MpHyHm1k<-$tgy(~n4QJywkXXvm=SVtIEB>cFrg z0-DKxeP8hHHLg&@Nt*i8W8i*3hfgIo#Ks?YFCMZt8wex`5)%`7TSq^*il6TV)0}Ti zj54Rx1@V0xdnJ~9L;_iG=HS;A4g^fPMb}9#eZU$0P#YfmhZuAn)vugd5|ip^9u9Jd z9G=^>UhNPed@SY(jy6eYdfE8rL)zNJjo2hvYJ@>VoIrg)ONi^e;INke({(z@*4K;^S})CN)O4Y(=8E@)tkXu2e)9vX7- z<%VkxR6S+wevHOvbCt}}=#u$9ud)%a3l91b=`kR6+AZ9$(tm$(*sgN)l@Ni^6P4Pu ze`YVEi>y@M>eQ)y0ouO7?!+S}tcut4K(w5twr%SjM?B&CLsnf-pub5*cJ~}Lk?G?F zLcqYigwN<^e*CxQHzQnK-@nHQCdLj8^Xo=WZDOsV`T6;3?mzEUPN4;oX=ofA7(_jh z&gNTx`z>gfe}GDT{5=oQetW)$qUjqPwT}(n17+aWTO%=v&*&~l^$Ow5Ci_;oH*dgL1p@?=X& zLn+Eqe@PL{A?NfjqcW`01D5d1KBZ!hnbDM`rQ5QSDt})2Uzlea*LftO&vic zoI5b|{nCY*B^)%drswh9(frk^vuyoR zeTE%;L)W5&e+tZU{8_9{-hza>di;^LH9(Zh+Aie-9f^yqARy~vXM03QBpGrvUFRq6 zchwLJ_d5Nal!h6L_s6$3Iaev$Iq#$SylVo_6F_hd0Kw6vPM-Q~?u?Dyd02XOeLglC z(6f?%`<5$F!DhBOP%*hqjZwpxsi4|UZ!lqSXy^r-Xp5u+4p>K5zwoo-tA*H}2NPf! zZrAP-Ck>BesM&5oE2OY)v};rB+iuf9crXrvDjY3r!~p0YnCNVgMEe``wCF1XD9m}m z)2BO;$=S*2m8$0PgmPT1mNC<3%&=fH#E+28huc@8^g>B>27V>Ki)}DF6H8lwn*`rd zZ9CD^Fa+Ahe0^4C(!Z)0wNzEn!0N2AV(;OJiq2WPDgsxy?X6&@_u*|QsD%A;N|;D| z)8f_5jYw|Lb%x_bP@fwZcn<-E8E5@&wc&&O*QW%ic(PCUGo6~L+BN#(C+hI zI$WKHS~YFlyL)cJo%ktfRO-FuLMc@hjbDT?@<&Gy9)&yNng9fI4-NbdJhB&9B4wTn z=IVmTkEx)5ScjEF?5;qa_2!Rpje{|h+ojq~o+n%`jQ*JT`LR#uGyzW!6EFp^2rYyS zD8yaPvC(gaQ_xGCq3b?-J17Y&ZF1@EZiJ{k9vvg+SIath575BrowSAhI6C1Uy1v0$ z_r354L`}>POB`~)FwBs z>(a!lvjf=%r!EJObjd`fYZlA_v0$zGRSO`@D-pd1|I95n%4^d`{QeIQY^MXX}l3cUF z%KnGPo}v#Pvm4)j#&8iz^?CQcMZ3;QI($qeic)moTej?l*U{t4p5Adf`rLtQ(A2U6 z(CjtxlJ#bS&^35Z5I&j0qM&V7>5R0is+fPOb_qRDvH_IcsdG*ptC~B8bs8c{ElSbb zn=|mjcWIeR%USkg)?kSdmB@5PFZhHjLDmf@;tFkUhm-j&madR9tvqnhY*Gus8kh`P2mPReaF?@OR1a@o~8 zQS+7*Gx|yYtm}3mUdZtEsm^0o-7bG1gcLbtAPc}_5EPVuvj&;ba{8M)#(!rQq_>Yq z$dJeg4s6J^Ti~5}M(Ufe?n_{_(2mZ#m3k=f zr8bXegNXRa8*pErl@)7mLyZEp8g~0S*m&AatSA_Dpy&j|5|(j;Ue+!y8fw?#noPvA zftdess**;LXG3G-BY4I0aVp_Tn+qJb-Fdyogu*@>r&X96XGcfCru+bW=J8@J9y9>e zF|jk#x3^tldD3J*EKv&YH!ZA8wvrNrU^dNuq$Us3E-|0l(;HzW`b*C)(IFFeQwXeV zXz&=>vjo&ifcp>uzH4w3>Yg6a8hZLxsraY-{5Ljk!nwLcdQC0`l@UrsbigSYd!7D- zk-+P3zsWY3^tfCp-wtn0=t1T>QqSfFe|3i^a@y&FM$U&z4`1Zve*5ub19u}gCod)? zNu5bWEp;{}xJMmocv+fvd`;X)8C(Nr-`3>F0KvDH0FF9c6uBA|B z6_$Sk6x_}re6#7X%)6}@j~9kewE%vF)gcWJM%%dk=J}!V1*MU7*m!g-!pVSdC=Z8P zqr@P!Ao4Xk^CutC@hK`~+jJ2EZ0;1AXKGM(U_ieZNd=A7Dbp+}yegyr@ZZqn@qa@T z?VuV%zh4r6<)na+K(S^+<$#k=Nj!u3sQG0oBxA;wX6Y1YQ z4DvDnIpG7?8`L7MQ72NsAOJ-YCwUyX{(hi@0@ZA7elQBsQ$WgN0C^?&&*q@$%zCk= z0mR6HWU`k`ow#=aq4N*BY>Q{l;q}$U&TLEa9=s8%S$0Cf_ZLh{Pp1KLgw@9{Epo#; zCWuPZ2j^Q*4g!<_N+NtntyE?1dvypyn)$C-zqEnZrp6l?jZ}0LE@w>1nGeYaAIGn!O*M6w2ba&ww=zxQkVFTxJG@p}9PP?v5EvvS@O$ zee=T-^-djRb8kdJoshp0sgvSM>-FHgV63;k7xw_^?Tv#&&M6UC;eWF`zZ;~Vh{Gr= zVBG$-0iV&)!Dfp7P&DPRy75q`8VM@zX&&j=cQKb4KYiR$l~^H|_AT|@(#*OBT)B^7$FWnPz`BMhd` z&lW(3B`~f%f(^ewfJR6{vN?oS@&I7-<_ay57W(d?S zdac;ZfP{$4=G^A8@`y)ltmaIkEk#(?*W~2E)@#(odJ~QNR_F}W?L^do0!c#gR_(RG z?e#*;&<{S6IQi~VD&hKr%WdmxF$f>{roH^7X5N4^vGY$W439QvT7*A;M%OG+_q}yy zN~7MxCFexT7;qa0BD3*Vhb$#o&&Id)&dukWwRg+@LAsuyb3F~n@A=x{pBR@iq~VNM z+S}_1G3wkPH8}ZmsE>(J)_Q(tYQc$OROF13Lj=XT(i7DU>TLiTJm_FZAFGsp5JW&V zyLh5sby^E~cnzbJ86r@-eAFc-3 z-b-?=>T?FCqr;7{Lfm{YE|mBcrysh(=yiP8&lf=V1~F@0ir)V5_$k-Hi|~Xi1yx5b zAl}t{I|9QKG9QcBtONKFL)*=burpw7rp)Qi)>w9a^1Uvf*#%=Fayo|bw}b>ZcMaQ7 zWX(5QEPsWRnlDDY+{r}9#B3Pf(<_%w_>MxT$&<4f=XgzofUy2D>f*s0d8JI-ZS}u! z(|C57lX=YKA9fi7-Y}xj(4m`!m@b#C*LfQsh1@pUcVwy8!^_&}GZMu|MURMk9$-5t zwd|?`Zg%4Biey;WfAFJERdy1eC9Y0;X}tFj7~Jc2dHvlp>e#LpVjbrjOZM)f4w`eW?PiWphqCX10-JhK9I3uX zT>02z@Y;bSuoj^8ZH2RXCXsRU0fbqOf7})$1f*3b`9CTGkN%7L=*4Fjq= zj#@%atJvFs(#Xt>1MJ(`5kU5)RkZ8uJ{%4FEzX>4#C-bkpYl(=4S*1Tlp%cI0uvkY zL@1VNN}=>@Mm7+fJs5qiM;}O-fV;`f^iNqRp>EbKQH@_x@1M{AxmoYme{S~QI~Kor z1?p`7UZAV~f)+gIza=4dmcJRw|C~-B`RmmFJsmO_cDL)_57JVZ5%qi-;c)cW>+Mj%1%f3F5-|IfwXW0#r9P4ol7xYWq;kAO*kAFM`% zHJCBev$U4uo$*vVy(T^*wts#_){Qr+(;Ea(MLv3Y6I{EKIwMVy*#MSxnc@E8|K$n4 zxr^vjx#b@w+V!s?KM0o}0jkDyg>}N+)_(>hL8L}|O#xGd_@1Iv*L=JEDaK#i5>Z?kvU zjx${3k$|-@S*+Llqe$k1);a*YDMehKytiWqg*4E=X$)kz1O%`@fl@=edDTPULQw=S zRCLu|13DPU$13d?e4`lXjcc?mNl2u1%QRn-PbZuC{3re2S@y7WF60BMx|( zLMId&NDXgPRZ|=KA|1}i#MA*Ax&brJZFfd06gtp;lW>;D^WR4a$u+5nEr%?Kfg1sC z!_}3y+upn)fG`2HQlK&kV8N-%wUN7@z;jrg6lXKyuxOMyim{lPn;-N7#TWjyBzif* zum4#{z1`42F~=4F#|l#1%)cHiFPAsFJPDP}dA9`M2DeUw)?Z}%TXRgaTI{6|4k1}t z=d0Jx{BBN2!?HN-hCbf8x}K@_c+hmZ^Yp;ns7&vVv+FIXEnM$S9UsF?kVC2!Q zyeFARA5xEemB0Yy&{fnuabtGoXDr*XRSZfd-~aOrOw8Qh_v2*+zWwM6iuB8#*k)bBk($T0jl9EBn#up(IF2$;diD5CsHr@6fVr6QhAw zY#1X-^+;;ptEmNa80Md?5dSmev*p4&#rjS0L&fij(|v=ODzt&Wca85Cat#A^6%CVs zGDInlMMuB0N=XnDU#hj)#Kgp29vwaBVR_)J+HFzX^ZO%uML=X*`2~WY9A-n>`t3o+ zxYefMrPAz4YvC-nTXNh*nGzkt31NlC@K0DdMQT}`HrtTbDfv*tW<<&j=F+%hq^fOv zv!8hXeTpYMM?R7;7iac5?IG{WK3cTgmgYMxMZMB{avjDaSnbeG)U!IeuC}+J0t;%f zj{EyY0JRF7y1B9@V~F_<;x&e6&2*NVWGQbHirsY9s%lddokzG+OLyWaCZEM-WQ3)E z0xBE^8%FS5WU|CLyE=9hs)N4U8GsvIqvFj%^!lol z-k*K7tY(ja`QE0Su=tfs2(?_|w}pttSHNs+P}k10X$-WvlUt$b4m9FzUZgs=SFyDf z8p}&?+)n|+Z6+g%4Apv+MpRz>o^`5$VTkLwbdFlFoXJOGe%?>ec;+>uwVz{ng%5&` zo4*Q(1qyrYAOoxPNs)|~Un$EjL8uy2fRKi}03sQn9D8C(>< z&)W!Id6vbY{&wPLdmOSUw=uYSPe!fo8zuad0+ulR-1nELCYyQf)#*dDifp8$1oR_Z zW)QNX!kl*I?AQ9EP3{9M=JRsbTCNG|lv2>?PvYqVvvf6gFOP4@3B90Pu(G$O|J2Ye z)7V(Zd4KFFH#g6P=X@PVWPqZh)ZeHRpT=z*M*7d9e4sjSvcCT<+cb3`w@=pxH%|{% zODX=XFSP452rb_l8n(9`YUMf6q#vooKDZTvP1*`?LLmZRE-c_dpo^l?HP~58DqoSx zD=H~UJKF@g)$oH`snTzSLlZ~QWy2ZIcUUKzkrN^Q{Cs0x6GtJD5yv!5q)+y&r}Df+ zSe5vVV6%VpUZmN=WxA&Dt!t}?6Qy{oP+XUfpT@L?zB&#|o6olfV?otv&D6{WUP2ZzCTkK0^H4Mg|?0?QUg zk}k?re$~o-OQkVqKIBC(E;8F4) z;+fnkbdNm&H$xf5XFGsd2*}aU?tAteW#RLH0rQ`!*UeW~{pPa!$RDuLyFrQ<82IoZ zwZ82I`t{{95IgNQHtHVuu;JS12d`3!8R8Z^YL)dsose$Ktl%IjA!6sTq-h>sdehx= zC1+F_-reV5>>9Lso`T>Y7rXr-V}U-|A(E%d`G+i zXeC;P^og`$l*~u6OW6wvi>+OizN*oCGIhN#g2r5fS;Z77F5Zw{bjw3yf2(p>`TgQx zZMz~t+u>k8b1YU~N&XHQ!zs7%~-U zAC{z(Q$Q;>wtg16c@Y<1hkIzOau%AL@cou51sDw5KFYJe)Kl{)eZik z?0CK)Kc_mZ5wgMa4TFL-rr8eTW{fiPOq=WL_d7X{ml;NLeUMzl>*kfKB``U$^7uc`o3JgRCkl(hM!kFG8d@6C zOcWS4@T&xsfB#Ie^2)yRVN?Oj^K-;A83Qg#o2Cbp~NFq3H4ke3uu z>~&r)i@RZGCThKIxkUGgzwHm+ebxtoNaY9-5f|CQYuN3MDMe#Q48+2UGReSCE^vZx zad!h%yBaeF7jCv~`NrPmB%^(PHO{Ra(% zo6OvW*zjng+2M9Cmf%@Jda6w5On{#|>6N5TwhAA0lKqj}>dzNnAD9cFtYI~mH&S_pn~uv0yzcyed1U!13tJqQgVzoYU4f^+ZO>n5C1m%nWU zw#T{X=^5ddal_2=Zw&uOBE~eNCWm>ef z9>QwRI_4?Y>0PLKXez2o-e>)#FeSbXopfH^l0&?z^>H4-V9tO|^_FjKsu&G^Q^_xD z^3)>dCbro#^TS)Vr;bSN?*v!FH@ru0zysfp_K9xlC>ywZpt|#^_x{wRSOO z*rmIkroQuB=v%61!28f9N5`{{#VJZ>U%oJm*FC?JJb5@_D19t{ifa;5zTtE5R?f|KT6k{5r<6l0Bxz zOi?JbrRxjaO4@N+mC|gJiMfV6QYKs`Pr3*q(a)9HKlHl4uSZlQq8^4c8Az}{&}zc| zW95^&<-6B@Vew%5CHDI*33b0~f$cU(r#V}xN^RjZv|+FjKfQ-WmaodJe|txZ3(MM3 z4Bv~%c7=Y0bauTN{$%u83$ZSj@DNgYJymzH3%9KIxc4q49sSi#fb7_Yu0Z)Rg&W89 z6XiBe5$`+w0=0N0^LPtiC-ZBBBxg^auCB+WY!_!TVQ3j^C8a*GvMS(gy{shrhWQhX%Tg z2Xfl&db^ii;nkBjbKb=w8e_(3X(jG9mUyolQJ8^Urv450zGb)5dweGJ8`nbAjM=DO znaM2^h)1IAZ}A9Buy>cs=#8%LSZG<8PibwZrS7h&(9%8&T7vlfnvZi9jH?efXEO<@ zHx{tc$f{4k&z8O*ds z+psB%y*rjZB4yVz+_cktoOFz><9ABCJ0=tMz=@H$uM;|vcgmok`&}E$tIB4n0w+{twiBP08$}vzuTM1e9Xo`z_ZJ2_%A3w8jr;H> zuv?9|2U?$hbs*I7#L4lXFYcCJHTxOkyTMsB_tNI%U@;?4*sX><4o8;~Uucbli&HrL zGzUNH^0aqiF;pf;a(5YX_zTl-&+^5Xg!6K1EP7F$hVWd%c(0;iJh%Ikco+66kh8=7uBj=*@xo&%>#jfj8g~tr}u!Pkn^-<47qJ4My79 z_YLo8yLp%Ix-@U_2i8{E|In0QQ@xZ6(nO_*B)M*Unaq_CObq%S7uZrx=oK1S9MgNw zJRPD}CQgMrG5$+;==i$#4P^Yltto!7Jo}xcs-Wzv_nG7QT2zl-4ITL3g>2uGmS&WG z{F1!Rv!sbI;Xyb?rF@}&sfwGT-WyKb#j&J@u88>m0dzug#{t#)p+}(m83hg*eP7=% zRh5wJY59Wg0X}Q=UJ?KCZI_QPwMBN^%qit^%-nGe66j5wr^hWv@Pp#sJ9cdZUTmPN zwGOMid*={KoHf2>t#@|a%RS@wGJCR@%kpEMb^^)rLXUA7J*~Mo6(PnfUUOhToWZ0A z%ocObMb6Zgx%Lrpa?Ru#v@{5_7?8UDvsy!Dt-j+{v_E@5{moW|TamHBLm({NQM2U7 zk@L*jQkZtOL^cxz4=cN%KYojBOpPrbN>UfZGx>k43X^Cj3MYW(W_ve4gR-Y>ri%j? zwVmMvl!K<=2MnXhMdU%8&q2 z`QFmJI4|2M><(2~igYiFh2Gfd?XFg`yyboT^C&~$l|CRTz!*N5EJ;>}D+7C(@0O}DV>{Q$!?5IS)#*=9I>nK%O9o&RwL<@dwokV*LNTFr z*%Mo;3LcEo-2%lq0z1s|@?rh^5b3oP#YcC--#VNe_IyBug?D}qtFlNe&iBY9$CbPl8*4>0)FZCMzJAv&UtqgR;OBszSzGj}h&0OQb zELplNtOWbxV|D%%9BeH4Wu5sN8nuo~pU1^sn8$Ok9qlj=HVgD5*Spz~#0Oq%bEcDY zdHRHL3}06_m-lsj_y2%vsuAdgMgC-NCRMyP*~4m6{OIZ*i+&@R^n%uWJikNj?z(a8 zBQQmHV=7iv?~2D43*QOybPZ|aO}?MGTNh#RtCql{b3?H}MyCK~s%D1{S6+K0;6%J5 zms#BxG5k(aNrJxSe#i`Q{`y79cO+@r&tQX6=iHVpMtm$L)Rcqw;G@HLXW6a?UDMB! z_E}^ePB+T#x~WIw+v~P>kfb|7cf`qk7M2$nxOo15=6Cg=KtUS? zX1aDgMVGJf$6x&Pdy@ZaC6<3fU+B>fYqRC#9jcNhe1YQUoK9596soYK>^;_^hr%Pj zTsQ5X*ec#e#grp&zb*Xw^5*p5*G^WiVa>zjc)Z(A%THr8kS9O0D3 zHHA&Xs(fDa4Uexh1@oS>J{mw|DTrvFwiu|biGrv%m?-%%;k@&mCDES6a#-J6@h>@y zb#hI~*TOV8(k4~Y9l+#Y{pJ}29)QX5li)2ePB|ivRPf;JO2}Tga`eQ7^5oU^huZrB z#O3M_JGI)36mraNB;p3Oa9WFCY9r_wBhEl?kqqe+o|O zVY?)l>GRN`U}~>~C5olcbORlks7nqmlrJ5k{V8i;!vx$ z=G_k`+tQuSI{K;&&3hV)JaR&A(OdNb+r;cyq(y0F`$n}s!|+Lag{$)>=ivesVHJzY zJLy*nj`>e`thzj=^bW00w375Bt3UoRWUki04${ka%k-QL+(Kup7I-6?8tS@tNOXaJ zWB=nbOWA(A)%!kP;SlUU2VJiXxYtvj4eHkFPxV#WrL0j+1$Wgu7q*Wauu=%#a|079 zzl)RD;8yv7d0q{Y8~e@*D^;eOv<_9Z8xrUm%zEWmAMkqu!3{U<+$fO9`1nR5{eS3W6fe5p^~sZTB_Sr!xwAe?@dW(xpXMq>kFBx1^Re|`|1Q#iWXb8y+g78 zsH*I=TWN%ZIxMaAw<=s56L;VKR`|;&1)im=+ZuRkQvwLiMAXXOdhqh%G4=`m953b_ zd3ibBSOSeQW1S2dpLYa{sny>Wo7L;{E`Ia5ZQWKuZdKi;PEvafAbVG73cfLfckbUG zh<-uaChgnzjQtH=FSOJvs;Q>2T75gS$yKy8&2Ia2$IXvgqiDNy(h91#Jv-a@iR57p z_MHJ`F7#jacV2W5e!1Z4A2MB^Z}NK)gm+=|PAvo3yOM$w>_3}FwWJTt4GEqJrjH_W z9S4^Bn>&88^uLEqG;H=O%wJ~Pz^+VtYVC)%#)B)J$`iNolhe}ogxqLjQcY2-^9WeU zHS*FKK4m``I5?`%1fAZ#j1lhnt|YtyI~Av}aXAVS@r03hTxRN2UNczp_}o-d-Zl<$ zTX$57xUZxmGAV9Y?a#-cmZ!&bat2ObP1&brl(QdJn zlGg0D`AWaZg%$~)9LXz%rxZ~?8EtAijJbj~nOocx?_KpnYIo+PcAhWHrnoV9EY7G0 zHBww`fVY#yMC}c3M~dcweNC z4*U`n^?+y1d#_~r!_sll(9Tf^>BOg}UHdA0;#ES<(E_ZA3ct60j$2yfTMLBOm5k0N z?z#xcWq)%?(!2Ow@qou+0X`#ksSri!ZkD7`rg#R)&7GlqlNVF1vy%8^A%)5$`7q{y z*Q4;nbdSnrmFEE>wIsqCTvHWBI(5pS0k^94!`-*roEE#f}yYX?eN77f@5^s_pB(f zZuP3T@s!A8{UEOC`BXGbGp~PD)X4EguZ7DXPs7rCWFHrz_4xy3oisM(vJryTa}KAG zCb8s1S@!;@@sft6i3GFLWuBu#{%d_1{<6_RYw^U=J$;@o0mhZo)f*^`+iQMo&v{g& zhHWJkVID#S8Aqi6Empb{%AWNfwQ>_ zO(h|d19T}=G(XaN$7lk7v-b$yXX$iz=H-0<<*u-Jq@w|1;e4Rgh4*`@`JqO_=*-GN zRdBM`)pfA4qN!ByH2hH)b&?>jHBEzfcwTB!Pm~h*Zs||>z@O62N}EBGhD^9p-o#8zh3|8Upy0y; zvtH8+6Km(o^^-(6FT-_e2d*1l&bXy{a|>H`>h4Ue#i9G?sV)yh+b&g*O;1!5$R7#k zS18w>QFUp@L`LjQe;4;eYB=xFF|5+C8pLmxH8SuUQ~~8Od{dX+`0CS#UEfz%`F$8= zS$*`V8`fAn&V$5<_nV0h!<>EDj^a}i%pnFr2-Xp%+YPBEr1;tN)M_$I*+`Xg>A=Ic z`pIOn>EH6y;jx{Mk+{az>bl8+d2NDn8q_T(VM792v6QIUItDp&4k6y;$@z3%meRq9 zi?@g8sTz5Ce%eYtgUGz`nj<_DYvX4Ge#j$^M8b}@u;qq{!`(8`Mnvo{8K*z(QE-Xk z%4^IDx92M{*%yP#@L0M$syH(X_Mrh7^=P4Ry27oYeGh}|gdI{moF! z{q^>wa~vZoyUC+GUC+Z1=4Kl*X~kgB=3^QS+XJmVImtvEh7_gS8pytrBFO4Svg~2b z*^rz)l=O>yR~%` z2%+XLRv#Ed;h>>4dsDq5M0v0+CT`fRmy-DlE+xuxGx%FpLq_tSyfGM=<`O-si!$|5 zR&H!`yTNQ5-x%myG;DRb%9=ag$xS)m$sMB5OYiJu;GVX!cn{%G#y?*F%!JWkHu+5s zqU_n|^&1Y4DK$UJ=nF0b~>ZfTX_evV2g2EQLKF8Y&DmFu!o<`YR?+_e`4 zdZU8zZr`(&^wLnJH}+ai2VOk2t|ok()#n@O<$jA#$4u!~GMW(SOe86sCR9*^mlZ~yMXlGo#X6)QRT@6-DAn~rYEIhN zuKg5*C-RNO*^4(me{LdtYr!E}$*&h_E9kNJAX&B6>DrWDJN5V_g;t9Zx1Zyv=6BP1 z6^*pn$&rUr;$AY)^HR|UUm>sUi`?Uvhc^#$SL1_wospOQ5p_a>j{2i}p;bi?+fwnF zS&vk$_ip+Y`Ay%59`B^=qWZUM&DVnZuMls~Qpor!wj1*B#Lni5+ya}IK9_p?bbs7~ z)gN8T;<}o_Yq!b_(a`dDft|1QvM>K|X6kmUWmzX=`EpiH##!y`puuIgVXJOXSyq;2#J?6>XIqZ2#3%D@HD_x!dbKnk)aZ#jpUvuP%2p&Cjq zxARkd{02;$pncO_@hJyE4Hq5!lNP-nS$zD5Qylx}jumFURfJMm){%?vPN0qr+FIyj zhxbOZ8bm!{9-V*xn(SeGlOqehSDSMO8}9l(HhxO_a|smU4(>@D4)+#&DwImkJKoHD zjyU+9{ocHQR?$zuSN1erX(46FeXomR5<7==Phi1otqi?KnQb$bsM9ru zylaa%?|m$h7*x!(gj1;gG~yH%BDUc%0K z$cuZr7pqat|6e;-8r0Mkg&%c5r=T#c9YN5rD5+JUEP{{?3xa42R#XZBB7uTf0m~8= z4Y-V`MMc9VTcU%AmQD6TAd#}KQBpyc5GW71P? zG%f}J9;CV^>Ap(T>Jp;RM{A#&L;^I3_!_oYd@9N9waE{X3c7KeDUli3_ z7E8ev#``-UW4$fmU1Ax!`L3X-ZS^=hIoGc+gb4GXbGql-vt#wsd6{X~ZSBhuCH}}v z-itHt@cNKgVxLwH))E2k>SsQ)NlBg=M%G4p)ThVWHWg*S9k8=`ut=6myal1@g1rw1 zO(`#0J_n0>b3uHYSK-ka_=34m#2wF8|2)7$Rt1^IJlrT!{-wM)0-ik=zYR|h7z*1VP zqrEGd$UBT1u%WF%sBqFw{W8wIHl1ZN9RSGMw#2gwqbXVuQH=R!*Vh+iiIJ+;cv~k% zM0!k&L)5^W7)iBrE_nnG4!8GP;1^Qe1y{-p=~gMxZWi${8~8w|&>*#`fzNnYAY@c- zTS3DbljhJY>)fPJE9vcZUXSFwH($+9;R$ER$=Co59o8x#t!gyr% zrGRXe#-i`(Dv-0PNgZ{*(mG6c)s_}(?@(AFj2llL=8zBKF7`25iVUm6lyeEQq6sO} z+G}e-B4>Str(mjfN6)OJeqs%ivRBDY2cx?divSL4RPtKiE^0yBh+6Y?Fy3LdQ>_~A z_g`Byi5ttewQ-=VXDV;Tj%75i5C}2P2+j$XrF}o|Lb4pPGG?fs-``s{7R| z6OU#37a zqzy9nqz9@;Yb~j|9$sF?gV$NU*&*hhF(Xx|9;GJ_P9JPG7@%I>-|59gXO9EeZEYo6e($-^`LxIbUhZHaxILBDvhdsidKME2Jz0jk8qhI zQWBz3i68z`3ydT(w+-o4jnL%rG&7x*G?KKMFsWw)06^f@z#+SK@CBGEb}?87(g&HY zpA$(P;2>aXZt#N;aM-EVRFt+=TO+5S+&9xXe>YO@C?qVIfgLNz-KWkWXS+5KHSA1c z4|pO00E$5=khts$y`fQctk+Dts@`1F^}MfOX9h_B7Bx9;Kv&+OCx1T!BuwLItHgAW zdnxDg)lEd7<}Tx-8sR`yQ{a+D6Y$(R!}O!-D~6hO@u!K+KTh-u!~~8(Ab=(ZfdGL3 z`2-*na*W_w1Azd6@G(GvECI3v$P%Ei8Oj}YK?xL?p#C302rC13s{`7xo^A(DXzUyc ze;^Q`GRc3nR-~>3Z_Cm$*l@|z@Qbx(K(St{a)a*XyYM9}x#N{C;PR=E0g-JbuFa5A{yuj6WId`iIY@8@e`!kPUjDo!G1y 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 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 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 zhh`rR{hhSJT;J{HKcJoTtTz!j9guXL>Y2D)ST#zl`O$ZodXyr8cj!dT` znysr!oR*umxZF`u3;8u`T@k^3syiQOSP=yoQ-TRKhh2TlB*gkl`{OZqQ?)tc$hom{J5n|>6Nl_c3e=992Qo3H%)tq z5~Ht|Mu}kT=g8bHwhrx*z42M6Js0?!mFM&Xcd#DVIy0XarTas(V@k0!RHAJ(O0uJR zkW&QHkv$ywyEy39KifB*gw4P34%3Rlm-XFG$>~>D`LAs>`!gK;2 z$`4s^7bo}_<6C-YUM*gD4U;94^RT^rM7`f)zVfzA?j4k9&oY^Mgz!JkF~7qNcRoeL@T8|m&(m@UqX>=^dHajfpE2>xm%u|X41-#9 z{cEZL5_i;ED$cUbURhp^v1VeTsCKZl_f18&i##Z^(b~oh)H?+G7ZdvKtlajJRb1{D zL3x+YL-Wxh=f5`zg((X$0O1>n=!jw>er7E$E3`^5ihT7|dD^X<1#(ntfxdAn76(o0 z0%c}1>$f+pLL;k#Wddx0Me5a2<|e-C1tQt<>2iN*%gTt#9F~6O;xC)2&6OFk?7O2i z4~qrWq`?GJsowq=8ts9!7(CXUn9U>cVC(2#-iuA@je_rTj2#_=iC$*KlpN6iFkxq0+yr&4*_oCJjIQw@5QAT6#D2*D2R8lC5!3Qf7kB z;sX&ZYk#-qwk*Wu=NC_?rprSBW*iH;xKJMZ;}p#=Zr$`1A#o)Z`01JC8I<&2Tc7vm z^;Ey8e8#*k>;o(NH-C%fb(Hj>_#_)~g)4wpzf%Em|s4r`^l`i~H^k=<2KbNbOk zw3bEaU@0wAUikImt<;^)zg&Q%%z^7wS9mA$THSv`oS*m~%OuhDOc;l_dC(@GHIVRQ zIe0R|C8G*!KkIONNgx@zS*B~#KQRHwJfO;4!j^z*PZF;gk|5=sLK$ro$emrfw^>{T zpUdocMNYbmKZNd}&E8qhYgut18%_n=#S#8C`DSI3AN{vDS1t!vk@7t5b-U2mM5WYC z6D|Aq%v{2nY?T-;_Zd0;T3!i8Tiffz_5)4(fm`d*OY7QDw~XcQSpRNS2_He|Y>^u6 z>k&}+2Zg#HTY=HUP`4l2rKTI=Nl)rn{y(LxIn9LZms+yY{L)?l9}`eVm>JjC4X8&H)blsL@`s(G z@&iWUA4T)M5E0`J@=<2S--i+yOmV@cidbN-G23f7FaY=|ZJ`87jRfQyRNcr>EOT~OSxn}x{1&v@W%)o~B zw;|*Sf0$xSSuYk04jWuL{J+SReE*a7W&UNQrwAAk{uYZY`G!Lq@Jv$VMVr(Lhwk7JcFyWp;V?ni8! z)W#wx71`%NNn=TK=DCJ9J-&T~e_2I2TO)X~3yI6uLz zc9Y$Q^F-ErQ>&1Wkk9F|Yc-yqKE1%=tAB-zJa+3~4akKhB_)*6;`>ZMb>a#EL#^Df z=a%h(&vAPqIU1tkQ+l&F$uMg2+I2H@VG?vZfwyvcu63JOk86N_H*iu+<0O}0ON-*! z(Mr!~t{e5^?A~~NU%9`Jd9F25({WkhC|Y?GJ*95O+B%_(-N<|fcOl}us& zkwd4!;(T{G-T4jNz58tV@%hd9F70M}S67(_RNFrkN9>+lYI~v#8(@s&T-W7QW=MSrBj@EBkLk@bmVRl0iFp zgA?e3xj{Kvoo(TQzINy6tOM*ya1zl*Ylp;)f!qFO(+6;(2)OF$nc0;ngatG*`1#e- zEuYGOcJgL$@t=W#*K3nE?-ex3@K8ob*>%qF*3oE0xi z9BV>(@OP+>$e)^*X2kJj4I(Jean&5*nT)uTbjr$`q*7!+ zsZxo&%VGW0H|V%GloB(L=5;r4QS9vVAAm%!q_W(#WY9~Yl3 zmfCOY_r}uXDpcj=QAuDwL}VwQV$%Zigaaje+M<^Mezr?PBzR**qKV3M2nZ-f%aPfi zc!PA${>TBN8ErhBEVmiOOI>IHDsF~7Cs=c6NULFso5uJb#`4sB4;CHCz=?db-@ZxS znIX!wrLJu5Lg>KWJYDKU1G)nS>>reTdE zKC%8`#5z!&;&4Fr$$30E6)m`QVC3KsrH?IpToSDHIUS&An7|erqC(Dk9rYs6p0$U{ zR6hFav%Fr+H8{AqFQhYX90UE~vOYDn=9x;(=xFq7YFNmlAeTuxIC){njBjypf`+-O z4_~CjKjnSdaJrK?0hK#*-E~NPg->57h3iz4*kjv3V-nzNzTZMdD>@*#PYr3JhYrrXS=n4Mi*98R$j zR7;T>#eAJGfx}Glqwec~!`jv5^7y-)^YYDmY%x-FW69ff369mW=~^!yD~*b@kKdlx zV1okl#y|qI&#?Y?VIfL|+Ot^e(08xCzw;~xssi43Zg^}Ew>PijoG=?jGMCS$9gqna zVLm3NLDb6NnA`Rg;6N*as=BIdzA6)FMBX0B!yqR&L*P5Cb$W%2xH5H&G1ETWs|3kA z)QV+V3=w)CAq$;NDf1r9o9*s?#UL~9Hvta%KtM*-YnhvNpIw!!_&exZ z0e8L|1?4AZ+3Yt08ZD~o>ZJyK=+S6eXAZY*Lb4YJ5cC&?SO z`?8)Fp7C8#>83CrJqvFnw9{>!a0H%`=IjGC+jdYJje{d78a!02KT*W&#h29=`jx~_=k&a8nlsxc{q zgoz#x#n$5znMiBqX2Gd$Y)7Q#?FRvEgVXN8!5HT3c}~}>S0w2!WptDEW>ExD4lvZw z@`-6}L$3iMU6(UxIqO1PfhZnho9zcd!lu_=&i648pO(zXI`=C_v0oT%{T%e=%a>2& zQFbS1xRO#*TcEYq3aB3NlX7_+5a4szkWiBTJ~8T(Ewa|)b~cq6jVW+D=k})pXAv6B zAba2FJ(t4gFn;_73%cQw!s{+6clIO!N7HnI)n?Qj3-NR1rs$_nLw~(QVYpom5t=Kd z@F~?YUM!*#37K(l_@m$=e-sx-1P!dq-6aO3AdaxXZ5z5WfR zeP&`DCJYeMeuvK#*%^W}+MqAiY?Dl^Cdlu`6C6CsuG5#C4A&jUu%8Hq{J6Avs)B{T z0CUaS0dQ$wf#O7L$!s+fRdxr3AW??B$yj3d=Fs`%rB$$Mt~54A|82_F))uXy-R`E7 z14x!OWRl+F;r)0#$BlNR`6-vS0Fo+p%j=*dSXiYJ&4f0emkRAO*xn$v4R=k2W!+w` zEG>nbyMs_Dxp}}h)1;qN8wv-H#N;_@V5QaEZ(U^!Bt$N%SH(g{8(mm(AI?a^?I3X) z?^1~BzThpXe1xGrR|#wTc=x$V)ZtzB%Vd5#@}V?K{&q}k zkR;Fw9j|a1Ng`0Pi7S~Zsu?Pf^ea&_Z}wQNSGAEGVL5itmDf3Cxda6$L8{WG+MMJ` zA#L6L$#>|5%Xjyh(ou%_9I0Z+_s>N1@P<&*zKyq0%UPUy7|!Z z%_jCHhRXJn9BoJQDq5hDMK<5To$_DanoY&-`VB7=_V^>D?9W0<5Zwy-XK%Kzf7rZEbiNTbNAqljSgMH}|*z$5W~S++aGxum^xA%hhq5DPRS!Xw@Os zJ$r`5tB1BK8j@{&s11Zt^h`}(|Ax%8F0XQggK?CxazPKglT9(|7~9*Z#DW^5Nl5zlEJDX3S$36$`DuJ40v-n#1CD0W_6{wD<1JS$@7jCtgu| zzOk`!b$;ltS*knK;t`B3@O^?NmMB6z{%j0QK~WK#jd%aG$(L!k;?djV-ie}M0)g)~ ziy_&@msZJKZitJ5KGT(+_+W~Z+wv76A{dBYjZDRQJ`Iu+sn{~z=_Ns+D+7j&zNXmy z((`c>R_SEk z1WX2PW`m`VpaP(oDjuOi#m67u;B#9ZE5fu?uUP^5X;%mYz0jCGD%DzxSZ=$Wu03eB zLID<=5$y{+`~*fTTEJ@RPkDp~DZwEASY(@yhw^uUI9fw6Z}J$w-S`89^dtU@{ly{h z)UHiONoCWxit41rw`L>0!PqwZP|ArUr&G_IG|B&x!TS_1Sw2Z+jeNVAv{P)D2|kzoZ0^9L;t|Q_qo;PWWB9^+n^3> z_?M$ik1#K9F0$;p5a-_14@9EVTsP{&f3Qv?3=RpgDN{lQ0pL;abz_+Q$TvF{6k zBeO73nVZnJX8rGIZNz2Q6AU{?_fSf?po+U{jFWNFHbAnxHx^f0nUrn8#D zEKAOwxXdageE|w^60R@P^ObMJ6k+fd-G06-;gv5U zRohX`rTmyh&c$>)VtX=8NuW8?(dULK9vJXD_p^)S)M1cE#K|0A)pxf%)lvI7*mnk< zFr+P>ofTaB`Fy(Qj)R60&ggR6Emt&#ahVDKVTw(aq*O>9`HsTS}rBZ|fUKni>f3^Qvjh>YF1olJY%;5L~`H-@5o31JT}&Ft38 zsFy&n^~RYfvgue%dyC1i1a=Idao_c4E}7j@UEj#8&@L5NWr&J0zd@%KpJ6tv?#h!+ zExvC_t>b{LgKOA1Ov`(o5)mOEx*12ShT@G8T9Ec>d6ImsA`I^f9q$)j^qpm`VHY7SwmFhu9zGld79-O>ASYc>T|Qij9~B?p z4SC^p(kCaN(3;8t14d`?IBk{O22-1Ffq;tM%H?X!_tb<0Y{gueJbnKQFv@4#FqM2m z&TyY}yjE?I!0hVN_nXIw({%;S|KgyN%Hz$iC`H)D%j1#QnF>2hWop%2)gb~HB^xIS zPEud}uCQI1;q}R|8>s!nBH<%02ba@Iykp|8PZ9km%0<<$xy9hcw7Vcg+&Acmh}Tt` zs{djFsk|P&)d^K!Dx4$OsWOL3ykYjmIlYNRk`ow>Siu+NDbWBw7lp9(J8e9V1}>;? zgV)s7>_9@`WVu*@8Xzng)oJRZtfx21uE)qU5<Tmau+CE@Z^6_YpO)*{T2B;3G^P9}Yy3l89%GgIZ(mPlX7x#GxJL^iW;mkWHB*AP$7Z;p-|K-8pR;c)R7P>1;{SSi?V zkV9Xb`k;I^4L2E&m!h+ga2NDV!3lXuiZYBPuBKB+nJdU45h=;!zE zR5%Fv%01cSU6Gm2LejRJ5ruhkOi|_4`6LPn@~P0&{a4&M&uhrdHx90>ykrR>63wv( z`7x2S=eP;83i%2&2YAUswtBQL`X)MZKfdl}-D4La2qS(#7b&V0GP3AA4L{Y?WQ)J~ zTeqTAOW!88fqH*c%f5YacVO7R7xYyzpY^2PM3!Oar+JAsTFGc&eOy?5wGk!TEkjr7 zH#LQ|<7Dl*ICuI~C5uzOlWEN7glgX7!{Wi|s4e*h2)?|Mq-kTbABeb_BMb&+k?pNQ z{Ff#XwV|!Nesm-~x!6i5T0uMrEQqZJ@*>rdjP^liUYSZwc9XjGEeKMOIAh#>7*j~3Q%U>xn)zw-0@m+xA1#V zs?zWNEqQ0UJCu^AlZ%jFs8W#0qFyTh*AILL@XjTZNP8d;b4~PGE&Y4fUW}Vl+t3-z z*jUq^JW?P@sP>cB(kxd7kqL0^zutGs*l!Ob@@UMj>z$DibcNyn?Oy)tjDg()^jEf5 zce^fRaKG8O@O+ZV_{_MSM}T~(d$HhB|C;!9qno1&;FT@u?T3e<`Hw^pqlBAO-f2p99-&~y-TQd;ebB{(sSxfaE(o5}Q7+ALI9|6?ULaszn) zhw$l_*mfc@bNX2|l9(PwX68Y~*%-6?*W57*KX}PP)8MUgRH~Sr>!^o%_`W9#pauVo zp*o4?RB}bJhlzm(XX!TF_-ak}-;ec`+fxe#B+lDVYv95O>C@tC=FeU1H?oK36xtnK zz-kL1+=HO;M>tCUi0Vb`*9010?S#Jj{< z`?L4t3JPmLK3QLv_DeYNqD?F&vG=~JsKxo2(3Q2FP4&iBD14(37uk|UVy4XS{j8yE z_qw6FxshV0Gn4xY(}nc__rO$fMRa>~v9&MQg4oQm*B;gwI1;8{=#=u`^VC``19%o> zsoQ!bdE4G}Idel^qkw5ZKzIwI|q4|(_~DnOvTrIix@Nqi1|_R%3x(jkn_XJ3%Ngk z?W9)#*u`6@GBSt~Ax;W1I~k9|x~v1{ImCAcTiu6SQ%w}-kmj1M(;PV+j|*A_W67PM zIC+@q&Azz(b2zI-@+H~#0`89 zY-hx7(9JWvk8Yul-p|wNv@}`Irbg69GUrptAiwsYxqFckm0j_szH{00`7Sfb!VK6c z%K=JMd_OoN@o^MZ9Q0hQ)d)SIjH~C`-3CyK2b6&5=PWFfarA=?Q`Y%MHwdyPm}ug% z9nv`)AsMi8G9j;O7}tMzd}WL#Vu}80LMfE^pu}HSOT+eI3e}%Rk&KkIwX=IVUa?7t zvxet6j2(?W)I%e{cWsJNk?dxdgR#A>!e~!w5NdChWqC|zfnl?+#;G@^+<#kIy!#jGB;u%OiHb5DH z70Wh+eFfNH$zS`N%ke*YhqubDL*J zl;2DCs!AN-UjrAAIm#I8#SZ}KQN6oA7Wb-jKbwAy!(ox{k(pdbajo=wBw`Rq1!QRP zG+u1=9HUYI2$hws(8UI1rVsocb{=MCreAxS%NZ?oHS=}bsvT~v=11vcZ>_#4<=UHG z5OO|^#aF|MiknbkY-}9XOiKDe&a68<0J_mE(WEC5biz!X2#mB9AkN3tj;*M}F*F)} zps?!z!&g&zg9-(#Q=a2f=+|NK7N5#7WeJNVV=qW4nT&$odM%~S;|$pK-0>=jbYa5AiFUS zK1b3pr6+IK(&wsc82^mB&G@czDQgNo^NBd`6{T0UA0s`R1q2%F3RuTRMNKKxW20drEJNd-t zB35xyvyY)wUrp6THI078pyR;7?MGP@CoPW4dMu`NWybNX4)EjK;4*2IX~NwuRWR zp^=r2Z={185gRM&~TWvgrQSHxRlaEG5At_Q0)YYQ{?6_D7=_B6M%HKsT3ufsnBz%vMzUpM-&CtQp zJn)ZAzOr)~;zn2TkmeA)WY+9Cj|v#4nTY6Ver)gGx}PfP?kN~Et|xR%t2FG@v#@9{ zV9BG>9G1W}Q7ZiM{jXSSx0lxrP==3Cbpim|%@RJ5~rv0mOSRWe6! zhhgmKFwP1z$S;a4VtC?J4>6^Gzga z9BNv)cT5f$5cs&dJ~P}o(~*emv!U0FkIIwXO&+Ut0CsPSzuP6EOvf70trs9)FCf?M z9PVF2%|{FT=Ci#(1;+|i*kui zC>2l^CZ^=X5`%}|$)%Xi%FJY9XZ|yIaL=KO{Dj>y6o6|+qfBoSg+}Eq0}OMgT^Imt zmBGHa?6zoRQqk!a38Ppzy+^H%A@jFLR-gb@u6#kjp){F3c%n3xd3%(3Q zql)~usN?(yWDl_zohiYpbar+ACa~8sXdDbGI_HZ$?3{T?j~@i?yFnHxut(FKfiOXv zoMfV(VWe2I^*+dSqL|}kV-RtkkYOgLFtWNQ8AOSbn)YxM!1`^E>9QrLlSPP!i)V8O zG(c*#a=shz2{|cAzJA?P##rgo*}|Tzjw#iwJ=tx6A}%gF96O@n)%nRa0ShaEh$)GFS-V~ zNtTl^Dza9>bJIQwTv#CUOyPfjjU;&Gq)0OKaO> z)`4yA%LI#IpWp^;;QANjnz5ou)Dy?7l#VK8$7>q&Lpz@xc zE%%@|@b$*Jic(=Zp|(T=8P63{-0g>Iv57qUV@*i8KN6K@{s(=rkaUTx>YwiOk}-OH zH#NoT&3=cSAzhkDqx9 z{uSHO)St~oh^CeQQAQ0Ke32r>i{%ku0DVQRhPo(@VPdjq=(~?U5NyqMttrM0#m2>6 zR;he0k{kr{d8mmV^jz@x9FvFLE}wShft?8;{!#DvH|VES9BjGS{7aRR+4Pbkhf^cz z`|YmFJ-&N@ClBIyHn?zfx?M8|^0!#8-g0@-!ssp^+Bu(H*?{(F12zuM$!zd;|D!%E z*vO(F3dunG2FhHbUb_VP)6(&GB0s;R>U3-97*1G63xZQRJ<$U{^VCdh zx;V%&I^U^}q0PXzOo+Qu$x%SYLTl&Haq6+X52GrJ3Ncs0aocxag>o@irAD3F&1Ol< zj&p6i#~oVw-Q{dTO(OJNIP=eN_salz)aT}t03uO zu0oufbb}PfPz<=+4(bzVW@Nk2H4HMjXrjf%Ugmwg?)<`CuWMoEFwAX)3X)P76- z0M7?$4O6kTjY|!mJ0M4tkG=yyx#P z)zXlF3pRR3bWfDP*WCvm;owV`f(bKj&-oaFMfa@vd3KJtGR-!p;rAC7w^BR^>>R1B z!o#h#WcRyYKzGFK8Ky1IW|fQ$opv1qk}SPg%nf_Q`6x6}0wi+<-hwx(DDR(Td%&=F zt53Kwg(oOLtQIwA`3u!vq%QEstUG@U_Pv*~(;(&EMN<_bv6E!O>pxvmguLPppyncw z%BzgFX2I?ntr<4?U7!hvqVw}~Yen>(K`t8QA{I{^4)@#jS@aU$2p9f6%_0((nn?l< zM&>;AR`fZ6D!+8Ns?Ryp=#i1j+$Xd&y9JrXr2(PPuJUTesZwKN0Lr|2 zv_2~lh{N2Z*IY}Y_p)~UaTNROn7@RyAsGlR$^WT&Qb5qGcMe!vGr(c(z739St+mYa zoac6t9rVb*#1Wh-pY#t)M}01MRfnVbkjC^w_C07bZI9$JEZ$s9l}3@f<2-e<$2vnm z4l)sE75ES10tGO>fWOhDb{soDKLM(u;(jH?pG68ih}`Bt5=XISv)`EUV5SmPfmRi{ zhudXm8vTmBL4a_*c+M#&*zb% z*#EP*7>J+M4Uy;6MG^c@mxcYf4NBjJKSOh_NA>M3~o@&EP5%LnTpeCvOGqBDF; zw#BbZ^UvA+hw-;8APMkCaJHBrl}Ra7ZkL7r_pdyL34{CgKfm7cfvH3JfB)qF{hj~) zlk`i;;Q|pq@LS6|>my^rx%bHJ_hPSIs2L)}Db?nF9Q*Wrt}ef(umUgUe;pl0FR%!p z4UaX881PxlEE!$Xf${2C>+0I6;eQ&MGwvA2(nQ9J^sMM3|G7E;{C{bQ@hjAz&BpM# zCh!(M1=IZyLCbHd^Rtn#8ME&T{>_^L`0iD-c=d#(gZ&@o*Uz9Qe#|65d#d8=g()!2 z%vZ?i?P`4SFPRhkn+W$XCcSCL>t3-&2%LFZQQ>}^RU5pNggkK+c2wd!Bp+fI_j_24 z4b{Kn?Jy0Wejdh40lfK4 zSQ8m0r$8SiPa@0jY=8bXNK@zOS@=S(U7+@e_*#A}8gIvdH;iOs<7k!!huK7NhGG{` zvQ(?HA&D!yQmpvo;%a~Ece37R+@Jz1ogHx42QRc`3HX1dq@)a10Lx7vebR9pMe+LG zn?F4x5f}rBBN-k%pnV5hkBZg~6p`y4SIOn&N1T;x@|=bUfDg-d^B`!0xZa#iJ!ocs z`&y`anym_4U#Y*mhXJxNs{4&+2MZw}gW4(CJc*&XLd5w~m=k1Erm1F~05rF1_osW> z54%Vr#D4_^=`Uw?%)Nf2cb_=HZAd8K@(18TOWF-6o-Hji7h|_?UcFk1(=lc??|he> z^42SwJ1Qy)G+aO{$SeAWzix4JC{Of!2js2pC+6#1f^~g|i?^^~eJ{64mZ(Hzir+3g zu4y^amUcusIL)}R;?2G!anT|V@5a>my6Fz1s790m!s^gMvvk4(jip9yxic_`{3CEA|EL| zedu=U-JSdnco)G5JPv_0WV+D~Gj@h|xXERg{CsD!Z5Ysli0Pb@Id(auWfu8A({3q! z-b~J0UWT~h3pG?4egRxqx6A#fZdbL%Lh>mlJ)_ChD;3&@sKRX)=BK3S(6go5Y9x7t z#NY1V?!^t_RcwqDrecdGS4yLdjEq|2Q5fxha;q*8$mZ1mMZJxP2*`~60{yy?TxBUx zI;hnfP$3TyWAT}x!FYlGe?cVK)_fL^goG^+`I9a4Y_XUr56u(_G??{Lq>yQEYm11F zp8}dPF{OO2l@6;f0eDekIB7N4KBdLIs+8_M*Z>kTz}7L;aPk|_sM9mo_Yo#;dxWx) z%Oywx1c*ACE{iTpp{7YQwq07A``0TQs;V*c+O~; z`sJoBze0EG=%w_Cfkvc*_5K z2H!fMOGgvt-t|`sU~WOavbl!2-J{TJw@6oYh6wZ}{j;~f`V)tNj@}U_AeUvt#_;Uf zp@ECmQx|`a>m{N%E?Zp0|37Un%F)l;X`UPO-)w-;q2&*&^}>nq%hJC1Ls5_k*Z!TTE^k=NDFWrxjd z@}8WWoHqWF2PHsQBUf#VeB5;S7hsfa#HSZ26`+VDr;Od^kX!ON>fMH>yt|u}(-19D zIh~p;0iFiJn{!1E51I|JrxxuLa%q+3hn|iW3(tRp+I(xi3Lc4&pLprQ(vk}_a!UE! z5(JDfS_elLk-Wq@%34;+LU8$An;(q^lGqF%GCQ98`+m-~-A=k8*> z0(%stDIaW%WP&*lpvFm0$>Q6|*ym(tmji#NP&^({Jp~km-Ki|6p;RbU!dpx_VlJ*1 z3DTVvs}$wc)#<>dq}pNxuR&8bYl9B^ZXYIv3cYHhe;u^E>^zea)?JB+GK$r!{LDeK zDz_S!ugU2zxUDc|6XqY?KRs*9a7sAsdS>SAQfc!2U~J}zZVfR-{ox~Y)avOoYL#=e zJ%$VL>0CN58}QBp*n$PPM+I{7RGIc+Y|vdrp^71XH8OkiyUI9%6>!24id1)ak%2J- zTbXv(6E`ncI;l-gKsw!WcM|3aR)L=5zIub0k(dV$cXK%DAI)5ezDemc?w?w27ogSZVWxDc2UNH(3arJ& zDR~_C+aGTbR!~v$6|2aBiHUvcn>5h91BKnUTiN&PeX(srbpq%M36YV>$^G@OQ33Ug z?d|5HtZ;jk=590k``@5KtM}MMJOHX3;fvsTbX-;FdskCIil$1}w~kTclMMWiw4*)hM@*h0VQa~3EbldEAM-vb<9(rpBf%l1Gkt-XJf`*AdSvAO3 zpgMi{lCC&7H<$dxW{QzKU$8cMT5$aQutGv`vMF3aB_Rm-vvqk29c5qYzLIP*Xk~h5 zk$B$UnnquDzgFgovG6eFg)V41{zbakx%Kk1Cj;da4!O4LvM;@b?zNJ7U9DN7{ zelk6Pg6DE{M5LWcaCNaOwtPnREjc;)2}$E|Jka}dWy5uGy?B0zt3wGgFTy3QJVX+I zgpu1$nh0?$E{j(n)mc*ylZ;{SU=xAOp^nbot@Fp8yQC?_+Y6Q?6U>r_!vV`OUAa$` zS30@v=P#9fgoU*))`bc^9W<&1ngx2H>j2;ukWJ_<0K#C0W08NlZ2GyrlYj~UW9c7qUI(6}gKR>sj1tdw6rA8nNbDeFrImG~C#R<$VD2|S` zX9oh_34qz0FX)jgn<@;p8Io3989;VUA?SieaD0L?##Tms*{v62G}d80RMn zbH@1I(7**27t{1mm{=Ggi_zV4%e2E;AfM~?@bl&Q&hcqj6nO5RVxK1fY3ed(&TDir-TpJku1XixTZjoOh&yrTmBToox_p#VXAaH8CZ>RdK};> z&!1ZxkjM2Mw|b_$Ssz6qlOGv@LF+yXM@)Ze%!Fs@H1{6!ui0|#vRh>u*I5BbcfVq3 zxCxx*=e)i9a>l_FfuX>dqAw7O7mDO^qY3H>q;X&ZM;SQS`~hOB`HDs4=aAhE=X)oz zo^>d)19l>-l`!D9T+!SwQ~j>looYbEi`*S$0MRT%GPh>iHu233|Cn&yJ`@ZOA)t1K zoj=)!U5cgB*e?aoQ&RUPG}>7FR=G#&mIPX+GtWkPBaSPrL$XO^FYh$9&FwsiN+A6)(Vj2DiT ziRDoVNxItmqXBh1OJ3smpgzn%1Z6{pjFbko#_%oI>{x@8A|e52m<^j(D(T%T=Uqz; zAUqD36JNGnvikQNbw2?3fAwf#9(a(!eEu`>6H%*a*=s-Xg6a$4cvlDQOctsEJ(ac} zB0(lInOq^bYjKJv z%sEo}Mn-{Air;B_s`~#w8Amd27xwn|wnwul!VQ7V?4pyLj%B@-l7tob@R8j~{(j2`ayzXAjQ z02Fj_V^Dwea<$r!xin2MYqH#VTR}FNe_&_5uRBdZ;A7}HHz#K~@OE*vzfXMN=Z7v% z&AVMzub182u6nJKZ_470$tK8CMyj=#p{MXT_8)sbRiDeP2Vl|+JoF&+Ak42;R;iW^ z8nCcXz!Mb-ykQTAiCs0RIRyFr#R0oU2r#9@AQTxYRkI zf!6ai@X(1w6l_7Sv+263?AImz5DAhkuirV=)`MO&c@Kt!u@SUMWxY6djQnGkBX{*RwJgCTvtzz*ly## z?W{mRKF`q-2JGmjvlT2rK)Wr^nhowo=?ix0mBFpZBP>B>gG zRFYo;7Z-fv|A}!GFhON)@{SJb{B5P14g)?k+qlpAd@>2y0CYczyLSJ>p<2WH7=S`n zURARU7{yTEk*0v+Ky;du&C2z5h>H*yuIP<*Tm_<_K=t%V@4V4|FPscZu|P=^;{Mao z61s&~rq;~8N+Cl|Mkd13yzKEMmx2fswKZMEC1asvD9 z_p!-4AZ}h74o z?Ru|~2EFBd!zmDE({L*`i=l=(tis^1S%`x#RiXoSWn=&DQ1dPr%;-;jgtzldDV5pz zqMl1<8A&QPN>vn|C-c3g=c~UQIMthwq^;2me8)p+k%>5GJORgdBtYjHWcRxq7TF-* zn&q(k-9ct~V}fjKY^B*E?(WXZVYQ$)8co&S-p+XKA23s!p?q71^zw9emIV;JT%FQN zHrD@TNqX>16e+J>q+0kzDk)w zfw(etRdE_c6gDvn>)jGt-`TG^ls{7TYV7_G;3?jTEh^U=a6GdUpgYT2U8QHR{DTYXS+homFg%XI4ab zy^eoSEH87BACscI1`|If#t!17C{{1#a$7EE<(;st;9oM^uQ{FV&PTZ}EI?PUN2lW4 zE@&eG(H^?Wpq(otQau#MFuMys*CO*9tdFaQTi(UiiVCKVAas48os7q4^8+x8$v`UJ zF2UC3(=1>dCU&Q|N#;P^ zOu4Ee*%Tq10U9Y#l4jioR)qt%lP-})#%q#r{ zoUk$;$F<)XLcV;?-5_DEqN9lcY&IE>+bSi=5HoGSGs|w3TeOHu0kav~a}^|DIw8wE zEEO=Ve}F^-L=f@GsOKJ2yHnO)Qy}k}dySYOSEdaE+I2rV5pd1Y0*$TG6mN*TGMo<0 zI7*yVw@0nq$Ii`fu5OMuS2_TPops99(9ch)^a>r&Wpm~K){QAM%Q4wFI0zOfAfJ-^ zfn;OdHSFJtw_xR9&`-G$iFGJdU?}k%SFOc_NOZf$e|UJfI^x^54NkTt?eRf({_t=U z07<7hsf-6xvaHKexedWMGNZ}#H+42^Kj7vyXdW6GI$kQD;&FSaSY(6%>Q8{4Wp#y) z6sjp&*u_6<^w^XwbaMrwK0UN$AOi+icS>76U97@vO#pm#lFGo#HUr47(V zDUSRQ5}mY27||EgTRC&$KG?%`z;imtW5-3Y>SCNKC?!SnS7rLL*(=ao){JX1JFo_Q zdCHoxOym@Acei;S{dmtZwZ#hs0RiC+Caw5cP%&Ki_M;I{_*b^OpX)z<_wJp^Ts|_$ zxc<0b;HkhD54=z3aifn19pwB{3bLZs{4%8qVvSmBbl>H}!RYD8wpY2&rd<>aP_MY_+uq&PPm*}1vrcplGavQKfc|;svPuS< zeiN;*&g_R-$CMPakvuV{PPxQC+l!uAwNWhOGW(H6@ym$&mQ)e@_KG=ZuOCg=x@J}J6>Di zSi#~2zNRrS@dChckO7d;(gw5bPNJ6U&2)KM5|+sSeMx(E{x{#72$)%@O%_=x#@xdr z$rpSQdG`*XoK`gyurf|%x(20_m{2dtLqMKIbam%)b9Nxp;(i@})JKYE&iy%C9643M zYjD5ma_h!XL9N(opvNu?#?fK(6&jeIfWY?nig!0H0vH$= zn$3;~b}TGA9(u#-K)3CRfl?v+*AD53{UxDrIw(5W;orVS7$`@v`kmeuU02->EksF7 zRDYf(Fmy5R_N8VVNnFatc5}g_xMZ=UG06QYyan!MWOQ_JQV|V!Ar)ej3%?-4!NIvY z9{M?z9mX?T;ta|TCbxe3PSO=xHD@gmyXt(lg*@xD|Mj4M8@o3%Gs|?Lkd2NviOJwd z7kK4-9JX#<-cS!C-q;`|BeMZ5mFnu6{KFklO-(%Ql9mk`28Q0ax^@s`esznx$6k%J zI+f9?c6iW&mFS6m$x>lsGxL&Q3>ybaSEc^F+(Ie2Z?*1bpDKe3I4l!W1?XKO1MSX2 zrPBT!DI!Y6nD#D;_t@9rU@}LcTvxD$mBfpTAuJaRX}_%c^K)cm#Bj4z%WS=4A=R(Z z@)of-hDK_FTG=*vl}@V#Pe@3pH=15XPY-32K{MU8rVu+-tI*(esozi3a!33eskjYs z-E`MQ2=6hltV7P~8m<(1tEaDjtka^YY^7%*eQ321oW}a|%J+Go`j>CuT31$Ak57(1 zPq^KjVRJ*F@rj9^o!0auuYrtxyO)w=;1Azy)$H6q13?A6^_hQ{a;r=>$9bkK&vs_u zx)RxDnw=QTCrin8I^I$%=X)0gz3ri*GBG!2G4Hg$i=)@SfV@CsWKEY?6?GrW4N>O- zw9BpCU6zM9iRe1oF7W2qI2Pupn{zwvv;OxQZto?RPx1?1Tyng9&opRy1!U;sG**?)?s+@3;IQ z^uh@RtY(Mg6qoxA1gN@tG`(^l@RhaM9mEgBr0Feh6By2xS06QGkVAT^^Sdhq^c8EU zm5Y>m>}zyAR55F<76*gk7)+NoM8m8W3SFDsEE)zjZEh1xkyRIioca^XqY4cSLfr8i0Zle zQiP5+e}AogiSVVKkxD$El63}SwPpPEf6eO{99O0--vLdu$r3Z^sTnl$-vi=Khw+GB zXE32$&KvZ6m6|uIWzBsIQ_V>npjTosAImQ1SfJ>S{@_`t90vnxgKQNUf4N@cdnRU` zAK?+F^E`EO9wVvXi7b987&ScNdw8>m%9Mkg*~x!QAbnH0(XA}sPp=3|DPnXU$}M}BRc$1u$HIAK)iKk4RJa3dx@~K>0b4u zzxEK_e=@Y**^@q2Z9YrB8Av<@qQ&RTFY=Cu^I}5>^CyiwkJMoQ=*a&F3p(WWPKW#e z57ZN3pDh%yKUyMshj3D4OYJ3r0t{zm4WD?YZLY$xTi-hANS7_fN0Yr~f`(bNiwXU=e~cYgV&!r7SKw`uUp|>V(+c zv2>;X5hC+_|Hz1ggM*TMi|hJ$RLLMSDf5pp%fBu$5&onf|Fz=zSC@|<@+qnLZwDC{ z@n`=$Ej0IsPufm`|Mhvh#?w9e?=KM}NqGNjs`1Z9zj#Su|EIysN%-^s=^)cBl;|=K z3r_zL&xx>|$#g;4Y9VAm+2iLY!E5H1?+%Sc3RbRLza9RU=-Wz~#M3Dd*;?LYnrCnA zj@rZ{xW0sPP0Ia}Sz8?<7Tq#CG2l+M{|s%P{;MiD13G1bs4zW3YyP$JBe6IRZ{@qP(+ub@1&DN`5*&O+vtToku97zP; z_}SVRNiwl#VJG)UKKYC7DHtW{EUtS)$$U-+3^?uV2^_$OaNFHo?&oE{N_asHv&Djyr+o zPvbs^bTTWK(2TY5;L5>Fa{5@Sq08frH%yIj?cq3fYmQVvh)3KG87V6oE>@o+S$e-E`6)I#B(aZd?5cp?Y;tzCfz<+}CkT_FW&B$Ur;dOZ{ZBt;t24@#Ra8bM zwtL0>oJfq}8%_0E)2F_~Rik0w(BwuQ@2Op=#M9EoenG(3+gUOT1_rvT?-aVp=5`vM zl1kSIcH>TaAm*>^5U3990X7ANpATha7FbwzfV%?xU}Sd7G?r(IvGacX*y1^Yzr&=vt z!j2Ztxq1)(9d`CYbD-b_o__z11FkKE@b?EVPa~Nm;1;$9jvnNG&k3rV7pEJUIoI^b zmEBWFag7c=aSUnDd(a%YV$ez0XIX%__>?^|d*U!-dH)Q;P|Sdk0s6uRu%G$(BaJn< z$xW82i2x>s-Na$C`vDi(?-BhjEN)v?%%Nmaq1CiHjQ-)@;mYRE^0$}5jXlEut%gKI zM1c4Y`N3SX)V4wnbBP@o#eGU5XD3UT*w}h1OQNIEP*6u7@E&*28yl~`w61akJe4xa zD^D$|(^tEp_hGk|^Gk77d1}&5%N{8yDWlghO0F!P9MGRon!@EUyNbxVcjNNdcn6eb z9xPh7EDM$Og?=XvjZQB91Rc5FY@L%vT(DuZw@w0;hHIA|RAhMJ~q` zQV-YjXP;kenN2yWy#3@sNlW`q2o6p%jvkaguPq-h1?(Nhp1GEuYu4MIQv>`={>4@- zy@ssEl>)5B659JnL?Lvvj2m-pUyvm+xeQ%DrQ8x_c)PWzn+EXDluVM9mzu1GTGBpc}wQVvu}e}(Cpnf*}C3H1G`WBdfuJb=G+6)JRC_}IZv zQT33Lhht=qjjx^W8mKqMd5;T6Q+-~j#4AyER;W?8k)1Q|kLf~nj!Fl$3fHWoPOE1K z2shl^yA!s{%gfW8oVJf`a1%9rZkJ$>$yYg?K3+Y;Wej&kz#Y51h1K-5-W66c1iKDs z1B}fy@uce17%cqwX*P=qxLrL?_cuicv(+wAp@v}7`bKxhU9~aL)!7ztcym5+n`X(ICTJxZsRpqCjzUqWHjzAl$vO{e-L znU)(PIVDB7=<{=NhlB$oE?QcD0SuhpQgMByZE=`GhGav2eSWge8Fu!Vj1GxLCUocJTD*P)XH$Z~YK1V`ad~7!Mh>%t>zo}wsBQwdKqjS^z z8MKi7ijP0~mxQ5eCk9pGa(N}cUWB=k)!>!z@#HA*yule@b2C6`C8eZ z{XLK-%%nGq91SbOJojfo`;hUK#{u|DW0z${8?6i21iwLbMa9KwG2sn(2pHYXKx6NA zVR)wnu4j?EjgfQ(Jl^MaOH6G9C^Q+HFwIAO7Nq)uv+9!0|A_ z+Z&xcib(++x7e&Bbxtwm`^M!ulvGrElq@XYxp_-1TYv$?jrW^zYjSX7 ztSDD5VYE|Pt^Dx!ib8>xPNsaiKVoPO_YODsi~+^uRrkjf_?Uy@%ogXa440bof$v1% zndyCtg8ln!x)d8V4hjXDYS1Z48`9C8xCnhbg$U-6A4xG9fQ|GP+RLB}((52?b*>-< zLmRwy8JaQ0k}=%xyul-+X6o?FZJ!opjq`P*{R%56X`1FS=Rh{aD~fjAzy$cQ-o{-? zd%(I3JTavP1@Q0XzK~3rq^sMj19ZGj_79)Od>j7s&}4D)LpqR2%09&%8WVE} zQ~lBul{2VpyW0KEiP28U@@@&zH}kj760=d03?Ry69@W5*QN0ItL+_jG^L7u@TgS|A zfm@QxenUC7+wKQ2P0;%&B*dW3E~Xq%yV{?n z9FaItb7gv6F`(q@*J}wla5_nppXaI;QH+kN-=$Ml91!wI6sXP}kdS<7aN4Q$dvk=X zr5-t!aa&g%FowhODU;5O<{Rct>9S&%#Zv(IqB)F7!>9tkr(0;D5StCo=MI`9^T;M@ zYZkdJ;I@6*2m{J!c60QL02jc!-6Qv52&)8l?#oE}ub{DGW}|Cg8!F^+dGrwo70j1I zF*(P5u;9Q?u?R6R;lpV;;{P;77z|FbC3@|}msfMT#ClI7`gHXGyLdp!87#V$E<~gH zom{qLtTZ`<4`Ob<(Sv3v|q>nQDY-^@AO1&Y$OKk z7+sxO{kKv0 zG&BmlysUsqO{<|{bG(bUj!?`5x&ZZEf9$c?z6b`5$WPzh0gD@~(3y69UjtHc9lgCb%oQ54ND<pe0(1T1~KJ4?Pp_eNwyJ#cU6X*6sdJcAB+{(B1b{s5+}2%1LVll zL$c{%KU@(JkvBpVcThd^sP@U6fcy@z>r1~ajgdB*pF&7;DPLFJzD*$hS~GrhDgulF z8STt$IOyryPAADK;0WK*i3*Qz2X*MmNIo5it&P=~7%sHyd9q9BFlDMUUUzZau|1ZT0EVF`*f;ucGJR!yRdP>x$<49yfK^!Ts!8%C zvRtR4>9?nO;uZ$!<XXKeV*Nd=o)IT>!;y=ZzUA4c~>AHRIF({2h5hLsL9A6VvEkiKD{Ww9RE zqIljuaMe>iHZ~fMG0jQa!X>zB01StD-tH=T+cGlL@n137T=*3t6x3K_%rp)ZllnM1 zFDzry`={rtN(UQ4PnH+xV94;7Llo1_Xc;q1_p?ZPKgsM(B-!va&}(ut$PyCa2N3*e z@pruH$Ue4pln)*Tk*)r0l=B&`v(oowJ^w-2^w{X^abj$&|DDH#%SO~~FMowTUIDjA zD265DIO52rrbuI($G%q{9nlAr(De-sVf0GV(pjoW=eL7L3j+f~`D@KCFD!gun_Nq% zt(lvd{2=$xTOm)ih`z0OR5Wzrz90tLR^lnmIT5GJHFb4$Ta!ZuG$|=eey6~JwZVne z5g1f0xtMg45!VY*uD@A%WaSFyZiZQqw1r}MkS%U=T^vUwM#n;9O7xo zZO6`QNyeR5$;w!vIYo?)%+~z$X>mXMdhYA{+S3709#FDI4@J=x$R&DqmaL`$k>H2PY+$ zl*xE}I9ORf7nI;ar6E_7m{|Cwyo3$oa25FgOV*0+m)rm!pY-WX)^-*nBS|i!@CO&6;@bcP$ z5?** zOZy9DW~fl%v&fES6dr^6U1+v8g({O4?zk~XNx}BtRAeNz{(9p`cbVDga8-QfsaG+> zsjRgA(VgP8B=4u5FcDUo02jSCXNtG5md-eD?%@B63y|Yv63(BXEB>r@m z&1X+u1NK|?!0~nr8Le`ygF0hP_bnyuSZF*u(J}gppYLfNK8Nb)h^eHc%&>#iz08bC zIzg{_73Iw3Uh+97^=(qp#PT}@iZn_B>GCn;G8zs?cEszim2AqufoOK3Doi~AR&Jkt z?*WWJ!h^UIGPW^}RcHO>9^G8%vsrmUgo*0_Zfq~+CU`9v2 zdk#nyAs0dfT4&}Y0iS^@W^C7%I}@=oG)Gu-*2I6UVsrzZ^@(Auf-Tv-!G5a8xu|Kp zlc{g7$2FR8v5?}=7?13^jt<$F4`_qjsFG& zM1}ShuD{jvp=2~a9)lD^j#7T>xi1Dku!(UtMy-AiTUkt2`;|p-@bZpA+I-;ba|RfW zbe7Yz@dRCI?C$=^m+3wS3sx~tR+!`K@m-$%!fGicz%xW(D$fG=kmO45-7@NLs~%-( zY1BYIPp7pPtA2_mRprD$zrpNxePKWlzw8Cphm#Yg^h61*0-c7hGpQ}6eL3l?7dMlR zFEngXaP{?_?Dve$(rB8f9?AB9dk_Ajw}JZ<<x`2;xsfyat3Baz^BAiCSJH0JR z-^AoaOm8}vhR>dPVJQ|Wb9~>Eh@k&E@a4_b!GcuVm0n^@Y(=`m-Q6bl=9i*@q|e&! zG57`rHM<{MD>+&$Mad)yJ`>Y8EjiOTy8HK0r3RPt#S5qB2-@-5=vGfUUTh2AfVa|h zHnl^I4}?%p59go|!y&<(SCYh5%FB;A+EdkB%~;^=>F+l<3IElez?B4Bnfyqr|2^$Q z%^S}4+uxF}pfWSP_Ab1X{~K_#8(7gBiEthGj0Q~s$dB;IbaY-uPz#5Nnu-TWNd{H{ zrZDz){gEK~6=Q(mI^zN&GmOd&V}5nquSZPAPw(O1hu)VhQ!2gR*|JnfS^E4`w-F_y zE57;TZAdQcxJ1J7JZ#3y&YS$AAw)9!2&I+LqK9rD*{gYI_$t!Y0)JFTANd0iQ`{Rz4Gl?(CeI`6utsKlo0F{r?`? z_i*N4XkUmB$}*qq`TU8L*^umHZzw`3x7fDmX7126X2(%>#ON5{-hMd~?du~oH?eGN zpyF+n%}C9cYTk_ur~h=Ef)N8F92za>`nb5xSS~UTv=U>WOKxaZgpt5nx7MlvtBCtV z1XeI8gfLVf2^h8e-X`XCiEh+yaX4PZgKI^=orV^T~g0-T^IuYB>VW$m{xE z+XpM8ae9QrxmvXgnnFg`1M(S;gK`eVfHD7Qd|mK_J)+-v+~DR$IB5U9Mq&xO%W^pR z%K1YI)hbF9S66{?BCa3lAXj18I=i&6ie zbwc~^&$@n^f4jF-V{egk@>$^aQ{RRn`SiAF=QF%|Dm`w#VpVPXB^fM1ck&iga>2-b zS=XGZ$Gg+9l+}e2J7zuuigYX6YDvf*=Pz=>kj$>co-f%LaYJYZC*SDlKv*{q3|$0O zMSx62V~fu-v8yAc7Uq%18~>L$oBPQzhr3^znAS6=%DYceWc$(ITURg56<Mc}_b+Kc5dZv}3LAnjJ+Pm_+(GUQnX zujY&48t0(-xQNf&sl}5EPmG(oCLeX|hIWLT0=3k;ijylq#sR|Z`h5lw?$pd^0XO}+!-XA0i{`&dQ(T+FQK@1Md!kPy> z{{e`S__ycyaO=N8vE0?SkFgvl(Eh$;AC6l7D}d~uZ{B)3Pmbg=`~zLV)bKx}YrXAj zILOjttNQdou=rkq^`6D+f>pY^*IT1lUO5QSy~OLf^m6_eAm@JL&!hch>%-T2_*^F{ z`1|W_w(ia%x2LZusO-JjoYa{G!!~{;>AXiGWbmxM?t*`QF%Bw{%EuB_FgO zB=F8v*wPdgZONCwFi>x9`o(lls#^Kn+Ez%A=R=_UsSS?Q+R=f8>Dn}~n!qIb-qhQ5 zk!OcS*knBZ+uPg3EvGC`pFJ}jt4F;_D&kVkIaTZUy)BAKNW5GBC(=u>ZUyc&^YInE59+Pi}X(9D~(9_f0Z^rx0diSAo1ocewB!ep3@w zSbXnpe9*TmK_2xccj-MOixk4)(z)0k9h{h0kRvS@@ELK)@9R75sK^cjZ&i|8jiC23 zJ-4IdkK>qAl)dGO0SOqNy@nemcEEIAs@ir-+$IFd4)%{>neVqZ_emt8=s&+)XhoQ> zt*jIoe67VkkLPp00wX2@^53T?h(b@AKo4u zN$L6S!04WcSu621)74c~$_c0X8)E#QkkkHXv)!3uks&Q&h6x1-8gengC(q*GT#4(av0j6hgi<3k`-AFtF6$ z)qZ0E*%jC%JcL`)BoHq_hVor3SP#5-5SGqNnw39CZ>;eE9Qi|36sdy`CK*iyO=Owz zO%TT~9hwbMYh+*x)Hu$q&o{+!St8k17&s&pw7i5BPW#J)WmpiPG9|XW(3Yo-+t}PK z8;E@)TRr_cSea)S_}x*9lsYoJW89^KlDyR@jM5&@>SyzHNv*<^&BjAwqju(Cib%1&EXQd%A$qh=G(3m7>M=4L2gbo(gXVt5nCg|NZ2tayE*A&IWx zQW~UJIOXLI_A7zu>4w2`cj4Z>2!NTNf^qva9g_@gI8&0T2O|YVXp2mu{K)9_7g*gZ zCT7M&@u)EA5-D3Pc=h!?!VnlMcj?r_KMa}T)yN;8+{7F>qIRii36)IX2oG%mlg8D`8b$zPG%Rvflf;65Y;*{pre* zR#1ua*vHV%4>*)C(`MJ_LBRKLvq_4ax);l^9)F}xhQT4Y*9UPl(%db>0@JKHL)=t)6n?AJNOYy z)D_5MBmUyW1NV!wJoTDj-G`!~p`qXEP7inBP!bDHO4f{Fg(>qF{X?dj4!Zg+a_DWC zbn5jEFHmjQCVar6!98*dNy<8^7%6k+vfr9agTMgFGNL}avK2r<- zM>yYuO1smyNX(+VL?LoR!1W~DY-T81G5hoAJ}`ni6Zu-|&oS<^8&EUaA?6lij~!4r z&Bua4+Vaqy&^yjd;D==Ni&MtQa5|Mp7MKh}UoJRxa~==|welhurvjt@zM$=2Fq7EX zV+!MbdnO{SgNagJUJhCsTn~=6sA7OtA28rs10qVJl0mOPDV?l)4z%_|0U#b-Zv;1w zZLR9Sf&@Mm$8Qb@#lm1Y%Du7S;rodK?wv#V>a44oDfbBodQxSCV1>j*)q_!G@Z`h` zxeVsF^MA!wap|tKDk02YkCX?A_ht07Pb7e~%+Ls1L85=^WeCV?3kwf#0zVX0f-evj^>Vi2rw^c4xA91V z>Jv#}cwKThO-@){#j3x07sVTgtP_^mc&%d?#_dl~QTLR}J^K+v;u#!_1EseK0%3h| z=0)G;jZF%HfPTQk4H8Dhc%|{s+-n5zG@jtcT(x|5X=YKKwT|b6uCA^bU9mxOSDwAK z7?HdwR1!KUFeu*UfYI3^$mJW{L2fc|NAY8IMY$yiR{#|q8^ zIit;qJS8P3;tk4UiO5&;-Q-BE!v5M2vEZE-6_c*fmur%%gW0H!{}uEYgyI`4?Oc_U zo13Z3RHws3a$$GYgsG=DXVSksv32?$4a@q~q4e+HlVy%aFCG}b_f)H(J*~A&qTu9= z+$Z9cZyJ{@>!V0eoB4*s1z?{>@bTf|;(BiNF3`vG#eMjYS5cWk)+?JOOJ24Hs9vgA zl3PyK1h0K7r?F-b%#AiTZg>D`h!~UKzb=7cs@xoM73u_tAX{rT{nksPBB^rGvK-jg zZ=e`ws>k2Jpz310n4gFYwY&}0Hpi{agYOW;+c7RT}5~vFx@hCQ1izIG2Snhe4DCiyxSe;_7 z@(q{|xuU$6PC`#s3!}`zj93{n$ABEhtJAX6ayejqJGi))MV+Hqo{^l5>3oxPcG)ki zzi{d4nsR=YT&h#Kq0R}jFSyPAOG)x%DPYvLqz@Qw-5d1VHZ!uNnnQwk0p2X}99Cnbh zLUrae>SxFh>zrO@Zt@dod$0|1+iy)RZPt}mH1gEhA!pGSW}%^BNNT7+ja|C6;Tru~ z`a%-l^TPry#UaqW_g|F_BIJBT!$Y8RX_$jDaeBNY_;G*$xKihxGELXK^4|qJ{oiIQ~0LaS=FmbiF zU&lRvyYw@&8fbbg(uwk?I9Jr29Itkdw}pWovF zy4zG7j*f0`GwRHindx#5+RE~!Jxp4x5fT#-y+edA)_fgLamd!r&MI3YE>~AK$IJ^W zvtvzvPLJi;A0G0B?&Qs%3q~4ir$27m8BAwATc50Cc^2cQe`EFzoAh;Xi+=MB@ax#aB5&$sW5G&dwLQ$D6Lqz(v>h|{DrwpR6;9OL>9 zIxv%&g>+>jke7gDdVRFoOF>vTUI4%SK&xh??h*y6{g+_y_qwe(tnVuU*)uV!jhca> zKK-L^GP!L=ZWEw}WgMCy7Te}WYfQa?tH&s~;Vj{3Ip$Fwc`#<2v7lwTxgg#hQ-Ykv zLp9LT9(8l6LOd+9EB@C>hsMgb6w&y&CLH^Q8$YDnjk1u9XG8BhR19uhmqfO&OED#l zV)^aB(Tjase#E#tvqR<%kUYiMgG3OEe4UgoGlS{EtvgOJCk2d%hP5kAlr zqogbAT*)zHm(5XDL7}c1NtaoD(K6OgfF`6Wd{E!r7KM3!PMazg`15Uhfa|%#F|9XH zI}E7DD(#3+PuzU$qZmiZcT#>UXmYT#!yb_ea07ufLP`bpzgj+fgZeID7~eq(}^xcSwaF&r7^y6ri=~j%L@+mw+2FAFq!fcNdquhg6&Kt2P4&uN4zH=I?&in(yr=fPAmoIa-f zgZtrRUFo@w+4Xz$FF?5fWjW{_QEuHnz6E=J4%cVcis6_`f=ocr7b-x=t4yl*4H})v zP@N2EDtdlm_$jqWL%d{(q%E*h?!x!4<>p-oTzYAmRS&iP!aoD{l&vuwW>c}!JY~EwA(gk^Wt!K$miOu4Vs_e-1k)} z$$&aQA;0~Aa-`J zZ|-M5eMZf?cR^E7^{L*!v%ES8VK4l4cS&X};Wi0L{s|7W8;Xtxy`~7n=k)Y+r<7xr zKIfW%`R~Ukr@jARwh1r+DK5hUPSDrJ#s_VUpMfxlGzPIs6^-sn{0=ZB!Bt!1E;P_X z5)AC8-PHb~@}DtVz2<;aV4J=$@ul6;1%{`wr>E)2=c*iSCqZ6Uf&Khpcf7v`$qI0B zhK)jBsXD$8cyjoNA_nW7Ri%XYCDQc^HL-Rp;a)Mf|mb)PVOWCa9#U~0B;Mr0^jaH~p zc9Q0XL|86u!QV>mTwBuqQurElpa?1*?+@Nas+e4_x?i*H0kgf)4@WIUTlNl(vJ5X{HYmmO%2}DTW-93RdRvIe z$YfL_es*z`z`lVEqopQeKeBV@L-~CE(_Fl=FTh)WzIaOi8PfHDHd0Lc;7Pu8 zQAK8o#s91DuVUBN^@Rn$OaF+#`vTrzqjigjDByB;A;p-WcrfnYd{qVYKOhY|%oKr#SW$xtg5--X>yf3Y+hY4N8|C2hTR;TlhDmb04& z==)!Exi68m2d;1?3!Ns^gchJ{kZtV#sN7Lkd6%%Y`J-$et@3mn=jC@O0f!2-+KTDv za1IWTO-@Aa5X$sODGf^z3%ynqAqt3ljU;250(Fd$EQ?Q{KJlP0qm0L~XS@O`Hi@Xvxx^@K(C0&r_}Q4j?BVR;oyWVQZP+?KHFnPRl7_VFg@hd<&`t zb=U73b;Y$nR6NjEUadA^VmmuurT1{214%}GyPtxv=J9#XpHI`5IG)?lUz%hzS1>ap zqc>xJ2>H&S;{ry@my-Oi-W<6g3B`N@q-g@>38Y{qRj60F{E+0xbCiuUU+bBpgane( z(c3JD9D~lA_GOt`c3C$(&UwpL0YCJ2e%=dM?eXu^}({*R+5bzA)_nCtB6@H%Y19Q`w)AM(E1&VZXQ%l4$KdS6E#|b)i77{d| zzR9%MPzQrRo{{sl!R+rL!op`I2o58o3N0R=4Bm%{=0iiPSC3*h&pyR({l85GBrJ-?Vkbmb`9(6-t15D8fZ>WR~<2PJ=m*zR>tTD#RlXd3ATjhtl!9K@!*7!hG%fvUHzW zOx3kG7GlLrM0AbjaF`8);0(XEZlu%^%WTLp`B}{ttIPStIR?@id_yswz`#Ej;M2>r z2-icyxA=d*Emat3u1^#(j7aCL?8F~(QO1<|UPNWdetnMww88pcE?e&hSK6&YlQMOP zhgB`v)FBmg3k*;|gU!m<)AO147`OHMeN@OL_4 z{x_F=1nbz$eFmA{JxxirX$b~v$(@9;==~PSpN&6A$-*A}8*0reZnV)!t1U+x5i^0N z=J`J#5ng=zBg}u7U9x`q_uu>QQ$&qbm1)Z3%6W}@KT>4u9vueRNq^{ZMO95OytLt~^KP(l!;SUjeW1*PXzS-%# zS3MmRP|}CrGr3uJdVfi2)pO#Hase8T$!3SB-0CDLC*_hfgj2M01soQFe{O`oNF z+qU=7DI>|MCE#)4`uG<1*GSt$Tmv1fZ`bG=RuN)OzvodCOHMnsHE+lJfR5yE<%*Yl zuZ{&2WzLw(=wg1!{OhvbslC|yHTLn(E3Ci2gK1To6`2t4Uqg^ncu_flgz=D%kNxR3 z60a9DD|AojHAykj#j1=hGUFJnXwVsB&FH7o7o8-2NiTWhuOL~Q6$@;e5Rq+e^}T}| zZU*;WqE)ru@KrLy417`L{t|V06(L<$Y&5J!@VV#dcEGjH3E!E+hqqDYE7%*U1Kx{$ zBK&-Z^Q3vAt79ZBy^f#mYXc5ND8PM zNyE=Ch2nc^>xCKZFoAq?PvEt(NO7WP+;&1Z8f>Vo!*q_s_qT&?N_p zcZVwP8p$W}573WP#aD$61^B5(&I(w^5OmjmeyskgHFAl#{uB{4EXJj0*CN4dkZF4b zH$Fh z_ZNrj1Vfg>kHB@c8;x+<=coeTjWYdewOwqv4?l(J$Bpj=`Dd2 z`kGroK}GLV_KW2TzF=mEUcXA(#A0K4->vI0IdX4>`_YoMSqU}eD7 z#9el?^-o58V{bRb%krL*K32oN%O4`U_IPPB;+dd6@h$=Ct?b_I?S;`dmWd6x1&dMW zYNqpg;;(BXzff~{Srf2qj;-^norF(kHLb<_Ka#E)KnSOJI4v;zg`;9a#r^K%UmPP0 zCAXrIA9K^cGqw!$uepC$#^wFJhtJS1e;0pW%kam&U|GNJOMbCX<3b$k5%m0CxcBv^ z-*A2X`tD>7%9nkhY2Le^>fiUuAS>Co?zTRBGM>#cj`vb1Sw%g){H}bWy}|Uk|3fbO zed_5g93JZUHs5U%jvY+(R(#Hx!^?%_j&GS+f_9r?o|MZ=M3R*sM_0C$cxGo@FgMUs~y66T8fGJ$%9*!voi! zp0WskBK+ZOkeX70*3lYMbflQJSv`~cp6BpEq7I>PsuPWkrhoMI(vIV~r z%_?YmZW=|$ipM=&R)0u`wh@>mHyTfv-myZIZL~SbTz=BrZDaRWoby;Hl~3sLsm}6X z@~Nx+eL{vK0Tq3Vtm!UJ&Tu+|r&<`e8KnLXaHkHQLFO~Za4cb(L%q0_J~nn^@pj+CsI)D0r(nz$4GOOD}UZz{i?S9BTW)9Bek}!g{ zy41e)uoPj@LvJY!Ma@}TnKIF~a+}*GI&tTY=ejQbLru9;uKvp@HCDvcL}Dp(pYk@% zd_JXI&EyxocAQyjwx(nLnp&yxLz}%GxBEkMpIXsy8k5jP0Y#>y6;su#R0V4dEm((B z?k8XV-tS_>Gb-U_AFY~}-irEmSHu*SAzU(XYJH%Sf~S{uI8LEbYUb4PrMiOS=7|VslV)7Yr986J?(o6_V6;crq+HB*9twqK=F2*$WG%A@2<9v(M+v5 zx{$Wu9$LFr@_oh3+n2lY%F?1SmHLJwJ$A3@6}>rJT)jvmnh@y{S=ys2X=Uk2-k~hFO&yHZ;OQHSNgzJsRwOZ2W1X%(Qlh z>_^>t$dxfyMNQYpVK>;`NYhy5W&S?jm=gX}9xj8w-&#Fh(9+~Upt0=CR5}e?87<+? zDk1_qil;}ranhd?v+P)z^j|MdWBG2qI*C8um69gQ_;7USr|2o+NOx#-e?VZ*n>ULO zYb~1Pvp*2v`A1t@J6IIgF1@J!c%LDzOQgFTp^VO1mSUIgfPJG;uqIUal7GR%d|9z*JZZ6RWB{?al8o zH4^ve`QOElV8=}GP%(Yxm@gi@N$0ZJ(%U`qzV&g(aIe@e>8%(1UC;YgwXxH&qQ88p zVL0@hD=KP#UnDPl9up#ew)dwZg>!8O&b7YF-;A)ep7{jXSLN_2n~@88=@158RdV6> zj-;h!XKvw-BgZ3*4r|u*q7@`oa&d@N&?IM38?+E-rVFWkFfB|k$3m#5$1(0q*h0GX zLh=UQnGH*9zVSm}-@#iXsSCpc)Qsbbbwhg{+=O4_wNl3234IbG$d&J@Rqi~vH%Ct( zaWN6n&1`dOL+V5Mv4bD$!17T~E$ZB`HD!E_%q$$$w}=WKFRStA2G>t7b)-}~xf5eA z1-i2%g6`SiqWUi?vO2EWz%l<&;vSlMexx1MxBbyc2L|sOncpx~vWv>wpIYQLIbT*D z@Mv_2-nx^L;gNsm87kU^aM5tAxGKdz$4cR)%PuGDiRsk&X2KZN)Cvx4uxQk>Uv4F~ zeB0qC{aPjG*xN8I)VcQlP{X`wJA2HT2r|d|T+^$M`6-%tk2}!kG?_N$yS&Z`110ad zZD0Juu&gH)H|yTdGZKgL71B49JQP;6s1!6|LvtC_CVQ&g|KrX8Zi9gxJ0W+2%A)k& z+XcBGKK(cTLg=llEP_;AGjr_7@0I}^O*MX=%W;?VhI zd&yPrD}AzxAKvVWHq~yAn|)tZ^=RdvSCl05=lL8g89Sx7Y$x`KbW2HOZ#+xCy;Jn2 z?T}?s%p&!A$XE7UOlb}*g*016Em!y+-dfbFfxy(GPeEBItqr|S%Z9XUTQ%F5KZaw#f0$0?>~AI|FcoUvXC`i#Lc<}COwMh5xn>6{# zrS2Ra${adQd547DG#|5nz|6etSw=ua)CQ(0f~w9*qe&%3h9_N^tbeRnGI~tO0G!SH0bMa4xJmM9^e|p+hP_6ChQu6-~RhtQD1*-WFN%_B;BhOP_yaN8D{l zfdr5O6ASB9HDs^Hkx{+ zF=8MqI3ddZszW>XS^d*fLhH`;+#{mhS>A4hLEIXnJ z0&kZ2UOfm{x(sS-Be;pA^26ks-E7=93FF2zeA{;ITtMPpXQpkoypwrcY;5tH&2@wG zcn)JmWo6}Ig9qs9(^bAi66zw6mEwc7P0_O076#axKhoQbiY2OiV^T4u<^SRe>6_-5n&lY z9F4zHu9b~lN2%Zoit1|lI-+tpcMa6kqhrU#Gvx!=>2?g*~mCQtTx_qpv>e`81>vza5^RSHiYn7h&t za{PWZSbMB_xc5E9;Fsiz=bxRu7LSO?jQC~btHVjxqhpLT^}ZCPKd_I135_t^O@y&0COq!$ z?xVKLO$Sm$Ka-fqK62OTHw{~93c4$+Y%Le*BQt90R0`!rd)^7wIms^?eu+|#foKuf zU4WF7@NtQpJxe77_)WSyySe)iV69sBmSpJcjAmo`Nj@Qm$+=W6dt1(6&NC5%M?>eR z(LByLn|KrVxAhya1)d?m!?PWHhqz1aLpH}@X9Mk(;p~wPiU|?A>oeGO|d@5^o{N7E%{y9=+DYR!)_finP-d(Bt4E-jV@QW8Oia94s&ALc;7t0}0#sA6d z-N7VuoX>7`)upBr>MBfNsA`2v$>P?YWzhGUgqS#bZzu`LBkgcb|IyQP8w{wCJkqFS zv+-m>ta}WfK{-?{XPc6eLa$yPe_%fL1);V2@F0@@(g$bC)dv`E9@^Hx&Lh84rXEyg z2U0s2kox-iHgz*&i3O9ijJEm%15mDBQwb9JIm7|j1`a3(!RJM?Dq=bqxp_g_q zo-69iac_5`B42HP-hid%pXGGH7r*U37;) zwj7F!tLsW{30FEXN%ZeFZb%Gk4H~omJu0~-fGjB~ShTC04@v8sY-Lz1P`CHoIqu** zN%togB!7n<6en9Kr|*qTz=#&dn6iyEya(<#}?c&O~8-rjsqU?;vj1wHjJ{y5`d-=X# z9~17KJH9~y5(mU2qZM;td=t;VPfHF{U*&kZ@JxT_1;sHe9Gt~!cO(t2n~yAC-fHvA z5zIYXkmXAq0uM1DdF+V7`5L0dBk)qaZ>BG|qg7%tLH}Lm$eA$k}>rSlYF5G6*oZgQQ5j z6WZ^KaMaqCehV_&dfK~$6i=0+qhmrVo{*O!P!Z*m!mlOS7fE5zpv{mGN2T+2v~>T~ zVL{k^mEBpld8Q{FilP0>;T{)rlvcLH5do!(?U3qyHYQk@jP9A=akHyZCE%n8nZ({Mqi-M8_0C<`IoE62X8v=z>n zruO!`&ZnB(ypP;wF1oSMGc&}ZI$aJM%25=p3fnuzD%2pb@4L?h$d&ktT4RI2K6UL* zxRuq81EW^XkZ8-+MaxI7P=6Rd+ZJlZnDg0NZJgL4=G%XLPH$U2nz#hJpwqU~YTP$- z-UV(>TO*r6jcUl#esugMw!v=c3Vou`O&gm%#Wk&iot~f%sNm5;mg;>Gm~So(gm`X; zW#);~v&MKKqvhEIU_C=fo<8iyT;}7Y1YX}f(D!kp2*qOuUg>=%n|icQSJ%-HOd=#L zVsLj~TchBS^TGQ1SQSa%kX{C8=xqku0?O!mwGTJ6L_|f4H>dXJi%SNi#-#M(*rbp1o#RYh`6l!=TuqLCJ)1O&MY2N$sp%_lx9+D-wbo1P{0lF)N zSh5Fn;SA40EGAI0G_&u3&)e7L5x=cbN-!j5WIU^}!Uex)N_W~m1LThtlKNRiIWN47 z-`kz-Us3p#v60dAV^p21xU=W0aMZO4fR#G&XuGQv#8BcB;wv|oTHbkL&@3$fjG(LM zR-u*w7kcPWe`Rn`(P&n_iM7&q+A)D_9=6Naj&Q%ZZ0&qP6ugOXlb&i|gIlCJR}`QO zkBsi{vj-Y?J%u>2m`xjZlfPTb&d@tnY?m)Jn-2HqiI=J7(i8YK7*WF$Xr~wjKo&4iq5}C8lPUqERcoUlY_nvp^ML$*}qLH$%ciJFy zKG^)e}*(fIe8VOndgk zhH9m!EMPM}prl0mYL50qHR$fAs~oZ!g%3|oY%Ko=b8j72)!X)of-MG0C?JB0fOL0R zfYK%1-QBPO6-7y<8>Nx%2I=nZ?(W#cxwihEnR#a3IcMJUnG=8NCKl^n>%On+`W7dI z=|GI5?!1{aMDbnv-OXrm^i}^|p6VFhyJ;NxRO6xU)fsR^)<=p88;^(1A308M0dp7} z2ExL6Tu77%*2;apE&PODDH(|Utc+;KVcleX7oO)PisCUkKOJ-2tB+IVF&y~ywmp)9yk5%d z!Q)eV=EbUuPvT;CHSK`@`%5mhnuU*VtT>Vb8$02<bvN+8EP?Ut!WkLk`_%LFQm(QUAc87^eL6FC{V9aHZ8!l5{WoUI(w5LQz0P0F9;N1 z*|4xM{BK1&3gB9|+iYxN0wANYV&!c!Gc(ltnPkeNzuM*2MI!hOBqcH}QW3%a{Y=`m zr6O0`G}V9H_%bs+J#Iko8^rxfd$0Jw14ZDK-xclrym*TiGq>85j_jqph;b*B<#dHE za(`_mZQyddqsn9^q_Z?bV_MrbbiLzf$NpsY`oYH!-6GQzI2g(*kv6$xV4f9%$dD+V zPnEQLn{jx&-Sgw|?qc^>MHZvw_67SeH^;-xyZl~d$9Bl3o>~gep$WVf` zDCl18*h)L$#&;eRdOyh3X%S#KX!gcC&K*CBZ+i_d8z`f1ivi~tf@{G@kZh*GI~G{Q zj(a_xe-@dS_BL9+Vx{l*?rQ-9y8ZEmcgGsY{vekdYbMxMZ!s1+>W7bRZSCxkaC0kX z8c*K6EScT0*ParK#g5pdxN^6ETECE{tsvk+<3LzM*iRWs;Luj>>U>yeLy~281l>S8 zcSD1)-H552(PAqt1C6TF-^diP>kPp4-LW4$h?vitm{dRg6j%-=hg{-Ks09Mmd-~IN&$A~|SsCw?MsaQML(ZKwy1a9B zst+G1zQpF5EkUBR+=pNZn%mRX6c|VOG;ifwf?-u(cb($`LmXo0x51!57Eu4ozUVkLviVE$yiGWs^NJzc4AX~Y#x^Z`pe%1loTaH6D-EZN^Be=|i`?bOQCGBe8@+y-Yx zo0U~k24?2hDKfhHVZnZnNf`9HCw$!9F99hI?b+Po?};1tG&MB78)|k{SARI(Tb8U; zuv*`+?Z1f)O8qlja?Z<0;JjS7w!Lzbr zx^VGhXr(^Gsp}ysE5UMPWJW&c5?HZjUoad zR&z?`=Y`v(!ifs3+P}p`BDWt1y&?rV$&`x(bSaOm^#^=O1pO=^c!BUCA$V_3H)hAp zwwd^WKXtec#oG;hG-?`}Vyokua?S_}$+99^^$X9CmRep4R`U{ZjyBL7b)3EONI4tM z&_+u=SMf{ubQza25NvIC4i8mzP6lhEO2S!9s;B49=`CC36Nd6ID9 zXvdi}y{g7zca6{O@bD7kRyTqBinR_r?!RGCAuFRN{op_(iuKk(^Sbip{(NVb7PV3y zecu8q_(92TRkPoFA|QwdSS<>v{mf?FFlEB*e-IY(bm^jAH2 z4-qO3AT}<}V7MqdL)Cnf2`GcSjT4{j9{<^%&fgm5qYw>6n$fak($0ahl0=_gtM7c zvsB7Gpu4#|L0lSHU=KOa`to?~xXmlJRKlrg{5$j7Ex|swB3PL^dIBySZFl`poqp2P z-!D5_Y8L}enAqu3Q>xidTsxvab$8OYupdeIhjv4yT8BR z8gqId-V42rvyV_Qzg`KZu|M8T8Atq*&8W3;b!9af`<$AKoqDd27$FeOBzRkvR;jw| z=ms8_#szTs1eRpCa_PFDB9!?5PR+^;!ApZ;(&{X<3Z`>I6-M{_ASTrcxv|?X{q~<; z4*?#8@zNgqB@;&Zio<7xXNd#m0tnB1Z|b2P-& zMKg?ijW$a743z;YpQBDhC6}(-oM%u}T$E+p^-`sj0yKb_`>-K`bCp6^_V>G_p17p0 z6@hF#Z@^Tf%6e^&GB^^3JZM(uk#8a7gK<<$5t@ls^D%BX5rSwQ*lmo}^wnJ^At8Z| ztqBTP$U}WbS6u@GqsBvqI2#6I-NrW{Iqmu``N~yy$rE>QzOgA2yCHy0oajs;CzP}$ zm}&1|DOrZ0i2YsXEz=gA5HHxE=*@nT&+E=Z^X6r$!bx80>S&=QFx^EoR;poQ(l$?{ zblqv|!!nr4IBz|nrdCDlR$ALF`U^=egq|GZ4O^i)JkD$P|jpG*^kGluJUXq|U z6)9^}(0Z~%_wwb-Lz`)LzX1jmf>9PSsn?M_lEv^~AVbVzSHW=pr01G6#q&54~kH5MNReW$$G6z>oL;nziQR{fCkiGb{6h^8W4Uc*myWlYTu0S=}(E zUgdZ*NF32_3CDGEa#|lN?SMFD`RICUT-5bwR|NLQw0wbBubvE(2*2LcKeT*^NXK6& zr&rP|=8bV+!u|bU z_e1Uf=&Szup8sXgtJcGkjoz~6xD1Gqtv^^&&f(<2d(Q+eqL3gTo!}{<*qoFN;$FJd>+3 zH4+A|ovBB+5#9&iN0O_x=-UiGNViqvP(%sKO~7Y$$E5NsGtXRHT-dp|^fWjAGBxg~ zQT^fl)!rwerA1HZ4n35=R&@AfM9(bSRF;1~Grg@u0k_y@{vLo}cZt2$Lw&zoW z{mm=4kB+c+X?Gwk*Ud5mcWZC2Z8ZaRPl;RqweSr9z1*~ zx>9hi)jdn$xKLhB$2cFdWzTFNfE0^TKyFlmrZs7>9;U|SNLG`hTLG>}9|(|N?n7Gq zem-2V@f_ZC&o%IlBP^usldsU^4?jJHPoh0O>mDL1{Pv*tM0!-zCUq~^-NnV_*Ve8N z4nNBL>g_$-fPV4%ty_SuG+sloD%EcK2#6|+OlJ>Fp|Q4QHh;iHH=ZDNw~2beZMQks z6_7JHJMt-o(Qn*lNuk7;12RH>w6Ue@50&9>ZCyucXtT1i{Px(1qZVT8l()AuPC~n0 z3#MijWH+tSqQK{A5_ad=Yk){pbyq*B+ZGO?lS~z`0Z}?6t=>#L3qRumTb2^e;x(%k z6>L15*Nr<8LL8h~0QnVc48C14Q|yYDB>9ugf__nf``k=fwOyhJ_E8nb-B^VgffH_h zG;o%WRod84$T8;y9YD9yNN;c8Co4Vjm4!48tL&VdYO;$AEf+fYQTYPfbInWb4r*nM zejl&&VGMr%bxcgX z=F9+I`w`*@2%Dx1@&xT@&rg-of8i_643JiC@vC-banoExBqz&M3C%G7o@n(u0+wVy zzYUiCE9_H-mBEpT`PKsoFk)lSt9t1Y!TcVo@TGQe2Rex3X-P6aUR5CI&-9B(HPW?1 zc|hJFers+HMDK8sAR*kXt@7|R<o$f1%h+ttmLLb-wz5H!L?s(y6Gzul&!z@Ph){W|LmggJxKV7Z60l9J1z)waOUWoa$3%}rf}WAd$(%Y z=Da&Wnj8m%-*YX9PA&T6XuI5*?wx+uu@bB4a4Y7-L02l%&`XMrvlmSW30RJ)PJmxW{f#KTTqnD90zo5aljRgWw}3TL;SROd$`xPw;7O}h(hB8t3o1X zgD(FetMmQ{UUN`LS8N=_t%Ek7EkQ{(U-n@J@+!U6J|XIdB3<}&5AmfSt?F%f!O5R| z!Zz+q*Vhhz0I&yqxQCYuHVER&UU)!M|T` z5Fbm$nIbrC*4o#3oEUe#;UubEfC1U&$nH{}{;)e_JSNJMKU+lii@74*+=c$e+X<@W zZjp9$aH>*ZTc(BKW{EbI8>o96EEfcD0}khQA#indxG?7Pt>qPe^($AdFq;m3dnM?1 z7YoaOJ$H3D*Q2a>Ek%Zbffl5&iGmxvC#4!6Rm-!o=<7v8YoRQI30$&j7Zoo37PK$VGw(L{CpxZ z+OqT*v_IC%{ZWI1@&Y#>dJ3L8ibU~#OlS$#($IL3I^Q-}ZWohr3ZFtyBmd0jTd0`> z*rI}=yN{ZHU%VwL+h;%ghLj#X-bOA|Np(hrx(TSTfWA1VUvV`jCu%U-hjR0a_?sUu zX2^PtdP5)Ae4etI`Y_G{WUx4LvB~M#K+OosAPhP)v*th{!m4{G5EW3Y8i9rJjjNCc zt)u&GCxBEahi`}qfN^4p6#&ge2&AuS0no&F!VQIP{qyMr;XqsK-%o-l8qF#?0?SOOgZyz* z!-mFDiKvMNS(;uLQlj>tKft9yEu|?OW(?8%nj?P@dvD&SQ%HrG1Jw zFYzOw!x;p1I4KJa6mg`r`Aoe)QD~^^m5*q-8Qmyx3xf3<46F&BkvsNlTYICBB=N z$axA1qrs7d>aNFIUd5G_t|cAc?^>OmNZ&WV*m~r|i*U3}`YAXqHvni`uGWER8J#MC zh|6esrv)rDO3YV(Xn&nH9?SNsm^kRaJTPRE(*w~?>l2mYU9tQ_(19rccWAfqZi(A) zYpeHlnD8G*$f8~emKC;5uwDRj{HC)9r>D1lhpy#`VnEo8XwKpnwC!pHtvDXuYv> z5&H3;UgAW&j zE(Zj;_WUCC3OTO<+7aM7lz`_Xye!TE7aP_#+f3C`f%hjz(lo9+h{RbFt(4y3!$cin zv`9*s$qCVj;@O#x<>d&^J+%-vGgV9N4&U!mDPA;>*VwawQV_|G_^k2q>hhT>>FI%} zjp0ClT@xCp4ik(rd4YzbWn=`rB2w#nDn8{Q@IreK;aW!MhUD&#Vyn%drN7}llvDA-l8DB*rTj7;~`-OaNb0vC)Jtx!kdb)BvDG&FzNeay##Sx#~wmj>JN7 zbe%Im=N-!IfB{651R073nHACuK0ALRmD0ubVs@^TbSqg1V1cjMR4$VV;dVfr7PCch zI0fV9>N4#VQpi^jUJt@~@H#biZ@E4hE6G?9aAsX%xeUlQFjLgjGD(-){~s_XQV^Ej ztr7J3DeSQyNFz?ccsj3PlKk@Rx-AEB}0nLiHC5DS{WdxVoEi8E~C6{(gVa1 z0%kmQ|1@eAC~%UD7TUo}iNRz(=B5L}QJ+#;E#Sk?K+hgZVGIdWb5rMeuZt=-Kc7EE zCdc5Ev#h+F175_alD!|dAyMpxhd=4wawf=@QIl2s=dPRuW(`oAq3Rnn zg7ka&is=!*!u z_(ie9I~%pTJX&HC0TySS;G1>4yPP1WtEVRjsNm{galo&4qfn2*lrHD|H+neh?(gAd z%09iJA_u0RF=Yx>?jve9{U8i!?10*b?3GC3bXBn}k?CS>3N-NWsjDa3nmGCL<=Pd@ z2fp2nUnUYo+B>C4GdHHgqvIv5cewAvsW^e}iO3ll++5t!Dz`Ey?`T!mFclm0GKY9( zX@nj;w1Wfw>i9kvt%ioW5^bh;hoOI;p8WZ$3CkMrvsjn0k`l?tt*xyR#)O}bahros zJ0{Fe4GDHvuGhW1eBJCx#35|N47XcQtmei7I<}MKKWRDxPKpv*w8;1 z)`zA{O&v_=R4v``P| zB_5A0A!Lw~0!a|xwN10p?W|;p_7ldv+Ju)5U}5+AykcUdVtb)LT;z)*AR0c)eb=rP zRaKER==V@sv<1b#o&!cjR!+_n2)v}&MM+Z+Hz0Tug=>qmN+GyUp@TZejcsxyol9y8Ld` z#s&)M+Tb-Vb_jEXNc%uKIodXMdYEL0oY*h|cccmK0>F=>6;6H`W=~xoTd0(qaM?=b zz0m-?RpCg$dl+y)#{=Z`|AGT1syZ($PkX0IUk1Y5ix^cN$d{*9IKvd>CRjY>+uEFZ z1^LqztF1|o{$N*Xmw|f-%A53irmDSIi$<-JpP3Bgip5I?6y-yiCL3J9h2H%lq*N2# zePJLdNOsETyWEFWIgL+1u#N1cXbtD_080+Z=BoGeq7mk88-4XRJ{})5(CSS;Dfp?O z0mProkyGmQoO^8%0YC<1H6Cu|78l2uZ4vzF_|@x@l9H0e#yFzDctk8u=#x{O=LwI~ zJ)u`M%q>#>-}Usn((qO9m*MkSU@;}0CL%9{1!L8D<(kg%QL7Y0KCTf|H_&+T&dyF# zQ)`0bg&qL8ec*Zc+v@HNnMf?~i@gb0Wz4qJRb1&*yGNR6zykAx!Gsd%sq>p%aWXb` zNdQYhcZZghU7&mT?FF@JN#uRHY9{8rKiMdR5BV(o!R2AaC9}`apy&9(KG6MO?SRF^ z&h>6`;vLnqeM>F$b2m5bxb@q_9My5;;t&(?+*R-JmXWMvn!aRnFh!03| zpTR2@JXO%`&tfE7ZgbKtooG#AyE^_#MC2xz$>BT3#Dtfho)49-Wc})3b(@)ZmGmU} zn&)7;yt?|Md-FGSz1~0TZ(WLHN)*#GWeOV{92@f#BgF}Ol6!;U`DKpYsWR6`dPHxd ze9K2pi)k~OHojV&M-Loq7q9QQ-{QUDqA`Uux+SPe&9{EkX*9WAv^&?__zA2G?b0{g^c zOrqxX^a!h6Qft{r7khU(gjE^AEU+xtFD~R5#RaIKz?tcZA0-H$3__-Ospxyg4_s9J zt)Sd;KNN3SJSmQZ%)c_-pvpsLjM)zH2D;%K+nUdq6<=P&drDJoDU<}l$OrolUSoBg zFmSbhY+ZfI4R!>djcTsAa&R1EYkU2%Zg9{4h`C^U4fSL1oa2G3pr!uCx;0z2Zi8Ku zrnk2bpR~-m3c~Rq*6JYo^=s~`{(iE;nxo2q&~ML`BmFOX-3v$)O039bqCy~=v`nMp z_PglREGg)}%~c*d&%a?J|F1Rz(|q-vo%Diip%oq69@jCqG%!YnE$z=$MV=lVNkXzX z9)~j?i3cV!dH;x-n!QMmjm(VhM$4@nlVTMG+Oo`BJLPUgYLREJhpi5eSQ%>tAB~a zwhq4iF+@;i8d>0^#3pg{wfQ~R`e@|1dGK}ndU2Jz0y=e=BsQd&cmJcMJ3If|AgIaa z3henA+MW7^SQDud^B^wzV@=8~Vt)`D7dYZ1n&B3Zv7>m=B=m`SZ*TWja$g$t%6v2c z!QKQchR(m_{(%I)D3j>@$s%BZEP}Zb0GFFAq8O=*53`MMVTEBl(Megy1tXrWHrsFB3&5g!_vu7$unVFeu>{ZJhgEVd$@BxK#sKQKH znQ%R-l-}g{X8OX57gZvmCp@OGSS#d|Z)&-l4;6b|3+pyXb21s{)Wo+E; zn{kx%6|@_Rn|EIe3N9$#{3k^F?OVz3crnKdZrD@C2PqAiE>o)<+uxjh1hL-n27YOz zlpkJekgv>=EsdmSVwnpm&V^L-DNv%Nsg~Y8w_4a#%E!{un(5dQ`uoDM1G=Q$;u{qj z5vC*Wa@4E?uBvX)(L`HYDFL}^^R4xRgKwl8`s-y=+aO%p;V!Od9mbpjtPF|}TCR0f zvC#PId9l?^BHj;kyk03swhcAJkd9rd<~m$p*fc=mVby<5h`4%FyH1K2{IQbz3PDC8 ze4pmc{e_cHUI4EB?(SwBu{-Ot!*?C6c=hh;)wbLplj@&+3Hgcrh?orrzd_s2=rrB| zTzDwPgACN9$z24iK0wH!V75ljy^{T1^_F8Bc_k&IW%p0#RSK@I$^@(;11`w+sHacK zbn!R3W*UGWh~-u0u%%Q;JF<0>+H1H+4sOJ`{}b!J#*eHweLoNLa;y&}#5H-rb#sG}R@t4}X_I z065NC(ATjKWbnUP+*oSvGh|6>kJRaOLq`k06qReGvb)D9j*m+E_!~ag7(z!JRe6F% z64&bu zUNn!xwtMG_2K9-7X~Bjw90#`RLtd{EgcLidWRriRJbfj8xXmlTiM_&Rl33_*730&B znzLVk|4DL{7S2qIa2?R0MuQ)(I2!fsY^eyGI_`D$_4RRkdHU)OHTNmhM?h#JkZG1i zO7EjQ=uL+hQTLv+xU{Ef>@;9^&+Lc9v&H^|8{jVwwm!D-%Ac(L>!xStwF(|t>Tm$B zQG>0TDSehX=algYu?cvg)Y?}>HDH(|pnYTiaKm{IH9N3-SjQ6l9 zqU^XS`x7j=eo`n=htZ z=X`bXBQ?m(szNgLWycg06bypE2v1_L|DKNX@@qN>o<8;P%hEpU2zT%W=jL?9JoR3- z8Sq2qFX0_8JfD2wIXEm)DogXoMtD(tlr=V39_xwCOW1{j!``krG1Tp6gjb`1lSLubFgBnq1>1YXZuzPZMd`cA8H@`HBF|vR9}-@y7#@9_u3N=t|H0Rn`tG7SWPMX_9|g^L+&1L38{Wl7 zg~jh7n_8o}LVT18(X-As?+zCjSM_d?U%Uh51JqkZwmja$V!k&wx2xMTuAxDKWZM4D z%5m#uQ-{z6eX>STT` zyT3ltfC7ysI+%K9r3ZcZ(_4f8pg?{a@g!sv!v=d zONN3q?W1R3nsKEocb)f7IM6Pa*=pKCwztvNG_f}FQ<2a?s#p7RZP1|E0d4fhS?eohx7-ljX%)Wd`F36guz|YrFfd=UA zS4pjgu2=^qmlF-j;Nak0V(w6|RlP{Rg`{vFyQbH>so{;!@&UGNsO!ZC&f^;V=vi3m zMpB7im6fB;0^xDSS&?ozKlBw3_78AlRoe2|7F|hn6^q21y1&^mvP1@ro|M?0ZKfPfKk|&!NM<2zdU5>u@jC$11)PxQWDYb8NTy>gT67cwTD^$`=oA5Xd9uGwWu;o_XGB+QSa2m@H2%^_0@vCI0{wY$ zj?Q4d9pA^Rw>zIwrc1&*NK6_ zzM%SyjPQxIRnN|(N;Z_p2@+HeY1LkIWTuKq~O*Vhc04?Y4tLlqkff2SkFG&FbFHbQz|IZueTzqe(iCBbc; zCHZ}h^)4!so|!RLLc<9Iw?Hsm)@qlZF7Rt+-tr3m%Tzi-4wpj=-k&5}`cZo{zhr}t zm|HfbrKF1NHi*<*nS7V{+O@k*)ZBWncYze*dND!s40+1Loy4eeEK3%ghHw@p(RP)a zH=nT2QjVVseVck;MPRojM1H=-(dmz$&TCzivpH}EPI-_L*_xk3 zRuZE57Q{h8$kJihpZwFNU7?3e^o@{Mz1@+J==SW`&cgV?$fp~vkk8@3q^EvnOBz`0 zu-u%*t`jLcX0NjxEDGgat~bcxZh;9O@7T%WSgjUt(WMi`^~Te}X4_&bnf-_bH`@-c z@2+=60e-EgP$=rbSJ-(kD@Sv@6<<*>Hohr_j}PIrr@fS;0~w^zI#hDG>f@uvmG+3^ zReUiPBVGC6E_>YuZgHYVEI&iZ%*K25;K*P!-r)u61oifO6RSgb5IpG_?w>75nFEOz zT6-wHfMX*k7xLm1$zZiEe(9=Oeg5|wpv-UCJYmaMY)k1$;(%aa=!&PSY6MeazJGHQ zN|-M63OS4wHA-haK6Y)Ng594#JJvRQmhgFsR6MTW>DMmRZi{`#~ZW@_+OhE7}@W=U;ez5x!{H+uBi zs`RFun?tCQ-nou_zGXaC@lmqIqbt{m?Fk79KBFcM8igSXWsp$rI~J1bU$5hvZm=-0 z)`QE|j#CaLM~e$D`QOEB;bmqBNqpT^X1r_gLS8;}p3sw-M2ylt;7-Dx$ProCPD6Ao zw)8i((zUbXj^3`Ws?pY)pcSE2#Xy1gc_vZECZNN^j*}u4wp?z-_YVkQQs&pw_#Uz( zoz&TqOFUB%@w-~h1==~hnZmc_2NO#Oy4ct^A|kya7#V7qan3`GVbOeloPWM!!@O5- zta(ncqx}$>>$v6^Orzlb{^w&f5VgKhxvpoHnGym9*``6~J`bkY`;#-?4o31i1y_`F z=l#J>s%k#>B?Rm^9p8 zX6KMf6j`#?u@EAKjIIGn7M% z^RrpQ6RM5z>F}t$chd&9{4*PA^)EEj%Jxx3|P9_7VBQ;$wWZ`DJGdo zf-D}Ck>_g{L?cd$Zyk@hYl6M3!y)?zr-OBk^ZgB{+5mEHXTldtQX5ZwNMba1#udK0 z-v6_(jqhOMDbq3OHWe5*400gMfa{!Fp9OSA!+M<<$gT{LXJcUpT*J66wnj(#sj)HX zWVzJ){V5U^#Ep>T%J?*$cK^2b6(SE!CvFyURl#Lqp|H`ZLAvPk?MDZ1)sLv8Z@! zbx8W&X-QzrLTmfh;GgM_c08EX<50@HSwS7@T|GTL!{H93PoItn6={$NN|wk_Kn$2i zbTlve`}aV8Q?n9Nf?d{beJttaCqB6`9>DHoVW@e6Tt6zV}bf>qOwnG6J(uL+z)q`bhy2PnUA+$hQ{YVg|9J^KFPby>% z2u9lm2YyGTQc!bHS6`pbS@kDo<4!jx5Y5gWUMFB5=<5Z&6Fb+z>fDK0rG~Mw2n-&s z*zd&&cc?b_kELEqOVr&dv)}qKVz<$?P(Di+ADvq0 zw80DA=ll2X9~(_XC>^Yfc%Z+ksIIQQKrScTVTM^97MAdCct3yS1s%pFGV3iRxXhKIikvt$en=kR~>gr-&VT? zF|;+iOEHQQj4_vSTSD|^voe{LE`>9jwsv}8D&(5-kdf6Fu^1(?G-VYQ>a8`;Q7dKp zYs6L7_b1*FRZ;1oaiW8Gi`+zUt;NQ!Kx%~#>nf#;$OimYwXAPu|C)|3huy$vScmELS59#&Vk7v5#O6Tq1WFbHBCFHgaeI@7% zU461-IYGq0k>v4O-37Mlnx6C$E{pA_cfWr}gE7&|6{Z4HdBG*Agk-5=Mk*JT>S3D| zRNN+FPi)mPLu2k&pZA$A;k>SHFFafjdIhB& zg|1l#Wcr_&Xo=e8#@flC-}VvyE053WK3Ke2poV^Hs~<4 z+JGu2iJ%C{$_soay z(G+M0S(P8K9=0?U`;jW4tm95d(jPjr7ry#ijSN_(DFnQ7veUD_D=X_9LS5fDc*w-R zH_?}5M+ei`x36olfmCJ56?x9}_4@VNItqm>eTJrA+RI#Ax!nUHFeTwIBtG3H4Y_bp z;ViX7&zBjLHK^y_vTE}EMJujLC_v!E0|3SO#Vb7rVGHzAk9kEjl$367On7~L%E#yV z>Cwo7Y z&HwjL_~)yi-2XG@|L0#XzbMCtjG&_$x|rs%t7f4Uli(d!KmW%&&f0>h{uYHF;%-j| zVbq@+3}PpdKSp$CEV@W#K^@K49oe_>BJj19)bJx3hj`dR>8adEnG7`zDc}BMZe2Se z{`Wg9pu|6uT+2A$@^7zMiAyqjE_GoP1M#x6Y2=w&gH~k2mt|VgX9_9b5-R`=$PW+F z85@;`$){wTfRFed2K-^DYyPffc?GWJi>psbrq*b{G&ZQ<%m)SNRVhhjuAfi zlU&>#NKuq;+A?S{fki+NuECwDTHZ|mIWHzTIoWuEjh6QILAwets6Y4b{P>|xCUQnp z*l)75-sJ@vXgEp(HHcw)mB(8siu4tU;Rq1)BR1-L!0CJms_{l^qWieGp8~89vdAMH z{0*STfAREf-?Bf$RVpw+VH-~o)x`@CYWl^eZAg;ooEZqqHy`qTfbc|RuNSf?Wae<- z&3^_`&>2r7mP~z2HqXLkyH;P*6Ci4Inw6b>B%I9$r$6h%(V;TiTR@^a6-N9iDauxW zzHU5}jcvu0d$Wa3tyl!2YC3y*NO*Z|824Hthk*ZPusk?CXqfM?x%n81(iHih+%PrN z>ljBA*{wbYk>?hloiFr9S)+OkEEDSzhmck5c(5WqB1?1RIBO0!Iu2@!H2LLM37)w5 z$FSq;F2!D6nvSeAzkBcAJy6W*BHJsEX=nUK?2?x!e>mL3A#CmZ9=ABt^-u^Q81}UbWJv}WmI;-X{b2$yi=MzEBB3w;@D*-45 z1nE2n_YzCeEB_RTl9FA**^*1^5j648;oFMwEx16OEZgB?M zN-&BeVoSo^<47|Wt``;wta*Rvtao?6_=zW$M?6$I7=Oxt8AMm{GEG>JeEppXz3rJ6 z!}o57hBzt2XtxVwjfjYfyb(LjJq3oce2Fps0-bWaHcTD&mwdF^!qHHVe;Ax6SH;PQ)Xb{eeUl zh%sxYe{rxmMH0=85CG)veeb2HpYLA)mf|+qA_vpAw6wImW{AjrW^Cle$ZMl{4;Q!Y z40660&-FyHL<9vrWN8%Xmm@5o?0up_yfNas`H0`xBpIj>-%3b#Q}2=(^yht*ja`~+ z2@wfr^w}Wy7B8gfg_$-L$5nMO4OEWA%2$jsfHD(?3KkhE5n1MI4o124KI}I2F}Y`F zP?kU6ab9Rwfj+W*=RO_d+D`Q+FYd3-o}hGnUNCc10e@p>cRI&FrpMhoI3h5f+g$C5 zfFwv1D`)Q89YfjF`fpVqnZMQpstU53khKUlgJb=k9MXXdwFS-RkLtXJn9QHMf&op${n&;#VF)@y}v3V6okyyNb#Z>VRVj#^ZuK3ngeEsEjlvDu>jOOMH+>hb<>p=HXnoF_3|tWwE2{ESDB9 zPKT*067>=|$4wFBm_Py68*lC1kpvhe48;#BGS>h(UqF(`+-w*V^v`u8EnZOcGdQlY zL2SCdrb4B|jr+7Jv34ENV8KV=hMOvztu5sB@;%Ui&pCMQCh8PF)Eh1} zBSxj)y7G011c+;}ohe_x`a`BZATUy7M>gGHI0qLfB&3h%B~pD*8`V&5Z(8(Lohl@1 zy8(hDC!$idzj|bahEX0Mf}WKx%JbxD>g+p3SC8koynQi(H~B z(H1!KnMMu6zyJR6Xt^)N$5*Vqhr~iCfvhViF|?c~x}1A+OC@nA>Mm4%6#%0Sm9mv6 z>=HX4F$PfvcI(pfcwl3QeN3tKfCg+^un1ffBFWHJm^o0jnPv>qg5@bP0pUt z?*i7?89lDBurQEwT2}@#(L)bUajH$-nIOBa-kabB6qwL5B(0ox%?N^T;PhIb-{bM| z(Q-RKhM9V!`2v`vEv>P*3E@)F+jPGc!lA1w5shG3vtrC-1xBvpyQ>#2e6-wcj|u-9 zZ0q+e*bQlL_OgvH5BAEtYPY%qb$0#cO4-0YjiUB76$2wf;unNPFXcn!(F6ZG#2zUT zAKYiz!b?7_r7iXj`CLSvGNe8HeLC3WCLGLA@x`;gDm!@Ij;h5OaAjJ4uX~r(k-kwV z<&r894?47koC7u0aD3q5Qprp%_emJaqzY-t$wBAP-|y3%Abb%u*>1zPhGC!OWTWKm zwIO~8ZDyH!SZYiDi2e?A)M(AYv~^`1xhxab;K-4?D5rK3jFehh>qni>!-%0UN%0s% zL=P$$;fre$5|fA?(N7qRq^^SWtR6?GqnN3t&^+(uYn_B@E)8GEo4KW z?VUTn1u9t-_Cw}Dw?)Wnd!Z7y#Zrdv@#FUp6J~MJYXH}rNVPHelLw&rs`F6?2=HrY zS1C=Nm$-b@gHmB1iOe?|tc()Zoju)ZeX~F}W-zgS0}UnwH5uhdd~S0$GD!m+1OA0* zqR~p%7^wsyongU-{WbJt@FR;T+?cd{^TxMbkya}H+EIEMedj>Z%Ok#XRchtckA)#g zy8Mdpc0-qp_M$2zMXe(&cfnO_HTiCMrINupLJih~ptQu$r7)N3Wz5+)*kyVH<}h9A ze3_@zwyLEE8*QP)=KA>zrsye*&^W^7MuvtgmUowoCl0LsQjJ`_^IngZsYzj8c46bV zI^0y`E%PkE5A9r7#s=z>#xE~Ftx?Df62bVp>wdWeSw;7+OucLA73Q;tQ&flUzO`|C zzp0UIY)o2bWgKW}3Z=eZ$i>Ya$(!y$cbwFIY(%<+HeC2trLVt0)JVW}hX#Sf{GDzf z4d8wJi0)Pf6uXjX$x*sk=n{}ePQ9aG4yQ}o>nCQ>+=?R-;0FC1I@&R$ed5YaTLjxu zG^$FSo*;$rMv&`uPUK>O`(k6B>hh7*+3re@(oP!KEh;WVvY2$c$Iogzhh+9X6(8qu zT}M=^6#WLL)lfF8EAwV@FT)~|GH!ZF*BkWt$R(N%g(f)gtkJGSST4of~oyPTE=KlAgvaHriIggjQ1 zJLXsqF;dDt>&OAmC3-W{0wui|UZ>AJBP5dJA^-0|64PsuTs{?NF*`Gn?WrahxYJWJ zk?8~{y?@OSi08)KmBkA3D~y^$6>pxeKSLH6zm?PN7V%*Fx|As@m)aNq?Za(>rRH%x z^&goW9yPUt?(IB0?6#}yrfm`E-#|FEJdj>f#Gq!BFU&PLP;9E=yE@SVa!XK@T;gkw zYB<2I?V zckVROc?IhSaj^GSr+{%WB6#yDqdyXpSU0Rz8c4DIX+MYNU}#l@Wr-^n0z=G%VgiC@ zITFF1%)+Za8 zWNX>xX7u>S?jVz)>;O=Fbr;&1p{bVHR{=jmqBrB($Fi&1Lv-=u(}pG{J_!k=w)~#@ z^S1aF8=dcgY=U>RC;v<4*PDF9ce!h7>9PTlk!K>at@TV?_=y*-%qvun$%ajMcaw2I z84lv)#gUeevNU-e*22QEjt-99i8e-JF&s6Y+mujPEbom4X>h$xKZby2^_BgH-UPhf zAch6k*`{xI%2Px8{<;xna28E9;srwZ&XrzsUH{~ztW2UOGPw>FC7sN<+GGmfCr zMnxE@N;R~MI*5pXiu5MZgiwS~q(%o78z8+C6#?lbKnyJ^A|*hO01*O&9w0y<0YdtH z<9z3y^WC%l_nvdtx7NMiT9Y-5%a!Gi zIbO0vX=_U3@5xdZ5oIO{wIw7igw%*^N;dP~BZN=7oZrs5UmD2Fk{|PM! z96o(t+7DW%r~j!R{(4inY`y1zXHije)MoaB2M?}vTzPf%#hUpysNGl(3)Is5RSn;o zm0)xX2Ghk9`&X@u5@Ovt5{pgyr6Ccyo@Uv%tpfq=;N88kxd9H0hYYOKOYamY`W!ar zYR_V`t~&jcHYQl=`M2iQ+%jORx@r)+^O1bWQ!1B7(1~h#p>NE}tjnFS_s`6<76#Cq7pT;Oze-)1xfuVubMsly{ox~+zdGIi zG$}Ll&zo0&vMPJyU($&r{|G8kLuuon`S{1-&%6H>(XBCNy}o+*xeWghuzdaLVu1uQ zEL>{(lT8aY`0}EB#_i@R_b0!MHAXuyBF#TDXx3nOHyBKvg}rm^ zfTZRmFyjNM{jc2tYNk7X|6eac5UYraG$LAT=cA~HfP(}EfwAV06gLG6Ldk`ttO!V+ z4Vdzl3C0OW6^-j@J@+}2=pWJyZN&d_@-nDZjucmA zrGX?fS;0bPxZJi6*!oz3TT-drcYUm@E{=wUJuKf>11xFj%A4(jpHk&3;}?MIPXzQ8 z;;M&f!x8+4ASqbie48`~ufzfLX4iV_Bvj4zPZ_udaD80PFwd)vuNaqb5gq~!{^Sq8 zxVV4;=eH*`8L&Is#^uo-{nRV`p?UFh!vP z8P@*embHN9L#=-1J4r2HcKs~ZO zt+s(t7TC|sEBhrnB>GnF@N4hAf9b2{xQ#A3{rQ1n{4e2moWu(5M#e1Fq$?Up!}XNE zF{6&_AnnSoyWQRpPt^dEgt8t!lVEI&XaH~4#*qR}Ksd05_1f3FZf(fk9{8%o*?rsr z*rVTtEndd^k87eyo|KR6&w$k`b=*M**6<-lxmZ?a%8D#iwLARk@4xoF$1IO7xZ4Ql zgly})^>;~B>eyeBTD*(&2$?aPD`c|xg#V(7@Ly356w3dDa?o+-Z{?u4>4}zJtEsq~ zyDvBEHJi3XXp#VotK9MFy$uc8Kz|YBeR}Zy^mMASZC$3jmHK90p4}qVR0htFs!s&2 zQq%kQl?6i-4dZOcH=a-Usex(#%%ew-AdMe3qURx3?miZ?1hh^Yhk5IG7d{bmp#0D| z)ds2%z8cr#y<9(hFlYj0)T~cQbGg34>1M)P5B}Hbk(`Tj!T`GJKU^3P;${DpssjF| zFa`WuzYtz4^;-n^KQI0NAQAk>E?`1^!P$S0aAYIbay)wN(c->J(0I!?LD+cfvV@M? z*bDksi8H*OFW-1z@XS>H{($bc8t@@E3!joP8bduc?BIjD;@+z9gZG_2&XCU-C81AW_EPk^AwJMn<=y zmXJHmAE3sIWw7jrC`#uAx|WQ|4c67;$IEVdqh;NAAMICaQ9(msX2tmB;soj20wV|D zE5U>_+^ ze$@B4XmLx%O2S`IFkdDN%dhhrO0F^%rIZUGVDNnB(?UaF>bzDK0L(V&s`f8b`&j$H zOkUUf9-{My|Np8f{FHUI%~h8TA~kaI=*h`|55F?^iGeRcGItZUum__0^mVkK}I=jy`K&+XhTa{HIyK49=6;`BX!5*L32jW zKNz8UK=LP$!h?|kM7dP!a>s{drWZaxmw5<=Qzbpyr{>afi`8w#)%0qxCWCfLz-}=R zu{GOu@O)KV%~~;Lq?G{xx-8(_2E%6e zbIR=N6^&MwCla1%tc+pZ0gJQ$=t6}Rz9Z}iV0bRr*w`?X6?Lnq4&qvWdk25i6YS3k)V#^3KGHu8g{Z?&0W;-@Yl%kFUJF(Iuy7 zVm7e22<9SPiPX`%s*wEpuYtnL15?k2Z&Y4?pux=kneDE)xBJ%{rRC@!LDRdGBgNyDKJ(4{W*4YD`{iAiX zPT(?J)Onu+f)}hobkFy@=|hi`Gy`E>VFwk~CqG;;YXTH|^(a0u02m_P540$|H_ErnJt(3cYVYpfb&9`f)qCLZz_dSh|JFt z62{ma6QCQERoTS9mq%D+4HVXOgFb!r$#4;n4FU@Qy!o|qA_me|4?8F>Q@Pm;$|Jz= zlnfwJ*yF*7?}u*jOE-SE(IyzGIlk)zJixogcOve3`7}-@2E*JE;qDdwO^ZEuSF&XSIF-?7GcP~R~*X=}=ms?A3m85=Vg zTvi=ikgUC;M{j#B8=m>$%qdq_olO2rV(`LXR*{Os8K6~zVG2G&7|{Q$I;lW-EC7>! z78rP?;n_Eksvs|48xb!HY*=6Vc&6g2!}&Xbg*dh{LABT%*>@)ws`EEs0MX$(`knme z3t8QB3%YARU0_>JP2V>MNxm~s1K2iAKxZDlBM*y zmC)2b3btno8jc7}eO-i@mw^SKC%yj9aouTJziAoH)-(7r5Ow^i90 z4UK{}2|rMAR9z$hoxy=O-l9xgrT@#9sqUdN&2krH7dhHAZ`3?W!}S+RpJ2=6^S6?J z+eqfh%<6dL291)nxCAsHL?vjxr8r}9*}MphrPK5qc?uj~zx;Ig?a)Qwd|X<#11VF! zEAl@}7^suKz8@ameUCCCw*Z>3|93SEPa~&nP@r~qi~hbNEXz~J2so~{D;*zt(Iyr= zzaZA;a5qY?%Al?^{3f)!v-&X>7l9$L_+tFhl|20>UHeIX?hP%NIR_&o`IMC&YPk z!K(_p8T^x?^GWBg)ctbepxe{062=t+AKIhU_O1tJHlDh4DW;&r;cMSh^Str1)nwVW z(H&!ndHdhFvmrAb(HBxaSC*5ilZ;HGOB`S6%NRuTSD%XpJ0BHqS#m?2Q|ywty`rNT z8nWwUOiRQ_I@pT;t}8T%{kyI}?~v6w0}Q3l)JAXJ@-5%YvP(--vk^Ub(9PHP$7`>m zmUPyDLAGsU#uN;5;;iZ4xDAIkuPz@0a5q#KL zgwJjZLY@TDk*7WF@}RwaG<;#}A>sLp=&I#$bZ^ z^b^maaZZCD8JvU{7@j4@;cr%so>m{ohrSV(XxRUo5<-TEe(LUi+Q!+s$?eOX{kne8 z@rNI77Lc=*Ii_${_aRYPz5C>+9*|NbXmAW#v!9Jw(u~1H6Vk$#`}2WGcM`Fxe_)B| zMyYhV0e|~f?1eOC4v#mgwfs!Hw~h;hkj}WiXmx6V8)r-8MwNAZFDdK}MDBYq;b1=% zTXrew_$<2i;~y?A8WIo6DSn$&2z-kh08;1kj4-7YEDg52RGLNn?(4{*R~CqXe1ph~ zKw4UNYW*wUscCX{6r}r=L6fj;s0gU0dg(@7{r>yiJ_)yL zP$*peq2Rx%(kiC^z{-Vx7dNI6%j03G5_3H5$;hO_Cz>@PPY)QK(Js9i@U@!xbk`x% zPZRN4q4Cm(s&ARppuZkEsa^ex(d#qU|NL{8(Hm6`AM|onRffGbr}HbRQhiC`p7Wd@ zo3os${NllY{@+Z|cB;akxw*M;Hf|zIn?Y5i5G#!-jGEOBaIbJ%!e z2+BE8#;(dZ@wtqFE?%GMXl^*uvoY#}%MI%r*|$P^7dWHNqE-=N(yU^xlQPe^seAS1 zF2g5342>3<=Vh-_Lvenwv>usAS`IM%=}HDPU$eFgpOY)8S;?sTdJEcYmJhnhO~{-% z9*}rA>6vQN>+bMLiMeQxw%4s{c>4B1i`h9F=icI(4zICod})i_ zo_j91@(~oAze{4iKUS<~sVvNPGW-w~f4~g6Q|zt&FvhZ2k(%pQ!w81nwli%lV+f3XVty0^095UT+h}ot?XM1(X-94{LjjmIBEpT$CrEy8I0Q7&fhg2>GseFh~C36PmZeKrMZ1A`5s%!~TUTMtBrhlkI* zn=idNSKqM9o7CVZx;(D8xio}3Y2%o6a6V6_@m@(4{8<@Gi#Vu_p2RHGnxcZ5(n{-8 zFtf?0R8)GS5q!6ayEF0NxwbDOu7X86ln$Axvm_Lmc-U=i0ZUBDV_o04W)uJguDcs{O~Gp3*EVEGz*GekdutSbu%ia>TQ&g5F<{ zIM4r+(Q?`y>N-zm*r=S}F-hE*O|h6Ca&2QQRZn4-8u?bE z!%G7yPI@6d_axaA)ZT;Y5zAkXUT6kjHh6LD6yhCwG&Lim_{|%+04&2_dwe_YS{S@V z@7A9QhN}-YAU6fRbY6sy$w1J0d&-Rmw^pp#ulSj3tWR=X(<%?#O7s0dd!aZ*aFLr1PmknoK-^0+2Gs$l2JChx3H?4tuE#>v0{dA z5AQ{f1*K7XvowlFBYb6}PAfX;hLm$Ldb5QYL04(KvRuX&V?j?6FQF@xmvGWd!SdxbJbP>>!>q4gPd>tU zaI?OGle}nD`^`;hat9R}dakEDXDX$bxWL!HCxp&f>PBT7|-uZT*UvI_v2wqd)eDXx#>$ z7~MXv9kUP%n*$4mvU+*}`Z`)U<+ZRr-AT4)sgA%XCS{g^SD1f)L9}bwVXNn9FnBc7BoU&}~l@1%X3Qs(l;iw+D+z3}~ z+^Frz(oir}#r((jOK8?u7=>P=-9z$YF`6xaEC4?DWWgVxjXE-@^Rt?@{j zzTo4FsO>Lti`DjVgH$s}f@t;o&fD^Q| z`Gez&Hqpft112@kRJBRp!EZ#vvgk@z^;8@DPjYL0V@!w9?#o?oLe;iykv!uggpK2Yax_48xV!@+Rv(L1rvk8URFGq^97 zTjA|TRpGJSXmYd;7~_Uh$0=(dWklZNy%q~I`Uc3@>KxccW{oghrj=xYC}v)tbcdIq zXQ+gRWr&tlWP{Qf4d3lG{p|&}G-{n$=ILXy2z6a)UGC{6|FL4^d}mCD`*8Wli2F=D zW8NXas-a@EHTtNIf9?g2RBo)Op1y=rkV!-^EomyCImyfAaI(XmiMscc!_b&0nW)(s z$7ojJ&}eJ6<|z`b85X)wZ)UE~-&Q=qn9t^X7r3ecDlZI*^H@#ItSvnVEzE1SAknZ? z9}Nn8)6^gW%Sal=OE+vO)qLOAKW93u?E~ARHt+~*eycW_QU!{7bflWtqcGH$N0Rd? zUkVt5D7;78X2gwr)bx)^v-jg+r|KM7hd zIbCrRpf~uUk;MEGtg_b|tEW^})nFg`wbEunlGXNkU&kgjqcHug?XO`2vt5gIeWPhj zB}0P^GopHLya`1tTr{&-aBqj5|A+@_PW;d_Q7|i685yOnE2h73r!_}g#h@_+w@Gx& z1N#`}n}ZzHZ%ZHrAYI$Yoe)YM5~qfFN00Y38?CCn%s;!mH5NqmgG{AbqHJeA+hL6p zuOQFNkVO~L9fO{Xg^*M*f$!hvhODyeFyogYyxEje<%^CZWF2y8t%f5&4U9Nb)$aJ6 zd*(0_&Yf(7h&N2bNRQFFMU!OES&foF-L0FcRXo{@C?yeWU8bOew6%j5V zGLDChpF~7Ycj>PWS_1XRq&R^(YY{e)l!hhSPR3p~Q>q_dlG2X>f z3nOQxk?L{Tu=1pwfMw)|u!*#NY8W{uy|BKDodKoIG_L;EwhKXc&PIjh5@mqU5_2uHcJ{%E)H+^2KZExE}NpbLAbemDDR|fG&eBao1m*8i}3Yu0l z>z+jMY(0VW>v*2vYxPtBmn5lh^;MfmeC@ovhQ>Uv(ff2XhU-fHV2AR{c-^#16!O-CatO{$0w8*vf*aPQl2;Vh8kE>=luW@`^M~e1g?>)@c@B&j> z;Z@6M=0sW(Nwue}swMqGBG*rbjYIlu4!o0hLO@mHe5-9mN2*OOU%otSN=H9*vh;FQ z5D^&)arEak^RDo?MP0)fW@g4ixX61!DysqtW>E1~=DM%3xcce0N7S2^tD|?5qnQ>H zkMI8|JWD108&6q48NQDW$mYYUXaMGTx}%Uk-Q_Q;F+BM+XqEoO$Gs$sH}I4nvLycN-6OQ`ze#2Gnc* z`4QG?lQ(9*k*d+;8>(#^&@!fe^N(!h2HT2Cq-J=Kv#go5|O4dnJj>li_1b@4C{@YbWUj6~V8hHKw;-0AR&mZOfe*3$B@%9b$f~d$E zcE-i6X#OwQ1TId%Zm_0gq^7#h9Xd)GEU?A};gs3?nBZcQh?IMx_w1WC9x*M4-=5pj z3$M`hbqsh#vEYPyI!A2B=7x7wZ(yt8;!Za%?GX`Ka|0j6XN8Bj(kIj5`=YUMQyq4Z z{^c>A{+S`@sS79qeE06fck55>7IjQ*@?Fq%&W)SCNIf;gu@lA#R{+xcaoIpbBPCobaH;O@ zZgr3DRQu@93SbMCRbu3$MX5RQ+O#agxXs>4JsLPmhyCqWs#co32|-Q*{zwEzI;dw| z!F}vqAT~m_mCvSLK^nGn*BES#=;)9ms8tggNSuUAR8oCoFbd80I3uxW621!T7XjPM7yF-yEL?k)>7%Q2mg((2H=e~5v-~tu$ zQ_aw0igD6`?#@TqXdfhFDo%F39FFg`ZfU@G73Zh_eBxpc8tQ`JZANiUGl@1X(e?cl z-f9!AmMRlD4}NvIzBX)Yxmh##cHj26-H3m&Q|-8U)9h2Fs_su}t+tb3CxqCf;U~NV z6G!ecdaZm2XmYp$EMzgAl8=bF&pdMa_ElkWWLa$PGzno&AP_PU+f#B~Ujt`?Mh@Ay zCq{4ehU%>(Lmfjx9zU zWS#3A=;WurvDP-?Q56jyA9^IF$r&<}nlgZ~?AVWB^bS^V$dHA|_wUag+4`IVq4a0~ z_JC9z{!AP^ve41!M1A)543iz4y)5j|~}7_C!)T2KLefD(EvG_o-iG@>+zoW#|6r<_QHG;}{}Ktyf3 zMld0o@kh10pL9s4T#P?D_p(hC{}?N1u?M}Bd~N4Y6h6Dxr_7VLN-Z){S*noSv%d$* zX9cFYkZE;r!J!xsY(IIs|GRy-)pN7Wi{`!}v;3(u1gSI$Zh zQC5&TW3GP+74z$#cD^fFxo167bSa>*AZpM(ODd|6{u$ zBD{2$|0g|-vGNx!)uF->PzL}U`% z{^`j<_!djTy(Oe+F7M}|wrV<^-n=$#3Yo5MOMavN);^#`=2XShuEoxz6W3~P?i z9L`v-A^8i_$z%XhwR;{jCvXJ3eoh}*Eij0of(DUXr`tq93JJ1$-`e%hS=>$HkziZ} ztIZ?B8WYwMu{lryBPxQ(y^MN(7vWyXYn$5_J#XU@sUoJ&y)?}34Jefg7_IYO<;@rX z;8CJK?46e|!nwDTkthc3ISSQ9RI)b_3l>Z{X=^7fj?~>d&e5CoB-duYXln>Iu?RlG>{SmE=Y;Y6AOYW5LJkl)lgmC^%9V-zYqzW*e3*y$1fb&9H z^ejnRn_gdMGy#!9>k-_94w5sQghq#`^>!i8R|4WT=u494O;DOxj@cZt3199iuH8&G zP-?5u4Owyr*Xl#5?eEHPiNW-Hg)dhjdeti&JjVUUlW$ycU4h$@xr=IulAwv%t`zt% zhC&fSUqvN!Stv3bTt4dz{9^JO?-cocD{YR_y1|#)b|0X3Em)LFkwbC$n82Gu*MdRt z=zi}IfHRC-cAhZ^XkFP_ZX!CDxL{+FZ|tQczwy8U(roY}bZemh6=b`=4M5lrBQPuv zB|N7Z`8*BRj}OM~67DUxG7U$#4W61_hIhX_kZs; zF-u1qJGY_bknMwzrI%Wa(V3>=@^ZPkIe2nvu`yG1q>?Dky1Qh=BE4Ht_e#np;xYjX z?HseRS&rJW*UGm62@MKwpoYh8-vSKX%MF9s7a+0GfK1I=mhNX_SNfXN!H}ukyWGH$ zTc}=o6Qd7*BGE7%oGl(qr_kLTY~Es1O_Bjr6{Zed&P^-XO#xUf1(`74G%9tlBt^&_NcvTu>oc6G3wA-n z%pr_&?#i5vB0kH>I-MgEby|=1&aF?68pfK&slf+M6AtU|h?(r*6n{CK(A2wRUuUxM8rg@LU#ZXkzqp1C!r^8u(FZ{xt)So6qsj zZZ($9!(y4vbDN;9tJjL?oROaskRL0yoYyYyP(B*A!Ilh|4^YD<8}5-#ZH<%41s~>j zKsb0;AO#dZ+i`}d{)-Z5C!C&^MFC7a2F>yLDUtr4IcuTDMx8+1gKHa#!^WaL=AsWgtFX= zdMtlv1$Pj_pS47R4Fvx}!<#-6R|#53GM>)~Xf4@#4si04kjBIE0h6!-zf*tHr!q;F zd-@ku6Tolh+o8O?aDI^<&-@yC_bMPA{mj08JJ<$H7sqO5qG%Am(YpPSGx6m$5$%ub zFluBW@uoPHGtH^xd7BZzE|WZY^W033Tc%mr_+j6}Cn5zrO}|=OaQ+#Pw_F2S(}dDN!rA5i z4TCop{OycL0*bhmW$1R1Egj;%H5QF_ygLFEsVpxEuH(KEQ`i8IKpX=D+anMXx$w}{ zR^D)(H$mPch*5!_=kJm2KDI|TQ^VZgr0nyfX>hzCx*LaMZ0XTv-?}B@A5p82IMv4A z9Q|k2GSjixKZ!cBpDHmW3 z^twJXc+b`3&3izeHQ;_MK$Q##pQO8dU(jt*fM>iQ#$m za9?aeiX63ycmnhm$Jg^X#l!~E8;ZEY>^x}?WhN2Y_f)CU7E)U7KwLV(^nd65M+B|O zLR5G1o?KUiLBuRIptUQ0=WZb~5)zVxx7XV0eCmUB%Ny+Lsnnse3^-o5jLyvQZ4R6W z5Bt+uR$JMivC1Kw+u0gtWiGf4p3RoQ+T?T220@wFuyUT$-x|#sECVCc{OoP0Z84E6 zRuFycj4t3ynBz$FM7TnQeSLQ{&>z54PnqD*GTz*}BoLmSi(dI%OVYYGCT2#Js>+q~ zC1!KUd3G#8B`Dro-xTtX^FXF_0}GEv(}8wMNw&79Sya5jd*AjZjFDJxV8J>);+ zv$z~N`2ng=+|+qPJGRG*TG4Ph8N|xb@Y(ea#^;;>tDJNI-k)7eJd(0c6{8&MzkoE7 za0?qVRAE;(f6Z+!zIxCp# zl~%ACvpm6BwJGzTIEl9S-NzSNDDrswG8HdRh*?HQ{qL?Gi5f z7KZFQV1-TP10vkfSz23}Id+W^5g^Rx%yoG^-DEJ4PaP;R`}UuqY_6cm^N9#H9PH$- zZnj_L$qd`$dp0N3gbL7R#71Z8DNFUqc?URe$i{QDZkI)1p59X|=#s$jL+XbIvB{dh zMRPVv)UU612*cLgzM(H}7b#DQ^Ubkj8LJWgXAlwp0-Z>D#f zC@wL!R+K(|2JnBbQF700!nvLF99r>DYW0KHM*`6XL0k%wA}iQFEoA-m03ibUJHLC+ zQ7f+m{Q=O`jk>HU!3UuK)_!EZ+7wdsYl!~lS0sxsu4(f}v^O@($LnEBI=5dGl9V%q zKOm6l^E_x*a#$g04C=5&!}u%H{Al{h*y-ta%Vg>rYXS|Xg_$JpJt#l8&617TzLp-) zoImp?=;)aQRX7|u$w zVSq<|M2C;6a|#{Vl@ASzXb12?z%cBwbQ`X6fdZ|!MERa^Gt=4muJ>(WUfz9D&(9`A zZtB)EE$0P|K8K#lhNV&yMezh@AsUb3Ujz5fRP{^kXOU|1UWKB%I?Y7r#vh=^`HgTO zA`|GJ4qD7VlyK?!TH~ex8Y5`>J6@X=FlG`_SE$x$?RMACc(_(B5{fA+KcAp)J^mT9 zP^(lLUJx@pT~;;WdY@ud4%GpmRR1O2mSUb)`n`pNZ)><` zZ+;#~@k;hD%sU}gJDkHeha6)zwJ_7u`;^*VV>Um95n9WFRyVv4S>DXi^0Rl7-9ruu z+xqHJTz7k-`7){b!_0%d2ZL63Nz6VqRW&CZUCoel*jmo&)gIS$iQcrzkC@NO4etvt zvAmw_O!C(wGq7Br>uK5E6=bfwjY}Xa3hG773+wAek0)VUxIu>O1*BbMuU74rJ!}pL zK~6UjMNtmd5X!CF)4)Jrfy@W^+dmyf($=HZxy9qPs@ffto&8X;C(~_@3)r(MyBx2L zH-{`@VLh2=0L^K>m8I}|4h)>ui-6x0$|TD*%+?YAoC?(XXGxDVT5PLqSxKd%EzgG3 z*ci^37oy!`C`BPQ8^tJu;LdpI=NSvQ6d%9%h~cimtdvq|H8nMSZjVWx^0uE#+oJ=h zi*Z9j?c6JF1?@6P!hKUX$Kyf!kKw~NhDs~}(^FUolD#glBEWbQJ)O;<72Vs1BUe&@~D7fj1_L(RYx`{be=@`pp620bh=1IK~+DO7t?8 zp~kYM6YRK19ludc$&H14OAFnaZirS(T17l&>NbzPDbD6vw&o?%AzC!420~~{kf1Gb zcFI_$B#M+Jr+|#GzieuXqD@44tc$DA#~5nvYX(fYl5OLz9y^ryU3|pmQlV??Zpd3E zef8lXiBp# z)i<1CJTXabmpC1yY%=j*kh`6MSOLT+pcr&5qlnJo0$vh^d4G?@;eIXW;4hAWT}Hx( znQkA{1z>{b{SaGRx(Xa&d+~A8()sTq9fl?sbdo5Hcp}5*8b@0X$?X#5Qxth8XnODTr5e))LJun zVoNE0=uvgA+)$r1zH0gZSXdE#xezGX90N@fvYQSyeuOc2+wc)ckb6D)a)+Tya*0N3 zX^`*e;7B+t3vcPwos0>j#a&N1!QSefGG^kU#q?j~g^dNa?)vm2;L>Z533wsnIG66A zYNF0Z;nlYY>sB$72-c8|)y0e!0l%|+I3^7QjPiqbs}o*!&@*prH1Y`|02V=8#qI%g8GbQc^bxB zdh%d!NeEje;&xg?VY(lYu6u;a{2a@4A=*;-oO19Cw2c=vuQnP&OH zj!|w$Yz(0)55EfpAg1NL$Dfy}!)8EbLMx z_rz7|{NoGk*|B}9-9iC$vypiT@Je(%K%$*Vva?(`Ubxu@3TJeM`6hwcZzweBfN-Ag z?BHjIDKbiq+E~X14MQlN0EcyddV-`hN(OYNWjNW7OaMd5a`lQfhH8Q68!1LMyuT;Z zKnIv;9uOx8!Y=|?`kp){_e|J$sA)xO*>Hv8qpxEBNx246bYp8nv~6UC7X6c@h1ZbP zXz}{3__F3K=NBstLyv{TwHq4FW8suZdO} zg#W*j_Ol!JiwJttog)^N4e&Rxaz_k2eV2fprO-2ilNVMBCVz#Et=nOonu2Zph6XDf zvW3*o2V+^Bw2s)7>u1t7W-Klix9P)%69AZ(8lh$OWNYbt1O8FeitYw0653+sb3FVu zG8W$N8b^6;s%nzBYM{=I*P$=(yAVWupCi64HPexZk4@B1FH^(T*^_KiF+%fg+~TW#&F!1!pK(sgJ0Zh` zCeQrr83dc*QacvprxCR+X{GIYdn9OG6GVCajm{Io-9@#osQvVd>FfiyguZYI=iGtD zLOXc87BFFDMzQ8HM#5+<4DP-Q^eJQ6qBb9C0CHROp|cN_35`~Bznq1ud;_gEIgM;w zl_KAOF@uF-ckhrEfj;|}f;%iau}#!KZoDzHw;&OkFEl^7nC0hM+1Q4lBQz(%XCM}HdUf`nWf@ox6@*x5T*^CPDomXiyNBWNg__-Ee> z^rFu;xL_S4Scf3%b%a{tYSWP7ONZbuMsQAVtT1bydu^%))CU3qGouR)960|lWY}4W z=tzdfOR8nJFvkjl+@3x(KmbSqp9vw(7u}By+6u>7fPox9hF%>iIzue6R8Wu#^EEtT zpxcobeBEDC^R$gqjGd540I&}ugmS{C>M>b?mM^gln5CPl_L%|Mo?cdIjw&)keO{8L zcT?N0hb287DCQ}a%_hbM;8oBQ=?BdrTFTKbK65YcL$7JA2rwrfMv6={rk%{D1d4or@*t*&{G`d7A%h*yv1GWo> zSV-NA&P9Sj~&E>;nUVdG$d=KlF{t0uG#YiU}h$hGc8`Wh0{LCXK zn6q2X#2+)$Hx|^9mqzi&_6|d6xhTYN>+tYJN&gob77$3-1l(diwHNTx+NStk?Gj($ z>UFJbp zXjA>Q{x+8XXx+xbunN%y9&#C>86DyJje;B<94atQG#@t-FQHR7#Oox8v;lu}9U8}f zZLniotznF=_Ig~(QIB3TPtP7s2;n9>h}G5_i}EBb=@sw? zDyd{>Knu@&_gFvnGeh;=_Vg8&=VetckA=OC=L;A@Dwdu(Lmxm{*q8_M0ydYyc~(cx zOUuZQEE4{b7;4Cx@2&Uoe5ehvca+Tjj z-LHXw*7JoA{#=|)dZcoAXTNoa*& zB9g{yULPhwTFGCqcPuCtX+OTl-&#wu5FdYNFG-(%cB;Zb2lQ80ZB*i(2fhO#@Sdg7 z60dO5NONl!#DL{3z&aQW#H)+oKxKS7A;z1{u-VCWLGC^v$v@x1#=;)XWmwRnxB7sk zLH;F2hgZBw1{yJn*Fd^qSG-Pif2#C{O6K&BA|l*mVWtGMf0AqKZ$e9_HZYX%_V1_z z1_baD#0uRd!4iB6fYn)cA2A4qzwb5>R7vYKxc>CRz2AP9yFPmCkJnO{ z17WKV3~%q)b9>H9zIAeXmx#y@d%xkKpMDYADn)*i`x^#b`rG&T;%{(t?EW`5 + +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 45/83] 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 46/83] 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 47/83] 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 48/83] 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 49/83] 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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

    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 50/83] 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 51/83] 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 52/83] 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 53/83] 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 54/83] 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 55/83] 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 56/83] 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 5b5baca40d873f7ec282742a31379583bd7f0c8f Mon Sep 17 00:00:00 2001 From: Plumf Date: Mon, 6 Apr 2020 19:39:40 +0200 Subject: [PATCH 57/83] 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 5c48290eaea2e39f841f7f92013daf80d2b6a727 Mon Sep 17 00:00:00 2001 From: Yunobot Date: Tue, 7 Apr 2020 17:06:27 +0000 Subject: [PATCH 58/83] [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 59/83] 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 60/83] 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 61/83] 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 62/83] 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 63/83] 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 64/83] 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 : -

    "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 65/83] 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 66/83] 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 67/83] =?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 68/83] 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 69/83] 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 70/83] 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 71/83] 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 72/83] [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 73/83] [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 74/83] 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 75/83] 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 76/83] 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 77/83] 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 78/83] =?UTF-8?q?Correction=20(mise=20=C3=A0=20jour)=20d'u?= =?UTF-8?q?n=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 79/83] 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 80/83] 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 81/83] 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 f6ec82c9f93433cba56536be2097b4ca18fc94e3 Mon Sep 17 00:00:00 2001 From: Vincent Rubiolo Date: Tue, 14 Apr 2020 23:06:47 +0200 Subject: [PATCH 82/83] 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 83/83] 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) !