@@ -152,32 +152,3 @@
-
-
diff --git a/install_iso.md b/install_iso.md
index a947f1af..871abf04 100644
--- a/install_iso.md
+++ b/install_iso.md
@@ -32,6 +32,3 @@ To connect directly to your computer or with [SSH](/ssh) (only on local network:
* User: **root**
* Password: **yunohost**
----
-
-***Need help during one of these steps? [Get support!](/support)***
diff --git a/install_iso_fr.md b/install_iso_fr.md
index a493fd00..699f9e7a 100644
--- a/install_iso_fr.md
+++ b/install_iso_fr.md
@@ -31,5 +31,7 @@ Pour se connecter directement sur l’ordinateur (uniquement en local) :
* Utilisateur : **root**
* Mot de passe : **yunohost**
----
-***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).***
+
+## Cas spécifiques / avancés
+
+Si l'ordinateur n'a pas de carte graphique mais a un port série : il faut modifier l'ISO pour démarrer avec la console série. Une solution est d'utiliser [un script qui modifie les options de démarrage](https://github.com/luffah/debian-mkserialiso).
diff --git a/install_manually.md b/install_manually.md
index 5b5e9a1a..05b69af4 100644
--- a/install_manually.md
+++ b/install_manually.md
@@ -8,7 +8,8 @@ Once you have access to your server, either directly or by SSH, you can install
1. Install git
```bash
-sudo apt-get install git dialog
+sudo apt-get update
+sudo apt-get install ca-certificates dialog git
```
2. Clone the Yunohost install script repository
@@ -16,7 +17,7 @@ sudo apt-get install git dialog
git clone https://github.com/YunoHost/install_script /tmp/install_script
```
-3. The root user must have a password set, if it isn't the case, set it (whithout the install script failed):
+3. The root user must have a password set, if it isn't the case, set it (otherwise, the install script fails):
```bash
sudo passwd root
```
diff --git a/install_on_arm_board.md b/install_on_arm_board.md
index 8b56085a..fb07dcd1 100644
--- a/install_on_arm_board.md
+++ b/install_on_arm_board.md
@@ -36,6 +36,3 @@
#### Build image
* [Create an ARM board image](/build_arm_image_en)
----
-
-***Need help during one of these steps? [Get support!](/support)***
diff --git a/install_on_arm_board_fr.md b/install_on_arm_board_fr.md
index 0c8cc277..ef8fa0eb 100644
--- a/install_on_arm_board_fr.md
+++ b/install_on_arm_board_fr.md
@@ -33,6 +33,3 @@
#### Créer une image
* [Créer une image pour la carte ARM](build_arm_image_en)
----
-
-***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).***
diff --git a/install_on_debian.md b/install_on_debian.md
index 599f8671..28c19344 100644
--- a/install_on_debian.md
+++ b/install_on_debian.md
@@ -22,6 +22,3 @@ An ARM box, a VPS, a dedicated server, a standard x86 computer, an old Macintosh
2. Post-install
----
-
-***Need help during one of these steps? [Get support!](/support)***
diff --git a/install_on_debian_fr.md b/install_on_debian_fr.md
index dbd61065..408a2da6 100644
--- a/install_on_debian_fr.md
+++ b/install_on_debian_fr.md
@@ -22,7 +22,3 @@ Sur une plateforme ARM, un VPS, un serveur dédié, un ordinateur x86 standard,
2. Post-installation
----
-
-***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).***
-
diff --git a/install_on_raspberry.md b/install_on_raspberry.md
index be96c1f8..7e1879c9 100644
--- a/install_on_raspberry.md
+++ b/install_on_raspberry.md
@@ -56,6 +56,3 @@ sudo passwd root
4. Then follow the
generic manual install procedure.
----
-
-***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***
diff --git a/install_on_raspberry_fr.md b/install_on_raspberry_fr.md
index 5d453af4..172538c6 100644
--- a/install_on_raspberry_fr.md
+++ b/install_on_raspberry_fr.md
@@ -56,6 +56,3 @@ sudo passwd root
4. Poursuivez avec la
procédure d'installation manuelle générique.
----
-
-***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [outils de support](/support_fr).***
diff --git a/install_on_virtualbox.md b/install_on_virtualbox.md
index 23467526..4ff5905f 100644
--- a/install_on_virtualbox.md
+++ b/install_on_virtualbox.md
@@ -73,6 +73,3 @@ After the reboot, you will see this screen:
* You can get more information on the post-installation here: **[yunohost.org/postinstall](/postinstall)**
----
-
-***Need help during one of these steps? [Get support!](/support)***
diff --git a/install_on_virtualbox_fr.md b/install_on_virtualbox_fr.md
index 80732f28..5e047899 100644
--- a/install_on_virtualbox_fr.md
+++ b/install_on_virtualbox_fr.md
@@ -72,6 +72,3 @@ Après le redémarrage, vous devriez voir cet écran :
* Vous pouvez obtenir plus d’information sur la post-installation ici : **[yunohost.org/postinstall_fr](/postinstall_fr)**
* Le mode de passe root est "yunohost"
----
-
-***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).***
diff --git a/install_on_vps.md b/install_on_vps.md
index d16c436e..07a9b1d9 100644
--- a/install_on_vps.md
+++ b/install_on_vps.md
@@ -18,6 +18,3 @@
2. Post-install
----
-
-***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***
diff --git a/install_on_vps_fr.md b/install_on_vps_fr.md
index 1bc25775..c830e6bd 100644
--- a/install_on_vps_fr.md
+++ b/install_on_vps_fr.md
@@ -18,7 +18,3 @@
2. Post-installation
----
-
-
-***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).***
diff --git a/isp.md b/isp.md
index 02d84f78..0e0d1a34 100644
--- a/isp.md
+++ b/isp.md
@@ -20,4 +20,9 @@ A list of French and Belgian ISPs is available on the [french page](/isp_fr).
| --- | --- | --- | --- | --- | --- | --- |
| Global Village Telecom | Multiple | Yes | No. Only for Fix IP| No | No | Yes, extra charge. |
+### Ireland
+| Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP |
+| --- | --- | --- | --- | --- | --- | --- |
+| Whizzy Internet | Multiple | Yes | Yes| Yes | Yes | Yes |
+
If you want to add international ISPs information, please do consider [modifying this page](/write_documentation).
diff --git a/isp_box_config.md b/isp_box_config.md
index abad4e44..508f79d6 100644
--- a/isp_box_config.md
+++ b/isp_box_config.md
@@ -1,35 +1,46 @@
-# Configuration box/router
+# Configure port-forwarding
-
Check ports are open
+If you are self-hosting at home and without a VPN, you need to forward ports on your home router ("Internet box"). If you want a short explanation on what is and why you need port forwarding, have a look in [this page](port_forwarding).
-#### Access to box/routeur administration
-In the URL bar of your web browser put:
-```bash
-192.168.0.1 or 192.168.1.1
-```
-Then you will need to authentificate.
+### 0. Diagnose ports opened
-#### Opening ports
-Opening following ports are necessary to make works differents services.
+After configuring port forwarding, you should be able to validate with this small tool that your ports are correctly forwarded :
+
+
Check which ports are forwarded
+
+### 1. Access your box/router administration interface
+
+Your box/router admin interface is usually reachable via http://192.168.0.1 or http://192.168.1.1. Then, you will probably need to authenticate yourself with your internet server provider's credentials.
+
+### 2. Find the local IP of your server
+
+Identify what is the local IP of your server, either :
+- from your box/router interface, which might list devices connected
+- from the YunoHost webadmin, in 'State of the server', 'Network'
+- from the command line in your server, by running `ip a | grep "scope global" | awk '{print $2}'`
+
+A local IP address typically looks like `192.168.xx.yy`, or `10.0.xx.yy`.
+
+### 3. Forwarding ports
+
+In your router admin interface, look for something like 'router configuration' or 'port forwarding'. The naming differs among the various kinds of boxes.
+
+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.
-**TCP:**
* Web: 80
(HTTP), 443
(HTTPS)
* [SSH](/ssh_en): 22
* [XMPP](/XMPP_en): 5222
(clients), 5269
(servers)
* [Email](/email_en): 25, 465
(SMTP), 587
(SMTP with SSL), 993
(IMAP)
-* [DNS](/dns_en): 53
-##### UPnP
-UPnP permit automatically forward ports.
+
+ 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.
+
-In some case, after changing your box configuration (ex: add IPv6, or unlock SMTP…) and a reboot. It happens that ports are no longer forwarded. So you have to reload your firewall configuration:
+## Automatic port forwarding / UPnP
+
+A technology called UPnP is available on some internet boxes / routers and allows to automatically forward ports by the machine who needs them. If UPnP is enabled in your local network, then running this command should automatically open the port for you :
```bash
sudo yunohost firewall reload
```
-##### Manual forward ports
-In the case that UPnP doesn’t works, manual ports forward are necessary.
-
-##### Email
-Internet service porviders blocks port 25 to avoid spam. To send mails, you’ll need to forward port 25.
diff --git a/isp_box_config_fr.md b/isp_box_config_fr.md
index ee0e7b5e..5bcd46f9 100644
--- a/isp_box_config_fr.md
+++ b/isp_box_config_fr.md
@@ -1,44 +1,51 @@
-# Configuration box/routeur
+# Configurer la redirection des ports
-
Vérifier que les ports sont ouverts
+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 oeil à [cette page](port_forwarding_fr). [Cette page](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.
-### Accès à l’administration de la box/routeur
-Allez à l’adresse suivante : http://192.168.0.1 (ou celle-ci http://192.168.1.1). Puis authentifier-vous.
+### 0. Diagnostiquer les ports ouverts
-### Tutoriel
-* [Tutoriel pour les ouvrir les ports sur les boxs d’Orange, Free, SFR, Dartybox, Belgacom et sur les routeurs Netgear](https://craym.eu/tutoriels/utilitaires/ouvrir_les_ports_de_sa_box.html).
+Une fois que vous aurez configuré la redirection, vous devriez pouvoir valider avec ce petit outil que vos ports sont bien redirigés :
-### Redirection des ports
-La redirection des ports suivants est nécessaire au fonctionnement des différents services.
+
Vérifier la redirection des ports
-**TCP :**
- * Web : 80
(HTTP), 443
(HTTPS)
- * [SSH](ssh_fr) : 22
- * [XMPP](XMPP_fr) : 5222
(clients), 5269
(serveurs)
- * [Courriel](email_fr) : 25, 465
(SMTP), 587
(SMTP avec chiffrement), 993
(IMAP)
- * [DNS](dns_fr) : 53
+### 1. Accéder à l'interface d'administration de votre box/routeur
-**UDP:**
- * [DNS](dns_fr) : 53
+L'interface d'administration est généralement accessible via http://192.168.0.1 ou http://192.168.1.1.
+Ensuite, il vous faudra peut-être vous authentifier avec les identifiants
+fournis par votre fournisseur d'accès internet (FAI).
----
+### 2. Trouver l'IP locale de votre serveur
-#### UPnP
+Identifiez quelle est l'IP locale de votre serveur, soit :
+- depuis l'interface de votre routeur/box, qui liste peut-être les dispostifis
+ connectés.
+- depuis la webadmin de YunoHost, dans 'État du serveur', 'Réseau'
+- depuis la ligne de commande dans votre serveur, par exemple avec `ip a | grep "scope global" | awk '{print $2}'`
-L’UPnP permet d’ouvrir automatiquement les ports. Si ce n’est pas le cas par défaut, vous pouvez l’activer via l’interface d’administration de votre routeur.
+Une adresse IP locale ressemble généralement à `192.168.xx.yy`, ou `10.0.xx.yy`.
-Dans certains cas après avoir changé la configuration de votre box (ex : sur Freebox ajout d’IPv6, débloquer le SMTP…) et après l’avoir rebooté. Il se peut que vos ports ne soient plus redirigés. Il faut donc réautoriser ces ports par le firewall :
+### 3. Rediriger les ports
+
+Dans l'interface d'administration de votre box/routeur, il vous faut trouver
+une catégorie comme 'Configuration du routeur', ou 'Redirections de ports'. Le
+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_fr): 25, 465
(SMTP), 587
(SMTP with SSL), 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.
+
+
+## Redirection automatique / UPnP
+
+Une technologie nommée UPnP est disponible sur certains routeurs/box et permet de rediriger automatiquement des ports vers une machine qui le demande. Si UPnP est activé chez vous, exécuter cette commande devrait automatiquement rediriger les bons ports :
```bash
sudo yunohost firewall reload
```
-#### Redirection manuelle des ports
-
-Dans le cas où l’UPnP ne fonctionne pas, la redirection manuelle des ports est nécessaire. Encore une fois, référez-vous à l’interface d’administration de votre routeur.
-
-ATTENTION (CPU ARM) : l’activation de l’UPnP est inefficace avec les serveurs équipés d’un processeur ARM (remarque valable pour YunoHost v2.2). Une redirection manuelle des ports du routeur est alors requise.
-
-#### Le courrier électronique
-
-Les fournisseurs d’accès à Internet bloquent souvent le port 25 pour éviter que les ordinateurs de votre réseau n’envoient des spams sur Internet à votre insu. Pour pouvoir envoyer des emails, il vous faut donc ouvrir le port 25, ou désactiver l’option « blocage SMTP sortant » dans l’administration de votre routeur.
diff --git a/isp_fr.md b/isp_fr.md
index e840aa5d..09255994 100644
--- a/isp_fr.md
+++ b/isp_fr.md
@@ -33,4 +33,4 @@ Pour une liste plus complète et précise, référez-vous à la très bonne docu
| **Proximus** | BBox2 | oui (activé) | oui | **non** | **non** | **non** |
| | BBox3 | oui (activé) | oui | **non** | **non** | **non** |
| **Scarlet** | BBox2 | oui (activé) | oui | **non** | **non** | **non** |
-**Proximus** ne serait pas ouvert à l’auto-hébergement. L’ouverture des ports serait plus difficile afin d’éviter tout SPAM. Il serait préférable de passer par [Neutrinet](http://neutrinet.be), un des [membres de la Fédération French Data Network](http://www.ffdn.org/fr/membres).
+**Proximus** ne serait pas ouvert à l’auto-hébergement. L’ouverture des ports serait plus difficile afin d’éviter tout SPAM. Il serait préférable de passer par [Neutrinet](http://neutrinet.be), un des [membres de la Fédération French Data Network](http://www.ffdn.org/fr/membres). Les ports 23, 80 et 443 sont fermés par le fournisseur par défaut, ils peuvent être débloqués à la demande (via le compte en ligne MyProximus) sur le site de Proximus.
diff --git a/isp_free_fr.md b/isp_free_fr.md
index 13e0a706..d60c0fac 100644
--- a/isp_free_fr.md
+++ b/isp_free_fr.md
@@ -1,4 +1,4 @@
-#Free
+# Free
*Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp_fr)**.*
@@ -33,9 +33,9 @@ La présence conjointe de ces deux règles permettent d'accéder à votre serveu
Pour pouvoir envoyer des mails, le déblocage se fait dans la [partie client](https://subscribe.free.fr/login/).
-Depuis le menu Ma freebox aller sur « Blocage SMTP sortant ».
+Depuis le menu Ma freebox aller sur « Blocage SMTP sortant ».
-Pour pouvoir envoyer des mails, passer le blocage en « inactif ».
+Pour pouvoir envoyer des mails, passer le blocage en « inactif ».
#### Fonction NAS de la Freebox
@@ -57,13 +57,13 @@ $ sudo mount -t cifs //mafreebox.freebox.fr/Disque\ dur/ /home/monlogin/freebox
##### Automatiser le montage
Une ligne a ajouter à la fin du `/etc/fstab` :
-```
+```bash
//mafreebox.freebox.fr/Disque\040dur/ /home/monlogin/freebox cifs _netdev,guest,uid=monlogin,gid=users,iocharset=utf8 0 0
```
Le `_netdev` signale que c'est un périphérique réseau, afin que le système ne le monte que s'il a accès au réseau.
`guest` est le mode d'identification à la Freebox : pour une connexion authentifié, placer vos identifiants dans un fichier sous la forme
-```
+```bash
username=your_user
password=your_pass
domain=FREEBOX
diff --git a/packaging_apps.md b/packaging_apps.md
index cd2bfe32..3f04d214 100644
--- a/packaging_apps.md
+++ b/packaging_apps.md
@@ -87,7 +87,7 @@ This Python script checks:
### Publish and ask for testing your application
* 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.
-* Ask your application to be added to the [app repository](https://github.com/YunoHost/apps) to be displayed in the [non-official apps list](apps_in_progress_en). Specify its progress state: `notworking`, `inprogress`, or `working`.
+* Ask your application to be added to the [app repository](https://github.com/YunoHost/apps) to be displayed in the [non-official apps list](apps_en). Specify its progress state: `notworking`, `inprogress`, or `working`.
- Subscribe to the [Apps mailing list](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) to be informed about packaging evolution.
diff --git a/packaging_apps_fr.md b/packaging_apps_fr.md
index 60304894..4b5d9a07 100644
--- a/packaging_apps_fr.md
+++ b/packaging_apps_fr.md
@@ -69,7 +69,7 @@ Il s’agit d’un script Python qui vérifie :
### Publiez et demandez des tests de votre application
* 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).
-* Faire une demande d’ajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) afin qu’elle soit affichée dans [la liste des apps non officielles](apps_in_progress_fr). Préciser également son état d’avancement : `notworking`, `inprogress` ou `working`.
+* Faire une demande d’ajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) afin qu’elle soit affichée dans [la liste des apps non officielles](apps_fr). Préciser également son état d’avancement : `notworking`, `inprogress` ou `working`.
- Inscrivez-vous à la [mailing list Apps](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) pour être tenu au courant des évolutions du packaging.
diff --git a/packaging_apps_guidelines.md b/packaging_apps_guidelines.md
new file mode 100644
index 00000000..1637a560
--- /dev/null
+++ b/packaging_apps_guidelines.md
@@ -0,0 +1,442 @@
+# Packing Applications : Good Practise Guidelines
+
+
+
+This page is under development. As long as this warning is not removed. Consider this information as potentially false.
+The name YEP is not a priori definitive, neither the levels nor the good practices in itself.
+
+
+
+### Introduction
+The purpose of this document is to list the various best practices concerning the creation of YunoHost application packages.
+
+Each good practice is numbered with a number suffixed by the letters YEP (YunoHost Enhancement Proposals), so that it can be easily referenced in the ([package checker](https://github.com/YunoHost/package_check) and [package linter](https://github.com/YunoHost/package_linter)) tools, but also during the reviews of code.
+
+Each YEP is associated with:
+* a status indicating whether the rule has been validated or is still under discussion (draft, validated, refused, obsolete);
+* an indication of the type of test to be carried out (manual or auto if an automatic tool can verify);
+* an indication of the app level from which the rule is required (NOTWORKING, INPROGRESS, WORKING, OFFICIAL), some rules are optional;
+
+### YEP Index
+| ID | Title | Status | Test | Level |
+| ---- | -------- | -------- | ------ | -------- |
+| ** YEP 1 ** | ** Communicate with the community ** | | | |
+| YEP 1.1 | App name and deposit | validated | manual | NOTWORKING (0) |
+| YEP 1.2 | Register the app on a known "directory" | validated | manual | NOTWORKING (0) |
+| YEP 1.3 | Indicate the license associated with the package | validated | AUTO | WORKING (5) |
+| YEP 1.4 | Inform about intention to maintain package | draft | manual | OFFICIAL (6) |
+| YEP 1.5 | Regularly update app status | draft | manual | WORKING (2) |
+| YEP 1.6 | Keeping up-to-date on the evolution of apps packaging | validated | manual | OFFICIAL (6) |
+| YEP 1.7 | Add the app to the [YunoHost-Apps Organization](https://github.com/YunoHost-Apps) | validated | manual | OFFICIAL (6) |
+| YEP 1.8 | Publish test requests | validated | manual | OFFICIAL (6) |
+| YEP 1.9 | Document the app | validated | AUTO | OFFICIAL (6) |
+| YEP 1.10 | Keep a clean version history | draft | manual | OFFICIAL (6) |
+| YEP 1.11 | Add app to [YunoHost bugtracker](https://dev.yunohost.org) | draft | manual | OFFICIAL (NA) |
+| | | | | |
+| ** YEP 2 ** | ** Stabilize an app ** | ** Status ** | ** Test ** | ** Level ** |
+| YEP 2.1 | Respect the manifest format | validated | Home | INPROGRESS (5) |
+| YEP 2.2 | Using bash for main scripts | validated | Home | WORKING (1) |
+| YEP 2.3 | Save replies during installation | validated | manual | WORKING (3) |
+| YEP 2.4 | Detect and manage errors | draft | manual | WORKING (8) |
+| YEP 2.5 | Copy files correctly | draft | manual | WORKING (1) |
+| YEP 2.6 | Cancel action if input values are incorrect | validated | manual | WORKING (7) |
+| YEP 2.7 | Give sufficient permissions to bash | validated | Home | WORKING (1) |
+| YEP 2.8 | Correctly Changing a System Configuration | draft | manual | WORKING (8) |
+| YEP 2.9 | Remove all traces of the app when deleting | draft | manual | WORKING (6) |
+| YEP 2.10 | Configure application logs | draft | manual | WORKING (9) |
+| YEP 2.11 | Use a variable rather than the id app directly | validated | manual | OFFICIAL (9) |
+| YEP 2.12 | Using Helpers | validated | Home | OFFICIAL (5) |
+| YEP 2.13 | Translate the package in English | draft | manual | OFFICIAL (9) |
+| YEP 2.14 | Fill a conf file correctly | draft | manual | OFFICIAL (9) |
+| YEP 2.15 | Follow the instructions for installing the application | validated | manual | OFFICIAL (1) |
+| YEP 2.16 | Check availability of dependencies on ARM, x86 and x64 | validated | manual | OFFICIAL (8) |
+| YEP 2.17 | Take the original version into account when updating | validated | manual | OFFICIAL (9) |
+| | | | | |
+| ** YEP 2.18 ** | ** Stabilize a webapp ** | ** Status ** | ** Test ** | ** Level ** |
+| YEP 2.18.1 | Launch the script to install a webapp correctly | validated | manual | WORKING (5) |
+| YEP 2.18.2 | Manage installation at the root of a domain name | validated | Home | WORKING (2) |
+| YEP 2.18.3 | Manage installation on a subdomain | validated | Home | WORKING (2) |
+| YEP 2.18.4 | Manage installation on a path `/path` | validated | Home | OFFICIAL (2) |
+| YEP 2.18.5 | Manage the YunoHost tile for easy navigation between applications | validated | manual | OFFICIAL (8) |
+| | | | | |
+| ** YEP 3 ** | ** Secure an app ** | ** Status ** | ** Test ** | ** Level ** |
+| YEP 3.1 | Do not ask or store LDAP password | draft | manual | NOTWORKING (?) |
+| YEP 3.2 | Open a port correctly | draft | manual | WORKING (7) |
+| YEP 3.3 | Facilitating Source Integrity Control | draft | manual | OFFICIAL (6) |
+| YEP 3.4 | Isolate app | draft | manual | OFFICIAL (8) |
+| YEP 3.5 | Follow the recommendations of the app's documentation | validated | manual | OFFICIAL (6) |
+| YEP 3.6 | Update versions containing CVE | draft | manual | OFFICIAL (6) |
+| | | | | |
+| ** YEP 4 ** | ** Integrate an app ** | ** Status ** | ** Test ** | ** Level ** |
+| 4.1 | Link to ldap | validated | manual | OFFICIAL (4) |
+| YEP 4.2 | Link authentication to sso | validated | manual | OFFICIAL (4) |
+| YEP 4.2.1 | Sign Out | validated | manual | OFFICIAL (9) |
+| YEP 4.3 | Provide YunoHost Backup Script Functional | validated | Home | OFFICIAL (6) |
+| YEP 4.4 | Provide a YunoHost Restore Functional script | validated | Home | OFFICIAL (6) |
+| YEP 4.5 | Using Hooks | validated | manual | OPTIONAL (8) |
+| YEP 4.6 | Manage multi-instance | validated | manual | OPTIONAL (2) |
+| YEP 4.7 | Add a module to the CLI | validated | manual | OPTIONAL |
+| YEP 4.8 | Add a module to the web admin | draft | manual | OPTIONAL |
+
+### YEP 1
+#### Communicating with the community
+The YEP 1 is a meta YEP, it explains what it takes to interact with the community around a YunoHost application package.
+
+#### YEP 1.1
+##### App name and deposit | validated | manual | NOTWORKING |
+Each YunoHost application has an id registered in the application manifest.
+This identifier must be unique between each application packet.
+It is therefore recommended to verify its availability by consulting the list of applications referenced in the known applications repositories (official, community, internetcube).
+
+In addition, the identifier must respect the regular expression `^[a-z1-9]((_|-)?[A-z1-9])+$`.
+In other words, it must respect the following rules:
+* be in lowercase
+* start with a letter or number
+* be alphanumeric (the underscore is allowed)
+* do not contain two underscores or dashes that follow one another
+* do not end with an underscore or dash
+
+For application names containing spaces, virtually all current packages simply remove them without replacing them with dashes or underscores.
+
+By convention, the YunoHost application repositories are always named their ID followed by the string "\ _ynh". Thus one can distinguish the upstream repository of the application, the deposit of the yunohost package. This notation also makes it possible to find applications not listed by the search engines of platforms offering version managers (GitHub for example).
+
+Example: ID: Example Filing Name: example_ynh
+
+#### YEP 1.2
+##### Register the app on a known "directory" | validated | manual | NOTWORKING |
+It is advised from the beginning of the packaging to register an app on one of the YunoHost application depots.
+
+These deposits have several functions:
+* communicate the existence of a package;
+* indicate the latest version associated with the package (to allow the update of the app by YunoHost);
+* indicate the state of operation of the packet;
+* indicate information about the support of a package.
+
+For the `official.json` and` community.json` lists, registration is on [the git apps repository](https://github.com/YunoHost/apps).
+
+#### YEP 1.3
+##### Indicate the license associated with the package | draft | AUTO | WORKING |
+The license of the packet must be specified in a `LICENSE` file at the root of the packet. Be careful not to confuse with the license of the application that will be installed whose acronym is to be entered in the `license` field of the manifest.
+
+The application lists official.json and community.json only accept packages with a free license, as well as the license for the contained application. Some free applications require non-free dependencies (example: mp3, drivers, etc.). In this case, you should add `&dep-non-free` to the acronym and if possible give details in the README.md of the package, in this case the integration will be accepted on a case-by-case basis.
+
+In the future, YunoHost will probably display details about the license of the application. To achieve this, the acronym must be the one from this [list of licenses listed in the SPDX](https://spdx.org/licenses/) (if there are 2 acronyms, the one containing the version number). For consistency, the case must be respected.
+
+If the license is not present in the list, in this case it is necessary to indicate `free` or `non-free` depending on whether it is free or not and give the user the opportunity to inquire in the README .md (link, explanations, ...).
+
+Example: for a GNU Lesser General Public License (LGPL), version 3 the acronym is `LGPL-3.0` if non-free dependencies are used in this case it will be necessary to put LGPL-3.0 & dep-non-free `in the manifesto.
+
+If an application has modules linked to another license (Example: Odoo 9 LGPL-3.0 + a module licensed AGPL-3.0), in this case we will indicate the two licenses separated by a `&`.
+
+If two separate applications are in the same installation package and have separate licenses, in this case we can use `,` to separate the licenses.
+
+In both cases, the maintainer is encouraged to consider creating two separate packages. The manifest of each application is used to ask app-type questions to refer to another application already installed.
+
+Reminder: a question of type `app` answers the identifier of one of the apps already installed.
+
+Some interesting links to help with the choice of license:
+* [Explanatory sheets on free licenses](https://www.inria.fr/content/download/5896/48452/version/2/file/INRIA_recueil_fiches_licences_libres_vf.pdf)
+* [GNU project licensing documentation](https://www.gnu.org/licenses/licenses.html)
+* [A Guide to the GNU Project to Help Choose a License](https://www.gnu.org/licenses/license-recommendations.en.html)
+
+#### YEP 1.4
+##### Inform about intention to maintain package | draft | manual | OFFICIAL |
+The maintainer of the application must undertake to maintain its app over time if he wishes it to join the list of official applications.
+This involves monitoring updates to the upstream application, adhering to the new packaging rules and responding to user requests.
+
+#### YEP 1.5
+##### Regularly update app status | draft | manual | WORKING |
+#### YEP 1.6
+##### Keeping up-to-date on the evolution of apps packaging | validated | manual | OFFICIAL |
+In order to keep up with the evolution of the packaging format and best practices, it is recommended to:
+* subscribe to the discussion list `apps @ list.yunohost.org`
+* follow [the forum's Apps category](https://forum.yunohost.org/c/apps-packaging)
+
+To follow the evolution of YunoHost more generally:
+* join XMPP dev@conference.yunohost.org ([three days of logs are available](https://im.yunohost.org/logs/dev/))
+* follow [Annoucement category of the forum](https://forum.yunohost.org/c/announcement)
+* follow discussions on contrib@list.yunohost.org
+
+#### YEP 1.7
+##### Add the app to the [YunoHost-Apps Organization](https://github.com/YunoHost-Apps) | validated | manual | OFFICIAL |
+Adding an app to the [YunoHost-Apps organization](https://github.com/YunoHost-Apps) lets you share apps with other contributors who might be tempted to package the targeted application .
+
+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.
+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
+##### Publish test requests | validated | manual | OFFICIAL |
+In order to ensure the proper functioning of a package, it is necessary to publish an announcement in order to open the tests on the package. This announcement can be done on the forum in [Forum Apps category](https://forum.yunohost.org/c/apps).
+
+It is recommended to indicate if some tests have not been conducted.
+
+* Check package with Package linter.
+* Installation in subfolder.
+* Installation at the root of a domain or subdomain.
+* Deletion, in the 2 cases of previous installations.
+* Access to the web interface of the application, with the / final in the address, and omitting it.
+* Upgrade on the same version of the package.
+* Upgrade from an older version of the package.
+* Private installation (secured by SSO).
+* Public installation.
+* Multi-instance installation.
+* User name error.
+* Domain name error.
+* Poorly written path (path / instead of / path for example).
+* Port already used by another application.
+* Source corrupted after download.
+* Error downloading source.
+* Folder already used by another application.
+* Backup and restore.
+
+#### YEP 1.9
+##### Document the app | validated | AUTO | OFFICIAL |
+Above all, it is appropriate to make a correct description of the app in the `description` field of the manifest. Keyword insertion in this description can be a good idea, as a user might be required to search (CTRL + F) among all applications.
+
+There is also README.md, which must and can contain:
+* the name of the app
+* a brief summary of what it does
+* any additional installation if the script is not sufficient
+* instructions to use it (for example to connect your smartphone or computer)
+* the location to report a malfunction / request
+* the roadmap / TODO
+* possibly prerequisites in terms of ram memories, processor etc. (some equipment has less than 512MB of ram)
+
+#### YEP 1.10
+##### Keep a clean version history | draft | manual | OFFICIAL |
+#### YEP 1.11
+##### Add app to [YunoHost bugtracker](https://dev.yunohost.org) | draft | manual | OFFICIAL |
+
+### YEP 2
+#### 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).
+
+#### YEP 2.2
+##### Using bash for main scripts | validated | Home | WORKING |
+Action scripts (install, upgrade, remove, backup and restore) must be in the bash so that the cli / api yunohost can call them correctly.
+
+That being said, there is nothing to prevent other scripts or function libraries from using these scripts. These are not obliged to be in bash.
+
+However, careful attention must be paid to the correct display of logs of information, warning, or errors. So that a user of the cli / api yunohost can understand the operation of the script just executed and if necessary repair its YunoHost instance.
+
+#### YEP 2.3
+##### Save the answers during the installation | validated | manual | WORKING |
+During installation, it is necessary to save each answer to the questions in the manifest. Indeed, even if at the beginning it is not necessary to write an update script, thereafter it will probably be the case. However, without the initial information, the update can be more tedious.
+
+#### YEP 2.4
+##### Detecting and Managing Errors | draft | manual | WORKING |
+The install, upgrade, backup, and restore scripts must detect errors to avoid further scripting in case of blocking error or empty variable usage.
+The use of trap and set -eu is recommended to detect and treat errors ([Discussion in progress](https://forum.yunohost.org/t/gestion-des-erreurs-set-e-and-or-trap/2249/5))
+It is also necessary to check the contents of the variables before removing the remove script. For example, an `rm -Rf /var/www/$app` with `$app` empty would have a disastrous result.
+
+At the beginning of the scripts, before any modifications, it is necessary to check the existence of the users mentioned at the installation, as well as the availability of the requested path, the availability of the final file of the application and the size of the passwords if necessary .
+
+ Do not forget that in case of installation error the removal script will be launched automatically by the yunohost cli.
+
+#### YEP 2.5
+##### Copy files correctly | draft | manual | WORKING |
+#### YEP 2.6
+##### Cancel action if input values are incorrect | validated | manual | WORKING |
+Each script should verify that the input values are correct.
+
+Here are some examples :
+* Check that the domain name exists
+* Check that the user exists
+* Check that the chosen path is available
+
+If one of the values is incorrect, it is necessary to cancel any modifications made previously to the instance. The best thing is to do all these checks before changing the system.
+
+#### YEP 2.7
+##### Give sufficient permissions to bash | validated | Home | WORKING |
+Some instructions require sudo rights. In this case, do not forget to prefix these instructions with `sudo`.
+
+In other cases it is necessary to give rights using chmod and chown.
+
+#### YEP 2.8
+##### Correctly changing a system configuration | draft | manual | WORKING |
+Changes to the system must be reversible so that the removal of the application is of no consequence to the system leaves no residue.
+For this purpose, the `.d` folders of the system configurations must be used as much as possible. Where it is not possible to do otherwise, clearly indicate the configuration as modified by an application and ensure that the changes will be removed when it is removed.
+
+#### YEP 2.9
+##### Remove all traces of the app when deleting | draft | manual | WORKING |
+Except for dependencies (eg, Debian packages) used by other services or applications.
+
+#### YEP 2.10
+##### Configure application logs | draft | manual | WORKING |
+If possible, the application should use a log file, which will preferably be in /var/log.
+If the log is set up by the install script and not by the application itself, a log-rotate configuration file will have to be added to handle the logs of the application.
+
+#### YEP 2.11
+##### Using a variable rather than the app id directly | validated | manual | OFFICIAL |
+It is advisable to make the scripts as generic as possible, a good way to do this is to use a variable for the app's name to avoid it being found everywhere in scripts. This will make it easier for another package builder to use the script for another app.
+
+#### YEP 2.12
+##### Using Helpers | validated | Home | OFFICIAL |
+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)
+* explore [helpers directory](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d)
+
+#### YEP 2.13
+##### Translate the package in English | draft | manual | OFFICIAL |
+#### YEP 2.14
+##### Fill a conf file correctly | draft | manual | OFFICIAL |
+* Just to clear up a little this YEP, but it remains in draft form. *
+The goal is to find a more reliable method than sed to modify the configuration files. sed can possibly have edge effects by modifying unwanted parts of the configuration file, especially with the use of regex.
+
+#### YEP 2.15
+##### Follow the instructions for installing the application | validated | manual | OFFICIAL |
+
+#### YEP 2.16
+##### Check availability of dependencies on ARM, x86, and x64 | validated | manual | OFFICIAL |
+YunoHost installs on ARM, x86 and x64. A package should therefore be tested on these three processor architectures.
+
+Some packages are not available on ARM, in this case it is advisable to study other solutions or to indicate in the README.md that the application does not work on ARM and to block the installation by detection of type d 'architecture.
+
+#### YEP 2.17
+##### Take the original version into account when updating | validated | manual | OFFICIAL |
+The update script must be able to run even if the previous updates have not been performed.
+
+For example, it should be possible to perform update jumps from an N-x version to an N version. To do this, it is advisable to save the version numbers in the app settings.
+
+### YEP 2.18
+##### Stabilizing a webapp
+The majority of YunoHost applications are web apps, but some are not. The YEP 2.18.x develop certain specificities related to the web app.
+
+#### YEP 2.18.1
+##### Launch the script to install a webapp correctly | validated | manual | WORKING |
+Often a web app installs itself from forms displayed on a web page. This practice, while practical for a human, is less so for a program.
+
+It is therefore necessary to check if the application does not propose a solution of installation on command line.
+
+If this is not the case, the -H option of curl should be used. In some cases, DNS redirection may not be active at the time of installation.
+`` `Bash
+curl -kL -H "Host: $domain" --data "¶m1=Text1¶m2=text2" https: //localhost$path/install.php > /dev/null 2>&1
+`` `
+
+#### YEP 2.18.2
+##### Manage installation at the root of a domain name | validated | Home | WORKING |
+A web app should be able to install itself at the root of a domain name.
+
+#### YEP 2.18.3
+##### Manage installation on a subdomain | validated | Home | WORKING |
+A web app should be able to install itself on a subdomain directly without subfolders.
+
+#### YEP 2.18.4
+##### Manage installation on a path `/path` | validated | Home | OFFICIAL |
+A web app should be able to install on a path `/path`.
+
+#### YEP 2.18.5
+##### Manage the YunoHost tile to easily navigate between applications | validated | manual | OFFICIAL |
+Except in rare cases it is advisable to integrate the tile YunoHost which allows to return to the menu of the SSO. This integration is done in the nginx configuration.
+
+Some users have replaced this square with a script adding a menu at the top of each webapp.
+
+### YEP 3
+#### Securing an app
+#### YEP 3.1
+##### Do not ask or store LDAP password | draft | manual | NOTWORKING |
+#### YEP 3.2
+##### Open a port correctly | draft | manual | WORKING |
+If the application requires the opening of a port, it is necessary to check beforehand that this port is not already used by another application. If so, the install script must be able to find another available port.
+It should also be checked whether the port should be open on the router, beyond the local network. If this is not the case, the `--no-upnp` argument must be added to the` yunohost firewall allow` command in order to limit the port opening to the LAN only.
+
+#### YEP 3.3
+##### Facilitating Source Integrity Control | draft | manual | OFFICIAL |
+The upstream application should not be integrated into tarball in the source folder of the package, as this adds to the package and the git repository and does not allow verification of the integrity of the source.
+The source must be downloaded from the official website, then its integrity must be checked before installing it.
+
+#### YEP 3.4
+##### Isolate app | draft | manual | OFFICIAL |
+In order to avoid edges in case of possible compromise of the application, it must be insulated in order not to affect the other applications.
+To do this, it is necessary to isolate the application in its execution folder by restricting its environment by a chroot, either by a mechanism internal to the application where possible (for example for an ftp server), or by the use of phpfpm.
+Similarly, to restrict the scope of the user running the application, it is preferable to use a user dedicated to the application. Whose rights are restricted to the use of the application only.
+However, this should not exempt from a maximum restriction of rights on application files. As much as possible, the files must belong to root, and the dedicated user must have write rights only on files that specifically request it.
+
+#### YEP 3.5
+##### Follow the recommendations in the app's documentation | validated | manual | OFFICIAL |
+Typically, an application provides documentation to help system administrators perform the installation. It is advisable to follow the recommendations, including the permissions to be granted per file or directory.
+
+However, the package maintainer must remain vigilant, some documentation may be erroneous or insufficient.
+
+#### YEP 3.6
+##### Update versions with CVE | draft | manual | OFFICIAL |
+The [CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures), or Common Vulnerabilities and Exposures, identify security vulnerabilities common to applications. The corrections of these flaws may concern the application and it is important in this case to follow these updates as closely as possible.
+More generally, the application can propose a patch for a specific vulnerability to itself.
+Generally, this YEP involves tracking an information channel to track application security updates and reacting quickly by updating the package accordingly.
+
+As specified in YEP 1.7, if a security patch is to be deployed urgently, another YunoHost member may be required to commit to the package if necessary.
+
+### YEP 4
+#### Embedding an app
+This meta YEP deals with the integration of an app with the YunoHost environment. Good integration is generally a guarantee of quality and comfort for users.
+
+#### YEP 4.2
+##### Linking Authentication to sso | validated | manual | OFFICIAL |
+The Single Sign On makes it possible to avoid having to create the same users for each app. Thus, a YunoHost user can connect via the Single Sign On to all the apps.
+
+To do this, you must link your app to the LDAP and / or use hooks to duplicate the account credentials in the app's database.
+
+Once this is done, the maintainer can use the REMOTE_USER HTTP statement to check whether a user is logged on or not. In general, modules exist (whether at the level of the technology, the framework or even the app itself).
+
+If required, SSOwat can be used to secure access to one or more parts of the app. It may be relevant to secure access to an administration page with the SSO rather than a `.htaccess` and make the rest of the app accessible to all visitors.
+
+#### YEP 4.2.1
+##### Logout | validated | manual | OFFICIAL |
+When you click on a disconnect action within the app, it should disconnect the user from the SSO. Otherwise, there is a risk that the user will inadvertently leave an open session.
+
+#### YEP 4.3
+##### Provide YunoHost Backup Script Functional | validated | Home | OFFICIAL |
+The application must have a backup script to allow users to back up the application, its configuration, and its data.
+
+#### YEP 4.4
+##### Provide a functional YunoHost restoration script | validated | Home | OFFICIAL |
+The application must have a restore script to allow users to restore an application previously backed up with the backup script.
+
+#### YEP 4.5
+##### Using Hooks | validated | manual | OPTIONAL |
+YunoHost offers the possibility to launch actions with each processing carried out by the command line. This can be practical in many cases.
+
+Examples:
+* Add / delete a user in the app database when using `yunohost user create` or` yunohost user remove`
+* Manage the addition of a new domain name during the `yunohost domain add` action
+* Run a script after the firewall has been reloaded
+
+List of hooks:
+* post_domain_add
+* post_domain_remove
+* post_user_create
+* post_user_delete
+* post_backup_create
+* post_backup_restore
+* pre_backup_delete
+* post_backup_delete
+* post_app_addaccess
+* post_app_removeaccess
+* post_app_clearaccess
+* post_app_addaccess
+* post_iptable_rules
+
+These scripts are to be placed in a `hooks` directory as in this package: https://github.com/YunoHost-Apps/owncloud_ynh/tree/master/hooks.
+
+
+#### YEP 4.6
+##### Manage multi-instance | validated | manual | OPTIONAL |
+It is sometimes practical to be able to install the same app several times. For example, for several different domain names.
+
+However, be careful about how to handle file paths, dependencies, ports used, etc. so that there is no collision.
+
+#### YEP 4.7
+##### Add a module to the CLI | validated | manual | OPTIONAL |
+You can create a module to add commands to the yunohost command line.
+
+To do this, you need to add an actionmaps to `/usr/share/moulinette/actionsmap/`. This actionmaps must start with `ynh_`.
+
+The packages [menu_ynh](https://github.com/YunoHost-Apps/menu_ynh/) and [subscribe_ynh](https://github.com/YunoHost-Apps/subscribe_ynh/) are old (and not up to date) can be used as the basis for this type of module.
+#### YEP 4.8
+##### Add a module to the web admin | draft | manual | OPTIONAL |
\ No newline at end of file
diff --git a/packaging_apps_guidelines_fr.md b/packaging_apps_guidelines_fr.md
index 6dc58e56..7186320a 100644
--- a/packaging_apps_guidelines_fr.md
+++ b/packaging_apps_guidelines_fr.md
@@ -79,10 +79,12 @@ Chaque YEP est associée à :
| YEP 4.8 | Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL |
-### YEP 1 - Communiquer avec la communauté
+### YEP 1
+#### Communiquer avec la communauté
La YEP 1 est une meta YEP, elle explique ce qu'il faut faire pour échanger avec la communauté autour d'un paquet d'application YunoHost.
-#### YEP 1.1 - Nommer son app et son dépôt | validé | manuel | NOTWORKING |
+#### YEP 1.1
+##### Nommer son app et son dépôt | validé | manuel | NOTWORKING |
Chaque application YunoHost possède un id inscrit dans le manifeste de l'application.
Cet identifiant doit être unique entre chaque paquet d'application.
Il est donc recommandé de vérifier sa disponibilité en consultant la liste des applications référencées dans les dépôts d'applications connus (official, community, internetcube).
@@ -100,7 +102,8 @@ Par convention, les dépôts d'applications YunoHost sont toujours nommés de le
Exemple : ID : exemple Nom de dépôt : exemple_ynh
-#### YEP 1.2 - Inscrire l'app sur un « répertoire » connu | validé | manuel | NOTWORKING |
+#### YEP 1.2
+##### Inscrire l'app sur un « répertoire » connu | validé | manuel | NOTWORKING |
Il est conseillé dès le début du packaging d'inscrire une app sur un des dépôts d'application YunoHost.
Ces dépôts ont plusieurs fonctions :
@@ -111,7 +114,8 @@ Ces dépôts ont plusieurs fonctions :
Pour les listes `official.json` et `community.json`, l'inscription se fait sur [le dépôt git "apps"](https://github.com/YunoHost/apps).
-#### YEP 1.3 - Indiquer la licence associée au paquet | brouillon | AUTO | WORKING |
+#### YEP 1.3
+##### Indiquer la licence associée au paquet | brouillon | AUTO | WORKING |
La licence du paquet est à indiquer dans un fichier `LICENSE` à la racine du paquet. Attention à ne pas confondre avec la licence de l'application qui va être installée dont l'acronyme est à renseigner dans le champ `license` du manifeste.
Les listes d'applications official.json et community.json n'acceptent que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas.
@@ -135,12 +139,15 @@ Quelques liens intéressants pour aider au choix de licence:
* [La documentation sur les licences du projet GNU](https://www.gnu.org/licenses/licenses.fr.html)
* [Un guide du projet GNU pour aider au choix d'une licence](https://www.gnu.org/licenses/license-recommendations.fr.html)
-#### YEP 1.4 - Informer sur l'intention de maintenir un paquet | brouillon | manuel | OFFICIAL |
+#### YEP 1.4
+##### Informer sur l'intention de maintenir un paquet | brouillon | manuel | OFFICIAL |
Le mainteneur de l'application doit s'engager à maintenir son app sur la durée si il souhaite que celle-ci rejoigne la liste des applications officielles.
Cela implique de surveiller les mises à jour de l'application upstream, de respecter les nouvelles règles de packaging et de répondre aux demandes des utilisateurs.
-#### YEP 1.5 - Mettre à jour régulièrement le statut de l'app | brouillon | manuel | WORKING |
-#### YEP 1.6 - Se tenir informé sur l'évolution du packaging d'apps | validé | manuel | OFFICIAL |
+#### YEP 1.5
+##### Mettre à jour régulièrement le statut de l'app | brouillon | manuel | WORKING |
+#### YEP 1.6
+##### Se tenir informé sur l'évolution du packaging d'apps | validé | manuel | OFFICIAL |
Afin de suivre l'évolution du format de packaging ainsi que des bonnes pratiques, il est recommandé de:
* s'inscrire à la liste de discussion `apps@list.yunohost.org`
* suivre [la catégorie Apps packaging du forum](https://forum.yunohost.org/c/apps-packaging)
@@ -150,7 +157,8 @@ Pour suivre l'évolution de YunoHost de façon plus générale :
* suivre [la catégorie Annoucement du forum](https://forum.yunohost.org/c/announcement)
* suivre les discussions sur contrib@list.yunohost.org
-#### YEP 1.7 - Ajouter l'app à l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) | validé | manuel | OFFICIAL |
+#### YEP 1.7
+##### Ajouter l'app à l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) | validé | manuel | OFFICIAL |
L'ajout d'une app sur l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) permet de faire connaitre l'apps auprès des autres contributeurs qui pourraient être tentés de packager l'application visée.
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.
@@ -158,7 +166,8 @@ C'est aussi un moyen pour permettre de déployer rapidement un correctif de séc
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.
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 - Publier des demandes de test | validé | manuel | OFFICIAL |
+#### 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).
Il est recommandé d'indiquer si certains tests n'ont pas été menés.
@@ -182,7 +191,8 @@ Il est recommandé d'indiquer si certains tests n'ont pas été menés.
* Dossier déjà utilisé par une autre application.
* Backup et restore.
-#### YEP 1.9 - Documenter l'app | validé | AUTO | OFFICIAL |
+#### YEP 1.9
+##### Documenter l'app | validé | AUTO | OFFICIAL |
Avant tout, il convient de faire une description correcte de l'app dans le champ `description` du manifest. L'insertion de mot clé dans cette description peut être une bonne idée, dans la mesure où un utilisateur pourrait être amené à faire une recherche (CTRL+F) parmi toutes les applications.
Il y a également le README.md, ce dernier doit et peut contenir :
@@ -194,24 +204,31 @@ Il y a également le README.md, ce dernier doit et peut contenir :
* la roadmap/TODO
* éventuellement les pré-requis en termes de mémoires ram, processeur etc. (certains équipements ont moins de 512Mo de ram)
-#### YEP 1.10 - Garder un historique de version propre | brouillon | manuel | OFFICIAL |
-#### YEP 1.11 - Ajouter l'app au [bugtracker YunoHost](https://dev.yunohost.org) | brouillon | manuel | OFFICIAL |
+#### YEP 1.10
+##### Garder un historique de version propre | brouillon | manuel | OFFICIAL |
+#### YEP 1.11
+##### Ajouter l'app au [bugtracker YunoHost](https://dev.yunohost.org) | brouillon | manuel | OFFICIAL |
-### YEP 2 - Stabiliser une app
-#### YEP 2.1 - Respecter le format du manifeste | validé | auto | INPROGRESS |
+### YEP 2
+#### 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).
-#### YEP 2.2 - Utiliser bash pour les scripts principaux | validé | auto | WORKING |
+#### YEP 2.2
+##### Utiliser bash pour les scripts principaux | validé | auto | WORKING |
Les scripts d'action (install, upgrade, remove, backup et restore) doivent être en bash afin que la cli/api yunohost puisse correctement les appeler.
Ceci étant, rien n'empêche à l'intérieur de ces scripts de faire appel à d'autres scripts ou bibliothèques de fonction. Ceux-ci ne sont pas obligés d'être en bash.
Cependant, il faudra porter une attention particulière à l'affichage correct des logs d'information, de warning, ou d'erreurs. Afin qu'un utilisateur de la cli/api yunohost puisse comprendre le fonctionnement du script venant d'être exécuté et au besoin réparer son instance YunoHost.
-#### YEP 2.3 - Sauvegarder les réponses lors de l'installation | validé | manuel | WORKING |
+#### YEP 2.3
+##### Sauvegarder les réponses lors de l'installation | validé | manuel | WORKING |
Lors de l'installation, il est nécessaire de sauvegarder chaque réponse aux questions du manifeste. En effet, même si au début il n'est pas nécessaire d'écrire un script de mise à jour, par la suite ce sera sans doute le cas. Or, sans les informations initiales, la mise à jour peut être plus fastidieuse.
-#### YEP 2.4 - Détecter et gérer les erreurs | brouillon | manuel | WORKING |
+#### YEP 2.4
+##### Détecter et gérer les erreurs | brouillon | manuel | WORKING |
Les scripts install, upgrade, backup et restore doivent détecter les erreurs pour éviter la poursuite des scripts en cas d'erreur bloquante ou d'usage de variable vide.
L'usage de trap et de set -eu est recommandé pour détecter et traiter les erreurs ([Discussion en cours à ce sujet](https://forum.yunohost.org/t/gestion-des-erreurs-set-e-et-ou-trap/2249/5))
Il est nécessaire également de vérifier le contenu des variables avant les suppressions du script remove. Par exemple un `rm -Rf /var/www/$app` avec `$app` vide aurait un résultat désastreux.
@@ -220,8 +237,10 @@ Au début des scripts, avant toutes modifications, il faut vérifier l'existence
N'oubliez pas qu'en cas d'erreur d'installation le script de suppression sera lancé automatiquement par la cli yunohost.
-#### YEP 2.5 - Copier correctement des fichiers | brouillon | manuel | WORKING |
-#### YEP 2.6 - Annuler l'action si les valeurs d'entrées sont incorrectes | validé | manuel | WORKING |
+#### YEP 2.5
+##### Copier correctement des fichiers | brouillon | manuel | WORKING |
+#### YEP 2.6
+##### Annuler l'action si les valeurs d'entrées sont incorrectes | validé | manuel | WORKING |
Chaque script devrait vérifier que les valeurs d'entrées sont correctes.
Voici quelques exemples :
@@ -232,53 +251,66 @@ Voici quelques exemples :
Dans le cas où l'une des valeurs est incorrecte, il est alors nécessaire d'annuler toutes modifications réalisées préalablement sur l'instance. Le mieux étant de faire tous ces contrôles avant de modifier le système.
-#### YEP 2.7 - Donner des permissions suffisantes aux instructions bash | validé | auto | WORKING |
+#### YEP 2.7
+##### Donner des permissions suffisantes aux instructions bash | validé | auto | WORKING |
Certaines instructions nécessitent les droits sudo. Il faut dans ce cas ne pas oublier de préfixer ces instructions par `sudo `.
Dans d'autres cas il est nécessaire de donner des droits à l'aide de chmod et de chown.
-#### YEP 2.8 - Modifier correctement une configuration système | brouillon | manuel | WORKING |
+#### YEP 2.8
+##### Modifier correctement une configuration système | brouillon | manuel | WORKING |
Les modifications du système doivent être réversible pour que la suppression de l'application soit sans conséquences pour le système ne laisse pas de résidus.
Pour celà, il faut recourir autant que possible aux dossiers `.d` des configurations système. Où lorsqu'il n'est pas possible de faire autrement, d'indiquer clairement la configuration modifiée par une application et s'assurer que les modifications seront retirées lors de sa suppression.
-#### YEP 2.9 - Enlever toutes traces de l'app lors de la suppression | brouillon | manuel | WORKING |
+#### YEP 2.9
+##### Enlever toutes traces de l'app lors de la suppression | brouillon | manuel | WORKING |
À l’exception de dépendances (pax exemple : paquets Debian) utilisés par d’autres services ou applications.
-#### YEP 2.10 - Configurer les logs de l'application | brouillon | manuel | WORKING |
+#### YEP 2.10
+##### Configurer les logs de l'application | brouillon | manuel | WORKING |
Si possible, l'application doit utiliser un fichier de log, qui sera de préférence dans /var/log.
Si le log est mis en place par le script install et non par l'application elle-même, un fichier de configuration pour log-rotate devra être ajouté pour gérer les rotations des logs de l'application.
-#### YEP 2.11 - Utiliser une variable plutôt que l'app id directement | validé | manuel | OFFICIAL |
+#### YEP 2.11
+##### Utiliser une variable plutôt que l'app id directement | validé | manuel | OFFICIAL |
Il est conseillé de rendre les scripts le plus générique possible, un bon moyen d'y parvenir est d'utiliser une variable pour le nom de l'app afin d'éviter qu'il se retrouve partout dans les scripts. Ainsi, un autre packageur pourra plus facilement se servir du script pour une autre app.
-#### YEP 2.12 - Utiliser les commandes pratiques (helpers) | validé | auto | OFFICIAL |
+#### YEP 2.12
+##### Utiliser les commandes pratiques (helpers) | validé | auto | OFFICIAL |
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)
* explorer [le répertoire des helpers](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d)
-#### YEP 2.13 - Traduire le paquet en anglais | brouillon | manuel | OFFICIAL |
-#### YEP 2.14 - Remplir correctement un fichier de conf | brouillon | manuel | OFFICIAL |
+#### YEP 2.13
+##### Traduire le paquet en anglais | brouillon | manuel | OFFICIAL |
+#### YEP 2.14
+##### Remplir correctement un fichier de conf | brouillon | manuel | OFFICIAL |
*Juste pour éclaircir un peu cette YEP, mais ça reste à l'état de brouillon.*
Le but est de trouver une méthode plus fiable que sed pour modifier les fichiers de configuration. sed pouvant éventuellement avoir des effets de bord en modifiant des parties non désirées du fichier de configuration, en particulier avec l'usage de regex.
-#### YEP 2.15 - Suivre les instructions d'installation de l'application | validé | manuel | OFFICIAL |
+#### YEP 2.15
+##### Suivre les instructions d'installation de l'application | validé | manuel | OFFICIAL |
-#### YEP 2.16 - Vérifier la disponibilité des dépendances sur ARM, x86 et x64 | validé | manuel | OFFICIAL |
+#### YEP 2.16
+##### Vérifier la disponibilité des dépendances sur ARM, x86 et x64 | validé | manuel | OFFICIAL |
YunoHost s'installe sur ARM, sur x86 et x64. Un paquet devrait donc être testé sur ces trois architectures processeur.
Certains paquets ne sont pas disponibles sur ARM, il convient dans ce cas d'étudier d'autres solutions ou d'indiquer dans le README.md que l'application ne fonctionne pas sur ARM et de bloquer l’installation par détection du type d’architecture.
-#### YEP 2.17 - Prendre en compte la version d'origine lors des mises à jour | validé | manuel | OFFICIAL |
+#### YEP 2.17
+##### Prendre en compte la version d'origine lors des mises à jour | validé | manuel | OFFICIAL |
Le script de mise à jour doit pouvoir fonctionner même si les mises à jour précédentes n'ont pas été effectuées.
Ainsi, il doit être possible de faire des sauts de mise à jour d'une version N-x vers une version N. Pour ce faire il est conseillé d'enregistrer les numéros de version dans les settings de l'app.
-### YEP 2.18 - Stabiliser une webapp
+### YEP 2.18
+##### Stabiliser une webapp
La majeure partie des applications YunoHost sont des web apps, mais certaines n'en sont pas. Les YEP 2.18.x développent certaines spécificités liées aux web app.
-#### YEP 2.18.1 - Lancer le script d'installation d'une webapp correctement | validé | manuel | WORKING |
+#### YEP 2.18.1
+##### Lancer le script d'installation d'une webapp correctement | validé | manuel | WORKING |
Bien souvent une web app s'installe à partir de formulaires affichés sur une page web. Cette façon de faire, bien que pratique pour un humain, l'est moins pour un programme.
Il convient donc de vérifier si l'application ne propose pas une solution d'installation en ligne de commande.
@@ -288,52 +320,65 @@ Si ce n'est pas le cas, il convient d'utiliser l'option -H de curl. En effet, da
curl -kL -H "Host: $domain" --data "¶m1=Text1¶m2=text2" https://localhost$path/install.php > /dev/null 2>&1
```
-#### YEP 2.18.2 - Gérer l'installation à la racine d’un nom de domaine | validé | auto | WORKING |
+#### YEP 2.18.2
+##### Gérer l'installation à la racine d’un nom de domaine | validé | auto | WORKING |
Une web app devrait pouvoir s'installer à la racine d’un nom de domaine.
-#### YEP 2.18.3 - Gérer l'installation sur un sous-domaine | validé | auto | WORKING |
+#### YEP 2.18.3
+##### Gérer l'installation sur un sous-domaine | validé | auto | WORKING |
Une web app devraient pouvoir s'installer sur un sous-domaine directement sans sous dossiers.
-#### YEP 2.18.4 - Gérer l'installation sur un chemin `/path` | validé | auto | OFFICIAL |
+#### YEP 2.18.4
+##### Gérer l'installation sur un chemin `/path` | validé | auto | OFFICIAL |
Une web app devraient pouvoir s'installer sur un chemin `/path`.
-#### YEP 2.18.5 - Gérer la tuile YunoHost pour naviguer facilement entre les applications | validé | manuel | OFFICIAL |
+#### YEP 2.18.5
+##### Gérer la tuile YunoHost pour naviguer facilement entre les applications | validé | manuel | OFFICIAL |
Sauf dans de rare cas il est conseillé d'intégrer la tuile YunoHost qui permet de retourner sur le menu du SSO. Cette intégration se fait dans la configuration nginx.
Certains utilisateurs ont remplacé ce carré par un script ajoutant un menu en haut de chaque webapp.
-### YEP 3 - Sécuriser une app
-#### YEP 3.1 - Ne pas demander ou stocker de mot de passe LDAP | brouillon | manuel | NOTWORKING |
-#### YEP 3.2 - Ouvrir un port correctement | brouillon | manuel | WORKING |
+### YEP 3
+#### Sécuriser une app
+#### YEP 3.1
+##### Ne pas demander ou stocker de mot de passe LDAP | brouillon | manuel | NOTWORKING |
+#### YEP 3.2
+##### Ouvrir un port correctement | brouillon | manuel | WORKING |
Si l'application nécessite l'ouverture d'un port, il est nécessaire de vérifier préalablement que ce port n'est pas déjà utilisé par une autre application. Le cas échéant, le script install doit être capable de trouver un autre port disponible.
Il convient également de vérifier si le port doit être ouvert sur le routeur, au delà du réseau local. Si ce n'est pas le cas, l'argument `--no-upnp` doit être ajouté à la commande `yunohost firewall allow` afin de limiter l'ouverture du port au réseau local uniquement.
-#### YEP 3.3 - Faciliter le contrôle de l'intégrité des sources | brouillon | manuel | OFFICIAL |
+#### YEP 3.3
+##### Faciliter le contrôle de l'intégrité des sources | brouillon | manuel | OFFICIAL |
L'application upstream ne doit pas être intégrée en tarball dans le dossier source du package, car cela alourdit le package et le dépôt git et ne permet pas la vérification de l'intégrité de la source.
La source doit donc être téléchargée depuis le site officiel, puis son intégritée doit être vérifiée avant de l'installer.
-#### YEP 3.4 - Isoler l'app | brouillon | manuel | OFFICIAL |
+#### YEP 3.4
+##### Isoler l'app | brouillon | manuel | OFFICIAL |
Afin d'éviter des effets de bords en cas de compromission éventuelle de l'application, celle-ci doit être isolée pour de ne pas risquer d'impacter les autres applications.
Pour cela, il convient d'isoler l'application dans son dossier d'exécution en restreignant son environnement par un chroot, soit par un mécanisme interne à l'application lorsque c'est possible (par exemple pour un serveur ftp), soit par l'usage de phpfpm.
De même, pour restreindre la portée de l'utilisateur exécutant l'application, il est préférable d'utiliser un utilisateur dédiée à l'application. Dont les droits sont restreint à l'usage de l'application uniquement.
Toutefois, cela ne doit pas exempter d'une restriction maximale des droits sur les fichiers de l'application. Autant que possible, les fichiers doivent appartenir à root, et l'utilisateur dédié ne doit avoir de droits d'écriture que sur les fichiers le réclamant expressément.
-#### YEP 3.5 - Suivre les recommandations de la documentation de l'app | validé | manuel | OFFICIAL |
+#### YEP 3.5
+##### Suivre les recommandations de la documentation de l'app | validé | manuel | OFFICIAL |
En général, une application propose une documentation afin d'aider les administrateurs systèmes à réaliser l'installation. Il est conseiller d'en suivre les recommandations, notamment celles concernant les permissions à accorder par fichier ou répertoire.
Le mainteneur de paquet doit toutefois rester vigilant, certaines documentations pouvant être erronées ou insuffisante.
-#### YEP 3.6 - Mettre à jour les versions contenant des CVE | draft | manuel | OFFICIAL |
+#### YEP 3.6
+##### Mettre à jour les versions contenant des CVE | draft | manuel | OFFICIAL |
Les [CVE](https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures), ou Common Vulnerabilities and Exposures, recensent les failles de sécurités communes aux applications. Les corrections de ces failles peuvent concerner l'application et il est important dans ce cas de suivre au plus près ces mises à jour.
Plus généralement, l'application peut proposer un correctif pour une faille spécifique à elle-même.
De manière générale, cette YEP implique de suivre un canal d'information pour suivre les mises à jour de sécurité de l'application et réagir rapidement en mettant à jour le package en conséquence.
Comme précisé dans la YEP 1.7, si un correctif de sécurité doit être déployé en urgence, un autre membre de YunoHost peut être amené à faire un commit sur le package si nécessaire.
-### YEP 4 - Intégrer une app
+### YEP 4
+#### Intégrer une app
Cette meta YEP traite de l'intégration d'une app avec l'environnement YunoHost. Une bonne intégration est en général un gage de qualité et de confort pour les utilisateurs.
-#### YEP 4.2 - Lier l'authentification au sso | validé | manuel | OFFICIAL |
+#### YEP 4.2
+##### Lier l'authentification au sso | validé | manuel | OFFICIAL |
Le Single Sign On permet d'éviter d'avoir à créer les mêmes utilisateurs pour chaque app. Ainsi, un utilisateur YunoHost pourra se connecter via le Single Sign On à l'ensemble des apps.
Pour se faire, il convient de lier son app au LDAP et/ou d'utiliser des hooks pour dupliquer les identifiants du compte dans la base de données de l'app.
@@ -342,16 +387,20 @@ Une fois cette opération appliquée, le mainteneur peut utiliser l'instruction
Au besoin, SSOwat permet de sécuriser l'accès à une ou plusieurs parties de l'app. Il peut ainsi être pertinent de sécuriser l'accès à une page d'administration avec le SSO plutôt qu'un `.htaccess` et de rendre le reste de l'app accessible à tous les visiteurs.
-#### YEP 4.2.1 - Déconnexion | validé | manuel | OFFICIAL |
+#### YEP 4.2.1
+##### Déconnexion | validé | manuel | OFFICIAL |
Lorsque l'on clique sur une action de déconnexion au sein de l'app, celle-ci devrait déconnecter l'utilisateur du SSO. Sinon, il y a un risque que l'utilisateur laisse par mégarde une session ouverte.
-#### YEP 4.3 - Fournir un script de sauvegarde YunoHost fonctionnel | validé | auto | OFFICIAL |
+#### YEP 4.3
+##### Fournir un script de sauvegarde YunoHost fonctionnel | validé | auto | OFFICIAL |
L'application doit disposer d'un script backup pour permettre aux utilisateurs de sauvegarder l'application, sa configuration et ses données.
-#### YEP 4.4 - Fournir un script de restauration YunoHost fonctionnel | validé | auto | OFFICIAL |
+#### YEP 4.4
+##### Fournir un script de restauration YunoHost fonctionnel | validé | auto | OFFICIAL |
L'application doit disposer d'un script restore pour permettre aux utilisateurs de restaurer une application sauvegardée préalablement avec le script backup.
-#### YEP 4.5 - Utiliser les hooks | validé | manuel | OPTIONAL |
+#### YEP 4.5
+##### Utiliser les hooks | validé | manuel | OPTIONAL |
YunoHost offre la possibilité de lancer des actions à chaque traitement effectué par la ligne de commande. Ceci peut être pratique dans de nombreux cas.
Exemples :
@@ -377,15 +426,18 @@ Liste des hooks :
Ces scripts sont à placer dans un répertoire `hooks` comme dans ce paquet : https://github.com/YunoHost-Apps/owncloud_ynh/tree/master/hooks .
-#### YEP 4.6 - Gèrer le multi-instance | validé | manuel | OPTIONAL |
+#### YEP 4.6
+##### Gèrer le multi-instance | validé | manuel | OPTIONAL |
Il est parfois pratique de pouvoir installer plusieurs fois une même app. Par exemple, pour plusieurs noms de domaine différents.
Il faut toutefois faire attention à la façon de gérer les chemins de fichier, les dépendances, les ports utilisés etc. de sorte qu'il n'y ait pas de collision.
-#### YEP 4.7 - Ajouter un module à la CLI | validé | manuel | OPTIONAL |
+#### YEP 4.7
+##### Ajouter un module à la CLI | validé | manuel | OPTIONAL |
Il est possible de créer un module afin d'ajouter des commandes à la ligne de commandes yunohost.
Pour ce faire, il faut ajouter un actionmaps dans `/usr/share/moulinette/actionsmap/`. Cet actionmaps doit commencer par `ynh_`.
Les paquets [menu_ynh](https://github.com/YunoHost-Apps/menu_ynh/) et [subscribe_ynh](https://github.com/YunoHost-Apps/subscribe_ynh/) bien qu’anciens (et non à jour) peuvent servir de base pour mettre en place ce genre de module.
-#### YEP 4.8 - Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL |
+#### YEP 4.8
+##### Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL |
diff --git a/packaging_apps_hooks_fr.md b/packaging_apps_hooks_fr.md
index 2ca12a7b..0ff4fd75 100644
--- a/packaging_apps_hooks_fr.md
+++ b/packaging_apps_hooks_fr.md
@@ -26,6 +26,14 @@ Après l'ajout d'un utilisateur autorisé sur une application.
Après la suppression de l'autorisation d'un utilisateur sur une application.
- `post_app_clearaccess`
Après l'effacement de toute les règles d'accès sur une application.
+- `post_app_install`
+Après l'installation d'une application
+- `post_app_upgrade`
+Après l'upgrade d'une applications
+- `post_app_remove`
+Après la supression d'une applications
+- `post_app_change_url`
+Après avoir modifié le chemin et ou le nom de domaine d'une application
- `conf_regen`
Avant et après la régénération de la configuration d'un service.
Services pris en charge par regen-conf:
@@ -84,7 +92,6 @@ password=$3 # Clear password
firstname=$4
lastname=$5
```
-
##### `post_user_delete`
```bash
@@ -105,6 +112,13 @@ ipv6=$2 # True/False Indique si l'IPV6 est activé ou non.
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).
+
+
+Example: pour `post_app_install` les variables sont les mêmes que pour le script `install`
+
##### `post_app_addaccess` et `post_app_removeaccess`
```bash
diff --git a/packaging_apps_manifest.md b/packaging_apps_manifest.md
index 62376fea..97b92b07 100644
--- a/packaging_apps_manifest.md
+++ b/packaging_apps_manifest.md
@@ -12,6 +12,7 @@ The `manifest.json` file defines the app's constants, a bunch of values that Yun
"fr": "Webmail Open Source"
},
"url": "http://roundcube.net/",
+ "version": "1.0-1",
"license": "free",
"maintainer": {
"name": "kload",
@@ -62,6 +63,8 @@ The `manifest.json` file defines the app's constants, a bunch of values that Yun
* **url**: software website.
+* **version**: version of the package builded from the upstream version number and an incremental number for each change in the package without upstream change. Example "1.0.0-7". Must be a string.
+
* **license**: application license: `free` or `non-free`. Be careful to not confuse with package license which must be put in `LICENSE` file.
* **maintainer**: informations about the app maintainer for contact.
diff --git a/packaging_apps_manifest_fr.md b/packaging_apps_manifest_fr.md
index 98b07abf..d1a4a8e0 100644
--- a/packaging_apps_manifest_fr.md
+++ b/packaging_apps_manifest_fr.md
@@ -12,6 +12,7 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb
"fr": "Webmail Open Source"
},
"url": "http://roundcube.net/",
+ "version": "1.0-1",
"license": "free",
"maintainer": {
"name": "kload",
@@ -58,9 +59,11 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb
- **packaging_format** : version de packaging du paquet. La version **1** est la version actuelle. Cette clé a été mise en place afin de faire évoluer les versions de packaging de manière décorrélée des versions de YunoHost.
-* **description** : description complète de l’application. Vous pouvez la détailler comme bon vous semble. Uniquement le champs `en` (english) est requis, vous pouvez également ajouter la traduction en français :)
+* **description** : description complète de l’application. Vous pouvez la détailler comme bon vous semble. Uniquement le champ `en` (english) est requis, vous pouvez également ajouter la traduction en français :)
-* **url**: site de l’application.
+* **url** : site web de l’application.
+
+* **version** : version du package construit à partir du numéro de version de l’application qui est installée et d'un incrément pour chaque changement du paquet sans changement de version de l'application. "Exemple: 1.0.0-7". Le champ doit être une chaîne de caractères.
* **license** : licence avec laquelle l’application est distribuée : `free`, `non-free`. Attention à ne pas confondre avec la licence du paquet qui doit être mise dans le fichier `LICENSE`.
@@ -68,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_fr) : 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`…
@@ -77,7 +80,7 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb
* **name** : identifiant du paramètre
* **type** : (optionnel) type de paramètre parmis `domain`, `path`, `user`, `app`, `boolean` et `password`. Le champ sera caché dans le cas d’un mot de passe.
* **choices** : (optionnel) restreint les réponses possibles à plusieurs choix.
- * **optional** : (optionnel) champs qui indique si ce paramètre est optionnel. Il peux avoir les valeurs `true` ou `false`.
+ * **optional** : (optionnel) champs qui indique si ce paramètre est optionnel. Il peut avoir les valeurs `true` ou `false`.
* **ask** : question posée (au minimum en anglais – `en`) que vous pouvez traduire dans plusieurs langues.
* **example** : (optionnel) valeur d’exemple pour aider l’administrateur à remplir le formulaire d’installation.
* **default** : (optionnel) valeur par défaut.
diff --git a/packaging_apps_scripts.md b/packaging_apps_scripts.md
index 17ee5194..3db089a5 100644
--- a/packaging_apps_scripts.md
+++ b/packaging_apps_scripts.md
@@ -2,60 +2,65 @@
## Scripts
-For now, a YunoHost package must contain five Shell scripts: `install`, `remove`, `upgrade`, `backup` and `restore`.
-These scripts will be executed as `admin` on the YunoHost instances.
+For now, a YunoHost package must contain five Shell scripts: `install`, `remove`, `upgrade`, `backup` and `restore`. A 6th script `change_url` can also be added optionally.
+These scripts will be executed as `root` on the YunoHost instances.
-Here is an example:
-```bash
-# Retrieve arguments
-domain=$1
-path=$2
-
-# Check domain/path availability
-sudo yunohost app checkurl $domain$path -a roundcube
-if [[ ! $? -eq 0 ]]; then
- exit 1
-fi
-
-# Generate random DES key & password
-deskey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
-db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
-
-# Use 'roundcube' as database name and user
-db_user=roundcube
-
-# Initialize database and store mysql password for upgrade
-sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../sources/SQL/mysql.initial.sql)
-sudo yunohost app setting roundcube mysqlpwd -v $db_pwd
-
-# Copy files to the right place
-final_path=/var/www/roundcube
-sudo mkdir -p $final_path
-sudo cp -a ../sources/* $final_path
-sudo cp ../conf/main.inc.php $final_path/config/
-sudo cp ../conf/db.inc.php $final_path/config/
-sudo mv $final_path/plugins/managesieve/config.inc.php.dist $final_path/plugins/managesieve/config.inc.php
-
-# Change variables in Roundcube configuration
-sudo sed -i "s/rcmail-ynhDESkeyTOchange/$deskey/g" $final_path/config/main.inc.php
-sudo sed -i "s/yunouser/$db_user/g" $final_path/config/db.inc.php
-sudo sed -i "s/yunopass/$db_pwd/g" $final_path/config/db.inc.php
-sudo sed -i "s/yunobase/$db_user/g" $final_path/config/db.inc.php
-
-# Set permissions to roundcube directory
-sudo chown -R www-data: $final_path
-
-# Modify Nginx configuration file and copy it to Nginx conf directory
-sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf
-sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf
-sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/roundcube.conf
-
-# Reload nginx and regenerate SSOwat conf
-sudo service nginx reload
-sudo yunohost app ssowatconf
-```
+Examples scripts are available in the [example app](https://github.com/YunoHost/example_ynh/tree/master/scripts)
### Usage
You have to put everything in the `install` script in order to get the app to install without issue. It means that you have to install dependencies, create required repositories, initialize potential databases, copy sources and configure everything in the single `install` script (and of course do the reverse process in the `remove` script).
-**Be careful**: for security reasons, the script is executed as the **admin** user in YunoHost. Be sure to test it as **admin** and prepend `sudo` to commands that require it.
\ No newline at end of file
+It's possible to use helpers and import function library by example from a `_common.sh` file.
+
+### Available variables for these scripts
+#### YNH_CWD
+This var contains the current working directory path of the executed script. It can be useful for find out the initial path if we have move of directory during the script execution. It is used by some helpers to be sure to use the good directory.
+
+#### YNH_APP_ID
+It contains the application's identifier without the instance's number.
+
+Example: strut
+
+#### YNH_APP_INSTANCE_NAME
+It contains the instance name which will is used in a lot of situation to manage multiple setup of the same app.
+
+Example: strut__3
+#### YNH_APP_INSTANCE_NUMBER
+It contains the instance's number. Warning, it's not the number of running instances because an old app might be deleted.
+
+Example: 3
+
+### Specific variables to use in `install`
+#### YNH_APP_ARG_XXXXXXX
+An environment variable is available for each question asked in the installation.
+
+For example, if in the manifest we have a question like this
+```
+{
+ "name": "domain",
+ "type": "domain",
+ "ask": {
+ "en": "Choose a domain for OpenSondage",
+ "fr": "Choisissez un nom de domaine pour OpenSondage",
+ "de": "Wählen Sie bitte einen Domain für OpenSondage"
+ },
+ "example": "domain.org"
+},
+```
+
+The name of the question is `domain` so in the script we can access it with YNH_APP_ARG_DOMAIN. The usage is to create a shorter name in the script like this:
+
+```
+domain=$YNH_APP_ARG_DOMAIN
+```
+
+### Variables spécifiques pour `change_url`
+#### YNH_APP_OLD_DOMAIN
+The old domain where the app was installed.
+#### YNH_APP_OLD_PATH
+The old path where the app was installed.
+#### YNH_APP_NEW_DOMAIN
+The new domain where move the app.
+#### YNH_APP_NEW_PATH
+The new path where move the app.
+
diff --git a/packaging_apps_scripts_fr.md b/packaging_apps_scripts_fr.md
index 5cb174e0..17658af1 100644
--- a/packaging_apps_scripts_fr.md
+++ b/packaging_apps_scripts_fr.md
@@ -2,60 +2,64 @@
## Les scripts
-Un paquet YunoHost doit contenir cinq scripts Shell : `install`, `remove`, `upgrade`, `backup` et `restore`.
-Ces scripts seront exécutés en tant qu’`admin` sur les serveurs YunoHost.
+Un paquet YunoHost doit contenir cinq scripts Shell : `install`, `remove`, `upgrade`, `backup` et `restore`. Un 6ème script `change_url` peut aussi être ajouté de façon optionnelle
+Ces scripts seront exécutés en tant que `root` sur les serveurs YunoHost.
-Voici un exemple de script d’`install` :
-```bash
-# Retrieve arguments
-domain=$1
-path=$2
-
-# Check domain/path availability
-sudo yunohost app checkurl $domain$path -a roundcube
-if [[ ! $? -eq 0 ]]; then
- exit 1
-fi
-
-# Generate random DES key & password
-deskey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
-db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')
-
-# Use 'roundcube' as database name and user
-db_user=roundcube
-
-# Initialize database and store mysql password for upgrade
-sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../sources/SQL/mysql.initial.sql)
-sudo yunohost app setting roundcube mysqlpwd -v $db_pwd
-
-# Copy files to the right place
-final_path=/var/www/roundcube
-sudo mkdir -p $final_path
-sudo cp -a ../sources/* $final_path
-sudo cp ../conf/main.inc.php $final_path/config/
-sudo cp ../conf/db.inc.php $final_path/config/
-sudo mv $final_path/plugins/managesieve/config.inc.php.dist $final_path/plugins/managesieve/config.inc.php
-
-# Change variables in Roundcube configuration
-sudo sed -i "s/rcmail-ynhDESkeyTOchange/$deskey/g" $final_path/config/main.inc.php
-sudo sed -i "s/yunouser/$db_user/g" $final_path/config/db.inc.php
-sudo sed -i "s/yunopass/$db_pwd/g" $final_path/config/db.inc.php
-sudo sed -i "s/yunobase/$db_user/g" $final_path/config/db.inc.php
-
-# Set permissions to roundcube directory
-sudo chown -R www-data: $final_path
-
-# Modify Nginx configuration file and copy it to Nginx conf directory
-sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf
-sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf
-sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/roundcube.conf
-
-# Reload Nginx and regenerate SSOwat conf
-sudo service nginx reload
-sudo yunohost app ssowatconf
-```
+Des exemples de ces scripts sont disponibles dans l'[application d'exemple](https://github.com/YunoHost/example_ynh/tree/master/scripts)
### Utilisation
Vous devez tout mettre dans le script d’`install` pour que votre application soit entièrement installée. Cela signifie que vous devez installer les dépendances, créer les répertoires requis, initialiser les bases de données nécessaires, copier les sources et configurer tout dans l’unique script `install` (et bien sûr faire la procédure inverse dans le script `remove`).
-**Attention** : pour des raisons de sécurité, le script est exécuté en tant qu’**admin** dans YunoHost. Assurez-vous de l’essayer en tant qu’**admin** et de préfixer `sudo` aux commandes requises.
\ No newline at end of file
+Il est possible d'utiliser des helpers et d'importer une librairie de fonction par exemple depuis un fichier `_common.sh`.
+
+### Variables disponibles pour tous ces scripts
+#### YNH_CWD
+Cette variable contient le chemin du répertoire de travail courant du contexte d'execution du script. Elle peut être utile pour retrouver le chemin initial si on s'est déplacé pendant l'execution du script. Elle est utilisée par certains helpers pour être sûr d'utiliser le bon.
+
+#### YNH_APP_ID
+Contient l'identifiant de l'application sans le numéro d'instance
+
+Exemple: strut
+#### YNH_APP_INSTANCE_NAME
+Contient le nom d'instance qui sera utilisé dans de nombreuses situation pour pouvoir gérer l'installation multiple d'une même app.
+
+Exemple: strut__3
+#### YNH_APP_INSTANCE_NUMBER
+Contient le numero de l'instance. Attention il ne s'agit pas forcément du nombre d'instance toujours installée, car une ancienne application peut avoir été désinstallée.
+
+Exemple: 3
+
+### Variables spécifiques pour `install`
+#### YNH_APP_ARG_XXXXXXX
+Pour chaque question posée dans lors de l'installation une variable d'environnement est disponible.
+
+Par exemple, si dans le manifest nous avons une question de cette forme
+```
+{
+ "name": "domain",
+ "type": "domain",
+ "ask": {
+ "en": "Choose a domain for OpenSondage",
+ "fr": "Choisissez un nom de domaine pour OpenSondage",
+ "de": "Wählen Sie bitte einen Domain für OpenSondage"
+ },
+ "example": "domain.org"
+},
+```
+
+Le nom de la question `domain` donc dans le script on peut accéder à cette variable via $YNH_APP_ARG_DOMAIN. L'usage est de créer une variable plus courte comme ceci:
+
+```
+domain=$YNH_APP_ARG_DOMAIN
+```
+
+### Variables spécifiques pour `change_url`
+#### YNH_APP_OLD_DOMAIN
+L'ancien domaine où était installée l'app.
+#### YNH_APP_OLD_PATH
+L'ancien chemin où était installée l'app;
+#### YNH_APP_NEW_DOMAIN
+Le nouveau domaine où doit être installée l'app.
+#### YNH_APP_NEW_PATH
+Le nouveau chemin où doit être installée l'app.
+
diff --git a/port_forwarding.md b/port_forwarding.md
new file mode 100644
index 00000000..c24f5542
--- /dev/null
+++ b/port_forwarding.md
@@ -0,0 +1,6 @@
+# Port forwarding
+
+The sketch below tries to briefly summarize the role and necessity of port
+forwarding when setting up a server at home.
+
+

diff --git a/port_forwarding_fr.md b/port_forwarding_fr.md
new file mode 100644
index 00000000..1793b27b
--- /dev/null
+++ b/port_forwarding_fr.md
@@ -0,0 +1,6 @@
+# Redirection de ports
+
+Le schéma ci-dessous tente d'expliquer brièvement le rôle de la redirection des
+ports lors de la mise en place d'un serveur à la maison.
+
+

diff --git a/postinstall.md b/postinstall.md
index cb8ddfb6..35246f63 100644
--- a/postinstall.md
+++ b/postinstall.md
@@ -4,7 +4,7 @@ The step called "**post-installation**" is actually the initial configuration of
## Access
-You can access it graphically by entering your **server's local IP** address in a **web browser** (e.g. `http://192.168.1.7`).
+You can access it graphically by entering your **server's local IP** address in a **web browser** (e.g. `http://192.168.1.7`; you'll get this from the client table on your router's admin page).

@@ -26,7 +26,7 @@ Or by running `yunohost tools postinstall` in command-line.
This is the first domain name linked to your YunoHost server, but also the one which will be used by your server's users to access the **authentication portal**. It will thus be **visible by everyone**, choose it wisely.
-* If you do not have a domain name, or if you want to use the YunoHost's DynDNS service, choose a sub-domain of **.nohost.me** or **.noho.st** (i.e. `homersimpson.nohost.me`). The domain will be configured automatically and you won't need any further configuration step.
+* If you do not have a domain name, or if you want to use the YunoHost's DynDNS service, choose a sub-domain of **.nohost.me** or **.noho.st** (e.g. `homersimpson.nohost.me`). The domain will be configured automatically and you won't need any further configuration step.
* If you do know what **DNS** is, you probably want to configure your own domain name here. In this case, please refer to the [DNS page](/dns) page for more informations.
@@ -40,16 +40,22 @@ This password will be used to access to your server's [administration interface]
---
-## Troubleshooting
+## Congratz!
-### Secured connection fails after **post-installation**
+If you got so far and saw 'YunoHost has been successfully installed' (web
+postinstall) or 'YunoHost has been correctly configured', then congratulations!
-If you're using your own domain and depending on your browser, you might be stuck out of your Yunohost installation until you deploy an appropriate certificate. Thanks to Yunohost and [Let's Encrypt](https://letsencrypt.org/), this proves to be quite easy: just run `yunohost domain cert-install` in command-line to issue and install your certificate and _Voilà_. Refresh your browser and you're good to go.
+### What now ?
----
+- If you're self-hosting at home and without a VPN, you need to [make sure to
+ correctly forward ports on your router/Internet box](isp_box_config) ;
+- If you're using your own domain name (i.e. not a .nohost.me / .noho.st), you
+ need to [configure it according to the recommended DNS
+ configuration](dns_config) ;
+- If you cannot configure your domain name yet (because you didn't register it
+ yet, or because this is a test domain), see last paragraph
+ [here](dns_local_network) for a workaround ;
+- Don't be too afraid of the [certificate warning](certificate), you'll probably
+ be able to install a Let's Encrypt certificate :).
+- Have a look at [the available apps](apps) !
-## And after ?
-
-Once the post-installation finished, check if you can access to your server with your web-browser. If it is not the case, a few more configuration steps may be required.
-
-Do not hesitate to come on our [support chatroom](/support) if you need help.
diff --git a/postinstall_fr.md b/postinstall_fr.md
index 9709e4e2..e8532ad2 100644
--- a/postinstall_fr.md
+++ b/postinstall_fr.md
@@ -46,16 +46,24 @@ De manière générale, c’est la **clé d’entrée à votre système**, pense
---
-## En cas de problème
+## Félicitations !
-### Échec de la connection sécurisée après la **post-installation**
+Si vous arrivez ici après avoir vu "YunoHost a été installé avec succès" depuis
+votre navigateur ou la ligne de commande, alors félicitations !
-Si vous utilisez votre propre domaine et selon votre navigateur, vous pourriez vous retrouver bloqué à l'entrée de votre Yunohost tant que vous n'avez pas déployé un certificat valide. Grâce à Yunohost et [Let's Encrypt](https://letsencrypt.org/), c'est plutôt simple : exécutez simplement `yunohost domain cert-install` en ligne de commande pour émettre et installer votre certificat et _Voilà_. Rafraichissez votre navigateur et vous êtes paré.
+### Et maintenant ?
----
+- Si vous vous auto-hébergez à la maison et sans VPN, il vous faut vous assurer
+ de bien [rediriger les ports de votre box internet](isp_box_config_fr) ;
+- Si vous utilisez votre propre nom de domaine (i.e. pas un nohost.me /
+ noho.st), il vous faut [configurer le nom de domaine d'après la configuration
+ recommandée](dns_config_fr) ;
+- 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) ;
+- Ne soyez pas trop effrayé par [l'avertissement à propos du
+ certificat](certificate_fr), vous aurez probablement la possibilité
+ d'installer un certificat Let's Encrypt :).
+- Jetez un oeil aux [applications disponibles](apps_fr) !
-## Et après ?
-
-Une fois l’étape de post-installation exécutée, vérifiez que votre serveur est accessible en tapant le nom de domaine choisi précédemment dans votre navigateur web. Si celui-ci n’est pas accessible, quelques étapes de configurations supplémentaires sont sûrement nécessaires.
-
-Rendez-nous visite sur le [salon de support](/support_fr) si vous avez besoin d’aide.
diff --git a/regenerate_certificate.md b/regenerate_certificate.md
deleted file mode 100644
index 44577685..00000000
--- a/regenerate_certificate.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Regenerate certificate
-
-If you want to generate again -- not renewing -- a certificate for a domain, you can follow those steps:
-
-(replace **example.org** with your domain)
-
-```bash
-# Save YunoHost's SSL directory location for readability
-ssldir=/usr/share/yunohost/yunohost-config/ssl/yunoCA
-
-# Save the final SSL path (do not forget to change your domain)
-finalpath=/etc/yunohost/certs/example.org
-
-# Save the serial number of the new certificate
-serial=$(cat "$ssldir/serial")
-
-# Backup current certificates for your domain
-cp -a $finalpath $finalpath.back
-
-# Remove certs and configuration file in it
-rm $finalpath/{crt.pem,key.pem,openssl.cnf}
-
-# Copy openSSL's configuration file
-cp $ssldir/openssl.cnf $finalpath/
-
-# Change yunohost.org with your domain in the configuration
-# DO NOT FORGET TO REPLACE example.org !
-sed -i "s/yunohost.org/example.org/g" $finalpath/openssl.cnf
-
-# Generate certificate and key
-openssl req -new -config $finalpath/openssl.cnf -days 3650 -out $ssldir/certs/yunohost_csr.pem -keyout $ssldir/certs/yunohost_key.pem -nodes -batch
-
-# Sign certificate with your server's CA
-openssl ca -config $finalpath/openssl.cnf -days 3650 -in $ssldir/certs/yunohost_csr.pem -out $ssldir/certs/yunohost_crt.pem -batch
-
-# Copy certificate and key to the right place
-cp $ssldir/newcerts/$serial.pem $finalpath/crt.pem
-cp $ssldir/certs/yunohost_key.pem $finalpath/key.pem
-
-# Fix permissions
-chmod 755 $finalpath
-chmod 640 $finalpath/key.pem $finalpath/crt.pem
-chmod 600 $finalpath/openssl.cnf
-
-# Allow metronome to access those certificates
-chown root:metronome $finalpath/key.pem $finalpath/crt.pem
-```
\ No newline at end of file
diff --git a/regenerate_certificate_fr.md b/regenerate_certificate_fr.md
deleted file mode 100644
index 7243dec7..00000000
--- a/regenerate_certificate_fr.md
+++ /dev/null
@@ -1,47 +0,0 @@
-#Régénérer un certificat
-
-Si vous désirez générer à nouveau — et non renouveler — un certificat pour un domain, suivre les étapes suivantes :
-
-(remplacer **example.org** avec votre domaine)
-
-```bash
-# Sauvegarde du répertoire SSL de YunoHost, pour la lisibilité
-ssldir=/usr/share/yunohost/yunohost-config/ssl/yunoCA
-
-# Sauvegarde du chemin final SSL (ne pas oublier de modifier avec votre domaine)
-finalpath=/etc/yunohost/certs/example.org
-
-# Sauvegarde du numéro de série du nouveau certificat
-serial=$(cat "$ssldir/serial")
-
-# Sauvegarde du certificat actuel du domaine
-cp -a $finalpath $finalpath.back
-
-# Suppression des certificats et des fichiers de configuration
-rm $finalpath/{crt.pem,key.pem,openssl.cnf}
-
-# Copie du fichier de configuration d’openSSL
-cp $ssldir/openssl.cnf $finalpath/
-
-# Changement de la configuration yunohost.org avec votre domaine
-# NE PAS OUBLIER DE REMPLACER example.org !
-sed -i "s/yunohost.org/example.org/g" $finalpath/openssl.cnf
-
-# Generation du certificat et de la clé
-openssl req -new -config $finalpath/openssl.cnf -days 3650 -out $ssldir/certs/yunohost_csr.pem -keyout $ssldir/certs/yunohost_key.pem -nodes -batch
-
-# Signature du certificat avec le CA du serveur
-openssl ca -config $finalpath/openssl.cnf -days 3650 -in $ssldir/certs/yunohost_csr.pem -out $ssldir/certs/yunohost_crt.pem -batch
-
-# Copie du certificat et de la clé au bon endroit
-cp $ssldir/newcerts/$serial.pem $finalpath/crt.pem
-cp $ssldir/certs/yunohost_key.pem $finalpath/key.pem
-
-# Réparation des permissions
-chmod 755 $finalpath
-chmod 640 $finalpath/key.pem $finalpath/crt.pem
-chmod 600 $finalpath/openssl.cnf
-
-# Autoriser metronome à accéder aux certificats
-chown root:metronome $finalpath/key.pem $finalpath/crt.pem
-```
\ No newline at end of file
diff --git a/roadmap.md b/roadmap.md
deleted file mode 100644
index ec5f92df..00000000
--- a/roadmap.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Roadmap
-
-
2.0 2.2 Roadmap
-
-## v2.4
-Core:
-* ✔ Helpers for app maintainer *(ju, opi, jerome)*
-* ✔ Install script refactored *(ju)*
-* ✔ Use templates to (re)generate configurations instead of packages *(kload, beudbeud, jerome)*
-* ✔ Complete and improve backup and restore system *(jerome, ljf)*
-* Logging bug on SSOwat when no HTTP referer is sent
-* Add tools in moulinette to manage certificate (add, remove, update), Let’s Encrypt *(ljf, Moul)*
-* Run automatic tests on moulinette *(kload)*
-* Add proper upgrade/remove scripts and comment Debian scripts in packages *(beudbeud)*
-* Replace amavis by rspamd *(jerome)*
-
-Web interface:
-* ✔ Use Gulp for administration and user web interfaces *(opi)*
-* User avatar *(opi)*
-* Plugin system for the admin panel *(ljf)*
-
-Applications:
-* ✔ New way to [manage apps list](http://github.com/YunoHost/apps)
-
-Other:
-* ✔ Add licenses on YunoHost repositories *(Moul)*
\ No newline at end of file
diff --git a/security.md b/security.md
index f571914f..c11c7857 100644
--- a/security.md
+++ b/security.md
@@ -8,7 +8,7 @@ Two things remain important to note:
* The fact that YunoHost is a well-spread software increase chances to face an attack. If a flaw is discovered, it could potentially affect all the YunoHost instances at once. Keep your system **up-to-date** to remain safe.
-*If you need some advises, do not hesitate to [ask us](/support).*
+*If you need some advices, do not hesitate to [ask us](/help).*
*To talk about security flaws, contact the [YunoHost security team](/security_team).*
diff --git a/security_fr.md b/security_fr.md
index bc0d00da..91d0c980 100644
--- a/security_fr.md
+++ b/security_fr.md
@@ -5,13 +5,13 @@ YunoHost a été développé dans l’optique de fournir une sécurité maximale
Tous les protocoles que YunoHost utilise sont **chiffrés**, les mots de passe ne sont pas stockés en clair, et par défaut chaque utilisateur n’accède qu’à son répertoire personnel.
-Deux points sont néanmoins importants à noter :
+Deux points sont néanmoins importants à noter :
* L’installation d’applications supplémentaires **augmente le nombre de failles** potentielles. Il est donc conseillé de se renseigner sur chacune d’elle **avant l’installation**, d’en comprendre le fonctionnement et juger ainsi l’impact que provoquerait une potentielle attaque. N’installez **que** les applications qui semblent importantes pour votre usage.
* 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](/support_fr).*
+*Si vous avez besoin de conseil, n’hésitez pas à [nous demander](/help_fr).*
*Pour discuter d'une faille de securité, contactez l'[équipe securité de YunoHost](/security_team_fr).*
@@ -21,7 +21,7 @@ Deux points sont néanmoins importants à noter :
Si votre serveur YunoHost est dans un environnement de production critique ou que vous souhaitez améliorer sa sécurité, il est bon de suivre quelques bonnes pratiques.
-**Attention :** *l’application des conseils suivants nécessite une connaissance avancée du fonctionnement et de l’administration d’un serveur. Pensez à vous renseigner avant de procéder à cette mise en place.*
+**Attention :** *l’application des conseils suivants nécessite une connaissance avancée du fonctionnement et de l’administration d’un serveur. Pensez à vous renseigner avant de procéder à cette mise en place.*
### Authentification SSH par clé
@@ -29,17 +29,19 @@ Voici un [tutoriel plus détaillé](http://doc.ubuntu-fr.org/ssh#authentificatio
Par défaut, l’authentification SSH se fait avec le mot de passe d’administration. Il est conseillé de désactiver ce type d’authentification et de le remplacer par un mécanisme de clé de chiffrement.
-**Sur votre ordinateur de bureau :**
+**Sur votre ordinateur de bureau :**
```bash
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub
```
+
+Si vous êtes sur Ubuntu 16.04 vous devez faire `ssh-add` pour initialiser l'agent ssh
+
Entrez le mot de passe d’administration et votre clé publique devrait être copiée sur votre serveur.
**Sur votre serveur**, éditez le fichier de configuration SSH, pour désactiver l’authentification par mot de passe.
-
```bash
nano /etc/ssh/sshd_config
@@ -60,7 +62,7 @@ Pour éviter des tentatives de connexion SSH par des robots qui scannent tout In
```bash
nano /etc/ssh/sshd_config
-# Recherchez la ligne « Port » et remplacez le numéro du port (par défaut 22) par un autre numéro non utilisé
+# Recherchez la ligne « Port » et remplacez le numéro du port (par défaut 22) par un autre numéro non utilisé
Port 22 # à remplacer par exemple par 9777
```
@@ -70,13 +72,13 @@ Ensuite redémarrez le firewall iptables et fermez l’ancien port dans iptables
```bash
yunohost firewall reload
-yunohost firewall disallow # port par défaut 22
+yunohost firewall disallow TCP # port par défaut 22
yunohost firewall disallow --ipv6 TCP # pour ipv6
```
**Pour les prochaines connexions SSH** il faudra ajouter l’option -p suivie du numéro de port SSH.
-**Exemple** :
+**Exemple** :
```bash
ssh -p admin@
@@ -107,7 +109,7 @@ sudo adduser nom_utilisateur sudo
```bash
sudo nano /etc/ssh/sshd_config
-# Recherchez le paragraphe « Authentication » et ajoutez à la fin de celui-ci :
+# Recherchez le paragraphe « Authentication » et ajoutez à la fin de celui-ci :
AllowUsers nom_utilisateur
```
Seuls les utilisateurs mentionnés dans la directive AllowUsers seront alors autorisés à se connecter via SSH, ce qui exclut donc l’utilisateur admin.
@@ -126,7 +128,7 @@ sudo service yunohost-api stop
### Tests d’intrusion de YunoHost
-Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur une instance de YunoHost 2.4 :
+Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur une instance de YunoHost 2.4 :
- [1) Préparation](https://exadot.fr/2016/07/03/pentest-dune-instance-yunohost-1-preparation)
- [2) Le fonctionnement](https://exadot.fr/2016/07/12/pentest-dune-instance-yunohost-2-le-fonctionnement)
diff --git a/sitemap.md b/sitemap.md
index 385788d4..8bedd325 100644
--- a/sitemap.md
+++ b/sitemap.md
@@ -42,8 +42,7 @@
* [Internet service provider](/isp)
* [Generic configuration of the ISP router](/isp_box_config)
* Applications
- * [Official applications](/apps_en)
- * [Non-official applications](/apps_in_progress_en)
+ * [Applications](/apps_en)
* [Update applications](app_update_en)
* Administration
* Command-line
@@ -70,17 +69,7 @@
* [User interface](user_interface)
* [Configure email client](email_configure_client_en)
* [Instant messaging usage](/XMPP)
- * [Official applications](/apps)
- * [Baikal](/app_baikal_en)
- * [Firefox Sync](/app_ffsync_en)
- * [Tiny Tiny RSS](/app_ttrss_en)
- * [Transmission](/app_transmission_en)
- * [Radicale](/app_radicale)
- * [RoundCube](/app_roundcube_en)
- * [Minidlna](app_minidlna_en)
- * [Wallabag v2](/app_wallabag2)
- * [Community applications](/apps_in_progress_en)
- * [LimeSurvey](/app_limesurvey_en)
+ * [Applications](/apps)
* [Contributor guide](/contribute)
* Developement
@@ -96,7 +85,6 @@
* [Trap usage](packaging_apps_trap_fr)
* [Applications levels](packaging_apps_levels_fr)
* [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr)
- * [Applications in progress](/apps_in_progress_en)
* [Wishlist of applications](/apps_wishlist_en)
* [Contributing to the YunoHost core](/dev)
* [Creation of system packages](/build_system_en)
@@ -114,10 +102,9 @@
* [Frequently asked questions](/faq_en)
* [Contributors](contribs)
- [Project organization](project_organization)
- * [Support](/support_en)
* [Art Works](artworks_en)
* [Blog](https://forum.yunohost.org/c/announcement)
- [Forum](https://forum.yunohost.org)
- [Chat rooms](chat_rooms_en)
* [Communication](communication_en)
- * [Help](/help)
+ * [Support / Help](/help)
diff --git a/sitemap_fr.md b/sitemap_fr.md
index 165ca0c1..bc2f6b43 100644
--- a/sitemap_fr.md
+++ b/sitemap_fr.md
@@ -49,7 +49,6 @@
* [Orange](/isp_orange_fr)
* Applications
* [Applications officielles](/apps_fr)
- * [Applications non officielles](/apps_in_progress_en)
* [Mise à jour des applications](app_update_fr)
* Administration
* En ligne de commande
@@ -78,19 +77,7 @@
* [Interface utilisateur](user_interface)
* [Configurer un client email](email_configure_client_fr)
* [Utiliser la messagerie instantanée XMPP](/XMPP_fr)
- * [Applications officielles](/apps_fr)
- * [Baïkal](/app_baikal_fr)
- * [Firefox Sync](/app_ffsync_fr)
- * [Jappix](/app_jappix_fr)
- * [Nextcloud](app_nextcloud_fr)
- * [Tiny Tiny RSS](/app_ttrss_fr)
- * [Transmission](/app_transmission_fr)
- * [Radicale](/app_radicale_fr)
- * [RoundCube](/app_roundcube_fr)
- * [Minidlna](app_minidlna_fr)
- * [Wallabag v2](/app_wallabag2_fr)
- * [Applications communautaires](/apps_in_progress_fr)
- * [LimeSurvey](/app_limesurvey_fr)
+ * [Applications](/apps_fr)
* [Guide du contributeur](/contribute_fr)
* Développement
@@ -110,7 +97,6 @@
* [Usage de trap](packaging_apps_trap_fr)
* [Niveaux des applications](packaging_apps_levels_fr)
* [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr)
- * [Packages d’applications en cours de développement](/apps_in_progress_fr)
* [Liste de proposition d’applications](/apps_wishlist_fr)
* [Contribuer au cœur de YunoHost](/dev_fr)
* [Création de paquets système](/build_system_fr)
@@ -128,11 +114,10 @@
* [Foire aux questions](/faq_fr)
- [Organisation du projet](project_organization_fr)
* [Contributeurs](contribs_fr)
- * [Entraide - support](/support_fr)
* [Blog](https://forum.yunohost.org/c/announcement)
- [Forum](https://forum.yunohost.org)
- [Salons de discussions](chat_rooms_fr)
* [Conférences](/conf_fr)
* [Communication extérieure](communication_fr)
* [Travail artistique](artworks_fr)
- * [Aide](/help_fr)
+ * [Support / Aide](/help_fr)
diff --git a/ssh_fr.md b/ssh_fr.md
index 122ec553..17e9d9b2 100644
--- a/ssh_fr.md
+++ b/ssh_fr.md
@@ -2,7 +2,7 @@
## Qu’est-ce que SSH ?
-**SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base sur Linux et Mac OS / OSX. Sous Windows, maleureusement il vous faudra utiliser le logiciel [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty).
+**SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base sur Linux et Mac OS / OSX. Sous Windows, malheureusement il vous faudra utiliser le logiciel [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty).
## Pendant l’installation de YunoHost
diff --git a/support.md b/support.md
deleted file mode 100644
index 57a7003d..00000000
--- a/support.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Support
-
-The YunoHost support is provided by the community members.
-
-* The **best and fastest** way to get answers remains the community chatroom, accessible on the bottom-right corner of this page, or via an XMPP compatible instant messaging client (like [Pidgin](https://pidgin.im)), at the following address:
-
- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
-
----
-
-* You may also want to visit the **discussion forum**:
-
- **[forum.yunohost.org](https://forum.yunohost.org/)**
-
----
-
-* However, if you want to write specificaly to the YunoHost team, do not hesitate to send us an email. Please note that **we do not provide any support by email**.
-
- **[yunohost@yunohost.org](mailto:yunohost@yunohost.org)**
diff --git a/support_fr.md b/support_fr.md
deleted file mode 100644
index ea1b6003..00000000
--- a/support_fr.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Support - Entraide
-
-L’entraide autour de YunoHost est assurée par la communauté.
-
-* Le moyen le plus **efficace et rapide** d’obtenir des réponses reste le salon de discussion instantané, accessible en bas à droite de cette page, ou via n’importe quel client de messagerie **compatible XMPP** (tel que [Pidgin](https://pidgin.im)) à l’adresse suivante :
-
- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
-
----
-
-* Vous pouvez également vous renseigner et poser vos questions sur **le forum** (en anglais de préférence) :
-
- **[forum.yunohost.org](https://forum.yunohost.org/)**
-
----
-
-* Enfin, si vous souhaitez vous adresser spécifiquement à l’équipe YunoHost, n’hésitez pas à nous envoyer un mail. **Attention, nous n’assurons aucun support par email**.
-
- **[yunohost@yunohost.org](mailto:yunohost@yunohost.org)**
diff --git a/troubleshooting_guide.md b/troubleshooting_guide.md
index c6ada8fc..f3179ba4 100644
--- a/troubleshooting_guide.md
+++ b/troubleshooting_guide.md
@@ -15,15 +15,15 @@ Keep in mind that when you install an app, you execute code on your server with
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.
### Check the official documentation
-Answer to your question may be already in [the documentatioon](https://yunohost.org/#/sitemap_en).
+Answer to your question may be already in [the documentation](https://yunohost.org/#/sitemap_en).
### Check the command line help
Learn how to use the [YunoHost commands](https://yunohost.org/#/moulinette_en) like a pro.
## Upgrade
-Problems oftenly occurs 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](https://yunohost.org/#/app_update_en).
-**Check if some processes are using old librairies**
+**Check if some processes are using old libraries**
You are probably familiar with:
```bash
diff --git a/troubleshooting_guide_fr.md b/troubleshooting_guide_fr.md
index def18ea2..fcd7456d 100644
--- a/troubleshooting_guide_fr.md
+++ b/troubleshooting_guide_fr.md
@@ -232,7 +232,7 @@ Toutes les erreurs liées aux applications installées sur ce domaine, il se peu
## 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 YunHost pour pouvoir simplement changer entre les applications.
+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 changer entre les applications.
### Configuration
Vous pouvez regarder le fichier de configuration SSOwat dans le fichier :
diff --git a/userdoc.md b/userdoc.md
index a69a2602..06e3826b 100644
--- a/userdoc.md
+++ b/userdoc.md
@@ -4,13 +4,4 @@
* [User interface](user_interface)
* [Configure an email client](/email)
* [Instant messaging usage](/XMPP)
-* [Official applications](/apps)
- * [Baikal](/app_baikal_en)
- * [Firefox Sync](/app_ffsync_en)
- * [Tiny Tiny RSS](/app_ttrss_en)
- * [Transmission](/app_transmission_en)
- * [Radicale](/app_radicale)
- * [RoundCube](/app_roundcube_en)
- * [Wallabag v2](/app_wallabag2)
-* [Community applications](/apps_in_progress_en)
- * [LimeSurvey](/app_limesurvey_en)
+* [Applications](/apps)
diff --git a/userdoc_fr.md b/userdoc_fr.md
index ab9546f9..469504c9 100644
--- a/userdoc_fr.md
+++ b/userdoc_fr.md
@@ -3,13 +3,4 @@
* [L’interface utilisateur](user_interface)
* [La messagerie électronique (email)](/email_fr)
* [La messagerie instantanée et les réseaux sociaux XMPP](/XMPP_fr)
-* [Les applications officielles](/apps_fr)
- * [Firefox Sync](/app_ffsync_fr)
- * [Jappix](/app_jappix_fr)
- * [Tiny Tiny RSS](/app_ttrss_fr)
- * [Transmission](/app_transmission_fr)
- * [Radicale](/app_radicale_fr)
- * [RoundCube](/app_roundcube_fr)
- * [Wallabag v2](/app_wallabag2_fr)
-* [Applications communautaires](/apps_in_progress_fr)
- * [LimeSurvey](/app_limesurvey_fr)
+* [Les applications](/apps_fr)
diff --git a/vagrant.md b/vagrant.md
index 4d85d128..8e983cd1 100644
--- a/vagrant.md
+++ b/vagrant.md
@@ -47,7 +47,7 @@ vagrant ssh
Upgrade the system
```bash
-sudo apt-get update && sudo apt-get upgrade
+sudo apt-get update && sudo apt-get dist-upgrade
```
You can access to your vm with the ip 192.168.33.10
diff --git a/vagrant_fr.md b/vagrant_fr.md
index 2878e347..f93ac3b4 100644
--- a/vagrant_fr.md
+++ b/vagrant_fr.md
@@ -48,7 +48,7 @@ vagrant ssh
Mettre à jour le système.
```bash
-sudo apt-get update && sudo apt-get upgrade
+sudo apt-get update && sudo apt-get dist-upgrade
```
Vous pouvez accéder à votre vm via l’ip 192.168.33.10.
diff --git a/whatsyunohost_fr.md b/whatsyunohost_fr.md
index 89dee539..e15d2430 100644
--- a/whatsyunohost_fr.md
+++ b/whatsyunohost_fr.md
@@ -13,7 +13,7 @@ Il est basé et reste totalement compatible avec [Debian GNU/Linux](https://debi
- multi-domaines
- un système d’emails
- un serveur de messagerie instantanée
-- un système d’authentifaction unique (SSO)
+- un système d’authentification unique (SSO)
- un système d’applications
- un système de backup
- un système de régénération de configuration des services