Merge branch 'master' of https://github.com/YunoHost/doc into dev-redact-doc

This commit is contained in:
Plumf 2020-04-17 13:58:43 +02:00
commit bbb75b6182
84 changed files with 1379 additions and 980 deletions

26
XMPP.md
View file

@ -18,28 +18,28 @@ You can connect to your YunoHost XMPP account in different ways.
### Web clients
- [Movim](https://pod.movim.eu)
- [Libervia/Salut à Toi](http://salut-a-toi.org/).
- [Movim](https://movim.eu)
- [ConverseJS](https://conversejs.org/)
- [Libervia/Salut à Toi](https://salut-a-toi.org/)
### Desktop clients
- [Pidgin](http://pidgin.im/) (multiplatform),
- [Gajim](http://gajim.org/) (Linux, Windows),
- [Dino](https://dino.im) (Linux),
- [Thunderbird](https://www.thundebird.net/) (multiplatform),
- [Jitsi](http://jitsi.org/) (multiplatform)
- [Adium](https://adium.im/) (Mac OS).
- [Gajim](http://gajim.org/) (Linux,Windows)
- [Dino](https://dino.im) (Linux)
- [Thunderbird](https://www.thunderbird.net/fr/) (multiplatform)
- [Beagle IM](https://beagle.im/) (Mac OS)
- [Profanity](https://profanity-im.github.io/) (Linux)
### Mobile clients
- [Xabber](http://xabber.com) (Android)
- [Conversations](https://conversations.im/) (Android)
- [Xabber](http://xabber.com) (Android)
- [Movim under Android](https://movim.eu)
- [Monal](https://itunes.apple.com/us/app/monal-free-xmpp-chat/id317711500?mt=8) (iOS)
- [Kaidan](https://github.com/KaidanIM/Kaidan) (Ubuntu Touch / Plasma Mobile)
- [Monal](https://monal.im/) (iOS)
- [Siskin IM](https://siskin.im/) (iOS)
- [Kaidan](https://www.kaidan.im/) (Ubuntu Touch / Plasma Mobile)
Here is an exhaustive list of XMPP clients : https://en.wikipedia.org/wiki/Comparison_of_XMPP_clients
Here is an exhaustive list of XMPP clients : https://xmpp.org/software/clients.html
## Encrypt conversations with OMEMO

View file

@ -1,4 +1,4 @@
#Chat, VoIP y red local con <img src="/images/XMPP_logo.png" width=100>
# Chat, VoIP y red local con <img src="/images/XMPP_logo.png" width=100>
Yunohost está instalado con un servidor de mensajería instantánea Metronome que implementa el [protocolo XMPP](https://es.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol).
@ -6,31 +6,32 @@ XMPP es un protocolo abierto y extensible que también permite crear salones de
Todas las aplicaciones basadas en XMPP son compatibles entre ellas : cuando utilizas un cliente XMPP puedes discutir con cualquier persona que tenga una cuenta XMPP/Jabber. Este protocolo ya es utilizado por millones de personas en el mundo.
### Cuenta XMPP/Jabber
## Cuenta XMPP/Jabber
Una cuenta XMPP/Jabber está basada en un ID bajo la forma `usuario@dominio.tld`, así como una contraseña. La contraseña es la de la cuenta del usuario de Yunohost.
### Conectarse a XMPP
## Conectarse a XMPP
Existen varios clientes web de tipo red social, como :
- [Movim](https://pod.movim.eu)
- [Libervia/Salut à Toi](http://salut-a-toi.org/).
- [Movim](https://movim.eu)
- [ConverseJS](https://conversejs.org/)
- [Libervia/Salut à Toi](https://salut-a-toi.org/)
También puedes utilizar un cliente Desktop como :
- [Pidgin](http://pidgin.im/) (multiplataformas),
- [Gajim](http://gajim.org/index.fr.html) (Linux, Windows),
- [Dino](https://dino.im) (Linux),
- [Thunderbird](https://www.mozilla.org/fr/thunderbird/) (multiplataformas),
- [Jitsi](http://jitsi.org/) (multiplataformas)
- [Adium](https://adium.im/) (Mac OS).
También puedes utilizar un cliente Desktop como :
- [Gajim](https://gajim.org/es/) (Linux, Windows)
- [Dino](https://dino.im) (Linux)
- [Thunderbird](https://www.thunderbird.net/es-ES/) (multiplataformas)
- [Profanity](https://profanity-im.github.io/) (Linux)
... o un cliente smartphone :
* [Xabber](http://xabber.com) (Android)
* [Conversations](https://conversations.im/) (Android)
* [Movim sous Android](https://movim.eu)
* [Monal](https://itunes.apple.com/us/app/monal-free-xmpp-chat/id317711500?mt=8) (iOS)
- [Conversations](https://conversations.im/) (Android)
- [Xabber](http://xabber.com) (Android)
- [Movim sous Android](https://movim.eu)
- [Siskin IM](https://siskin.im/) (iOS)
- [Monal](https://monal.im/) (iOS)
- [Kaidan](https://www.kaidan.im/) (Ubuntu Touch / Plasma Mobile)
Aquí tienes una lista más exhaustiva de clientes XMPP (fr) : https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP
Aquí tienes una lista más exhaustiva de clientes XMPP (en) : https://xmpp.org/software/clients.html
### Cifrar tu conversaciones con OMEMO :

View file

@ -18,25 +18,26 @@ Il existe différents types de clients pour se connecter à XMPP.
### Clients web
- [Movim](https://pod.movim.eu)
- [Libervia/Salut à Toi](http://salut-a-toi.org/).
- [Movim](https://movim.eu)
- [ConverseJS](https://conversejs.org/)
- [Libervia/Salut à Toi](https://salut-a-toi.org/)
### Clients de bureau
- [Pidgin](http://pidgin.im/) (multiplateforme),
- [Gajim](http://gajim.org/index.fr.html) (Linux, Windows),
- [Dino](https://dino.im) (Linux),
- [Thunderbird](https://www.mozilla.org/fr/thunderbird/) (multiplateforme),
- [Jitsi](http://jitsi.org/) (multiplateforme)
- [Adium](https://adium.im/) (Mac OS).
- [Gajim](http://gajim.org/fr/) (Linux,Windows)
- [Dino](https://dino.im) (Linux)
- [Thunderbird](https://www.thunderbird.net/) (multiplateforme)
- [Beagle IM](https://beagle.im/) (Mac OS)
- [Profanity](https://profanity-im.github.io/) (Linux)
### Clients sur mobile
* [Xabber](http://xabber.com) (Android)
* [Conversations](https://conversations.im/) (Android)
* [Movim sous Android](https://movim.eu)
* [Monal](https://itunes.apple.com/us/app/monal-free-xmpp-chat/id317711500?mt=8) (iOS)
- [Kaidan](https://github.com/KaidanIM/Kaidan) (Ubuntu Touch / Plasma Mobile)
- [Conversations](https://conversations.im/) (Android)
- [Xabber](http://xabber.com) (Android)
- [Movim sous Android](https://movim.eu)
- [Monal](https://monal.im/) (iOS)
- [Siskin IM](https://siskin.im/) (iOS)
- [Kaidan](https://www.kaidan.im/) (Ubuntu Touch / Plasma Mobile)
Voici une liste plus exhaustive des clients XMPP : https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP

View file

@ -26,6 +26,7 @@
* [Web administration interface](/admin)
* [SSH](/ssh) and [command-line administration](/commandline)
* [Users and the SSO](/users)
* [Groups and permissions](/groups_and_permissions)
* [Applications](/apps_overview)
* [Domains, DNS and certificates](/domains)
* [Email](/email)
@ -44,7 +45,7 @@
* [Hide services with Tor](/torhiddenservice)
* [A discussion about the advantages of using a VPN](/vpn_advantage)
* [(old) Jessie->Stretch migration procedure](jessie_stretch_migration)
* [Troubleshooting guide](/troubleshooting_guide)
* Troubleshooting
* [Changing the administration password](/change_admin_password)
* [Recover access to your server](/noaccess)
* [Unban IPs in iptables/fail2ban](/fail2ban)

View file

@ -40,6 +40,6 @@
* [Für externen Speicher hinzu](/external_storage)
* [Migriere E-Mails zu Yunohost](/email_migration)
* [Verstecke Services mit Tor](/torhiddenservice)
* [Hinweise zur Fehlersuche](/troubleshooting_guide)
* Hinweise zur Fehlersuche
* [Entsperren von IPs in fail2ban](/fail2ban)
* [Administrator-Passwort ändern](/change_admin_password)

View file

@ -26,6 +26,7 @@
* [L'interface d'administration web](/admin)
* [SSH](/ssh) et [l'administration en ligne de commande](/commandline)
* [Les utilisateurs et le SSO](/users)
* [Les groupes et les permissions](/groups_and_permissions)
* [Les applications](/apps_overview)
* [Les domaines, la configuration DNS et les certificats](/domains)
* [Les emails](/email)
@ -55,7 +56,7 @@
* [Utilisation de certificats autres que Let's Encrypt](/certificate_custom)
* [Une discussion sur les avantages d'utiliser un VPN](/vpn_advantage)
* [(vieux) Procedure de Migration Jessie->Stretch](jessie_stretch_migration)
* [Guide de dépannage](/troubleshooting_guide)
* Dépannage
* [Changer le mot de passe dadministration](/change_admin_password)
* [Récupérer l'accès à son serveur](/noaccess)
* [Débannir une IP dans Fail2ban/IPtables](/fail2ban)

View file

@ -128,7 +128,7 @@ Run a scan of the new directory by Nextcloud:
```bash
cd /var/www/nextcloud
sudo -u nextcloud php occ files:scan --all
sudo -u nextcloud php7.3 occ files:scan --all
```
It's over now. Now test if everything is fine, try connecting to your Nextcloud instance, upload a file, check its proper synchronization.

View file

@ -128,7 +128,7 @@ Lancez un scan du nouveau répertoire par Nextcloud:
```bash
cd /var/www/nextcloud
sudo -u nextcloud php occ files:scan --all
sudo -u nextcloud php7.3 occ files:scan --all
```
C'est terminé. À présent testez si tout va bien, essayez de vous connecter à votre instance Nextcloud, envoyer un fichier, vérifiez sa bonne synchronisation.

View file

@ -36,4 +36,4 @@ cd /home/yunohost.transmission/completed
zip -r your_archive.zip [dossier]
```
More informations about file transfer using *scp*: http://doc.ubuntu-fr.org/ssh#transfert_-_copie_de_fichiers (french, need english documentation)
More informations about file transfer using *scp*: http://doc.ubuntu-fr.org/ssh#transfert_-_copie_de_fichiers (french, need english documentation)

View file

@ -23,7 +23,7 @@ utilisateur = admin ou root
Pour transférer le fichier, entrez la commande suivante :
```bash
scp -r /votre/fichier/ root@votre-domaine.org:/home/yunohost.transmission/completed
scp -r /votre/fichier/ admin@votre-domaine.org:/home/yunohost.transmission/completed
```
##### Comment télécharger un répertoire entier?

View file

@ -37,7 +37,7 @@ Some applications support the ability to be installed several times (at differen
User access management
----------------------
Access to apps can be restricted to some users only. This can be configured via the webadmin in Applications > (choose an app) > Access, or similarly via the command line `yunohost app addaccess`, `removeaccess` and `clearaccess`.
Access to apps can be restricted to some users only. This can be configured via the webadmin in the [Groups and permissions panel](/groups_and_permissions), or similarly via the command-line subcategory `yunohost user permission`.
Packaging applications
----------------------

View file

@ -37,7 +37,7 @@ Certaines applications peuvent être installées plusieurs fois (à différents
Gestion de l'accès des utilisateurs
----------------------
L'accès aux applications peut être limité à certains utilisateurs seulement. Ceci peut être configuré via la webadmin dans Applications > (une application) > Accès, ou de la même manière via les commandes `yunohost app addaccess`, `removeaccess` et `clearaccess`.
L'accès aux applications peut être limité à certains utilisateurs seulement. Ceci peut être configuré via la webadmin sur la page [Groupes et permissions](groups_and_permissions), ou de la même manière via la sous-catégorie de commandes `yunohost user permission`.
Packaging d'applications
------------------------

View file

@ -16,6 +16,7 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Auth0 SSO Dashboard](https://github.com/auth0-extensions/auth0-sso-dashboard-extension)
- [Bitmessage](https://bitmessage.org/wiki/Compiling_instructions) / [github](https://github.com/Bitmessage/PyBitmessage)
- [Beehive](https://github.com/muesli/beehive)
- [BigBlueButton](https://bigbluebutton.org) / [install instruction](http://docs.bigbluebutton.org/2.2/install.html) / [github](https://github.com/bigbluebutton/bigbluebutton) Complete open source web conferencing system.
- [Bludit](https://www.bludit.com) / [github](https://github.com/bludit/bludit)
- [Blynk](https://github.com/blynkkk/blynk-library)
- [Bookstack](https://www.bookstackapp.com/) / [github](https://github.com/BookStackApp/BookStack)
@ -38,6 +39,7 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [ERPnext](https://erpnext.com/download) / [github](https://github.com/frappe/erpnext)
- [EteSync](https://www.etesync.com/) / [github](https://github.com/etesync)
- [Epicyon](https://epicyon.net/) / [gitlab](https://gitlab.com/bashrc2/epicyon)
- [Ferdi server](https://github.com/getferdi/server) is the server to self host the data and configuration of the [ferdi](https://getferdi.com/) messaging aggregator client.
- [FEX](http://fex.rus.uni-stuttgart.de/)
- [FitTrackee](https://github.com/SamR1/FitTrackee)
- [Fossil](http://www.fossil-scm.org)
@ -91,7 +93,9 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Netrunner](https://github.com/mtgred/netrunner)
- [Nibbleblog](http://www.nibbleblog.com)/ [github](https://github.com/dignajar/nibbleblog)
- [Nuage](https://nuage.kerjean.me/login) / [github](https://github.com/mickael-kerjean/filestash)
- [OhMyForm](https://github.com/ohmyform) (Only support Docker install way and some VPS aren't compatible, see TellForm which support non-Docker install but is discontinued)
- [Ombi](https://github.com/tidusjar/Ombi)
- [Omeka S](https://omeka.org/s/) / [github](https://github.com/omeka/omeka-s)
- [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar)
- [OpenCart](https://www.opencart.com) / [github](https://github.com/opencart/opencart)
- [openHAB](https://www.openhab.org/) - Smart home platform. / [github](https://github.com/openhab)
@ -132,11 +136,14 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Syspass](http://www.syspass.org/) / [github](https://github.com/nuxsmin/sysPass)
- [Taiga](https://taiga.io) / [github](https://github.com/taigaio/)
- [Taskwarrior](https://taskwarrior.org) / [github](https://github.com/GothenburgBitFactory/taskwarrior)
- [Technitium DNS](https://technitium.com/dns/) / [github](https://github.com/TechnitiumSoftware/DnsServer)
- [TellForm](https://github.com/tellform/tellform) (Discontinued (see OhMyForm) but it can be great to have it since OhMyForm does only support Docker install)
- [TMate](https://tmate.io/) / [github](https://github.com/tmate-io/tmate)
- [Tracim](https://github.com/tracim/tracim)
- [Thredded](https://thredded.org/) / [github](https://github.com/thredded/thredded)
- [Twister](http://twister.net.co) / [github](https://github.com/miguelfreitas/twister-core/)
- [TwitRSS.me](http://twitrss.me/) / [Github](https://github.com/ciderpunx/twitrssme) Scrapes Twitter to create RSS feeds.
- [Uwazi](https://www.uwazi.io/) / [Github](https://github.com/huridocs/uwazi)
- [Volumio](https://volumio.org) / [github](https://github.com/volumio)
- [WebODF](http://webodf.org) / [github](https://github.com/webodf/WebODF)
- [Webhook.site](https://docs.webhook.site/) / [github](https://github.com/fredsted/webhook.site)
@ -149,3 +156,4 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Zoneminder](https://github.com/ZoneMinder/zoneminder)
- [Zulip](https://zulipchat.com/) / [github](https://github.com/zulip/zulip)
- [Yggdrasil](https://yggdrasil-network.github.io/) / [github](https://github.com/yggdrasil-network/yggdrasil-go)
- [WiseMapping](http://www.wisemapping.com/inyourserver.html) / [developpement](https://bitbucket.org/wisemapping/wisemapping-open-source)

View file

@ -1,7 +1,7 @@
Sauvegarder son serveur et ses apps
===================================
Dans le contexte de l'auto-hébergement, les sauvegardes (backup) sont un élément important pour palier les événements inattendus (incendies, corruption de base de données, perte d'accès au serveur, serveur compromis, ...). La politique de sauvegardes à mettre en place dépend de l'importance des services et des données que vous gérez. Par exemple, sauvegarder un serveur de test aura peu d'intérêt, tandis que vous voudrez être très prudent si vous gérez des données critiques pour une association ou une entreprise - et dans ce genre de cas, vous souhaiterez stocker les sauvegardes *dans un endroit différent*.
Dans le contexte de l'auto-hébergement, les sauvegardes (backup) sont un élément important pour pallier les événements inattendus (incendies, corruption de base de données, perte d'accès au serveur, serveur compromis, ...). La politique de sauvegardes à mettre en place dépend de l'importance des services et des données que vous gérez. Par exemple, sauvegarder un serveur de test aura peu d'intérêt, tandis que vous voudrez être très prudent si vous gérez des données critiques pour une association ou une entreprise - et dans ce genre de cas, vous souhaiterez stocker les sauvegardes *dans un endroit différent*.
Les sauvegardes avec YunoHost
-----------------------------
@ -10,7 +10,7 @@ YunoHost contient un système de sauvegarde, qui permet de sauvegarder (et resta
Vous pouvez gérer vos sauvegardes via la ligne de commande (`yunohost backup --help`) ou la webadmin (dans la section Sauvegardes) bien que certaines fonctionnalités ne soient pas disponibles via celle-ci.
Actuellement, la méthode de sauvegarde actuelle consiste à créer des archives `.tar.gz` qui contiennent les fichiers pertinents. Pour le futur, YunoHost envisage de supporter nativement [Borg](https://www.borgbackup.org/) qui est une solution plus flexible, performante et puissante pour gérer des sauvegardes.
La méthode de sauvegarde actuelle consiste à créer des archives `.tar.gz` qui contiennent les fichiers pertinents. Pour le futur, YunoHost envisage de supporter nativement [Borg](https://www.borgbackup.org/) qui est une solution plus flexible, performante et puissante pour gérer des sauvegardes.
Créer des sauvegardes
---------------------
@ -25,7 +25,7 @@ Vous pouvez facilement créer des archives depuis la webadmin en allant dans Sau
Vous pouvez créer de nouvelles archives depuis la ligne de commande. Voici quelques exemples de commandes et leur comportement correspondant:
- Tout sauvegarder (système et application)
- Tout sauvegarder (système et apps)
```bash
yunohost backup create
```
@ -35,7 +35,7 @@ yunohost backup create
yunohost backup create --apps
```
- Sauvegarder seulement deux apps (wordpress et shaarli)
- Sauvegarder seulement deux apps (WordPress et Shaarli)
```bash
yunohost backup create --apps wordpress shaarli
```
@ -45,19 +45,19 @@ yunohost backup create --apps wordpress shaarli
yunohost backup create --system data_mail
```
- Sauvegarder les mails et wordpress
- Sauvegarder les mails et WordPress
```bash
yunohost backup create --system data_mail --apps wordpress
```
Pour plus d'informations et d'options sur la création d'archives, consultez `yunohost backup create --help`. Vous pouvez également lister les parties de système qui sont sauvegardables avec `yunohost hook list backup`.
Pour plus d'informations et d'options sur la création d'archives, consultez `yunohost backup create --help`. Vous pouvez également lister les parties du système qui sont sauvegardables avec `yunohost hook list backup`.
#### Configuration spécifique à certaines apps
Certaines apps comme Nextcloud sont potentiellement rattachées à des quantités importantes de données. Il est possible de ne pas les sauvegarder par défaut. Dans ce cas, on dit que l'app "sauvegarde uniquement le core" (de l'app).
Lors d'une mise à jour, les apps contenant une grande quantité de données effectuent généralement une sauvegarde sans ces données.
Pour désactiver manuellement la sauvegarde des données volumineuses, pour les applications qui implémentent cette fonctionnalité, vous pouvez définir la variable `BACKUP_CORE_ONLY`. Pour ce faire, la variable doit être définie avant la commande de backup : `sudo BACKUP_CORE_ONLY=1 yunohost backup create --apps nextcloud`. Soyez prudent : il vous faudra alors sauvegarder vous même les données des utilisateurs de nextcloud. Choisir ce type de sauvegarde vous permettra de mettre en place manuellement des sauvegardes incrémentielles ou différentielles (que yunohost ne permet pas encore de faire automatiquement).
Pour désactiver manuellement la sauvegarde des données volumineuses, pour les applications qui implémentent cette fonctionnalité, vous pouvez définir la variable `BACKUP_CORE_ONLY`. Pour ce faire, la variable doit être définie avant la commande de backup : `sudo BACKUP_CORE_ONLY=1 yunohost backup create --apps nextcloud`. Soyez prudent : il vous faudra alors sauvegarder vous-même les données des utilisateurs de Nextcloud. Choisir ce type de sauvegarde vous permettra de mettre en place manuellement des sauvegardes incrémentielles ou différentielles (que YunoHost ne permet pas encore de faire automatiquement).
Télécharger et téléverser des sauvegardes
-----------------------------------------
@ -91,7 +91,7 @@ Allez dans Sauvegardes > Sauvegardes locales et sélectionnez l'archive. Vous po
#### Depuis la ligne de commande
Depuis la ligne de commande, vous pouvez utiliser `yunohost backup restore <nom_d'archive>` (sans le `.tar.gz`) pour restaurer une archive. Tout comme `yunohost backup create`, cela restaure tout le contenu par défaut. Si vous souhaitez restaurer seulement certaines parties, vous pouvez utiliser par exemple `yunohost backup restore --apps wordpress` qui restaurera seulement l'app wordpress.
Depuis la ligne de commande, vous pouvez utiliser `yunohost backup restore <nom_d'archive>` (sans le `.tar.gz`) pour restaurer une archive. Tout comme `yunohost backup create`, cela restaure tout le contenu par défaut. Si vous souhaitez restaurer seulement certaines parties, vous pouvez utiliser par exemple `yunohost backup restore --apps wordpress` qui restaurera seulement l'app WordPress.
#### Contraintes
@ -131,7 +131,7 @@ ln -s $PATH_TO_DRIVE/yunohost_backup_archives /home/yunohost.backup/archives
#### Sauvegardes automatiques
Vous pouvez ajouter une tâche cron pour déclencher automatiquement une sauvegarde régulièrement. Par exemple pour sauvegarder l'application wordpress toutes les semaines, créez un fichier `/etc/cron.weekly/backup-wordpress` avec le contenu suivant :
Vous pouvez ajouter une tâche cron pour déclencher automatiquement une sauvegarde régulièrement. Par exemple pour sauvegarder l'application WordPress toutes les semaines, créez un fichier `/etc/cron.weekly/backup-wordpress` avec le contenu suivant :
```bash
#!/bin/bash
@ -151,7 +151,7 @@ Vous pouvez suivre ce tutoriel sur le forum pour mettre en place Borg entre deux
Il existe aussi l'application Archivist qui permet un système similaire : https://forum.yunohost.org/t/new-app-archivist/3747
#### Eviter de sauvegarder certains dossiers
#### Éviter de sauvegarder certains dossiers
Si besoin, vous pouvez spécifier que certains dossiers `home` d'utilisateurs ne soient pas sauvegardés par la commande `yunohost backup`, en créant un fichier vide nommé `.nobackup` à l'intérieur.
#### Backup complet avec `dd`

View file

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

View file

@ -45,7 +45,7 @@ Notre support est communautaire et sappuie sur des contributeurs comme vous.
</div>
<div dir="rtl" 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>
Découvrez [comment contribuer](/dev), 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> !
Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) !
</div>
</div>
@ -80,7 +80,7 @@ Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discus
<div class="col col-md-8" markdown="1">
Étendez les capacités de YunoHost en [packageant de nouveaux services et applications web](/packaging_apps). Jetez un œil à [ce qui a déjà été fait](/apps)!
<br>
Un [salon de développement](xmpp:dev@conference.yunohost.org?join) et une <a href="http://list.yunohost.org/cgi-bin/mailman/listinfo/apps">mailing-list</a> est également disponible.
Un [salon de développement](xmpp:dev@conference.yunohost.org?join) est également disponible.
</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>
Découvrez [comment contribuer](/dev), 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> !
Découvrez [comment contribuer](/dev), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) !
</div>
</div>

View file

@ -10,6 +10,7 @@
* [Apps wishlist](/apps_wishlist)
* [General introduction to app packaging](/packaging_apps_start)
* [Technical introduction to app packaging](/packaging_apps)
* [How to use Git to package apps](/packaging_apps_git)
* [Setting up a dev environment with VirtualBox](/packaging_apps_virtualbox)
* [Manifest](packaging_apps_manifest)
* [Scripts](packaging_apps_scripts)

View file

@ -10,6 +10,7 @@
* [Liste d'applications souhaitées par la communauté](/apps_wishlist)
* [Introduction générale au packaging d'apps](/packaging_apps_start)
* [Introduction technique au packaging d'apps](/packaging_apps)
* [Comment utiliser Git pour packager les applications](/packaging_apps_git)
* [Déployer un environnement de développement avec VirtualBox](/packaging_apps_virtualbox)
* [Manifest](/packaging_apps_manifest)
* [Scripts](/packaging_apps_scripts)

View file

@ -1,10 +1,10 @@
## Contribuer au cœur de YunoHost
Vous souhaitez ajouter une nouvelle fonctionnalité au cœur de YunoHost, mais ne
savez pas comment procéder ? Ce guide parcours les étapes du développement et du
savez pas comment procéder ? Ce guide parcourt les étapes du développement et du
processus de contribution.
Si vous chercher quelque chose à implémenter ou un bug à réparer, le
Si vous cherchez quelque chose à implémenter ou un bug à réparer, le
bug tracker est [ici](https://github.com/yunohost/issues/issues) !
**Venez dire coucou sur le [salon de dev](/chat_rooms)** !
@ -34,15 +34,14 @@ C'est un petit framework "fait maison". [Son rôle principal](https://moulinette
est de permettre de construire une API Web et une API en ligne de commande à partir d'un même code Python et d'un schéma YAML que nous appelons
[l'actionmap] (https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/actionsmap/yunohost.yml).
Il prend en charge d'autres mécanismes tels que l'authentification, l'internationalisation
et des petites fonctions utilitaires techniques (par ex. lecture/écriture de fichiers json).
Il prend en charge d'autres mécanismes tels que l'authentification, l'internationalisation et des petites fonctions utilitaires techniques (par ex. lecture/écriture de fichiers json).
Moulinette dispose de sa propre documentation [ici](https://moulinette.readthedocs.io/en/latest/).
##### Yunohost
##### YunoHost
C'est le coeur même de YunoHost. Il contient :
- [le code python](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost) qui gère les utilisateurs, domaines, applications, services et autres
- [le code Python](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost) qui gère les utilisateurs, domaines, applications, services et autres
- des [helpers bash](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/helpers.d) principalement utilisés par les packageurs d'applications dans les scripts de ces applications
- des [hooks](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/hooks) et [templates](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/templates) qui sont utilisés pour configurer les différents éléments de l'écosystème tels que nginx, postfix, ....
- des [chaînes internationalisées](https://github.com/YunoHost/yunohost/tree/stretch-unstable/locales)
@ -52,18 +51,18 @@ C'est le coeur même de YunoHost. Il contient :
C'est le système de connexion unique (single sign-on) de YunoHost. Il contient principalement:
- [du code LUA](https://github.com/YunoHost/ssowat) interfacé directement avec nginx et qui gère tous les aspects "techniques" de l'authentification et de la gestion des accès aux ressources.
- le [portail web utilisateur](https://github.com/YunoHost/SSOwat/tree/stretch-unstable/portal) qui est l'interface finale visible pour les utilisateurs de YunoHost
- le [portail web utilisateur](https://github.com/YunoHost/SSOwat/tree/stretch-unstable/portal) qui est l'interface finale visible par les utilisateurs de YunoHost
SSOwat est configuré via `/etc/ssowat/conf.json` qui est généré par YunoHost.
##### Yunohost-admin
##### YunoHost-admin
C'est une dépendance *optionnelle* de YunoHost et correspond à une interface pour l'API web créée par YunoHost et Moulinette (service `yunohost-api`).
Il contient essentiellement :
- [des templates pour les vues](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/views)
- les [contrôleurs javascript](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/js/yunohost/controllers) correspondants, qui interagissent avec l'API Yunohost
- et es [chaînes internationalisées](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/locales)
- les [contrôleurs JavaScript](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/js/yunohost/controllers) correspondants, qui interagissent avec l'API YunoHost
- et ses [chaînes internationalisées](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/locales)
### Travailler sur le cœur Python / ligne de commande
@ -79,7 +78,7 @@ Il contient essentiellement :
`domain`, l'action est `add` et `some.domain.tld` est un argument.
- Moulinette va automatiquement faire le lien entre les commandes de
l'actionsmap et les fonctions python (ainsi que leurs arguments) dans
l'actionsmap et les fonctions Python (ainsi que leurs arguments) dans
`src/yunohost/`. Par exemple, `yunohost domain add some.domain.tld`
déclenchera un appel de `domain_add(domainName)` dans `domain.py`, avec l'argument
`domainName` qui vaudra `"some.domain.tld"`.
@ -92,9 +91,9 @@ Il contient essentiellement :
et mettez le message correspondant dans `locales/en.json`. Vous pouvez aussi
utiliser des arguments pour construire les messages, avec `{{some-argument:s}}`.
Ne modifiez pas de fichiers de locales autres que en.json, la traduction sera
faite avec [weblate](https://translate.yunohost.org/) !
faite avec [Weblate](https://translate.yunohost.org/) !
- YunoHost essaye de suivre le style de code [pep8](http://pep8.org/). Des
- YunoHost essaye de suivre le style de code [PEP8](http://pep8.org/). Des
outils existent pour vérifier automatiquement la conformité du code.
- Mettre un `_` devant les noms des fonctions "privées".
@ -105,36 +104,36 @@ Il contient essentiellement :
- Exécutez `cd /ynh-dev && ./ynh-dev use-git yunohost-admin`. Ceci lance gulp, de sorte
qu'à chaque fois que vous modifiez les sources, il recompilera le code
(js) et vous pourrez voir les changements dans le navigateur web (Ctrl+F5).
(JS) et vous pourrez voir les changements dans le navigateur web (Ctrl+F5).
Pour stopper la commande, faites simplement Ctrl+C.
- L'interface web utilise une API pour communiquer avec YunoHost. Les
commandes/requêtes de l'API sont également définies dans l'actionsmap. Par
exemple, accéder à la page ```https://domain.tld/yunohost/api/users```
correspond à une requete `GET /users` vers l'API YunoHost. Cette requête
correspond à une requête `GET /users` vers l'API YunoHost. Cette requête
est mappée sur `user_list()`. Accéder à cette URL devrait afficher le json
retourné par cette fonction. Les requêtes 'GET' sont typiquement destinées à
demander de l'information au serveur, tandis que les requêtes 'POST' sont
destinées à demander au serveur de modifier/changer des informations ou de
réaliser des actions.
- `js/yunohost/controllers` contiens les parties javascript, et définit quelles
- `js/yunohost/controllers` contient les parties JavaScript, et définit quelles
requêtes faire à l'API pendant le chargement d'une page donnée de l'interface,
et comment traiter les données récupérées pour générer la page, en utilisant
des templates.
- `views` contient les templates des pages de l'interface. Dans le template,
les données venant du javascript peuvent êtres utilisées avec la syntaxe
les données venant du JavaScript peuvent être utilisées avec la syntaxe
`{{some-variable}}`, qui sera remplacée pendant la construction de la page.
Il est également possible d'avoir des conditions avec la syntaxe
d'[handlebars.js](http://handlebarsjs.com) : ```{{#if
some-variable}}<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
dans le JavaScript, ou `{{t 'some-string-code'}}` dans le template HTML, et
mettez votre message dans `locales/en.json`. Ne modifiez pas de fichiers de
locales autres que en.json, la traduction sera faite avec
[weblate](https://translate.yunohost.org/) !
[Weblate](https://translate.yunohost.org/) !
##### N'oubliez pas
@ -143,7 +142,7 @@ Il contient essentiellement :
(Il faudra retaper le mot de passe administrateur dans l'interface web)
- Il faudra peut-être régulièrement forcer le rafraîchissement du cache
navigateur pour propager correctement le javascript et/ou HTML (à chaque fois
navigateur pour propager correctement le JavaScript et/ou HTML (à chaque fois
que l'on change quelque chose dans `js` ou `views`, donc).
@ -151,7 +150,7 @@ Il contient essentiellement :
- Forkez le dépòt correspondant sur Github, et commitez vos changements dans
une nouvelle branche, Il est recommandé de nommer la branche avec la
convention :
convention suivante :
- Pour une nouvelle fonctionnalité ou amélioration : `enh-ISSUENUMBER-description-fonctionnalité`
- Pour une correction de bug : `fix-REDMINETICKET-description-correctif`
- `ISSUENUMBER` est optionnel et correspond au numéro du ticket sur le bug tracker

View file

@ -9,7 +9,7 @@ Dans un navigateur web, essayez daccéder à votre serveur grâce au nom de d
Par exemple : `http://mondomaine.org`
<div class="alert alert-warning">
Si vous avez optez pour un nom de domaine se terminant par <b>.nohost.me</b> ou <b>.noho.st</b>, vous devrez patienter cinq minutes avant que ladresse soit atteignable.
Si vous avez opté pour un nom de domaine se terminant par <b>.nohost.me</b> ou <b>.noho.st</b>, vous devrez patienter cinq minutes avant que ladresse soit atteignable.
</div>
---
@ -24,7 +24,7 @@ Si vous avez optez pour un nom de domaine se terminant par <b>.nohost.me</b> ou
Cette étape nest pas nécessaire si vous possédez un nom de domaine en <b>.nohost.me</b> ou un <b>.noho.st</b>
</div>
Rendez-vous sur https://www.whatsmydns.net/, entrez votre nom de domaine dans le champ prévu à cet effet et cliquez sur `Search`. Si vous ne voyez pas votre adresse IP, ou sil y a des croix rouges par endroit, cela signifie que vous avez probablement mal configuré votre [DNS](/dns).
Rendez-vous sur https://www.whatsmydns.net/, entrez votre nom de domaine dans le champ prévu à cet effet et cliquez sur `Search`. Si vous ne voyez pas votre adresse IP, ou sil y a des croix rouges par endroits, cela signifie que vous avez probablement mal configuré votre [DNS](/dns).
---

View file

@ -42,6 +42,7 @@ _xmpp-server._tcp 3600 IN SRV 0 5 5269 your.domain.tld.
muc 3600 IN CNAME @
pubsub 3600 IN CNAME @
vjud 3600 IN CNAME @
xmpp-upload 3600 IN CNAME @
#
# Mail (MX, SPF, DKIM and DMARC)

View file

@ -44,6 +44,7 @@ _xmpp-server._tcp 3600 IN SRV 0 5 5269 votre.domaine.tld.
muc 3600 IN CNAME @
pubsub 3600 IN CNAME @
vjud 3600 IN CNAME @
xmpp-upload 3600 IN CNAME @
#
# Mail (MX, SPF, DKIM et DMARC)

View file

@ -12,7 +12,7 @@ You may retrieve your server private IP adress through different means:
<img src="/images/ynh_login.png" width=600>
- Using Yunohost administration panel:
Go to "State of the server" > Network
Go to Tools > State of the server > Network
<img src="/images/ynh_admin_etat_ip.png" width=900>
- Or using your router or internet box, depending on model.

View file

@ -12,7 +12,7 @@ Puedes descubrir la dirección privada de tu servidor de varias maneras :
<img src="/images/ynh_login.png" width=600>
- Desde la interfaz de administración de tu servidor Yunohost :
en Estado del servidor > Red
en Herramientas > Estado del servidor > Red
<img src="/images/ynh_admin_etat_ip.png" width=900>
- O desde tu router o tu caja Internet, dependiendo de su modelo.

View file

@ -12,7 +12,7 @@ Vous pouvez retrouver ladresse privée de votre serveur de différentes mani
<img src="/images/ynh_login.png" width=600>
- Depuis linterface dadministration de votre serveur YunoHost :
dans État du serveur > Réseau
dans Outils > État du serveur > Réseau
<img src="/images/ynh_admin_etat_ip.png" width=900>
- Ou depuis votre routeur ou votre box, selon son modèle.

View file

@ -6,7 +6,7 @@ YunoHost permet lusage de sous-domaine. Il faut avoir un nom de domaine par e
### Configuration chez Gandi
Dans la configuration de son DNS, on aura donc une entrée A avec ladresse IPv4, une entrée AAAA avec ladresse IPv6 et ensuite différents CNAME pour le sous-domaines que lon souhaite créer.
Dans la configuration de son DNS, on aura donc une entrée A avec ladresse IPv4, une entrée AAAA avec ladresse IPv6 et ensuite différents CNAME pour les sous-domaines que lon souhaite créer.
Nom Type Valeur
```bash
@ A XYZ.XYZ.XYZ.XYZ
@ -20,19 +20,19 @@ permet davoir un `agenda.mondomaine.fr`, un `blog.mondomaine.fr` etc…
### Installer une application sur un sous-domaine
Pour installer une application sur un sous-domaine, par exemple `blog.mondomaine.fr`, dans YunoHost, tout ce fait via la partie administration. On ajoute tout dabord le sous-domaine à la liste des domaines disponibles. La création dun sous-domaine dans YunoHost créera les fichiers de configuration correspondant pour Nginx (le serveur web de YunoHost).
Pour installer une application sur un sous-domaine, par exemple `blog.mondomaine.fr`, dans YunoHost, tout se fait via la partie administration. On ajoute tout dabord le sous-domaine à la liste des domaines disponibles. La création dun sous-domaine dans YunoHost créera les fichiers de configuration correspondants pour Nginx (le serveur web de YunoHost).
Puis dans la partie installation dune application, on installe lapplication de façon traditionnelle en en choisissant ce sous-domaine comme domaine (par exemple `blog.mondomaine.fr`) et en indiquant comme chemin `/` (et non `/wordpress` qui est le chemin par défaut). On a alors un message davertissement indiquant quon ne pourra plus installer dapplications sur ce sous-domaine. On valide. Ça sinstalle.
Puis dans la partie installation dune application, on installe lapplication de façon traditionnelle en choisissant ce sous-domaine comme domaine (par exemple `blog.mondomaine.fr`) et en indiquant comme chemin `/` (et non `/wordpress` qui est le chemin par défaut). On a alors un message davertissement indiquant quon ne pourra plus installer dapplications sur ce sous-domaine. On valide. Ça sinstalle.
Lapplication est alors accessible via `blog.mondomaine.fr` (et non via `mondomaine.fr/wordpress`).
### Déplacer une application sur un sous-domaine ?
Que ce passe-t-il si on a déjà installé lapplication ? On veut par exemple passer de `mondomaine.fr/wordpress` à `blog.mondomaine.fr`.
Que se passe-t-il si on a déjà installé lapplication ? On veut par exemple passer de `mondomaine.fr/wordpress` à `blog.mondomaine.fr`.
Pour linstant il ny a pas de façon simple (via linterface graphique de ladministration de YunoHost) pour déplacer une application sur un sous-domaine.
Solution : réinstaller lapplication
### Réinstallation de lapplication
On sauvegarde ses données (base de données etc. via un script sql par exemple, les fichiers etc.). On désinstalle lapplication via linterface graphique dadministration de YunoHost. Et on la réinstalle en suivant la procédure ci-dessus.
On sauvegarde ses données (base de données etc. via un script SQL par exemple, les fichiers etc.). On désinstalle lapplication via linterface graphique dadministration de YunoHost. Et on la réinstalle en suivant la procédure ci-dessus.

View file

@ -47,4 +47,4 @@ Pour aller plus loin
--------------------
- Il existe une page de documentation pour [migrer ses emails d'un fournisseur de messagerie vers une instance YunoHost](email_migration).
- Pour approfondir votre compréhension du courriel et de ses protocoles, voici une [conférence éclairante](https://www.iletaitunefoisinternet.fr/post/7-email-sonntag/)(en français).
- Pour approfondir votre compréhension du courriel et de ses protocoles, voici une [conférence éclairante](https://www.octopuce.fr/conference-lemail-vaste-sujet-par-benjamin-sonntag/)(en français).

View file

@ -28,10 +28,10 @@ YunoHost peut être appelé une distribution ou un système dexploitation, ma
dans les faits, cest une « simple » sur-couche à Debian, qui gère les
manipulations pénibles à votre place.
Par exemple, pour installer un Wordpress à la main, il vous faudrait taper
Par exemple, pour installer un WordPress à la main, il vous faudrait taper
toute une série de commandes pour créer des utilisateurs, mettre en place un
serveur web, mettre en place un serveur SQL, télécharger larchive de Wordpress,
la décompresser, configurer le serveur web, configurer la base de données SQL, et finalement configurer Wordpress. YunoHost gère toute cette partie technique et « tape les commandes à votre place », pour que vous puissiez vous concentrer sur ce qui compte vraiment.
serveur web, mettre en place un serveur SQL, télécharger larchive de WordPress,
la décompresser, configurer le serveur web, configurer la base de données SQL, et finalement configurer WordPress. YunoHost gère toute cette partie technique et « tape les commandes à votre place », pour que vous puissiez vous concentrer sur ce qui compte vraiment.
Plus dinformations sur [cette page](whatsyunohost) !
@ -54,9 +54,7 @@ Pour des raisons techniques, le [SSO](https://github.com/YunoHost/SSOwat/) ne pe
#### Quel est le modèle économique de YunoHost ?
À lheure actuelle, YunoHost est maintenu uniquement par une équipe de bénévoles
travaillant pendant leur temps libre. Il ny a pas dargent impliqué dans le
projet (hormis quelques frais de serveurs et stickers :P).
À lheure actuelle, YunoHost est maintenu uniquement par une équipe de bénévoles travaillant pendant leur temps libre. Il ny a pas dargent impliqué dans le projet (hormis quelques frais de serveurs et stickers :P).
Étant donné que certains contributeurs sont très engagés dans ce projet, nous réfléchissons à un moyen de pérenniser le projet.
@ -76,7 +74,7 @@ Si vous le pouvez, vous pouvez aussi faire des contributions en nature (une part
Il existe [plusieurs façons de contribuer](contribute) :).
Nhésitez pas à venir nous parler de vos idées!
Nhésitez pas à venir nous parler de vos idées !
Une idée répandue parmi les nouveaux contributeurs aux logiciels libres est
de ne pas être « assez compétent ». En pratique, croyez-le, personne nest
@ -91,8 +89,7 @@ pouvez, cest déjà trop cool !
Il est décrit dans [ce document](project_organization) :).
#### Pouvez-vous porter YunoHost sur [ma distro préféré] ?
#### Pouvez-vous porter YunoHost sur [ma distro préférée] ?
Réponse courte : non. Léquipe na pas lénergie et ce nest pas pertinent pour le but recherché par YunoHost.
@ -114,9 +111,9 @@ Réponse moyenne : Par le passé, les apps étaient gérées via des .deb. C
<a data-toggle="collapse" data-target="#whyareyoureinventingpackaging" href="#">Longue réponse</a>
<div id="whyareyoureinventingpackaging" class="collapse">
<p>YunoHost cherche à garder un système de packaging simple. Lidée depuis le départ était que « si tu sais installer lapp à la main, alors tu peux facilement créer un package basique en copiant-collant les étapes, sans besoin de connaissances particulière ». Ce nest pas le cas des paquets Debian.</p>
<p>YunoHost cherche à garder un système de packaging simple. Lidée depuis le départ était que « si tu sais installer lapp à la main, alors tu peux facilement créer un package basique en copiant-collant les étapes, sans besoin de connaissances particulières ». Ce nest pas le cas des paquets Debian.</p>
<p>Il se trouve que lobjectif des paquets dapplication YunoHost est subtilement différent des paquets traditionnels (comme les .deb de Debian) qui remplissent le rôle dinstaller des éléments bas-niveaux tels que des fichiers, commandes, programmes ou services sur le système. Il est à la charge de ladministrateur de les configurer ensuite proprement, simplement parce quil nexiste pas denvironnement standard. Typiquement, les applications web requièrent beaucoup de configuration car elles ont besoin de sinterfacer avec un serveur web et une base de données (et le système de connexion unique / SSO).</p>
<p>Il se trouve que lobjectif des paquets dapplication YunoHost est subtilement différent de celui des paquets traditionnels (comme les .deb de Debian) qui remplissent le rôle dinstaller des éléments bas-niveau tels que des fichiers, commandes, programmes ou services sur le système. Il est à la charge de ladministrateur de les configurer ensuite proprement, simplement parce quil nexiste pas denvironnement standard. Typiquement, les applications web requièrent beaucoup de configuration car elles ont besoin de sinterfacer avec un serveur web et une base de données (et le système de connexion unique / SSO).</p>
<p>YunoHost manipule des abstractions haut-niveau (apps, domaines, utilisateurs…) et définit un environnement standard (Nginx, Postfix, Metronome, SSOwat…) et, grâce à cela, peut gérer la configuration à la place de ladministrateur.</p>

View file

@ -1,7 +1,7 @@
User groups and permissions
===========================
You can access the group and permissions management interface from the webadmin
You can access the *groups and permissions* management interface from the webadmin
by going into the 'Users' section and clicking the corresponding button:
![](./images/button_to_go_to_permission_interface.png)
@ -9,13 +9,25 @@ by going into the 'Users' section and clicking the corresponding button:
Managing groups
---------------
The group mechanism can be used to define group of users which then can be used to restrict permissions for applications and other services such as mail or xmpp. Note that it is *not* mandatory to create a group to do so : you can also restrict access to an app or service to just a specific list of user.
The group mechanism can be used to define groups of users which then can be used to restrict permissions for applications and other services (such as mail or xmpp). Note that it is *not* mandatory to create a group to do so: you can also restrict access to an app or service on a user-per-user basis.
Using groups is however useful for semantic, for example if you host multiple group of friends, association or enterprise on your server, you might want to create groups like `association1` and `association2` and add members of each association to the relevant group.
Using groups is however useful for semantics, for example if you host multiple groups of friends, associations or businesses on your server, you might want to create groups like `association1` and `association2` and add members of each association to the relevant group.
### Default groups
By default, two special groups are created:
- `all_users`, that contain all users registered on YunoHost,
- `visitors`, that applies to people viewing the server while not logged in.
The content of those groups cannot be changed, only the permissions given to them.
### List existing groups
To list the currently existing groups :
The existing groups are listed at the top of the *groups and permissions* page.
![](./images/groups_default-groups.png)
To list the currently existing groups in CLI :
```bash
$ yunohost user group list
@ -28,17 +40,30 @@ groups:
- delphine
```
By default, a special group called `all_users` exists and contain all users registered on YunoHost. This group can not be edited.
### Creating a new group
To create a new group called `yolo_crew`
To create a new group, simply click on the "New Group" button at the top of the page. You may only choose a name formed with letters (uper- and lowercase) and spaces. The group is created empty and without any permission.
![](./images/groups_button-new-group.png)
In CLI, to create a new group called `yolo_crew`
```bash
$ yunohost user group create yolo_crew
```
Let's add Charlie and Delphine to this group:
### Updating a group
Let's add a first to this group: in the group panel, click the button "add a user" and scroll to the desired user, then click on it.
![](./images/groups_button-add-user.png)
To remove a user, click on the cross next to their username, in the group panel.
![](./images/groups_button-remove-user.png)
In CLI, use the following command to add `charlie` and `delphine`to the `yolo_crew` group:
```bash
$ yunohost user group update yolo_crew --add charlie delphine
@ -65,7 +90,11 @@ groups:
### Deleting groups
To delete the group `yolo_crew`, you may run
To delete a group, click on the red cross on the top right of the group panel. You will be asked for confirmation.
![](./images/groups_button-delete-group.png)
To delete the group `yolo_crew` in CLI, you may run
```bash
$ yunohost user group delete yolo_crew
@ -74,11 +103,15 @@ $ yunohost user group delete yolo_crew
Managing permissions
--------------------
The permission mechanism allow to restrict access to services (for example mail, xmpp, ...) and apps, or even specific part of the apps (for example the administration interface of wordpress).
The permission mechanism allow to restrict access to services (for example mail, xmpp, ...) and apps, or even specific parts of the apps (for example the administration interface of wordpress).
### List permissions
To list permissions and corresponding accesses:
The groups page lists the permissions given to each group, including the special groups `all_users` and `visitors`.
![](./images/groups_default-with-permissions.png)
To list permissions and corresponding accesses in CLI:
```bash
$ yunohost user permission list
@ -93,19 +126,27 @@ permissions:
allowed: all_users
```
Here, we find that all registered users can use mails, xmpp, and access the wordpress blog. However, nobody can access the wordpress admin interface.
Here, we find that all registered users can use email, xmpp, and access the wordpress blog. However, nobody can access the wordpress admin interface.
More details can be displayed by adding the `--full` option which will display the list of users corresponding to groups allowed, as well as urls associated to a permission (relevant for web apps).
### Add accesses to group or users
To allow a group to access the wordpress admin interface:
To add a permission to a group, simply click the "+" button in the group panel, scroll to the desired permission, then click on it.
![](./images/groups_add-permission-group.png)
To allow a group to access the wordpress admin interface in CLI:
```bash
$ yunohost user permission update wordpress.admin --add yolo_crew
```
Note that you can also allow a single user:
Note that you can also allow a single user, by using the specific panel at the bottom of the page.
![](./images/groups_add-permission-user.png)
or in CLI:
```bash
$ yunohost user permission update wordpress.admin --add alice
@ -123,18 +164,21 @@ $ yunohost user permission list
[...]
```
Note that, for example, if we want to restrict permission for email so that only Bob is allowed to email, we should also remove `all_users` from the permission :
Note that, for example, if we want to restrict permission for email so that only Bob is allowed to email, we should also remove `all_users` from the permission, by deleting it from the `all_users` group panel, or in CLI :
```bash
$ yunohost user permission update mail --remove all_users --add bob
```
The webadmin will issue a warning if you set a permission that is superseeded by a wider permission.
![](./images/groups_alerte-permission.png)
Notes for apps packagers
------------------------
Installing an app creates the permission `app.main` with `all_users` allowed by default.
If you wish to make the application publicly available, instead of the old `unprotected_urls` mechanism, you should give access to the special groups `visitors`:
If you wish to make the application publicly available, instead of the old `unprotected_urls` mechanism, you should give access to the special group `visitors`:
```bash
ynh_permission_update --permission "main" --add visitors
@ -150,7 +194,7 @@ You don't need to take care of removing permissions or backing up/restoring them
### Migrating away from the legacy permission management
When migrating/fixing an app still using the legacy permission system, it should be understood that the accesses are now to be managed by features from the core, outside the application scripts!
When migrating/fixing an app still using the legacy permission system, it should be understood that the accesses are now to be managed by features from the core, outside of the application scripts!
Application scripts are only expected to:
- if relevant, during the install script, initialize the main permission of the app as public (`visitors`) or private (`all_users`) or only accessible to specific groups/users ;
@ -207,7 +251,7 @@ fi
In this example, if the app is public the group `visitors` has access to the permission `create poll`, the group is removed from this permission otherwise.
Then create two files in the directory `hooks` at the root of the git repository: `post_app_addaccess` and `post_app_removeaccess`. In these hooks, you'll remove or readd the regex protection if the `visitors` group is add or remove from this permission:
Then create two files in the directory `hooks` at the root of the git repository: `post_app_addaccess` and `post_app_removeaccess`. In these hooks, you'll remove or readd the regex protection if the `visitors` group is added or removed from this permission:
`post_app_addaccess`:
@ -280,6 +324,6 @@ fi
Don't forget to replace `__APP__` during the install/upgrade script.
Here some apps that use this specific case: [Lutim](https://github.com/YunoHost-Apps/lutim_ynh/pull/44/files) and [Opensondage](https://github.com/YunoHost-Apps/opensondage_ynh/pull/59/files)
Here are some apps that use this specific case: [Lutim](https://github.com/YunoHost-Apps/lutim_ynh/pull/44/files) and [Opensondage](https://github.com/YunoHost-Apps/opensondage_ynh/pull/59/files)
If you have any questions, please contact someone from the apps-group.
If you have any question, please contact someone from the apps-group.

View file

@ -0,0 +1,176 @@
Groupes et permissions
===========================
Vous pouvez accéder à l'interface de gestion des *groupes et des permissions* depuis la webadmin
en allant dans la section "Utilisateurs" et en cliquant sur le bouton correspondant :
![](./images/button_to_go_to_permission_interface_fr.png)
Gestion des groupes
---------------
Le mécanisme de groupe peut être utilisé pour définir des groupes d'utilisateurs qui peuvent ensuite être utilisés pour restreindre les autorisations pour les applications et autres services (tels que l'email ou xmpp). Notez qu'il n'est *pas* obligatoire de créer un groupe pour ce faire : vous pouvez également restreindre l'accès à une application ou à un service de manière individuelle.
L'utilisation de groupes est cependant utile pour la sémantique, par exemple si vous hébergez plusieurs groupes d'amis, des associations ou des entreprises sur votre serveur, vous pouvez créer des groupes comme "association1" et "association2" et ajouter les membres de chaque association au groupe concerné.
### Groupes par défaut
Par défaut, deux groupes spéciaux sont créés :
- `all_users`, qui contient tous les utilisateurs enregistrés sur YunoHost,
- `visitors`, c'est-à-dire les personnes qui consultent le serveur sans être connectées.
Vous ne pouvez pas changer le contenu de ces groupes, seulement les permissions qui leur sont accordées.
### Lister les groupes existants
Les groupes existants sont listés en haut de la page *groupes et autorisations*.
![](./images/groups_default-groups.png)
Pour obtenir la liste des groupes existants en CLI :
```bash
$ yunohost user group list
groups:
all_users:
members:
- alice
- bob
- charlie
- delphine
```
### Créer un nouveau groupe
Pour créer un nouveau groupe, il suffit de cliquer sur le bouton "Nouveau groupe" en haut de la page. Vous ne pouvez choisir qu'un nom formé de lettres (majuscules et minuscules) et d'espaces. Le groupe est créé vide et sans aucune permissions.
![](./images/groups_button-new-group.png)
Dans la CLI, pour créer un nouveau groupe appelé `yolo_crew`, il faut utiliser
```bash
$ yunohost user group create yolo_crew
```
### Mettre à jour un groupe
Ajoutons un premier utilisateur à ce groupe : dans le panneau du groupe, cliquez sur le bouton "ajouter un utilisateur" et faites défiler jusqu'à l'utilisateur souhaité, puis cliquez dessus.
![](./images/groups_button-add-user.png)
Pour supprimer un utilisateur, cliquez sur la croix à côté de son nom d'utilisateur, dans le panneau du groupe.
![](./images/groups_button-remove-user.png)
En CLI, utilisez la commande suivante pour ajouter `charlie` et `delphine` au groupe `yolo_crew` :
```bash
$ yunohost user group update yolo_crew --add charlie delphine
```
(De même, `--remove` peut être utilisé pour retirer des membres d'un groupe)
Dans la liste des groupes, nous devrions voir :
```bash
$ yunohost user group list
groups:
all_users:
members:
- alice
- bob
- charlie
- delphine
yolo_crew:
members:
- charlie
- delphine
```
### Supprimer un groupe
Pour supprimer un groupe, cliquez sur la croix rouge en haut à droite du panneau du groupes. Une confirmation vous sera demandée.
![](./images/groups_button-delete-group.png)
Pour supprimer le groupe `yolo_crew` dans CLI, vous pouvez exécuter
```bash
$ yunohost user group delete yolo_crew
```
Gestion des permissions
--------------------
Le mécanisme de permissions permet de restreindre l'accès aux services (par exemple mail, xmpp, ...) et aux applications, ou même à des parties spécifiques des applications (par exemple l'interface d'administration de wordpress).
### Liste des permissions
La page des groupes liste les permissions données à chaque groupe, y compris les groupes spéciaux `all_users` et `visitors`.
![](./images/groups_default-with-permissions.png)
Pour répertorier les permissions et les accès correspondants en CLI :
```bash
$ yunohost user permission list
permissions:
mail.main:
allowed: all_users
wordpress.admin:
allowed:
wordpress.main:
allowed: all_users
xmpp.main:
allowed: all_users
```
Ici, nous constatons que tous les utilisateurs enregistrés peuvent utiliser le courrier électronique, xmpp, et accéder au blog wordpress. Cependant, personne ne peut accéder à l'interface d'administration de wordpress.
Plus de détails peuvent être affichés en ajoutant l'option `--full` qui affichera la liste des utilisateurs correspondant aux groupes autorisés, ainsi que les urls associées à une permission (pertinent pour les applications web).
### Ajouter des permissions à un groupe ou un utilisateur
Pour ajouter une permission à un groupe, il suffit de cliquer sur le bouton "+" dans le panneau du groupe, de faire défiler jusqu'à la permission souhaitée, puis de cliquer dessus.
![](./images/groups_add-permission-group.png)
Pour permettre à un groupe d'accéder à l'interface d'administration de wordpress via la CLI :
```bash
$ yunohost user permission update wordpress.admin --add yolo_crew
```
Notez que vous pouvez également autoriser un seul utilisateur, en utilisant le panneau spécifique en bas de la page.
![](./images/groups_add-permission-user.png)
ou en CLI :
```bash
$ yunohost user permission update wordpress.admin --add alice
```
Et maintenant, nous pouvons voir que YoloCrew et Alice ont tous deux accès à l'interface d'administration de Wordpress :
```bash
$ yunohost user permission list
[...]
wordpress.admin:
allowed:
- yolo_crew
- alice
[...]
```
Notez que, par exemple, si nous voulons restreindre la permission pour le courrier électronique
afin que seul Bob soit autorisé à envoyer des courriels, nous devons également supprimer `all_users`
de la permission, en la supprimant du panneau de groupe `all_users`, ou en CLI :
```bash
$ yunohost user permission update mail --remove all_users --add bob
```
La webadmin émettra un avertissement si vous définissez une permission qui est remplacée par une permission plus large.
![](./images/groups_alerte-permission.png)
Notes pour les packageurs d'applications
------------------------
[Voir la version anglaise de cette page](groups_and_permissions).

14
hardware_de.md Normal file
View file

@ -0,0 +1,14 @@
# Hardware
YunoHost kann auf folgender Hardware installiert werden:
- ARM Boards (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ;
- 'Alte' Desktop Computer oder Laptops/Notebooks ;
- Remote servers, auch bekannt als Virtual Private Servers (VPS).
Entsprechende Installationsanleitungen finden Sie auf [dieser Seite](/install).
### Minimale Voraussetzungen
* 500 MHz CPU
* 512 MB RAM (empfohlen : 1 GB um alle Apps und Programme schnell ausführen zu können)
* 8 GB Speicher/HDD (empfohlen : 32 GB bei Nutzung als Mail oder Dokumentenserver)

View file

@ -1,6 +1,6 @@
# Matériel
YunoHost peut être installé sur les types de matériel suivant :
YunoHost peut être installé sur les types de matériel suivants :
- Cartes ARM (Raspberry Pi, Olinuxino LIME1 & 2, Orange Pi, etc...) ;
- 'Vieux' ordinateurs de bureau ou portables ;
- Serveurs distants, aussi appelé Virtual Private Servers (VPS).
@ -10,5 +10,5 @@ Les guides d'installations peuvent être trouvés sur [cette page](/install).
### Configuration minimale
* Processeur 500MHz
* 512 Mo de RAM (recommandée : 1Go pour pouvoir faire tourner les services et applications correctement)
* 512 Mo de RAM (recommandé : 1 Go pour pouvoir faire tourner les services et applications correctement)
* 8 Go d'espace de stockage (recommandé : 32 Go pour pouvoir stocker emails et documents)

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
images/github_branch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
images/github_commit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
images/github_edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View file

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View file

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

View file

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View file

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

23
install_on_debian_it.md Normal file
View file

@ -0,0 +1,23 @@
# Installazione su Debian
*Altri sistemi per installare Debian **[qui](/install)**.*
### Requisiti
<img width=100 src="/images/debian-logo.png">
Su un computer ARM, un VPS, un server dedicato, un computer x86 standard, un vecchio Macintosh, ...
* con **Debian 9** (Stretch) installato <small>(con un kernel >= 3.12)</small>
* l'immagine ISO di Debian 9 può essere scaricata da [qui](https://www.debian.org/releases/stretch/debian-installer/). Scegli l'immagine 'netinst CD' per la tua architettura.
* N.B.: l'uso di un'interfaccia grafica *non* è raccomandato! I server dovrebbero essere amministrati da remoto!
* connesso ad Internet
* con un **accesso root** diretto o via SSH
---
## Passi per l'installazione
<a class="btn btn-lg btn-default" href="/install_manually">1. Installazione manuale</a>
<a class="btn btn-lg btn-default" href="/postinstall">2. Post-installazione</a>

View file

@ -1 +1,85 @@
Unfortunately, this page only exists [in french here](isp_orange_fr) for now.
# Orange
*Find the list of other Internet service providers **[here](/isp)**.*
#### Email
The Orange box has port 25 closed so as to limit the amount of spam that could be sent from a compromised home connection.
The remaining solution to host one own's email at home is to route it through the Orange SMTP servers.
To that end, one has to edit the postfix configuration file with the following command:
```bash
sudo nano /etc/postfix/main.cf
```
then, add the SMTP Orange server as a relay on the associated line:
```bash
relayhost = smtp.orange.fr
```
restart Postfix :
```bash
sudo service postfix restart
```
##### Problems
If you are having an "Authentication required" error, the solution is as follows (note: french website): **[source](http://viruslocker.free.fr/?page_id=1749)**.
Edit the postfix configuration file
```bash
sudo nano /etc/postfix/main.cf
```
then, add the following lines:
```bash
smtp_sasl_password_maps = hash:/etc/postfix/sasl/mdp_fai.conf
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
relayhost = [smtp.orange.fr]:25
```
Create the `mdp_fai.conf` file :
```bash
sudo nano /etc/postfix/sasl/mdp_fai.conf
```
add
```bash
# mdp_fai.conf
[smtp.orange.fr]:25 emailaddress@at.orange:my-own-password
```
with your Orange account password.
Integrate the password into Postfix :
```bash
sudo postmap /etc/postfix/sasl/mdp_fai.conf
sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl/mdp_fai.conf
```
If you are having an "(SASL authentication failed; cannot authenticate to server smtp-auth.nowhere.com[38.123.22.160]: no mechanism available)" error
Check that `libsasl2-modules` and `sasl2-bin` are present :
```bash
apt search libsasl2-modules
apt search sasl2-bin
```
If they are not present, do install them :
```bash
apt install libsasl2-modules sasl2-bin
```
It is possible that postfix does not immediately take into account your modifications. To force it to do so, run
```bash
systemctl restart postfix
```

View file

@ -66,7 +66,7 @@ sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl/mdp_fai.conf
Si vous avez une erreur "(SASL authentication failed; cannot authenticate to server smtp-auth.nowhere.com[38.123.22.160]: no mechanism available)"
Vérifier la présence de libsasl2-modules et de sasl2-bin :
Vérifier la présence de `libsasl2-modules` et de `sasl2-bin` :
```bash
apt search libsasl2-modules

View file

@ -11,4 +11,4 @@ Pour pouvoir envoyer des mails, il faut désactiver le filtrage.
<img src="/images/sfr-filtrage.png" width=600>
Source : http://assistance.sfr.fr/internet_box-nb4/utiliser-email/desactiver-filtrage-smtp/fc-2491-69602
Source : https://assistance.sfr.fr/sfrmail-appli/sfrmail/envoyer-e-mail-serveur-smtp.html

View file

@ -1,144 +1,151 @@
# Récupérer l'accès à son YunoHost
Si vous avez perdu l'accès à votre YunoHost qui était auparavant fonctionnel, cette page est faite pour vous.
Il existe de nombreuses causes pouvant empécher totalement ou partiellement d'accéder en administrateur à un serveur YunoHost. Dans de nombreux cas, un des moyens d'accès est inaccessible, mais les autres sont fonctionnels.
Il existe de nombreuses causes pouvant empêcher totalement ou partiellement d'accéder en administrateur à un serveur YunoHost. Dans de nombreux cas, un des moyens d'accès est inaccessible, mais les autres sont fonctionnels.
Cette page va vous aider à diagnostiquer, obtenir un accès et si besoin réparer votre système. Les pannes les plus courantes sont priorisées de haut en bas. Il vous suffit de tester chaque hypothèse.
## Vous avez perdu votre mot de passe administrateur
Si vous arrivez à afficher la page web d'administration (forcer le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez. Vous avez probablement un mot de passe erroné.
Dans ce cas, à moins d'avoir un accès root actif (en SSH par exemple) auquel cas vous pouvez changer le mot de passe de l'utilisateur admin, vous allez devoir opérer en mode rescue.
TODO
## Vous avez une erreur de certificat qui vous empêche d'accéder à la webadmin
## Vous avez accès au serveur via l'adresse IP, mais pas avec le nom de domaine ?
#### Si vous êtes auto-hébergé à la maison : il faut configurer les redirection de ports
Vérifier que vous arrivez à accéder au serveur en utilisant son IP globale (que vous pouvez trouver sur https://ip.yunohost.org). Si cela ne fonctionne pas:
- Assurez-vous d'avoir [configuré les redirections de ports](/isp_box_config)
- Certaines box de FAI ne supportent pas le hairpinning et vous ne pouvez pas accéder à votre serveur depuis l'intérieur du réseau local (sauf à passer par l'IP locale). Pour contourner le problème, vous pouvez tester d'accéder à votre serveur en passant par un proxy comme proxfree.com
#### Il faut configurer vos enregistrement DNS
(N.B.: ce n'est pas nécessaire si vous utilisez un domaine de type nohost.me, noho.st ou ynh.fr)
Il vous faut configurer vos enregistrement DNS comme expliqué sur [cette page](/dns_config) (à minima l'enregistrement A, et AAAA si vous avez de l'IPv6).
Vous pouvez valider que les enregistrements DNS sont corrects en comparant le résultat de https://www.whatsmydns.net/ avec l'IP globale de votre serveur (si vous êtes hébergé à la maison, vous pouvez obtenir cette IP sur https://ip.yunohost.org)
#### Autres causes possibles
- Votre nom de domaine noho.st, nohost.me ou ynh.fr est inaccessible suite à une panne de l'infra YunoHost. Vérifiez sur le forum si d'autre personnes signalent le même problème.
- Votre nom de domaine est peut-être expiré. Vous pouvez vérifier que votre nom de domaine a expiré en vous connectant sur l'interface de votre registrar ou en utilisant le whois par exemple via la commande `whois NOM_DE_DOMAINE`.
- Vous avez une IP dynamique. Dans ce cas, il faut mettre en place un script qui se charge de mettre à jour régulièrement votre IP (ou d'utiliser un nom de domaine en nohost.me, noho.st ou ynh.fr qui inclue un tel mécanisme)
## Vous êtes face à une erreur de certificat qui vous empêche d'accéder à la webadmin
Si vous venez d'installer votre serveur ou d'ajouter un nouveau domaine, il utilise pour le moment un certificat auto-signé. Dans ce cas, il devrait être possible et légitime d'ajouter *exceptionnellement* une exception de sécurité le temps d'[installer un certificat Let's Encrypt](/certificate) à condition d'être sur une connexion internet sûre (pas avec Tor Browser par exemple).
Une erreur de certificat peut également être affichée dans certain cas où vous avez fait une faute de frappe dans la barre d'adresse de votre navigateur.
Si vous n'avez jamais activé Let's Encrypt ou que vous accéder à la web admin via une IP ou un domaine locale, vous pouvez accepter le certificat invalide exceptionnellement à condition d'être sur une connexion internet sûre (pas avec Tor Browser par exemple).
Pour y parvenir, il faut aller sur la page d'administration web en utilisant la navigation privée, votre navigateur devrait vous autoriser d'ajouter une exception temporaire pour accéder à la page.
## Vous avez accès en SSH mais pas à la Web admin ou inversement
### Vous avez été banni temporairement
Votre serveur YunoHost inclut un pare-feu qui banni les IP qui échouent plusieurs fois à se connecter. Dans certains cas, il peut s'agir d'un programme (nextcloud-client) qui est configuré avec un ancien mot de passe ou d'un utilisateur qui utilise la même IP que vous.
#### Vous essayez de vous connecter en SSH avec `root` plutôt qu'avec `admin`
Par défaut, la connexion en SSH doit s'effectuer avec l'utilisateur `admin`. Il est possible de se connecter à la machine avec l'utilisateur `root` *seulement depuis le réseau local* sur lequel se situe le serveur (ou bien via la console web / VNC pour des VPS).
Lorsque vous exécutez des commandes `yunohost` en tant qu'admin, il faut les précéder de la commande `sudo` (par exemple `sudo yunohost user list`). Vous pouvez également devenir `root` en tapant `sudo su`.
#### Vous avez été banni temporairement
Votre serveur YunoHost inclut un mécanisme (fail2ban) qui banni automatiquement les IPs qui échouent plusieurs fois à s'authentifier. Dans certains cas, il peut s'agir d'un programme (par exemple un client Nextcloud) qui est configuré avec un ancien mot de passe ou d'un utilisateur qui utilise la même IP que vous.
Si vous avez été banni en tentant d'accéder à une page web, seul les pages web sont inaccessibles, vous devriez donc pouvoir accéder au serveur en SSH. De même, si vous avez été banni en SSH vous devriez pouvoir accéder à la webadmin.
Si vous avez été banni à la fois en SSH et à la webadmin, vous pouvez essayer d'accéder à votre serveur avec une autre IP, par exemple en utilisant la 4G d'un smartphone ou en utilisant Tor Browser.
NB: le bannissement dure en général quelques minutes. Le bannissement n'est actif qu'en IPv4.
Voir aussi: [débannir une IP sur Fail2ban](/fail2ban)
### Vous n'avez plus d'espace disque...
... et votre serveur web nginx qui distribue les pages de la web admin ou votre serveur SSH ne fonctionne plus.
NB: le bannissement dure en général 10 à 12 minutes. Le bannissement n'est actif qu'en IPv4.
Pour vérifier si vous avez de l'espace disque, vous pouvez le faire de puis la web admin TODO ou avec la commande `df -h`.
Si une de vos partition est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place.
#### Le serveur web nginx est cassé
Attention, dans certains cas il peut s'agir d'erreur qui arrive tellement souvent qu'elles remplissent les fichiers de logs et votre système avec.
Peut-être que le serveur web nginx est en panne. Vous pouvez vérifier cela [en ssh](/ssh) avec `yunohost service status ssh`. Si il est en panne, vérifiez que la configuration ne comporte pas d'erreur avec `nginx -t`. Si la configuration est cassée, ceci est peut-être du à une l'installation ou désinstallation d'une application de mauvaise qualité... Si vous êtes perdu, [demandez de l'aide](/help).
A partir de la web admin vous pouvez relancer le service SSH. De même en SSH, vous pouvez redémarrer le serveur web nginx avec la commande `yunohost service start nginx`
Il se peut également que le serveur web (nginx) ou le serveur ssh aient été tués suite à un manque d'espace disque ou de RAM / swap.
- Tentez de relancer le service avec `systemctl restart nginx`.
- Vous pouvez contrôler l'espace disque utilisé avec `df -h`. Si une de vos partitions est remplie à 100%, il faut identifier ce qui prend de la place sur votre système et faire de la place. Il est possible d'installer l'utilitaire `ncdu` avec `apt install ncdu` puis de faire `ncdu /` pour analyser la taille des dossiers de toute l'arborescence.
- Vous pouvez contrôler l'utilisation de la RAM / swap avec `free -h`. En fonction des résultats, il peut être nécessaire d'optimiser votre serveur pour qu'il utilise moins de RAM (suppression d'app lourdes et inutiles, ...), d'ajouter de la RAM ou d'ajouter un fichier de swap.
### Vous manquez de RAM et n'avez pas de swap
... et votre serveur web nginx qui distribue les pages de la web admin ou votre serveur SSH a été tués aléatoirement.
#### Votre serveur est accessible en IPv6 mais pas en IPv4 ou inversement
Quand votre serveur n'a plus de ram, il est obligé d'écrire sur le disque dans la swap, si il n'y en a pas, dans ce cas il doit tuer un des processus pour faire de l'espace.
Vous pouvez le vérifier en tentant de faire des ping sur votre serveur en IPv4 et en IPv6.
Vous pouvez vérifier que vous n'avez plus beaucoup de ram via la web admin ou en SSH via la commande `free -m`.
Pour régler cette situation, vous pouvez soit:
* optimiser votre serveur pour qu'il utilise moins de ram (suppression arrêt de services inutiles)
* ajouter de la ram
* ajouter un fichier de swap
A partir de la web admin vous pouvez relancer le service SSH. De même en SSH, vous pouvez redémarrer le serveur web nginx avec la commande `yunohost service start nginx`
### Vous avez installé une app qui a cassé votre configuration web
Si vous avez installé une app de mauvaise qualité, celle-ci peut échouer à l'installation et laisser des bouts de configuration qui vont empécher le redémarrage de votre serveur web nginx qui vous permet d'accéder à la web admin.
Dans ce cas, il faut accéder en SSH et essayer de terminer la suppression de l'app. Si elle est déjà supprimée, il faut enlever manuellement les résidus de configuration.
### Votre serveur est accessible en IPv6 mais pas en IPv4 ou inversement
Dans un tel cas, il est possible que vous arriviez à accéder à votre web admin en IPv6 mais pas en SSH potentiellement en IPv4 par défaut...
Dans ce cas il faut résoudre votre problème de connectivité.
Dans certains cas une mise à jour de votre box a activé l'ipv6, entraînant des problèmes de configuration au niveau de votre nom de domaine.
Dans certains, cas une mise à jour de votre box a activé l'IPv6, entraînant des problèmes de configuration au niveau de votre nom de domaine.
## La webadmin fonctionne, mais certaines applications web me renvoient une erreur 502.
Il est fort probablement que le service correspondant à ces applications soit en panne (typiquement pour les applications PHP, il s'agit de php7.0-fpm ou php7.3-fpm). Vous pouvez alors tenter de relancer le service, et si cela ne fonctionne pas, regarder les logs du service correspondant et/ou [demander de l'aide](/help).
## Vous avez perdu votre mot de passe administrateur ? (ou bien le mot de passe est refusé)
Si vous arrivez à afficher la page web d'administration (forcez le rafraîchissement avec CTRL + F5 pour être sur) et que vous n'arrivez pas à vous connectez, vous avez probablement un mot de passe erroné.
Si vous êtes certain du mot de passe, il est possible que le service SLAPD qui gère l'authentification soit en panne. Si c'est le cas, il vous faut vous connecter en `root`.
- Si votre serveur est chez vous, vous avez sans doute accès au réseau local du serveur. Depuis ce réseau, vous pouvez vous connecter [en SSH](/ssh) avec l'utilisateur `root`.
- Si vous êtes sur un VPS, votre hébergeur vous fournit peut-être la possibilité d'avoir une console sur votre serveur depuis le navigateur web.
Une fois connecté, il vous faut regarder l'état du service avec la commande `yunohost service status slapd` et/ou tenter de réinitialiser votre mot de passe avec la commande `yunohost tools adminpw`.
Si vous ne pouvez pas ou ne réussissez pas non plus à vous connecter en `root`, vous allez devoir opérer en mode rescue.
TODO: à compléter
## Votre VPN a expiré ou ne se monte plus
Si vous utilisez un VPN a IP fixe, peut être que celui-ci est arrivé à expiration ou que l'infrastructure de votre fournisseur est en difficulté.
Dans ce cas, vous pouvez peut être accéder à votre serveur avec son IP locale s'agissant probablement d'un serveur auto-hébergé chez-vous.
Pour connaître votre ip locale, certaines BOX propose une cartographie du réseau en cours avec les équipements connectés. Sinon, en ligne de commande avec linux:
Pour connaître votre IP locale, certaines BOX proposent une cartographie du réseau en cours avec les équipements connectés. Sinon, en ligne de commande avec linux:
```bash
sudo arp-scan --local
```
Vous pouvez aussi essayer avec le domaine `yunohost.local` si il n'y a qu'un seul YunoHost sur votre réseau.
Vous pouvez aussi essayer avec le domaine `yunohost.local` s'il n'y a qu'un seul YunoHost sur votre réseau.
Il faut voir avec votre fournisseur de VPN pour renouveler le VPN et mettre à jour les paramètre de l'app VPN Client.
TODO
TODO: à compléter
## Votre routeur ne redirige plus vers votre serveur
Si votre routeur a été remis à zéro ou mis à jour, votre configuration de redirection de port pourrait avoir disparu. De même, l'ipv6 ou le hairpining pourrait avoir été activé.
## Votre serveur est coincé au démarrage
Typiquement si en tapant votre IP publique vous tombez sur votre box, c'est soit le hairpinning soit la redirection de port qui est manquante.
Dans certains cas, votre serveur peut rester coincé au démarrage. Il peut s'agir d'un problème suite à l'installation d'un nouveau kernel. Essayez de choisir un autre kernel avec VNC ou avec l'écran lors du boot.
## Votre serveur ping avec son IP, mais pas avec le nom de domaine
### Votre nom de domaine a expiré
Si votre nom de domaine expire il ne redirigera plus vers votre serveur.
Si vous êtes en mode `rescue` avec `grub`, dans ce cas il peut s'agir d'un problème de configuration de `grub` ou d'un disque corrompu.
Vous pouvez vérifier que votre nom de domaine a expiré en vous connectant sur l'interface de votre registrar ou en utilisant le whois par exemple via la commande `whois NOM_DE_DOMAINE`.
Dans ce cas il faut accéder au disque avec un autre système (mode `rescue` du fournisseur, live usb, lire la carte SD ou le disque dur avec un autre ordinateur) et essayer de vérifier l'intégrité des partitions avec `smartctl`, `fsck` et `mount`.
Dans ce cas il faut renouveler le nom de domaine (si ile st encore temps.
Si les disques sont corrompus et difficiles à monter, il faut sauvegarder les données et potentiellement refaire un formatage/réinstaller et/ou changer le disque. Si on arrive à monter le disque, il est possible d'utiliser `systemd-nspawn` pour entrer dans la base de données.
### Votre nom de domaine est mal configuré
Si votre serveur ping avec son ip mais ne ping pas avec le nom de domaine alors il y a un problème de configuration au niveau du champs A.
Sinon, relancer `grub-update` et `grub-install` en `chroot` ou avec `systemd-nspawn`.
Si c'est un nom de domaine fournit par YunoHost, lancez
```bash
yunohost dyndns update
```
Si c'est un autre nom de domaine, il faut mettre à jour votre ipv4 et votre ipv6 dans l'interface de votre registrar.
Attention, si votre IP change régulièrement il faut mettre en place un script qui se lance régulièrement pour mettre à jour votre IP.
### Votre nom de domaine noho.st, nohost.me, ynh.fr est inaccessible suite à une panne de l'infra YunoHost
Il arrive environ trois fois par an que l'infra de YunoHost soit en panne suite à une coupure de courant ou à un problème d'administration système.
Vérifiez sur le forum si d'autre sont signalez le même problème.
## L'accès en VNC ou via écran ne fonctionne pas
## Vous avez perdu l'accès en IPv4 mais vous avez accès en IPv6 ou inversement
Dans ce cas, il faut tenter d'accéder en SSH avec l'autre IP et essayer de comprendre pourquoi le réseau en IPv4 ou en IPv6 a disparu.
Si ce n'est pas lié à une erreur de configuration réseau sur votre système, il peut être nécessaire dappeler votre fournisseur de serveur ou d'accès à internet pour vérifier que le problème n'est pas chez eux.
## Vous avez perdu l'accès en IPv4 (ET en IPv6 le cas échéant)
Vous pouvez le vérifier en tentant de faire des ping sur votre serveur en IPv4 et en IPv6.
Dans ce cas, vous devriez essayer de brancher un clavier/écran sur votre serveur ou d'y accéder par VNC si c'est un serveur distant.
### Vous pouvez vous connecter avec l'utilisateur admin et le mot de passe
A partir de là vous devriez diagnostiquer votre problème réseau le réparer ou si ce n'est pas lié au système contacter le support de votre fournisseur de serveur ou de connexion Internet.
### Votre serveur est coincé au démarrage
Dans certains cas, votre serveur peut rester coincer au démarrage. Il peut s'agir d'un problème suite à l'installation d'un nouveau kernel. Essayez de choisir un autre kernel avec VNC ou avec l'écran lors du boot.
Si vous êtes en grub rescue, dans ce cas il peut s'agir d'un problème de configuration de grub ou d'un disque corrompu.
Dans ce cas il faut accéder au disque avec un autre système (mode rescue du fournisseur, live usb, lire la carte SD ou le disque dur avec un autre ordinateur) et essayer de vérifier l'intégrité des partitions avec smartctl, fsck et mount.
Si les disques sont corrompus et difficile à monter, il faut sauvegarder les données et potentiellement refaire un formatage/réinstaller et/ou changer le disque. Si on arrive à monter le disque, il est possible d'utiliser systemd-nspawn pour entrer dans la base de donnée.
Sinon, relancer grub-update et grub-install en chroot ou avec systemd-nspawn.
### L'accès en VNC ou via écran ne fonctionne pas
Dans ce cas il peut s'agir d'un problème matériel sur votre serveur physique ou d'un problème d'hyperviseur si c'est un VPS.
Si c'est une machine loué contacter le support de votre fournisseur. Sinon essayez de dépanner votre machine en retirant les composants qui peuvent être en panne.
Si c'est une machine louée contactez le support de votre fournisseur. Sinon, essayez de dépanner votre machine en retirant les composants qui peuvent être en panne.

View file

@ -5,7 +5,7 @@ The purpose of this document is to teach you how to package an application for Y
### Requirements
To package an application, here are the requirements:
* An account on a git server (e.g. [GitHub](https://github.com/)) to publish the application;
* Basic knowledge of `git`, bash shell and other programming stuff;
* Basic knowledge of [git](/packaging_apps_git), bash shell and other programming stuff;
* A testing [virtual machine or a distant server](/install), or a development environement, [ynh-dev](https://github.com/yunohost/ynh-dev) or [VirtualBox](/packaging_apps_virtualbox), to package and test the package.
### Content

View file

@ -25,7 +25,7 @@ However, to prevent any security issues, your ssh connection will be very limite
You can only use `sftp` or `rsync` to copy your apps into that directory. `Git` isn't available, neither most of the usual bash commands.
To ease your usage of this CI, a small script can be used to copy your apps to your directory.
Copy this [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/Send%20CI%20dev.sh) into your usual working directory and fill it with your info.
Copy this [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/send_to_dev_ci.sh) into your usual working directory and fill it with your info.
Make sure the content of your `check_process` file is correct then transfer your files.
When your files have been transfered, you can monitor the CI pipeline on https://ci-apps-dev.yunohost.org.

View file

@ -25,7 +25,7 @@ Cependant, pour éviter tout problème de sécurité, votre connexion ssh sera t
Vous ne pouvez utiliser que `sftp` ou `rsync` pour copier vos applications dans ce répertoire. `Git` n'est pas disponible, ni la plupart des commandes bash habituelles.
Pour faciliter votre utilisation de ce CI, un petit script peut être utilisé pour copier vos applications dans votre répertoire.
Copiez ce [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/Send%20CI%20dev.sh) dans votre répertoire de travail habituel et indiquez vos informations.
Copiez ce [script](https://raw.githubusercontent.com/YunoHost/CI_package_check/master/dev_CI/send_to_dev_ci.sh) dans votre répertoire de travail habituel et indiquez vos informations.
---

View file

@ -5,7 +5,7 @@ Ce document a pour but de vous apprendre à packager une application pour YunoHo
### Prérequis
Pour packager une application, voici les prérequis :
* Un compte sur un serveur git comme [GitHub](https://github.com/) pour pouvoir ensuite publier lapplication;
* Maîtriser un minimum `git`, le Shell et dautres notions de programmation;
* Maîtriser un minimum [git](/packaging_apps_git), le Shell et dautres notions de programmation;
* Une [machine virtuelle ou sur un serveur distant](/install) ou un environnement de développement, [ynh-dev](https://github.com/yunohost/ynh-dev) ou [VirtualBox](/packaging_apps_virtualbox), pour packager et tester son paquet.

201
packaging_apps_git.md Normal file
View file

@ -0,0 +1,201 @@
# How to use Git to package apps
Git... Our dear beloved Git, which can be described also as "Goddamn Idiotic Truckload of sh*t", according to Linus.
Be sure if you don't know Git yet that you will soon agree with that description.
YunoHost and all our apps are on the Git forge GitHub. Which means that if you want to work on an app, sooner or later you're going to have to deal with Git.
So let's see how to work with Git to be able to contribute in the context of YunoHost.
## Working with GitHub
Let's go first for the easy part, GitHub comes with an "easy" web interface to deal with.
*First things first, unfortunately there's no way around, you need an account on GitHub.*
#### Branches
Then, probably one of the most important thing, **do not work directly on the master branch**.
Sorry, it has to be said !
Branches are, as GitHub explains, "*a parallel version of a repository. It is contained within the repository, but does not affect the other branches. Allowing you to work freely without disrupting the "live" version.*"
The master branch is the branch that contains the version of the app users will actually install and use.
The usual thing to do is to work from the testing branch, and when everything is settled and tested, you can merge the testing branch in master, so users will enjoy the new release of your package.
To see and change the current branch, use this button:
<img src="/images/github_branch.png" width=100%>
#### Edit a file
Now that you're on the right branch, let's see how to edit a file on GitHub.
You can edit any file by using the small pencil icon:
<img src="/images/github_edit.png" width=100%>
If you don't have the permission to write on the repository, you will see (as on the picture) that you're going to create a fork (we'll see below what a fork is).
If you have the permission to write, you will just edit the file, without forking.
#### Commit your changes
When you're done with your modification on the file, you can commit your changes.
Behind that word, the idea is quite simple, you're just going to save your changes...
<img src="/images/github_commit.png" width=100%>
The first field is the name of your commit, a very short sentence to explain why you did this modification.
The second field is a large one for a more complete explanation, if you need it.
Finally, if you're editing a repository on which you have permission to write, you can either commit directly to the current branch or create a new branch.
It's usually better to create a new branch, that way you keep your modifications on a *parallel* version of the repository. Your modifications will be discussed in a pull request (explained below) then finally merged into the original branch.
#### To fork or not to fork
A fork is a copy of a repository into your own account.
We have seen before that if you don't have permission to write into a repository, editing a file will automatically create a fork.
Because the fork is on your account, you always have the permission to write on it.
But even if a fork is not the real repository, but just a copy, a fork is always linked to its parent. We'll see later that to create a fork is really useful when opening a pull request.
When you create a new package, it's common to use the [example app](https://github.com/YunoHost/example_ynh) as a base.
But, because you don't want to keep that link to the example app, you should not fork the example app. You will rather clone the app.
Unfortunately, to clone an app is a little bit trickier on GitHub. We will see later how to clone to a local repository instead.
We have seen how to edit a file, and how this could fork the app.
But, when you want to edit multiple files, the GitHub interface isn't really the best way. In such situation, you would rather clone the repository and work on a local repository.
You may still need to fork on your own account to be able to save your modifications if you don't have the permission on the distant repository.
#### Pull request
After you have committed your changes, whether on a branch or a fork, you want to propose your modifications to be integrated into the main repository, or the original branch.
To do so, you're going to *create a pull request*. GitHub usually ask you directly if you want to do so.
Otherwise, you'll find the button to create a pull request just here:
<img src="/images/github_pull_request.png" width=100%>
When creating a pull request from a fork, to ease the work of the reviewers, **do never** uncheck the checkbox *Allow edits from maintainers*. That option simply allow the maintainers of the original repository to edit directly your work.
#### YunoHost-Apps organization
Following the [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines.md#yep-17), your app has to be into the YunoHost-Apps organization, but if you have never contributed to an app before or never had any app into this organization you may not have the permission.
First, you need the permission to write into the organization, to do so, ask to the Apps group on the Apps xmpp room.
To transfer your app to the YunoHost-Apps organization, go to your repository and to *Settings* tab.
At the bottom of the page, you will find *Transfer ownership*.
Into the field *New owners GitHub username or organization name*, type *YunoHost-Apps*.
Your repo will be moved into the organization, you don't have to remove the original repository.
## Working with Git locally
As we have seen, you can do a lot of things directly on GitHub.
But when you need to edit multiple files, or when you need to work on your code on your own, it's better to work directly on your computer.
Before going to the hellish part of Git, let's see 2 different ways to start working with Git.
#### First case: Creating a new package
You have shockingly discovered that the wonderful app you love to use everyday does not yet have its YunoHost package. And because you're nice, you decided to create yourself the package, so everyone will enjoy that app the way you do.
What a good idea !
The best is to start from the [example app](https://github.com/YunoHost/example_ynh). But as we have explained before, you don't want to fork, because if you do so, you're going to keep that link to the example app and it's really annoying.
So, you're going to do it differently. You're going to clone !
##### git clone
To clone, you're going to do:
```bash
git clone https://github.com/YunoHost/example_ynh
```
`git clone` will download a copy of the repository. You will have the complete repository, with its branches, commits, and everything (into that apparently little `.git` directory).
To git clone is usually the starting point of any local work with Git.
*A side note though, if you expect to send your modifications back to the distant repository on GitHub, be sure to have the permission to write on this repository. Otherwise, fork before and clone your fork, on which you do have the permission.*
##### My brand new package, continued
In the context of a new package, you will also need to create a repository on GitHub to nest your package.
Which is as simple as a big green *New* button.
Don't bother with README, .gitignore or license. Just create the repository itself.
you can now git clone that new repository.
<img src="/images/github_create_new_repo.png" width=100%>
You now have 2 repositories cloned on your computer.
Copy all the files from the example_ynh app, **except the .git directory** (You just want the files themselves) to your new package.
*If you want, you can remove the example_ynh app. We don't need it anymore.*
You're ready to work on your new package !
#### Second case: Working locally on a repository
You already have a repository, but what you want is just to work locally, so you can modify multiple files.
Simply clone the repository, the .git directory is the link to the distant repository. Nothing else to do than a `git clone`.
#### Branches
You do have your local copy of the repository, but because you have read carefully this documentation until then, you know that you should be sure to be on the testing branch before starting to work.
To see the branches, and to know on which you actually are, while into the directory of your repository, type `git branch`.
The current branch is highlighted and preceded by a `*`.
#### git checkout
If it appears that you're not on the branch you wanted to be, or you're actually on master (which is bad !), you can move to another branch with `git checkout`
```bash
git checkout testing
```
*Read carefully what Git says when you validate a command, do never forget that Git is sneaky...*
#### Git pull before anything else
You're finally on the right branch, and ready to work.
**Wait ! A nasty trap is waiting for you...**
Before ending up in an inextricable situation. Start with a `git pull` to update your branch to the latest change from the distant repository.
*Sometimes, you will encounter an impossible situation where Git is saying that you can't pull because you have local changes. But you don't care of those local modifications, you just want to get the last version of the distant branch. But Git don't care about what YOU want...*
*I have to admit that my only solution is as highly efficient as dirty... A good old `rm -r` of the repository and a `git clone`*
#### Let's work
Eventually, you can work on your code.
When you are finally ok with what you have done, it's time to validate your work.
The first step is to inform Git about which file(s) to validate. To do so, we'll use `git add`
```bash
git add my_file
git add my_other_file and_also_this_one
```
If you want to validate all your work, you can also simply do
```bash
git add --all
```
To check the current status of your validation, you can use `git status`. It will show you which files will be included into your commit, and which files are modified, but not yet included.
`git status -v` will show also which part of the files are modified. A good way to be sure that you didn't make a mistake before committing.
#### git checkout -b
Before committing, or after, or before starting to work. Whenever you feel like it !
You should consider adding your work to a separate branch, that way, it will be easy to create a pull request to merge into the testing branch and discuss with the other packagers what you suggest to change.
To create a new branch and move to this branch, you can use `git checkout -b my_new_branch`.
#### Commit
To commit is simply to validate your work in Git. As you can do in GitHub.
To have the same fields that you had on GitHub, with the name of the commit, and a longer explanation. You can simply use `git commit`.
The first line, before the comments, is for the name of the commit.
After all the comments, you can add an explanation if you want to.
If you want to commit with only a name for your commit, you can use a simple command:
```bash
git commit -m "My commit name"
```
#### Push to the distant repository
Your changes are validated, but only on your local clone of the repository. Now, you have to send those modifications back to the distant repository on GitHub.
In order to do that, you need to know what is your current branch. (If you don't know, `git branch` will give you that info).
Then you can git push
```bash
git push -u origin BRANCH_NAME
```

201
packaging_apps_git_fr.md Normal file
View file

@ -0,0 +1,201 @@
# Comment utiliser Git pour packager les applications
Git... Notre cher Git bien-aimé, que l'on peut aussi décrire comme "Goddamn Idiotic Truckload of sh*t" (Un stupide putain gros tas de m\*rde), selon Linus.
Si vous ne connaissez pas encore Git, soyez sûr que vous serez bientôt d'accord avec cette description.
YunoHost et toutes nos applications sont sur la forge Git GitHub. Ce qui veut dire que si vous voulez travailler sur une application, tôt ou tard vous allez devoir faire face à Git.
Alors voyons comment travailler avec Git pour pouvoir contribuer dans le contexte de YunoHost.
## Travailler avec GitHub
Commençons par la partie facile, GitHub est livré avec une interface web "facile" à utiliser.
*Tout d'abord et malheureusement, il n'y a pas moyen de contourner ça, vous devez avoir un compte sur GitHub.*
#### Branches
Ensuite, et c'est probablement l'une des choses les plus importantes, **ne travaillez pas directement sur la branche master**.
Désolé, il fallait que ce soit dit !
Les branches sont, comme l'explique GitHub, "*une version parallèle d'un dépôt. Elle est contenue dans le dépôt, mais n'affecte pas les autres branches. Elle vous permet de travailler librement sans perturber la version "live".*"
La branche master est la branche qui contient la version de l'application que les utilisateurs installeront et utiliseront effectivement.
La bonne habitude à prendre est de travailler à partir de la branche testing, et lorsque tout est réglé et testé, vous pouvez fusionner la branche testing dans master, afin que les utilisateurs puissent profiter de la nouvelle version de votre package.
Pour voir et modifier la branche actuelle, utilisez ce bouton :
<img src="/images/github_branch.png" width=100%>
#### Modifier un fichier
Maintenant que vous êtes sur la bonne branche, voyons comment éditer un fichier sur GitHub.
Vous pouvez éditer n'importe quel fichier en utilisant l'icône du petit crayon :
<img src="/images/github_edit.png" width=100%>
Si vous n'avez pas la permission d'écrire sur le dépôt, vous verrez (comme sur l'image) que vous allez créer un fork (nous verrons plus loin ce qu'est un fork).
Si vous avez la permission d'écrire, vous allez simplement modifier le fichier, sans forker.
#### Validez vos modifications
Lorsque vous avez fini de modifier le fichier, vous pouvez faire un commit de vos modifications.
Derrière ce mot, l'idée est assez simple, vous allez juste enregistrer vos modifications...
<img src="/images/github_commit.png" width=100%>
Le premier champ est le nom de votre commit, une phrase très courte pour expliquer pourquoi vous avez fait cette modification.
Le deuxième champ est un champ plus grand pour une explication plus complète, si vous en avez besoin.
Enfin, si vous modifiez un dépôt sur lequel vous avez la permission d'écrire, vous pouvez soit faire un commit directement sur la branche en cours, soit créer une nouvelle branche.
Il est généralement préférable de créer une nouvelle branche, de cette façon vous gardez vos modifications sur une version *parallèle* du dépôt. Vos modifications seront discutées dans une pull request (expliquée ci-dessous) puis finalement fusionnées dans la branche d'origine.
#### Forker ou ne pas forker
Un fork est une copie d'un dépôt sur votre propre compte.
Nous avons déjà vu que si vous n'avez pas l'autorisation d'écrire dans un dépôt, la modification d'un fichier créera automatiquement un fork.
Comme le fork est sur votre compte, vous avez toujours la permission d'écrire dessus.
Mais même si un fork n'est pas le véritable dépôt, mais juste une copie, un fork est toujours lié à son parent. Nous verrons plus tard que la création d'un fork est vraiment utile lors de l'ouverture d'une pull request.
Lorsque vous créez un nouveau package, il est courant d'utiliser l'[application exemple](https://github.com/YunoHost/example_ynh) comme base.
Mais, comme vous ne voulez pas garder ce lien vers l'application d'exemple, vous ne devez pas forker l'application d'exemple. Vous la clonerez plutôt.
Malheureusement, cloner une application est un peu plus compliqué sur GitHub. Nous verrons plus tard comment cloner vers un dépôt local à la place.
Nous avons vu comment éditer un fichier, et comment cela peut forker l'application.
Mais, lorsque vous voulez éditer plusieurs fichiers, l'interface GitHub n'est pas vraiment la meilleure solution. Dans une telle situation, vous préférerez cloner le dépôt et travailler sur un dépôt local.
Il se peut que vous deviez tout de même forker sur votre propre compte pour pouvoir enregistrer vos modifications si vous n'avez pas les autorisations sur le dépôt distant.
#### Pull request
Après avoir effectué vos commits, que ce soit sur une branche ou un fork, vous souhaitez proposer vos modifications pour qu'elles soient intégrées dans le dépôt principal, ou dans la branche d'origine.
Pour ce faire, vous allez créer une pull request. GitHub vous demande généralement directement si vous souhaitez le faire.
Sinon, vous trouverez le bouton de création d'une pull request juste ici :
<img src="/images/github_pull_request.png" width=100%>
Lors de la création d'une pull request à partir d'un fork, pour faciliter le travail de révision du code, **ne jamais** décocher la case *Allow edits from maintainers*. Cette option permet simplement aux mainteneurs du dépôt d'origine de modifier directement votre travail.
#### Organisation YunoHost-Apps
Conformément à la [YEP 1.7](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines.md#yep-17), votre application doit être intégrée à l'organisation YunoHost-Apps, mais si vous n'avez jamais contribué à une application auparavant ou si vous n'avez jamais eu d'application dans cette organisation, vous n'en aurez peut-être pas l'autorisation.
Tout d'abord, vous devez avoir la permission d'écrire dans l'organisation, pour ce faire, demandez au groupe Apps sur le salon xmpp Apps.
Pour transférer votre application sur l'organisation YunoHost-Apps, allez dans votre dépôt et dans l'onglet *Settings*.
En bas de la page, vous trouverez *Transfer ownership*.
Dans le champ *New owners GitHub username or organization name*, tapez *YunoHost-Apps*.
Votre dépôt sera déplacé dans l'organisation, vous n'avez pas besoin de supprimer le dépôt d'origine.
## Travailler avec Git en local
Comme nous l'avons vu, vous pouvez faire beaucoup de choses directement sur GitHub.
Mais lorsque vous devez modifier plusieurs fichiers, ou lorsque vous devez travailler sur votre code de votre côté, il est préférable de travailler directement sur votre ordinateur.
Avant d'aller dans la partie infernale de Git, voyons 2 façons différentes de commencer à travailler avec Git.
#### Premier cas : Créer un nouveau package
Vous avez découvert, choqué, que la merveilleuse application que vous aimez utiliser tous les jours n'a pas encore son package YunoHost. Et parce que vous êtes sympa, vous avez décidé de créer vous-même le package, pour que tout le monde puisse apprécier cette application.
Quelle bonne idée !
Le mieux est de commencer par l'[application d'exemple](https://github.com/YunoHost/example_ynh). Mais comme nous l'avons déjà expliqué, vous ne voulez pas forker, parce que si vous le faites, vous allez garder ce lien vers l'application d'exemple et c'est vraiment ennuyeux.
Donc, vous allez le faire différemment. Vous allez cloner !
##### git clone
Pour cloner, vous allez faire :
```bash
git clone https://github.com/YunoHost/example_ynh
```
`git clone` téléchargera une copie du dépôt. Vous aurez le dépôt complet, avec ses branches, ses commits, et tout le reste (dans cet apparent petit répertoire `.git`).
git clone est généralement le point de départ de tout travail local avec Git.
*Toutefois, si vous comptez envoyer vos modifications sur le dépôt distant sur GitHub, assurez-vous d'avoir les droits d'écriture sur ce dépôt. Sinon, forkez avant et clonez votre fork, pour lequel vous avez la permission.*
##### Mon nouveau package, suite
Dans le contexte d'un nouveau package, vous devrez également créer un dépôt sur GitHub pour y mettre votre package.
Ce qui n'est pas plus compliqué qu'un gros bouton vert *New*.
Ne vous embêtez pas avec des README, .gitignore ou licence. Créez simplement le dépôt lui-même.
vous pouvez maintenant cloner ce nouveau dépôt avec Git.
<img src="/images/github_create_new_repo.png" width=100%>
Vous disposez maintenant de 2 dépôts clonés sur votre ordinateur.
Copiez tous les fichiers de l'application example_ynh, **excepté le répertoire .git** (vous voulez juste les fichiers eux-mêmes) dans votre nouveau package.
*Si vous le souhaitez, vous pouvez supprimer l'application example_ynh. Nous n'en avons plus besoin.*
Vous êtes prêt à travailler sur votre nouveau package !
#### Deuxième cas : Travailler localement sur un dépôt
Vous disposez déjà d'un dépôt, mais ce que vous voulez, c'est travailler localement, de sorte que vous puissiez modifier plusieurs fichiers.
Il vous suffit de cloner le dépôt, le répertoire .git est le lien vers le dépôt distant. Rien d'autre à faire qu'un `git clone`.
#### Branches
Vous avez bien votre copie local du dépôt, mais comme vous avez lu attentivement cette documentation jusque-là, vous savez que vous devez vous assurer d'être sur la branche testing avant de commencer à travailler.
Pour voir les branches, et savoir sur quelle branche vous êtes réellement, alors que vous êtes dans le répertoire de votre dépôt, tapez `git branch`.
La branche courante est mise en évidence et précédée d'un "*".
#### git checkout
S'il apparaît que vous n'êtes pas sur la branche où vous vouliez être, ou que vous êtes en fait sur master (ce qui est mal !), vous pouvez passer à une autre branche avec `git checkout`.
```bash
git checkout testing
```
*Lisez attentivement ce que Git dit quand vous validez une commande, n'oubliez jamais que Git est sournois...*
#### git pull avant tout
Vous êtes enfin dans la bonne branche, et prêt à travailler.
**Attendez ! Un vilain piège vous attend...**
Avant de vous retrouver dans une situation inextricable. Commencez par un `git pull` pour mettre à jour votre branche avec les derniers changements du dépôt distant.
*Parfois, vous rencontrerez une situation impossible où Git vous dira que vous ne pouvez pas pull parce que vous avez des changements locaux. Mais vous ne vous souciez pas de ces modifications locales, vous voulez juste obtenir la dernière version de la branche distante. Mais Git ne se soucie pas de ce que VOUS voulez...*
*Je dois admettre que ma seule solution est aussi efficace que sale... Un bon vieux `rm -r` du dépôt et un `git clone`*
#### Il est temps de travailler
Vous pouvez finalement travailler sur votre code.
Lorsque vous êtes enfin d'accord avec ce que vous avez fait, il est temps de valider votre travail.
La première étape consiste à informer Git sur le(s) fichier(s) à valider. Pour ce faire, nous utiliserons `git add`.
```bash
git add mon_fichier
ajouter mon_autre_fichier et_aussi_celui_ci
```
Si vous souhaitez valider l'ensemble de votre travail, vous pouvez aussi simplement faire
```bash
git add --all
```
Pour vérifier l'état actuel de votre validation, vous pouvez utiliser `git status`. Il vous montrera quels fichiers seront inclus dans votre commit, et quels fichiers sont modifiés, mais pas encore inclus.
`git status -v` vous indiquera également quelle partie des fichiers est modifiée. Une bonne façon de s'assurer que vous n'avez pas fait d'erreur avant de faire un commit.
#### git checkout -b
Avant de faire un commit, ou après, ou avant de commencer à travailler. Quand vous en avez envie !
Vous devriez envisager d'ajouter votre travail à une branche séparée, de cette façon, il sera facile de créer une pull request dans la branche testing et de discuter avec les autres packagers de ce que vous suggérez de changer.
Pour créer une nouvelle branche et passer à cette branche, vous pouvez utiliser `git checkout -b my_new_branch`.
#### Commit
Faire un commit, c'est simplement valider son travail dans Git. Comme vous pouvez le faire dans GitHub.
Pour avoir les mêmes champs que vous aviez sur GitHub, avec le nom du commit, et une explication plus longue. Vous pouvez simplement utiliser `git commit`.
La première ligne, avant les commentaires, est pour le nom du commit.
Après tous les commentaires, vous pouvez ajouter une explication si vous le souhaitez.
Si vous voulez faire un commit avec seulement un nom pour votre commit, vous pouvez utiliser une simple commande :
```bash
git commit -m "My commit name"
```
#### Push vers le dépôt distant
Vos modifications sont validées, mais uniquement sur votre clone local du dépôt. Maintenant, vous devez renvoyer ces modifications sur le dépôt distant sur GitHub.
Pour ce faire, vous devez savoir quelle est votre branche actuelle. (Si vous ne le savez pas, `git branch` vous donnera cette information).
Ensuite, vous pouvez git push
```bash
git push -u origin BRANCH_NAME
```

View file

@ -170,7 +170,7 @@ Une fois linvitation acceptée, [transférer son dépôt sur lorganisation
#### YEP 1.8
##### Publier des demandes de test | validé | manuel | OFFICIAL |
Afin d'assurer le bon fonctionnement d'un paquet, il convient de publier une annonce afin d'ouvrir les tests sur le paquet. Cette annonce peut se faire sur le forum dans [la catégorie Apps du forum](https://forum.yunohost.org/c/apps).
Afin d'assurer le bon fonctionnement d'un paquet, il convient de publier une annonce afin d'ouvrir les tests sur le paquet. Cette annonce peut se faire sur le forum dans [la catégorie Apps du forum](https://forum.yunohost.org/c/support/apps).
Il est recommandé d'indiquer si certains tests n'ont pas été menés.

View file

@ -2,6 +2,7 @@
<h1>App helpers</h1>
<p>Doc auto-generated by <a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/doc/generate_helper_doc.py">this script</a> on 03/30/2020 (Yunohost version 3.7.0.12)</p>
<h3 style="text-transform: uppercase; font-weight: bold">apt</h3>
@ -411,7 +412,7 @@
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/apt#L244">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/apt#L265">Dude, show me the code !</a>
</p>
</div>
@ -1428,14 +1429,13 @@ ynh_exec_fully_quiet "your_command | other_command"</code>
<div class="helper-card-body">
<div data-toggle="collapse" href="#collapse-ynh_script_progression" style="cursor:pointer">
<h5 class="helper-card-title"><tt>ynh_script_progression</tt></h5>
<h6 class="helper-card-subtitle text-muted">Print a message as INFO and show progression during an app script</h6>
<h6 class="helper-card-subtitle text-muted">Print a progress bar showing the progression of an app script</h6>
</div>
<div id="collapse-ynh_script_progression" class="collapse" role="tabpanel">
<hr style="margin-top:25px; margin-bottom:25px;">
<p>
<strong>Usage</strong>: <code class="helper-code helper-usage">ynh_script_progression --message=message [--weight=weight] [--time]
The execution time is given for the duration since the previous call. So the weight should be applied to this previous call.</code>
<strong>Usage</strong>: <code class="helper-code">ynh_script_progression --message=message [--weight=weight] [--time]</code>
</p>
@ -1452,7 +1452,7 @@ The execution time is given for the duration since the previous call. So the wei
<li><code>-t</code>, <code>--time=</code> : Print the execution time since the last call to this helper. Especially usefull to define weights.</li>
<li><code>-t</code>, <code>--time=</code> : Print the execution time since the last call to this helper. Especially usefull to define weights. The execution time is given for the duration since the previous call. So the weight should be applied to this previous call.</li>
@ -1474,7 +1474,7 @@ The execution time is given for the duration since the previous call. So the wei
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L224">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L223">Dude, show me the code !</a>
</p>
</div>
@ -1511,7 +1511,7 @@ The execution time is given for the duration since the previous call. So the wei
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L308">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L307">Dude, show me the code !</a>
</p>
</div>
@ -1562,7 +1562,7 @@ The execution time is given for the duration since the previous call. So the wei
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L319">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L318">Dude, show me the code !</a>
</p>
</div>
@ -1610,7 +1610,7 @@ ynh_debug_exec "your_command | other_command"</code>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L377">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logging#L376">Dude, show me the code !</a>
</p>
</div>
@ -1706,7 +1706,7 @@ ynh_debug_exec "your_command | other_command"</code>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logrotate#L99">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/logrotate#L102">Dude, show me the code !</a>
</p>
</div>
@ -3392,7 +3392,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L196">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L216">Dude, show me the code !</a>
</p>
</div>
@ -3451,7 +3451,267 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L218">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L238">Dude, show me the code !</a>
</p>
</div>
</div>
</div>
<div class="helper-card">
<div class="helper-card-body">
<div data-toggle="collapse" href="#collapse-ynh_permission_create" style="cursor:pointer">
<h5 class="helper-card-title"><tt>ynh_permission_create</tt></h5>
<h6 class="helper-card-subtitle text-muted">Create a new permission for the app</h6>
</div>
<div id="collapse-ynh_permission_create" class="collapse" role="tabpanel">
<hr style="margin-top:25px; margin-bottom:25px;">
<p>
<strong>Usage</strong>: <code class="helper-code">ynh_permission_create --permission "permission" [--url "url"] [--allowed group1 group2]</code>
</p>
<p>
<strong>Arguments</strong>:
<ul>
<li><code>permission</code> : the name for the permission (by default a permission named "main" already exist)</li>
<li><code>url</code> : (optional) URL for which access will be allowed/forbidden</li>
<li><code>allowed</code> : (optional) A list of group/user to allow for the permission</li>
</ul>
</p>
<p>
<strong>Example</strong>: <code class="helper-code">ynh_permission_create --permission admin --url /admin --allowed alice bob</code>
</p>
<p>
<strong>Details</strong>:
<p>
If provided, 'url' is assumed to be relative to the app domain/path if they</br>start with '/'. For example:</br> / -> domain.tld/app</br> /admin -> domain.tld/app/admin</br> domain.tld/app/api -> domain.tld/app/api</br></br>'url' can be later treated as a regex if it starts with "re:".</br>For example:</br> re:/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$</br> re:domain.tld/app/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$</br></br>Requires YunoHost version 3.7.0 or higher.</br></br>
</p>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L272">Dude, show me the code !</a>
</p>
</div>
</div>
</div>
<div class="helper-card">
<div class="helper-card-body">
<div data-toggle="collapse" href="#collapse-ynh_permission_delete" style="cursor:pointer">
<h5 class="helper-card-title"><tt>ynh_permission_delete</tt></h5>
<h6 class="helper-card-subtitle text-muted">Remove a permission for the app (note that when the app is removed all permission is automatically removed)</h6>
</div>
<div id="collapse-ynh_permission_delete" class="collapse" role="tabpanel">
<hr style="margin-top:25px; margin-bottom:25px;">
<p>
<strong>Usage</strong>: <code class="helper-code">ynh_permission_delete --permission "permission"</code>
</p>
<p>
<strong>Arguments</strong>:
<ul>
<li><code>permission</code> : the name for the permission (by default a permission named "main" is removed automatically when the app is removed)</li>
</ul>
</p>
<p>
<strong>Example</strong>: <code class="helper-code">ynh_permission_delete --permission editors</code>
</p>
<p>
<strong>Details</strong>:
<p>
Requires YunoHost version 3.7.0 or higher.</br></br>
</p>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L300">Dude, show me the code !</a>
</p>
</div>
</div>
</div>
<div class="helper-card">
<div class="helper-card-body">
<div data-toggle="collapse" href="#collapse-ynh_permission_exists" style="cursor:pointer">
<h5 class="helper-card-title"><tt>ynh_permission_exists</tt></h5>
<h6 class="helper-card-subtitle text-muted">Check if a permission exists</h6>
</div>
<div id="collapse-ynh_permission_exists" class="collapse" role="tabpanel">
<hr style="margin-top:25px; margin-bottom:25px;">
<p>
<strong>Usage</strong>: <code class="helper-code">ynh_permission_exists --permission=permission</code>
</p>
<p>
<strong>Arguments</strong>:
<ul>
<li><code>-p</code>, <code>--permission</code> : the permission to check</li>
</ul>
</p>
<p>
<strong>Details</strong>:
<p>
Requires YunoHost version 3.7.0 or higher.</br></br>
</p>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L314">Dude, show me the code !</a>
</p>
</div>
</div>
</div>
<div class="helper-card">
<div class="helper-card-body">
<div data-toggle="collapse" href="#collapse-ynh_permission_url" style="cursor:pointer">
<h5 class="helper-card-title"><tt>ynh_permission_url</tt></h5>
<h6 class="helper-card-subtitle text-muted">Redefine the url associated to a permission</h6>
</div>
<div id="collapse-ynh_permission_url" class="collapse" role="tabpanel">
<hr style="margin-top:25px; margin-bottom:25px;">
<p>
<strong>Usage</strong>: <code class="helper-code">ynh_permission_url --permission "permission" --url "url"</code>
</p>
<p>
<strong>Arguments</strong>:
<ul>
<li><code>permission</code> : the name for the permission (by default a permission named "main" is removed automatically when the app is removed)</li>
<li><code>url</code> : (optional) URL for which access will be allowed/forbidden</li>
</ul>
</p>
<p>
<strong>Details</strong>:
<p>
Requires YunoHost version 3.7.0 or higher.</br></br>
</p>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L329">Dude, show me the code !</a>
</p>
</div>
</div>
</div>
<div class="helper-card">
<div class="helper-card-body">
<div data-toggle="collapse" href="#collapse-ynh_permission_update" style="cursor:pointer">
<h5 class="helper-card-title"><tt>ynh_permission_update</tt></h5>
<h6 class="helper-card-subtitle text-muted">Update a permission for the app</h6>
</div>
<div id="collapse-ynh_permission_update" class="collapse" role="tabpanel">
<hr style="margin-top:25px; margin-bottom:25px;">
<p>
<strong>Usage</strong>: <code class="helper-code">ynh_permission_update --permission "permission" --add "group" ["group" ...] --remove "group" ["group" ...]</code>
</p>
<p>
<strong>Arguments</strong>:
<ul>
<li><code>permission</code> : the name for the permission (by default a permission named "main" already exist)</li>
<li><code>add</code> : the list of group or users to enable add to the permission</li>
<li><code>remove</code> : the list of group or users to remove from the permission</li>
</ul>
</p>
<p>
<strong>Example</strong>: <code class="helper-code">ynh_permission_update --permission admin --add samdoe --remove all_users Requires YunoHost version 3.7.0 or higher.</code>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/setting#L354">Dude, show me the code !</a>
</p>
</div>
@ -4359,7 +4619,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L85">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L48">Dude, show me the code !</a>
</p>
</div>
@ -4410,7 +4670,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L136">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L99">Dude, show me the code !</a>
</p>
</div>
@ -4473,7 +4733,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L250">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L213">Dude, show me the code !</a>
</p>
</div>
@ -4524,7 +4784,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L289">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L252">Dude, show me the code !</a>
</p>
</div>
@ -4564,7 +4824,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L305">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L268">Dude, show me the code !</a>
</p>
</div>
@ -4611,7 +4871,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L335">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L298">Dude, show me the code !</a>
</p>
</div>
@ -4655,7 +4915,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L378">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L342">Dude, show me the code !</a>
</p>
</div>
@ -4706,7 +4966,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L406">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L372">Dude, show me the code !</a>
</p>
</div>
@ -4753,7 +5013,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L434">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L400">Dude, show me the code !</a>
</p>
</div>
@ -4800,7 +5060,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L458">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L424">Dude, show me the code !</a>
</p>
</div>
@ -4836,7 +5096,7 @@ Please always call this script in install and restore scripts</h6>
</p>
<p>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L488">Dude, show me the code !</a>
<a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/helpers.d/utils#L454">Dude, show me the code !</a>
</p>
</div>
@ -4847,9 +5107,6 @@ Please always call this script in install and restore scripts</h6>
<p>Generated by <a href="https://github.com/YunoHost/yunohost/blob/stretch-unstable/doc/generate_helper_doc.py">this script</a> on 07/11/2019 (Yunohost version 3.6.4.3)</p>
<style>
/*=================================================
Helper card

View file

@ -154,6 +154,7 @@ YEP à respecter pour atteindre le niveau 7:
YEP to be respected to reach level 8:
- [YEP 1.12](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-112) : Follow the template from example_ynh
- Supports change of URL
- *[YEP 2.16](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-216---v%C3%A9rifier-la-disponibilit%C3%A9-des-d%C3%A9pendances-sur-arm-x86-et-x64----valid%C3%A9--manuel--official-) : Check dependency availability on ARM, x86 and x64*
- [YEP 2.18.5](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2185---ajouter-la-tuile-yunohost-pour-naviguer-facilement-entre-les-applications----valid%C3%A9--manuel--official-) : Add the YunoHost tile to easily navigate between applications
- [YEP 4.1](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-41---lier-au-ldap----valid%C3%A9--manuel--official-) : Link to ldap

View file

@ -139,6 +139,8 @@ YEP à respecter pour atteindre le niveau 7:
**Le package d'application respecte toute les recommandations de packaging d'apps. C'est une app de très bonne qualité.**
YEP à respecter pour atteindre le niveau 8:
- [YEP 1.12](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-112) : Respect le modèle de l'application d'exemple
- Prise en charge du changement d'URL
- *[YEP 2.16](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-216---v%C3%A9rifier-la-disponibilit%C3%A9-des-d%C3%A9pendances-sur-arm-x86-et-x64----valid%C3%A9--manuel--official-) : Vérifier la disponibilité des dépendances sur ARM, x86 et x64*
- [YEP 2.18.5](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2185---ajouter-la-tuile-yunohost-pour-naviguer-facilement-entre-les-applications----valid%C3%A9--manuel--official-) : Ajouter la tuile YunoHost pour naviguer facilement entre les applications
- [YEP 4.1](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-41---lier-au-ldap----valid%C3%A9--manuel--official-) : Lier au ldap

View file

@ -1 +1,91 @@
Unfortunately, this page only exists [in french here](packaging_apps_virtualbox_fr) for now.
# Create a development environment with VirtualBox
This documentation page aims at explaining how to setup a Yunohost virtual server, using VirtualBox, to work on application packaging.
## Why use VirtualBox rather than an actual YunoHost production server to package an application ?
There are mostly two reasons why one should prefer a virtual server rather than their own server :
- You can freely torture a virtual server without any risk of breaking it, since you can always restore it to a former working state. It would really be a pity to break your own real server !
- In a typical workflow, a virtual server state would be restored from a known snapshot before starting any work on it, so as to always keep a clean system, without any residues of a former installation. This allows to always be as close a possible to a user first installation.
We will discuss VirtualBox in this guide, as it comes with an easy to use GUI. If you prefer a pure commandline approach to handling your virtual machine, you should use [ynh-dev](/dev) instead.
## Installing VirtualBox
From a GNU Linux system, simply install the `virtualbox-qt` package.
From a Windows or macOS machine, you'd have to refer to the [VirtualBox download page](https://www.virtualbox.org/wiki/Downloads) to fetch the appropriate installation package. The virtualbox package is deprecated since Debian 9, a `.deb` installation package is available on the abovementioned referenced page.
Whatever your system, there should be no need to install the extension pack or the guest addons.
## Installing YunoHost on VirtualBox
Simply follow the appropriate documentation for [installing on VirtualBox](/install_on_virtualbox) then the [post-installation](/postinstall) guide.
During post-install, there is no need to use an actual domain name in `.nohost.me` or `.noho.st`, as your virtual server won't be reachable from outside your local network.
We prefer using a fake domain name which will remain associated with your local network, for instance `yunohost.packaging`.
This domain name, not being registered with any DNS server, will be stored in the `hosts` file of the computer which will need to access it. Please refer to the documentation about [using a local DNS](/dns_local_network) for more information.
Your virtual server is now installed. Before starting to use it, we'll see how to create a first snapshot and how to use that feature.
## Using snapshots
VirtualBox becomes even more interesting with its snapshotting feature, which allow to store the virtualized machine state and restore it quickly.
We'll also see how to use multiple snapshot branches to work on different apps on the same machine.
#### Now, let's create a first snapshot
Before starting to play with the virtual machine, now is a good time to take a first snapshot, so that we don't have to redo the full install process every time.
First, stop the virtual machine.
Managing snapshots is done in the 'Snapshots' tab
<img src="/images/virtualbox_packaging1-en.png" width=80%>
Here, we're creating a first snapshot
<img src="/images/virtualbox_packaging2-en.png" width=30%>
We can now start to work on the virtual machine and create as many snapshots as desired for each milestone of our modifications.
<img src="/images/virtualbox_packaging3-en.png" width=80%>
In this example, after having validated our particular package removal works fine, we can easily get back in time by restoring the virtual machine to its previous state with the package still installed.
Once the package will be fully functional, it will just be a matter of deleting the snaphots associated with this package work to get the virtual machine back to its initial state.
For our next test, we will then be back to a freshly installed YunoHost serveur, without any trace of package installation.
#### Using multiple snapshot branches
In addition to successive snapshots, it is also possible to create a new machine state and additional snapshots from an older machine snapshot/state.
<img src="/images/virtualbox_packaging4-en.png" width=80%>
In this example, I have created two branches since my successful package installation, so as to independently test just the application removal, upgrade and backup/restore steps.
I eventually got back to the virtual machine base state to start a new test on another package, without dropping my former test whatsoever.
At any time, it is possible to get back to a previous snapshot simply by restoring it.
The machine always start on the "Current state" state.
<img src="/images/virtualbox_packaging5-en.png" width=80%>
> It is always possible to create a new snapshot, whether the machine is stopped or not. To restore a snapshot however, the machine cannot be running.
## How do we connect to the virtual machine?
Virtual machine connection is similar to any YunoHost server connection, that is by using `ssh`.
```bash
ssh admin@my.domain
```
Or, if the domain has not been added to the `hosts` file, via its IP address.
```bash
ssh admin@11.22.33.44
```
We can now work on the virtual machine using the commandline.
To easily copy the package files or use a graphical text editor, one can also connect via `sftp` using a file explorer.
It's a simple matter of using the `sftp://admin@my.domain/` address.
<img src="/images/virtualbox_packaging6.jpg" width=80%>
> Note: on Windows or macOS, the file explorer does not natively support the `sftp` protocol…

View file

@ -40,14 +40,14 @@ Avant de commencer à jouer avec la machine virtuelle, il convient de faire un p
Arrêtez la machine virtuelle avant tout.
La gestion des instantanés se fait dans l'onglet "Instantanés"
<img src="/images/virtualbox_packaging1.jpg" width=80%>
<img src="/images/virtualbox_packaging1-fr.jpg" width=80%>
Et on crée un premier instantané
<img src="/images/virtualbox_packaging2.jpg" width=30%>
<img src="/images/virtualbox_packaging2-fr.jpg" width=30%>
À présent on peut commencer à travailler sur la machine virtuelle et créer autant d'instantanés que souhaité pour jalonner le travail.
<img src="/images/virtualbox_packaging3.jpg" width=80%>
<img src="/images/virtualbox_packaging3-fr.jpg" width=80%>
Dans cet exemple, on pourra facilement revenir en arrière, après avoir testé la suppression du package par exemple et restaurer la machine virtuelle dans l'état précédent avec le package encore installé avec succès.
Et lorsque le package sera pleinement fonctionnel, il suffira de supprimer les instantanés liés à ce package pour revenir à l'état initial de la machine virtuelle.
@ -57,14 +57,14 @@ Nous disposerons ainsi d'un serveur YunoHost vierge de toute installation d'appl
En plus de l'usage d'instantanés successifs, il est également possible de dériver un nouvel état actuel et de nouveaux instantanés depuis un instantané plus ancien que le dernier.
<img src="/images/virtualbox_packaging4.jpg" width=80%>
<img src="/images/virtualbox_packaging4-fr.jpg" width=80%>
Dans cet exemple, j'ai dérivé deux branches depuis mon installation réussie du package, pour tester indépendamment la suppression simple de l'application, l'upgrade et le backup/restore.
Finalement je suis reparti de la base de la machine virtuelle pour démarrer un nouveau test sur un autre package, sans pour autant abandonner le précédent test.
À tout moment, il est possible de revenir sur un instantané précédent en le restaurant.
La machine démarrera toujours sur l'"État actuel".
<img src="/images/virtualbox_packaging5.jpg" width=80%>
<img src="/images/virtualbox_packaging5-fr.jpg" width=80%>
> Il est toujours possible de créer un nouvel instantané, que la machine soit à l'arrêt ou non.
Mais pour restaurer un instantané, la machine ne doit pas être en cours d'exécution.

View file

@ -39,17 +39,17 @@ Vous pouvez créer votre propre thème en copiant le thème existant de votre ch
cp -r /usr/share/ssowat/portal/assets/themes/{light,votre_theme}
```
Ensuite, éditez les fichiers css et js dans `/usr/share/ssowat/portal/assets/themes/votre_theme` selon ce que vous voulez faire :
Ensuite, éditez les fichiers CSS et JS dans `/usr/share/ssowat/portal/assets/themes/votre_theme` selon ce que vous voulez faire :
- `custom_portal.css` peut être utilisé pour ajouter des règles CSS personnalisées au portail utilisateur ;
- `custom_overlay.css` peut être utilisé pour personnaliser le petit bouton YunoHost, présent sur les apps qui l'intègre ;
- `custom_portal.js' peut être utilisé pour ajouter du code JS personnalisé à exécuter à la fois sur le portail utilisateur ou lors de l'injection du petit bouton YunoHost ("overlay").
- `custom_overlay.css` peut être utilisé pour personnaliser le petit bouton YunoHost, présent sur les apps qui l'intègrent ;
- `custom_portal.js` peut être utilisé pour ajouter du code JS personnalisé à exécuter à la fois sur le portail utilisateur ou lors de l'injection du petit bouton YunoHost ("overlay").
Vous pouvez également ajouter vos propres images et ressources qui peuvent ensuite être utilisées par les fichiers CSS et JS.
### Exemple : personnaliser le logo
Vous pouvez créer votre propre thème simplement pour changer le "branding" du portail utilisateur Yunohost et remplacer le logo YunoHost par votre propre logo !
Vous pouvez créer votre propre thème simplement pour changer le "branding" du portail utilisateur YunoHost et remplacer le logo YunoHost par votre propre logo !
Pour ce faire, téléversez votre logo dans `/usr/share/ssowat/portal/assets/themes/votre_theme/`, et ajoutez les règles CSS suivantes :

View file

@ -1,345 +0,0 @@
# YunoHost troubleshooting guide
You can consider this as some kind of administrator guide for troubleshooting or what to check when there is something wrong with your YunoHost server. It's not a step by step guide to make your YunoHost work but more of a list of things to check to help diagnose the issue you may have. This can also be useful for debug when packaging a new application or trying to understand YunoHost architecture.
## General notes
### Do not break YunoHost
Best way to troubleshoot is to not have to troubleshoot because you have tested everything before deploying it on your server.
This means that everytime you want to try a new thing (non-official app, new specific config, package an app...), you should try it on a development or testing instance, *not* on your production server. For this, you can [set up a virtualbox](install_on_virtualbox), or for instance a [DigitalOcean droplet](install_on_vps) for 1 cent/hour.
Also: https://wiki.debian.org/DontBreakDebian
### Do not install bad quality apps
Even if it can be tempting to install every [apps](/apps), be careful to their quality level as a bad quality app can ultimately break your server. If you absolutely wish to install such an app, at least try to do it on a test server or check if issues has been posted to this app's Github repository or on the [forum](http://forum.yunohost.org/).
### Check the official documentation
Answer to your question may be already in [the documentation](/docs).
### Check the command line help
Learn how to use the [YunoHost commands](/commandline) like a pro.
## Upgrade
Problems often occur after an upgrade. After a YunoHost upgrade you may want to [update your apps](/app_update).
**Check if some processes are using old libraries**
You are probably familiar with:
```bash
$ apt update && apt dist-upgrade
```
Most of the time it's enough. But in some cases it's possible that some process are still using old versions of upgraded files (such as libraries), that can cause bug. In rare cases that can lead to security concern (ex: upgrade OpenSSL because of a security bug, Nginx will continue to use the version it has in memory). The utility Checkrestart will help you to find and restart them.
```bash
$ apt install debian-goodies
$ checkrestart
Found 0 processes using old versions of upgraded files
```
If some process are running with old librairies versions checkrestart will tell you and propose you a way to restart them. In some cases checkrestart can't find a way to restart them.
<img src="/images/checkstart.png" width=600>
Easier way is to reboot if you can.
You can also use [this script](https://github.com/octopuce/octopuce-goodies/blob/master/checkrestart/checkrestart.octopuce) to automaticaly restart some services if needed. More info in French [here](https://www.octopuce.fr/checkrestart-outil-pratique-de-debian-goodies-et-version-octopuce/).
**Force an upgrade on a community app**
/!\ Always check if there is a upgrade script and read it if you can /!\
```bash
$ yunohost app upgrade
Warning: You must provide an URL to upgrade your custom app app_name
Error: No app to upgrade
$ yunohost app upgrade -u https://github.com/user/someapp_ynh app_name
```
## Services
YunoHost uses a bunch of software to accomplish its purpose. Most of theses software are registered as service in Debian. [More info](/whatsyunohost).
### Check services status
When something doesn't work on your YunoHost, one of the first things to do is to check that all services used by YunoHost are running.
YunoHost include a helper to see the status of all services used by YunoHost:
```bash
$ yunohost service status
```
Sample result:
<img src="/images/services_status.png" width=210>
All services should be enabled and running. Except glances (optional). If some are not, try to restart them. Here is a short description of what they do:
- **Amavis**: anti-spam/virus/malwares, used when receiving email
- **Avahi-daemon**: system which facilitates service discovery on a local network via DNS
- **DNSmasq**: DNS server, you are not forced to use it
- **Dovecot**: IMAP email server, used to receive email
- **Glances**: optional, used by web administration to display server status
- **Metronome**: XMPP instant messaging server, used by Jappix and some external client
- **MySQL**: database, used by some app
- **Nginx**: web server, used by all web app
- **php5-fpm**: PHP service, used by all app written in PHP
- **Postfix**: SMTP email server, used to send email
- **Postgrey**: greylisting policy server, if you use YunoHost email, you should [learn more about greylisting](http://en.wikipedia.org/wiki/Greylisting)
- **Slapd**: LDAP server, used for authentification (SSO and apps)
- [**SSH**](/ssh): Secure Shell
- [**SSOwat**](https://github.com/Kloadut/SSOwat/): an simple sign-on
- **YunoHost-API**: YunoHost web administration
Others services installed by applications can also be present. For instance, `seafile-serve` which serves Seafile app and `uwsgi` which serve Python apps such as Searx.
##### Start or stop a service which is registered with YunoHost:
```bash
$ yunohost service start <servicename>
$ yunohost service stop <servicename>
```
You can also use the generic Debian command:
```bash
$ systemctl start/stop/restart/reload <servicename>
```
After a launch attempt, always check that the service is running.
### Logs
If a service won't start you have to check the logs to see what's wrong. There is no generic way for services to store their logs, but there are mainly stocked in: `/var/log/`
Here are the some useful logs files for YunoHost:
##### auth.log
Contains connections or attempt of connection to your server. It includes every web, ssh, cron job connection. It also stockes all the failed (hopefully) attempts to connect by a potential intruders connections.
##### fail2ban.log
When someone tries to connect to your server and fails multiple times, Fail2ban bans the IP address to avoid bruteforce and (D)DOS attacks. Here you can see if some IP have been banned.
##### mail.err, mail.info, mail.log, mail.warn
These are Postfix (the mail server) logs, check theses if you have issues with email.
##### metronome/metronome.err, metronome/metronome.log
XMPP chat server logs.
##### mysql.err, mysql.log, mysql/error.log
MySQL database logs, these should be empty unless you have trouble with MySQL.
##### php7.0-fpm.log
Generic logs for PHP apps.
##### yunohost.log
This is the log created at the YunoHost install. If you have issue installing YunoHost, check this file.
##### YunoHost operations logs
This is the logs created when you install, remove, backup, etc... an apps, they can be found using the Webadmin in Tools > Logs or using the command line: `yunohost log list` and `yunohost log display`.
This list is not exhaustive. Furthermore, some app may put their logs in `/var/log` too. Slapd logs are unfortunately in `/var/log/syslog`.
## RAM usage
Issues can be caused by a lack of RAM. To check your memory usage, do the following command:
```bash
free -m
```
<img src="/images/free_m.png" width=600>
5-10% of free memory is fine but it's good to have margin (especially for upgrade). Since most of the time you can't upgrade your physical RAM, alternative it to use a swap file. Keep in mind that swap it's a memory 100.000 times slower, so you may to use it only if you got no other choice.
##### Create a swap file:
If `free -m` indicate that you have 0 total for swap line, you may want to add a swap file.
```bash
sudo install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=512k
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
```
Change 512 with the quantity of swap memory you want, 512Mb should be enough for YunoHost. After that, check with `free -m` that you swap is activated.
[Source with more explanation](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880).
## Disk space
One other common issue on a server is lack of disk space. You can check your filesystem are not full with the command:
```bash
df -h
```
This will show you disk usage, if one file-system is near to be full you could encounter issues. You should take appropriate actions to free space or extend your file-system.
<img src="/images/df_h.png" width=400>
## Nginx
Nginx play a big part in YunoHost since it serve all the web applications. YunoHost have a specific way to handle its configuration since there are multiple domain and multiple applications.
### Configuration
##### General configuration structure
```bash
# Main nginx configuration, you don't want to touch this file
/etc/nginx/nginx.conf
# Directory where all YunoHost, domain and app config are located
/etc/nginx/conf.d/
# Configuration of web administration
/etc/nginx/conf.d/yunohost_admin.conf
# Per domain configuration (one per domain)
/etc/nginx/conf.d/example.com.conf
```
##### Application configuration
For each application on a given domain there is a Nginx conf file located in:
```bash
/etc/nginx/conf.d/example.com.d/appname.conf
```
Application configuration file usually follow this type of pattern
```bash
location YNH_WWW_PATH { # path to access the app in browser
alias YNH_WWW_ALIAS ; # Path to source, usually /var/www/app_name
# Specific configuration for the application according to its programming language and deployment option
...
...
# Include SSOWAT user panel in bottom right
include conf.d/yunohost_panel.conf.inc;
}
```
### Logs
Nginx logs files are located in the directory:
```bash
/var/log/nginx/
```
#### Generic logs
##### access.log
Generic access logs, you will find here all the accesses to the YunoHost administration and sometimes intrusion tentative.
##### error.log
Should be empty with a correct Nginx config. If Nginx doesn't start, error are probably located in this log.
#### For each domain name
##### example.com-access.log
All accesses to the domain, including all apps.
##### example.com-error.log
All error regarding app installed on the domain.
Sometime application may have their logs located here too.
## SSOwat
[SSowat](https://github.com/Kloadut/SSOwat) is the software that connect the web server nginx to the LDAP server. His purpose is to authentificate users to the YunoHost portal to switch easily between apps.
### Configuration
You can view (don't edit it, it is oftently overwritten) your current SSOwat config in the file:
```bash
/etc/ssowat/conf.json
```
Which is generated with the command:
```bash
yunohost app ssowatconf
```
Protip: if you want to add a personalized rule for SSOwat, do it in this file:
```bash
/etc/ssowat/conf.json.persistent
```
### Logs
There is no specific logs for SSOwat. There are are located in Nginx logs files. If you see some line with `lua` in it, it's probably SSOwat.
## YunoHost
### Configuration
YunoHost configuration is located in:
```bash
/etc/yunohost/
```
If you want to keep a custom service configuration use this file:
```bash
/etc/yunohost/yunohost.conf
```
For all the service you pass `yes`, YunoHost will not upgrade the config of the specified service. Do this only if you know what you're doing.
All apps configurations are located in:
```bash
/etc/yunohost/apps/app_name/
```
In each app packages you will find:
* **manifest.json**: manifest of the app
* **scripts/**: directory containing five Shell scripts to manage apps
* install
* upgrade
* remove
* backup
* restore
* **config/**: config directory
* **settings.yml**: config of the app, also accessible with:
```bash
yunohost app setting appname settingname
```
### Logs
There is no logfile for application install so when you install an app, keep the log. There is some log about the command line usage in:
```bash
/var/log/yunohost/
```
## Applications
This part is more for packager or to understand the link between Nginx and webapps. First, you should know [how to package a new app](/packaging_apps).
When troubleshooting an application issue can occur at several levels. There is a wide variety of applications and their deployment to YunoHost will depending on the programming language of the app. We will deal here with the most commons cases.
Applications configurations are not treated because it completely differs according to the application.
##### Oversimplified schema
Web browser > Nginx < (web server) < runtime (PHP, Python, Node.js,...) < app
App is interpretated by the runtime, runtime provide or not a webserver, if not a webserver can be added, webserver or runtime communicate with Nginx, Nginx serve webpage to the web browser.
The purpose of this configuration is to have multiple application on one server with only the https port (443) open to the whole Internet.
### PHP apps
##### Deployment option
PHP works natively with Nginx.
##### Communication with Nginx
The PHP interpreter communicate with Nginx through [PHP-FPM](http://php-fpm.org/) which is a [FastCGI](http://en.wikipedia.org/wiki/FastCGI) implementation.
##### Logs
```bash
/var/log/php5-fpm.log
```
**YunoHost package example**: [Owncloud](https://github.com/Kloadut/owncloud_ynh).
### Python apps
##### Deployment option
A Python webapp should run with it's own Python interpreter with and it's own dependencies, for this, the tool `virtualenv` is used.
Usually, a light web server will be used to serve the app behind Nginx. [Uwsgi](https://uwsgi-docs.readthedocs.org/en/latest/) is a good example.
##### Communication with Nginx
Nginx can talk to Python server via three ways:
- [proxy_pass](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass)
- Websocket
- Native uwsgi: uwsgi_pass: [for instance](https://github.com/abeudin/searx_ynh/blob/master/conf/nginx.conf#L9-L10)
##### Logs
Specific to the app and/or the webserver used, for instance uwsgi:
```bash
/var/log/uwsgi/
```
##### Ressources
[Great resource in french on Python virtualenv](http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/)
**YunoHost package example**: [Searx](https://github.com/abeudin/searx_ynh)
### Node.js apps
##### Deployment option
A Node.js app have it's own web server integrated in node runtime, usually Node will expose the app to a TCP port.
##### Communication with Nginx
The http endpoint will be passed locally to Nginx via proxy_pass.
##### Logs
This will be specific to the app.
**YunoHost app example:** [Etherpad-Lite](https://github.com/abeudin/etherpadlite_ynh).
**Note**: Node process can use **lot** of memory compared to other app processes, make sure you have enough.
### Other (Go, Java...)
Webapp can take multiple form an can be deployed in many way. Go app have usually an integrated webserver, Java can be deployed with Tomcat or equivalent… There is no way to be exhaustive here, but most of the time your deployment option will expose an http endpoint that you can pass to Nginx via proxy_pass.
##### Note on Apache
Never install Apache or a package withe Apache as dependency, this will probably break your YunoHost intance.
##### Note on https
Sometimes the webserver integrated with the app is capable to serve https on its own, it's right to use this when you have one application on one server and you don't want to install Nginx for intance. But in YunoHost case, Nginx who serve https and it simplify configuration. So when passing the local URL to Nginx via proxy_pass, use http, nginx will https the thing to the open world later.

View file

@ -1,366 +0,0 @@
# Guide de dépannage de YunoHost
Vous pouvez considérer ce guide comme une sorte de guide de dépannage permettant de voir ce quil faut regarder quand vous rencontrez un problème avec votre serveur YunoHost. Ce nest pas un guide pour remettre en état votre instance YunoHost mais plutôt une liste de choses à vérifier pour aider à diagnostiquer les problèmes rencontrés.
Ce guide peut trouver son intérêt lors du débuggage dune nouvelle application ou pour comprendre larchitecture de Yunohost.
## Notes générales
### Ne cassez pas YunoHost
La meilleure manière de ne pas avoir de pannes est de ne pas bricoler sur votre serveur. Cela signifie que dès que vous souhaitez essayer quelque chose de nouveau (application non officielle, nouvelle configuration personnalisée, création dune nouvelle application), essayez d'abord cela sur un serveur de test et non de production. Pour faire cela, vous pouvez par exemple utiliser une [virtualbox](/install_on_virtualbox) ou un [droplet DigitalOcean](/install_on_vps) pour 1 centime/heure.
Vous pouvez aussi lire ceci si vous avez encore envie de bricoler sur votre instance YunoHost en production : https://wiki.debian.org/DontBreakDebian
### N'installez pas d'applications de mauvaise qualité
Bien que ce soit tentant dinstaller toutes les [applications](/apps), faites attention à leur niveau de qualité car une mauvaise application peut casser votre serveur. Si la qualité d'une application laisse à désirez mais que vous souhaitez tout de même absolument l'installer, essayez de faire ça sur un serveur de test, ou vérifiez au minimum si des problèmes ont été remontés sur le dépôt Github associé ou bien sur le [forum](http://forum.yunohost.org/).
### Vérifier la documentation officielle
Les réponses à vos questions existent peut être déjà dans [la documentation](/docs).
### Vérifier laide dans les commandes en ligne
Vous pouvez apprendre à utiliser les [commandes YunoHost](/commandline)
## Mise à jour
Les problèmes ont souvent lieu après une mise à jour. Après une mise à jour, vous pouvez avoir envie de [mettre à jour votre application](/app_update).
**Vérifier si un processus utilise une ancienne librairie**
vous avez sûrement lhabitude dutiliser :
```bash
$ apt update && apt dist-upgrade
```
La plupart du temps, cela suffit. Mais dans certaines situations, il est possible que certains processus utilisent toujours danciennes bibliothèques non mises à jour.
Cela peut entraîner des bugs et, dans certains rares cas, des problèmes de sécurité (ex : lors dune mise à jour de OpenSSL à cause dune faille de sécurité, Nginx va continuer à utiliser la version dont il dispose en mémoire). Lutilitaire Checkrestart va vous aider à identifier ces processus et les redémarrer.
```bash
$ apt install debian-goodies
checkrestart
# Found 0 processes using old versions of upgraded files
```
Si des processus fonctionnent avec des vieilles versions de bibliothèques, checkrestart va vous le dire et vous proposer une manière de les redémarrer. Il est possible que checkrestart ne trouve pas de manière de les redémarrer. Attention, il faut opérer lopération manuellement.
<img src="/images/checkstart.png" width=600>
La solution la plus simple peut être de redémarrer si vous pouvez
Vous pouvez aussi utiliser [ce script](https://github.com/octopuce/octopuce-goodies/blob/master/checkrestart/checkrestart.octopuce) pour redémarrer automatiquement ces services si besoin. Plus dinformations [ici](https://www.octopuce.fr/checkrestart-outil-pratique-de-debian-goodies-et-version-octopuce/).
**Forcer une mise à jour dune application non officielle**
/!\ Pensez toujours à vérifier sil existe un script de mise à jour et lisez-le si vous pouvez/!\
```bash
$ yunohost app upgrade
Warning: You must provide an URL to upgrade your custom app app_name
Error: No app to upgrade
$ yunohost app upgrade -u https://github.com/user/someapp_ynh app_name
```
## Les services
YunoHost utilise toute une série de logiciels pour fonctionner. La plupart de ces logiciels sont déclarés comme des services dans Debian [plus dinfo](/whatsyunohost).
### Vérifier le statut des services
Quand quelque chose ne fonctionne pas, une des premières choses à faire est de vérifier que tous les services utilisés par YunoHost sont lancés.
YunoHost inclus un outil qui permet de visualiser tous les services utilisés par YunoHost :
```bash
yunohost service status
```
Exemple de résultat :
<img src="/images/services_status.png" width=210>
Tous les services doivent être activés (enabled) et en fonctionnement (running) sauf Glances (optionnel). Si certains ne le sont pas, essayez de les redémarrer.
Voici une petite description de leurs fonctions respectives :
- **Amavis** : anti-spam/virus/malwares, utilisé lors de léchange de mails.
- **Avahi-daemon** : système qui facilite la découverte dordinateurs sur le réseau local en leur attribuant des noms.
- **DNSmasq** : serveur DNS, vous nêtes pas obligé de lutiliser (Non installé par défaut)
- **Dovecot** : serveur IMAP, utilisé pour la réception de mails.
- **Glances** : optionnel, utilisé pour ladministration web pour afficher les statuts du serveur
- **Metronome** : serveur XMPP utilisé par jappix comme client.
- **MySQL** : base de données utilisée par certaines applications
- **Nginx** : serveur web, utilisé par toutes les applications
- **php5-fpm** : serveur PHP, utilisé par toutes applications utilisant PHP
- **Postfix** : serveur SMTP, utilisé pour lenvoi de mails.
- **Postgrey** : serveur de listes grises, si vous utilisez YunoHost pour les mails, vous devriez regarder un peu plus sur cette question.
[En apprendre plus sur les listes grises](http://en.wikipedia.org/wiki/Greylisting)
- **Slapd** : serveur LDAP, utilisé pour lauthentification (SSO and apps)
- [**SSH**](/ssh) : Secure Shell, utilisé pour laccès distant au serveur.
- [**SSOwat**](https://github.com/Kloadut/SSOwat/) : gestionnaire simple dauthentification.
- **YunoHost-API** : administration web de YunoHost
Les autres services installés par des applications vont aussi apparaître. Par exemple `seafile-serve` utilisé par lapplication Seafile et `uwsgi` qui est utilisé par des applications python comme Searx.
##### démarrer ou arrêter un service identifié avec YunoHost :
```bash
yunohost service start <servicename>
yunohost service stop <servicename>
```
Vous pouvez aussi utiliser la commande Debian :
```bash
systemctl start/stop/restart/reload <servicename>
```
Après une tentative de lancement, vérifiez toujours que le service est lancé.
### Logs
Si un service ne démarre pas, vous devez vérifier les logs pour voir ce qui ne pose problème. Il ny a pas de règles définies où les services doivent stocker leurs logs. Cependant, ceux-ci se trouvent pour la plupart dans :
```bash
/var/log/
```
Voici quelques fichiers de log utiles pour YunoHost :
##### auth.log
Il contient les connexions ou tentatives de connexion à votre serveur. Il inclut aussi toutes les connexion web, ssh et cron job (tâches répétitives). Il stoque enfin toutes les tentatives (on lespère) de connexion par des potentiels intrus.
##### fail2ban.log
Quand quelquun tente de se connecter à votre serveur et rate plusieurs fois, Fail2ban bannit ladresse IP afin déviter les attaques en bruteforce et/ou en (D)DOS. Vous pouvez donc trouver ici les IP qui auront été bannies.
##### mail.err, mail.info, mail.log, mail.warn
Ce sont les logs de Postfix pour le serveur de mail. Vous pouvez les consulter si vous rencontrez des problèmes avec les mails.
##### metronome/metronome.err, metronome/metronome.log
Logs du serveur de chat XMPP
##### mysql.err, mysql.log, mysql/error.log
Logs de la base de données MySQL. Ils doivent être vides sauf si vous avez des problèmes avec MySQL.
##### php7.0-fpm.log
Lieu générique demplacement des logs pour les applications PHP.
##### yunohost.log
Cest le fichier de log créé à linstallation de YunoHost. Si vous rencontrez des problèmes à linstallation de YunoHost, vérifier ce fichier.
Cette liste nest pas exhaustive. De plus, certaines applications peuvent aussi mettre leurs fichiers de log dans `/var/log`.
Les logs de Slapd sont malheureusement stockés dans`/var/log/syslog`.
## Utilisation de la RAM
Des problèmes peuvent être causés par un manque de RAM. Pour vérifier votre utilisation de la RAM, entrez la commande suivante :
```bash
free -m
```
<img src="/images/free_m.png" width=600>
5 à 10 % de mémoire libre est acceptable, mais il est bien de disposer dune marge (en particulier pour les mises à jour). Comme la plupart du temps, vous ne pouvez pas augmenter votre quantité de RAM, vous avez la possibilité dutiliser une partition de SWAP (mémoire du disque dur attribuée à la RAM).
Gardez à lesprit que le SWAP est une mémoire 100 000 fois plus lente, vous devriez donc lutiliser uniquement si vous navez pas dautre choix.
##### créer un fichier de swap :
Si `free -m` indique que vous navez aucune ligne de SWAP, vous pouvez avoir envie dajouter un fichier de SWAP.
```bash
sudo install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=512k
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
```
Changez 512 avec la quantité de mémoire SWAP que vous voulez.
512 Mio devrait être suffisant pour YunoHost. Après quoi, vérifiez que votre swap est activé avec `free -m`.
[Source avec plus dexplication](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880).
## Espace disque
Un des autres problèmes communs des serveurs est le manque despace disque.
Vous pouvez vérifier que votre disque nest pas plein avec la commande :
```bash
df -h
```
Cela va vous montrer lutilisation du disque. Si une partition système est presque pleine, vous pouvez rencontrer des problèmes. Vous devez alors réaliser les opérations appropriées pour gagner de lespace libre sur le disque ou étendre la capacité de celui-ci.
<img src="/images/df_h.png" width=400>
## Nginx
Nginx joue un grand rôle dans YunoHost puisquil fournit toutes les applications web.
YunoHost a une manière particulière de gérer la configuration puisquil existe plusieurs domaines et plusieurs applications.
### Configuration
##### Configuration générale de la structure
```bash
# Configuration principale de Nginx, vous ne devriez pas toucher ce fichier
/etc/nginx/nginx.conf
# Dossier où les configurations de toutes les applications et domaines sont situées
/etc/nginx/conf.d/
# Configuration de ladministration web
/etc/nginx/conf.d/yunohost_admin.conf
# Configuration par domaine (une par domaine)
/etc/nginx/conf.d/example.com.conf
```
##### Configuration des applications
Pour chaque application ou domaine donné, il y a un fichier de configuration Nginx situé dans :
```bash
/etc/nginx/conf.d/example.com.d/nom_de_application.conf
```
Les fichiers de configuration sont généralement utilisés pour ce genre de modèle
```bash
location YNH_WWW_PATH { # Chemin pour atteindre votre application dans le navigateur
alias YNH_WWW_ALIAS ; # chemin pour accéder aux sources des fichiers aux fichiers (dhabitude /var/www/app_name)
# Configuration particulière pour une application selon son langage de programmation et ses options de déploiement.
# Inclure le logo SSOwat en bas à droite de la fenêtre
include conf.d/yunohost_panel.conf.inc;
}
```
### Les logs
Les fichiers de log de Nginx sont situés dans le dossier :
```bash
/var/log/nginx/
```
#### Logs génériques
##### access.log
Le fichier générique daccès. Vous trouverez ici toutes les tentatives daccès à ladministration de YunoHost et certaines tentatives dintrusion.
##### error.log
Ce fichier devrait être vide avec une configuration correcte de Nginx. Si Nginx ne démarre pas, des informations sur les erreurs devraient se trouver dans ce fichier.
#### Pour chaque nom de domaine
##### example.com-access.log
Tous les accès à ce domaine (en prenant en comptes toutes les applications).
##### example.com-error.log
Toutes les erreurs liées aux applications installées sur ce domaine, il se peut que certaines applications aient tous leurs logs soit dans ce fichier.
## SSOwat
[SSowat](https://github.com/Kloadut/SSOwat)
est le logiciel qui connecte le serveur web nginx au serveur LDAP. Son but est dauthentifier les utilisateurs au portail YunoHost pour pouvoir simplement se déplaçer entre les applications.
### Configuration
Vous pouvez regarder le fichier de configuration SSOwat dans le fichier :
```bash
/etc/ssowat/conf.json
```
Celui-ci est généré avec la commande
```bash
sudo yunohost app ssowatconf
```
Astuce : si vous souhaitez mettre en place des règles personnalisées dans le SSOwat, vous pouvez le faire dans ce fichier :
```bash
/etc/ssowat/conf.json.persistent
```
### Logs
Il ny a pas de fichier de log spécifiques pour SSOwat. Ils sont situés dans les fichiers de log de Nginx. Si vous voyez des lignes avec `lua` à lintérieur, il sagit probablement de logs de SSOwat.
## YunoHost
### Configuration
La configuration de Yunohost est située ici
```bash
/etc/yunohost/
```
Si vous souhaitez utiliser et conserver un fichier de configuration personnalisé, utiliser ce fichier :
```bash
/etc/yunohost/yunohost.conf
```
Pour tous les services avec la mention `yes`, YunoHost ne réalisera pas de mise à jour des services spécifiés.
Ne faites ça que si vous savez ce que vous faites.
Toutes les configurations dapplications sont situées dans :
```bash
/etc/yunohost/apps/app_name/
```
Dans chaque paquet (dapplication), vous trouverez :
* **manifest.json** : manifeste de lapplication
* **scripts/** : dossier contenant cinq scripts Shell pour gérer lapplication.
* install
* upgrade
* remove
* backup
* restore
* **config/** : dossier de configuration
* **settings.yml** : La configuration de lapplication, aussi accessible via :
```bash
sudo yunohost app setting appname settingname
```
### Logs
Il ny a pas de fichier de log créé lorsque vous installez une application. Essayez de conserver les logs. Vous pouvez trouver cependant certains logs peuvent se trouver dans :
```bash
/var/log/yunohost/
```
## Applications
Cette partie concerne plus les créateurs dapplications YunoHost mais permet néanmoins de comprendre le lien entre Nginx et les applications web.
Premièrement, vous devez savoir [comment créer un paquet pour une nouvelle application](/packaging_apps).
Quand vous bricolez une application, des erreurs peuvent avoir lieu selon certains niveaux dimportance. Il y a une grande variété dapplications et le déploiement de celles-ci va dépendre du langage de programmation de lapplication.
Nous allons voir ici les « cas classiques ».
La configuration des applications nest pas abordée ici car leurs configurations respectives peuvent énormément varier.
##### Schéma simplifié
Navigateur web > Nginx < (serveur web) < interpréteur (PHP, Python, Node.js…) < app
Lapplication est exécutée par linterpréteur, celui-ci peut potentiellement fournir un serveur web. Le runtime ou le serveur web va communiquer avec Nginx et ce dernier servira des pages au navigateur web.
Le but de cette configuration est davoir plusieurs applications sur un seul serveur avec seulement le port https ouvert à linternet entier.
### Applications PHP
##### Options de déploiement
PHP fonctionne nativement avec Nginx
##### La communication avec Nginx
Linterpréteur PHP communique avec Nginx par [PHP-FPM](http://php-fpm.org/)
qui est une implémentation de [FastCGI](http://en.wikipedia.org/wiki/FastCGI) implémentation.
##### Les logs
```bash
/var/log/php5-fpm.log
```
**Exemple de paquet YunoHost** : [Owncloud](https://github.com/Kloadut/owncloud_ynh).
### Applications Python
##### Options de déploiement
Une application python devrait fonctionner avec son propre interpréteur Python et ses propres dépendances. Pour cela, on peut utiliser loutil `virtualenv`.
Dhabitude, un serveur web léger sera utilisé pour fournir lapplication derrière Nignx [Uwsgi](https://uwsgi-docs.readthedocs.org/en/latest/) est un bon exemple.
##### La communication avec Nginx
Nginx communique de trois manières avec Python :
- [proxy_pass](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass)
- Websocket
- Native uwsgi : uwsgi_pass : [par exemple](https://github.com/abeudin/searx_ynh/blob/master/conf/nginx.conf#L9-L10)
##### Logs
Logs spécifiques à lapplication et/ou au serveur web, par exemple uwsgi :
```bash
/var/log/uwsgi/
```
##### Ressources
[Bonnes ressources en français sur Python et virtualenv](http://sametmax.com/les-environnement-virtuels-python-virtualenv-et-virtualenvwrapper/)
**Exemple de paquet YunoHost en Python** : [Searx](https://github.com/abeudin/searx_ynh)
### Applications Node.js
##### Options de déploiement
Une application Node.js a son propre serveur web intégré dans linterpréteur Node. Dhabitude, Node va exposer lapplication sur un port TCP.
##### Communication avec Nginx
Le point daccès http va être réalisé en local vers Nginx via proxy_pass.
##### Les Logs
Cela va être spécifique aux applications.
**Exemple de paquet YunoHost en Node.js :** [Etherpad-Lite](https://github.com/abeudin/etherpadlite_ynh).
**Note** : les processus Node peuvent utiliser **beaucoup** de mémoire comparée aux processus des autres applications. Assurez-vous donc den avoir assez.
### Autres (Go, Java…)
Les webapp peuvent être déployées de nombreuses manières.
Les applications Go ont généralement un serveur web intégré, Java peut être déployé avec Tomcat ou une autre solution équivalente. Il nest pas possible dêtre exhaustif ici mais la plupart du temps, les déploiements vont exposer une adresse en http que vous pourrez passer dans Nginx via proxy_pass.
##### Note sur Apache
Ne jamais installer le serveur web Apache ou un paquet avec Apache comme dépendance, cela va sûrement casser linstance YunoHost.
##### Note sur https
Parfois, le serveur web intégré avec lapplication est capable de servir du https lui-même.
Cest une bonne chose de lutiliser quand vous disposez dune application sans Nginx devant. Dans le cadre de YunoHost, le fait que Nginx serve du https simplifie la configuration. Donc, quand vous passez par proxy_pass, utilisez http et Nginx le mettra a disposition en https pour le reste de linternet.

View file

@ -2,8 +2,7 @@
## From the webadmin
On the administraton panel, choose Tools.
Click on Upgrade the system.
On the administraton panel, click on Upgrade the system.
The application search for updates and propose it if so.

View file

@ -2,8 +2,7 @@
## Depuis la webadmin
Dans la partie administration, aller dans la partie Outils.
Choisir Mettre à jour le système.
Dans la partie administration, choisir Mettre à jour le système.
Lapplication recherche les mises à jour et les propose sil y en a.

View file

@ -117,7 +117,7 @@ Out of the box, YunoHost provide an XMPP server, for which you can install a web
You can also install a matrix server:
* The server: [Synapse](https://github.com/YunoHost-Apps/synapse_ynh)
* A web client: [Riot](https://github.com/YunoHost-Apps/_ynh)
* A web client: [Riot](https://github.com/YunoHost-Apps/riot_ynh)
### Intranet

View file

@ -116,7 +116,7 @@ De base, YunoHost fournit immédiatement un serveur XMPP pour lequel vous pouvez
Vous pouvez également installer un serveur Matrix :
* Le serveur: [Synapse](https://github.com/YunoHost-Apps/synapse_ynh)
* Un client web: [Riot](https://github.com/YunoHost-Apps/_ynh)
* Un client web: [Riot](https://github.com/YunoHost-Apps/riot_ynh)
### Intranet

View file

@ -116,7 +116,7 @@ Tras linstallacion YunoHost fornís sul pic un servidor XMPP per lo qual pod
Podètz tanben installar un servidor Matrix :
* Lo servidor: [Synapse](https://github.com/YunoHost-Apps/synapse_ynh)
* Un client web: [Riot](https://github.com/YunoHost-Apps/_ynh)
* Un client web: [Riot](https://github.com/YunoHost-Apps/riot_ynh)
### Intranet

View file

@ -3,7 +3,7 @@ Qu'est-ce que YunoHost ?
<img src="/images/YunoHost_logo_vertical.png" width=400>
YunoHost est un **système dexploitation** qui vise à simplifier autant que possible l'administration d'un **serveur** pour ainsi démocratiser [lauto-hébergement](/selfhosting) tout en restant fiable, sécurisé, éthique et léger. C'est un projet de logiciel libre maintenu exclusivement par des bénévoles. Techniquement, il peut être vu comme une distribution basé sur [Debian GNU/Linux](https://debian.org) et peut s'installer sur [de nombreux types de matériel](/install).
YunoHost est un **système dexploitation** qui vise à simplifier autant que possible l'administration d'un **serveur** pour ainsi démocratiser [lauto-hébergement](/selfhosting) tout en restant fiable, sécurisé, éthique et léger. C'est un projet de logiciel libre maintenu exclusivement par des bénévoles. Techniquement, il peut être vu comme une distribution basée sur [Debian GNU/Linux](https://debian.org) et peut s'installer sur [de nombreux types de matériel](/install).
Fonctionnalités
---------------