Merge branch 'master' into enh-consensual-yep

This commit is contained in:
Maniack Crudelis 2017-01-12 19:07:04 +01:00 committed by GitHub
commit bc3a5b3a0f
54 changed files with 1109 additions and 207 deletions

View file

@ -1,8 +1,7 @@
# YunoHost Documentation
* [Web Site](https://yunohost.org/#/)
* Based on [Simone](https://github.com/Kloadut/Simone)
* [Web Site](https://yunohost.org)
* Based on [Simone](https://github.com/YunoHost/Simone)
Please report issues here (no registration needed):
https://dev.yunohost.org/projects/yunohost/issues
Please report [issues on YunoHost bugtracker](https://dev.yunohost.org/projects/yunohost/issues) (no registration needed).

42
admin_api_fr Normal file
View file

@ -0,0 +1,42 @@
# Administration depuis l'API ou une application externe
Toutes les actions executables en ligne de commande le sont également via une API.
L'API utilise l'adresse https://VOTRESERVEUR/yunohost/api et toutes les actions sont détaillées sur cette page.
Il faut d'abord récupérer un cookie de login pour ensuite réaliser les actions. Voici un exemple via curl :
```bash
Login (avec mot de passe admin): curl -k -d “password=XXX” dump-header headers https://VOTRESERVEUR/yunohost/api/login
GET: curl -k -i -H “Accept: application/json” -H “Content-Type: application/json” -L -b headers -X GET https://VOTRESERVEUR/yunohost/api/ROUTE | grep }| python -mjson.tool
```
Pour simplifier l'administration à distance d'une instance YunoHost dans le cadre d'un projet CHATON, des classes API ont été développées par des utilisateurs.
Par exemple, cette classe PHP vous permettra d'administrer votre instance YunoHost depuis une application PHP (site web, outil de provisioning, …).
Voici un exemple de code PHP permettant d'ajouter un utilisateur dans votre instance YunoHost :
```bash
require("ynh_api.class.php");
$ynh = new YNH_API("YunoHost server IP or hostname", "admin password");
if ($ynh->login()) {
$domains = $ynh->get("/domains");
$first_domain = $domains['domains'][0];
$arguments = array(
'username' => 'test',
'password' => 'yunohost',
'firstname' => 'Firstname',
'lastname' => 'Lastname',
'mail' => 'test@'.$first_domain,
'mailbox_quota' => '500M'
);
$user_add = $ynh->post("/users", $arguments);
print_r($user_add);
} else {
print("Login to YunoHost failed.\n");
exit;
}
```

View file

@ -2,9 +2,14 @@
*For want of anything better, here is an index of interesting pages for the YunoHost server's administrator.*
* [What is Self-hosting](/self-hosting)
* [Installation guide](/install)
* [What is Self-hosting](/selfhosting)
* [Compatible hardware](/hardware)
* [Installation guide](/install)
* [On ARM board](/install_on_arm_board)
* [On Raspberry Pi](/install_on_raspberry)
* [From the ISO image](/install_iso)
* [On Debian](/install_on_debian)
* [On VirtualBox](/install_on_virtualbox)
* [Available applications](/apps)
* [Administration interface usage](/admin)
* [Command-line interface usage](/moulinette)

View file

@ -40,6 +40,7 @@
* [Orange](/isp_orange_fr)
* [Free](/isp_free_fr)
* [Administration web](/admin_fr)
* [Administration via l'API](/admin_api_fr)
* [Sécurité](/security_fr)
* [Authentification SSH par clé](/security_fr)
* [Modifier le port SSH](/security_fr)

View file

@ -5,11 +5,11 @@ Firefox Sync permits synchronize plugins, tabs, bookmarks, favorites, history ov
#### Firefox desktop
In Firefox URL bar put: `about:config`.
Search for: `services.sync.tokenServerURI`.
Search for: `identity.sync.tokenserver.uri`.
Replace the URL by: https://mydomain.tld/path/token/1.0/sync/1.5
Create an account at Mozilla: https://accounts.firefox.com/signup
#### Firefox mobile
Install the plugin `fxa-custom-server-addon`.
With the last version of firefox mobile it's same than for desktop.

View file

@ -7,11 +7,11 @@ Configurer Firefox pour utiliser votre serveur pour la synchronisation.
#### Firefox bureau
Tapez `about:config` dans la barre dURL.
Recherchez : `services.sync.tokenServerURI`.
Recherchez : `identity.sync.tokenserver.uri`.
Remplacez lURL par la vôtre : https://mondomaine.tld/adresse/token/1.0/sync/1.5
Créez un compte chez Mozilla : https://accounts.firefox.com/signup
#### Firefox mobile
Installez le plugin `fxa-custon-server-addon`.
Avec la dernière version de firefox mobile c'est identique que firefox pour le bureau.

View file

@ -31,7 +31,7 @@ Nhésitez pas à vous créer un compte GitHub pour faire part de vos remarque
</div>
<h2>Applications dites fonctionnelles</h2>
<p><b style="color: red">Remarque : c'est le mainteneur de l'application qui la décrit comme fonctionnelle, pas l'équipe de YunoHost. Installez la à vos risques et péril. Nous ne fournirrons pas de support dessus.</b></p>
<p><b style="color: red">Remarque : c'est le mainteneur de l'application qui la décrit comme fonctionnelle, pas l'équipe de YunoHost. Installez la à vos risques et péril et soyez conscient que ne fournirons aucune assistance dessus.</b></p>
<div class="panel-group" id="app-accordion2-working"></div>

View file

@ -8,7 +8,9 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [List of awesome selfhosted apps](https://github.com/Kickball/awesome-selfhosted)
- [List of awesome sysadmin apps](https://github.com/kahun/awesome-sysadmin)
- [List of awesome Node.js projects](https://github.com/sqreen/awesome-nodejs-projects)
- [10er10](https://github.com/dready92/10er10)
- [Airtime](https://www.sourcefabric.org/en/airtime/)
- [Ajenti](http://ajenti.org)
- [Autoblog](https://github.com/mitsukarenai/Projet-Autoblog)
- [Auth0 SSO Dashboard](https://github.com/auth0/auth0-sso-dashboard)
@ -31,12 +33,13 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Deluge](http://deluge-torrent.org) (with WebUI)
- [DemocracyOS](http://democracyos.org)
- [Discourse](http://discourse.org)
- [DNSchain](https://github.com/okTurtles/dnschain)
- [Emby](https://emby.media)
- [ERPnext](https://erpnext.com/download)
- [Ethersheet](https://ethersheet.org)
- [Fail2web](https://github.com/Sean-Der/fail2web)
- [Ferment](https://github.com/mmckegg/ferment)
- [FileTea](https://filetea.me)
- [Flarum](http://flarum.org)
- [Fossil](http://www.fossil-scm.org)
- [GetSimple CMS](http://get-simple.info)
- [Git-annex](http://git-annex.branchable.com)
@ -48,7 +51,6 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Guacamole](http://guac-dev.org)
- [h5ai](http://larsjung.de/h5ai)
- [Hackpad](https://github.com/dropbox/hackpad)
- [Hastebin](https://github.com/seejohnrun/haste-server)
- [Headphones](https://github.com/rembo10/headphones)
- [Hi Buddy](http://hibuddy.monkeypatch.me)
- [Huginn](https://github.com/cantino/huginn)
@ -68,8 +70,10 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Known](https://withknown.com)
- [Koel](http://koel.phanan.net)
- [Kontalk](http://kontalk.org)
- [Koozip](http://koozic.net)
- [KrISS feed](https://github.com/tontof/kriss_feed)
- [Kune](https://en.wikipedia.org/wiki/Kune_%28software%29)
- [LiquidSoap](http://savonet.sourceforge.net/)
- [Logstalgia](http://logstalgia.io)
- [Loomio](https://www.loomio.org)
- [The Lounge](https://thelounge.github.io), cf. https://github.com/Kloadut/shout_ynh/issues/4
@ -77,6 +81,7 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Lufi](https://git.framasoft.org/luc/lufi)
- [MaidSafe](http://maidsafe.net)
- [Mailpile](https://www.mailpile.is)
- [Matrix](https://matrix.org) [Synapse](https://github.com/matrix-org/synapse)
- [MatterMost](https://github.com/mattermost/platform)
- [MediaCrush](https://imgrush.com)
- [MinigalNano](https://github.com/sebsauvage/MinigalNano)
@ -86,6 +91,7 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [MPD](http://www.musicpd.org)
- [NetData](https://github.com/firehol/netdata)
- [Nibbleblog](http://www.nibbleblog.com)
- [NodeBB](https://nodebb.org)
- [Only Office](http://onlyoffice.org)
- [OpenBazaar](https://openbazaar.org)
- [OpenJabNab](https://github.com/OpenJabNab/OpenJabNab)

BIN
architecture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

1
architecture.xml Normal file
View file

@ -0,0 +1 @@
<mxfile userAgent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36" version="6.0.2.6" editor="www.draw.io" type="device"><diagram name="Page-1">7Vxbc5s4FP41nmkfmgEkYXjMpel2p931rHenzSMB2WaLkQu4ifvrV4DAumETRyR4p+lMxzpcLL7z6dx08ARcrx8/ZMFm9ZlEOJk4VvQ4ATcTx/Fsn/5fCna1wHZ9VEuWWRwx2V4wj39iJrSYdBtHOBdOLAhJingjCkOSpjgsBFmQZeRBPG1BEvFbN8ESK4J5GCSq9EscFSv2XI67l/+G4+Wq+Wb6gPWR+yD8tszINmXfN3HAovqrD6+D5l7sQfNVEJEHTgTeT8B1RkhRf1o/XuOkxLaBrb7utuNoO+8Mp0WfC5z6gh9BsmWPfrdNyYrkBZVekwxPHDehd7qK4h/047L82IjuM1nS6yQ6Gc15r3OpLK1UUuwaGjys4gLPN0FYjh8o1elJq2Kd0JFNPy7iJLkmCcmqs0tFO2FI5XmRkW+YOxK59y5y22/g1cM09gNnBX7kRExdHzBZ4yLb0VOaoy6jDltbALHxw56ojsVkK56kjTBgi2PZ3ntPEPqBcUTPF6Dw5TPZJnGKi0JHlTeLLFjjB5J9e3vGkLdmqYHcVyG3dZAjA4hDBfE/lnH6+FzgUPlPB5xb/ZkBDnoScJ4GOKABbmoAOKQAN5//+SUoDdubNYm2FDjHSkss354FC5FzfOH7GiyBASxdBUsFMpxGl6XnpaOUpLhCI8gKScaBGAX5CkdsQK++jcuvv7GaK7lxJ3o4Evy4ih2HDTqwQDOcBEX8Q/T+OsDYN8xInBacTZY0I1vanGyzELOLeG8s3cc7diOKyxIXyo0q9bVP3UujU0Wjn24uZ2dhVVri7yQrw1sVR6Nt18BK8FQHGMTJWeBm98BtqoHNMQCbr8D29fNsVplieiuS0js+2wq/DIiWCGJrlY+RzwSKjXngYLz+9PGZuEUIexHU4eY592Ao8tm6GGqoRWvbCm6X0TpOzwI5YPVAzh0KOTVBnJGsqEyeReOps0AQTpGIINAg6A2FoJoyXW42+XON3QK7HSHn1L+3DgZN/YFzJeq1dvxFFu1JQScHmQKNVf0p0SZ+jIuv5ecLxEZ3bVRK51wfclAzvjsWlNbRnmix68CNoTgZcezq2pLq+sauUlkCyRQwF7raauw6EDG61G8fUj+vantceQqAUn4B/dOUDaRc1PGG07YacR/SdpgEeR6HRxR+e+v7AAgKtwVLYHOWwLqwrGY8w1lMJ48zRhEhiRUS3v1E+Gz2IHMEwwFGxRy5+KBUaHqbiSaikKMZ88wBmqhvW6wo6vEiDikaJNWULEuhhamP3FWofd/ivMh7Fi+pWy1E5mU4j38G99UJJV825XNVT4quJuiGSoIkXqZUkOBFeW3pnOnkkksmXsdRVF59lQT3OLlqtxfE8lO5wUBjBJIWbC/F1/OsWUtyBNDupLCpTvjdCF1kQNcEAFDUpBGi+bp7NpeTxSLHzzYoai5qzH1oIwnVsfSyAEjjTsYVOiC5XHVq7ICk4EGJH80ZhcaOmdP+7a3HtE+1Mmd3oTnSiixJGiTv99J9QNEGl3d7tggMUSvM9RKnZ7EVXuZGlSWo3E9VNW32EstBSNal8+lPt6lKt3Gx7ZUDVcqIYMedxix553ShlDs14z116zueTGR1Y8gYkVua0sgHSVT1nZ5UVyJpOXZqrKUYayGF173o66n09UdFX0eKoNCpmwRyPQi6aBACt5tJzff41sF5yecj4JglvPF6AEd4fdqnWulOLvLEm46LeLJeTjWccvYIhwvdNdtT/+TUcDjWx5QakEVZJTMSfG8Lktf+1D4eixekLMrlmyCM0+Xf5eDmHTTUYiAFQEgttOn2dk1sKmi2tMo0g66J/zXEoLkDB7Guim4E4menHHxo18dxH4svjztw0Qd3++quSLWX19YEnWhUxtOFhoynCyT6yQUUQ17bneon3Dkv6XzAoglTXrt57IGo36beEl2fGp/uC38Iyqm7puzXi9xQJffI6sFICiWB3LDWl93wxAT+qexWJgwPsxvKFQrx/OezW03CyhLjiBwnVxO0HTbWuY6O8mLTysUvwuqW7Nk0DcdPb2yzxEIi9JDimXVNgrIpPqmfVQ00fynwqQoEsg/RNBYNpkA1tPqlwCcrUC4paFpMhlIgVAOEeUGdWkhlNLbEaqeEQVWGOK2cuilltuGIAaVAJWF5uXY96ChK+QtX74RcztR+s3GsLWtYdTi+2EQENE1EQ+WPUO0hmu1oVKs2sI14bVyhKfBvBrBeDhQ1A5EaP+iCaCPWS33LQNhT5nTjft+Wb3VdlSp6x0C+pGcwnNvj8jtKFOi0kX3aBtxWNH9kyB3ql3CDg7EDycGJZt0O5tvUkvXv1J9Ztxl9yKrApr4xlQfr9e7i37zvC1NjWfEa8zuYTgEAgk4dqJZLdf2cJl6FgSb6kY6U81hzUl94uT41pUtRaFDqhF6oUTCQRlKjUBZi35qEI1XchtutgE8r754HJY6qv03+/AvfRcieOtCmA3Fl2qqxPcSVJ7Qyyh2HvXexDs/Xty4qqW0BCL1mb8Q8Z5Ca9rw2Z8zywrW0OBsnwul9IFJt0Ja9g0Flq+nUPMziTTmb4QP5EedUcnlWE5vpUlwTsRlSc6pDC/DkPbn+Fruj9dzzPN6C2xeWPZ10tdScuq13YVnOhN/a8yaHdj4kI3DKPl/d4PxaUcXUmgrMQ/Li72tFpvLPMQy086FMmLkmUzsZqGsnw0wy+4Zsyn7rIDm3tGa4iq2mCVtZRd3eVX6Tw3J7Wc4TMiA63P8eTc2s/Y/+gPf/AQ==</diagram></mxfile>

View file

@ -2,18 +2,19 @@
It could happen sometimes that your IP is blacklisted by some email provider, or anti-spam services.
## Test your server
* [Test sending an email](https://www.mail-tester.com)
- [Test from an IP address](http://whatismyipaddress.com/blacklist-check)
Here is some forms that could help you remove your IP address from these lists
## Email providers
* Hotmail: https://support.live.com/eform.aspx?productKey=edfsmsbl3&ct=eformts&scrx=1
* GMail : https://support.google.com/mail/contact/msgdelivery
* [Microsoft](https://support.microsoft.com/en-us/getsupport?oaspworkflow=start_1.0.0.0&wfname=capsub&productkey=edfsmsbl3&locale=en-us)
* [GMail](https://support.google.com/mail/contact/msgdelivery)
## Anti-spam services
* SpamHaus: http://www.spamhaus.org/lookup/
## Test your server
* https://www.mail-tester.com/
* [SpamHaus](http://www.spamhaus.org/lookup)
* http://whatismyipaddress.com/blacklist-check

View file

@ -2,19 +2,19 @@
Il peut arriver que votre serveur (son adresse IP) soit ajouté à la liste noire de certains fournisseurs dadresse de courrier électronique ou de services anti-spam. Les courriels envoyés à ces adresses sont alors filtrés et narrivent pas à destination.
#### Testez votre serveur
Pour tester si votre serveur est sur une liste noire, vous pouvez utiliser les outils suivants :
* https://www.mail-tester.com/ (test en envoyant un mail)
* http://whatismyipaddress.com/blacklist-check (test à partir de ladresse IP)
* [https://www.mail-tester.com](Test en envoyant un mail)
* [Test à partir de ladresse IP](http://whatismyipaddress.com/blacklist-check)
Le cas échéant, voici certains des formulaires vous permettant de retirer votre adresse IP de ces listes :
##### Fournisseurs Email
* Hotmail : https://support.live.com/eform.aspx?productKey=edfsmsbl3&ct=eformts&scrx=1
* GMail : https://support.google.com/mail/contact/msgdelivery
* [Microsoft](https://support.microsoft.com/en-us/getsupport?oaspworkflow=start_1.0.0.0&wfname=capsub&productkey=edfsmsbl3&locale=en-us)
* [GMail](https://support.google.com/mail/contact/msgdelivery)
##### Services anti-spam
* SpamHaus : http://www.spamhaus.org/lookup/
* [SpamHaus](http://www.spamhaus.org/lookup)
Si le fournisseur vous concernant napparaît pas dans la liste, cherchez le formulaire adéquat, il existe probablement.

View file

@ -122,6 +122,24 @@ Il peut arriver, de façon exceptionnelle, quon ait besoin de faire un hotfix
**TODO** dev un helper 'git yunohotfix...' qui commit dans stable et cherry-pick tout de suite dans daily? ou linverse?
#### Publier une release testing ou stable
Pour l'instant, on passe par une release via GitHub pour déclencher le build du paquet.
Aller sur https://github.com/YunoHost/{moulinette, yunohost, yunohost-admin, ssowat}/releases/new
1/ Choisir la branche cible en premier (testing ou stable).
Ex: "target: Testing"
2/ Choisir le tag concerné, généralement le dernier
Ex: "debian/2.4.1"
3/ Release title: "v2.4.1" ("v" + le numéro de version)
4/ Commentaire
Reprendre le changelog depuis `debian/changelog`. Remercier les contributeurs/traducteurs
( Pour voir le dernier commit : `git show HEAD` )
#### Paquets non YunoHost
Pour les paquets « non-YunoHost » (par exemple `rspamd`) le paquet ne passe pas par le composant `unstable`, mais uniquement `testing` et `stable` une fois les tests effectués sur ce paquet.

View file

@ -60,6 +60,9 @@ En fonction de lautorité denregistrement, des certificats intermédiaires
> **Gandi**
> ```bash
> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA.pem -O ae_certs/intermediate_ca.pem```
> Attention si votre certificat expire après le 01/01/2017, choisissez le certificat intermédiaire SHA2 suivant (à la place du certificat SHA1 précédent)
> ```bash
> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA2.pem -O ae_certs/intermediate_ca.pem```
> **RapidSSL**
> ```bash

24
chat_rooms.md Normal file
View file

@ -0,0 +1,24 @@
## Chat rooms
Amoung other communication tools, YunoHost project use chat rooms to communicate.
This instant messaging chat rooms, which uses [XMPP protocol](XMPP_en), are hosted on our XMPP server.
You could join this chat rooms with an [XMPP client](https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients#XMPP-related_features).
### Chat rooms
#### Mutual aid
[Mutual aid](support_en) chat room is here to allow YunoHost's users to help each other.
- A [web client](https://chat.yunohost.org) is here to easily join _mutual aid_ chat room.
- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
#### Development
YunoHost core development chat room. Currently, the main chat room for contributions on YunoHost project.
For help, thanks to do it on `support` chat room.
- **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)**
#### Applications
Application packaging development chat room. It allow packagers to help each other.
It also allow to discuss packaging evolution, continuous integration tools.
- **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)**

24
chat_rooms_fr.md Normal file
View file

@ -0,0 +1,24 @@
## Salons de discussions
Parmi dautres outils de communications, le projet YunoHost se sert de salons de discussions pour communiquer.
Ces salons de messagerie instantanées, qui utilisent le [protocole XMPP](XMPP_fr), sont hébergés sur notre serveur XMPP.
Vous pouvez rejoindre ces salons avec un [client XMPP](https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP).
### Salons
#### Entraide
Salon d[entraide](support_fr) est là pour permettre aux utilisateurs de YunoHost de sentraider.
- Un [client web](https://chat.yunohost.org) est à votre disposition pour rejoindre facilement le salon dentraide.
- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)**
#### Développement
Salon de développement du cœur de YunoHost. Actuellement utilisé comme salon principal pour les contributions autour du projet.
Pour de laide, merci de le faire sur le salon dentraide.
- **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)**
#### Applications
Salon de développement du packaging dapplication. Il permet aux packageurs de sentraider.
Il sert également à discuter de lévolution du packaging, des outils dintégration continue sur les applications.
- **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)**

View file

@ -2,21 +2,54 @@
Liste non exhaustive des principaux contributeurs :
* kload
#### Fondateurs
* kload
* beudbeud
#### Conseil
* Bram
* ju
* ljf
* Maniack
* Moul
* opi
* Théodore
#### Groupe Core Dev
* AlexAubin
* Bram
* Ju
* ljf
* Moul
* opi
#### Groupe Apps
* Bram
* Ju
* ljf
* Maniack C
* Moul
* Scith
* Tostaki
#### Groupe Communication
* Bram
* Moul
* ljf
* opi
* Théodore
* Jean-Baptiste
#### Groupe Distribution
* Heyyounow
#### Autres contributeurs
* jerome : développeur de la [Moulinette](moulinette_fr)
* opi : développeur de l[interface dadmininstation web](admin_fr)
* ju : applications
* Moul :
* Documentation
* Cubieboard
* moul[at]moul.re
* courgette : design
* titoko
* Genma

View file

@ -47,7 +47,7 @@ Our support relies on contributors like you. Just come to [the XMPP chatroom](/s
You can involve in the YunoHost's development regardless of your skill.
Sysadmins, web developers, designers and pythonists <a href="https://github.com/YunoHost" target="_blank">are welcome</a>!
<br>
A [development chat room](xmpp:dev@conference.yunohost.org?join) and a <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/contrib">mailing-list</a> is available.
Learn [how to contribute](/dev), and join us on the [development chat room](xmpp:dev@conference.yunohost.org?join) and the <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/contrib">mailing-list</a>.
</div>
</div>

View file

@ -45,7 +45,7 @@ Notre support est communautaire et sappuie sur des contributeurs comme vous.
</div>
<div class="col col-md-8" markdown="1">
Vous pouvez vous impliquer dans le développement de YunoHost peu importe votre niveau. Administrateurs système, développeurs web, designers et pythonistes <a href="https://github.com/YunoHost" target="_blank">sont les bienvenus</a>.<br>
Une <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/contrib">mailing-list</a> est également disponible.
Découvrez [comment contribuer](/dev_fr), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) et la <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/contrib">mailing-list</a> !
</div>
</div>

View file

@ -9,7 +9,7 @@
* [Développer avec Docker](/docker_fr)
* [Builder OpenResty (serveur Web) pour Raspberry Pi](/build_openresty_fr)
* [Présentation du fonctionnement de YunoHost](/package_list_fr)
* [Se créer un environnement de développement](/dev_fr)
* [Se créer un environnement de développement](/ynh_dev_fr)
* Documentation
* [Création dun compte pour lédition de la documentation](/accounting_fr)
* [Écrire de la documentation](/write_documentation_fr)

155
dev.md Normal file
View file

@ -0,0 +1,155 @@
## Contributing to the YunoHost core
You wish to add a new feature in the YunoHost core, but don't know how to
proceed? This guide takes you through the various steps of the development and
contribution process.
If you're looking for stuff to implement or fix, the bug-tracker is
[here](https://dev.yunohost.org/issues/) !
**Come say hi to us in the [dev chatroom](xmpp:dev@conference.yunohost.org?join)** ! If you don't have an XMPP client, you can join using the widget at the bottom right of this page.
### Setting up a development environment
- **Use [ynh-dev](https://github.com/YunoHost/ynh-dev)** (see the README) to
setup a development environment - locally in a virtual machine, or on a VPS.
This will setup a working YunoHost instance, using directly the git repositories
(with symlinks). That way, you will be able to edit files, test your changes in real
time, commit stuff and push/pull directly from your development environment.
- **Implement and test your feature**. Depending on what you want to develop, you
will want to :
- **Python/CLI core** : work in `/vagrant/yunohost/`
- **Web administration interface** : work in `/vagrant/yunohost-admin/`
- You can also work on the other projects on which YunoHost is built
(SSOwat, moulinette) in similar ways
### Working on the YunoHost Python/CLI core
- Work in `/vagrant/yunohost/`.
- Run `/vagrant/ynh-dev use-git yunohost`.
- The actionsmap file (`data/actionsmap/yunohost.yml`) defines the various
categories, actions and arguments of the yunohost CLI. Define how you want
users to use your feature, and add/edit the corresponding categories, actions
and arguments. For example in `yunohost domain add some.domain.tld`, the
category is `domain`, the action is `add`, and `some.domain.tld` is an
argument.
- Moulinette will automatically map commands in the actionsmap to python
functions (and their arguments) located in `src/yunohost/`. For example, typing
`yunohost domain add some.domain.tld` will call the function
`domain_add(domainName)` in `domain.py`, with the argument `domainName` equal
to `"some.domain.tld"`.
##### Helpers / coding style
- To handle exceptions, you should raise some `MoulinetteError()`
- To help with internationalizing the messages, use `m18n.n('some-message-id')`
and put your string in `locales/en.json`. You can also put arguments and use
them in the string with `{{some-argument:s}}`. Don't edit other locales files,
this will be done using [weblate](https://translate.yunohost.org/) !
- YunoHost tries to follow the [pep8](http://pep8.org/) coding style. Tools
exist to automatically check conformity.
- Name of "private" functions should start with a `_`
##### Don't forget
- (Might not be necessary anymore) Each time you edit the actionsmap, you should
force the refresh of the cache with `rm
/var/cache/moulinette/actionsmap/yunohost.pkl`
### Working on the YunoHost web administration interface
- Work in `/vagrant/yunohost-admin/src/`.
- Run `/vagrant/ynh-dev use-git yunohost-admin`. It launches gulp, such as each
time you modify sources, it recompiles the code and you can use it by
refreshing (Ctrl+F5) your web administration. To stop the command, just do Ctrl+C.
- The web interface uses the API to interact with YunoHost. The API
commands/requests are also defined via the actionsmap. For instance, accessing
the page ```https://domain.tld/yunohost/api/users``` corresponds to a `GET
/users` requests on the YunoHost API. It is mapped to the function
`user_list()`. Accessing the URL should display the json returned by this
function. 'GET' requests are typically meant to ask information to the server.
'POST' requests are meant to ask the server to edit/change some information,
or to execute some actions.
- `js/yunohost/controllers` contains the javascript parts,
and define which requests to make to the API when loading a specific page of
the interface, and how to process the data to generate the page, using
templates.
- `views` contains the various templates for the pages of the interface. In the
template, data coming from the javascript part can be used with the syntax
`{{some-variable}}`, which will be replaced when building/accessing the page.
It is also possible to have conditions using the
[handlebars.js](http://handlebarsjs.com) syntax : ```{{#if
some-variable}}<p>Some conditional HTML code here !</p>{{/if}}```
- For internationalized strings, use `y18n.t('some-string-code')` in the
javascript, or `{{t 'some-string-code'}}` in the HTML template, and put your
string in `locales/en.json`. Don't edit other locales files,
this will be done using [weblate](https://translate.yunohost.org/) !
##### Don't forget
- Each time you edit the actionsmap, you should restart the yunohost-api :
```service yunohost-api restart```
(You'll need to retype your admin password in the web interface)
- You might need to force-clear the cache of your browser sometimes to refresh
the javascript and/or html (so each time you edit something in `js` or `views`).
### Your feature is ready and you want it to be integrated in YunoHost
- Fork the relevant repo on Github, and commit stuff to a new branch. We recommend
to name the branch with the following convention :
- For an enhancement or new feature : `enh-REDMINETICKET-name-of-feature`
- For a bugfix `fix-REDMINETICKET-description-of-fix`
- `REDMINETICKET` is optional and is the id of a corresponding ticket on RedMine.
- Once you're ready, open a Pull Request (PR) on Github. Please include `[fix]` or
`[enh]` at the beginning of the title of your PR.
- After reviewing, testing and validation by other contributors, your branch
should be merged in `testing` (?) !
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
<script type="text/javascript">
// Jappix mini chat
$(".actions").css('opacity', 0);
jQuery.ajaxSetup({cache: false});
var ADS_ENABLE = 'off';
var JAPPIX_STATIC = '/jappix/';
var HOST_BOSH = 'https://im.yunohost.org/http-bind/';
var ANONYMOUS = 'on';
JappixMini.launch({
connection: {
domain: "anonymous.yunohost.org",
},
application: {
network: {
autoconnect: false,
},
interface: {
showpane: false,
animate: false,
},
groupchat: {
open: ['dev@conference.yunohost.org'],
suggest: ['support@conference.yunohost.org']
}
},
});
</script>

221
dev_fr.md
View file

@ -1,91 +1,164 @@
## Créer un environnement de développement
## Contribuer au cœur de YunoHost
<div class="alert alert-info">
<b>Attention :</b> cette page de documentation nest plus à jour. Merci de vous référer à la [documentation du dépôt](https://github.com/YunoHost/ynh-dev).
</div>
Vous souhaitez ajouter une nouvelle fonctionnalité au cœur de YunoHost, mais ne
savez pas comment procéder ? Ce guide parcours les étapes du développement et du
processus de contribution.
Ce document a pour but de donner les clés pour créer un environnement de développement correct afin de développer sur le cœur de YunoHost. Il peut également vous permettre de tester vos applications que ce soit avec les versions `stable`, `testing`, `unstable` ou même des versions customisées issues des branches des dépôts.
Si vous chercher quelque chose à implémenter ou un bug à réparer, le
bug tracker est [ici](https://dev.yunohost.org/issues/) !
### Installation de lenvironnement de développement
#### Installation du système de virtualisation
Installer, avec le gestionnaire de paquet de votre système dexploitation, Vagrant.
**Venez dire coucou sur le [salon de
dev](xmpp:dev@conference.yunohost.org?join)** ! Si vous n'avez pas de client
XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page.
```bash
# Debian, Ubuntu, Mint
sudo apt-get install vagrant
# Fedora
sudo dnf install vagrant
```
### Mettre en place un environnement de développement
#### Télécharger `ynh-dev`
<div class="alert alert-warning">
<b>Attention :</b> Cette partie est en cours de rédaction. La ligne de commande `ynh-dev` vient juste dêtre créée il est possible quil y ait des manques.
</div>
- **Utilisez [ynh-dev](https://github.com/YunoHost/ynh-dev)** (voir le README)
pour mettre en place un environnement de développement - en local sur une
machine virtuel, ou bien sur un VPS.
Ceci installera une instance fonctionelle de YunoHost, en utilisant
directement les dépôts git à l'aide de liens symboliques. De cette façon, il
vous sera possible de modifier les fichiers, de tester les changements en
temps réel, et de commiter et push/pull directement depuis cet environnement.
Une ligne de commande `ynh-dev` a été créée afin de simplifier la gestion de votre environnement de développement.
- **Implémentez et testez votre fonctionnalité**. Suivant ce sur quoi vous
voulez travailler :
- **Cœur Python/ligne de comande** : allez dans `/vagrant/yunohost/`
- **Interface d'administration web** : allez dans `/vagrant/yunohost-admin/`
- Vous pouvez aussi travailler sur les autres projets liés sur lesquels
s'appuie YunoHost (SSOwat, moulinette) de façon similaire.
```bash
wget https://raw.githubusercontent.com/yunohost/ynh-dev/master/ynh-dev
chmod u+x ynh-dev
```
Pour créer votre environnement, commencez par faire un `create-env`
```bash
./ynh-dev create-env ~/project/my/yunohost/env
```
Cette sous commande va cloner les dépôts principaux au fonctionnement de YunoHost et les positionner en `unstable`. Si vous avez vos propres fork, vous pouvez ensuite faire ce quil faut pour changer lorigine et le remote repository.
### Travailler sur le cœur Python / ligne de commande
#### Usage
##### Lancer un container
Positionner vous dans votre environnement, puis créer et entrer dans une vm à laide de `ynh-dev run`
```bash
cd ~/project/my/yunohost/env
./ynh-dev run exemple.local stable8
root@yunohost:/# cd yunohost
root@yunohost:/yunohost/# ls
Dockerfile LICENSE README.md SSOwat apps backup moulinette ynh-dev yunohost yunohost-admin yunohost-vagrant
```
- Allez dans `/vagrant/yunohost/`.
##### Mettre à jour un container
Si la vm nest pas à jour lancez un `ynh-dev upgrade` :
```bash
root@yunohost:/yunohost/# ./ynh-dev upgrade
```
- Executez `/vagrant/ynh-dev use-git yunohost`.
##### Déployer les sources présentes dans votre environnement
Pour déployer les sources se trouvant dans votre environnement de développement faites :
```bash
root@yunohost:/yunohost/# ./ynh-dev deploy
```
- Le fichier actionsmap (`data/actionsmap/yunohost.yml`) définit les différentes
catégories, actions et arguments de la ligne de commande YunoHost. Choisissez
comment vous voulez que les utilisateurs utilisent votre fonctionnalité, et
ajoutez/éditez les catégories, actions et arguments correspondants. Par
exemple, dans `yunohost domain add some.domain.tld`, la catégorie est
`domain`, l'action est `add` et `some.domain.tld` est un argument.
<div class="alert alert-warning">
<b>Attention :</b> pour yunohost-admin vous devez avoir compilé le js avec gulp au préalable
</div>
- Moulinette va automatiquement faire le lien entre les commandes de
l'actionsmap et les fonctions python (ainsi que leurs arguments) dans
`src/yunohost/`. Par exemple, `yunohost domain add some.domain.tld`
déclenchera un appel de `domain_add(domainName)` dans `domain.py`, avec l'argument
`domainName` qui vaudra `"some.domain.tld"`.
<div class="alert alert-warning">
<b>Note :</b> vous pouvez sélectionner les paquets à déployer exemple : `./ynh-dev deploy yunohost yunohost-admin`
</div>
##### Helpers / style de code
##### Lancer la postinstall
Avec VirtualBox/Vagrant
```bash
root@yunohost:/yunohost/# yunohost tools postinstall
```
- Pour gérer les exceptions, il existe un type `MoulinetteError()`
##### Récupérer lIP de la vm et paramétrer son `/etc/hosts`
si vous ne connaissez pas lIP de votre vm :
```bash
root@yunohost:/yunohost/# ./ynh-dev ip
172.17.0.1
```
- Pour aider avec l'internationalisation des messages, utilisez `m18n.n('some-message-id')`
et mettez le message correspondant dans `locales/en.json`. Vous pouvez aussi
utiliser des arguments pour construire les messages, avec `{{some-argument:s}}`.
Ne modifiez pas de fichiers de locales autres que en.json, la traduction sera
faite avec [weblate](https://translate.yunohost.org/) !
Pour tester dans votre navigateur vous pouvez modifier votre fichier `/etc/hosts` afin de faire pointer votre domaine sur la bonne adresse IP. Par exemple en y ajoutant une ligne semblable à celle-ci :
```bash
172.17.0.1 exemple.local
```
- YunoHost essaye de suivre le style de code [pep8](http://pep8.org/). Des
outils existent pour vérifier automatiquement la conformité du code.
- Mettre un `_` devant les noms des fonctions "privées".
##### N'oubliez pas
- (Peut-être plus nécessaire) À chaque fois que vous modifiez l'actionsmap, il
faut forcer le rafraîchissement du cache avec :
`rm /var/cache/moulinette/actionsmap/yunohost.pkl`
### Travailler sur l'interface d'administration web
- Allez dans `/vagrant/yunohost-admin/src/`.
- Exécutez `/vagrant/ynh-dev use-git yunohost-admin`. Ceci lance gulp, de sorte
qu'à chaque fois que vous modifiez les sources, il recompilera le code
(js) et vous pourrez voir les changements dans le navigateur web (Ctrl+F5).
Pour stopper la commande, faites simplement Ctrl+C.
- L'interface web utilise une API pour communiquer avec YunoHost. Les
commandes/requêtes de l'API sont également définies dans l'actionsmap. Par
exemple, accéder à la page ```https://domain.tld/yunohost/api/users```
correspond à une requete `GET /users` vers l'API YunoHost. Cette requête
est mappée sur `user_list()`. Accéder à cette URL devrait afficher le json
retourné par cette fonction. Les requêtes 'GET' sont typiquement destinées à
demander de l'information au serveur, tandis que les requêtes 'POST' sont
destinées à demander au serveur de modifier/changer des informations ou de
réaliser des actions.
- `js/yunohost/controllers` contiens les parties javascript, et définit quelles
requêtes faire à l'API pendant le chargement d'une page donnée de l'interface,
et comment traîter les données récupérées pour générer la page, en utilisant
des templates.
- `views` contient les templates des pages de l'interface. Dans le template,
les données venant du javascript peuvent êtres utilisées avec la syntaxe
`{{some-variable}}`, qui sera remplacée pendant la construction de la page.
Il est également possible d'avoir des conditions avec la syntaxe
d'[handlebars.js](http://handlebarsjs.com) : ```{{#if
some-variable}}<p>du HTML conditionnel ici !</p>{{/if}}```
- Pour l'internationalisation des messages, utilisez `y18n.t('some-string-code')`
dans le javascript, ou `{{t 'some-string-code'}}` dans le template HTML, et
mettez votre message dans `locales/en.json`. Ne modifiez pas de fichiers de
locales autres que en.json, la traduction sera faite avec
[weblate](https://translate.yunohost.org/) !
##### N'oubliez pas
- À chaque modification de l'actionsmap, il faut redémarrer l'API yunohost :
```service yunohost-api restart```
(Il faudra retaper le mot de passe administrateur dans l'interface web)
- Il faudra peut-être régulièrement forcer le rafraîchissement du cache
navigateur pour propager correctement le javascript et/ou HTML (à chaque fois
que l'on change quelque chose dans `js` ou `views`, donc).
### Votre fonctionnalité est prête et vous souhaitez qu'elle soit intégrée dans YunoHost
- Forkez le dépòt correspondant sur Github, et commitez vos changements dans
une nouvelle branche, Il est recommandé de nommer la branche avec la
convention :
- Pour une nouvelle fonctionnalité ou amélioration : `enh-TICKETREDMINE-description-fonctionnalité`
- Pour une correction de bug : `fix-REDMINETICKET-description-correctif`
- `TICKETREDMINE` est optionnel et correspond au numéro du ticket sur RedMine
- Une fois prêt, ouvrez une Pull Request (PR) sur Github. De préférence, inclure
`[fix]` ou `[enh]` au début du titre de la PR.
- Après relecture, test et validation par les autres contributeurs, votre
branche sera mergée dans `testing` (?) !
<script type="text/javascript" src="/jappix/javascripts/mini.min.js"></script>
<script type="text/javascript">
// Jappix mini chat
$(".actions").css('opacity', 0);
jQuery.ajaxSetup({cache: false});
var ADS_ENABLE = 'off';
var JAPPIX_STATIC = '/jappix/';
var HOST_BOSH = 'https://im.yunohost.org/http-bind/';
var ANONYMOUS = 'on';
JappixMini.launch({
connection: {
domain: "anonymous.yunohost.org",
},
application: {
network: {
autoconnect: false,
},
interface: {
showpane: false,
animate: false,
},
groupchat: {
open: ['dev@conference.yunohost.org'],
suggest: ['support@conference.yunohost.org']
}
},
});
</script>
##### Déployer les sources au fur et à mesure des modifications
```bash
root@yunohost:/yunohost/# ./ynh-dev watch
```
Astuce : dans le cas de modification sur yunohost-admin, cette commande est très pratique couplée avec un `gulp watch` sur la machine hôte.

View file

@ -48,7 +48,6 @@ You can also redirect ports manually to your server's local IP address on this r
### <small>4.</small> Do your router has hairpinning ?
If the server is accessible from outside your local network, but unreachable with its domain name on the local network, then your router probably lacks of <a href="http://en.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
You cannot avoid that in a simple way. If you know how to do it, just configure the `/etc/hosts` of your local clients to access your server with the local IP. Else, retry the installation with a **.nohost.me** or **.noho.st** domain.
If the server is accessible from outside your local network, but unreachable with its domain name on the local network, then your router probably lacks of <a href="https://en.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
Here is a [tutorial](dns_local_network) to access to your server on a local network and bypass hairpinning problem. The tutorial propose in first solution to create a redirection with DNS of the ISP box and on second solution to modify `hosts` file of **clients** to say to access the **server** via it's local IP address. First solution is preferable because it's not needed to modify `hosts` files on every computer of the local network, if using many clients.

View file

@ -46,7 +46,7 @@ Vous pouvez également rediriger les ports manuellement vers ladresse IP loca
### <small>4.</small> Est-ce que votre box/routeur fait du hairpinning?
Si le serveur est accessible de lextérieur, mais inatteignable via son nom de domaine dans votre réseau local, votre box/routeur ne fait probablement pas correctement de <a href="http://fr.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
Si le serveur est accessible de lextérieur, mais inatteignable via son nom de domaine dans votre réseau local, votre box/routeur ne fait probablement pas correctement de <a href="https://fr.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
Voici un [tutoriel](dns_local_network_fr) pour pouvoir accéder à son serveur en réseau local et contourner le problème de hairpinning. Le tutoriel propose en première solution de mettre en place une redirection avec le DNS de la box et en seconde solution de modifier le fichier `hosts` des **clients** pour indiquer quil doit accéder au **serveur** via son IP locale. La première solution est préférable car il ne nécessite pas de modifier le fichier `hosts` sur chacun des clients du réseau local.

View file

@ -1,8 +1,40 @@
# Noms de domaines nohost.me
### Présentation
Afin de rendre l'auto-hébergement le plus accessible possible, YunoHost offre un service de DNS dynamique par l'intermédiaire des noms de domaine `nohost.me` et `noho.st`. Si vous n'avez pas de nom de domaine, vous pouvez donc obtenir un sous-domaine de type `mondomaine.nohost.me` ou `mondomaine.noho.st`. Pour profiter de ce service, choisissez un domaine se terminant en `.nohost.me` ou `.noho.st`, il sera automatiquement rattaché à votre serveur YunoHost, et vous naurez pas détape de configuration supplémentaire.
### Obtenir un domaine
##### Depuis l'interface d'administration
Vous pouvez obtenir un domaine directement depuis l'interface d'administration de YunoHost, en vous rendant dans le menu "Domaines" et en cliquant sur le bouton "Ajouter un domaine" :
<img src="/images/dns_nohost_me.png" height=150 style="vertical-align:bottom">
##### En ligne de commande
Après vous être connecté à votre serveur YunoHost, entrez la commande (en remplaçant `mondomaine` par le domaine que vous souhaitez acquérir) :
```bash
sudo yunohost domain add mondomaine.nohost.me
```
Vous pouvez ensuite vérifier la création du domaine avec la commande :
```bash
sudo yunohost domain list
```
### Récupérer un domaine nohost.me ou noho.st
Il peut arriver qu'une mise à jour des DNS du domaine soit nécessaire (par exemple lors d'un changement de machine), pour cela vous pouvez poster votre demande de réinitialisation sur le forum, [un fil est dédié à ce sujet](https://forum.yunohost.org/t/nohost-domain-recovery/442).
### Sous-domaines
Les noms de domaines `nohost.me` et `noho.st` permettent d'avoir uniquement un sous-domaine du type `pseudo.nohost.me`.
Bien qu'il soit possible d'installer des applications sur des sous-domaines (pour avoir l'application Owncloud accessible
depuis une adresse du type `cloud.mondomaine.org`), il nest pas possible davoir un sous-sous-domaine tel `monapplication.pseudo.nohost.me`.
Le service de domaines `nohost.me` et `noho.st` n'autorise pas la création de sous-domaines.
Même si YunoHost permet l'installation d'applications sur des sous-domaines (par exemple avoir l'application Owncloud accessible depuis l'adresse `cloud.mondomaine.org`), cette fonctionnalité n'est pas permise avec les domaines `nohost.me` et `noho.st` et il nest pas possible davoir un sous-sous-domaine tel `monapplication.mondomaine.nohost.me`.
Pour pouvoir profiter des applications installables uniquement à la racine dun nom de domaine, il faut avoir son propre nom de domaine.

View file

@ -1,21 +1,21 @@
# Hardware
Every commonly used machine kind is compatible with YunoHost.
It is important to identify your machine kind before proceeding to the installation.
YunoHost is compatible with most of the hardware.
Before proceeding to the installation it is important to identify the model of your computer.
*Click on the corresponding guide.*
*Click on your hardware's guide.*
| Arch | Hardware examples | Installation guide |
|------|-----------------------|----------------------|
| **x86** | Desktops, Laptops, Mac Intel (after 2007), netbooks, nettops, etc. | [Install via CD/USB](/install_iso) |
| **x86** | Desktops, Laptops, Intel Mac (after 2007), netbooks, nettops, etc. | [Install via CD/USB](/install_iso) |
| **armhf** | [ARM board](install_on_arm_board), [Raspberry Pi](/install_on_raspberry), Cubox, Olimex, Beagleboard, etc. | [Install on ARM Debian](/install_on_debian) |
### Minimum requirements
- 500MHz CPU
* 256Mo RAM
* 4Go storage space
* 256MB RAM
* 4GB storage capacity
### Recommended
* Recent x86 computer, silent and low consumption.
* 512Mo RAM in order to run all the services and apps properly
* 20Go storage in order to store more mails and documents
* 512MB RAM in order to run all the services and apps properly
* 20GB storage in order to store more mails and documents

BIN
images/dns_nohost_me.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -42,7 +42,7 @@
</div>
<div class="call-to-action">
<!-- <a class="btn btn-primary btn-lg" href="/try">Try it</a> -->
<a class="btn btn-primary btn-lg" href="/try">Try it</a>
<a class="btn btn-success btn-lg" href="/install">Get started</a>
<p class="text-muted"><small><a href="https://forum.yunohost.org/t/yunohost-2-4-released/1544/1">YunoHost v2.4</a></small></p>
</div>
@ -95,6 +95,7 @@
<a class="btn btn-lg btn-block btn-info" href="/docs">Documentation</a>
<a class="btn btn-lg btn-block btn-success" href="/contribute">Get involved</a>
<a class="btn btn-lg btn-block btn-warning" href="https://forum.yunohost.org/" target="_blank">Forum</a>
<a class="btn btn-lg btn-block btn-default" href="chat_rooms_en" target="_blank">Chat rooms</a>
<a class="btn btn-lg btn-block btn-danger" href="https://forum.yunohost.org/c/announcement">Latest news</a>
<a class="btn btn-lg btn-block btn-danger btn-support" href="/support">Support</a>
</div>

View file

@ -38,7 +38,7 @@
</div>
<div class="call-to-action">
<!-- <a class="btn btn-primary btn-lg" href="/try_fr">Essayer</a> -->
<a class="btn btn-primary btn-lg" href="/try_fr">Essayer</a>
<a class="btn btn-success btn-lg" href="/install_fr">Installer</a>
<p class="text-muted"><small><a href="https://forum.yunohost.org/t/parution-de-yunohost-2-4/1541">YunoHost v2.4</a></small></p>
</div>
@ -94,6 +94,7 @@
<a class="btn btn-lg btn-block btn-info" href="/docs_fr">Documentation</a>
<a class="btn btn-lg btn-block btn-success" href="/contribute_fr">Comment contribuer</a>
<a class="btn btn-lg btn-block btn-warning" href="https://forum.yunohost.org" target="_blank">Forum</a>
<a class="btn btn-lg btn-block btn-default" href="chat_rooms_fr" target="_blank">Salons de discussions</a>
<a class="btn btn-lg btn-block btn-danger" href="https://forum.yunohost.org/c/announcement">Dernières nouvelles</a>
<a class="btn btn-lg btn-block btn-danger btn-support" href="/support_fr">Support</a>

View file

@ -1,12 +1,12 @@
# Installation guide
You have several ways to install YunoHost. The process may slightly differs whether it takes place at home or if you want to do it remotely, and regarding the hardware used: **[See the requirements](/hardware)**
There are multiple ways to install YunoHost. The process may slightly differs whether it takes place at home or if you want to do it on a remote server, and regarding the hardware used: **[See the requirements](/hardware)**
This page lists few installation guides.
This page lists a few installation guides.
---
<h1 style="font-weight: 100">Give a try</h1>
<h1 style="font-weight: 100">Give it a try</h1>
<div class="row">
@ -52,7 +52,7 @@ This page lists few installation guides.
---
<h1 style="font-weight: 100">Virtually</h1>
<h1 style="font-weight: 100">On a virtual machine/container</h1>
<div class="row">
@ -74,7 +74,7 @@ This page lists few installation guides.
---
<h1 style="font-weight: 100">Remotely</h1>
<h1 style="font-weight: 100">On a remote server</h1>
<div class="row">
@ -94,7 +94,6 @@ This page lists few installation guides.
<h1 style="font-weight: 100">On Debian</h1>
If you have already installed **Debian 8** (Jessie) on a server, you are able to **[install YunoHost via script](/install_on_debian)**.
If you have already installed **Debian 8** (Jessie) on a server, you'll be able to **[install YunoHost with a simple script](/install_on_debian)**.
<a href="/install_on_debian"><img width=100 src="/images/debian-logo.png"></a>

View file

@ -2,21 +2,21 @@
*Find other ways to install YunoHost **[here](/install)**.*
### Pre-requisite
### Requirements
<img src="/images/laptop.png" width=200>
<img src="/images/desktop.jpg">
<img src="/images/nettop.jpg">
<div class="alert alert-danger">This images are based on **Debian Wheezy**. Wheezy **won't be maintained** with YunoHost 2.4.<br />
It's **strongly adviced** to install YunoHost on **Debian Jessie** with the **[install script](/install_on_debian_en)**.</div>
<div class="alert alert-danger">These images are based on **Debian Wheezy**. Wheezy **won't be maintained** with YunoHost 2.4.<br />
It is **strongly recommended** to install YunoHost on **Debian Jessie** with the **[install script](/install_on_debian_en)**.</div>
* An x86-compatible hardware dedicated to YunoHost: laptop, nettop, netbook, desktop.
You can reuse any computer with **256MB RAM or more**.
* A x86-compatible hardware dedicated to YunoHost: laptop, nettop, netbook, desktop.
You can use any computer with **256MB RAM or more**.
* Another computer to read this guide and access to your server.
* A [reasonable ISP](/isp), preferably with a good and unlimited upstream bandwidth
* A **USB key** of at least 1GB capacity **OR** a standard **blank CD**
* One of the latest **YunoHost ISO images**, available here (take the 32 bits one if you don't know which one to choose):
* A **USB stick** of at least 1GB capacity **OR** a standard **blank CD**
* One of the latest **YunoHost ISO images**, available here (take the 32 Bits one if you don't know which one to choose):
<div>
<b>Torrent:</b>
<ul>
@ -42,10 +42,10 @@ You can reuse any computer with **256MB RAM or more**.
---
For connecting directly on your computer or with [SSH](/ssh) (only local):
To connect directly to your computer or with [SSH](/ssh) (only on local network:
* User: **root**
* Password: **yunohost**
---
***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***
***Need help during one of these steps? [Get support!](/support)***

View file

@ -7,9 +7,9 @@
<img src="/images/cubieboard2.png">
<img src="/images/micro-sd-card.jpg">
* An ARM board with 500MHz CPU and 512Mo RAM.
* A micro SD card: **4GB** capacity (or more) and **class10** speed rate are highly recommended.
* A [reasonable ISP](/isp), preferably with a good and unlimited upstream bandwidth.
* An ARM board with 500MHz CPU and 512MB RAM.
* A micro SD card: **4GB** capacity (or more), **class10** speed rate is highly recommended.
* A [reasonable ISP](/isp), preferably with a good and unlimited upload bandwidth.
---
@ -28,7 +28,7 @@
---
#### Recommended after post-installation
#### Recommended after running the post-installation
* Use [SSH authentication via key](security)
---
@ -38,4 +38,4 @@
---
***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***
***Need help during one of these steps? [Get support!](/support)***

View file

@ -2,7 +2,7 @@
*Find other ways to install YunoHost **[here](/install)**.*
### Pre-requisite
### Requirements
<img width=100 src="/images/debian-logo.png">
@ -10,7 +10,7 @@ An ARM box, a VPS, a dedicated server, a standard x86 computer, an old Macintosh
* with **Debian 8** (Jessie) installed
* connected to the Internet
* with a **root access** directly or via SSH
* with a direct **root access** or via SSH
<img width=650 src="/images/debian_install.png">
@ -24,5 +24,4 @@ An ARM box, a VPS, a dedicated server, a standard x86 computer, an old Macintosh
---
***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***
***Need help during one of these steps? [Get support!](/support)***

View file

@ -2,21 +2,21 @@
*Find other ways to install YunoHost **[here](/install)**.*
## Pre-requisite
## Requirements
<img src="/images/Raspberry_Pi_2_Model_B_v1.1_front_angle_new.jpg" width=350>
<img src="/images/micro-sd-card.jpg">
- A Raspberry Pi model 1, 2 or 3
- An SD card: **4GB** capacity (or more) and **class10** speed rate are highly recommended
- An other computer to read this guide and access to your Raspberry Pi
- A screen and a keyboard are recommended to control your Raspberry Pi if a problem occurs.
- A [reasonable ISP](/isp), preferably with a good and unlimited upstream bandwidth
- A SD card: **4GB** capacity (or more) and **class10** speed rate is highly recommended
- A different computer to read this guide and access your Raspberry Pi
- A screen and a keyboard, recommended if a problem occurs and you want to control your Raspberry Pi
- A [reasonable ISP](/isp), preferably with a good and unlimited upload bandwidth
- **YunoHost Raspberry Pi images**, available here:
- [Official Wheezy/YunoHost 2.2 created the 4th June 2015](https://build.yunohost.org/yunohost-rpi2_wheezy.7z)
- [Non-official Jessie/YunoHost 2.2 created the 5th December 2015](https://forum.yunohost.org/t/building-a-new-image-for-raspberry-debian-jessie-fr-en/1101/2)
<div class="alert alert-info">**This two images are old**. Nobody is maintaining a YunoHost image for Raspberry Pi. You could [maintain an image](build_arm_image_en) for YunoHost project.</div>
<div class="alert alert-info">**This two images are old**. YunoHost image for Raspberry Pi is not maintained, feel free to contribute and contact us if you would like to [maintain an image](build_arm_image_en) for YunoHost project.</div>
---
@ -31,7 +31,7 @@
---
### Recommended after post-installation
### Recommended after running the post-installation
* Connect via SSH: **root@IP.OF.RPI** (password: **yunohost**)
* Change root password: `passwd root`
@ -42,5 +42,4 @@
#### Build image
* [Create a Raspberry Pi image](/build_arm_image_en)
***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***
***Need help during one of these steps? [Get support!](/support)***

View file

@ -2,13 +2,13 @@
*Find other ways to install YunoHost **[here](/install)**.*
## Pre-requisite
## Requirements
<img src="/images/virtualbox.png" width=200>
* An x86 computer with VirtualBox installed and enough RAM capacity to be able to run a small virtual machine.
* A x86 computer with VirtualBox installed and enough RAM capacity to be able to run a small virtual machine.
* The latest **YunoHost ISO image**, available here:
* **Torrent** ([i386](http://build.yunohost.org/yunohostv2-latest-i386.iso.torrent), [amd64](http://build.yunohost.org/yunohostv2-latest-amd64.iso.torrent)): share at least to ratio 1 to assure torrents sustainability
* **Torrent** ([i386](http://build.yunohost.org/yunohostv2-latest-i386.iso.torrent), [amd64](http://build.yunohost.org/yunohostv2-latest-amd64.iso.torrent)): share at least to ratio 1 to assure the torrent's sustainability
* **Direct download** ([i386](http://build.yunohost.org/yunohostv2-latest-i386.iso), [amd64](http://build.yunohost.org/yunohostv2-latest-amd64.iso))
@ -28,7 +28,7 @@
## <small>2.</small> Change network settings
Go to **Settings** > **Network**, and your interface:
Go to **Settings** > **Network**:
<img src="/images/virtualbox_2.png" style="max-width:100%;border-radius: 5px;border: 1px solid rgba(0,0,0,0.15);box-shadow: 0 5px 15px rgba(0,0,0,0.35);">
@ -73,8 +73,8 @@ After the reboot, you will see this screen:
<br>
* The password for root user is "yunohost"
* You can obtain further precisions on post-installation here: **[yunohost.org/postinstall](/postinstall)**
* You can get more information on the post-installation here: **[yunohost.org/postinstall](/postinstall)**
---
***If you need help during one of these steps, do not hesitate to use [our support tools](/support).***
***Need help during one of these steps? [Get support!](/support)***

View file

@ -18,9 +18,10 @@ Tous les fournisseurs daccès à Internet [membres de la Fédération French
| **[UPnP](https://fr.wikipedia.org/wiki/Universal_Plug_and_Play)** | ✔ | ✔ | ✔ | ✔ | ✔ |
| **[Port 25 ouvrable](email_fr)**<br> (fermé par défaut) | ✔ | ✔ | ✘ | ✔ | ✔ |
| **[Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning)** | ✔ | ✔/✘ | ✘ | ✔ | ✔ |
| **[Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup)<br>personnalisable ** | ✔ | … | ✘ | ✘ | ✘ |
| **[Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup)<br>personnalisable ** | ✔ (sauf IPv6) | … | ✘ | ✘ | ✘ |
| **[IP fixe](/dns_dynamicip_fr)** | ✔ | ✔/✘ | ✘ | ✔ | ✔ |
| **[IPv6](https://fr.wikipedia.org/wiki/IPv6)** | ✔ | ✔ | ✔ | … | … |
| **[Non listé sur le DUL](https://en.wikipedia.org/wiki/Dialup_Users_List)** | ✘ | … | … | … | … |
Pour une liste plus complète et précise, référez-vous à la très bonne documentation de [wiki.auto-hebergement.fr](http://wiki.auto-hebergement.fr/fournisseurs/fai#d%C3%A9tail_des_fai).
**Astuce** : [FDN](http://www.fdn.fr) fournit des [VPN](http://www.fdn.fr/-VPN-.html) permettant de rapatrier une (ou plusieurs sur demande) IPv4 fixe et un /48 en IPv6 et ainsi « nettoyer » votre connexion si vous êtes chez lun des FAI *limitants* du tableau ci-dessus.

1
orga/README.md Symbolic link
View file

@ -0,0 +1 @@
yunohost_project_organization_fr.md

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

View file

@ -0,0 +1,271 @@
# Organisation du projet YunoHost
## Objectif du document
Ce document a pour objectif de permettre aux contributeurs de se sentir légitimes deffectuer une contribution dans le projet YunoHost avec un avis collectif.
Le projet étant communautaire, les décisions prises hâtivement par un groupe restreint de contributeurs peuvent entraîner des frustrations postérieures.
Pour pallier à ce problème, la solution proposée ici est de faire en sorte que les décisions soient prises collectivement et quelles soient suffisamment réfléchies.
Un conseil oriente lévolution du projet YunoHost, et des groupes dintérêts permettent de contribuer plus efficacement en fonction des domaines de prédilection de chacun.
## Définition de YunoHost
### Objectifs
Le but de YunoHost est de rendre accessibles au plus grand nombre linstallation et ladministration dun serveur, sans délaisser la qualité et la fiabilité du logiciel.
### Valeurs
#### Un logiciel libre et communautaire
YunoHost est un logiciel sous licence libre, entièrement communautaire, et reposant sur des applications elles-mêmes communautaires et souvent libres (roundcube, baikal, etc...).
#### Que chacun peut s'approprier
Historiquement, le projet est très proche des initiatives visant à la création d'un internet neutre et décentralisé. Cette proximité, notamment avec la [FFDN](https://www.ffdn.org/), a amené une partie des contributeurs de YunoHost à créer la Brique Internet dont la mission est de faciliter l'auto-hébergement en fournissant une solution complète incluant service (via un VPN) et matériel. Cet aspect militant n'entrave pas des initiatives commerciales du logiciel pour lequel des entreprises pourraient proposer du support ou de l'hébergement.
## Organisation de YunoHost
### Une structure ouverte, organisée par thèmes
L'objectif de l'organisation de YunoHost est de permettre au plus grand nombre de contribuer à l'amélioration du logiciel, que ce soit d'un point de vue technique (développement, packaging d'application) ou non (communication, assistance aux utilisateurs, documentation, etc.). Inspiré par différents projets passés en revue lors de l'événement (Kodi, Debian, Django, Fedora, Wikipédia, etc.) et des idées de contributeur de YunoHost (Jérôme, Bram, opi, scith, ju), il a été décidé d'une organisation en groupes spécialisés, fédérés par un conseil de contributeurs clés.
Schéma dorganisation du projet YunoHost :
<img src="https://raw.githubusercontent.com/YunoHost/yunohost-project-organization/master/organization_schema.png" height="600px" />
#### Définition et constitution des groupes
La constitution de groupes part du constat que YunoHost compte beaucoup de sous-projets (treize au total), mais que l'on ne sait pas toujours qui en est en charge ou qui y est compétent. Il est donc proposé une simplification de l'organisation des sous-projets en groupes thématiques :
- ##### Groupe Core Dev
- Core YunoHost
- Moulinette
- Admin web
- SSOwat
- Dynette
- YNH-Dev
- ##### Groupe Distribution
- Création et maintenance des images d'installation sur diverses architectures
- Distribution des images
- Gestion de la distribution des paquets Debian.
- ##### Groupe Infra/Adminsys
- Infrastructure
- Site web (wiki, forum, salon de discussion, redmine, mumble)
- Démo
- Services
- [ip.yunohost.org](https://ip.yunohost.org/) et ip6.yunohost.org
- [yunoports](http://ports.yunohost.org/)
- nohost.me et noho.st
- [yunodash](https://dash.yunohost.org/)
- [yunopaste](http://paste.yunohost.org/)
- ##### Groupe Apps
- Apps Officielles
- Apps Communautaires
- outils de développements d'app (package_checker, package linter)
- ##### Groupe Communication
- Documentation
- Communication (annonce évolutions du projet sur le forum, réseaux sociaux)
- Traduction
- Entraide (support)
Les groupes sont ouverts à tous les contributeurs souhaitant participer au développement de YunoHost. Chacun peut s'inscrire aux canaux de communication associés aux groupes auxquels il souhaite prendre part. Chaque inscrit est libre d'échanger avec le reste du groupe et de proposer une prise de décision à la suite d'une étape d'échange et d'amélioration de la proposition.
Afin de faciliter sa gestion, chaque groupe nomme donc un coordinateur (et un remplaçant) dont le rôle est :
- d'accueillir et fédérer les nouveaux contributeurs réguliers de son groupe
- de tenir informé le Conseil des décisions prises au sein du groupe (cf. point suivant)
Le choix d'un outil de communication est laissé à chaque groupe en fonction de sa pertinence (forum, chat, ML, etc.).
#### Définition et constitution du Conseil
YunoHost grandissant, il est important de maintenir une cohérence entre tous les groupes, néanmoins il est impossible d'imposer à chacun des membres des groupes de s'intéresser ou de s'impliquer sur tous les aspects du projet (pour des raisons de temps et de compétences). Pour pallier à cela, il est proposé de créer un meta-groupe, où chaque groupe sera représenté par au moins un de ses membres : le Conseil.
Le Conseil est indépendant des groupes et réunit les contributeurs souhaitant s'impliquer le plus dans le projet, son rôle est de :
- prendre les décisions importantes sur YunoHost qui ne dépendent pas d'un seul groupe (par exemple changer le moteur du wiki)
- faire des points réguliers sur l'ensemble du projet pour assurer sa cohésion. (réunion Mumble)
- solliciter l'ensemble de la communauté des contributeurs (ou même des utilisateurs) quand une décision divise les groupes et/ou le Conseil
Le choix d'un outil de communication est laissé au Conseil, ses décisions doivent néanmoins être consultables par l'ensemble de la communauté de contributeurs.
Pour participer aux votes du Conseil, il faut avoir contribué au projet et avoir obtenu un droit de vote (ou d'entrée) au sein du Conseil. Ce droit est délivré par le Conseil (éventuellement sur demande). Le Conseil est libre à tout moment de modifier le processus de décision.
Être membre du Conseil n'implique pas forcément d'avoir l'ensemble des accès (infrastructure, dépôt etc...).
### Un processus de prises de décision basé sur un consensus mou
Les décisions à prendre peuvent être de deux ordres :
1. pour un groupe (par "exemple merger une PR" serait affecté au groupe Dev tandis que "poster un tweet" serait de la responsabilité du groupe Communication)
2. pour l'ensemble du projet (par exemple décider d'une release avec des nouvelles fonctionnalités)
Si un consensus sur une décision à prendre n'est pas trouvée au sein d'un groupe, ce dernier devra se tourner vers le Conseil pour en débattre. Si aucun consensus n'est trouvé, la proposition sera soumise au vote de tous les contributeurs.
#### Le processus de prise de décision en détail
##### 1) Initiation d'une décision à prendre
- peut-être initiée par n'importe qui suivant les mediums définis au sein de chacun des groupes (exemple : ouvrir une PR déclenche automatiquement ce processus)
- forcément publique à l'exception de situations bien définies (bug relatif à la sécurité critique ou vote sur les personnes)
- une date de clôture est automatiquement définie par type de proposition. La définition de la date remplie plusieurs fonctions :
- pouvoir laisser le temps à tout le monde de s'exprimer et ne pas prendre la décision trop vite
- maintenir un rythme car si le quota des réponses est rempli avant le temps imparti, il n'y a pas besoin d'attendre l'avis de tout les membres du groupe
- le quota est à évaluer en fonction des personnes inscrites au groupe (ou au Conseil selon la situation) qui ont manifesté leurs souhaits d'être considéré comme votant régulier => exemple kload peut vouloir donner son avis ponctuellement, mais à priori il ne souhaitera pas être considéré comme membre votant actif du Conseil
- pouvoir être repoussable sur simple demande d'une des personnes du groupe. Et seulement du groupe, pas tous les contrib.
##### 2) Ouverture de la discussion, plusieurs réponses possibles :
Tout le monde peut changer de positions à n'importe quel moment, mais il est de bon ton de laisser au groupe le temps de réagir si cela est nécessaire (pas passer de positif à négatif puis rejeter la proposition 3 min après par exemple.)
- réponses dites "simple"
- "je suis d'accord" -> vaut pour un avis positif
- "ça me semble bon, mais je préfère m'en remettre aux autres" -> si jamais il n'y a que des avis comme cela (ou le suivant) et au moins un avis positif et que la date est passé, la proposition est acceptée
- "pas d'avis" / "je ne suis pas en position de donner un avis pertinent (exemple: je sais pas coder en X)"
- réponses délayantes/différées
- demande de précisions, dans ce cas la décision est suspendue
- refus: tout refus doit être argumenté et justifié
##### 3) Suspension/Repoussement
- tant qu'il n'y a pas de réponse, la décision est suspendue, au moment de la réponse, la date de clôture est automatiquement repoussé (si besoin) (pour une durée, à définir, moins longue que la première fois)
- situation où il y a des avis positifs et négatifs ou situation où il y a un choix à faire entre plusieurs propositions
##### 4) Demande de modifications
- mais il se peut qu'il y ai discussion autour de ces modifications, si c'est le cas, cela devient une nouvelle décision à adjoindre à la liste des décisions à prendre et le processus s'y applique alors (et cela repousse la date)
- dans le cas contraire, un membre du groupe peut demander à ce que l'on fasse un vote qui portera sur la liste des possibilités qui font conflits + "ce vote est mal formulé, reformulons le"
- s'il n'y a pas assez de monde d'accord, la date est repoussée et un rappel doit être envoyé
- si le résultat est vraiment serré, le groupe est invité à rediscuter de la question si elle est importante, car cela pourrait être source de division et de tension à l'avenir
##### 5) Clôture
- si le groupe est unanime dans sa décision
- que des avis positifs
- que des refus
- sans avis (s'en remet aux autres)
- Pour une décison mineure ou moyenne/standard, si le quota de réponse est atteint à la durée minimale et que le consensus est obtenu.
- s'il n'est pas possible d'avoir assez de monde (vacances, plus assez de membres du groupe pouvant avoir un avis) il est possible pour le groupe de demander la clôture même si le quota d'avis n'est pas atteint, il y a alors un nouveau décalage de la date et si cette nouvelle date est franchie, la proposition est clôturée selon les avis donnés.
###### Micro décision:
- Décision prise et appliquée par un seul membre sans délai. Ce type de décision doit impérativement pouvoir être réversible, et peut être remise en question par n'importe quel membre du groupe.
###### Décision Mineure:
- Durée initiale: 1 semaine.
- Durée minimale: 3 jours.
- Décalage, si nécessaire: 3 jours.
- Avis nécessaires: 2 membres du groupe (celui qui a initié cette prise de décision peux donner son avis). 3, dont 2 membres du groupe pour anticiper.
- Validation par vote (le cas échéant): 66% de votes positifs.
###### Décision Standard/Moyenne:
- Durée initiale: 2 semaines.
- Durée minimale: 1 semaine.
- Décalage, si nécessaire: 1 semaine.
- Avis nécessaires: 50% des membres du groupe (celui qui a initié cette prise de décision peux donner son avis). 66% des membres du groupe pour anticiper.
- Validation par vote (le cas échéant): 75% de votes positifs.
###### Décision Majeure :
- Durée initiale: 1 mois.
- Décalage, si nécessaire: 2 semaines.
- Avis nécessaires: 75% des membres du groupe (celui qui a initié cette prise de décision peux donner son avis).
- Validation par vote (le cas échéant): 90% de votes positifs.
##### 6) Application
Alors un membre du groupe peut annoncer la décision comme effective (et procéder aux actions nécessaires comme releaser, merger, annonce, autre ...). Il est important que s'il y a besoin de certaines actions, des personnes se soient engagées à les faire, une décision sans désigner est moyennement utile
## Composition des groupes
- Conseil : Bram, ju, ljf, Maniack, Moul, opi, theodore.
- Core Dev : AlexAubin, Bram, Ju, ljf, Moul, opi
- Apps : Bram, Ju, ljf, Maniack C, Moul, Scith, Tostaki
- Infra : Bram, Ju, Maniack C, Moul, opi
- Communication
- Com : Bram, Moul, ljf, opi
- Doc : Moul, Theodore
- Trad : Jean-Baptiste
- Distribution : Heyyounow
## Tableau récapitualtif du nombre d'avis nécéssaire pour la prise de décision
_Les valeurs sont arrondies (exemple: 5,4 => 5 et 5,5 => 6)._
| | **Mineure** | **Standard** | **Majeure** |
|----------------------|---------|----------|---------|
| **Conseil** |
| Clôture classique | 2 | 4 | 5 |
| Clôture anticipée | 3* | 5 |
| Clôture par vote | 5 | 5 | 6 |
| **Core Dev** |
| Clôture classique | 2 | 3 | 5 |
| Clôture anticipée | 3* | 4 |
| Clôture par vote | 4 | 5 | 5 |
| **Apps** |
| Clôture classique | 2 | 4 | 5 |
| Clôture anticipée | 3* | 5 |
| Clôture par vote | 5 | 5 | 6 |
| **Infra** |
| Clôture classique | 2 | 3 | 4 |
| Clôture anticipée | 3* | 3 |
| Clôture par vote | 3 | 4 | 5 |
| **Communication -> Com** |
| Clôture classique | 2 | 2 | 3 |
| Clôture anticipée | 3* | 3 |
| Clôture par vote | 3 | 3 | 4 |
| **Communication -> Doc** |
| Clôture classique | 1 | 1 | Conseil |
| Clôture anticipée | 2* | 2* |
| Clôture par vote | Conseil | Conseil | Conseil |
| **Distribution** |
| Clôture classique | 1 | Conseil | Conseil |
| Clôture anticipée | 1 | Conseil |
| Clôture par vote | 1 | Conseil | Conseil |
\* dont 1 avis qui peut être externe au groupe
Pour la traduction, le processus reste à adapter.
Pour la doc, le nombre d'avis pour la cloture anticipée d'une décision mineure est pour le moment réduit (vu qu'il n'y a que 2 personnes dans le groupe). Les autres types de décisions sont prises par le conseil.
Pour le groupe distribution, étant donné qu'il n'y a pour l'instant que Heyyounow, le Conseil sera sollicité pour les décisions Standard ou Majeure.
### Décisions à venir pour les groupes
#### Conseil
- Faut-il élire les membres du Conseil plutôt que de les coopter ? Risque de se transformer en "campagne politique"!
- Faut-il limiter l'ouverture des groupes d'intérêts par cooptation comme pour le Conseil ?
- Proposition de changer Conseil en Collégiale
- Migrer le serveur dinfrastructure du projet sous YunoHost. (avec apps déjà packagées pad, gogs, mumble?)
- Let's Encrypt
- Nouveau système pour la documentation
- Amélioration de la documentation
- Migration du serveur XMPP
- Hébergement de notre forge git
- Revoir système de build : stable <— testing <— branches
- Gel de nohost.me et question de l'abandon des services
#### Groupe Dev
- Comment gérer les pull request ?
- Chaque ticket fait l'objet d'une branche et d'un ticket, tu fais une pull/merge request, la communauté vérifie que ça fonctionne, une décision est prise d'intégrer.
#### Groupe Apps
- Pour les apps communautaires, les issues sont bien sur Github, les discussions sur le forum
#### Groupe Communication
- Rapport de bug à partir du forum
- Faire en sorte de nettoyer le forum pour éviter le bruit
- Proposition de supprimer le salon de support
- Comment rendre le forum plus actif et central
- Comment s'organiser pour les privilèges sur le forum (si les groupes veulent voter sur le forum)
#### Autres
- Demande sur le forum avec notification des membres du Conseil et des représentants des groupes dintérêts concernés.
- Vote sur deux semaines par un post sur le forum
- Créer quatre canaux pour le Dev, les Apps, la Communication et l'Infrastructure
- La release devrait être validée par l'ensemble des 4 (ou 5) groupes dintérêts
- Communication en français et en anglais
- Annuaire ou contact des groupes pour les nouveaux arrivants. Voir peut-être annuaire tout court pour savoir qui fait quoi. https://yunohost.org/#/contribs_fr à compléter. Et à mettre en avant.
- Proposition de laisser les membres YunoHost s'auto déterminer -> Comment gérer les accès ?
## Moyens de communication actuels
- Rencontres à des évènements.
- Réunions hébdomadaires Mumble.
- [Forum](https://forum.yunohost.org).
- Listes de diffusion : [contrib](https://list.yunohost.org/cgi-bin/mailman/listinfo/contrib) et [apps](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps)
- [Bugtracker Redmine](https://dev.yunohost.org).
- Forge git pour la review de code : [YunoHost](https://github.com/YunoHost) [YunoHost-Apps](https://github.com/YunoHost-Apps).
- [Salons discussions XMPP](https://yunohost.org/#/chat_rooms_fr)

View file

@ -1,6 +1,6 @@
# App packaging <img src="/images/yunohost_package.png" width=100/>
This document aimed to learn you how to package an application for YunoHost.
The purpose of this document is to teach you how to package an application for YunoHost.
### Requirements
To package an application, here are the requirements:
@ -63,11 +63,11 @@ Note that it also works with a Git URL:
yunohost app install https://github.com/author/my_app_package.git
```
### Enhance package
### Packaging best practices
Here is a list of best practices for application install scripts:
* scripts should use `sudo cp -a ../sources/. $final_path` instead of `sudo cp -a ../sources/* $final_path`;
* install script must contain support in case of script errors to delete residuals files thanks to `set -e` and [trap](packaging_apps_trap_fr);
* install script should use command line method instead of curl call through web install form;
* install script should use the command-line method instead of calls to curl through web install form;
* install script should save install answers;
* application sources should be checked with a control sum (sha256, sha1 or md5) or a PGP signature;
* scripts should be tested on Debian Jessie as well as 32 bits, 64 bits and ARM architectures;
@ -76,18 +76,18 @@ Here is a list of best practices for application install scripts :
### Package script checker
<a class="btn btn-lg btn-default" href="https://github.com/YunoHost/package_checker">Package checker</a>
This is a Python script which check:
This Python script checks:
* that the package is up to date wich last specifications
* that all files are present
* that the manifest don't have syntax error
* that scripts exit well before modifing the system during verifications.
* that the manifest doesn't have syntax errors
* that scripts exit well before modifing the system during verification.
### 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 tests and returns on 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 to add your application in the [app repository](https://github.com/YunoHost/apps) to be displayed in the [non-official apps list](apps_in_progress_en). Precise his 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_in_progress_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 evolutions.
- Subscribe to the [Apps mailing list](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) to be informed about packaging evolution.
### Officalization of an application
To become an official application, it must be enough tested, stable and should work on 64 bits, 32 bits et ARM processor architectures, and on Debian Jessie. If you think those conditions are met, ask for [official integration](https://github.com/YunoHost/apps) of your application.
To become an official application, it must be tested well enough, be stable and should work on 64 bits, 32 bits et ARM processor architectures, and on Debian Jessie. If you think those conditions are met, ask for [official integration](https://github.com/YunoHost/apps) of your application.

View file

@ -8,6 +8,8 @@ Pour packager une application, voici les prérequis :
* Maîtriser un minimum `git`, le Shell et dautres notions de programmation;
* Une [machine virtuelle ou sur un serveur distant](/install_fr) ou un [environnement de développement](https://github.com/yunohost/ynh-dev) pour packager et tester son paquet.
Si vous ne comprenez pas ces prérequis, ou si vous ne savez pas comment écrire du code, consulter d'abord l'[introduction au packaging](/packaging_apps_start_fr).
### Contenu
Un paquet YunoHost est composé :

View file

@ -111,9 +111,30 @@ 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).
Pour la liste d'application du projet LaBriqueInter.net, l'inscription se fait en consultant [la doc du dépôt du site internet](https://github.com/labriqueinternet/labriqueinter.net).
#### 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.
Dans le futur, YunoHost affichera sans doute des détails sur la licence de l'application. Pour y parvenir, l'acronyme doit être celui issu de cette [liste de licences répertoriées du SPDX](https://spdx.org/licenses/) (si il y a 2 acronymes, il faut prendre celui contenant le numéro de version). Pour plus de cohérence, la casse doit être respectée.
Si la licence n'est pas présente dans la liste, dans ce cas il faut indiquer `free` ou `non-free` selon qu'elle est libre ou non et donner l'occasion à l'utilisateur de se renseigner dans le README.md (lien, explications, ...).
Exemple: pour une licence `GNU Lesser General Public License (LGPL), version 3` l'acronyme est `LGPL-3.0` si toutefois des dépendances non libres sont utilisées dans ce cas il faudra mettre `LGPL-3.0&dep-non-free` dans le manifeste.
Si une application a des modules liés avec une autre licence (Exemple: Odoo 9 LGPL-3.0 + un module sous licence AGPL-3.0 ), dans ce cas on indiquera les deux licences séparées par un `&`.
Si deux applications distinctes sont dans le même paquet d'installation et ont des licences distinctes, dans ce cas on peut utiliser le `,` pour séparer les licences.
Dans les deux cas, le mainteneur est encouragé à réfléchir à la possibilité de créer deux paquets distincts. Le manifeste de chaque application permet de poser des questions de type `app` de façon à faire référence à une autre application déjà installée.
Rappel: une question de type `app` prend pour réponse l'identifiant d'une des apps déjà installée.
Quelques liens intéressants pour aider au choix de licence:
* [Des fiches explicatives sur les licences libres](https://www.inria.fr/content/download/5896/48452/version/2/file/INRIA_recueil_fiches_licences_libres_vf.pdf)
* [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 | WORKING |
#### 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 |

View file

@ -0,0 +1,53 @@
Petite introduction au packaging d'application, pour comprendre de quoi nous parlons et comment ça marche.
Cette documentation s'adresse avant tout aux packageurs débutants qui ne sont pas à l'aise avec les concepts de shell, parsing et administration système de manière générale.
Nous verrons ici ce qu'est un package d'application YunoHost, comment cela fonctionne, comment faire pour écrire un package et comment se lancer dans l'aventure sans être tout seul.
### De quoi on parle en fait ?
Avant de démarrer, la bonne question c'est "Qu'est-ce qu'un package d'application !?"
Pour répondre à cette question, il faut revenir à ce qu'est YunoHost, c'est un système dexploitation serveur visant à simplifier lauto-hébergement de services Internet. Et pour faire ça, YunoHost met à disposition, entre autre, une interface d'administration permettant d'installer des applications en quelques clics.
Or si vous avez déjà installé une application web à la main, vous savez qu'en réalité c'est bien plus compliqué que quelques clics sur une jolie interface.
C'est là que le package d'application entre en jeu, c'est un ensemble de scripts qui automatise l'installation d'une application web et la préconfigure pour que l'utilisateur final n'ai besoin que de quelques clics pour l'installer facilement.
### Mais alors, comment ça marche ?
Du point de vue de l'utilisateur, c'est très simple, on choisit une application, on répond à quelques questions, ça mouline et c'est prêt.
Mais il se passe bien plus de choses derrière.
Tout d'abord, lorsque l'application est sélectionnée, YunoHost va aller chercher son package sur Github, par exemple l'application [Custom Webapp](https://github.com/YunoHost-Apps/my_webapp_ynh).
Ensuite, YunoHost lit le fichier manifest.json pour connaître les questions à poser à l'utilisateur.
Mais ces questions anodines sont très importantes, on retrouvera souvent le domaine sur lequel installer l'application, l'adresse à laquelle elle sera accessible, l'utilisateur qui en sera l'administrateur et la langue par défaut de l'application.
Ce sont là des éléments essentiels pour configurer correctement notre application web lors de son installation. Pour ce faire, YunoHost va récupérer les réponses données par l'utilisateur et les envoyer au script install qui se trouve dans le dossier scripts du package.
Le script install va se charger d'installer l'application, en prenant en compte les réponses données par l'utilisateur. Ce script va simplement faire ce que vous auriez fait si vous aviez installé l'application à la main.
Si par la suite l'utilisateur souhaite supprimer l'application, YunoHost utilisera le script remove du dossier script, qui se chargera à la place de l'utilisateur de supprimer l'application, ses dossiers et tout ses fichiers de configuration.
### Qu'il y a-t-il dans ces scripts pour que tout soit si simple pour l'utilisateur ?
Les scripts d'un package d'application sont simplement des commandes bash les unes à la suite des autres.
#### ... Et c'est quoi une commande bash ?
Une commande [bash](https://fr.wikipedia.org/wiki/Bourne-Again_shell) c'est une ligne de texte qui sera interprétée et produira un résultat. C'est ce qu'on a l'habitude d'appeler la ligne de commande.
Or puisque votre serveur, sur lequel est installé YunoHost, ne dispose pas d'une interface graphique, vous n'avez que la ligne de commande de disponible. Vous l'atteignez en général après vous être connecté avec [ssh](/ssh_fr).
Les scripts d'un package ne sont donc qu'une succession de commandes bash, comme si vous les aviez tapées directement dans la console ssh pour installer l'application.
Pour savoir quoi écrire dans un script bash, je vous conseille de commencer par la lecture d'un [tuto simple](https://debian-facile.org/doc:programmation:shells:debuter-avec-les-scripts-shell-bash). Et si vous avez vraiment envie de lire, il y a aussi un [tuto plus complet](http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/index.html)
### Ok, je crois que j'ai compris ! Par où on commence?
Avant d'envisager de faire un package d'application, il faut réussir à installer correctement la dites application. Car le script ne fera que ce que vous lui direz de faire.
Ensuite, il faut aller lire (et oui encore) la documentation sur le packaging, mais la vrai cette fois, [celle qui emploie des mots bizarres](/packaging_apps_fr).
Mais maintenant vous devriez les comprendre tout ces mots étranges.
Mais heureusement, vous n'êtes pas seul pour affronter cette épreuve titanesque, il y a d'autres packageurs que vous pouvez venir rencontrer sur le [forum](https://forum.yunohost.org/c/apps-packaging) et sur le [salon de discussion](xmpp:apps@conference.yunohost.org?join).
N'hésitez pas à venir poser des questions sur ce que vous ne comprenez pas, il y aura toujours quelqu'un pour vous répondre.
Et vous constaterez bien vite que ce n'est pas si difficile de packager une application.

1
project_organization_fr.md Symbolic link
View file

@ -0,0 +1 @@
orga/yunohost_project_organization_fr.md

View file

@ -10,6 +10,8 @@ Two things remain important to note:
*If you need some advises, do not hesitate to [ask us](/support).*
*To talk about security flaws, contact the [YunoHost security team](/security_team).*
---
## Improve security
@ -121,3 +123,4 @@ Some [pentests](https://en.wikipedia.org/wiki/Penetration_test) have been done o
- [1) Preparation](https://blog.exadot.fr/2016/07/03/pentest-dune-instance-yunohost-1-preparation)
- [2) The functionning](https://blog.exadot.fr/2016/07/12/pentest-dune-instance-yunohost-2-le-fonctionnement)
- [3) Black Box Audit](https://blog.exadot.fr/2016/08/26/pentest-dune-instance-yunohost-3-audit-en-black-box)
- [4) Grey Box Audit](https://blog.exadot.fr/2016/11/03/pentest-dune-instance-yunohost-4-audit-en-grey-box)

View file

@ -13,6 +13,8 @@ Deux points sont néanmoins importants à noter :
*Si vous avez besoin de conseil, nhésitez pas à [nous demander](/support_fr).*
*Pour discuter d'une faille de securité, contactez l'[équipe securité de YunoHost](/security_team_fr).*
---
## Améliorer la sécurité
@ -129,3 +131,4 @@ Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur u
- [1) Préparation](https://blog.exadot.fr/2016/07/03/pentest-dune-instance-yunohost-1-preparation)
- [2) Le fonctionnement](https://blog.exadot.fr/2016/07/12/pentest-dune-instance-yunohost-2-le-fonctionnement)
- [3) Audit en Black Box](https://blog.exadot.fr/2016/08/26/pentest-dune-instance-yunohost-3-audit-en-black-box)
- [4) Audit en Grey Box](https://blog.exadot.fr/2016/11/03/pentest-dune-instance-yunohost-4-audit-en-grey-box)

13
security_team.md Normal file
View file

@ -0,0 +1,13 @@
# Security team
Contact the security team by mail: `security@yunohost.org`.
We strongly advise you to encrypt your mail with GPG. Our public key is available on key servers. Below is our fingerprint
```bash
gpg --fingerprint security@yunohost.org
pub 4096R/17351899 2016-07-01
Empreinte de la clef = 6CBC 45EB A625 FBF3 513D 1227 749D 8972 1735 1899
uid YunoHost Security <security@yunohost.org>
sub 4096R/446838AF 2016-07-01
```

14
security_team_fr.md Normal file
View file

@ -0,0 +1,14 @@
# Équipe securité
Contactez l'équipe securité par email : `security@yunohost.org`.
Nous vous recommandons fortement de chiffrer votre mail avec GPG. Notre clé
publique est disponible sur les serveurs de clés. L'empreinte est ci-dessous :
```bash
gpg --fingerprint security@yunohost.org
pub 4096R/17351899 2016-07-01
Empreinte de la clef = 6CBC 45EB A625 FBF3 513D 1227 749D 8972 1735 1899
uid YunoHost Security <security@yunohost.org>
sub 4096R/446838AF 2016-07-01
```

View file

@ -61,6 +61,7 @@
* [Add a certificate certified by an authority](/certificate)
* [Regenerate self-signed certificate](/regenerate_certificate_en)
* [Security](/security)
- [Contact security team](security_team)
* [Troubleshooting guide](/troubleshooting_guide_en)
* [YunoHost Tor Hidden Servicer](/torhiddenservice)
* [Unblock an IP address with Fail2ban](/fail2ban_en)
@ -80,6 +81,7 @@
* [Contributor guide](/contribute)
* Developement
* Applications
* [Package new application](/packaging_apps)
* [Manifest](packaging_apps_manifest_en)
* [Scripts](packaging_apps_scripts_en)
@ -90,6 +92,7 @@
* [Trap usage](packaging_apps_trap_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)
* [Creation of Debian packages](/build_packages_en)
* [Create an ARM board image](/build_arm_image_en)
@ -106,8 +109,11 @@
* [Roadmap](/roadmap)
* [Frequently asked questions](/faq_en)
* [Contributors](contribs)
- [Project organization](project_organization_fr)
* [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)

View file

@ -57,6 +57,7 @@
* [Connexion à son serveur avec SSH](/ssh_fr)
* [Administration avec la Moulinette](/moulinette_fr)
* [Administration web](/admin_fr)
* [Administration via l'API](/admin_api_fr)
* [Changer le mot de passe dadministration](/change_admin_password_fr)
* [Courrier électronique](email_fr)
* [Configuration dun client email](email_configure_client_fr)
@ -67,6 +68,7 @@
* [Ajouter un certificat dune autorité](/certificate_fr)
* [Régénérer le certificat auto-signé](/regenerate_certificate_fr)
* [Sécurité](/security_fr)
- [Contacter léquipe de sécurité](security_team_fr)
* [Consulter les fichiers de log du système](/check_logfile_fr)
* [Guide de dépannage](/troubleshooting_guide_fr)
* [YunoHost service caché Tor](/torhiddenservice_fr)
@ -89,10 +91,11 @@
* [Guide du contributeur](/contribute_fr)
* Développement
* [Créer un environnement de développement](dev_fr)
* [Créer un environnement de développement](ynh_dev_fr)
* [Présentation du fonctionnement de YunoHost](/package_list_fr)
* Applications :
* [Packager des applications](/packaging_apps_fr)
* [Introduction](packaging_apps_start_fr.md)
* [Manifeste](packaging_apps_manifest_fr)
* [Scripts](packaging_apps_scripts_fr)
* [Gestion des arguments](packaging_apps_arguments_management_fr)
@ -102,6 +105,7 @@
* [Usage de trap](packaging_apps_trap_fr)
* [Packages dapplications en cours de développement](/apps_in_progress_fr)
* [Liste de proposition dapplications](/apps_wishlist_fr)
* [Contribuer au cœur de YunoHost](/dev_fr)
* [Création de paquets système](/build_system_fr)
* [Création de paquets Debian](/build_packages_fr)
* [Créer une image pour carte ARM](/build_arm_image_en)
@ -117,9 +121,12 @@
* [Journal des modifications v.2.2](/changelog_2_2_en)
* [Feuille de route](/roadmap_en)
* [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)

4
try.md
View file

@ -1,7 +1,7 @@
#Try YunoHost
<div class="alert alert-warning" markdown="1">
**Note:** This demo server runs a **beta version** of the software and **will fail** from time to time.
**Note:** This demo server could be down from time to time.
<br>
If it does not work, do consider [trying it at home](/try_at_home).
@ -24,5 +24,5 @@ If it does not work, do consider [trying it at home](/try_at_home).
<p class="text-center" markdown="1">
***Demo server gracefully provided by
<a href="https://www.web4all.fr/" target="_blank"><img src="/images/web4all.png" width=100 style="vertical-align: center"></a>***
<a href="https://www.gitoyen.net" target="_blank">Gitoyen</a>***
</p>

View file

@ -1,7 +1,7 @@
#Essayer YunoHost
<div class="alert alert-warning" markdown="1">
**Note :** Cette démo tourne sous une **version bêta** du logiciel et **va cesser de fonctionner** de temps en temps.
**Note :** Cette démo peut cesser de fonctionner de temps en temps.
<br>
Si cela ne fonctionne pas, vous pouvez [essayer chez vous](/try_at_home_fr).
@ -24,7 +24,7 @@ Si cela ne fonctionne pas, vous pouvez [essayer chez vous](/try_at_home_fr).
<p class="text-center" markdown="1">
***Le serveur de démo est fourni généreusement par
<a href="https://www.web4all.fr/" target="_blank"><img src="/images/web4all.png" width=100 style="vertical-align: center"></a>***
<a href="https://www.gitoyen.net" target="_blank">Gitoyen</a>***
</p>

91
ynh_dev_fr.md Normal file
View file

@ -0,0 +1,91 @@
## Créer un environnement de développement
<div class="alert alert-info">
<b>Attention :</b> cette page de documentation nest plus à jour. Merci de vous référer à la [documentation du dépôt](https://github.com/YunoHost/ynh-dev).
</div>
Ce document a pour but de donner les clés pour créer un environnement de développement correct afin de développer sur le cœur de YunoHost. Il peut également vous permettre de tester vos applications que ce soit avec les versions `stable`, `testing`, `unstable` ou même des versions customisées issues des branches des dépôts.
### Installation de lenvironnement de développement
#### Installation du système de virtualisation
Installer, avec le gestionnaire de paquet de votre système dexploitation, Vagrant.
```bash
# Debian, Ubuntu, Mint
sudo apt-get install vagrant
# Fedora
sudo dnf install vagrant
```
#### Télécharger `ynh-dev`
<div class="alert alert-warning">
<b>Attention :</b> Cette partie est en cours de rédaction. La ligne de commande `ynh-dev` vient juste dêtre créée il est possible quil y ait des manques.
</div>
Une ligne de commande `ynh-dev` a été créée afin de simplifier la gestion de votre environnement de développement.
```bash
wget https://raw.githubusercontent.com/yunohost/ynh-dev/master/ynh-dev
chmod u+x ynh-dev
```
Pour créer votre environnement, commencez par faire un `create-env`
```bash
./ynh-dev create-env ~/project/my/yunohost/env
```
Cette sous commande va cloner les dépôts principaux au fonctionnement de YunoHost et les positionner en `unstable`. Si vous avez vos propres fork, vous pouvez ensuite faire ce quil faut pour changer lorigine et le remote repository.
#### Usage
##### Lancer un container
Positionner vous dans votre environnement, puis créer et entrer dans une vm à laide de `ynh-dev run`
```bash
cd ~/project/my/yunohost/env
./ynh-dev run exemple.local stable8
root@yunohost:/# cd yunohost
root@yunohost:/yunohost/# ls
Dockerfile LICENSE README.md SSOwat apps backup moulinette ynh-dev yunohost yunohost-admin yunohost-vagrant
```
##### Mettre à jour un container
Si la vm nest pas à jour lancez un `ynh-dev upgrade` :
```bash
root@yunohost:/yunohost/# ./ynh-dev upgrade
```
##### Déployer les sources présentes dans votre environnement
Pour déployer les sources se trouvant dans votre environnement de développement faites :
```bash
root@yunohost:/yunohost/# ./ynh-dev deploy
```
<div class="alert alert-warning">
<b>Attention :</b> pour yunohost-admin vous devez avoir compilé le js avec gulp au préalable
</div>
<div class="alert alert-warning">
<b>Note :</b> vous pouvez sélectionner les paquets à déployer exemple : `./ynh-dev deploy yunohost yunohost-admin`
</div>
##### Lancer la postinstall
Avec VirtualBox/Vagrant
```bash
root@yunohost:/yunohost/# yunohost tools postinstall
```
##### Récupérer lIP de la vm et paramétrer son `/etc/hosts`
si vous ne connaissez pas lIP de votre vm :
```bash
root@yunohost:/yunohost/# ./ynh-dev ip
172.17.0.1
```
Pour tester dans votre navigateur vous pouvez modifier votre fichier `/etc/hosts` afin de faire pointer votre domaine sur la bonne adresse IP. Par exemple en y ajoutant une ligne semblable à celle-ci :
```bash
172.17.0.1 exemple.local
```
##### Déployer les sources au fur et à mesure des modifications
```bash
root@yunohost:/yunohost/# ./ynh-dev watch
```
Astuce : dans le cas de modification sur yunohost-admin, cette commande est très pratique couplée avec un `gulp watch` sur la machine hôte.