diff --git a/OVH_fr.md b/OVH_fr.md index fe1fab86..92df9c1f 100644 --- a/OVH_fr.md +++ b/OVH_fr.md @@ -2,7 +2,7 @@ Nous allons voir comment configurer le DNS avec [OVH](http://www.ovh.com). -Après achat de votre nom de domaine, rendez vous dans l'espace client pour retrouver la panneau de configuration d'OVH, et cliquez sur votre domaine à gauche: +Après achat de votre nom de domaine, rendez vous dans l'espace client pour retrouver le panneau de configuration d'OVH, et cliquez sur votre domaine à gauche: @@ -17,7 +17,7 @@ Il suffit maintenant d'ajouter les redirections DNS comme indiqué dans la [conf [Tutoriel plus général sur l’IP dynamique](dns_dynamicip_fr). -Cette partie est à suivre que si votre IP est dynamique. +Cette partie est à suivre, que si votre IP est dynamique. Pour savoir si votre fournisseur d’accès internet vous fournit une IP dynamique [voir ici](/isp_fr). diff --git a/README.md b/README.md index 207de741..bbdcfc2b 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,4 @@ * [Web Site](https://yunohost.org) * Based on [Simone](https://github.com/YunoHost/Simone) -Please report [issues on YunoHost bugtracker](https://dev.yunohost.org/projects/yunohost/issues) (no registration needed). - +Please report [issues on YunoHost bugtracker](https://github.com/YunoHost/issues/issues). \ No newline at end of file diff --git a/XMPP.md b/XMPP.md index 3b6ccc68..dae040e2 100644 --- a/XMPP.md +++ b/XMPP.md @@ -2,17 +2,16 @@ XMPP is a communication protocol of instant messaging, VoIP (Voice over IP), videoconferencing. YunoHost provide: -* [Metronome](http://www.lightwitch.org/metronome): a XMPP server -* [Jappix](/apps): a web XMPP client +* [Metronome](https://metronome.im/): a XMPP server ## Desktop XMPP client You can connect to your XMPP server with any standard desktop XMPP client, such as [Pidgin](http://pidgin.im/), [Gajim](http://gajim.org), [Jitsi](http://jitsi.org/) or [Adium](https://adium.im/). The credentials to give are : -* The first part of your email address (without the @domain.tld) +* Your email address (with the @domain.tld) * Your standard YunoHost password Your XMPP server runs on the standard port 5222. Your administrator might need to forward this port if the server is behind a router. - \ No newline at end of file + diff --git a/XMPP_fr.md b/XMPP_fr.md index 4e93435f..2ae2df86 100644 --- a/XMPP_fr.md +++ b/XMPP_fr.md @@ -2,11 +2,9 @@ Yunohost est installé avec un serveur de messagerie instantanée XMPP (metronome). -Vous pouvez discuter simplement avec des contacts XMPP/Jabber en installant l’application [Jappix](https://jappix.com/) depuis l’interface d’administration. - [XMPP](https://fr.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol) est un protocole ouvert et extensible qui permet également de créer des salons de discussions, de partager des statuts et des données, de passer des appels en VoIP et de faire de la visioconférence. -Toutes les applications basées sur XMPP sont compatibles entre-elles : lorsque vous utilisez un client XMPP vous pouvez discuter avec n’importe quel possesseur.e d’un compte XMPP/Jabber. Ce protocole est déjà utilisé par des millions de personnes dans le monde. +Toutes les applications basées sur XMPP sont compatibles entre-elles : lorsque vous utilisez un client XMPP vous pouvez discuter avec n’importe quel possesseur d’un compte XMPP/Jabber. Ce protocole est déjà utilisé par des millions de personnes dans le monde. ### Compte XMPP/Jabber @@ -14,9 +12,9 @@ Un compte XMPP/Jabber est basé sur un identifiant sous la forme `utilisateur@do Sous yunohost, cet identifiant correspond simplement à l’adresse courriel principale d’un utilisateur. Le mot de passe est celui du compte de l’utilisateur. -### Utiliser un autre client XMPP +### Se connecter à XMPP -En plus de Jappix, il existe d’autres clients web orientés réseau social, comme [Movim](https://pod.movim.eu) ou [Libervia/Salut à Toi](http://salut-a-toi.org/). +Il existe des clients web orientés réseau social, comme [Movim](https://pod.movim.eu) ou [Libervia/Salut à Toi](http://salut-a-toi.org/). Vous pouvez également utiliser un client desktop comme [Pidgin](http://pidgin.im/) (multiplateforme), [Gajim](http://gajim.org/index.fr.html) (Linux), [thunderbird](https://www.mozilla.org/fr/thunderbird/) (multiplateforme), [Jitsi](http://jitsi.org/) (multiplateforme) ou [Adium](https://adium.im/) (Mac OS). @@ -27,21 +25,20 @@ Vous pouvez également utiliser un client desktop comme [Pidgin](http://pidgin.i Voici une liste plus exhaustive des clients XMPP : https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP -### Chiffrer ses conversations avec OTR +### Chiffrer ses conversations avec OMEMO -Il est possible de chiffrer ses conversations XMPP à l’aide de [OTR](https://otr.cypherpunks.ca/index.php#downloads), notamment en utilisant Pidgin : -* Installer `pidgin` et le plugin [`pidgin-otr`](https://otr.cypherpunks.ca/index.php#downloads)(sous linux il devrait être disponible avec votre gestionnaire de paquet) +Il est possible de chiffrer ses conversations XMPP à l’aide de [OMEMO](https://xmpp.org/extensions/xep-0384.html), notamment en utilisant Gajim : +* Installer `gajim` et le plugin `gajim-omemo` * Activez le plugins dans `Outils > Plugins` -* Faite `produire` pour générer une empreinte -* Activez le chiffrement dans une conversation avec un contact disposant de l’OTR. +* L'activer +* Activez le chiffrement dans une conversation avec un contact disposant de OMEMO. ### Salon de discussion -Pour créer un salon de discussion (Multi-user chat) sur votre serveur Yunohost utilisez l’identifiant nomsalon@muc.domaine.tld (ou domaine.tld est le domaine principal de votre serveur). +Pour créer un salon de discussion (Multi-user chat) sur votre serveur Yunohost utilisez l’identifiant nomsalon@muc.domaine.tld (où domaine.tld est le domaine principal de votre serveur). Si vous utilisez un nom de domaine personnel, il est nécessaire d’[ajouter une redirection de `type CNAME` pour le sous domaine `muc.`](dns_config_fr) au niveau de votre serveur DNS. ### VoIP et visioconférence Un moyen pratique d’appeler un contact XMPP, en VoIP ou en appel vidéo, est d’utiliser le client [Jitsi](http://jitsi.org/). - diff --git a/accounting.md b/accounting.md deleted file mode 100644 index 988b342b..00000000 --- a/accounting.md +++ /dev/null @@ -1,3 +0,0 @@ -#Accounting - -If you want to contribute to this documentation, you have to [ask an admin to create an account](/support) **OR** send merge requests to the pages' [git repository](https://github.com/YunoHost/doc). diff --git a/accounting_fr.md b/accounting_fr.md deleted file mode 100644 index 45d433c6..00000000 --- a/accounting_fr.md +++ /dev/null @@ -1,3 +0,0 @@ -#Comptes utilisateur - -Si vous voulez contribuer à cette documentation, vous devez [demander à un administrateur de vous créer un compte](/support_fr), ou modifier directement le répertoire des pages via le [dépôt Git](https://github.com/YunoHost/doc). \ No newline at end of file diff --git a/admin.md b/admin.md index 6793e8c8..d462c05c 100644 --- a/admin.md +++ b/admin.md @@ -1,8 +1,6 @@ # Administrator web interface -Yunohost has an administrator web interface. The other way to administer your Yunohost install is through the [CLI called "moulinette"](/moulinette) - -**Please note** that the web interface is an active work-in-progress and has far fewer features than the CLI moulinette. +Yunohost has an administrator web interface. The other way to administrate your Yunohost install is through the [command line](/commandline). ### Access @@ -12,20 +10,9 @@ You can access your administrator web interface at this address: https://example + ### Reset admin password -#### On Yunohost 2.5 - -The script to reset the admin password is not directly available, but can be downloaded and executed (as root) : - -```bash -$ wget https://raw.githubusercontent.com/YunoHost/yunohost/testing/sbin/yunohost-reset-ldap-password -$ chmod +x yunohost-reset-ldap-password -$ ./yunohost-reset-ldap-password -``` - -#### From Yunohost 2.6 - To reset the admin password (as root) : ```bash @@ -34,6 +21,7 @@ $ yunohost-reset-ldap-password A temporary password will be created, which you can use to define the new password. + ### How to move application folder To change an application folder, only a few commands are needed: move content, create a symlink and set access rights. diff --git a/admin_api_fr b/admin_api_fr.md similarity index 100% rename from admin_api_fr rename to admin_api_fr.md diff --git a/admin_fr.md b/admin_fr.md index 4214b2ce..7dbcb32a 100644 --- a/admin_fr.md +++ b/admin_fr.md @@ -1,30 +1,18 @@ # L’interface d’administration web -YunoHost est fourni avec une interface graphique d’administration. L’autre méthode est d’utiliser la [moulinette](/moulinette_fr) ligne de commande. - -**Attention** : l’interface d’administration donne accès à beaucoup moins de fonctionnalités que la moulinette, car elle est en développement actif. +YunoHost est fourni avec une interface graphique d’administration. L’autre méthode est d’utiliser la [ligne de commande](/commandline_fr). ### Accès + L’interface admin est accessible depuis votre instance YunoHost à l’adresse https://exemple.org/yunohost/admin (remplacez exemple.org par la bonne valeur)
+ ### Réinitialiser le mot de passe administrateur -#### Sous Yunohost 2.5 - -Le script pour réinitialiser le mot de passe adminstrateur n'est pas directement disponible, mais peut être téléchargé puis executé (à partir de l'utilisateur root) : - -```bash -$ wget https://raw.githubusercontent.com/YunoHost/yunohost/testing/sbin/yunohost-reset-ldap-password -$ chmod +x yunohost-reset-ldap-password -$ ./yunohost-reset-ldap-password -``` - -#### À partir de Yunohost 2.6 - Pour réinitialiser le mot de passe administrateur de YunoHost (à partir de l'utilisateur root) : ```bash @@ -34,10 +22,9 @@ $ yunohost-reset-ldap-password Un mot de passe temporaire sera créé, que vous pouvez utiliser pour ensuite définir un nouveau mot de passe. - ### Comment déplacer le dossier d’une application -Pour changer le dossier contenant une application, seules quelques commandes sont nécessaires : déplacer le contenu créer un lien symbolique et définir les droits d’accès. +Pour changer le dossier contenant une application, seules quelques commandes sont nécessaires : déplacer le contenu, créer un lien symbolique et définir les droits d’accès. Exemple avec WordPress : ```bash diff --git a/admindoc.md b/admindoc.md index eb82a480..497d6804 100644 --- a/admindoc.md +++ b/admindoc.md @@ -1,35 +1,37 @@ # Administrator documentation -*For want of anything better, here is an index of interesting pages for the YunoHost server's administrator.* - -* [What is Self-hosting](/selfhosting) -* [Compatible hardware](/hardware) -* [Installation guide](/install) - * [On an OLinuXino board](/install_on_olinuxino) - * [On an ARM board](/install_on_arm_board) +* Discovering self-hosting + * [What is Self-hosting](/selfhosting) + * [What is YunoHost](/whatsyunohost) +* Before installing + * [Try YunoHost](/try) + * [Choosing hardware](/hardware) + * [About the friendliness of internet service providers](/isp) +* [Installing YunoHost](/install) + * [On a regular computer](/install_iso) + * [On a dedicated or a virtual private server](/install_on_vps) * [On a Raspberry Pi](/install_on_raspberry) - * [From an ISO](/install_iso) + * [On an ARM board](/install_on_arm_board) * [On Debian](/install_on_debian) * [On VirtualBox](/install_on_virtualbox) - * [On Vagrant](/vagrant) - * [On a dedicated or a virtual private server](/install_on_vps) - * Installation steps - * [Burn or copy iso](/burn_or_copy_iso) - * [Boot and graphical install](/boot_and_graphical_install) - * [Copy YunoHost image on SD card](/copy_image) - * [Manual instalation](/install_manually) - * [Plug and boot your server](/plug_and_boot) - * [Post-instalation](/postinstall) -* [Available applications](/apps) -* [Administration interface usage](/admin) -* [Command-line interface usage](/moulinette) -* [List of friendly ISPs](/isp) -* [Security](/security) -* [Hide services with Tor](/torhiddenservice) -* [DNS understanding](/dns) -* [What is YunoHost](/whatsyunohost) -* [Unlock IP in iptables](/fail2ban) -* [SSL certificate installation](/certificate) -* [Troubleshooting guide](/troubleshooting_guide_en) -* [Backup](/backup) -* [Update](/update) +* Finalizing your setup + * [Post-installation](/postinstall) + * [Configuring port forwarding](/isp_box_config) + * [Configuring DNS records](/dns_config) + * [Installing an SSL certificate](/certificate) + * [Diagnose if your setup is working properly](/diagnostic) +* Getting to know YunoHost + * [Web administration interface](/admin) + * [Connecting to your server using SSH](/ssh) + * [Command-line administration](/commandline) + * [Application catalog](/apps) + * [Updating your server](/update) and [apps](/app_update) + * [Backup](/backup) +* Going further + * [Improving security](/security) + * [Adding an external storage](/external_storage) + * [Migrating emails to YunoHost](/email_migration) + * [Hide services with Tor](/torhiddenservice) +* [Troubleshooting guide](/troubleshooting_guide) + * [Unlock IP in iptables](/fail2ban) + * [Changing the administration password](/change_admin_password) diff --git a/admindoc_fr.md b/admindoc_fr.md index 257f0419..ad504326 100644 --- a/admindoc_fr.md +++ b/admindoc_fr.md @@ -1,72 +1,49 @@ # Documentation pour les administrateurs YunoHost -* [L’auto-hébergement](/selfhosting_fr) -* [Matériel compatible](/hardware_fr) +* Découvrir l'auto-hébergement + * [Qu'est-ce que l'auto-hébergement](/selfhosting_fr) + * [Qu'est-ce que YunoHost](/whatsyunohost_fr) +* Avant de se lancer + * [Essayer YunoHost](/try_fr) + * [Matériel compatible](/hardware_fr) + * [À propos des fournisseurs d'accès internet](/isp_fr) * [Guide d’installation](/install_fr) - * [Sur une carte OLinuXino](/install_on_olinuxino_fr) - * [Sur une carte ARM](/install_on_arm_board_fr) + * [Sur un ordinateur "standard"](/install_iso_fr) + * [Sur un serveur dédié ou virtuel (VPS)](/install_on_vps_fr) * [Sur un Raspberry Pi](/install_on_raspberry_fr) - * [À partir de l’ISO](/install_iso_fr) + * [Sur une carte ARM](/install_on_arm_board_fr) * [Sur Debian](/install_on_debian_fr) * [Sur VirtualBox](/install_on_virtualbox_fr) - * [Sur Vagrant](/vagrant_fr) - * [Sur un serveur dédié](/install_on_vps_fr) - * Étapes d’installation - * [Graver ou copier l’ISO](/burn_or_copy_iso_fr) - * [Démarrage et installation graphique](/boot_and_graphical_install_fr) - * [Copier l’image YunoHost sur une carte SD](/copy_image_fr) - * [Installation manuelle](/install_manually_fr) - * [Brancher et démarrer votre serveur](/plug_and_boot_fr) - * [Post-installation](/postinstall_fr) - * [Diagnostic du bon fonctionnement du YunoHost](/diagnostic_fr) -* [DNS - Système de nom de domaine](/dns_fr) - * [Bureaux d’enregistrements de nom de domaine - Registrar](registrar_fr) - * [Configuration du DNS chez son registrar](/dns_config_fr) - * [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr) - * [Utiliser le résolveur DNS](/dns_resolver_fr) - * [Configurer un DNS dynamique avec une adresse IP dynamique](dns_dynamicip_fr) - * [Avec OVH](/OVH_fr) - * [Accéder à son domaine depuis le réseau local](/dns_local_network_fr) - * [Nom de domaine en Nohost.me](/dns_nohost_me_fr) -* [Applications officielles](/apps_fr) - * [Mettre à jour ses applications](app_update_fr) - * [Applications en cours](apps_in_progress_fr) - * [Applications souhaitées](apps_wishlist_fr) - * [Nextcloud](app_nextcloud_fr) -* [Fournisseurs d’accès à Internet](/isp_fr) - * [Configuration générale d’une box](/isp_box_config_fr) - * [SFR](/isp_sfr_fr) - * [Orange](/isp_orange_fr) - * [Free](/isp_free_fr) -* [Administration via l’interface en ligne](/admin_fr) -* [Administration via l’API](/admin_api_fr) -* [Sécurité](/security_fr) - * [Authentification SSH par clé](/security_fr) - * [Modifier le port SSH](/security_fr) - * [Changer l’utilisateur autorisé à se connecter par SSH](/security_fr) - * [Désactivation de l’API YunoHost](/security_fr) -* [Connexion à son serveur en ligne de commande avec SSH](/ssh_fr) +* Finaliser son installation + * [Post-installation](/postinstall_fr) + * [Configurer les redirections de port](/isp_box_config_fr) + * [Configurer les enregistrements DNS](/dns_config_fr) + * [Installer un certificat SSL](/certificate_fr) + * [Diagnostic du bon fonctionnement du YunoHost](/diagnostic_fr) +* Apprendre à connaitre YunoHost + * [L'interface d'administration web](/admin_fr) + * [Se connecter à son serveur via SSH](/ssh_fr) + * [Administrer son serveur en ligne de commande](/commandline_fr) + * [Catalogue d'applications](/apps_fr) + * [Mettre à jour son serveur](/update_fr) et [les apps](/app_update_fr) + * [Les sauvegardes](/backup_fr) +* Pour aller plus loin + * [Améliorer la sécurité](/security_fr) + * Noms de domaine + * [Nom de domaine en noho.st / nohost.me](/dns_nohost_me_fr) + * [Configurer un DNS dynamique avec une adresse IP dynamique](/dns_dynamicip_fr) + * [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr) + * [Utiliser le résolveur DNS local](/dns_resolver_fr) + * [Gérer les enregistrements DNS chez OVH](/OVH_fr) + * Notes à propos de certains fournisseurs d'accès à Internet + * [SFR](/isp_sfr_fr) + * [Orange](/isp_orange_fr) + * [Free](/isp_free_fr) + * [Ajouter un stockage externe](/external_storage_fr) + * [Migrer ses emails vers YunoHost](/email_migration_fr) + * [YunoHost avec un service caché Tor](/torhiddenservice_fr) + * [Utilisation de certificats autres que Let's Encrypt](/certificate_custom_fr) * [Guide de dépannage](/troubleshooting_guide_fr) - * [Notes générales](/troubleshooting_guide_fr) - * [Mise à jour](/troubleshooting_guide_fr) - * [Les services](/troubleshooting_guide_fr) - * [Journaux système](/troubleshooting_guide_fr) - * [Utilisation de la RAM](/troubleshooting_guide_fr) - * [Espace disque](/troubleshooting_guide_fr) - * [Applications](/troubleshooting_guide_fr) - * [Applications PHP](/troubleshooting_guide_fr) - * [Applications Python](/troubleshooting_guide_fr) - * [Applications Node.js](/troubleshooting_guide_fr) - * [Autres (Go, Java…)](/troubleshooting_guide_fr) -* [L’administration en ligne de commande avec la Moulinette](/moulinette_fr) -* [Changer le mot de passe d’administration](/change_admin_password_fr) -* [Courrier électronique](email_fr) - * [Formulaires pour enlever son IP des listes noires](blacklist_forms_fr) - * [La signature du serveur via DKIM](dkim_fr) -* [Gestion des certificats](/certificate_fr) - * [Régénérer un certificat](/regenerate_certificate_fr) - * [Utiliser Let's Encrypt](/certmanager_fr) -* [YunoHost avec un service caché Tor](/torhiddenservice_fr) - * [Débloquer une IP avec Fail2ban](/fail2ban_fr) -* [Les sauvegardes](/backup_fr) -* [Les mises à jour](/update_fr) + * [Débloquer une IP dans Fail2ban](/fail2ban_fr) + * [Changer le mot de passe d’administration](/change_admin_password_fr) + * [Formulaires pour enlever son IP des listes noires](/blacklist_forms_fr) diff --git a/app_baikal.md b/app_baikal.md index 39735890..83a85d48 100644 --- a/app_baikal.md +++ b/app_baikal.md @@ -11,7 +11,6 @@ The user name specified is "admin" followed by the specific password choosen at ### Example of creating a new user: -Go to the "settings" tab, select "Digest" in "WebDAV authentication type". Add users to the "Users and resources" tab. ## CalDAV Connection diff --git a/app_baikal_fr.md b/app_baikal_fr.md index db2b86d7..bbfa571e 100644 --- a/app_baikal_fr.md +++ b/app_baikal_fr.md @@ -43,7 +43,7 @@ Ajoutez un nouveau carnet d’adresses en allant dans Paramètres > Préférence Renseigner : * Nom du carnet d’adresses : `default` * Nom d’utilisateur : `username` -* Mot de passe : `leMotDePasseAssociéAUsername` +* Mot de passe : `leMotDePasseAssociéAUusername` * URL : `https://example.com/baikal/card.php/addressbooks/username/default` *En prenant soin de remplacer « example.com » par votre domaine et « username » par votre nom d’utilisateur* diff --git a/app_ffsync_fr.md b/app_ffsync_fr.md index fd391e1a..10eec07e 100644 --- a/app_ffsync_fr.md +++ b/app_ffsync_fr.md @@ -14,4 +14,4 @@ Remplacez l’URL par la vôtre : https://mondomaine.tld/adresse/token/1.0/sync Créez un compte chez Mozilla : https://accounts.firefox.com/signup #### Firefox mobile -Avec la dernière version de firefox mobile c'est identique que firefox pour le bureau. +Avec la dernière version de firefox mobile c'est identique à firefox pour le bureau. diff --git a/app_firefly_iii.md b/app_firefly_iii.md new file mode 100644 index 00000000..389b8688 --- /dev/null +++ b/app_firefly_iii.md @@ -0,0 +1,6 @@ +# Firefly III + +For support and notes regarding the installation and use of Firefly III on YunoHost, please see these pages: + +* [The official documentation](http://firefly-iii.readthedocs.io/en/latest/) +* [The pages on YunoHost specifically](http://firefly-iii.readthedocs.io/en/latest/installation/yunohost.html) diff --git a/app_limesurvey_fr.md b/app_limesurvey_fr.md index 62ee522b..18f8e909 100644 --- a/app_limesurvey_fr.md +++ b/app_limesurvey_fr.md @@ -1,6 +1,6 @@ #LimeSurvey -LimeSurvey est un outil de création et diffusion de sondage/formulaire en ligne.. +LimeSurvey est un outil de création et diffusion de sondage/formulaire en ligne. ### Comment créer un questionnaire Pour créer un questionnaire, il faut accéder à l'interface d'administration. diff --git a/app_netdata.md b/app_netdata.md new file mode 100644 index 00000000..f3831882 --- /dev/null +++ b/app_netdata.md @@ -0,0 +1,262 @@ +## NetData + +[NetData](http://my-netdata.io/) is a system for **distributed real-time performance and health monitoring**. +It provides **unparalleled insights, in real-time**, of everything happening on the +system it runs (including applications such as web and database servers), using +**modern interactive web dashboards**. + +_netdata is **fast** and **efficient**, designed to permanently run on all systems +(**physical** & **virtual** servers, **containers**, **IoT** devices), without +disrupting their core function._ + +[![Install Piwigo with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=piwigo) + +**Customization brought by the package:** + +* grant MySQL statistics access via a `netdata` user +* nginx root log statistics via putting `netdata` user in the `adm` group +* Dovecot statistics via giving access to Dovecot stats stocket to `netdata` user (works only with Dovecot 2.2.16+) + +**Further recommendations:** +We don't allow YunoHost packages to make sensible changes to system files. So here are further customizations you can make to allow more monitoring: + +* Nginx: + * requests/connections: follow [these recommandations](https://github.com/firehol/netdata/tree/master/python.d#nginx) to enable `/stab_status` (for example by putting the `location` section in `/etc/nginx/conf.d/yunohost_admin.conf` + * weblogs: you can monitor all your nginx weblogs for errors; follow [these recommendations](https://github.com/firehol/netdata/tree/master/python.d#nginx_log) +* phpfpm: follow [these recommandations](https://github.com/firehol/netdata/tree/master/python.d#phpfpm) + +## Features + +

+ +

+ + - **Stunning interactive bootstrap dashboards**
+ mouse and touch friendly, in 2 themes: dark, light + + - **Amazingly fast**
+ responds to all queries in less than 0.5 ms per metric, + even on low-end hardware + + - **Highly efficient**
+ collects thousands of metrics per server per second, + with just 1% CPU utilization of a single core, a few MB of RAM and no disk I/O at all + + - **Sophisticated alarming**
+ hundreds of alarms, **out of the box**!
+ supports dynamic thresholds, hysteresis, alarm templates, + multiple role-based notification methods (such as email, slack.com, + pushover.net, pushbullet.com, telegram.org, twilio.com, messagebird.com) + + - **Extensible**
+ you can monitor anything you can get a metric for, + using its Plugin API (anything can be a netdata plugin, + BASH, python, perl, node.js, java, Go, ruby, etc) + + - **Embeddable**
+ it can run anywhere a Linux kernel runs (even IoT) + and its charts can be embedded on your web pages too + + - **Customizable**
+ custom dashboards can be built using simple HTML (no javascript necessary) + + - **Zero configuration**
+ auto-detects everything, it can collect up to 5000 metrics + per server out of the box + + - **Zero dependencies**
+ it is even its own web server, for its static web files and its web API + + - **Zero maintenance**
+ you just run it, it does the rest + + - **scales to infinity**
+ requiring minimal central resources + + - **several operating modes**
+ autonomous host monitoring, headless data collector, forwarding proxy, store and forward proxy, central multi-host monitoring, in all possible configurations. + Each node may have different metrics retention policy and run with or without health monitoring. + + - **time-series back-ends supported**
+ can archive its metrics on `graphite`, `opentsdb`, `prometheus`, json document DBs, in the same or lower detail + (lower: to prevent it from congesting these servers due to the amount of data collected) + +![netdata](https://cloud.githubusercontent.com/assets/2662304/14092712/93b039ea-f551-11e5-822c-beadbf2b2a2e.gif) + +--- + +## What does it monitor? + +netdata collects several thousands of metrics per device. +All these metrics are collected and visualized in real-time. + +> _Almost all metrics are auto-detected, without any configuration._ + +This is a list of what it currently monitors: + +- **CPU**
+ usage, interrupts, softirqs, frequency, total and per core, CPU states + +- **Memory**
+ RAM, swap and kernel memory usage, KSM (Kernel Samepage Merging), NUMA + +- **Disks**
+ per disk: I/O, operations, backlog, utilization, space, software RAID (md) + + ![sda](https://cloud.githubusercontent.com/assets/2662304/14093195/c882bbf4-f554-11e5-8863-1788d643d2c0.gif) + +- **Network interfaces**
+ per interface: bandwidth, packets, errors, drops + + ![dsl0](https://cloud.githubusercontent.com/assets/2662304/14093128/4d566494-f554-11e5-8ee4-5392e0ac51f0.gif) + +- **IPv4 networking**
+ bandwidth, packets, errors, fragments, + tcp: connections, packets, errors, handshake, + udp: packets, errors, + broadcast: bandwidth, packets, + multicast: bandwidth, packets + +- **IPv6 networking**
+ bandwidth, packets, errors, fragments, ECT, + udp: packets, errors, + udplite: packets, errors, + broadcast: bandwidth, + multicast: bandwidth, packets, + icmp: messages, errors, echos, router, neighbor, MLDv2, group membership, + break down by type + +- **Interprocess Communication - IPC**
+ such as semaphores and semaphores arrays + +- **netfilter / iptables Linux firewall**
+ connections, connection tracker events, errors + +- **Linux DDoS protection**
+ SYNPROXY metrics + +- **fping** latencies
+ for any number of hosts, showing latency, packets and packet loss + + ![image](https://cloud.githubusercontent.com/assets/2662304/20464811/9517d2b4-af57-11e6-8361-f6cc57541cd7.png) + + +- **Processes**
+ running, blocked, forks, active + +- **Entropy**
+ random numbers pool, using in cryptography + +- **NFS file servers and clients**
+ NFS v2, v3, v4: I/O, cache, read ahead, RPC calls + +- **Network QoS**
+ the only tool that visualizes network `tc` classes in realtime + + ![qos-tc-classes](https://cloud.githubusercontent.com/assets/2662304/14093004/68966020-f553-11e5-98fe-ffee2086fafd.gif) + +- **Linux Control Groups**
+ containers: systemd, lxc, docker + +- **Applications**
+ by grouping the process tree and reporting CPU, memory, disk reads, + disk writes, swap, threads, pipes, sockets - per group + + ![apps](https://cloud.githubusercontent.com/assets/2662304/14093565/67c4002c-f557-11e5-86bd-0154f5135def.gif) + +- **Users and User Groups resource usage**
+ by summarizing the process tree per user and group, + reporting: CPU, memory, disk reads, disk writes, swap, threads, pipes, sockets + +- **Apache and lighttpd web servers**
+ `mod-status` (v2.2, v2.4) and cache log statistics, for multiple servers + +- **Nginx web servers**
+ `stub-status`, for multiple servers + +- **Tomcat**
+ accesses, threads, free memory, volume + +- **web server log files**
+ extracting in real-time, web server performance metrics and applying several health checks + +- **mySQL databases**
+ multiple servers, each showing: bandwidth, queries/s, handlers, locks, issues, + tmp operations, connections, binlog metrics, threads, innodb metrics, and more + +- **Postgres databases**
+ multiple servers, each showing: per database statistics (connections, tuples + read - written - returned, transactions, locks), backend processes, indexes, + tables, write ahead, background writer and more + +- **Redis databases**
+ multiple servers, each showing: operations, hit rate, memory, keys, clients, slaves + +- **mongodb**
+ operations, clients, transactions, cursors, connections, asserts, locks, etc + +- **memcached databases**
+ multiple servers, each showing: bandwidth, connections, items + +- **elasticsearch**
+ search and index performance, latency, timings, cluster statistics, threads statistics, etc + +- **ISC Bind name servers**
+ multiple servers, each showing: clients, requests, queries, updates, failures and several per view metrics + +- **NSD name servers**
+ queries, zones, protocols, query types, transfers, etc. + +- **Postfix email servers**
+ message queue (entries, size) + +- **exim email servers**
+ message queue (emails queued) + +- **Dovecot** POP3/IMAP servers
+ +- **ISC dhcpd**
+ pools utilization, leases, etc. + +- **IPFS**
+ bandwidth, peers + +- **Squid proxy servers**
+ multiple servers, each showing: clients bandwidth and requests, servers bandwidth and requests + +- **HAproxy**
+ bandwidth, sessions, backends, etc + +- **varnish**
+ threads, sessions, hits, objects, backends, etc + +- **OpenVPN**
+ status per tunnel + +- **Hardware sensors**
+ `lm_sensors` and `IPMI`: temperature, voltage, fans, power, humidity + +- **NUT and APC UPSes**
+ load, charge, battery voltage, temperature, utility metrics, output metrics + +- **PHP-FPM**
+ multiple instances, each reporting connections, requests, performance + +- **hddtemp**
+ disk temperatures + +- **smartd**
+ disk S.M.A.R.T. values + +- **SNMP devices**
+ can be monitored too (although you will need to configure these) + +- **statsd**
+ [netdata is a fully featured statsd server](https://github.com/firehol/netdata/wiki/statsd) + +And you can extend it, by writing plugins that collect data from any source, using any computer language. + +## Links + + * Report a bug: https://github.com/YunoHost-Apps/netdata_ynh/issues + * NetData website: http://my-netdata.io/ \ No newline at end of file diff --git a/app_nextcloud_fr.md b/app_nextcloud_fr.md index 1da69442..07497dfb 100644 --- a/app_nextcloud_fr.md +++ b/app_nextcloud_fr.md @@ -1,19 +1,143 @@ -#Nextcloud +# Ajouter de l'espace de stockage -### Utiliser un autre support mémoire +La solution I) permet d'ajouter un lien vers un dossier local ou distant. +La solution II) permet de déplacer l'espace de stockage principal de nextcloud. -**Prérequis :** connaître les commandes d’administration Unix +## I) Ajouter un espace de stockage externe -Le répertoire des donnés de Nextcloud (contenant les fichiers) sont dans `/home/yunohost.app/nextcloud/data` +Paramètre => [Administration] Stockages externe. -Il est possible de déplacer ces données sur autre support mémoire. +En bas de la liste vous pouvez rajouter un dossier (Il est possible de définir un sous dossier en utilisant la convention `dossier/sousDossier`.) +Sélectionner un type de stockage et indiquez les information de connexion demandés. +Vous pouvez restreindre ce dossier à un ou plusieurs utilisateurs nextcloud avec la colonne `Disponible pour`. +Avec l'engrenage vous pouvez autoriser ou interdire la prévisualisation et le partage des fichiers. +Enfin cliquer sur la coche pour valider le dossier. -Pour cela, il faut spécifier le nouveau chemin dans le fichier `/var/www/nextcloud/config/config.php` à la ligne `datadirectory` +## II) Migrer les données de Nextcloud dans une partition plus grosse -Il faut également s’assurer de donner les droits à Nextcloud sur ce répertoire +**Remarque** : Ce qui suit suppose que vous avez un disque dur monté sur `/media/stockage`. Référez-vous à [cet article](/external_storage_fr) pour préparer votre système. +**Remarque** : Remplacez `nextcloud` par le nom de son instance, si vous avez plusieurs apps Nextcloud installées. + +Commencez par éteindre le serveur web avec la commande: ```bash -chown -R nextcloud /le/chemin +systemctl stop nginx ``` -Il faut également que ce support mémoire soit automatiquement monté au démarrage de YunoHost. +### Choix de l'emplacement + +#### Cas A : Stockage vierge, exclusif à Nextcloud + +Pour l'instant seul root peut y écrire dans `/media/stockage`; ce qui signifie que nginx et nextcloud ne pourront donc pas l'utiliser. + +```bash +chown -R nextcloud:www-data /media/stockage +chmod 775 -R /media/stockage +``` + +#### Cas B : Stockage partagé, données déjà présentes, données Nextcloud dans un sous-dossier + +Si vous souhaitez utiliser ce disque pour d'autres applications, vous pouvez créer un sous-dossier appartenant à Nextcloud. + +```bash +mkdir -p /media/stockage/nextcloud_data +chown -R nextcloud /media/stockage/nextcloud_data +chmod 775 -R /media/stockage/nextcloud_data +``` + +### Migrer les données + +Migrez vos données vers le nouveau disque. Pour ce faire *(soyez patient, cela peut être long)* : + +```bash +Cas A : cp -ir /home/yunohost.app/nextcloud /media/stockage +Cas B : cp -ir /home/yunohost.app/nextcloud /media/stockage/nextcloud_data +``` + +L'option `i` permet de vous demander quoi faire en cas de conflit de fichier, notamment si vous écrasez un ancien dossier de données Owncloud ou Nextcloud. + +Pour vérifier que tout s'est bien passé, comparer ce qu'affichent ces deux commandes (le contenu doit être identique): + +```bash +ls -la /home/yunohost.app/nextcloud + +Cas A : ls -al /media/stockage +Cas B : ls -al /media/stockage/nextcloud_data +``` + +### Configurer Nextcloud + +Pour informer Nextcloud de son nouveau répertoire, modifiez le fichier `/var/www/nextcloud/config/config.php` avec la commande: + +```bash +nano /var/www/nextcloud/config/config.php +``` + +Cherchez la ligne: + +```bash +'datadirectory' => '/home/yunohost.app/nextcloud/data', +``` + +Que vous modifiez : + +```bash +CAS A : 'datadirectory' => '/media/stockage', +CAS B : 'datadirectory' => '/media/stockage/nextcloud_data', +``` + +Sauvegardez avec `ctrl+x` puis `y` ou `o` (dépend de la locale de votre serveur). + +Relancez le serveur web : + +```bash +systemctl start nginx +``` + +Ajouter le fichier .ocdata +```bash +CAS A : nano /media/stockage/.ocdata +CAS B : nano /media/stockage/nextcloud_data/.ocdata +``` +Ajouter un espace au fichier pour pouvoir le sauvegarder + +Sauvegardez avec `ctrl+x` puis `y` ou `o` (dépend de la locale de votre serveur). + +Lancez un scan du nouveau répertoire par Nextcloud: + +```bash +cd /var/www/nextcloud +sudo -u nextcloud php 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. + +# L'application KeeWeb + +L'application KeeWeb est un gestionnaire de mots de passe incorporé à Nextcloud. Elle permet par exemple de lire un fichier de type KeePass (*.kdbx*) stocké sur votre instance Nextcloud. +Mais il arrive parfois que Nextcloud ne laisse pas l'application prendre en charge ces fichiers, ce qui rend alors impossible leur lecture de KeeWeb. Pour remédier à cela, +[une solution](https://github.com/jhass/nextcloud-keeweb/issues/34) existe. + +Ce rendre dans le répertoire de configuration de Nextcloud : + +```bash +cd /var/www/nextcloud/config/ +``` + +S'il n'existe pas, créer le fichier *mimetypemapping.json* dont le propriétaire est l'utilisateur *nextcloud* : + +```bash +sudo su nextcloud -c "nano mimetypemapping.json" +``` + +Puis ajouter dans ce fichier le texte suivent : + +```bash +{ + "kdbx": ["x-application/kdbx"] +} +``` + +Enregistrer le fichier (**CTRL** + **o**) et quitter nano (**CTRL** + **c**). + +A présent, le problème est corrigé. diff --git a/app_noalyss_fr.md b/app_noalyss_fr.md new file mode 100644 index 00000000..77bbbf9f --- /dev/null +++ b/app_noalyss_fr.md @@ -0,0 +1,14 @@ +# Noalyss + +Logiciel de comptabilité open source développé en PHP. + +Toute les infos sur ce logiciel sont disponible sur le [site du projet](http://www.noalyss.eu) + +Pour apprendre à l'utiliser je vous invite à lire le [wiki du projet](http://www.noalyss.eu/?page_id=46&lang=fr_FR) + +Le github du module Yunohost est [ici](https://github.com/YunoHost-Apps/noalyss_ynh) + +Vous pouvez essayer le projet [ici](http://demo.noalyss.eu/index.php) avec les identifiants : demo /demo + +Enfin pour ne pas galérer comme moi. Les identifiants et mot de passe administrateur lors de la première connexion sont : phpcompta / phpcompta + diff --git a/app_piwigo.md b/app_piwigo.md new file mode 100644 index 00000000..0ed09045 --- /dev/null +++ b/app_piwigo.md @@ -0,0 +1,32 @@ +## + + + + +[Piwigo](http://piwigo.org) is a photo gallery software for the web, built by an active community of users and developers. + +Extensions make Piwigo easily customizable. Icing on the cake, Piwigo is free and opensource. + +[![Install Piwigo with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=piwigo) + +![](http://piwigo.org/screenshots/homepage/piwigo-batch-manager.png) + +## Features + +In addition to Piwigo [core features](http://piwigo.org/basics/features), the following are made available with +this package: + + * Integrate with YunoHost users and SSO: + * private mode: limit access to Yunohost users + * public mode: + * SSO for YunoHost users + * allow other users management, and guest mode + * Allow one YunoHost user to be the administrator (set at the installation) + + +## Links + + * Report a bug: https://github.com/YunoHost-Apps/piwigo_ynh/issues + * Piwigo website: http://piwigo.org/ + + diff --git a/app_piwigo_fr.md b/app_piwigo_fr.md new file mode 100644 index 00000000..ada13e24 --- /dev/null +++ b/app_piwigo_fr.md @@ -0,0 +1,30 @@ +## + + + + +[Piwigo](http://piwigo.org) est un logiciel de galerie photo pour le web, bâti par une communauté active d'utilisateurs et de développeurs. + +Les extensions rendent Piwigo facilement personnalisable. Cerise sur le gâteau, Piwigo est libre et gratuit. + +[![Installer Piwigo avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=piwigo) + +![](http://piwigo.org/screenshots/homepage/piwigo-batch-manager.png) + +## Fonctionnalités + +En plus des [fonctionnalités principales](Piwigo) de Piwigo, ce paquet propose également: + + * une intégration avec le système de gestion des utilisateurs et le SSO de Yunohost : + * installation privée : limitée aux utilisateurs de YunoHost + * installation publique : + * SSO pour les utilisateurs YunoHost + * permet de gérer l'accès à d'autres utilisateurs, et mode invité possible + * de permettre à un utilisateur d'être administrateur (réglage lors de l'installation) + +## Liens + + * Rapport de bug: https://github.com/YunoHost-Apps/piwigo_ynh/issues + * Site web Piwigo : http://piwigo.org/ + + diff --git a/app_rainloop.md b/app_rainloop.md new file mode 100644 index 00000000..1e33f67d --- /dev/null +++ b/app_rainloop.md @@ -0,0 +1,19 @@ +# Rainloop + +Rainloop is a lightweight webmail. + +To configure it, go to http://DOMAIN.TLD/rainloop/app/?admin + +- The default login is : admin +- The default password is : Password chosen during install +- If you lost the admin password, you can retrieve it using ``sudo yunohost app settings rainloop password`` + +Each user can add a remote carddav server from their own parameters interface. + +- If you use baikal, the CardDav address is: https://DOMAIN.TLD/baikal/card.php/addressbooks/USER/default/ +- If you use NextCloud, the CardDav address is: https://DOMAIN.TLD/nextcloud/remote.php/carddav/addressbooks/USER/contacts + +Rainloop saves your PGP private keys in the browser storage. This means that you will loose your private keys if you clear your browser storage (e.g., private browsing, different computer...). This packages integrates [PGPback by chtixof](https://github.com/chtixof/pgpback_ynh) so you can store your PGP private keys on the server securely. Go to **http://DOMAIN.TLD/rainloop/pgpback** to backup your PGP keys on the server or restore them. + +To upgrade the app once a new rainloop version is available, simply run in a local shell via ssh or otherwise : +``sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/rainloop_ynh rainloop`` diff --git a/app_rainloop_fr.md b/app_rainloop_fr.md new file mode 100644 index 00000000..012421e5 --- /dev/null +++ b/app_rainloop_fr.md @@ -0,0 +1,19 @@ +# Rainloop + +Rainloop est un webmail simple et léger. + +Pour le configurer après l'installation, veuillez vous rendre sur http://DOMAIN.TLD/rainloop/app/?admin + +- Le nom d'utilisateur admin par défaut est : admin +- Le mot de passe admin par défaut est : Mot de passe choisi lors de l'installation +- Si vous avez oublié votre mot de passe, vous pouvez le retrouver avec ``sudo yunohost app settings rainloop password`` + +Chaque utilisateur peut ajouter un carnet d'adresse distant CardDav via leur propre paramètres. + +- Si vous utilisez Baikal, l'adresse à renseigner est du type : https://DOMAIN.TLD/baikal/card.php/addressbooks/UTILISATEUR/default/ +- Si vous utilisez NextCloud, l'adresse à renseigner est du type : https://DOMAIN.TLD/nextcloud/remote.php/carddav/addressbooks/USER/contacts + +Rainloop stocke les clés PGP privées dans le stockage de navigateur. Cela implique que vos clés seront perdues quand vous videz le stockage de navigateur (navigation incognito, changement d'ordinateur, ...). Ce paquet intègre [PGPback de chtixof](https://github.com/chtixof/pgpback_ynh) pour que vous puissiez stocker vos clés privées PGP de manière sécurisée sur le serveur. Rendez-vous **http://DOMAIN.TLD/rainloop/pgpback** pour stocker vos clés privées PGP sur le serveur ou les restaurer dans un nouveau navigateur. + +Pour mettre à jour rainloop lorsqu'une nouvelle version est disponible, lancez en console locale (ssh ou autre) : +``sudo yunohost app upgrade -u https://github.com/YunoHost-Apps/rainloop_ynh rainloop diff --git a/app_ttrss.md b/app_ttrss.md index f93d08a4..8ccedfa0 100644 --- a/app_ttrss.md +++ b/app_ttrss.md @@ -1,4 +1,4 @@ -#Tiny Tiny RSS +# Tiny Tiny RSS Tiny Tiny RSS is a news feed reader using RSS and atom protocols. @@ -10,11 +10,11 @@ In order to do so, go to Actions -> Configuration -> feed tab -> OPML section -> You can read your feeds on Android using ttrss-reader application: -**[ttrss-reader](https://f-droid.org/repository/browse/?fdfilter=rss&fdid=org.ttrssreader)** +**[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)** To use it, you need to go to Actions -> Configuration, in TTRSS web interface and select "Activate API". Then, in your android ttrss-reader, fill the TTRSS server adress: "https://yourdomain.org/ttrss", username, password (no need to use HTTP authentification). **Note** : you may need to uninstall and reinstall the TTRSS application through the Yunohost admin panel in order to be able to connect. -* [Tiny Tiny RSS Website](http://tt-rss.org/redmine/projects/tt-rss/wiki) +* [Tiny Tiny RSS Website](https://git.tt-rss.org/git/tt-rss/wiki) diff --git a/app_ttrss_fr.md b/app_ttrss_fr.md index 79c06fa6..be8b239c 100644 --- a/app_ttrss_fr.md +++ b/app_ttrss_fr.md @@ -1,4 +1,4 @@ -#Tiny Tiny RSS +# Tiny Tiny RSS Tiny Tiny RSS est un lecteur de flux d’actualité utilisant les protocoles RSS et atom. @@ -11,11 +11,11 @@ Pour cela, il faut aller dans Actions -> Configuration -> onglet flux -> chapitr Il est possible d’utiliser le client Android ttrss-reader pour consulter ces flux : -**[ttrss-reader](https://f-droid.org/repository/browse/?fdfilter=rss&fdid=org.ttrssreader)** +**[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)** Sur l’interface web, dans Actions -> Configuration, cochez « Activer l’accès par API » puis dans ttrss-reader sur Android, l’adresse du serveur TTRSS : « https://votredomaine.org/ttrss », nom d’utilisateur, mot de passe. (pas besoin d’utiliser l’authentification HTTP) **Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement l’app ttrss via l’administration de YunoHost pour que la connexion puisse se faire. -* [Site de Tiny Tiny RSS](http://tt-rss.org/redmine/projects/tt-rss/wiki) \ No newline at end of file +* [Site de Tiny Tiny RSS](https://git.tt-rss.org/git/tt-rss/wiki) diff --git a/app_update_fr.md b/app_update_fr.md index 59add4a0..09d1ab89 100644 --- a/app_update_fr.md +++ b/app_update_fr.md @@ -1,29 +1,30 @@ #Mettre à jour ses applications -Une fois que vous avez installé des applications, il est nécessaire de les mettre à jour. +Une fois que vous avez installé des applications, il est nécessaire de les mettre à jour. Plusieurs méthodes existent et sont détaillées ci-dessous. -** Attention : ** il est recommandé de faire une sauvegarde de la base de données (par exemple via l’application phpmyadmin) ainsi que des fichiers avant une opération de mise à jour. +** Attention : ** il est recommandé de faire une sauvegarde de la base de données (par exemple via l’application [phpmyadmin](https://github.com/YunoHost-apps/phpmyadmin_ynh) ([installer](https://install-app.yunohost.org/?app=phpmyadmin))) ainsi que des fichiers avant une opération de mise à jour. ### Mise à jour par l’interface web -Pour cela, il faut aller dans Outils > Mettre à jour le système. +Pour cela, il faut aller dans l’onglet "Mettre à jour le système". + +Une fois la liste des paquets et des applications rafraîchie, il sera proposé de mettre à jour les applications et paquets qui peuvent l’être. -Une fois la liste des paquets d’applications récupérée la page proposera de mettre à jour les applications officielles qui ont une mise à jour en attente. ### Mise à jour en ligne de commande -Il faut d’abord se connecter sur le serveur en ssh, puis taper cette commande (dans le cas d’une mise à jour WordPress). +Il faut d’abord se connecter sur le serveur en ssh, puis entrer la commande suivante (dans le cas d’une mise à jour WordPress) : ```bash yunohost app upgrade wordpress ``` -** Note : ** dans le cas où plusieurs applications du même type (ex : deux WordPress) sont installés, il est nécessaire de spécifier le nom d’instance (ex : wordpress ou wordpress__2). +** Note : ** dans le cas où plusieurs applications du même type (ex : deux WordPress) sont installées sur le serveur, il est nécessaire de spécifier le nom d’instance (ex : wordpress ou wordpress__2). #### Mise à jour d’une application non officielle Il faut pour cela indiquer le dépôt git qui contient la mise à jour. -Par exemple pour mettre à jour LimeSurvey : +Par exemple, pour mettre à jour LimeSurvey, entrer : ```bash yunohost app upgrade limesurvey -u https://github.com/zamentur/limesurvey_ynh ``` -** Note : ** faites attention aux applications/mises à jour non officielles que vous installez. Assurez-vous que ces mises à jour sont stables et ne constituent pas une étape de développement. Si une application ou une mise à jour n’est pas intégrée au dépôt officiel, il y a peut-être une raison. +** Note : ** faites attention aux applications/mises à jour non officielles que vous installez. Assurez-vous que ces mises à jour sont stables et ne constituent pas une étape de développement. Si une application ou une mise à jour n’est pas intégrée au dépôt officiel, il y a sûrement une raison. -** Attention : ** assurez-vous du contenu de cette mise à jour ; l’installation ou la mise à jour d’une application non officielle permet à cette application d’exécuter des scripts avec les privilèges les plus élevés. +** Attention : ** assurez-vous du contenu de cette mise à jour ; l’installation ou la mise à jour d’une application non officielle permet à cette dernière d’exécuter des scripts avec les privilèges les plus élevés. Si le script est malicieux, il pourrait nuire à votre vie privée en communiquant à des tiers toute donnée présente sur le serveur, ou bien les détruire irrémédiablement. diff --git a/app_wallabag2.md b/app_wallabag2.md new file mode 100644 index 00000000..823bcd06 --- /dev/null +++ b/app_wallabag2.md @@ -0,0 +1,33 @@ +## + +[Wallabag](https://www.wallabag.org/) is a self hostable Read-It-Later application allowing +you to not miss any content anymore. Click, save, read it when you can. +It extracts content so that you can read it when you have time. + +[![Install Wallabag v2 with +YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=wallabag2) + +It provides a web interface, browser (Firefox / Chrome / Opera) add-ons, mobile apps (Android / iOS / Windows Phone) and even on e-reader (PocketBook / Kobo) + +### Features + +In addition to Wallabag core features, the following are made available with +this package: + + * Integrate with YunoHost users and SSO - i.e. logout button + * Allow one user to be the administrator (set at the installation) + * Asynchronous import using Redis (need to be enabled in the *Internal Settings*). RabbitMQ import not supported (yet ?) + +### Links + + * Report a bug: https://github.com/YunoHost-Apps/wallabag2_ynh/issues + * Wallabag website: https://www.wallabag.org/ + * Wallabag documentation: https://doc.wallabag.org/ (fr/en/it/de) + * [Video demo](https://vimeo.com/video/167435064) + +---- + +### Upgrade from v1.x + +No automatic upgrade process is available. You need a manual (but simple) migration from [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh). +Please take a look at the [official documentation](https://doc.wallabag.org/en/user/import/wallabagv1.html). diff --git a/app_wallabag2_fr.md b/app_wallabag2_fr.md new file mode 100644 index 00000000..ba387f5c --- /dev/null +++ b/app_wallabag2_fr.md @@ -0,0 +1,30 @@ +## + + +[Wallabag](https://www.wallabag.org/) est une application de lecture différée : elle permet simplement d’archiver une page web en ne conservant que le contenu. Les éléments superflus (menus, publicités, etc.) sont supprimés. + +Sont disponibles: une interface web, des add-ons pour navigateurs (Firefox / Chrome / Opera), des applications pour mobile (Android / iOS / Windows Phone) et même sur liseuse (PocketBook / Kobo). + +[![Installer avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=wallabag2) + +### Fonctionnalités + +En plus des fonctionnalités principales de Wallabag, ce paquet propose également: + + * Une intégration avec le système de gestion des utilisateurs et le SSO de Yunohost - e.g. un bouton de déconnexion + * De permettre à un utilisateur d'être administrateur (réglage lors de l'installation) + * Un import asynchrone utilisant Redis (à activer dans les *Paramètres Internes*). L'import via RabbitMQ n'est pas (encore ?) supporté. + +### Liens + + * Rapport de bug: https://github.com/YunoHost-Apps/wallabag2_ynh/issues + * Site web de Wallabag: https://www.wallabag.org/ + * Documentation de Wallabag: https://doc.wallabag.org/ (fr/en/it/de) + * [Demo vidéo](https://player.vimeo.com/video/167435064) + + ---- + + ### Mettre à niveau depuis la v1.x + +La mise à niveau depuis le paquet Yunohost de [Wallabag v1](https://github.com/YunoHost-Apps/wallabag_ynh) demande une opération manuelle, c'est pourquoi un nouveau paquet est fournit. +Pour le processus de migration, merci de vous référer à [la documentation officiel de Wallabag](https://doc.wallabag.org/fr/user/import/wallabagv1.html). diff --git a/apps.md b/apps.md index 01345a25..c1bcb3ef 100644 --- a/apps.md +++ b/apps.md @@ -1,44 +1,142 @@ -#Official apps +# Apps - - - - - - - - - - - -Official apps Apps in progress Apps wishlist - -
-
View all
+
+ + +
- -
- -
-
All official applications are under free licenses.
+
+

Only apps tagged validated are officially supported by the package team.

+ +

Apps tagged working, inprogress, notworking are from community repository, you can test and use them **at your own risk**.

+ +

Important: it's the application maintaineur that qualify his application as working, not the YunoHost core team. Install it at your own risks. We won't provide support for it.

+
+
The packagers will appreciate your remarks. If you install them and find issues, or ideas for improvement, do not hesitate to file issues directly on their repositories project page.
+ +
+ +
If you don't find the app you are searching for, you can search it in community app repository (working, inprogress and not working apps) or fill the apps wishlist.
+ + + + diff --git a/apps_ar.md b/apps_ar.md new file mode 100644 index 00000000..6c84d36e --- /dev/null +++ b/apps_ar.md @@ -0,0 +1,289 @@ +#
التطبيقات
+ +
+ + + +
+
+
+

إلّا التطبيقات المحددة بعلامة validated تعتبر مدعومة رسميا من طرف فريق التحزيم.

+ +

Les apps marquées working, inprogress, notworking sont des applications non officielles maintenues par la communauté, vous pouvez les tester et les utiliser **à vos risques et périls**.

+ +

Important: c'est le mainteneur de l'application qui définit son application comme "working" et non pas l'équipe d'empaquetage de Yunohost. Installez ces apps à vos risques et périls. Nous ne fournissons pas de support pour elles.

+
+
إنّ فريق التحزيم سوف يأخذ بعين الإعتبار ملاحظاتكم. مثال، إن قمتم بتنصيب تطبيقاتهم و عارضتكم مشاكل أو إن كلمة عندكم أفكارا لتحسين التطبيقات، فلا تبخلوا التحو تذكرة مباشرة على صفحات مستودعات المشاريع نفسها
+ +
+ +
إن لم تتمكنوا من العثور على التطبيق الذي تبحثون عنه هنا، يمكنكم البحث كذلك في مستودع تطبيقات المجتمع (التي تعمل، الجاري العمل عليها و التي لا تعمل) أو قوموا بإضافتها إلى قائمة التطبيقات المرغوب فيها.
+ + + + + + + diff --git a/apps_fr.md b/apps_fr.md index e1312afa..8afed916 100644 --- a/apps_fr.md +++ b/apps_fr.md @@ -1,49 +1,144 @@ -#Apps officielles +# Apps - - - - - - - - - - - -Apps officielles Apps en cours Apps souhaitées - -
-
Tout déplier
+ - -
- -
-
Toutes les applications officielles sont sous licences libres.
+
+

Seules les apps marquées validated sont officiellement supportées par l'équipe de développement d'applications.

+ +

Les apps marquées working, inprogress, notworking sont des applications non officielles maintenues par la communauté, vous pouvez les tester et les utiliser **à vos risques et périls**.

+ +

Important: c'est le mainteneur de l'application qui définit son application comme "working" et non pas l'équipe de développement d'applications de Yunohost. Installez ces apps à vos risques et périls. Nous ne fournissons pas de support pour elles.

+
+
Les développeurs d'applications apprécieront vos remarques. Si vous installez leurs apps et trouvez des dysfonctionnement, ou si vous avez des idées d'amélioration, n'hésitez pas à créer des tickets directement sur les pages de dépots des projets.
+ +
+ +
Si vous ne trouvez pas l'application que vous recherchez, vous pouvez la rechercher dans les apps communautaires (working, inprogress et notworking) ou remplir la liste d'apps souhaitées.
+ + + + + diff --git a/apps_framasoft.md b/apps_framasoft.md new file mode 100644 index 00000000..d9d591a5 --- /dev/null +++ b/apps_framasoft.md @@ -0,0 +1,43 @@ +# Équivalence avec les applications Framasoft + +| App Framasoft | Équivalent | Package | Status | +| :---: | :---: | :---: | :---: | +| Framapad | Etherpad + mypads | [](https://github.com/YunoHost-Apps/etherpad_mypads_ynh) | ![](https://dash.yunohost.org/integration/etherpad_mypads.svg) | +| Framadrive | Nextcloud | [](https://github.com/YunoHost-apps/nextcloud_ynh) | ![](https://dash.yunohost.org/integration/nextcloud.svg) | +| Framagit | GitLab | [](https://github.com/YunoHost-Apps/gitlab_ynh) | ![](https://dash.yunohost.org/integration/gitlab.svg) | +| | Gogs | [](https://github.com/YunoHost-Apps/gogs_ynh) | ![](https://dash.yunohost.org/integration/gogs.svg) | +| Framadrop | Lufi | [](https://github.com/YunoHost-Apps/lufi_ynh) | ![](https://dash.yunohost.org/integration/lufi.svg) | +| Framapiaf | Mastodon | [](https://github.com/YunoHost-Apps/mastodon_ynh) | ![](https://dash.yunohost.org/integration/mastodon.svg) | +| Framapic | Lutim | [](https://github.com/YunoHost-Apps/lutim_ynh) | ![](https://dash.yunohost.org/integration/lutim.svg) | +| Framabin | PrivateBin | [](https://github.com/YunoHost-apps/zerobin_ynh) | ![](https://dash.yunohost.org/integration/zerobin.svg) | +| Frama.link | Lstu | [](https://github.com/YunoHost-Apps/lstu_ynh) | ![](https://dash.yunohost.org/integration/lstu.svg) | +| Framatube | Mediadrop | [](https://github.com/YunoHost-Apps/mediadrop_ynh) | ![](https://dash.yunohost.org/integration/mediadrop.svg) | +| Framanews | TinyTinyRSS | [](https://github.com/YunoHost-apps/ttrss_ynh) | ![](https://dash.yunohost.org/integration/ttrss.svg) | +| Framabee | Searx | [](https://github.com/YunoHost-Apps/searx_ynh) | ![](https://dash.yunohost.org/integration/searx.svg) | +| Framabag | Wallabag | [](https://github.com/YunoHost-Apps/wallabag_ynh) | ![](https://dash.yunohost.org/integration/wallabag.svg) | +| Framacalc | Ethercalc | [](https://github.com/YunoHost-Apps/ethercalc_ynh) | ![](https://dash.yunohost.org/integration/ethercalc.svg) | +| Framaboard | Kanboard | [](https://github.com/YunoHost-Apps/kanboard_ynh) | ![](https://dash.yunohost.org/integration/kanboard.svg) | +| Framadate | OpenSondage | [](https://github.com/YunoHost-Apps/opensondage_ynh) | ![](https://dash.yunohost.org/integration/opensondage.svg) | +| Framasphère | Diaspora* | [](https://github.com/aymhce/diaspora_ynh) | ![](https://dash.yunohost.org/integration/diaspora.svg) | +| Framabookin | BicBucStriim | [](https://github.com/YunoHost-Apps/BicBucStriim_ynh) | ![](https://dash.yunohost.org/integration/BicBucStriim.svg) | +| Framanotes | Turtl | [](https://github.com/YunoHost-Apps/Turtl_ynh) | ![](https://dash.yunohost.org/integration/Turtl.svg) | +| Framemo | Scrumblr | [](https://github.com/YunoHost-Apps/scrumblr_ynh) | ![](https://dash.yunohost.org/integration/scumblr.svg) | +| Framinetest | Minetest | [](https://github.com/YunoHost-Apps/minetest_ynh) | ![](https://dash.yunohost.org/integration/minetest.svg) | +| Framatalk | Jitsi Meet | [](https://github.com/YunoHost-Apps/jitsi_ynh) | ![](https://dash.yunohost.org/integration/jitsi.svg) | +| Framalistes | Mailman | [](https://github.com/YunoHost-Apps/mailman_ynh) | ![](https://dash.yunohost.org/integration/mailman.svg) | +| | Sympa | [](https://github.com/alexAubin/sympa_ynh) | ![](https://dash.yunohost.org/integration/sympa.svg) | +| Framindmap | Wisemapping | Non packagé | | +| Framavectoriel | SVG-Edit | Non packagé | | +| Framacarte | uMap | Non packagé | | +| Framaforms | WebForms? | Non packagé | | +| Framaestro | Framaestro | Non packagé | | +| Framavox | ? | Non packagé | | +| Framagenda | (Agenda Nextcloud) | Non packagé | | +| Framagames | ? | Non packagé | | +| MyFrama | ? | Non packagé | | + +### Voir aussi + +- [Liste complète des applications packagées](/apps) +- [La roadmap 'Dégooglisons'](https://github.com/YunoHost/issues/milestone/13) + diff --git a/apps_group_PR_model.md b/apps_group_PR_model.md new file mode 100644 index 00000000..82c5e940 --- /dev/null +++ b/apps_group_PR_model.md @@ -0,0 +1,46 @@ +## Problem +- *Description of why you made this PR* + +## Solution +- *And how you fix that* + +## PR Status +*Obviously, you should really check these affirmations* +Work finished. Package_check, basic tests and upgrade from last version OK. +Could be reviewed and tested. + +## Validation +--- +*Minor decision* +- [ ] **Upgrade previous version** : +- [ ] **Code review** : +- [ ] **Approval (LGTM)** : +- [ ] **Approval (LGTM)** : +- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link* +When the PR is mark as ready to merge, you have to wait for 3 days before really merge it. + +*Medium decision* +- [ ] **Complete test** : +- [ ] **Upgrade previous version** : +- [ ] **Code review** : +- [ ] **Code review** : +- [ ] **Approval (LGTM)** : +- [ ] **Approval (LGTM)** : +- [ ] **Approval (LGTM)** : +- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link* +When the PR is mark as ready to merge, you have to wait for 7 days before really merge it. + +*Major decision* +- [ ] **Complete test** : +- [ ] **Complete test** : +- [ ] **Upgrade previous version** : +- [ ] **Upgrade previous version** : +- [ ] **Code review** : +- [ ] **Code review** : +- [ ] **Code review** : +- [ ] **Approval (LGTM)** : +- [ ] **Approval (LGTM)** : +- [ ] **Approval (LGTM)** : +- [ ] **Approval (LGTM)** : +- [ ] **CI succeeded** : [![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/APP_ynh%20BRANCH%20(Official)/) *Please replace APP and BRANCH in this link* +When the PR is mark as ready to merge, you have to wait for 7 days before really merge it. diff --git a/apps_in_progress.md b/apps_in_progress.md deleted file mode 100644 index 821ae0a6..00000000 --- a/apps_in_progress.md +++ /dev/null @@ -1,134 +0,0 @@ -# Apps in progress - - - - - - - - - - - - -Official apps -Apps in progress -Apps wishlist - -The following applications are being packaged on by a growing number of packagers. -
They are **NOT** validated by the packaging team, and as such, **no official support is provided** for them.
-You can test and use them **at your own risk**. -
- -You can install them through the [administration web interface](/admin) by choosing "Install custom app", or using the [moulinette](/moulinette): -```bash -yunohost app install https://github.com// -``` - -The packagers will appreciate your remarks. If you test them and find issues, or ideas for improvement, do not hesitate to file issues directly on their repositories project page. - -
-
Collapse broken
-
Collapse in progress
-
Collapse working
-
- -

Declared as working applications

-

Important: it's the application maintaineur that qualify his application as working, not the YunoHost core team. Install it at your own risks. We won't provide support for it.

- -
- -

Work in progress applications

-

Those are not yet finished applications, we strongly advise against installing them except if you know what you are doing.

- -
- -

Broken applications

-

Do NOT install them, they are here as reference while they aren't fixed.

- -
- - - - diff --git a/apps_in_progress_fr.md b/apps_in_progress_fr.md deleted file mode 100644 index 6b76fb4f..00000000 --- a/apps_in_progress_fr.md +++ /dev/null @@ -1,137 +0,0 @@ -# Apps en cours - - - - - - - - - - - - -Apps officielles -Apps en cours -Apps souhaitées - -De plus en plus d’applications sont mises à disposition par les packagers. -
Ces applications **n’ont pas** été validées par l’équipe YunoHost et **ne sont pas** officiellement prises en charge.
Vous pouvez les tester et les utiliser à **vos risques et périls**. -
- -Elles sont installables avec l’[interface web d’administration](/admin) ou avec la moulinette : -```bash -yunohost app install https://github.com// -``` - -N’hésitez pas à vous créer un compte GitHub pour faire part de vos remarques aux packagers (sous forme d’« issues ») ou à leur proposer des améliorations (sous forme de « pull requests »). - -
-
Déplier cassées
-
Déplier en cours
-
Déplier fonctionnelles
-
- -

Applications dites fonctionnelles

-

Remarque : c'est le mainteneur de l'application qui la décrit comme fonctionnelle, pas l'équipe de YunoHost. Installez la à vos risques et péril et soyez conscient que ne fournirons aucune assistance dessus.

- -
- -

Applications en cours de développement

-

Il s'agit d'application pas encore fonctionnelles mais en cours de développement, nous vous déconseillons fortement de les installer sauf si vous savez ce que vous faites.

- -
- -

Applications cassées

-

Ne les installez PAS, elles sont là pour référence le temps d'être réparées.

- -
- - - - diff --git a/apps_wishlist.md b/apps_wishlist.md index 52b55a5a..72eff631 100644 --- a/apps_wishlist.md +++ b/apps_wishlist.md @@ -1,6 +1,6 @@ # Apps wishlist -Official apps Apps in progress Apps wishlist +
Before to add an app in wishlist please check your app is not already in official or community list: see the apps list
The following list is a compiled wishlist of applications that would be nice-to-have. @@ -9,153 +9,171 @@ The following list is a compiled wishlist of applications that would be nice-to- - [List of awesome selfhosted apps](https://github.com/Kickball/awesome-selfhosted) - [List of awesome sysadmin apps](https://github.com/kahun/awesome-sysadmin) - [List of awesome Node.js projects](https://github.com/sqreen/awesome-nodejs-projects) +- [List of SIP softwares/applications](https://en.wikipedia.org/wiki/List_of_SIP_software#Free_and_open-source_license) - [10er10](https://github.com/dready92/10er10) +- [Airsonic](https://github.com/airsonic/airsonic) - [Airtime](https://www.sourcefabric.org/en/airtime/) - [Ajenti](http://ajenti.org) -- [Autoblog](https://github.com/mitsukarenai/Projet-Autoblog) -- [Auth0 SSO Dashboard](https://github.com/auth0/auth0-sso-dashboard) +- [aMule](https://github.com/amule-project/amule) +- [Auth0 SSO Dashboard](https://github.com/auth0-extensions/auth0-sso-dashboard-extension) +- [Autoblog](https://github.com/mitsukarenai/Projet-Autoblog) (/!\ last update: Jan 27, 2015) +- [Bitmessage](https://bitmessage.org/wiki/Compiling_instructions) +- [Bitwarden](https://bitwarden.com/) +- [Beehive](https://github.com/muesli/beehive) +- [Blynk](https://github.com/blynkkk/blynk-library) - [Bolt](http://bolt.cm) +- [Bookstack](https://www.bookstackapp.com/) - [Browsepass](http://techualization.blogspot.de/2013/09/introducing-browsepass-keepass-on-web.html) +- [Calibre](https://manual.calibre-ebook.com/server.html) - [Caliopen](https://www.caliopen.org) - [Candy](https://candy-chat.github.io/candy) - [CardDavMate](https://www.inf-it.com/open-source/clients/carddavmate) - [cgit](http://git.zx2c4.com/cgit/about) - [CheckUp](https://sourcegraph.github.io/checkup) - [CiviCRM](https://civicrm.org) -- [Collabora Online](https://www.collaboraoffice.com/code/) -- [Collabora Online server](https://nextcloud.com/collaboraonline/) (to be able to use Collabora inside Nextcloud) +- [Cockpit](http://cockpit-project.org/) - [Commafeed](https://github.com/Athou/commafeed) - [Converse.js](https://conversejs.org) -- [Coquelicot](https://coquelicot.potager.org) – [package](https://github.com/M5oul/coquelicot_ynh) -- [Cryptpad](https://github.com/xwiki-labs/cryptpad) +- [Cozy](https://github.com/cozy) - [Cronkeep](https://github.com/cronkeep/cronkeep) -- [CronWeb](https://github.com/fisherinnovation/CronWeb) - [Croodle](https://github.com/jelhan/croodle) Schedule a date or to do a poll on a general topics, with client-side encryption. - [CumulusClips](http://cumulusclips.org) +- [Cyclos](https://www.cyclos.org) - [Darkwire.io](https://github.com/seripap/darkwire.io) - [Deluge](http://deluge-torrent.org) (with WebUI) -- [DemocracyOS](http://democracyos.org) - [DirectoryLister](https://github.com/DirectoryLister/DirectoryLister) -- [Discourse](http://discourse.org) +- [Discourse](https://discourse.org) - [DNSchain](https://github.com/okTurtles/dnschain) - [Emby](https://emby.media) +- [Emoncms](https://github.com/emoncms/emoncms) - [ERPnext](https://erpnext.com/download) -- [Ethersheet](https://ethersheet.org) +- [Ethersheet](https://github.com/ethersheet-collective/EtherSheet) - [Fail2web](https://github.com/Sean-Der/fail2web) - [Ferment](https://github.com/mmckegg/ferment) +- [FEX](http://fex.rus.uni-stuttgart.de/) - [FileTea](https://filetea.me) +- [FoOlSlide](http://foolcode.github.io/FoOlSlide/) Open source comicbook/manga management software - [Fossil](http://www.fossil-scm.org) - [Framaslides](https://framagit.org/framasoft/framaslides/) +- [Geneweb](https://geneweb.tuxfamily.org) - [GetSimple CMS](http://get-simple.info) - [Git-annex](http://git-annex.branchable.com) -- [Gitit](http://gitit.net) -- [GitLab](http://gitlab.org) +- [Gitit](https://github.com/jgm/gitit) +- [Goaccess](https://goaccess.io) Web log analyser (replaces piwik without js tracking scripts) - [Gollum](https://github.com/gollum/gollum) - [Goploader](https://github.com/Depado/goploader) +- [Granary](https://github.com/snarfed/granary) - [Guacamole](http://guac-dev.org) - [h5ai](http://larsjung.de/h5ai) +- [HackMD CE](https://github.com/hackmdio/hackmd) - [Hackpad](https://github.com/dropbox/hackpad) - [Headphones](https://github.com/rembo10/headphones) -- [Hi Buddy](http://hibuddy.monkeypatch.me) +- [Hi Buddy](https://github.com/tOkeshu/hibuddy) (/!\ last update: 17 Feb 2015) - [Huginn](https://github.com/cantino/huginn) - [Hugo](http://gohugo.io) - [Icecast 2](http://www.icecast.org) - [ikiwiki](http://ikiwiki.info) -- [img.bi](https://img.bi) -- [Inbox](https://www.inboxapp.com) +- [img.bi](https://github.com/imgbi/img.bi) - [InfCloud](https://www.inf-it.com/open-source/clients/infcloud) +- [Invoice Ninja](https://www.invoiceninja.com) - [InvoicePlane](https://invoiceplane.com) - [IPFS](https://ipfs.io) -- [Jeedom](http://www.jeedom.fr) – [package](https://github.com/lunarok/jeedom_ynh) -- [Joomla!](https://www.joomla.org) +- [Joplin](http://joplin.cozic.net/) - [JS Bin](http://jsbin.com/help/2-second-setup) - [Kaiwa](http://getkaiwa.com) +- [Keepass](http://keepass.info) - [Kin calendar](https://github.com/KinToday) - [Kinto](https://github.com/Kinto/formbuilder) - [Kiwix](http://www.kiwix.org/) Offline wikipedia - [Known](https://withknown.com) - [Koel](http://koel.phanan.net) -- [Kontalk](http://kontalk.org) +- [Kontalk](https://kontalk.org) - [Koozip](http://koozic.net) - [Kresus](https://framagit.org/bnjbvr/kresus) - [KrISS feed](https://github.com/tontof/kriss_feed) +- [Koken](http://koken.me) - [Kune](https://en.wikipedia.org/wiki/Kune_%28software%29) +- [Lessy](https://lessy.io) +- [LibreNews-Server](https://librenews.io) - [LibreOffice Online](https://wiki.documentfoundation.org/ReleaseNotes/5.3/fr#LibreOffice_Online) - [LiquidSoap](http://savonet.sourceforge.net/) - [Logstalgia](http://logstalgia.io) - [Loomio](https://www.loomio.org) - [The Lounge](https://thelounge.github.io), cf. https://github.com/Kloadut/shout_ynh/issues/4 -- [LSTU](https://github.com/ldidry/lstu) - [MaidSafe](http://maidsafe.net) - [Mailpile](https://www.mailpile.is) -- [MatterMost](https://github.com/mattermost/platform) -- [MediaCrush](https://imgrush.com) -- [MinigalNano](https://github.com/sebsauvage/MinigalNano) -- [Mirakel](http://mirakel.azapps.de/taskwarrior.html) +- [Matomo](https://matomo.org/) (formerly Piwik) +- [MediaCrush](https://github.com/MediaCrush/MediaCrush) (/!\ last update: Jan 23, 2015) +- [MinigalNano](https://github.com/sebsauvage/MinigalNano) (/!\ last update: Jun 24, 2016) +- [Mirakel](http://mirakel.azapps.de/taskwarrior.html) (/!\ SSL-Warning) - [Modoboa](http://modoboa.org) +- [MotionEye](https://github.com/ccrisan/motioneye) - [MPD](http://www.musicpd.org) -- [NetData](https://github.com/firehol/netdata) +- [Museek+](https://github.com/eLvErDe/museek-plus) - [Nibbleblog](http://www.nibbleblog.com) -- [NodeBB](https://nodebb.org) -- [ONLYOFFICE](http://onlyoffice.org) +- [Nuage](https://nuage.kerjean.me/login) - [ONLYOFFICE Document Server](http://helpcenter.onlyoffice.com/server/linux/document/linux-installation.aspx) (to be able to use ONLYOFFICE inside Nextcloud) +- [ONLYOFFICE](http://onlyoffice.org) - [OpenBazaar](https://openbazaar.org) -- [OpenJabNab](https://github.com/OpenJabNab/OpenJabNab) +- [OpenJabNab](https://github.com/OpenJabNab/OpenJabNab) (/!\ last update: Apr 30, 2016) - [Paperless](https://github.com/danielquinn/paperless) - [Paperwork](http://paperwork.rocks) -- [pdfy](https://github.com/joepie91/pdfy) -- [PeerTube](https://github.com/Chocobozzz/PeerTube) -- [Pelican](http://blog.getpelican.com) +- [pdfy](https://github.com/joepie91/pdfy) (/!\ last update: Aug 5, 2014) +- [Pelias](https://github.com/pelias/pelias) - [Peps](https://github.com/MLstate/PEPS) - [PHPList](http://www.phplist.com) - [PHProxy](http://sourceforge.net/projects/poxy) - [Phraseanet](https://docs.phraseanet.com/3.8/fr/index.html#) - [Pico](http://picocms.org) - [Pix](http://pix.toile-libre.org) -- [PPTP VPN](https://packages.debian.org/sv/squeeze/pptpd) +- [Playmaker](https://github.com/NoMore201/playmaker) +- [Pleroma](https://git.pleroma.social/pleroma/pleroma) - [Privoxy](http://www.privoxy.org) - [ProcessMaker](http://www.processmaker.com) -- [Pulse](https://ind.ie/pulse) +- [PyLoad](https://github.com/pyload/pyload) +- [Pulse](https://source.ind.ie/project/pulse-swift/tree/master) - [Pump.io](http://pump.io) +- [qBittorrent](https://github.com/qbittorrent/qBittorrent) - [racktables](http://racktables.org) -- [remotestorage-server](http://remotestorage.io/provide) +- [Redmine](https://www.redmine.org) +- [remotestorage-server](https://remotestorage.io/) - [Request Tracker](https://bestpractical.com) -- [Respawn 2.0](https://github.com/broncowdd/respawn) +- [Respawn 2.0](https://github.com/broncowdd/respawn) ( /!\ last update: 2015) - [Restya](http://restya.com) -- [uMap](https://umap.openstreetmap.fr/en) +- [SABnzbd](https://sabnzbd.org) +- [ScenariChain-server](https://download.scenari.software/SCENARIchain-server/) - [Scramble, Browser-based PGP web mail](https://github.com/dcposch/scramble) - [Scribbleton](https://scribbleton.com) - [ShareLatex](https://www.sharelatex.com) - [Shleuder](http://schleuder2.nadir.org) - [Simone](https://github.com/Kloadut/Simone) -- [SIP](https://en.wikipedia.org/wiki/List_of_SIP_software#Free_and_open-source_license) +- [SocialHome](https://github.com/jaywink/socialhome) (Socialhome is best described as a federated personal profile with social networking functionality) (https://socialhome.network) - [Sonarr](https://sonarr.tv) - [Stackedit](https://stackedit.io) - [StandardNotes](https://standardnotes.org) (a clean, simple, E2E-encrypted notes app) -- specifically, the server-side [StandardFile](https://standardfile.org) portion. - [Streama](https://github.com/dularion/streama) - [Streisand](https://github.com/jlund/streisand) - [SVG-Edit](https://github.com/SVG-Edit/svgedit) -- [Sympa](http://www.sympa.org) -- [Taskwarrior](https://taskwarrior.org) - [Taiga](https://taiga.io) +- [Tania](http://gettania.org/) +- [Taskwarrior](https://taskwarrior.org) - [TorChat](https://github.com/prof7bit/TorChat) - [Torrent Tunes](https://github.com/tchoulihan/torrenttunes-client) - [Total Respawn](https://github.com/broncowdd/TotalRespawn) - [Twister](http://twister.net.co) -- [Unvis](https://github.com/phixofor/unvis.it) -- [Unsee](https://github.com/unsee-cc) +- [TwitRSS.me](http://twitrss.me/) ([Github](https://github.com/ciderpunx/twitrssme)) Scrapes Twitter to create RSS feeds. +- [Unvis](https://unv.is/) ([Github](https://github.com/lodjuret/unvis.it)) - [Vaultier](http://www.vaultier.org) -- [Weblate](http://weblate.org) - [Webmpc](https://github.com/ushis/webmpc) - [WebODF](http://webodf.org) - [webSync](http://furier.github.io/websync) - [WebTorrent](https://github.com/feross/webtorrent) -- [Wekan](http://wekan.io) -- [WID](https://wid.chorem.com/site/home) - [Wisemapping](http://www.wisemapping.com) - [Xonotic](http://xonotic.org) -- [Yacy](http://yacy.net) – [package](https://github.com/M5oul/yacy_ynh) -- [YellowCMS](http://datenstrom.se/yellow) -- [YesWiki](http://yeswiki.net/wa.php?wiki=AccueiL) -- [Zone-project](https://github.com/descl/ZONE) +- [YellowCMS](https://datenstrom.se/yellow) +- [YesWiki](https://yeswiki.net) +- [ZeroTier](https://github.com/zerotier/ZeroTierOne) - [ZNC](http://wiki.znc.in/ZNC) +- [Zone-project](https://github.com/descl/ZONE) +- [Zoneminder](https://github.com/ZoneMinder/zoneminder) +- [microblog.pub](https://microblog.pub) diff --git a/apps_wishlist_fr.md b/apps_wishlist_fr.md index 5c9c3683..28616ea0 100644 --- a/apps_wishlist_fr.md +++ b/apps_wishlist_fr.md @@ -1,7 +1,3 @@ # Apps souhaitées -Apps officielles -Apps en cours -Apps souhaitées - La liste des applications souhaitées n’est maintenue qu’en version anglaise. Merci de vous y référer. diff --git a/artworks.md b/artworks.md deleted file mode 100644 index ab578699..00000000 --- a/artworks.md +++ /dev/null @@ -1,10 +0,0 @@ -#Art Works -Black and white YunoHost png logo done by ToZz (400 × 400 px): - - - - - -Click to download. - -Licence: CC-BY-SA 4.0 \ No newline at end of file diff --git a/artworks_fr.md b/artworks_fr.md deleted file mode 100644 index ccf242b9..00000000 --- a/artworks_fr.md +++ /dev/null @@ -1,10 +0,0 @@ -#Travail artistique -Logo Yunohost noir et blanc réalisé par ToZz (400 × 400 px) : - - - - - -Cliquer pour télécharger. - -Licence: CC-BY-SA 4.0 \ No newline at end of file diff --git a/backup.md b/backup.md index 358e70b7..fea99dbe 100644 --- a/backup.md +++ b/backup.md @@ -1,165 +1,149 @@ -# Backup +Backing up your server and apps +=============================== -First make sure that the `archives` folder exists in `/home/yunohost.backup/`. If it does not, create it with: +Backing up your server, apps and data is an important concern when administrating a server. This protects you from unexpected events that could happen (server lost in a fire, database corruption, loss of access, server compromised, ...). The backup policy you will put in place depends of the importance of the services and data hosted. For instance you won't care too much about having backup on a test server, but you will care about having a backup of critical data of your association or company, and having this backup *in a different physical place*. + +Backups in the context of YunoHost +---------------------------------- + +YunoHost comes with a backup system, that allows to backup (and restore) system configurations and data (e.g. mails) and apps if they support it. + +You can manage backups either from the command line (`yunohost backup --help`) or from the web administration (in the Backups section) though some features are not yet available in the webadmin. + +The current default method consists in creating a `.tar.gz` archive containing all relevant files. In the future, YunoHost plans to support [Borg](https://www.borgbackup.org/) which is a more flexible, efficient and powerful solution. + +Creating backups +---------------- + +#### From the webadmin + +You can easily create backup archives from the webadmin by going in Backups > Local storage and clicking on "New backup". You will then be asked to select which configuration, data and apps you want to backup. + +![](/images/backup.png) + +#### From the command line + +You can create a new backup archive with the command line. Here are a few simple example of commands and their corresponding behavior : + +- Backing up everything (all system parts and apps) : ```bash -sudo mkdir /home/yunohost.backup/archives +yunohost backup create ``` -Launch a backup via +- Backing up only apps ```bash -sudo yunohost backup create +yunohost backup create --apps ``` - -In this version you can backup with cli or with the web admin. The cli way allows you to do more things. The webadmin way is more accessible. - -## Web admin -Basically with the webadmin, you can: - -- backup into `/home/yunohost/archives/` -- choose to backup one or more data among: - - apps data - - emails - - home data - - configuration -- list backups -- see what there is in a backup -- restore selectively a backup - -**Caution:** to do a backup, you need to have enough free disk spaces in the destination directory. For example, if you have 20GB in `/home/data` you need to have enough space to contain this 20GB compressed in a tar.gz. To do the tar.gz, yunohost backup uses shallow copies, to avoid to need more spaces to be able to create the tar.gz. - -**Caution:** If you use selective restore, be sure to not create discordant operation. For example, if you restore an app using a domain that has been deleted from YunoHost, you need to read the domain or to restore all configuration files. - -Here's a list of missing but planned features: - -- backup in another memory device -- download/upload backups -- encrypt backups - -Some features are almost ready in the webadmin, but the API is not for the moment. - -## Command line -### Backup -You can make a full backup by running this command: +- Backing up only two apps (wordpress and shaarli) ```bash -admin@yunohost:~# sudo yunohost backup create -Exécution des scripts de sauvegarde... -Attention : backup script '/etc/yunohost/apps/phpmyadmin/scripts/backup' not found -Attention : App 'phpmyadmin' will not be saved -Lancement du script de sauvegarde de l'application 'odoo'... -Création de l'archive de sauvegarde... -Succès ! Sauvegarde terminée -archive: - hooks: - conf_ssh: /usr/share/yunohost/hooks/backup/08-conf_ssh - conf_ynh_firewall: /usr/share/yunohost/hooks/backup/20-conf_ynh_firewall - data_mail: /usr/share/yunohost/hooks/backup/23-data_mail - conf_cron: /usr/share/yunohost/hooks/backup/32-conf_cron - conf_ynh_certs: /usr/share/yunohost/hooks/backup/21-conf_ynh_certs - conf_ynh_mysql: /usr/share/yunohost/hooks/backup/11-conf_ynh_mysql - conf_xmpp: /usr/share/yunohost/hooks/backup/26-conf_xmpp - data_home: /usr/share/yunohost/hooks/backup/17-data_home - conf_nginx: /usr/share/yunohost/hooks/backup/29-conf_nginx - conf_ssowat: /usr/share/yunohost/hooks/backup/14-conf_ssowat - conf_ldap: /usr/share/yunohost/hooks/backup/05-conf_ldap - created_at: 1448540733 - apps: - odoo: - version: - - name: Odoo - description: Odoo est une collection d'apps de gestion d'entreprise (ERP : CRM, Comptabilité, Point de Vente, RH, Achats, ...). - description: - name: 20151126-132533 -admin@yunohost:~# sudo ls /home/yunohost.backup/archives/ -20151126-132533.info.json 20151126-132533.tar.gz +yunohost backup create --apps wordpress shaarli ``` -By default, it backups in `/home/yunohost.backup/archives/`, but you can set your own directory with `-o` option. It could be an usb key or an other mounted filesystem. -If an app has no backup script it warns you. - -As you can see in the answer, there is 2 hooks which backup data (data_home and data_mail). By default, the mysql data aren't saved, because the apps should save themselves their databases. - - -**Note:** `yunohost backup` is not able currently to create diff backup. But you can use `-r` option to avoid compression and use an other backup tool to make diff backup. - -### Restore -To do a restore +- Backing up only mails ```bash -admin@yunohost:~# sudo yunohost backup restore 20151126-132533 +yunohost backup create --system data_mail ``` -You can choose to apply only some parts of the backup, by selecting which restore hooks and which apps to restore. -## Packaging information -You can see an example to make backup and restore scripts here -https://github.com/YunoHost/example_ynh/tree/testing -and -https://github.com/zamentur/strut_ynh/ - -There is some helpers to do shadow copy if you have big quantity of data to backup (owncloud, video apps, etc...). - -**Note:** during a backup operation, the restore script associated is saved. So in a restore operation, yunohost use the saved restore script and not the most recent script. - -If you want modify a general conf file, you should use hooks to trigger a modification of the conf file after each call of `yunohost regenconf`. -You can also use the regeneration configuration system to do index your conf file, and allow your user to be warn if an upgrade of your app has change a config file. - -## Annex +- Backing up mails and wordpress ```bash -usage: yunohost backup create [-h] [-d DESCRIPTION] [-o OUTPUT_DIRECTORY] - [-n NAME] [--ignore-hooks] - [--hooks [HOOKS [HOOKS ...]]] - [--apps [APPS [APPS ...]]] [-r] [--ignore-apps] - -optional arguments: - -h, --help show this help message and exit - -d DESCRIPTION, --description DESCRIPTION - Short description of the backup - -o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY - Output directory for the backup - -n NAME, --name NAME Name of the backup archive - --ignore-hooks Do not execute backup hooks - --hooks [HOOKS [HOOKS ...]] - List of backup hooks names to execute - --apps [APPS [APPS ...]] - List of application names to backup - -r, --no-compress Do not create an archive file - --ignore-apps Do not backup apps - -usage: yunohost backup restore [-h] [--force] [--hooks [HOOKS [HOOKS ...]]] - [--ignore-hooks] [--apps [APPS [APPS ...]]] - [--ignore-apps] - name - -positional arguments: - name Name of the local backup archive - -optional arguments: - -h, --help show this help message and exit - --force Force restauration on an already installed system - --hooks [HOOKS [HOOKS ...]] - List of restauration hooks names to execute - --ignore-hooks Do not restore hooks - --apps [APPS [APPS ...]] - List of application names to restore - --ignore-apps Do not restore apps - - -usage: yunohost backup [-h] {info,restore,create,list,delete} ... - -optional arguments: - -h, --help show this help message and exit - -actions: - {info,restore,create,list,delete} - info Show info about a local backup archive - restore Restore from a local backup archive - create Create a backup local archive - list List available local backup archives - delete Delete a backup archive -root@staging1:/home/admin# sudo yunohost backup list --help -usage: yunohost backup list [-h] [-i] [-H] - -optional arguments: - -h, --help show this help message and exit - -i, --with-info Show backup information for each archive - -H, --human-readable Print sizes in human readable format +yunohost backup create --system data_mail --apps wordpress ``` + +For more informations and options about backup creation, consult `yunohost backup create --help`. You can also list system parts that can be backuped with `yunohost hook list backup`. + +#### Apps-specific configuration + +Some apps such as nextcloud may be related to a large quantity of data which are not backuped by default. This practice is referred to "backing up only the core" (of the app). However it's possible to enable the backup of all data of this app with `yunohost app setting nextcloud backup_core_only -v 0`. Be careful though that your archive might get huge if there's too much data to be backuped... + +Downloading and uploading backups +--------------------------------- + +After creating backup archives, it is possible to list and inspect them via the corresponding views in the webadmin, or via `yunohost backup list` and `yunohost backup info ` from the command line. By default, backups are stored in `/home/yunohost.backup/archives/`. + +There is currently no straightfoward way to dowload or upload a backup archive. + +One solution consists in using `scp` (a program based on [`ssh`](/ssh)) to copy files between two machines via the command line. Hence, from a machine running linux, you should be able to run the following to download a specific backup : + +```bash +scp admin@your.domain.tld:/home/yunohost.backup/archives/.tar.gz ./ +``` + +Similarly, you can upload a backup from a machine to your server with + +```bash +scp /path/to/your/.tar.gz admin@your.domain.tld:/home/yunohost.backup/archives/ +``` + +Alternatively, a solution can be to install Nextcloud or a similar app and configure it to be able to access files in `/home/yunohost.backup/archives/` from a web browser. + +Restoring backups +----------------- + +#### From the webadmin + +Go in Backup > Local storage and select your archive. You can then select which items you want to restore, then click 'Restore'. + +![](/images/restore.png) + +#### From the command line + +From the command line, you can run `yunohost backup restore ` (without the `.tar.gz`) to restore an archive. As for `yunohost backup create`, this will restore everything in the archive by default. If you want to restore only specific items, you can use for instance `yunohost backup restore --apps wordpress` which will restore only the wordpress app. + +#### Constrains + +To restore an app, the domain on which it was installed should already be configured (or you need to restore the corresponding system configuration). You also cannot restore an app which is already installed ... which means that to restore an old version of an app, you must first uninstall it. + +#### Restoring during the postinstall + +One specific feature is the ability to restore a full archive *instead* of the postinstall step. This makes it useful when you want to reinstall a system entirely from an existing backup. To be able to do this, you will need to upload the archive on the server and place it in `/home/yunohost.backup/archives` though. Then, instead of `yunohost tools poinstall` you can run : + +```bash +yunohost backup restore +``` + +To go futher +------------ + +#### Storing backups on a different drive + +If you want, you can connect and mount an external drive to store backup archives on it (among other things). For this, we first move the existing archives then add a symbolic link. + +```bash +PATH_TO_DRIVE="/media/my_external_drive" # For instance, depends of where you mounted your drive +mv /home/yunohost.backup/archives $PATH_TO_DRIVE/yunohost_backup_archives +ln -s $PATH_TO_DRIVE/yunohost_backup_archives /home/yunohost.backup/archives +``` + +#### Automatic backups + +You can add a simple cron job to trigger automatic backups regularly. For instance, to backup your wordpress weekly, create a file `/etc/cron.weekly/backup-wordpress` with the following content : + +```bash +#!/bin/bash +yunohost backup create --apps wordpress +``` + +then make it executable : + +```bash +chown +x /etc/cron.weekly/backup-wordpress +``` + +Be careful what you backup exactly and when : you don't want to end up with your whole disk space saturated because you backuped 30 Go of data every day. + +#### Backing your server on a remote server + +You can follow this tutorial on the forum to setup Borg between two servers : https://forum.yunohost.org/t/how-to-backup-your-yunohost-server-on-another-server/3153 + +Alternatively, the app Archivist allows to setup a similar system : https://forum.yunohost.org/t/new-app-archivist/3747 + +#### Full backup with `dd` + +If you are using an ARM board, another method for doing a full backup can be to create an image of the SD card. For this, poweroff your ARM board, get the SD card in your computer then create a full image with something like : + +```bash +dd if=/dev/mmcblk0 of=./backup.img +``` + +(replace `/dev/mmcblk0` with the actual device of your sd card) diff --git a/backup_fr.md b/backup_fr.md index 17b9c84a..faebf47b 100644 --- a/backup_fr.md +++ b/backup_fr.md @@ -1,48 +1,149 @@ -# Les sauvegardes +Sauvegarder son serveur et ses apps +=================================== -**Prérequis :** vérifier que le dossier `archives` existe bien dans le dossier `/home/yunohost.backup/` -sinon le créer via un +Dans le contexte de l'auto-hébergement, les sauvegardes (backup) sont un élément important pour palier à des événements inattendus (incendies, corruption de base de données, perte d'accès au serveur, serveur compromis, ...). La politique de sauvegarder à 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 +----------------------------- + +YunoHost contient un système de sauvegarde, qui permet de sauvegarder (et restaurer) les configurations du système, les données "système" (comme les mails) et les applications si elles le supportent. + +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 disponible 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. + +Créer des sauvegardes +--------------------- + +#### Depuis la webadmin + +Vous pouvez facilement créer des archives depuis la webadmin en allant dans Sauvegardes > Archives locales et en cliquant sur "Nouvelle sauvegarde". Vous pourrez ensuite sélectionner quoi sauvegarder (configuration, données "système", applications). + +![](/images/backup.png) + +#### Depuis la ligne de commande + +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) ```bash -sudo mkdir /home/yunohost.backup/archives -``` -Lancer la sauvegarde via -```bash -sudo yunohost backup create -``` -Un fichier portant un numéro et une extension .tar.gz est crée -(exemple 1452694078.tar.gz) - -Cette archive contient une copie des dossiers suivants et fichiers de configurations dans les répertoires suivants -- cron -- home (car les données d’owncloud se trouvent dans `/home/yunohost.apps/owncloud` par exemple) -- ldap -- mail -- mysql -- nginx -- ssh -- ssowat -- xmpp -- yunohost - -Cette sauvegarde sous forme d’archive est à copier sur un autre support (support mémoire, répertoire réseau…) - -Pour récupérer une sauvegarde depuis son serveur vers le /home de son ordinateur (avec 1234 comme port SSH ; avec IP_ou_NDD comme adresse IP [locale ou pas] ou NDD son Nom De Domaine ; avec $USER son nom d'utilisateur ; avec aaaammjj-hhmmss comme par exemple 20161002-084907 [nom de la sauvegarde YunoHost]) : -```bash -scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.tar.gz /home/$USER -scp -P 1234 root@IP_ou_NDD:/home/yunohost.backup/archives/aaaammjj-hhmmss.info.json /home/$USER +yunohost backup create ``` -Sur le même principe que précédemment, envoyer une sauvegarde depuis le /home de son ordinateur vers son serveur (s'assurer que le dossier archive existe bien sinon lancer une première sauvegarde ou bien en dernier recours créer le dossier en root : mkdir /home/yunohost.backup/archives) : +- Sauvegarder seulement les apps ```bash -scp -P 1234 /home/$USER/aaaammjj-hhmmss.info.json root@IP_ou_NDD:/home/yunohost.backup/archives -scp -P 1234 /home/$USER/aaaammjj-hhmmss.tar.gz root@IP_ou_NDD:/home/yunohost.backup/archives +yunohost backup create --apps ``` -# Pour restaurer une sauvegarde : +- Sauvegarder seulement deux apps (wordpress et shaarli) ```bash -yunohost backup restore nom_de_la_sauvegarde +yunohost backup create --apps wordpress shaarli ``` -# Pour déplacer ses sauvegardes sur un autre disque dur +- Sauvegarder seulement les mails +```bash +yunohost backup create --system data_mail +``` -Il suffit de monter son disque dur dans le dossier /home/yunohost.backup/archives +- Sauvegarder les mails et wordpress +```bash +yunohost backup create --system data_mail --apps wordpress +``` + +Pour plus d'informations et d'option sur la création d'archives, consultez `yunohost backup create --help`. Vous pouvez également lister les parties de système qui sont sauvegardable avec `yunohost hook list backup`. + +#### Configuration spécifiques à certaines apps + +Certaines apps comme Nextcloud sont potentiellement rattachées à des quantités importantes de données, qui ne sont pas sauvegardées par défaut. Dans ce cas, on dit que l'app "sauvegarde uniquement le core" (de l'app). Néanmoins, il est possible d'activer la sauvegarde de toutes les données de cette application avec (dans le cas de Nextcloud) `yunohost app setting nextcloud backup_core_only -v 0`. Soyez prudent: en fonction des données stockées dans nextcloud, il se peut que l'archive que vous obtenez ensuite devienne énorme... + +Télécharger et téléverser des sauvegardes +----------------------------------------- + +Après avoir créé des sauvegardes, il est possible de les lister et de les inspecter grâce aux vues correspondantes dans la webadmin, ou via `yunohost backup list` et `yunohost backup info ` depuis la ligne de commande. Par défaut, les sauvegardes sont stockées dans `/home/yunohost.backup/archives/`. + +Il n'existe actuellement pas de solution "rapide et facile" pour télécharger ou téléverser une archive depuis une autre machine. + +Une solution consiste à utiliser `scp` (un programme basé sur [`ssh`](/ssh)) pour copier des fichiers entre deux machines grâce à la ligne de commande. Ainsi, depuis une machine sous Linux, vous pouvez utiliser la commande suivante pour télécharger une archive: + +```bash +scp admin@your.domain.tld:/home/yunohost.backup/archives/.tar.gz ./ +``` + +De façon similaire, vous pouvez téléverser une sauvegarde depuis une machine vers votre serveur avec: + +```bash +scp /path/to/your/.tar.gz admin@your.domain.tld:/home/yunohost.backup/archives/ +``` + +Une solution alternative consiste à installer une application comme Nextcloud et à la configurer pour être en mesure d'accéder aux fichiers dans `/home/yunohost.backup/archives/` depuis un navigateur web. + +Restaurer des sauvegardes +------------------------- + +#### Depuis la webadmin + +Allez dans Sauvegardes > Sauvegardes locales et sélectionnez l'archive. Vous pouvez ensuite choisir les différents éléments que vous voulez restaurer puis cliquer sur "Restaurer". + +![](/images/restore.png) + +#### Depuis la ligne de commande + +Depuis la ligne de commande, vous pouvez utiliser `yunohost backup restore ` (sans le `.tar.gz`) pour restaurer une archive. Tout comme `yunohost backup create`, cela restaure tout le contenu par défaut. Si vous souhaitez restaurer seulement certaines parties, vous pouvez utiliser par exemple `yunohost backup restore --apps wordpress` qui restaurera seulement l'app wordpress. + +#### Contraintes + +Pour restaurer une application, le domaine sur laquelle elle est installée doit déjà être configuré (ou il vous faut restaurer en même temps la configuration correspondante). Aussi, il n'est pas possible de restaurer une application déjà installée... ce qui veut dire que pour restaurer une sauvegarde d'une app, il vous faut déjà la désinstaller. + +#### Restauration d'une archive à la place de la post-installation + +Une fonctionnalité particulière est la possibilité de restaurer une archive entière *à la place* de faire la post-installation. Ceci est utile pour réinstaller un système entièrement à partir d'une sauvegarde existante. Pour faire cela, il vous faudra d'abord téléverser l'archive sur le server et la placer dans `/home/yunohost.backup/archives`. Ensuite, à la place de `yunohost tools poinstall` vous pouvez faire: + +```bash +yunohost backup restore +``` + +Pour aller plus loin +-------------------- + +#### Stocker les archives sur un autre disque + +Si vous le souhaitez, vous pouvez connecter un disque externe à votre serveur pour (parmi d'autres choses) stocker les archives de backup dessus. Pour cela, il faut d'abord déplacer les archives existantes vers le disque, puis créer un lien symbolique: + +```bash +PATH_TO_DRIVE="/media/mon_disque_externe" # Par exemple - Tout dépend d'où le disque est monté +mv /home/yunohost.backup/archives $PATH_TO_DRIVE/yunohost_backup_archives +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: + +```bash +#!/bin/bash +yunohost backup create --apps wordpress +``` + +puis rendez-le exécutable: + +```bash +chown +x /etc/cron.weekly/backup-wordpress +``` + +Soyez prudent à propos de ce que vous sauvegardez et de la fréquence: il vaut mieux éviter de se retrouver avec un disque saturé car vous avez voulu sauvegarder 30 Go de données tous les jours... + +#### Sauvegarder sur un serveur distant + +Vous pouvez suivre ce tutoriel sur le forum pour mettre en place Borg entre deux serveurs: https://forum.yunohost.org/t/how-to-backup-your-yunohost-server-on-another-server/3153 + +Il existe aussi l'application Archivist qui permet un système similaire: https://forum.yunohost.org/t/new-app-archivist/3747 + +#### Backup complet avec `dd` + +Si vous êtes sur une carte ARM, une autre méthode pour créer une sauvegarde complète consiste à créer une image (copie) de la carte SD. Pour cela, éteignez votre serveur, insérez la carte SD dans votre ordinateur et créez une image avec une commande comme: + +```bash +dd if=/dev/mmcblk0 of=./backup.img +``` + +(remplacez `/dev/mmcblk0` par le vrai nom de votre carte SD) diff --git a/boot_and_graphical_install.md b/boot_and_graphical_install.md index eb856bf3..746c8282 100644 --- a/boot_and_graphical_install.md +++ b/boot_and_graphical_install.md @@ -37,26 +37,16 @@ Check that your computer is physically connected and retry.
* It should reboot automatically. -## 4. Proceed to post-installation +## 4. Log in -Once booted, your computer should display a screen like this: +After the reboot, you should see a black screen with a few words asking you to +log in. You can log with the following credentials : - +* User: **root** +* Password: **yunohost** -You can proceed to post-installation right away, or access the **IP** address shown on this screen from another computer's web browser (usually `http://192.168.x.x`) +## 5. Proceed to post-installation - +Post-install documentation -If you encounter this kind of error, click on "**Proceed**" or "**Add an exception**". -This means that you have to trust the certificate which secures your server's connections. -Since this is your server, you can bypass it serenely here :-) -
- - - ---- - -#### More information on the post-installation here: - -**[yunohost.org/postinstall](/postinstall)** diff --git a/boot_and_graphical_install_fr.md b/boot_and_graphical_install_fr.md index 1960b2f8..fcfd7c72 100644 --- a/boot_and_graphical_install_fr.md +++ b/boot_and_graphical_install_fr.md @@ -15,7 +15,7 @@ Démarrez votre serveur avec la clé USB ou le CD-ROM inséré, et sélectionnez ## 3. Lancer l’installation graphique -Vous devriez voit un écran comme ça : +Vous devriez voir un écran comme ça : @@ -35,26 +35,16 @@ Vérifiez que votre serveur est bien branché et réessayez.
* L’ordinateur devrait redémarrer automatiquement à la fin de l’installation. -## 4. Procéder à la post-installation +## 4. Log in -Une fois démarré, votre serveur devrait afficher un écran comme celui-ci : +Après avoir redémarré, votre machine devrait afficher un écran noir avec +quelques mots vous invitant à vous identifier. Vous pouvez utiliser les +identifiants suivants : - +* User: **root** +* Password: **yunohost** -Vous pouvez procéder à la post-installation directement, ou accéder à l’adresse **IP** affichée sur cet écran depuis un navigateur web d’un autre ordinateur (généralement `http://192.168.x.x`) +## 5. Procéder à la post-installation - +Documentation de la post-installation -Si vous rencontrez une erreur de ce type, cliquez sur « **Poursuivre quand même** » ou « **Ajouter une exception** ». -Cela signifie que vous devez faire confiance au certificat qui sécurise les connexions avec votre serveur. -Comme c’est le votre, vous pouvez le valider sereinement ici :-) - -
- - - ---- - -#### Plus d’informations sur la post-installation ici : - -**[yunohost.org/postinstall](/postinstall)** diff --git a/build_arm_image.md b/build_arm_image.md deleted file mode 100644 index 20775dc5..00000000 --- a/build_arm_image.md +++ /dev/null @@ -1,124 +0,0 @@ -# Build ARM image - -This tutorial's goal is to build a plug-and-play image for YunoHost for ARM boards. - -It could be used on many ARM board (Rasberry Pi, Olimex, Cubieboard…). - -This tutorial is based on [Yunocubian](https://github.com/M5oul/Yunocubian). - -You could find [ARM image builder from Debian Jessie](https://github.com/YunoHost/install_script/pull/36). - -**All these steps can be executed with variations of [this script](https://github.com/likeitneverwentaway/rpi_buildbot/blob/master/build_image.sh).** - -### Download minimal Debian Jessie -Download a Debian Jessie image compatible with the hardware **without desktop environnement** installed: - -* [ARMbian](http://www.armbian.com/download/) (Olimex, Cubieboard, Banana Pi…) -* [Raspbian Jessie Lite](https://www.raspberrypi.org/downloads/raspbian/) - -### Copy image and install YunoHost -Copy image to the SD card - -Plug & boot - -* Connect via [SSH](ssh): **pi@exemple.tld/ip_address** with the password **raspberry** (or any variations for other distros than Raspbian). -* Set a root password : - -```bash -sudo passwd -``` - -and login as root: -```bash -su -``` - - -* You should be **root** for next operations. - -Manually install YunoHost on a Raspberry Pi - -If you encounter problems during installation check out [this installation guide](http://avignu.wiki.tuxfamily.org/doku.php?id=documentation:yunohost-jessie) for the Raspberry Pi, based on suggestion [from this thread](https://forum.yunohost.org/t/installation-de-yunohost-2-4-sur-raspbian-jessie-minimal-sur-un-raspberry-pi-3/1597). - -
Do not proceed to **post-installation**.
- -### Clean image -* Update image: -```bash -apt-get update && apt-get dist-upgrade && apt-get autoremove -``` -* Change hostname: -```bash -sed -i "s/$(hostname)/YunoHost/g" /etc/hosts -sed -i "s/$(hostname)/YunoHost/g" /etc/hostname -``` -* Allow SSH connection as root: -```bash -sed -i '0,/without-password/s/without-password/yes/g' /etc/ssh/sshd_config -``` -* Delete the **pi** user (this step must be perform directly as root, not logged in as pi and then login as root): -```bash -deluser –remove-all-files pi -``` -* Set the first boot script: - -```bash -wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/yunohost-firstboot -P /etc/init.d/ - -# Give executable right -chmod a+x /etc/init.d/yunohost-firstboot - -# Make it execute at next boot -insserv /etc/init.d/yunohost-firstboot -``` -* Set the boot promtp script: -```bash -wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.service -P /etc/systemd/system/ -wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.sh -P /usr/bin/ -chmod a+x /usr/bin/boot_prompt.sh -systemctl enable boot_prompt.service -``` - -* Tell the boot_prompt script that the next boot is the first boot: -```bash -touch /etc/yunohost/firstboot -``` - -* Turn off your board: -```bash -shutdown -``` - - -Don't forget to reset **wpa-supplicant.conf** if you changed it. You could also delete the command history with - -```bash -history -c -``` -or by editing **/root/.bash_history**. - -### Copy image -Plug your SD card on your desktop computer and copy it: -
Be carefull to not erase your data.
- -```bash -sudo dd bs=1M if=/dev/sdd of=~/yunohost-jessie-board-year-month-day.img -``` -You can also use the **Read** function of [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). - -### Verify image -Copy image to the SD card - -Plug & boot - -Post-install - -
If everything is alright, you could publish your image.
- -### Publish image -* Reduce size by zipping the image: -```bash -zip yunohost-jessie-board-year-month-day.img.zip yunohost-jessie-board-year-month-day.img -``` - -* Publish: you could post your image on the [forum](https://forum.yunohost.org/). diff --git a/build_arm_image_fr.md b/build_arm_image_fr.md deleted file mode 100644 index aab88885..00000000 --- a/build_arm_image_fr.md +++ /dev/null @@ -1,126 +0,0 @@ -# Build ARM image - -Le but de ce tutoriel est de créer une image YunoHost prête à l'emploi pour les cartes ARM. -Elle pourra être utilisée sur de nombreuses cartes (Rasberry Pi, Olimex, Cubieboard…). - -Ce tutoriel est basé sur [Yunocubian](https://github.com/M5oul/Yunocubian). - -Vous pouvez trouvez le script [ARM image builder from Debian Jessie](https://github.com/YunoHost/install_script/pull/36). - - -**Toutes ces étapes peuvent être executées en utilisant des variations de [ce script](https://github.com/likeitneverwentaway/rpi_buildbot/blob/master/build_image.sh).** - -### Télechargez une version minimale de Debian Jessie -Télechargez une image Debian Jessie compatible avec la carte **sans environnement graphique** installé: - -* [ARMbian](http://www.armbian.com/download/) (Olimex, Cubieboard, Banana Pi…) -* [Raspbian Jessie Lite](https://www.raspberrypi.org/downloads/raspbian/) - -### Copiez l'image et installez YunoHost -Copie de l'image sur la carte SD - -Plug & boot - -* Connewion via [SSH](ssh): **pi@exemple.tld/ip_address** avec le mot de passe **raspberry** (ou toute autre variation pour des distros différentes de Raspbian). -* Mettez un mot de passe root : - -```bash -sudo passwd -``` - -et se connecter en tant que root: -```bash -su -``` - - -* Vous devriez être **root** pour les étapes suivantes. - -Installez manuellement YunoHost sur un Raspberry Pi - -Si vous rencontrez des problèmes durant l'installation regardez [ce guide d'installation](http://avignu.wiki.tuxfamily.org/doku.php?id=documentation:yunohost-jessie) pour le Raspberry Pi, sur les suggestions [de ce thread](https://forum.yunohost.org/t/installation-de-yunohost-2-4-sur-raspbian-jessie-minimal-sur-un-raspberry-pi-3/1597). - -
Ne pas faire la **post-installation**.
- -### Nettoyage de l'image -* Mise à jour de l'image: -```bash -apt-get update && apt-get dist-upgrade && apt-get autoremove -``` -* Changez l'hostname: -```bash -sed -i "s/$(hostname)/YunoHost/g" /etc/hosts -sed -i "s/$(hostname)/YunoHost/g" /etc/hostname -``` -* Permettre les connections SSH en tant que root: -```bash -sed -i '0,/without-password/s/without-password/yes/g' /etc/ssh/sshd_config -``` -* Supprimer l'user pi (cette étape doit être effectuer directement en tant que root, pas connecté avec l'user pi puis root): -```bash -deluser –remove-all-files pi -``` -* Mise en place du script de premier boot: - -```bash -wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/yunohost-firstboot -P /etc/init.d/ - -# Droit d'execution au script -chmod a+x /etc/init.d/yunohost-firstboot - -# Execute le script au prochain boot -insserv /etc/init.d/yunohost-firstboot -``` -* Mise en place du script boot promtp: -```bash -wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.service -P /etc/systemd/system/ -wget https://raw.githubusercontent.com/likeitneverwentaway/rpi_buildbot/master/boot_prompt.sh -P /usr/bin/ -chmod a+x /usr/bin/boot_prompt.sh -systemctl enable boot_prompt.service -``` - -* Dites au script boot_promt que le prochain boot est le premier boot: -```bash -touch /etc/yunohost/firstboot -``` - -* Éteindre la carte: -```bash -shutdown -``` - - -Ne pas oublier de reset le fichier **wpa-supplicant.conf** si vous l'avez modifié. Vous pouvez aussi supprimer l'historique des commandes avec - -```bash -history -c -``` -ou en éditant **/root/.bash_history**. - -### Copie de l'image -Branchez la carte SD à votre ordinateur et faites en une copie: -
Faites attention de ne pas supprimer vos données.
- -```bash -sudo dd bs=1M if=/dev/sdd of=~/yunohost-jessie-board-year-month-day.img -``` - -Vous pouvez aussi utiliser la fonction **Read** de [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). - - -### Verifer l' image -Copier l'image sur la carte SD - -Plug & boot - -Post-install - -
Si tous va bien, vous pouvez publiez votre image.
- -### Publier l'image -* Reduire la taille en zippant l'image: -```bash -zip yunohost-jessie-board-year-month-day.img.zip yunohost-jessie-board-year-month-day.img -``` - -* Publication: vous pouvez publier l'image sur le [forum](https://forum.yunohost.org/). diff --git a/build_packages.md b/build_packages.md deleted file mode 100644 index 7c6426e5..00000000 --- a/build_packages.md +++ /dev/null @@ -1,70 +0,0 @@ -# YunoHost Debian Packages - -## Architecture - -YunoHost packages are located on the yunohost.org workstation, in the `/home/yunohost/packages.git` folder. - -Build system is based on debuild and pbuilder. It will generate a chroot, embedding every dependencies and Debian build tools. - -Configuration is defined in the `/etc/pbuilder/megusta-amd64` file and allows to make packages without any specific architecture. - -
-**Caution:** be advised not to be logged in as "root" to execute the following commands (except those starting with `sudo`). -
- -## Package update -#### Packages with external sources -Packages based on GitHub sources (moulinette, moulinette-yunohost, ssowat, et yunohost-admin) require the latest modifications: - -```bash -[yunohost@yunohost] ~/packages.git/moulinette $ cd src -[yunohost@yunohost] ~/packages.git/moulinette/src $ git pull -``` - -Then, start package build (**caution: you need to be located in the package root folder**): - -```bash -[yunohost@yunohost] ~/packages.git/moulinette/src $ cd .. -[yunohost@yunohost] ~/packages.git/moulinette $ commit-and-build "Message de commit" -``` - ---- - -#### Configuration Packages -To update a yunohost-config-* package, move to the root folder, make your changes (for example: change a `debian/postinst` script), and type in the same command as for packages with sources: - -```bash -[yunohost@yunohost] ~/packages.git/yunohost-config-nginx $ commit-and-build "Commit message" -``` - -The build command will update the Debian changelog (`debian/changelog`) and start the package creation. Once created, it will automatically added in the repository test`. - ---- - -#### Update in a production environment -To add a package in the `megusta` (stable) (`debian/changelog`): - -```bash -[yunohost@yunohost] ~/packages.git/monpaquet $ commit-and-build "Commit message" production -``` - -Once modifications are applied, you may execute `git push` to send your modifications to GitHub. - -## Add a package to a repository manually -You can add Debian packages into the repository. NodeJS package is an example. - -```bash -sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb repository_name package_name.deb -``` - -`repository_name` may be `test` or `megusta`. - -## Delete a package from a repository -Delete a Debian package from a repository in order to empty the test repository for example: - -```bash -sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb repository_name package_name -``` - -## TODO -Modify commit-build script to retrieve git commit messages and generate Debian changelog with `git-dch` command. \ No newline at end of file diff --git a/build_packages_fr.md b/build_packages_fr.md deleted file mode 100644 index 3ee77ddd..00000000 --- a/build_packages_fr.md +++ /dev/null @@ -1,77 +0,0 @@ -# Les paquets Debian YunoHost - -## Architecture - -Les paquets YunoHost se trouvent sur la machine yunohost.org dans le répertoire `/home/yunohost/packages.git`. - -Le système de build est basé sur debuild et pbuilder. Le fonctionnement de cet ensemble est de générer un chroot qui va embarquer l’ensemble des dépendances et des outils de build Debian. - -La configuration de cet environnement est définie dans le fichier `/etc/pbuilder/megusta-amd64` et permet de construire les paquets sans architecture spécifique. - -
-**Attention :** il n’est pas conseillé d’être en root pour exécuter les actions suivantes (sauf celles précédées de `sudo`) -
- -## Mise à jour d’un paquet - -
-#### Paquets avec sources externes -Pour les paquets basés sur des sources GitHub (moulinette, moulinette-yunohost, ssowat, et yunohost-admin), il faut d’abord récupérer les dernières modifications : - -```bash -[yunohost@yunohost] ~/packages.git/moulinette $ cd src -[yunohost@yunohost] ~/packages.git/moulinette/src $ git pull -``` - -Puis lancer la commande de build du paquet (**attention : vous devez la lancer à la racine du répertoire du paquet**) - -```bash -[yunohost@yunohost] ~/packages.git/moulinette/src $ cd .. -[yunohost@yunohost] ~/packages.git/moulinette $ commit-and-build "Message de commit" -``` - ---- - -#### Paquets de configuration -Pour mettre à jour un paquet yunohost-config-* il faut se rendre dans le répertoire, faire les modifications voulues sur le paquet (typiquement modifier un script `debian/postinst`), puis lancer la même commande que pour les paquets avec source : - -```bash -[yunohost@yunohost] ~/packages.git/yunohost-config-nginx $ commit-and-build "Message de commit" -``` - -La commande de build va mettre à jour le fichier changelog Debian (`debian/changelog`) et lancer la création du paquet. Une fois le paquet créé il est automatiquement ajouté dans le dépôt `test`. - ---- - -#### Mettre à jour en production -Pour ajouter le paquet dans le dépôt de `megusta` (stable), il vous faudra exécuter la commande : - -```bash -[yunohost@yunohost] ~/packages.git/monpaquet $ commit-and-build "Message de commit" production -``` - -Une fois les modifications effectuées, vous pouvez exécuter `git push` pour envoyer les modifications sur GitHub. - -## Ajout manuel de paquets dans un dépôt -Il est possible d’ajouter directement des paquets Debian dans le dépôt, c’est le cas notamment pour les paquets nodejs. - -```bash -sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb nom_du_dépôt nom_du_paquet.deb -``` - -`nom_du_dépôt` peut être `test` ou `megusta`. - -## Supprimer un paquet d’un dépôt - -Il est possible de supprimer des paquets Debian dans un dépôt, par exemple pour vider l’ensemble des paquets du dépôt test. - -```bash -sudo reprepro -Vb /var/www/repo.yunohost.org/ includedeb nom_du_dépôt nom_du_paquet -``` - -## TODO -Modifier le script commit-build pour récupérer les messages de commit git et générer le changelog Debian avec la commande `git-dch`. - - - - diff --git a/build_system.md b/build_system.md deleted file mode 100644 index 4115e3b4..00000000 --- a/build_system.md +++ /dev/null @@ -1,195 +0,0 @@ -#Debian package creation - -## Architecture -The system contains `rebuildd`, a front-end for `pbuilder`, some chroot pbuilder for i386, amd64, armhf and `reprepro` for debian repository system. - ---- - -## Workflow - -There is 3 repositories (`unstable`, `testing` & `stable`): -* Packages from `unstable` (aka `daily`) are the latest version from git and are build automatically every night. - -* Packages from `testing` (aka `test`) allow to set up a new package version to be tested. - -* Packages from `stable` (aka `megusta`) contains only production versions. - -This workflow purpose is to avoid any manual interaction (script launch, ...) on your server and to focus on package management through Github only. - -Thus, each yunohost package has three branches, matching the three repositories (`unstable`, `testing` et `stable`). The build server will **automatically** build and deploy Debian source packages and binaries into the corresponding state on Github - -### Unstable branch -Commits to the unstable branch will not modify the `debian/changelog` file because it is automatically updated during daily builds with corresponding date and time. - -Any commit that will alter a package behaviour need to be done to the `unstable` branch first. - -**`TODO`** Add pre-commit hook to avoid errors ? - -### Testing et stable branch - standard workflow - -No commit can be done directly in those branches. You need to use merges (merge from `unstable` to `testing` & merge from `testing` to `stable`). - -The only specific changes that occur on the repositories are version changes (modification of `debian/changelog`, then tag). - -As a YunoHost application maintainer, you may find specific tools in the repository [yunohost-debhelper](https://github.com/YunoHost/yunohost-debhelper) -```bash -git clone https://github.com/YunoHost/yunohost-debhelper -yunohost-debhelper/setup_git_alias.sh -``` -The previous instructions will configure a new git alias named `yunobump`. It is global and located at `~/.gitconfig`, therefore accessible through any local git repository. - -
-**Cauttion:** this helper `yunobump` only works for Ubuntu or Debian Jessie for the moment. You **need** to install `git` and `git-buildpackage` packages in order to make this helper work properly. -
- -#### Without helper - -1. Go into the repository you wish to build -2. Make sure `unstable` branch contains all modifications you wish to apply -3. Get the current version number: `head debian/changelog` -4. Move to the `testing` or `stable` branch -5. Merge or cherry-pick commits you want to insert into the `unstable` branch -6. Add to `debian/changelog` the corresponding commits messages (or use `git-dch` to do it automatically) -7. Tag the current branch (`testing` or `stable`) with the next superior value for version number -8. Push modifications **and tags** into GitHub repository -9. Go back to `unstable` branch -10. Merge changelog -11. Push `unstable` branch - -#### With helper - -```bash -# You Only Clone Once -$ git clone git@github.com:YunoHost/yunohost.git -$ cd yunohost - -# Be sure to be up-to-date, and don't forget to get the tags ! -$ git fetch --tags - -# Checkout your branch: stable or testing -$ git checkout testing - -# Do your 'functional' modifications: either merge unstable in testing, or merge testing in stable -$ git pull origin unstable -# Or just -$ git merge unstable - -# What is the current version number in test? -$ dpkg-parsechangelog | grep "^Version" | cut -d ' ' -f 2 -# Or just -$ head debian/changelog - -# Update changelog and do a proper tag (explained below) -$ git yunobump x.y.z - -# Push the branch state AND the tags to the remote repository -$ git push origin --tags testing:testing - -# Merge changelog modifications to the `unstable` branch -$ git checkout unstable -$ git merge testing -$ git push origin unstable -``` - -**`TODO`** Tag format policy: actually $branch/$version to enable the same version into two different branches. Is it necessary? - -**`TODO`** Under normal circumstances, every push to test or stable, the last commit will result in a changelog commit properly tagged. It should be possible to set a pre-push git hook that prevents from pushing unfinished work - -#### Test and stable branches - hotfix - -Exceptionally, you may hotfix (for security purposes for example) `stable` or `test` packages, leading to a merge into daily branch which is not acceptable (too much new features in development). - -** This MUST remain exceptional ** - -**`TODO`** Describe - -**`TODO`** Develop a 'git yunohotfix ...' helper that commit into stable and cherry-pick right away into daily? or the opposite? - -#### Not YunoHost packages - -« not-YunoHost » packages (`python-bottle` for example) don't go through `unstable` repository. Once package tests are completed, they need to be manually transferred into `backport` repository. - ---- - -## Version number - -So far, YunoHost global base version is **2**. The current convention for the version number is **2.x.x**. - -The second section of the number string is incremented if a major functional change has occured: addition of a new functionality, modification of a behaviour. For now, all packages are versionned **2.1.x**. - -The third section of the number string is incremented if a bugfix or a minor functional change has occured. For example, you may currently find **2.1.3** or **2.1.5** packages - -A fourth section is dedicated for exceptional cases like bugfixes in stable branch. In this case, we want to pass on a unique change directly into stable branch, therefore we add **-x** to the number string. This may result into something like this: **2.1.3-1**. - ---- - -## Packages management - -#### Daily build - -A cron task defined for `pbuilder` user is executed **every day at 01:00**. The script will update the `packages` git repository and submodules (`ssowat`, `moulinette`, `yunohost` & `yunohost-admin`). -Once sources are up to date, the script will rebuild packages that have been updated the day. - -Sources packages will then need to be created and moved into `/var/www/repo.yunohost.org/daily/incomming` folder. - -Launch source file addition to the repository. This will automatically launch a `rebuildd` job (see daily repository configuration: `/var/www/repo.yunohost.org/daily/conf/distribustion`). - -Once packages are built, they are added to the `unstable` repository. - - -#### (Re)build a YunoHost package - -You may manualy launch a package build by typing: - -```bash -$ daily_build -p package_name -``` - -#### Build a not YunoHost package - -```bash -$ build_deb /path/of/package -``` - -**`TODO`** Describe : need to bump the version to pass from test to stable - -### Passing from `daily` to `test` - -```bash -$ push-packages-test -p package_name -``` -You may add the `-v` argument to manually define the package version. - -The script will get the `daily` sources package and define the version and changelist into the changelog. Build package will be added to the rebuildd jobs list that will pass everything to the `test` repository. - -**Attention :** Version name must not contain `daily` otherwise the package will be added to the `daily` repository. - - -### Passing from `test` to `stable` - -```bash -$ push-package-stable -p package_name -``` - -The previous command only passes the package from `test` to `stable` repository, without rebuild. - - -### Repository management with `reprepro` - -* Delete a package -```bash -$ reprepro -V -b /var/www/repo.yunohost.org/repo_name/ remove megusta package_name -``` - -* Add a Debian package into a repository -```bash -$ reprepro -V -b /var/www/repo.yunohost.org/repo_name/ includedeb megusta package_name.deb -``` - -### Backports management -Packages from backports repository can be quickly into Yunohost `test` repository. -To do so, you need to add the package name into the `/var/www/repo.yunohost.org/test/conf/list` file and type in the following command: -```bash -$ reprepro -V -b /var/www/repo.yunohost.org/test update megusta -``` -Now packages will be downloaded and added to `test` repository. diff --git a/build_system_fr.md b/build_system_fr.md deleted file mode 100644 index 46067fe9..00000000 --- a/build_system_fr.md +++ /dev/null @@ -1,258 +0,0 @@ -# Système de construction des paquets - -## Dépôts - -Tout d’abord, aussi bien au niveau des dépôts que des paquets YunoHost, il faut savoir qu’il y a trois *composants* (`unstable`, `testing` et `stable`) : - -* `unstable` correspondent à la dernière version du dépôt git sur la branche `unstable`, et sont reconstruits de façon automatisée toutes les nuits s’il y a eu une modification sur la cette branche. - -* `testing` permet de mettre en place une nouvelle version d’un paquet qui sera ensuite testée. - -* `stable` contient la version de production. - -Le terme *composant* vient de la façon dont les dépôts sont configurés. Afin de se rapprocher de la façon dont les dépôts sont structurés dans Debian, l’entrée à ajouter dans les sources APT se construit ainsi : - -```bash -deb http://repo.yunohost.org/debian/ nom_de_code composant [composant...] -``` - -Avec *nom_de_code* la « version » de Debian installée sur l’hôte (ex. : `jessie`). Pour les composants, il est nécessaire de spécifier au moins `stable`, puis les différents intermédiaires. Par exemple, sur un système sous Debian Jessie, voici les différentes possibilités : - -```bash -# composant stable -deb http://repo.yunohost.org/debian/ jessie stable -# composant testing -deb http://repo.yunohost.org/debian/ jessie stable testing -# composant unstable -deb http://repo.yunohost.org/debian/ jessie stable testing unstable -``` - -## Workflow - -Le but du workflow est d’éviter toute intervention manuelle (lancement d’un script, etc.) sur le serveur, et de maîtriser la gestion des paquets via GitHub uniquement. - -Ainsi, les dépôts de chaque paquet yunohost possèdent trois branches correspondant aux trois composants (`unstable`, `testing` et `stable`). Le serveur de build construit et déploie **automatiquement** les paquets sources et binaires Debian correspondant à l’état de ces trois branches sur GitHub. - -### Branche unstable - -Aucun commit dans la branche unstable ne modifie le fichier `debian/changelog` car celui-ci est modifié automatiquement lors du build quotidien, avec une version correspondant à la date/heure de construction. - -Tout commit modifiant fonctionnellement les paquets doit se faire d’abord dans cette branche `unstable`. - -**TODO** ajouter un pre-commit hook pour éviter les erreurs ? - -### Branche testing et stable - workflow standard - -Aucun commit fonctionnel n’est effectué directement dans ces branches. On ne fait que des merges (merge de `unstable` dans `testing` et merge de `testing` dans `stable`). - -Les seules modifications spécifiques à ces dépôts sont les changements de versions (modification de `debian/changelog`, puis tag). - -Des outils à destination des mainteneurs de paquets sont disponibles sur le dépôt [yunohost-debhelper](https://github.com/YunoHost/yunohost-debhelper) - -```bash -git clone https://github.com/YunoHost/yunohost-debhelper -yunohost-debhelper/setup_git_alias.sh -``` - -Ceci va configurer un nouvel alias git nommé `yunobump`, global (stocké dans `~/.gitconfig` et donc accessible depuis n’importe quel dépôt git local). - -
-**Attention :** pour le moment ce helper `yunobump` ne fonctionne que sous Ubuntu ou Debian Jessie. Vous **devez** installer les paquets `git` et `git-buildpackage` pour que le helper fonctionne correctement. -
- -#### Sans helper - -1. Rendez-vous dans le repo du paquet que vous voulez builder -2. Assurez-vous que la branche `unstable` contient toutes les modifications que vous voulez intégrer dans votre build -3. Récupérez le numéro de version actuel : `head debian/changelog` -4. Rendez-vous sur la branche `testing` ou `stable` -5. Mergez ou cherry-pickez les commits que vous voulez intégrer à la version depuis la branche `unstable` -6. Modifiez le `debian/changelog` en intégrant les messages de commits correspondant aux modifications que vous avez intégrées (ou utilisez `git-dch` pour le faire automatiquement) -7. Taguez la branche actuelle (`testing` ou `stable`) du numéro de version juste supérieur à l’actuel -8. Pushez vos modifications **ainsi que vos tags** sur le repo GitHub -9. Retournez sur la branche `unstable` -10. Mergez le changelog mis à jour précédemment -11. Pushez la branche `unstable` - -#### Avec helper - -```bash -# You Only Clone Once -$ git clone git@github.com:YunoHost/yunohost.git -$ cd yunohost - -# Be sure to be up-to-date, and don't forget to get the tags ! -$ git fetch --tags - -# Checkout your branch : stable or testing -$ git checkout testing - -# Do your 'functional' modifications: either merge unstable in testing, or merge testing in stable -$ git pull origin unstable -# Or just -$ git merge unstable - -# What is the current version number in test ? -$ dpkg-parsechangelog | grep "^Version" | cut -d ' ' -f 2 -# Or just -$ head debian/changelog - -# Update changelog and do a proper tag (explained below) -$ git yunobump x.y.z - -# Push the branch state AND the tags to the remote repository -$ git push origin --tags testing:testing - -# Merge changelog modifications to the `unstable` branch -$ git checkout unstable -$ git merge testing -$ git push origin unstable -``` - -**TODO** politique sur les formats de tag, actuellement $branch/$version pour autoriser la même version dans deux branches différentes. Est-ce vraiment souhaitable ? - -**TODO** normalement à chaque push sur test ou stable, le dernier commit est un commit de changelog et il est tagué proprement. On doit pouvoir implémenter un hook git de pre-push qui empêche de pousser des trucs à moitié faits (une erreur dans git yunobump, un git tag -d, un commit à la main...) - -#### Branche test et stable - faire un hotfix - -Il peut arriver, de façon exceptionnelle, qu’on ait besoin de faire un hotfix (de sécurité par exemple) sur les paquets en `stable` ou en `test`, pour lequel le merge de la branche daily n’est pas acceptable (car trop de nouvelles fonctionnalités en développement sur daily). -**Cette situation doit rester exceptionnelle** - -Pour faire un hotfix, il faut donc travailler sur la branche `stable` directement. Une fois la correction effectuée et commitée, il faut immédiatement créer la release stable avec l'outil yunobump (Voir les sections XX et "Numéros de version"). - -Ensuite, il faut appliquer ce hotfix aux branches `testing` et `unstable`. Il est fortement conseillé de l'appliquer immédiatement après avoir créer la release stable. -Pour cela, passer sur la branche `testing` et merger la branche `stable`; Un "commit de merge" doit etre réalisé. L'historique de la branche `testing` doit donc ressembler à : -```bash -456def Merge branch 'stable' into testing -123abc Hotfix commit message. -``` -Puis passer dans la branche `unstable` et merger la branche `testing`. Un nouveau commit de merge est réalisé, l'historique de la branche unstable ressemble donc à : -```bash -789ghi Merge branch 'testing' into unstable -456def Merge branch 'stable' into testing -123abc Hotfix commit message. -``` - -**TODO** dev un helper 'git yunohotfix...' qui commit dans stable et cherry-pick tout de suite dans daily ? ou l’inverse ? - -#### Publier une release testing ou stable - -Pour l'instant, on passe par une release via GitHub pour déclencher le build du paquet. - -Aller sur https://github.com/YunoHost/{moulinette, yunohost, yunohost-admin, ssowat}/releases/new - -1/ Choisir la branche cible en premier (testing ou stable). -Ex: "target: Testing" - -2/ Choisir le tag concerné, généralement le dernier -Ex: "debian/2.4.1" - -3/ Release title: "v2.4.1" ("v" + le numéro de version) - -4/ Commentaire -Reprendre le changelog depuis `debian/changelog`. Remercier les contributeurs/traducteurs -( Pour voir le dernier commit : `git show HEAD` ) - -#### Paquets non YunoHost - -Pour les paquets « non-YunoHost » (par exemple `rspamd`) le paquet ne passe pas par le composant `unstable`, mais uniquement `testing` et `stable` une fois les tests effectués sur ce paquet. - - -## Numéros de version - -La version d’un paquet YunoHost est sous la forme : ``X.x.y[.z]``. - -La première partie, ``X``, correspond à la version majeure de YunoHost, actuellement **2**. - -La deuxième partie, ``x``, s’incrémente lors d’un changement fonctionnel important : ajout d’une nouvelle fonctionnalité, modification d’une façon de fonctionner... Les chiffres pairs correspondent à une version ``stable`` (ex. : **2.4.x**), tandis que les chiffres impairs à une version ``testing``. - -La troisième partie, ``y``, s’incrémente quasi-arbitrairement, lors d’un lot de bugfixes ou d’un changement fonctionnel mineur. On peut trouver par exemple des paquets en **2.1.3** ou **2.1.5**. - -Enfin, une quatrième partie, ``z``, est réservée dans les cas exceptionnels de bugfix. Dans ce cas, on veut faire passer un changement unique, généralement directement dans la branche ``stable`` (voir la partie s’y rapportant). Cela donne, par exemple, **2.1.3.1**. - -Note : les paquets de YunoHost étant natif pour Debian (dans le sens où nous gérons directement le *packaging* Debian avec le paquet), il n’y a pas de révision Debian dans le numéro de version (caractérisé par **-debian_revision**). Pour plus de détails sur les numéros de version, voir le [Debian Policy Manual](https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version). - - -## Gestion des paquets - -### Outils et méthode - -#### Logiciels et scripts utilisés - -Les principaux logiciels utilisés pour la gestion et construction des paquets sont les suivants : - - * [reprepro](https://mirrorer.alioth.debian.org/) : gérer localement un dépôt de paquets Debian - * [rebuildd](https://julien.danjou.info/projects/rebuildd) : reconstruire des paquets Debian, avec un historique, une interface Web,... - -Pour plus de flexibilité, *rebuildd* délègue la construction du paquet à [pbuilder](https://pbuilder.alioth.debian.org/). Ce dernier permet notamment d’avoir différents environnements, architectures... - -Enfin, pour gérer au mieux ces outils, deux scripts ont été développés, stockés dans `/usr/local/bin` : - - * `daily_build` : construire un ou tous les paquets YunoHost dans le composant **unstable** uniquement - * `build_deb` : construire un paquet Debian depuis un répertoire, dans un composant et un nom de code donné - -À noter également que d’autres scripts ont été faits pour *rebuildd* et *reprepro*, afin notamment de faire le pont entre les deux. Ils se trouvent dans `/usr/local/bin/{rebuildd,reprepro}`. - -#### Déroulement de la construction d’un paquet - -Tout est déclenché par *reprepro*, configuré (voir `/var/www/repo/debian/conf/distribution`) pour exécuter le script `/usr/local/bin/repo/process-include` chaque fois qu’un paquet est inclus dans un dépôt (plus précisément, qu’un fichier `.changes` est inclus, via la commande `reprepro include`). Ce dernier va vérifier un certain nombre de choses, dont le fait qu’il s’agit bien d’un paquet source, puis va ajouter une nouvelle tâche pour *rebuildd*, afin que le paquet soit créé. - -Lorsque la tâche est reçue par *rebuildd*, si le paquet correspond bien à une distribution et architecture supportée (voir `/etc/rebuildd/rebuilddrc`), trois scripts seront exécutés les uns après les autres, si aucune erreur n’intervient : - -1. `/usr/local/bin/rebuildd/get-sources` : récupération des sources depuis le dépôt local pour le paquet et la version demandée -2. `/usr/local/bin/rebuildd/build-binaries` : construction du paquet via *pbuilder* et l’environnement correspondant à la distribution et l’architecture -3. `/usr/local/bin/rebuildd/upload-binaries` : ajout du paquet binaire précédemment créé à *reprepro* dans le bon dépôt et composant - -### Utilisation de daily\_build - -Un cron défini pour l’utilisateur `pbuilder` se lance **tous les jours à 01:00**, qui exécute le script `daily_build`. Pour chaque paquet (`ssowat`, `moulinette`, `yunohost` et `yunohost-admin`), le script met d’abord à jour le dépôt git correspondant depuis la branche *unstable*. Si de nouveaux commits ont été faits depuis la veille, une nouvelle version du paquet sera construite. - -Plus précisément, une nouvelle entrée dans le *changelog* sera d’abord ajoutée, avec une version sous la forme **YYYY.MM.DD+HHMM**. Un paquet source sera ensuite construit, avant de passer le relais au script `/usr/local/bin/repo/include-changes`. Ce dernier va exécuter les bonnes commandes pour *reprepro* afin d’inclure dans le bon dépôt et composant le paquet source fraîchement créé. - -#### (Re)build d’un paquet YunoHost - -Il est possible de relancer manuellement le build d’un paquet : - -```bash -$ daily_build -p -``` - -Il est aussi possible d’utiliser une branche autre que *unstable* : - -```bash -$ daily_build -p -b -``` - -*Notez bien que ce script permet uniquement de construire des paquets dans le composant **unstable** ! * - -### Utilisation de build\_deb - -Ce script permet de construire un paquet Debian quelconque, et de l’inclure dans un dépôt donné. Il est notamment utilisé pour construire les paquets `rspamd` et `rmilter`. Une fois le paquet source récupéré et extrait, il suffit de lancer la commande suivante : - -```bash -$ build_deb -c distribution -d /chemin/du/paquet/source -``` - -### Gestion du dépôt - -#### Lister les paquets - -```bash -$ reprepro -V -b /var/www/repo/debian -C list -``` - -#### Suppression d’un paquet - -```bash -$ reprepro -V -b /var/www/repo/debian -C remove nom_du_paquet -``` - -#### Gestion des backports - -Pour la gestion des paquets venant du dépôt backport, il est possible de les intégrer rapidement dans le dépôt de yunohost. - -Pour ce faire il faut ajouter le nom du paquet dans le fichier `/var/www/repo/debian/conf/-.list`, puis exécuter la commande : - -```bash -$ reprepro -V -b /var/www/repo/debian -C update -``` diff --git a/burn_or_copy_iso.md b/burn_or_copy_iso.md index 6e1c91b9..1c4f7007 100644 --- a/burn_or_copy_iso.md +++ b/burn_or_copy_iso.md @@ -1,21 +1,38 @@ -# Copy ISO image +# Flashing YunoHost ISO on a USB key or CD/DVD Now that you have the ISO image of YunoHost, you have to put it on a physical medium: **USB key** or **CD/DVD** - - + + --- ## USB key -Download UnetBootin for your operating system and install it. +### With Etcher +Download Etcher for your operating system and install it. + + + +Put your USB key on, select your YunoHost ISO and click "Flash" + +### With UNetbootin + +Download UNetbootin for your operating system and install it. Put your USB key on, select your YunoHost ISO and click "OK" +### With `dd` + +If you know your way around command line, you may also flash your USB key with +`dd`. Assuming your USB key is `/dev/sdb` (be careful !!), you may run : + +```bash +dd if=/path/to/yunohost.iso of=/dev/sdb +``` --- @@ -27,4 +44,4 @@ The software to use differs regarding your operating system. * On Mac OS, use [Disk Utility](http://support.apple.com/kb/ph7025) -* On GNU/Linux, you have plenty of choices, like [Brasero](https://wiki.gnome.org/Apps/Brasero) or [K3b](http://www.k3b.org/) \ No newline at end of file +* On GNU/Linux, you have plenty of choices, like [Brasero](https://wiki.gnome.org/Apps/Brasero) or [K3b](http://www.k3b.org/) diff --git a/burn_or_copy_iso_fr.md b/burn_or_copy_iso_fr.md index ab551e85..577c79aa 100644 --- a/burn_or_copy_iso_fr.md +++ b/burn_or_copy_iso_fr.md @@ -1,20 +1,39 @@ -# Copier l’image ISO +# Flasher l'ISO YunoHost sur une clef USB ou un CD/DVD -Maintenant que vous avez l’image ISO de YunoHost, vous devez la mettre sur un support physique : **Clé USB** ou **CD/DVD** +Maintenant que vous avez téléchargé l’image ISO de YunoHost, vous devez la mettre sur un support physique : une **Clé USB** ou un **CD/DVD**. - - + + --- ## Clé USB -Téléchargez la version d’UnetBootin pour votre système d’exploitation et installez-la. +### Avec Etcher + +Téléchargez Etcher pour votre système d'exploitation et installez-le. + + + +Branchez votre clef USB, selectionnez l'ISO YunoHost puis cliquez sur 'Flash' + +### Avec UNetbootin + +Téléchargez UNetbootin pour votre système d'exploitation et installez-le. -Insérez votre clé USB, sélectionnez l’image ISO YunoHost et cliquez sur **OK**. +Branchez votre clef USB, selectionnez l'ISO YunoHost puis cliquez sur 'OK' +### Avec `dd` + +Si vous êtes familier avec la ligne de commande, il est possible de flasher la +clef USB avec `dd`. En supposant que votre clef USB soit `/dev/sdb` (faites +attention !!), vous pouvez exécuter : + +```bash +dd if=/chemin/de/yunohost.iso of=/dev/sdb +``` --- diff --git a/certificate.md b/certificate.md index 244344d8..525c8957 100644 --- a/certificate.md +++ b/certificate.md @@ -1,121 +1,92 @@ -#Certificate +# Certificate -Certificates are used to certify that your server is the genuine one and not a falsified one. +Certificates are used to certify that your server is the genuine one, and not an attacker trying to impersonate it. -YunoHost provides a **self-signed** certificate, it means that your server guaranty the certificate validity. It's enough **for personal usage**, because you trust your own server. But this could be a problem if you want to open access to anonymous like web user for a website. -Concretely users will go throw a screen like this: +YunoHost provides a **self-signed** certificate, it means that your server guaranties the certificate validity. It's enough **for personal usage**, because you trust your own server. But this could be a problem if you want to open access to anonymous like web user for a website. + +In practice, visitors will see a screen list this: -This screen ask to the user : **"Do you trust this server that host this website?"** -It could afraid a lot of users (rightly). +Which basically asks the visitor : **"Do you trust the server hosting this website?"**. This can rightfully frighten a lot of people. -To avoid this confusion, it's possible to get a signed certificate by a "known" authority : **Gandi**, **RapidSSL**, **StartSSL**, **CaCert**. -In these cases, the point is to replace the self-signed certificate with the one that has been certified by a certificate authority, and the users won't have this warning screen anymore. +To avoid this confusion, it's possible to get a certificate signed a known +authority named **Let's Encrypt** which provide free certificates directly +recognized by browsers. YunoHost allows to directly install this certificate +from the web administration interface or from the command line. -### Add a signed certificate by an authority +### Install a Let's Encrypt certificate -Get your certificate from your CA, you must get a private key, file key and a public certificate (file .crt) -> Be carefull, the key file is very critical, it's strictly personal and have to be secured. +Before attempting to install a Let's Encrypt certificate, you should make sure +that your DNS is correctly configured (votre.domaine.tld should point to +your server's IP) and that your domain is accessible though HTTP from outside +your local network (i.e. at least port 80 should be forwarded to your server). -Copy this two files on the server, if not. +#### From the web administration interface + +Go to the 'Domain' part of the admin interface, then in the section dedicated to +your.domain.tld. You should find a 'SSL certificate' button : + +![](./images/domain-certificate-button.png) + +In the 'SSL certificate' section, you can see the status of the current +certificate. If you just added the domain, it should be a self-signed +certificate. + +![](./images/certificate-before-LE.png) + +If your domain is correctly configured, it is then possible to install the +Let's Encrypt certificate via the green button. + +![](./images/certificate-after-LE.png) + +Once the install is made, you can check that the certificate is live via your +browser by going to your domain in HTTPS. The certificate will automatically +be renewed every three months. + +![](./images/certificate-signed-by-LE.png) + +#### From the command line interface + +Connect to your server through SSH. + +You can check the status of your current certificate with : ```bash -scp CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt -scp CLE.key admin@DOMAIN.TLD:ssl.key +yunohost domain cert-status your.domain.tld ``` -From Windows, scp can be used with putty, download [pscp](http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe) +Install a Let's Encrypt certificate with ```bash -pscp -P 22 CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt -pscp -P 22 CLE.key admin@DOMAIN.TLD:ssl.key``` +yunohost domain cert-install your.domain.tld +``` -Now the files are in the server. Open a shell on the server use [ssh](https://yunohost.org/#/ssh_fr) or locally. - -First, create a directory for archive the certificates. +This should return : ```bash -sudo mkdir /etc/yunohost/certs/DOMAIN.TLD/ae_certs -sudo mv ssl.key ssl.crt /etc/yunohost/certs/DOMAIN.TLD/ae_certs/``` +Success! The SSOwat configuration has been generated +Success! Successfully installed Let's Encrypt certificate for domain DOMAIN.TLD! +``` -Then go to the parent directory and go on. +Once this is done, you can check that the certificate is live via your +browser by going to your domain in HTTPS. The certificate will automatically +be renewed every three months. + +##### Troubleshooting + +If due to some bad tweaking, your certificate ends up in a bad state (e.g. +lost the certificate or unable to read the files), you should be able to clean +the situation by regenerating a self-signed certificate : ```bash -cd /etc/yunohost/certs/DOMAIN.TLD/``` +yunohost domain cert-install your.domain.tld --self-signed --force +``` -Make a backup of the YunoHost original certificates , to be safe! +If YunoHost thinks that your domain is badly configured despite the fact that +you checked the DNS configuration and you have access in HTTP to your server +from outside your local network, then you can : -```bash -sudo mkdir yunohost_self_signed -sudo mv *.pem *.cnf yunohost_self_signed/``` - -Depends on the CA, intermediate certificates and root have to be downloaded. - -> **StartSSL** -> ```bash -> sudo wget http://www.startssl.com/certs/ca.pem -O ae_certs/ca.pem -> sudo wget http://www.startssl.com/certs/sub.class1.server.ca.pem -O ae_certs/intermediate_ca.pem``` - -> **Gandi** -> ```bash -> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA.pem -O ae_certs/intermediate_ca.pem``` - -> **RapidSSL** -> ```bash -> sudo wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt -O ae_certs/intermediate_ca.pem``` - -> **Cacert** -> ```bash -> sudo wget http://www.cacert.org/certs/root.crt -O ae_certs/ca.pem -> sudo wget http://www.cacert.org/certs/class3.crt -O ae_certs/intermediate_ca.pem``` - -Intermediate certificates and root must be merged with certificates obtained to create a unified chain certificates. - -```bash -cat ae_certs/ssl.crt ae_certs/intermediate_ca.pem ae_certs/ca.pem | sudo tee crt.pem``` - - -The private key have to be converted in PEM format. - -```bash -sudo openssl rsa -in ae_certs/ssl.key -out key.pem -outform PEM``` - -Check certificates syntaxe, check file contents. - -```bash -cat crt.pem key.pem``` - -Certificates and private key look like this : - -`-----BEGIN CERTIFICATE-----` -`MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV` -`BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC` -`MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy` -`MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx` -`FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE` -`ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv` -`LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12` -`kSbN/NWP0QUiPlksOkF2NkPfwW/mf55dD1hSndlOM/5kLbSBo5ieE3TgikF0Iktj` -`BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW` -`wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf` -`pqdYtfvmLnA7CiEuao60i/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3` -`kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP` -`9t/rrbdGzXXOCl3up99naL5XAzCIp6r5` -`-----END CERTIFICATE-----` - -At last, secure files of your certificate - -```bash -sudo chown root:metronome crt.pem key.pem -sudo chmod 640 crt.pem key.pem -sudo chown root:root -R ae_certs -sudo chmod 600 -R ae_certs``` - -Reload Nginx configuration to take into account the new certificate. - -```bash -sudo service nginx reload``` - -Your certificate is ready to serve. You can check that every thing is correct byan external service like geocerts +- add a line `127.0.0.1 your.domain.tld` to the file `/etc/hosts` on your server ; +- if the certificate installation still doesn't work, you can disable the checks with `--no-checks` after the `cert-install` command. diff --git a/certificate_custom_fr.md b/certificate_custom_fr.md new file mode 100644 index 00000000..86ebcd14 --- /dev/null +++ b/certificate_custom_fr.md @@ -0,0 +1,117 @@ +**Note :** depuis la version 2.5, Yunohost intègre la gestion automatisée de certificats Let's Encrypt. Vous pouvez donc facilement et gratuitement [installer un certificat Let's Encrypt](certificate_fr). Le document suivant décrit la méthodologie pour installer un certificat, payant, d'une autre autorité de certification (**Gandi**, **RapidSSL**, **StartSSL**, **Cacert**). + +### Ajout d’un certificat signé par une autorité (autre que Let's Encrypt) + +Après création du certificat auprès de votre autorité d’enregistrement, vous devez être en possession d’une clé privée, le fichier key et d’un certificat public, le fichier crt. +> Attention, le fichier key est très sensible, il est strictement personnel et doit être très bien sécurisé. + +Ces deux fichiers doivent être copiés sur le serveur, s’ils ne s’y trouvent pas déjà. +```bash +scp CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt +scp CLE.key admin@DOMAIN.TLD:ssl.key +``` + +Depuis Windows, scp est exploitable avec putty, en téléchargeant l’outil [pscp](http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe) + +```bash +pscp -P 22 CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt +pscp -P 22 CLE.key admin@DOMAIN.TLD:ssl.key +``` + +Dès lors que les fichiers sont sur le serveur, le reste du travail se fera sur celui-ci. En [ssh](https://yunohost.org/#/ssh_fr) ou en local. + +Tout d’abord, créez un dossier pour stocker les certificats obtenus. + +```bash +sudo mkdir /etc/yunohost/certs/DOMAIN.TLD/ae_certs +sudo mv ssl.key ssl.crt /etc/yunohost/certs/DOMAIN.TLD/ae_certs/ +``` + +Puis allez dans le dossier parent pour poursuivre. + +```bash +cd /etc/yunohost/certs/DOMAIN.TLD/ +``` + +Faites une sauvegarde des certificats d’origine de yunohost, par précaution. + +```bash +sudo mkdir yunohost_self_signed +sudo mv *.pem *.cnf yunohost_self_signed/ +``` + +En fonction de l’autorité d’enregistrement, des certificats intermédiaires et racines doivent être obtenus. + +> **StartSSL** +> ```bash +> sudo wget http://www.startssl.com/certs/ca.pem -O ae_certs/ca.pem +> sudo wget http://www.startssl.com/certs/sub.class1.server.ca.pem -O ae_certs/intermediate_ca.pem +>``` + +> **Gandi** +> ```bash +> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA2.pem -O ae_certs/intermediate_ca.pem +>``` + +> **RapidSSL** +> ```bash +> sudo wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt -O ae_certs/intermediate_ca.pem +>``` + +> **Cacert** +> ```bash +> sudo wget http://www.cacert.org/certs/root.crt -O ae_certs/ca.pem +> sudo wget http://www.cacert.org/certs/class3.crt -O ae_certs/intermediate_ca.pem +>``` + +Les certificats intermédiaires et root doivent être réunis avec le certificat obtenu pour créer une chaîne de certificats unifiés. + +```bash +cat ae_certs/ssl.crt ae_certs/intermediate_ca.pem ae_certs/ca.pem | sudo tee crt.pem +``` + +La clé privée doit être, elle, convertie au format pem. + +```bash +sudo openssl rsa -in ae_certs/ssl.key -out key.pem -outform PEM +``` + +Afin de s’assurer de la syntaxe des certificats, vérifiez le contenu des fichiers. + +```bash +cat crt.pem key.pem +``` + +Les certificats et la clé privée doivent ressembler à cela : + +`-----BEGIN CERTIFICATE-----`
+`MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV`
+`BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC`
+`MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy`
+`MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx`
+`FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE`
+`ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv`
+`LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12`
+`kSbN/NWP0QUiPlksOkF2NkPfwW/mf55dD1hSndlOM/5kLbSBo5ieE3TgikF0Iktj`
+`BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW`
+`wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf`
+`pqdYtfvmLnA7CiEuao60i/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3`
+`kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP`
+`9t/rrbdGzXXOCl3up99naL5XAzCIp6r5`
+`-----END CERTIFICATE-----` + +Enfin, sécurisez les fichiers de votre certificat. + +```bash +sudo chown root:metronome crt.pem key.pem +sudo chmod 640 crt.pem key.pem +sudo chown root:root -R ae_certs +sudo chmod 600 -R ae_certs +``` + +Rechargez la configuration de nginx pour prendre en compte le nouveau certificat. +```bash +sudo service nginx reload +``` + +Votre certificat est prêt à servir. Vous pouvez toutefois vous assurez de sa mise en place en testant le certificat à l’aide du service de geocerts. diff --git a/certificate_fr.md b/certificate_fr.md index 23b9a5ab..539ab082 100644 --- a/certificate_fr.md +++ b/certificate_fr.md @@ -2,121 +2,93 @@ Un certificat est utilisé pour garantir la confidentialité des échanges entre votre serveur et votre client. -YunoHost fournit par défaut un certificat **auto-signé**, ce qui veut dire que c’est votre serveur qui garantit la validité du certificat. C’est suffisant **pour un usage personnel**, car vous pouvez avoir confiance en votre serveur, en revanche cela posera problème si vous comptez ouvrir l’accès à votre serveur à des anonymes, par exemple pour héberger un site web. -En effet, les utilisateurs devront passer par un écran de ce type : +YunoHost fournit par défaut un certificat **auto-signé**, ce qui veut dire que c’est votre serveur qui garantit la validité du certificat. C’est suffisant **pour un usage personnel**, car vous pouvez avoir confiance en votre serveur, en revanche cela posera problème si vous comptez ouvrir l’accès à votre serveur à des anonymes, par exemple pour héberger un site web. +En effet, les utilisateurs devront passer par un écran de ce type : -Cet écran revient à demander **« Avez-vous confiance au serveur qui héberge ce site ? »**. +Cet écran revient à demander **« Avez-vous confiance au serveur qui héberge ce site ? »**. Cela peut effrayer vos utilisateurs (à juste titre). -Pour éviter cette confusion, il est possible d’obtenir un certificat signé par une autorité « connue » : **Gandi**, **RapidSSL**, **StartSSL**, **Cacert**. -Dans ce cas, il s’agira de remplacer le certificat auto-signé par celui qui a été reconnu par une autorité de certification, et vos utilisateurs n’auront plus à passer par cet écran d’avertissement. +Pour éviter cette confusion, il est possible d’obtenir un certificat, reconnu directement par les navigateurs, signé par une autorité « connue » : **Let's Encrypt**, **Gandi**, **RapidSSL**, **StartSSL**, **Cacert**. -### Ajout d’un certificat signé par une autorité +**Let's Encrypt** propose des certificats gratuits. Depuis la version 2.5, YunoHost permet d'installer directement un tel certificat depuis l'interface d'administration ou la ligne de commande. La suite du document détaille l'installation et la gestion d'un tel certificat. Vous pouvez également [installer un certificat d'une autre autorité que Let's Encrypt](/certificate_custom_fr). -Après création du certificat auprès de votre autorité d’enregistrement, vous devez être en possession d’une clé privée, le fichier key et d’un certificat public, le fichier crt. -> Attention, le fichier key est très sensible, il est strictement personnel et doit être très bien sécurisé. +### Installer un certificat Let's Encrypt -Ces deux fichiers doivent être copiés sur le serveur, s’ils ne s’y trouvent pas déjà. +Avant de chercher à installer un certificat Let's Encrypt, assurez vous que +votre DNS est correctement configuré (votre.domaine.tld doit pointer sur l'IP +de votre serveur) et que votre site est accessible en HTTP depuis l'extérieur +(i.e. qu'au moins le port 80 est correctement redirigé vers votre serveur). + +#### Via l'interface d'administration web + +Rendez-vous dans la partie 'Domaine' de l'interface d'administration, puis dans +la section dédiée à votre domaine. Vous trouverez un bouton 'Certificat SSL'. + +![](./images/domain-certificate-button-fr.png) + +Dans la section 'Certificat SSL', vous pourrez voir l'état actuel du certificat. +Si vous venez d'ajouter le domaine, il dispose d'un certificat auto-signé. + +![](./images/certificate-before-LE-fr.png) + +Si votre domaine est correctement configuré, il vous est alors possible de +passer à un certificat Let's Encrypt via le bouton vert. + +![](./images/certificate-after-LE-fr.png) + +Une fois l'installation effectuée, vous pouvez vous rendre sur votre domaine +via votre navigateur, en HTTPS, pour vérifier que votre certificat est bien +signé par Let's Encrypt. Le certificat sera renouvelé automatiquement tous les +trois mois environ. + +![](./images/certificate-signed-by-LE.png) + +#### Via la ligne de commande + +Connectez-vous sur votre serveur en SSH. + +Vous pouvez vérifier le statut actuel de votre certificat via ```bash -scp CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt -scp CLE.key admin@DOMAIN.TLD:ssl.key +yunohost domain cert-status votre.domaine.tld ``` -Depuis Windows, scp est exploitable avec putty, en téléchargeant l’outil [pscp](http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe) +Installez le certificat Let's Encrypt via ```bash -pscp -P 22 CERTIFICAT.crt admin@DOMAIN.TLD:ssl.crt -pscp -P 22 CLE.key admin@DOMAIN.TLD:ssl.key``` +yunohost domain cert-install votre.domaine.tld +``` -Dès lors que les fichiers sont sur le serveur, le reste du travail se fera sur celui-ci. En [ssh](https://yunohost.org/#/ssh_fr) ou en local. - -Tout d’abord, créez un dossier pour stocker les certificats obtenus. +Cette commande doit retourner : ```bash -sudo mkdir /etc/yunohost/certs/DOMAIN.TLD/ae_certs -sudo mv ssl.key ssl.crt /etc/yunohost/certs/DOMAIN.TLD/ae_certs/``` +Success! The SSOwat configuration has been generated +Success! Successfully installed Let's Encrypt certificate for domain DOMAIN.TLD! +``` -Puis allez dans le dossier parent pour poursuivre. +Une fois l'installation effectuée, vous pouvez vous rendre sur votre domaine +via votre navigateur, en HTTPS, pour vérifier que votre certificat est bien +signé par Let's Encrypt. Le certificat sera renouvelé automatiquement tous les +trois mois environ. + +##### En cas de problème + +Si suite à une mauvaise manipulation, un certificat se retrouve dans une +situation fâcheuse (e.g. perte du certificat ou impossible de lire le +certificat), il est possible de repartir sur des bases propres en regénérant un +certificat auto-signé : ```bash -cd /etc/yunohost/certs/DOMAIN.TLD/``` +yunohost domain cert-install votre.domaine.tld --self-signed --force +``` -Faites une sauvegarde des certificats d’origine de yunohost, par précaution. +Si YunoHost trouve que votre domaine est mal configuré quand bien même vous +avez bien vérifié votre configuration DNS et avez bien accès à votre serveur en +HTTP depuis l'extérieur, vous pouvez tenter : -```bash -sudo mkdir yunohost_self_signed -sudo mv *.pem *.cnf yunohost_self_signed/``` - -En fonction de l’autorité d’enregistrement, des certificats intermédiaires et racines doivent être obtenus. - -> **StartSSL** -> ```bash -> sudo wget http://www.startssl.com/certs/ca.pem -O ae_certs/ca.pem -> sudo wget http://www.startssl.com/certs/sub.class1.server.ca.pem -O ae_certs/intermediate_ca.pem``` - -> **Gandi** -> ```bash -> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA.pem -O ae_certs/intermediate_ca.pem``` -> Attention si votre certificat expire après le 01/01/2017, choisissez le certificat intermédiaire SHA2 suivant (à la place du certificat SHA1 précédent) -> ```bash -> sudo wget https://www.gandi.net/static/CAs/GandiStandardSSLCA2.pem -O ae_certs/intermediate_ca.pem``` - -> **RapidSSL** -> ```bash -> sudo wget https://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt -O ae_certs/intermediate_ca.pem``` - -> **Cacert** -> ```bash -> sudo wget http://www.cacert.org/certs/root.crt -O ae_certs/ca.pem -> sudo wget http://www.cacert.org/certs/class3.crt -O ae_certs/intermediate_ca.pem``` - -Les certificats intermédiaires et root doivent être réunis avec le certificat obtenu pour créer une chaîne de certificats unifiés. - -```bash -cat ae_certs/ssl.crt ae_certs/intermediate_ca.pem ae_certs/ca.pem | sudo tee crt.pem``` - -La clé privée doit être, elle, convertie au format pem. - -```bash -sudo openssl rsa -in ae_certs/ssl.key -out key.pem -outform PEM``` - -Afin de s’assurer de la syntaxe des certificats, vérifiez le contenu des fichiers. - -```bash -cat crt.pem key.pem``` - -Les certificats et la clé privée doivent ressembler à cela : - -`-----BEGIN CERTIFICATE-----` -`MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV` -`BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC` -`MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy` -`MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx` -`FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE` -`ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv` -`LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12` -`kSbN/NWP0QUiPlksOkF2NkPfwW/mf55dD1hSndlOM/5kLbSBo5ieE3TgikF0Iktj` -`BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW` -`wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf` -`pqdYtfvmLnA7CiEuao60i/pzVJE2LIXXXbwYjNAM+7Lov+dFT+b5FcOUGqLymSG3` -`kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP` -`9t/rrbdGzXXOCl3up99naL5XAzCIp6r5` -`-----END CERTIFICATE-----` - -Enfin, sécurisez les fichiers de votre certificat. - -```bash -sudo chown root:metronome crt.pem key.pem -sudo chmod 640 crt.pem key.pem -sudo chown root:root -R ae_certs -sudo chmod 600 -R ae_certs``` - -Rechargez la configuration de nginx pour prendre en compte le nouveau certificat. -```bash -sudo service nginx reload``` +- d'ajouter une ligne `127.0.0.1 votre.domaine.tld` au fichier `/etc/hosts` sur votre serveur ; +- si l'installation ne fonctionne toujours pas, désactiver les vérifications en ajoutant `--no-checks` à la commande `cert-install`. -Votre certificat est prêt à servir. Vous pouvez toutefois vous assurez de sa mise en place en testant le certificat à l’aide du service de geocerts. diff --git a/certmanager.md b/certmanager.md index 99872bb3..70ce239f 100644 --- a/certmanager.md +++ b/certmanager.md @@ -15,7 +15,7 @@ command line with `yunohost domain cert-status`, `cert-install` and Your server needs to be reachable from the rest of Internet on port 80 (and 443), and make your `domain.tld` points to your server's public IP in your DNS -configuration. See [this documentation](hdiagnostic) if you need help. +configuration. See [this documentation](diagnostic_en) if you need help. #### Will my certificate be automatically be renewed ? diff --git a/certmanager_fr.md b/certmanager_fr.md index 7b38c0ef..80273647 100644 --- a/certmanager_fr.md +++ b/certmanager_fr.md @@ -127,7 +127,7 @@ deux choses : - la confidentialité, ce qui veut dire qu'un attaquant ne sera pas capable de déchiffrer le contenu d'une communication si elle est interceptée ; - l'identification du serveur, ce qui veut dire qu'un serveur peut et doit prouver qui il prétend être, dans le but d'éviter les [attaques man-in-the-middle](https://en.wikipedia.org/wiki/Man-in-the-middle_attack). -Les certificats SSL sont utilisés par les serveurs pour prouver leur identitié. +Les certificats SSL sont utilisés par les serveurs pour prouver leur identité. Le processus général repose sur la confiance en des tiers, appelés Autorité de Certification (CA), dont le rôle est de vérifier l'identité d'un serveur (par ex. qu'une machine donnée contrôle bien le domaine `jaimelecafe.com`) avant diff --git a/change_admin_password_fr.md b/change_admin_password_fr.md index 56cd7c95..3554ba80 100644 --- a/change_admin_password_fr.md +++ b/change_admin_password_fr.md @@ -18,3 +18,9 @@ Puis allez dans la section `Outils` > `Changer le mot de passe d’administratio ```bash yunohost tools adminpw ``` + +Si vous avez oublié votre mot de passe, utilisez plutôt: + +```bash +yunohost-reset-ldap-password +``` diff --git a/changelog_2_0.md b/changelog_2_0.md deleted file mode 100644 index 951f07dd..00000000 --- a/changelog_2_0.md +++ /dev/null @@ -1,27 +0,0 @@ -# Changelog 2.0 - -2.0 2.2 Roadmap - -## v2.0 12 june 2014 -* ✔ Add sexiness and a menu to YunoHost.org frontpage *(kload)* -* ✔ **DOCUMENTATIONNNNNNN** *(everyone <3)* - ---- - -## v2.0 RC - -* ✔ Email forward configuration *(kload, beudbeud)* -* ✔ Make pending official apps *(Ju)* -* ✔ SFTP *(kload)* -* ✔ Fix DNS zone *(kload)* -* ✔ SSOwat stuffs (presistent rules, public root website) *(ezpen)* -* ✔ Email configuration tests *(beudbeud)* -* ✔ Test and upgrade official apps like Owncloud, Roundcube and Radicale *(app maintainers)* -* ✔ Upgrade function + view *(beudbeud, opi)* -* ✔ uPnP rework *(kload, titoko)* -* ✔ Add warning in a sample backup view *(opi)* -* ✔ User interface design *(Courgette, opi)* -* ✔ Moulinette/API refactoring *(jerome)* -* ✔ Security check and complete patterns -* ✔ Internationalization I18n *(opi, jerome)* -* ✔ Lack of hairpinning hack *(kload)* \ No newline at end of file diff --git a/changelog_2_2.md b/changelog_2_2.md deleted file mode 100644 index aad69cf1..00000000 --- a/changelog_2_2.md +++ /dev/null @@ -1,38 +0,0 @@ -# Changelog 2.2 - -2.0 2.2 Roadmap - -## v2.2 12 may 2015 -Core: -* ✔ Migrate YunoHost to Debian Jessie -* ✔ Update Metronome to v3.6 and make a more Debian-friendly package *(jerome)* -* ✔ Update of Nginx, Postfix and Dovecot regarding the late Poodle attack -* ✔ Migrate Bind9 to Dnsmasq *(kload)* -* ✔ Add email quota *(beudbeud, jerome)* -* ✔ Implement a simple backup and restore system *(jerome, kload)* -* ✔ Add logging to the moulinette for each action *(jerome)* -* ✔ Review the app manifest format and integrate it *(app maintainers, jerome, opi)* -* ✔ Fix a security bug in SSOwat *(kload)* - -Web administration: -* ✔ Install unofficial apps *(opi)* -* ✔ Add firewall *(opi)* -* ✔ Warn admin about security updates *(opi)* -* ✔ Fix websocket issue for Raspberry Pi *(jerome, kload)* - -Apps: -* ✔ 21 official apps and 88 unofficial apps *(app maintainers)* -* ✔ Migrate to Baikal and deprecate Radicale *(ju)* -* ✔ Add Shell in a box and remove GateOne from official apps *(kload)* -* ✔ OpenVPN configuration page and access control *(kload)* -* ✔ Add a download files button on Transmission interface *(opi)* - -Installs: -* ✔ Create an image for La Brique Internet on Olimex *(kload)* -* ✔ Create an image for Raspberry Pi 1 and 2 *(matlink)* -* ✔ Create an image for Cubieboard 2 *(Moul)* -* ✔ Update Docker image *(kload)* - -Others: -* ✔ Install and switch to a new build system on a new server *(beudbeud)* -* ✔ Improve documentation, to make YunoHost more accessible *(Moul)* \ No newline at end of file diff --git a/chat_rooms.md b/chat_rooms.md index bae801ed..d77f62e9 100644 --- a/chat_rooms.md +++ b/chat_rooms.md @@ -2,23 +2,33 @@ Amoung other communication tools, YunoHost project use chat rooms to communicate. -This instant messaging chat rooms, which uses [XMPP protocol](XMPP_en), are hosted on our XMPP server. +You could join those chat rooms using : +- an [IRC Client](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) for example [kiwiirc](https://kiwiirc.com/client/irc.freenode.net/yunohost) +- an [XMPP client](https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients) +- a [Matrix client](https://matrix.org/docs/guides/faq.html#what-clients-are-available%3F) -You could join this chat rooms with an [XMPP client](https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients#XMPP-related_features). -### Chat rooms -#### Mutual aid -[Mutual aid](support_en) chat room is here to allow YunoHost's users to help each other. +#### Help and support chatroom -- A [web client](https://chat.yunohost.org) is here to easily join _mutual aid_ chat room. -- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)** +There is a [support](support_fr) chatroom for YunoHost users mutual support and help. -#### Development -YunoHost core development chat room. Currently, the main chat room for contributions on YunoHost project. -For help, thanks to do it on `support` chat room. -- **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)** +- IRC: **#yunohost** on irc.freenode.net ; +- Matrix: **#freenode_#yunohost:matrix.org** ; +- XMPP: **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)** -#### Applications +#### Development chatroom + +YunoHost core development chat room : +- IRC: **#yunohost-dev** on irc.freenode.net ; +- Matrix: **#freenode_#yunohost-dev:matrix.org** ; +- XMPP: **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)** + +Currently, the main chat room for contributions on YunoHost project. +For help, please see **#yunohost** chat room above. + +#### Applications chatroom Application packaging development chat room. It allow packagers to help each other. -It also allow to discuss packaging evolution, continuous integration tools. -- **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)** +It also allow to discuss packaging evolution, continuous integration tools : +- IRC: **#yunohost-apps** on irc.freenode.net +- Matrix: **#freenode_#yunohost-apps:matrix.org** +- XMPP: **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)** diff --git a/chat_rooms_fr.md b/chat_rooms_fr.md index b7eaac70..5bcc631a 100644 --- a/chat_rooms_fr.md +++ b/chat_rooms_fr.md @@ -1,24 +1,31 @@ ## Salons de discussions -Parmi d’autres outils de communications, le projet YunoHost se sert de salons de discussions pour communiquer. +Parmi d’autres outils, le projet YunoHost se sert de salons de discussions pour communiquer. -Ces salons de messagerie instantanées, qui utilisent le [protocole XMPP](XMPP_fr), sont hébergés sur notre serveur XMPP. +Vous pouvez rejoindre ces salons avec: +- un [Client IRC](https://fr.wikipedia.org/wiki/Liste_de_clients_IRC) +- un [Client XMPP](https://fr.wikipedia.org/wiki/Clients_XMPP) +- un [Client Matrix](https://linuxfr.org/news/matrix-pour-decentraliser-skype-whatsapp-signal-slack-et-discord) -Vous pouvez rejoindre ces salons avec un [client XMPP](https://fr.wikipedia.org/wiki/Liste_de_clients_XMPP). -### Salons -#### Entraide -Salon d’[entraide](support_fr) est là pour permettre aux utilisateurs de YunoHost de s’entraider. - -- Un [client web](https://chat.yunohost.org) est à votre disposition pour rejoindre facilement le salon d’entraide. -- **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)** +#### Salon d'entraide et de support +Le salon d’[entraide](support_fr) est là pour permettre aux utilisateurs de YunoHost de s'aider mutuellement. +- IRC : **#yunohost** sur irc.freenode.net (voir kiwiirc ci-dessus) +- Matrix : **#freenode_#yunohost:matrix.org** +- XMPP : **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)** #### Développement -Salon de développement du cœur de YunoHost. Actuellement utilisé comme salon principal pour les contributions autour du projet. -Pour de l’aide, merci de le faire sur le salon d’entraide. -- **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)** +Salon de développement du cœur de YunoHost: +- IRC : **#yunohost-dev** sur irc.freenode.net +- Matrix : **#freenode_#yunohost-dev:matrix.org** +- XMP : **[dev@conference.yunohost.org](xmpp:dev@conference.yunohost.org?join)** + +C'est le salon principal pour les contributions autour du projet. +Pour chercher de l’aide, merci d'aller sur le salon d’entraide ci-dessus. #### Applications Salon de développement du packaging d’application. Il permet aux packageurs de s’entraider. Il sert également à discuter de l’évolution du packaging, des outils d’intégration continue sur les applications. -- **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)** +- IRC : **#yunohost-apps** sur irc.freenode.net +- Matrix : **#freenode_#yunohost-apps:matrix.org** +- XMPP : **[apps@conference.yunohost.org](xmpp:apps@conference.yunohost.org?join)** diff --git a/check_logfile_fr.md b/check_logfile_fr.md deleted file mode 100644 index b42ded0f..00000000 --- a/check_logfile_fr.md +++ /dev/null @@ -1,45 +0,0 @@ -## Consulter les fichiers de log du système - -### Accéder à un fichier de log -#### Via l’interface d’administration -[Administration web](admin_fr) - -#### En ligne de commande -Un fichier de log est un simple fichier texte utilisé par certains programmes du système (et notamment les services) pour inscrire l’historique de leur fonctionnement. Consulter un fichier de log consiste donc à afficher son contenu pour lire les messages qui s’y trouvent. - -Pour accéder aux fichiers de log, la méthode traditionnelle consiste à [se connecter au serveur en ligne de commande via SSH](ssh_fr). Une fois connecté, utilisez la commande `tail` qui affiche uniquement la fin du fichier, car les fichiers de log sont très longs et qu’uniquement l’historique récent nous intéresse. - -### Services -#### Courriel -* Postfix -* Dovecot -* mail.log -* amavis - -#### Serveur web -* Nginx -* php5-fpm - -#### Serveur XMPP metronome -* Metronome - -#### Surveillance du serveur -* Glances - -#### Bases de données -* MySQL -* Postgrey - -#### SSH - -#### yunohost-api - -#### Torrents -* transmission-daemon - -#### LDAP -* slapdStatut - -#### DNS -* Dnsmasq -* Bind9 \ No newline at end of file diff --git a/collabora_fr.md b/collabora_fr.md new file mode 100644 index 00000000..610e169b --- /dev/null +++ b/collabora_fr.md @@ -0,0 +1,26 @@ +# Installer Collabora avec Nextcloud + +**Note :** la marche à suivre detaillée et realisée ici à partir d’une instance Yunohost sur Debian 8 (celle-ci n'a pas été testée suite a la migration sur la version 3 de Yunohost) et celle-ci part du principe que les domaines/sous-domaines sont correctement configurés au niveau des DNS et de votre instance Yunohost (voir [DNS](/dns_fr) , [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr) ,[Configurer les enregistrements DNS](/dns_config_fr) et [Nom de domaine en noho.st / nohost.me](/dns_nohost_me_fr) ) + +### Installer Nextcloud + +Si Nexcloud n'est pas déja installée sur votre instance Yunohost, vous pouvez l’installer depuis le lien suivant : + +[Installer nextcloud](https://install-app.yunohost.org/?app=nextcloud) + + +### Installer l'application Collabora dans yunohost +**dans l'interface d'Administration :** + Applications > Installer > En bas de la page _Installer une application personnalisée_ > Renseigner l’url « https://github.com/aymhce/collaboradocker_ynh » > Définir le nom de domaine secondaire/sous-domaine dédié à l'application Collabora . + + +### Configuration dans nextcloud + + **Ajouter l'application Collabora Online à Nextcloud :** + + Cliquer sur l'icone de l'utilisateur en haut à droite > Applications > Bureautique & texte > Sous « Collabora Online » cliquer sur Activer + +**Configurer Collabora sur Nextcloud :** + + Cliquer sur l'icone de l'utilisateur en haut à droite > Paramètres > Sous _Administration_, _Collabora en ligne_ + Renseigner le « Serveur Collabora en ligne » par le nom de domaine choisi lors de l’installation de collabora dans yunohost (précédé de « https:// »). diff --git a/moulinette.md b/commandline.md similarity index 96% rename from moulinette.md rename to commandline.md index f1a379d7..7e677489 100644 --- a/moulinette.md +++ b/commandline.md @@ -143,5 +143,11 @@ yunohost tools [-h] {postinstall,maindomain,ldapinit,adminpw} ... postinstall YunoHost post-install maindomain Main domain change tool ldapinit YunoHost LDAP initialization - adminpw Change admin password + adminpw Change admin password # Existing password required. See workaround below. ``` + + +### admin +```bash +yunohost-reset-ldap-password Reset the admin account (Web GUI) password +``` \ No newline at end of file diff --git a/moulinette_fr.md b/commandline_fr.md similarity index 100% rename from moulinette_fr.md rename to commandline_fr.md diff --git a/communication.md b/communication.md index bd15befb..dcf9c190 100644 --- a/communication.md +++ b/communication.md @@ -1,5 +1,33 @@ # Communication + +## Talks / conf + +* (FR) [Capitole du libre 2017 - YunoHost : vers l'auto-hébergement et au-delà - JimboJoe](https://2017.capitoledulibre.org/programme/#yunohost-vers-lauto-hebergement-et-au-dela) ([slides](https://github.com/YunoHost/yunohost-cdl-2017/raw/master/YunoHost-CDL2017.pdf)) +* (FR) [PSES 2017 – Construire l’Internet du Futur avec YunoHost – Aleks, ljf](https://data.passageenseine.org/2017/aleks-ljf_internet-futur-yunohost.webm) ([slides](https://data.passageenseine.org/2017/aleks-ljf_internet-futur-yunohost.pdf)) +* (FR) [Université de technologie de compiègne 2017 – Agir pour un internet éthique – LJF](http://webtv.utc.fr/watch_video.php?v=O34AA7RBR1AH) +* (EN) [FOSDEM 2017 – Internet Cube – kload](https://archive.fosdem.org/2017/schedule/event/internet_cube/) +* (EN) [FOSDEM 2017 – YunoHost – Bram](https://archive.fosdem.org/2017/schedule/event/yunohost/) +* (FR) [Capitole du libre 2016 – 1 an et ½ de Brique Internet – Bram](http://videos2016.capitoledulibre.org/communaute-du-libre/bram-1-an-et-demi-de-brique-internet.mp4) +* (FR) [PSES 2015 - La Brique Internet](http://www.youtube.com/watch?v=NCRn0yRfkIE) +* (FR) [THSF 2015 – beudbeud](https://vimeo.com/128055751) +* (FR) [RMLL 2014 - Hébergez-vous ! – kload & beudbeud]() +* (FR) [Capitole du libre 2013 - L’auto-hébergement pour tous avec YunoHost - beudbeud](http://2013.capitoledulibre.org/conferences/internet-libre/lauto-hebergement-pour-tous-avec-yunohost.html) +* (EN) [FOSDEM 2013 — kload](https://www.youtube.com/watch?v=siN1OLAgGJk) + +## Articles / Press review + - -* LinuxFr (french): [YunoHost 2.0 : self hosting at click range](https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic) -* Twitter [@yunohost](https://twitter.com/yunohost) [#yunohost](https://twitter.com/hashtag/yunohost?src=hash) \ No newline at end of file + + + +* LinuxFr (french): + - [YunoHost 2.0 : self hosting at click range](https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic) + - [Internet cube and YunoHost projects evolutions](https://linuxfr.org/news/evolutions-des-projets-la-brique-internet-et-yunohost-des-versions-2-2-2-4-et-2-5) +- [Linux Pratique n°96 – YunoHost, l’auto-hébergement à portée de main – juillet 2016](http://connect.ed-diamond.com/Linux-Pratique/LP-096/YunoHost-l-auto-hebergement-a-portee-de-main) +- [Linux Magazine n°208 – YunoHost, Personal server for a private cloud – Mars 2018](http://www.linux-magazine.com/Issues/2018/208/YunoHost) + +## YunoHost was cited in : + +* [EXPERIMENTA 2018](https://livestream.com/accounts/26482307/events/8034656/player?width=960&height=540&enableInfoAndActivity=true&defaultDrawer=&autoPlay=true&mute=false) at 57.47 (depuis https://www.experimenta.fr/direct/) +* [Capitole du libre 2017 - « Contributopia », Dégoogliser ne suffit pas](https://www.youtube.com/watch?v=ip6_VMkWpr8&feature=youtu.be&t=4793) +* [Contributopia - Essaimage (Framasoft)](https://contributopia.org/fr/essaimage/) diff --git a/communication_fr.md b/communication_fr.md deleted file mode 100644 index 7f3ab921..00000000 --- a/communication_fr.md +++ /dev/null @@ -1,9 +0,0 @@ -# Communication - - - -* LinuxFr : - - [YunoHost 2.0 : l’auto-hébergement à portée de clic](https://linuxfr.org/news/yunohost-2-0-l-auto-hebergement-a-portee-de-clic) - - [Évolutions des projets La Brique Internet et YunoHost des versions 2.2, 2.4 et 2.5](https://linuxfr.org/news/evolutions-des-projets-la-brique-internet-et-yunohost-des-versions-2-2-2-4-et-2-5) -* Twitter [@yunohost](https://twitter.com/yunohost) [#yunohost](https://twitter.com/hashtag/yunohost?src=hash) -- [Linux Pratique n°96 – YunoHost, l’auto-hébergement à portée de main – juillet 2016](http://connect.ed-diamond.com/Linux-Pratique/LP-096/YunoHost-l-auto-hebergement-a-portee-de-main) diff --git a/conf_fr.md b/conf_fr.md deleted file mode 100644 index 5683a2c2..00000000 --- a/conf_fr.md +++ /dev/null @@ -1,10 +0,0 @@ -# Conférences - -- [Université de technologie de compiègne 2017 – Agir pour un internet éthique – LJF](http://webtv.utc.fr/watch_video.php?v=O34AA7RBR1AH) -- [FOSDEM 2017 – YunoHost/Internet Cube – Bram/kload](https://video.fosdem.org/2017/AW1.125/) -- [Capitole du libre 2016 – 1 an et ½ de Brique Internet – Bram](http://videos2016.capitoledulibre.org/communaute-du-libre/bram-1-an-et-demi-de-brique-internet.mp4) -* [PSES 2015 - La Brique Internet](http://www.youtube.com/watch?v=NCRn0yRfkIE) -* [THSF 2015 – beudbeud](https://vimeo.com/128055751) -* [RMLL 2014 - Hébergez-vous ! – kload & beudbeud]() -* [Capitole du libre 2013 - L’auto-hébergement pour tous avec YunoHost - beudbeud](http://2013.capitoledulibre.org/conferences/internet-libre/lauto-hebergement-pour-tous-avec-yunohost.html) -* [FOSDEM 2013 — kload](https://www.youtube.com/watch?v=siN1OLAgGJk) diff --git a/contribute.md b/contribute.md index f09aaab3..bfedea13 100644 --- a/contribute.md +++ b/contribute.md @@ -22,7 +22,7 @@ Talk about software freedom, [self-hosting](selfhosting_en) and YunoHost to your    Testing
-We need people able to test YunoHost deeply. If you find a bug, try to identify it, and report it on our bug tracker. +We need people able to test YunoHost deeply. If you find a bug, try to identify it, and report it on our bug tracker.
@@ -33,7 +33,7 @@ We need people able to test YunoHost deeply. If you find a bug, try to identify    Helping users
-Our support relies on contributors like you. Just come to [the XMPP chatroom](/support) and help new users getting started, or pick a question on the Forum. +Our support relies on contributors like you. Just come to [the support chatroom](/help) and help new users getting started, or pick a question on the Forum.
@@ -88,53 +88,8 @@ A mailing-list< - - - ---

In any case, please [come to dev chatroom](xmpp:dev@conference.yunohost.org?join) to contribute :-)

- - diff --git a/contribute_ar.md b/contribute_ar.md new file mode 100644 index 00000000..499d5e56 --- /dev/null +++ b/contribute_ar.md @@ -0,0 +1,92 @@ +#
المساهمة
+ +

+إنّ مصير واي يونوهوست YunoHost يُقرّره أناس و أنتم مِن بين هؤلاء +

+ +--- + +
+
+   تحدثوا عن المشروع مِن حولكم +
+
+تحدثوا عن البرمجيات الحرّة، تحدثوا عن واي يونوهوست YunoHost مع أقربائكم و زملائكم في العمل. حدّثوهم عن [الإستضافة الذاتية](/selfhosting_fr)، نحن بحاجة و واثقون مِن قدرات محبي البيانات مثلكم 3>
+
+ +--- + +
+ +--- + +
+
+   ساعدوا المستخدمِين +
+
+Notre support est communautaire et s’appuie sur des contributeurs comme vous. Venez simplement sur le [salon d'aide](/help_fr), ou tentez de répondre aux questions du Forum. Vous pouvez aussi organiser des ateliers de formation. +
+
+ +--- + +
+
+   أكتبوا الشفرة +
+
+Vous pouvez vous impliquer dans le développement de YunoHost peu importe votre niveau. Administrateurs système, développeurs web, designers et pythonistes sont les bienvenus.
+Découvrez [comment contribuer](/dev_fr), et rejoignez-nous sur le [salon de discussion](xmpp:dev@conference.yunohost.org?join) et la mailing-list ! +
+
+ +--- + +
+
+   ترجِموا +
+
+ساهموا في توفير واجهات واي يونوهوست YunoHost بلغتكم. إبدأوا الآن ! +
+
+ +--- + +
+
+   أكتبوا +
+
+ساهموا في تحسين هذا الدليل و ذلك [باقتراح صفحات جديدة](/write_documentation_fr) أو بترجمة صفحاته إلى لغتكم. +
+
+ +--- + +
+
+   ساهموا في التحزيم +
+
+Étendez les capacités de YunoHost en [packageant de nouveaux services et applications web](/packaging_apps_fr). Jetez un œil à [ce qui a déjà été fait](/apps_fr) ! +
+Un [salon de développement](xmpp:dev@conference.yunohost.org?join) et une mailing-list est également disponible. +
+
+ +--- + +
+
+

على أي حال تعالوا و انضموا إلى [غرفة المحادثة الخاصة بالمطوّرين](xmpp:dev@conference.yunohost.org?join) إن كنتم ترغبون في المساهمة :-)

+ diff --git a/contribute_fr.md b/contribute_fr.md index 28403815..4bffa7b4 100644 --- a/contribute_fr.md +++ b/contribute_fr.md @@ -22,7 +22,7 @@ Parlez de logiciel libre, d’[auto-hébergement](/selfhosting_fr), de YunoHost    Testez
-Nous avons besoin de tester YunoHost profondément. Si vous trouvez un bug, essayez de l’identifier, puis reportez-le sur notre bug tracker. +Nous avons besoin de tester YunoHost profondément. Si vous trouvez un bug, essayez de l’identifier, puis reportez-le sur notre bug tracker.
@@ -33,7 +33,7 @@ Nous avons besoin de tester YunoHost profondément. Si vous trouvez un bug, essa    Aidez les utilisateurs
-Notre support est communautaire et s’appuie sur des contributeurs comme vous. Venez simplement sur le [salon de discussion XMPP](/support_fr), ou tentez de répondre aux questions du Forum. Vous pouvez aussi organiser des ateliers de formation. +Notre support est communautaire et s’appuie sur des contributeurs comme vous. Venez simplement sur le [salon d'aide](/help_fr), ou tentez de répondre aux questions du Forum. Vous pouvez aussi organiser des ateliers de formation.
@@ -86,51 +86,7 @@ Un [salon de développement](xmpp:dev@conference.yunohost.org?join) et une -
-   Seedez -
-
-Seedez (partagez) avec le système de Torrent les images de YunoHost : [live](http://build.yunohost.org/yunohost-live.iso.torrent), [32 bits](http://build.yunohost.org/yunohostv2-latest-i386.iso.torrent) et [64 bits](http://build.yunohost.org/yunohostv2-latest-amd64.iso.torrent). -
- - ---- - ---> -

Dans tous les cas, venez sur le [salon de développement](xmpp:dev@conference.yunohost.org?join) pour contribuer :-)

- - diff --git a/contributordoc.md b/contributordoc.md index 3e01d50b..1dd5b2b1 100644 --- a/contributordoc.md +++ b/contributordoc.md @@ -1,12 +1,32 @@ # Contributor documentation -* [How to contribute](/contribute) -* [What is YunoHost](/whatsyunohost) - * Developement - * [Roadmap](/roadmap) - * [List of available applications](/apps) - * [Package new applications](/packaging_apps) - * [Develop on Docker](/docker) - * Documentation - * [Account creation to edit documentation](/accounting) - * [Write documentation](/write_documentation) +* [General ways of contributing to YunoHost](/contribute) +* [Writing documentation](/write_documentation) +* Application packaging + * [Apps wishlist](/apps_wishlist) + * [General introduction to app packaging](/packaging_apps_start) + * [Technical introduction to app packaging](/packaging_apps) + * [Setting up a dev environment with VirtualBox](packaging_apps_virtualbox_fr) + * [Manifest](packaging_apps_manifest) + * [Scripts](packaging_apps_scripts) + * [Arguments management](packaging_apps_arguments_management) + * [Nginx configuration](packaging_apps_nginx_conf) + * [Multi-instance](packaging_apps_multiinstance) + * [Helpers](packaging_apps_helpers) + * [Trap usage](packaging_apps_trap_fr) + * [Adding your app to the community list](https://github.com/YunoHost/Apps/#contributing) + * Quality tests + * [Package linter](https://github.com/YunoHost/package_linter) + * [Package check](https://github.com/YunoHost/package_check) + * [Applications levels](packaging_apps_levels_fr) + * [App Continuous Integration](https://ci-apps.yunohost.org/jenkins/) + * [App CI dashboard](https://dash.yunohost.org/appci/branch/stable) + * [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr) +* [Contributing to the YunoHost core](/dev) + * [Setting up a dev environment with ynh-dev](https://github.com/YunoHost/ynh-dev/blob/master/README.md) + * [Deb build chain](https://github.com/YunoHost/vinaigrette/blob/master/README.md) + * Image building + * [x86 ISO](https://github.com/YunoHost/cd_build) + * [Raspberry Pi images](https://github.com/YunoHost/rpi-image) + * [Other ARM board images](https://github.com/YunoHost/arm-images) +* [Using the YunoHost API outside of the webadmin](/admin_api_fr) diff --git a/contributordoc_fr.md b/contributordoc_fr.md index 5ab59cc2..710d93d1 100644 --- a/contributordoc_fr.md +++ b/contributordoc_fr.md @@ -1,14 +1,33 @@ -# Documentation contributeur YunoHost +# Guide du contributeur -* [Guide du contributeur](/contribute_fr) -* [Qu’est-ce que YunoHost ?](/whatsyunohost_fr) - * Développement - *
Feuille de route du projet - * [Liste des applications disponibles](/apps_fr) - * [Préparer/empaqueter une nouvelle application](/packaging_apps_fr) - * [Développer avec Docker](/docker_fr) - * [Présentation du fonctionnement de YunoHost](/package_list_fr) - * [Se créer un environnement de développement](/ynh_dev_fr) - * Documentation - * [Création d’un compte pour modifier la documentation](/accounting_fr) - * [Écrire de la documentation](/write_documentation_fr) +* [Liste des façons de contribuer à YunoHost](/contribute_fr) +* [Écrire de la documentation](/write_documentation_fr) +* Packaging d'application + * [Liste d'apps souhaitées par la communauté](/apps_wishlist_fr) + * [Introduction générale au packaging d'apps](/packaging_apps_start_fr) + * [Introduction technique au packaging d'apps](/packaging_apps_fr) + * [Déployer un environnement de développement avec VirtualBox](packaging_apps_virtualbox_fr) + * [Manifest](packaging_apps_manifest_fr) + * [Scripts](packaging_apps_scripts_fr) + * [Gestion des arguments](packaging_apps_arguments_management_fr) + * [Configuration nginx](packaging_apps_nginx_conf_fr) + * [Multi-instance](packaging_apps_multiinstance_fr) + * [Fonctions utiles](packaging_apps_helpers_fr) + * [Utilisation de 'trap'](packaging_apps_trap_fr) + * [Ajouter son application à la liste community](https://github.com/YunoHost/Apps/#contributing) + * Tests de qualité + * [Package linter](https://github.com/YunoHost/package_linter) + * [Package check](https://github.com/YunoHost/package_check) + * [Niveaux des applications](packaging_apps_levels_fr) + * [Intégration continue des apps](https://ci-apps.yunohost.org/jenkins/) + * [Tableau de bord du CI des apps](https://dash.yunohost.org/appci/branch/stable) + * [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr) +* [Contribuer à la partie "core" de YunoHost](/dev_fr) + * [Déployer un environnement de dev avec ynh-dev](https://github.com/YunoHost/ynh-dev/blob/master/README.md) + * [Construction des paquets debian](https://github.com/YunoHost/vinaigrette/blob/master/README.md) + * [Feuilles de route du projet](https://github.com/YunoHost/issues/milestones?direction=asc&sort=title&state=open) + * Construction des images + * [x86 ISO](https://github.com/YunoHost/cd_build) + * [Images Raspberry Pi](https://github.com/YunoHost/rpi-image) + * [Autres images pour cartes ARM](https://github.com/YunoHost/arm-images) +* [Utiliser l'API YunoHost en dehors de la webadmin](/admin_api_fr) diff --git a/copy_image.md b/copy_image.md index 6cd22d68..c2312fb6 100644 --- a/copy_image.md +++ b/copy_image.md @@ -1,46 +1,46 @@ -# Copy an image to an SD card +# Flashing an SD card -Now that you have the YunoHost image, you have to copy its content to an SD card. -The process differs regarding your operating system. +Now that you download the YunoHost image, you have to copy its content to an SD +card. This step is also sometimes called 'flashing' the SD card. + +
+In the context of self-hosting, it is recommended that your SD card be at least +8 GB (to have a reasonable space available for the system and a few data) and at +least Class 10 (to ensure reasonable performances). +
-## On Windows +### With Etcher -* Download and install **[Win32 Disk Imager](http://sourceforge.net/projects/win32diskimager/)** -* Plug your SD card in -* Copy the `.img` file to your SD card using Win32 Disk Imager. +Download Etcher for your +operating system and install it. - + -## On GNU/Linux, BSD or Mac OS +Plug your SD card, select your YunoHost image and click "Flash" -* Open a terminal -* Plug your SD card in -* Identify the device name by typing: +### With `dd` + +If you are on Linux / Mac and know your way around command line, you may also +flash your SD card with `dd`. You can identify which device corresponds to your +SD card with `fdisk -l` or `lsblk`. Assuming your SD card is `/dev/mmcblk0` (be +careful !!), you may run : ```bash -sudo fdisk -l +dd if=/path/to/yunohost.img of=/dev/mmcblk0 ``` -It should be `/dev/diskN`, where `N` is a number, or `/dev/sdX`, where `X` is a letter. - -Carefull to not put the digit `N` cause it will create an [non-functional SD card](https://raspberrypi.stackexchange.com/questions/11880/sd-card-doesnt-works-after-dd). - -* Copy the image by typing: - -```bash -sudo dd if=/path/to/your/.img of=/your/device/name -``` - - Do not forget to change `/path/to/your/.img` and `/your/device/name` with the appropriate values. - -The command may take a few minutes, then your SD card will be ready to use. **:-)** - ## Expand the root partition (optional) +
+This step is optionnal as it should be performed automatically during the first +boot on recent images. +
+ By default, the root partition of your SD card is very small. -You can resize it by using software like `resize2fs` (command-line) or `gparted` (graphical). +You can resize it by using software like `resize2fs` (command-line) or `gparted` +(graphical). diff --git a/copy_image_fr.md b/copy_image_fr.md index 25896d7f..f2e0509a 100644 --- a/copy_image_fr.md +++ b/copy_image_fr.md @@ -1,45 +1,51 @@ -# Copier l’image sur une carte SD +# Flasher une carte SD -Maintenant que vous avez l’image ISO YunoHost, vous devez la copier sur une carte SD. Le processus est différent suivant votre système d’exploitation. +Maintenant que vous avez téléchargé l'image de YunoHost, il vous faut copier son +contenu sur une carte SD. Cette étape est aussi souvent appelé 'flasher' la +carte SD. + +
+Dans le contexte de l'auto-hébergement, il est recommandé que votre carte SD +fasse au moins 8 Go (pour disposer d'un espace raisonnable pour le système et +quelques données) et soit au moins certifiée classe 10 (pour avoir des +performances raisonnables). +
-## Sous Windows +### Avec Etcher -* Téléchargez et installez **[Win32 Disk Imager](http://sourceforge.net/projects/win32diskimager/)**. -* Insérez votre carte SD. -* Copiez le fichier `.img` sur votre carte SD en utilisant *Win32 Disk Imager*. +Télécharger Etcher pour votre +système d'exploitation, et installez-le. - + -## Sous GNU/Linux, BSD ou Mac OS +Connectez votre carte SD, sélectionnez votre image YunoHost, puis cliquez sur +'Flash'. -* Ouvrez un terminal. -* Insérez votre carte SD. -* Identifiez votre matériel en tapant : +### Avec `dd` + +Si vous êtes sous Linux / Mac et que vous être à l'aise avec la ligne de +commande, vous pouvez aussi flasher votre carte SD avec `dd`. Commencez par +identifier le périphérique correspondant à votre carte SD avec `fdisk -l` ou +`lsblk`. En supposant que votre carte SD soit `/dev/mmcblk0` (faites attention +!), vous pouvez lancer : ```bash -sudo fdisk -l +dd if=/chemin/vers/yunohost.img of=/dev/mmcblk0 ``` -Ça devrait être `/dev/diskN`, où `N` est un chiffre, ou `/dev/sdX`, où `X` est une lettre, ou `/dev/mmcblk0`. +## Étendre la partition root (optionnel) -Attention à ne pas mettre le chiffre `N` car ça créera une [carte SD non fonctionnelle](https://raspberrypi.stackexchange.com/questions/11880/sd-card-doesnt-works-after-dd). +
+Cette étape est optionnelle car elle est normalement effectuée automatiquement +par le système lors du premier démarrage sur les images récentes. +
-* Copiez l’image en tapant : - -```bash -sudo dd if=/chemin/vers/votre/.img of=/nom/du/matériel -``` - - N’oubliez pas de changer `/chemin/vers/votre/.img` et `/nom/du/matériel` par les valeurs appropriées. - -La commande peut prendre quelques minutes, puis votre carte SD sera prête à être utilisée. **:-)** - -## Étendre la partition root (facultatif, mais conseillé) - -Par défaut, la partition root installée sur votre carte SD avec la commande `dd` est très petite. -Vous pouvez la redimensionner avec un logiciel comme `resize2fs` (ligne de commande) ou `Gparted` (interface graphique) en étendant la partition ext4 au maximum de façon à utiliser tout l’espace non alloué. +Par défaut, la partition root installée sur votre carte SD avec la commande `dd` +est très petite. Vous pouvez la redimensionner avec un logiciel comme +`resize2fs` (ligne de commande) ou `Gparted` (interface graphique) en étendant +la partition ext4 au maximum de façon à utiliser tout l’espace non alloué. diff --git a/create_live_usb.md b/create_live_usb.md index f595e093..2a59c1dd 100644 --- a/create_live_usb.md +++ b/create_live_usb.md @@ -1,5 +1,8 @@ # Create a YunoHost Live ISO +
This page is deprecated / obsolete / outdated. Information +it contains should be updated (or should be removed).
+ Tested on Debian Wheezy (should work on Ubuntu as well). Original tutorial here: http://willhaley.com/blog/create-a-custom-debian-live-environment/ @@ -144,4 +147,4 @@ cp /usr/lib/syslinux/menu.c32 image/isolinux/ cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd .. ``` -Great success! Now you can burn the .iso or use [Unetbootin](http://unetbootin.sourceforge.net/) to copy it on a USB key. \ No newline at end of file +Great success! Now you can burn the .iso or use [Unetbootin](http://unetbootin.sourceforge.net/) to copy it on a USB key. diff --git a/create_live_usb_fr.md b/create_live_usb_fr.md index bc19918a..5ea68d8b 100644 --- a/create_live_usb_fr.md +++ b/create_live_usb_fr.md @@ -1,5 +1,8 @@ # Créer une Live ISO de YunoHost +
This page is deprecated / obsolete / outdated. Information +it contains should be updated (or should be removed).
+ Testé sur Debian Wheezy (devrait marcher sur Ubuntu également). Tutoriel original : http://willhaley.com/blog/create-a-custom-debian-live-environment/ @@ -146,4 +149,4 @@ cp /usr/lib/syslinux/menu.c32 image/isolinux/ cd image && genisoimage -rational-rock -volid "YunoHost Live" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../yunohost-live.iso . && cd .. ``` -Félicitations ! L’ISO peut désormais être gravée ou utilisée avec [Unetbootin](http://unetbootin.sourceforge.net/) pour la copier sur une clé USB. \ No newline at end of file +Félicitations ! L’ISO peut désormais être gravée ou utilisée avec [Unetbootin](http://unetbootin.sourceforge.net/) pour la copier sur une clé USB. diff --git a/default.md b/default.md index 03140a4b..d8eebdbb 100644 --- a/default.md +++ b/default.md @@ -2,10 +2,10 @@ This page is not created yet, you can edit it by pressing `````` on your keyboard or by clicking the "edit" button on the bottom-right side of your screen. You will be able to preview your changes by pressing `````` again or by clicking the "preview" button. -** Note: ** If you don't have any account you will have to send the modifications manually. +** Note: ** You will need to provide an email adress to validate your submission. ###Syntax This page use the markdown syntax, please refer to the documentation for further informations: -http://daringfireball.net/projects/markdown/syntax \ No newline at end of file +http://daringfireball.net/projects/markdown/syntax diff --git a/default_fr.md b/default_fr.md index 4c8158a0..75c46aa3 100644 --- a/default_fr.md +++ b/default_fr.md @@ -2,7 +2,7 @@ Cette page n’existe pas encore, vous pouvez l’éditer en appuyant sur la touche ```<Échap>``` de votre clavier, ou en cliquant sur le bouton "Éditer" en bas à droite de votre écran. Vous pourrez avoir un aperçu de vos changements en appuyant à nouveau sur la touche ```<Échap>``` ou en cliquant sur le bouton "Aperçu". -** Note : ** Si vous n’avez pas de compte vous devrez envoyer vos modifications manuellement. +** Note : ** Vous aurez besoin d'une adresse email pour valider votre proposition. ### Syntaxe diff --git a/dev.md b/dev.md index 1d677afc..e76fda01 100644 --- a/dev.md +++ b/dev.md @@ -5,7 +5,7 @@ proceed? This guide takes you through the various steps of the development and contribution process. If you're looking for stuff to implement or fix, the bug-tracker is -[here](https://dev.yunohost.org/issues/) ! +[here](https://github.com/YunoHost/issues/issues) ! **Come say hi to us in the [dev chatroom](xmpp:dev@conference.yunohost.org?join)** ! If you don't have an XMPP client, you can join using the widget at the bottom right of this page. @@ -122,34 +122,3 @@ If you're looking for stuff to implement or fix, the bug-tracker is should be merged in `testing` (?) ! - - - - diff --git a/dev_fr.md b/dev_fr.md index 1acd96da..2cfa4cd8 100644 --- a/dev_fr.md +++ b/dev_fr.md @@ -5,7 +5,7 @@ savez pas comment procéder ? Ce guide parcours les étapes du développement et processus de contribution. Si vous chercher quelque chose à implémenter ou un bug à réparer, le -bug tracker est [ici](https://dev.yunohost.org/issues/) ! +bug tracker est [ici](https://github.com/yunohost/issues/issues) ! **Venez dire coucou sur le [salon de dev](xmpp:dev@conference.yunohost.org?join)** ! Si vous n'avez pas de client @@ -15,7 +15,7 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page. - **Utilisez [ynh-dev](https://github.com/YunoHost/ynh-dev)** (voir le README) pour mettre en place un environnement de développement - en local sur une - machine virtuel, ou bien sur un VPS. + machine virtuelle, ou bien sur un VPS. Ceci installera une instance fonctionelle de YunoHost, en utilisant directement les dépôts git à l'aide de liens symboliques. De cette façon, il vous sera possible de modifier les fichiers, de tester les changements en @@ -32,7 +32,7 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page. - Allez dans `/vagrant/yunohost/`. -- Executez `/vagrant/ynh-dev use-git yunohost`. +- Exécutez `/vagrant/ynh-dev use-git yunohost`. - Le fichier actionsmap (`data/actionsmap/yunohost.yml`) définit les différentes catégories, actions et arguments de la ligne de commande YunoHost. Choisissez @@ -89,7 +89,7 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page. - `js/yunohost/controllers` contiens les parties javascript, et définit quelles requêtes faire à l'API pendant le chargement d'une page donnée de l'interface, - et comment traîter les données récupérées pour générer la page, en utilisant + 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, @@ -131,34 +131,4 @@ XMPP, vous devriez pouvoir vous connecter à l'aide du widget en bas de la page. - Après relecture, test et validation par les autres contributeurs, votre branche sera mergée dans `testing` (?) ! - - - diff --git a/diagnostic.md b/diagnostic.md index ecebecb6..df76baee 100644 --- a/diagnostic.md +++ b/diagnostic.md @@ -46,7 +46,7 @@ You can also redirect ports manually to your server's local IP address on the ro --- -### 4. Do your router has hairpinning ? +### 4. Does your router have hairpinning ? If the server is accessible from outside your local network, but unreachable with its domain name on the local network, then your router probably lacks hairpinning. diff --git a/dkim.md b/dkim.md deleted file mode 100644 index b0e5d9e2..00000000 --- a/dkim.md +++ /dev/null @@ -1,166 +0,0 @@ -# DKIM - -
This page is deprecated. DKIM is now by default integrated in YunoHost with [Rspamd](https://rspamd.com)/rmilter.
-Now you just need to add a zone in your DNS configuration according to the file /etc/dkim/yourdomainname.tld.mail.txt - - -##### Note: -* This is the 2nd revision of this Work In Progress How-To activate [DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) and [SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework) in YunoHost. -* Le DKIM and SPF prevent emails which could be sent with your domain name from a non legitim server. This avoid spam. -* Untill, this is not natively integrated in YunoHost core, it will mean to that Postfix configuration will be blocked (or each time there is a change some configuration lines will need to be added to the end of `/etc/postfix/main.cf`). -* To be fully functionnal DKIM requires a modification of your [DNS zone](/dns_config_en), which propagantion can take up to 24h. - -##### Sources: -* This tutorial has been initially based on the DKMI section of: http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ from Drew Crawford. -* This tutorial has been reviewed based on https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy from Popute Sebastian Armin - -Replace `DOMAIN.TLD` by your own domain name. - -Changes in 2n revision: -Much easier to manage more than one DOMAIN.TLD (future proof). -Updated configuration as it seemed that the previous one was based on old software. - -So, here is the thing: -### With a script -Fully automatic script: (single domain) -```bash -git clone https://github.com/polytan02/yunohost_auto_config_basic -cd yunohost_auto_config_basic -sudo ./5_opendkim.sh -``` - -### Manually -We start by installing the right software: -```bash -sudo aptitude install opendkim opendkim-tools -``` - -Then we configure opendkim -```bash -sudo nano /etc/opendkim.conf -``` - -Text to be placed in the text file: -```bash -AutoRestart Yes -AutoRestartRate 10/1h -UMask 022 -Syslog yes -SyslogSuccess Yes -LogWhy Yes - -Canonicalization relaxed/simple - -ExternalIgnoreList refile:/etc/opendkim/TrustedHosts -InternalHosts refile:/etc/opendkim/TrustedHosts -KeyTable refile:/etc/opendkim/KeyTable -SigningTable refile:/etc/opendkim/SigningTable - -Mode sv -PidFile /var/run/opendkim/opendkim.pid -SignatureAlgorithm rsa-sha256 - -UserID opendkim:opendkim - -Socket inet:8891@127.0.0.1 - -Selector mail -``` - -Connect the milter to Postfix: -```bash -sudo nano /etc/default/opendkim -``` - -Text to be placed in the text file: -```bash -SOCKET="inet:8891@localhost" -``` - -Configure Postfix to use this milter: -```bash -sudo nano /etc/postfix/main.cf -``` - -Text to be placed **at the end** in the text file: -```bash -# OpenDKIM milter - -milter_protocol = 2 -milter_default_action = accept -smtpd_milters = inet:127.0.0.1:8891 -non_smtpd_milters = inet:127.0.0.1:8891 -``` - -Create a directory structure that will hold the trusted hosts, key tables, signing tables and crypto keys: -```bash -sudo mkdir -pv /etc/opendkim/keys/DOMAIN.TLD -``` - -Specify trusted hosts: -```bash -sudo nano /etc/opendkim/TrustedHosts -``` - -Text to be placed in the text file: -```bash -127.0.0.1 -localhost -192.168.0.1/24 -*.DOMAIN.TLD -``` - -Create a key table: -```bash -sudo nano /etc/opendkim/KeyTable -``` - -Text to be placed in the text file: be very careful, it needs to be on a **single line** for each domain. -```bash -mail._domainkey.DOMAIN.TLD DOMAIN.TLD:mail:/etc/opendkim/keys/DOMAIN.TLD/mail.private -``` - -Create a signing table: -```bash -sudo nano /etc/opendkim/SigningTable -``` - -Text to be placed in the text file: -```bash -*@DOMAIN.TLD mail._domainkey.DOMAIN.TLD -``` - -Now we generate the keys! smile -```bash -sudo cd /etc/opendkim/keys/DOMAIN.TLD -sudo opendkim-genkey -s mail -d DOMAIN.TLD -``` - -Output the DKIM DNS line to the terminal. Then, we install it on our DNS server. My ZONE file looks like this. (Be very careful with the formatting, the "p=...." needs to be in a single line.) -```bash -cat mail.txt - -mail._domainkey IN TXT "v=DKIM1; k=rsa; p=AAAKKUHGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFrBM54eXlZPXLJ7EFphiA8qGAcgu4lWuzhzxDDcIHcnA/fdklG2gol1B4r27p87rExxz9hZehJclaiqlaD8otWt8r/UdrAUYNLKNBFGHJ875467jstoAQAB" ; ----- DKIM key mail for DOMAIN.TLD -``` - -And we don't forget to put the right rights otherwise opendkim will get grumpy... -```bash -chown -Rv opendkim:opendkim /etc/opendkim* -``` - -And finally, we restart everything: -```bash -sudo service opendkim restart -sudo service postfix restart -``` - -To test if it is all working well (don't forget that the DNS propagation can take a bit of take…) you can simply go to [mail-tester.com](http://www.mail-tester.com) and send an e-mail to the address indicated. Then follow the link and the result will appear. - -# SPF -Lastly, don't forget to add a SPF key in your [DNS zone](/dns_config_en) such as: -```bash -DOMAIN.TLD 300 TXT "v=spf1 a:DOMAIN.TLD ip4: ip6: mx ?all" - ``` - -As reminder, the SPF field shows that the only machine using the IP address shows in your DNS zone are authorized to send emails. -If you don't have IPv6 on your email server, simply delete le ip6:<...> section diff --git a/dkim_fr.md b/dkim_fr.md deleted file mode 100644 index 095fa478..00000000 --- a/dkim_fr.md +++ /dev/null @@ -1,171 +0,0 @@ -# DKIM - -
Cette page n’est plus à jour. Le DKIM est a présent intégré par défaut dans YunoHost avec [Rspamd](https://rspamd.com)/rmilter. -Il suffit désormais de créer une zone DNS en s'inspirant du fichier /etc/dkim/yourdomainname.tld.mail.txt
- -Le protocole SMTP ne prévoit pas de mécanisme de vérification de l’expéditeur. Il est donc possible d’envoyer un courrier avec une adresse d’expéditeur factice ou usurpée. SPF et DKIM sont deux mécanismes d’authentification de l’expéditeur d’un email. - -#### Notes : - -* Ceci est la deuxième version de ce travail en cours concernant l’activation de [DKIM](https://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail) et [SPF](https://fr.wikipedia.org/wiki/Sender_Policy_Framework) dans YunoHost. -* Le DKIM et le SPF empêchent le fait que des courriels puissent être envoyés avec votre nom de domaine à partir d’un autre serveur que le serveur légitime. Ceci évite le spam. -* En attendant que tout ceci soit intégré nativement dans YunoHost, cela nécessitera une modification de la configuration de Postfix dans `/etc/postfix/main.cf`. -* Pour fonctionner correctement, DKIM nécessite une modification de votre [zone DNS](/dns_config_fr). N’oubliez pas que la propagation de l’information DNS une fois modifiée peut prendre jusqu’à 24h ! - -#### Sources : -* Ce document a été initialement basé sur : http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ de Drew Crawford. -* Cette 2e révision s’appuie beaucoup sur : https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy from Popute Sebastian Armin - -Dans la suite de ce document, replacez `DOMAIN.TLD` par votre propre nom de domaine. - -Changement dans la 2de révision : - -* La configuration s’adapte très facilement à plusieurs noms de domaines simultanés. -* Mise à jour des paramètres de configuration avec la dernière version de OpenDKIM disponible dans Debian 7. - -Rentrons maintenant dans le cœur du sujet : -### Avec un script -Utiliser un script tout fait et répondez aux questions : -```bash -git clone https://github.com/polytan02/yunohost_auto_config_basic -cd yunohost_auto_config_basic -sudo ./5_opendkim.sh -``` - -### À la main -On commence par installer les logiciels : -```bash -sudo aptitude install opendkim opendkim-tools -``` - -Ensuite on configure openDKIM : -```bash -sudo nano /etc/opendkim.conf -``` - -Texte à insérer dans le document : -```bash -AutoRestart Yes -AutoRestartRate 10/1h -UMask 022 -Syslog yes -SyslogSuccess Yes -LogWhy Yes - -Canonicalization relaxed/simple - -ExternalIgnoreList refile:/etc/opendkim/TrustedHosts -InternalHosts refile:/etc/opendkim/TrustedHosts -KeyTable refile:/etc/opendkim/KeyTable -SigningTable refile:/etc/opendkim/SigningTable - -Mode sv -PidFile /var/run/opendkim/opendkim.pid -SignatureAlgorithm rsa-sha256 - -UserID opendkim:opendkim - -Socket inet:8891@127.0.0.1 - -Selector mail -``` - -On connecte ensuite le milter à Postfix : -```bash -sudo nano /etc/default/opendkim -``` - -Texte à insérer dans le document : -```bash -SOCKET="inet:8891@localhost" -``` - -Configurer Postfix pour utiliser ce milter : -```bash -sudo nano /etc/postfix/main.cf -``` - -Texte à insérer à la fin du document : -```bash -# OpenDKIM milter -milter_protocol = 2 -milter_default_action = accept -smtpd_milters = inet:127.0.0.1:8891 -non_smtpd_milters = inet:127.0.0.1:8891 -``` - -Créer la structure de dossiers qui contiendra la clé, les hôtes connues et quelques tableaux de données : -```bash -sudo mkdir -pv /etc/opendkim/keys/DOMAIN.TLD -``` - -On précise les hôtes de confiance : -```bash -sudo nano /etc/opendkim/TrustedHosts -``` - -Texte à insérer dans le document : -```bash -127.0.0.1 -localhost -192.168.0.1/24 -*.DOMAIN.TLD -``` - -Créer le tableau des clés : -```bash -sudo nano /etc/opendkim/KeyTable -``` - -(Texte à insérer dans le document : faites très attention, ça doit rester ** sur une seule ligne ** pour chaque nom de domaine) -mail._domainkey.DOMAIN.TLD DOMAIN.TLD:mail:/etc/opendkim/keys/DOMAIN.TLD/mail.private - -Créer un tableau des signatures : -```bash -sudo nano /etc/opendkim/SigningTable -``` - -Texte à insérer dans le document : -```bash -*@DOMAIN.TLD mail._domainkey.DOMAIN.TLD -``` - -Maintenant on peut générer nos clés ! -```bash -sudo cd /etc/opendkim/keys/DOMAIN.TLD -sudo opendkim-genkey -s mail -d DOMAIN.TLD -``` - -On affiche les paramètres DNS de DKIM générés par opendkim dans le terminal. -Ensuite, on installera la clé DKIM dans notre DNS. Ma zone DNS ressemble à l’exemple ci-dessous. -(Faites très attention à la casse, le "p=...." doit rester sur une seule ligne dans le DNS et pas sur plusieurs, sinon cela ne sera pas accepté ni reconnu) -```bash -cat mail.txt -``` - -```bash -mail._domainkey IN TXT "v=DKIM1; k=rsa; p=AAAKKUHGCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPFrBM54eXlZPXLJ7EFphiA8qGAcgu4lWuzhzxDDcIHcnA/fdklG2gol1B4r27p87rExxz9hZehJclaiqlaD8otWt8r/UdrAUYNLKNBFGHJ875467jstoAQAB" ; ----- DKIM key mail for DOMAIN.TLD -``` - -Et surtout, on n’oublie pas de donner les bons droits d’accès à opendkim aux fichiers créés par root... -```bash -chown -Rv opendkim:opendkim /etc/opendkim* -``` - -Et enfin, on redémarre le tout : -```bash -sudo service opendkim restart -sudo service postfix restart -``` - -Pour tester que tout fonctionne bien (n’oubliez pas que la propagation DNS peut prendre jusqu’à 24h...) vous pouvez tout simplement vous rendre sur [mail-tester.com](http://www.mail-tester.com/), envoyer un courriel à l’adresse indiquée et cliquer pour voir le résultat. - -# SPF -Enfin, n’oubliez pas d’ajouter une clé SPF dans votre [zone DNS](/dns_config_fr) (ou un champ TXT si SPF n’est pas disponible) : - -```bash -DOMAIN.TLD 1800 TXT "v=spf1 a:DOMAIN.TLD ip4: ip6: mx ?all" - ``` - -Pour rappel, le champ SPF indique que seule la machine utilisant l’adresse IP indiquée dans votre zone DNS est autorisée à envoyer des courriels. -Si vous n’avez pas d’IPv6 sur votre serveur, supprimez simplement la section ip6:<…> diff --git a/dns.md b/dns.md index d22c0d12..b8102074 100644 --- a/dns.md +++ b/dns.md @@ -22,17 +22,18 @@ There are also different **types** of DNS records, which means that a domain can You have several choices here. Note that you can mix and match solutions if you have multiple domains: for example, you can have `my-server.nohost.me` using solution **1.**, and `my-server.org` using solution **2.**, both leading to the same Yunohost server. -1. You can use YunoHost's DNS service, which will automatically configure your DNS for you. You must choose a domain that ends with `.nohost.me` or `noho.st` for this, which may be inconvenient for you (you would then only be able to use an email address like `john@my-server.noho.st`). -**This is the recommended option if you are just starting out with self-hosting.** +1. You can use YunoHost's DNS service, which will automatically configure your DNS for you. You must choose a domain that ends with `.nohost.me`, `.noho.st` or `.ynh.fr` for this, which may be inconvenient for you (you would then only be able to use an email address like `john@my-server.noho.st`). + + **This is the recommended option if you are just starting out with self-hosting.** 2. You can use the DNS service offered by your **registrar** (Gandi, NameCheap, BookMyName or others) to configure your domain name. Here is the [standard DNS configuration](/dns_config). The DNS service of your router can also be used, more info on [how to setup a local domain](dns_local_network). You can also check out these pages for specific [registrar](/registrar_en) documentation: [OVH](https://www.ovh.co.uk/index.xml), [Gandi](http://gandi.net), [NameCheap](http://namecheap.com) or [BookMyName](http://bookmyname.com). -**Warning**: If you choose this option, you will have more configuration possibilities, but nothing will be done for you. For example, if you want to use `webmail.my-server.org`, you must add it manually to the DNS records with your registrar. + **Warning**: If you choose this option, you will have more configuration possibilities, but nothing will be done for you. For example, if you want to use `webmail.my-server.org`, you must add it manually to the DNS records with your registrar. 3. Your YunoHost instance has its own DNS service, which means it will automatically configure its own DNS records, and that you can leave the setup to the instance itself. To do this, you must explain to your **registrar** that your YunoHost instance is the authoritative DNS server for your domain name. -
**Warning**: If you choose this option, all configuration options will be done automatically, you will retain a good deal of flexibility, but if your server gets knocked offline you will run into many problems. **Choose this only if you are certain.** + **Warning**: If you choose this option, all configuration options will be done automatically, you will retain a good deal of flexibility, but if your server gets knocked offline you will run into many problems. **Choose this only if you are certain.** 4. Once your DNS service is running, your server can use it but it needs to be configured, this is the [DNS resolver](/dns_resolver_en). diff --git a/dns_config.md b/dns_config.md index 2c605cf7..d9e08da9 100644 --- a/dns_config.md +++ b/dns_config.md @@ -1,64 +1,82 @@ -## DNS zone configuration +# DNS zone configuration -Sample DNS zone configuration for `domain.tld` domain name: +DNS (domain name system) is a system that converts human-readable addresses +(domain names) into machine-understandable addresses (IP). For your server to be +easily accessible by human beings, and for some services like mail to work +properly, DNS must be configured. -#### Use yunohost command to generate my DNS ZONE +If you're using a nohost.me / noho.st domain, the configuration should be +performed automatically. If you're using your own domain name (e.g. bought via +a registrar), you should manually configure your domain on your registrar's +interface. + +## Recommended DNS configuration + +YunoHost provides a recommended DNS configuration, available via : +- the webadmin, in Domain > your.domain.tld > DNS configuration ; +- or the command line, `yunohost domain dns-conf your.domain.tld` + +For specific needs or specific setups, and if you know what you're doing, you +might want or have to tweak these or add additional ones (e.g. to handle +subdomains). + +The recommended configuration typically looks like this : -Connect to your server using yunohost and run the following as root ```bash -yunohost domain dns-conf domain.tld +# +# Basic ipv4/ipv6 records +# +@ 3600 IN A 111.222.33.44 +* 3600 IN A 111.222.33.44 + +# (If your server is IPv6 capable, there are some AAAA records) +@ 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111 +* 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111 + +# +# XMPP +# +_xmpp-client._tcp 3600 IN SRV 0 5 5222 your.domain.tld. +_xmpp-server._tcp 3600 IN SRV 0 5 5269 your.domain.tld. +muc 3600 IN CNAME @ +pubsub 3600 IN CNAME @ +vjud 3600 IN CNAME @ + +# +# Mail (MX, SPF, DKIM and DMARC) +# +@ 3600 IN MX 10 your.domain.tld. +@ 3600 IN TXT "v=spf1 a mx ip4:111.222.33.44 -all" +mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=someHuuuuuuugeKey" +_dmarc 3600 IN TXT "v=DMARC1; p=none" ``` -#### Redirection from the domain name to the IP address -```bash -@ 1800 IN A 111.222.333.444 # (Minimal) IPv4 -@ 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788 # IPv6 -``` +Though it might be easier to understand it if displayed like this : -#### Redirection from the domain name and subdomains to the IP address -```bash -* 1800 IN A 111.222.333.444 # Wildcard: *.domain.tld and domain.tld redirection to the IP address -* 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788 -``` -#### Subdomains -```bash -www 1800 IN CNAME @ # accesible at www.domain.tld -``` +| Type | Name | Value | +| :-----: | :--------------------: | :--------------------------------------------------: | +| **A** | **@** | `111.222.333.444` (your IPv4) | +| A | * | `111.222.333.444` (your IPv4) | +| AAAA | @ | `2222:444:8888:3333:bbbb:5555:3333:1111` (your IPv6) | +| AAAA | * | `2222:444:8888:3333:bbbb:5555:3333:1111` (your IPv6) | +| **SRV** | **_xmpp-client._tcp** | `0 5 5222 your.domain.tld.` | +| **SRV** | **_xmpp-server._tcp** | `0 5 5269 your.domain.tld.` | +| CNAME | muc | `@` | +| CNAME | pubsub | `@` | +| CNAME | vjud | `@` | +| **MX** | **@** | `your.domain.tld.` (and priority: 10) | +| TXT | @ | `"v=spf1 a mx ip4:111.222.33.44 -all"` | +| TXT | mail._domainkey | `"v=DKIM1; k=rsa; p=someHuuuuuuugeKey"` | +| TXT | _dmarc | `"v=DMARC1; p=none"` | -#### XMPP -```bash -_xmpp-client._tcp 1800 IN SRV 0 5 5222 domain.tld. # (Minimal) clients connection -_xmpp-server._tcp 1800 IN SRV 0 5 5269 domain.tld. # (Minimal) servers connection +#### A few notes about this table -muc 1800 IN CNAME @ # multi-user chat rooms at muc.domain.tld -anonymous 1800 IN CNAME @ # connection without account at `anonymous.domain.tld` -bosh 1800 CNAME @ # BOSH -_xmppconnect 1800 TXT "_xmpp-client-xbosh=https://bosh.domain.tld:5281/http-bind" -pubsub 1800 IN CNAME @ -vjud 1800 IN CNAME @ -``` - -#### Email -```bash -@ 1800 IN MX 10 domain.tld. # (Minimal) -@ 1800 IN TXT "v=spf1 a mx -all" -``` - -You should also consult the [DKIM documentation](#/dkim). DKIM allows yours mails not to be considered by spam by other mail service. In fact DKIM ask you to add an entry in your zone. - -#### Set up -Replace: -- "`domain.tld`" with your own domain preserving the dot at the end. -- IP samples values with your server IP addresses: - * `111.222.333.444`: [IPv4](http://ip.yunohost.org/). - * `2001:AABB:CCDD:EEFF:1122:3344:5566:7788`: [IPv6](http://ip6.yunohost.org/). - -DNS lines for subdomains, XMPP and email does not work without a redirection from the domain name to the IP address (one line is enough) because they depend on it. - -
To begin: lines with "(Minimal)" are the minimal required DNS entries to make redirection work from the domain name to the IP adress, XMPP and email.
- -
Warning: @ is the default domain name currently defined, some registrar (like OVH) does not accept it, so replace @ by your domain name (domain.tld**.**) with a dot at the end.
- -#### Time to live -All DNS lines above have `1800` value (30 minutes). It corresponds to [Time to live (TTL)](https://en.wikipedia.org/wiki/Time_to_live#DNS_records) which represents and indicate time, in seconds, during which the DNS line can be kept in the cache. After this time, the information must me considered obsolete and must be updated. +- Not all these lines are absolutely necessary. For a minimal setup, you only need the records in bold. +- The dot at the end of `your.domain.tld.` is important ;) ; +- `@` corresponds to `your.domain.tld`, and e.g. `muc` corresponds to `muc.your.domain.tld` ; +- These are example values ! See your generated conf for the actual values you should use ; +- We recommend a [TTL](https://en.wikipedia.org/wiki/Time_to_live#DNS_records) of 3600 (1 hour). But you can use something else if you + know what you're doing ; +- Don't put an IPv6 record if you're not sure IPv6 really works on your server ! + You might have issues with Let's Encrypt if it doesn't. diff --git a/dns_config_fr.md b/dns_config_fr.md index 3476586e..a3db7225 100644 --- a/dns_config_fr.md +++ b/dns_config_fr.md @@ -1,66 +1,82 @@ -## Configuration de la zone DNS +# Configuration de la zone DNS -Exemple de configuration des entrées de la zone DNS pour le nom de domaine `domain.tld` : +DNS (système de nom de domaine) est un élément essentiel d'Internet qui permet +de convertir des adresses compréhensible par les êtres humains (les noms de +domaines) en adresses compréhensibles par la machine (les IPs). Pour que +votre serveur soit facilement accessible par d'autres êtres humains, et pour +que certains services comme le mail fonctionnent correctement, il est nécessaire +de configurer la zone DNS de votre domaine. -#### Utiliser la commande yunohost pour générer ma zone DNS +Si vous utilisez un domaine en nohost.me / noho.st domain, la configuration +devrait être faite automatiquement. Si vous utilisez votre propre nom de domaine +(e.g. acheté chez un registrar), il vous faut configurer manuellement votre +domaine via l'interface de votre registrar. + +## Configuration DNS recommandée + +YunoHost fournit une configuration DNS recommandée, accessible via : +- la webadmin, dans Domaines > votre.domain.tld > Configuration DNS ; +- ou la ligne de commande, `yunohost domain dns-conf votre.domaine.tld` + +Pour certains besoins ou installations particulières, et si vous savez ce que +vous faites, il vous faudra peut-être modifier cette recommandation ou ajouter +d'autres enregistrements (e.g. pour gérer des sous-domaines). + +La configuration recommandée ressemble typiquement à : -Connecter vous à votre serveur et lancer la commande suivante. ```bash -yunohost domain dns-conf domain.tld +# +# Enregistrements IPv4/IPv6 basiques +# +@ 3600 IN A 111.222.33.44 +* 3600 IN A 111.222.33.44 + +# (Si votre serveur supporter l'IPv6, il a des enregistrements AAAA) +@ 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111 +* 3600 IN AAAA 2222:444:8888:3333:bbbb:5555:3333:1111 + +# +# XMPP +# +_xmpp-client._tcp 3600 IN SRV 0 5 5222 votre.domaine.tld. +_xmpp-server._tcp 3600 IN SRV 0 5 5269 votre.domaine.tld. +muc 3600 IN CNAME @ +pubsub 3600 IN CNAME @ +vjud 3600 IN CNAME @ + +# +# Mail (MX, SPF, DKIM et DMARC) +# +@ 3600 IN MX 10 votre.domaine.tld. +@ 3600 IN TXT "v=spf1 a mx ip4:111.222.33.44 -all" +mail._domainkey 3600 IN TXT "v=DKIM1; k=rsa; p=uneGrannnnndeClef" +_dmarc 3600 IN TXT "v=DMARC1; p=none" ``` -#### Redirection du nom de domaine vers l’adresse IP -```bash -@ 1800 IN A 111.222.333.444 # (Minimum) IPv4 -@ 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788 # IPv6 -``` +Mais il est peut-être plus facile de la comprendre si affichée de la façon +suivante : -#### Redirection du nom de domaine et de tous les sous-domaines vers l’adresse IP -```bash -* 1800 IN A 111.222.333.444 # Wildcard : *.domain.tld et domain.tld pointent vers l’adresse IP. -* 1800 IN AAAA 2001:AABB:CCDD:EEFF:1122:3344:5566:7788 -``` +| Type | Nom | Valeur | +| :-----: | :--------------------: | :----------------------------------------------------: | +| **A** | **@** | `111.222.333.444` (votre IPv4) | +| A | * | `111.222.333.444` (votre IPv4) | +| AAAA | @ | `2222:444:8888:3333:bbbb:5555:3333:1111` (votre IPv6) | +| AAAA | * | `2222:444:8888:3333:bbbb:5555:3333:1111` (votre IPv6) | +| **SRV** | **_xmpp-client._tcp** | `0 5 5222 votre.domaine.tld.` | +| **SRV** | **_xmpp-server._tcp** | `0 5 5269 votre.domaine.tld.` | +| CNAME | muc | `@` | +| CNAME | pubsub | `@` | +| CNAME | vjud | `@` | +| **MX** | **@** | `votre.domaine.tld.` (et priorité: 10) | +| TXT | @ | `"v=spf1 a mx ip4:111.222.33.44 -all"` | +| TXT | mail._domainkey | `"v=DKIM1; k=rsa; p=uneGrannnndeClef"` | +| TXT | _dmarc | `"v=DMARC1; p=none"` | -#### Sous-domaines -```bash -www 1800 IN CNAME @ # accessible sur www.domain.tld -``` +#### Quelques notes à propos de cette table -#### XMPP -```bash -_xmpp-client._tcp 1800 IN SRV 0 5 5222 domain.tld. # (Minimum) connexions avec les clients -_xmpp-server._tcp 1800 IN SRV 0 5 5269 domain.tld. # (Minimum) connexions entre serveurs - -muc 1800 IN CNAME @ # salons de discussion sur `muc.domain.tld` -anonymous 1800 IN CNAME @ # connexion sans compte sur `anonymous.domain.tld` -bosh 1800 CNAME @ # BOSH -_xmppconnect 1800 TXT "_xmpp-client-xbosh=https://bosh.domain.tld:5281/http-bind" -pubsub 1800 IN CNAME @ -vjud 1800 IN CNAME @ -``` - -#### Email -```bash -@ 1800 IN MX 10 domain.tld. # (Minimum) -@ 1800 IN TXT "v=spf1 a mx -all" -``` -
- -Vous devriez aussi consulter [la documentation de DKIM](#/dkim_fr). DKIM permet d'éviter que vos mails soit considérés comme SPAM et DKIM nécessite une entrée spécifique dans votre zone DNS. - -#### Mise en place -Remplacez : -* « `domain.tld` » par votre propre nom de domaine en conservant le point à la fin. -* les adresses IP d’exemple par celles de votre serveur : - * `111.222.333.444` : [IPv4](http://ip.yunohost.org/). - * `2001:AABB:CCDD:EEFF:1122:3344:5566:7788` : [IPv6](http://ip6.yunohost.org/). - -Les entrées DNS sous domaines, XMPP et email ne fonctionnent pas sans une redirection du nom de domaine vers l’adresse IP (une ligne est suffisante) étant donné qu’elles en sont dépendantes. - -
**Pour débuter :** les lignes avec « (Minimum) » sont les entrées DNS minimales requises pour avoir une redirection du nom de domaine vers l’adresse IP, XMPP et le courrier électronique qui fonctionnent.
- -
**Attention :** le **@** représente le nom de domaine par défaut que l’on est en train de définir, certains bureaux d’enregistrement ne l’acceptent pas (ex : OVH). Il faut donc remplacer le « @ » par votre nom de domaine (domain.tld**.**) sans oublier un point à la fin.
- -#### Time to live -Toutes les entrées DNS ci-dessus ont la valeur `1800` (30 minutes). Elle correspond au -[Time to live (TTL)](https://fr.wikipedia.org/wiki/Time_to_Live#Le_Time_to_Live_dans_le_DNS) qui représente et indique le temps, en secondes, durant lequel l’entrée DNS peut être conservée en cache. Passé ce délai, l’information doit être considérée comme obsolète et doit être mise à jour. +- Tous ces enregistrements ne sont pas nécessaires. Pour une installation minimale, seuls les enregistrements en gras sont nécessaires. +- Le point à la fin de `votre.domaine.tld.` est important ;) ; +- `@` corresponds à `votre.domaine.tld`, et par ex. `muc` corresponds à `muc.votre.domaine.tld` ; +- Les valeurs montrées sont des valeurs d'exemple ! Référez-vous à la configuration générée chez vous pour savoir quelles valeurs utiliser. +- Nous recommandons un [TTL](https://fr.wikipedia.org/wiki/Time_to_Live#Le_Time_to_Live_dans_le_DNS) de 3600 (1 heure). Mais vous pouvez utiliser une autre valeur si vous savez ce que vous faîtes ; +- Ne mettez pas d'enregistrement IPv6 si vous n'êtes pas certains que l'IPv6 fonctionne sur votre serveur ! Vous aurez des problèmes avec Let's Encrypt si ce n'est pas le cas. diff --git a/dns_fr.md b/dns_fr.md index 50d16997..ebbf9845 100644 --- a/dns_fr.md +++ b/dns_fr.md @@ -6,7 +6,7 @@ La configuration des DNS est une étape cruciale pour que votre serveur soit acc ### Qu’est-ce que c’est ? -**N’hésitez à pas regarder la très bonne conférence de Stéphane Bortzmeyer : +**N’hésitez pas à regarder la très bonne conférence de Stéphane Bortzmeyer : http://www.iletaitunefoisinternet.fr/dns-bortzmeyer/** DNS signifie « Domain Name Server » en anglais, et est souvent employé pour désigner la configuration de vos noms de domaine. Vos noms de domaines doivent en effet pointer vers quelque chose (en général une adresse IP). @@ -27,7 +27,7 @@ Il existe également des **types** d’enregistrement DNS, ce qui veut dire qu Plusieurs choix s’offrent à vous. Notez que vous pouvez cumuler ces solutions si vous possédez plusieurs domaines : par exemple vous pouvez avoir `mon-serveur.nohost.me` en utilisant la solution **1.**, et `mon-serveur.org` en utilisant la solution **2.**, redirigeant vers le même serveur YunoHost. -1. Vous pouvez utiliser le service de DNS de YunoHost, qui s’occupera de configurer tout seul les DNS de votre instance YunoHost. Vous devrez en revanche choisir un domaine se terminant par `.nohost.me` ou `.noho.st`, ce qui peut être inconvenant (vous aurez alors des adresses email telles que `jean@mon-serveur.noho.st`). +1. Vous pouvez utiliser le service de DNS de YunoHost, qui s’occupera de configurer tout seul les DNS de votre instance YunoHost. Vous devrez en revanche choisir un domaine se terminant par `.nohost.me`, `.noho.st` ou `.ynh.fr`, ce qui peut être inconvenant (vous aurez alors des adresses email telles que `jean@mon-serveur.noho.st`). **C’est la méthode recommandée si vous débutez.** 2. Vous pouvez utiliser le service de DNS de votre **registrar** (Gandi, OVH, BookMyName ou autre) pour configurer vos noms de domaine. Voici la [configuration DNS standard](/dns_config_fr). Il est aussi possible d'utiliser une redirection DNS locale, plus d'infos sur comment [Accéder à son serveur depuis le réseau local](/dns_local_network_fr). diff --git a/dns_local_network.md b/dns_local_network.md index 7cbb5975..67497faf 100644 --- a/dns_local_network.md +++ b/dns_local_network.md @@ -19,7 +19,7 @@ You may retrieve your server private IP adress through different means: ## Configure DNS of Internet box or router -The goal here is to create a network wide redirection handled by your router. The idea is to create a DNS redirection to your server's IP. You should access your router's configuration and look for DNS configuration, then add a redirection to your server's IP (e.g. redirect "yunohot.local" to 192.168.1.21). +The goal here is to create a network wide redirection handled by your router. The idea is to create a DNS redirection to your server's IP. You should access your router's configuration and look for DNS configuration, then add a redirection to your server's IP (e.g. redirect "yunohost.local" to 192.168.1.21). ### SFR Box If you haven't found your server private IP, you may find it using the SFR box admin panel: diff --git a/dns_local_network_fr.md b/dns_local_network_fr.md index 19e7cfbd..427ae87c 100644 --- a/dns_local_network_fr.md +++ b/dns_local_network_fr.md @@ -19,7 +19,7 @@ Vous pouvez retrouver l’adresse privée de votre serveur de différentes mani ## Configurer le DNS de la box ou du routeur -L'idée ici est de créer une redirection qui sera active sur tout votre réseau. Le but est de créer une redirection DNS vers l'ip de votre serveur YunoHost dans votre box. Il faut donc accéder à l'interface de configuration de votre box et aux parametrages DNS, puis créer la redirection locale (par exemple, yunohost.local renvoi sur 192.168.21). +L'idée ici est de créer une redirection qui sera active sur tout votre réseau. Le but est de créer une redirection DNS vers l'ip de votre serveur YunoHost dans votre box. Il faut donc accéder à l'interface de configuration de votre box et aux paramétrages DNS, puis créer la redirection locale (par exemple, yunohost.local renvoi sur 192.168.21). ### Box SFR Si vous ne disposez toujours pas de l’adresse IP privée de votre serveur, vous pouvez la trouver sur l’interface de votre box SFR : diff --git a/dns_resolver.md b/dns_resolver.md index 7298f577..de33802b 100644 --- a/dns_resolver.md +++ b/dns_resolver.md @@ -1,5 +1,7 @@ # YunoHost DNS Resolver ++
This page is deprecated / obsolete. Information it contains should be updated (or should be removed).
+ ### Presentation YunoHost provide a DNS service for DNS name resolution. Usually, your server is not configured to use it, it's your ISP DNS. For instance, for the Free ISP with Freebox router the DNS resolver IP is `192.168.0.254`. diff --git a/dns_resolver_fr.md b/dns_resolver_fr.md index d396a1a0..8f9060eb 100644 --- a/dns_resolver_fr.md +++ b/dns_resolver_fr.md @@ -1,5 +1,7 @@ # Résolveur DNS de YunoHost +
Cette page est dépréciée / obsolète. Les informations présentées ont besoin d'être mise à jour (ou doivent être retirée).
+ ### Présentation YunoHost est installé avec un service DNS pour la résolution des noms de domaine. En général, votre serveur n’est pas configuré, c’est celui de votre FAI. Par exemple pour une Freebox la résolution se fait par l’adresse `192.168.0.254`. diff --git a/docker.md b/docker.md index 715fa023..00988d58 100644 --- a/docker.md +++ b/docker.md @@ -2,8 +2,20 @@
-This page isn't valid anymore, YunoHost 2.4 doesn't work anymore on Docker -because YunoHost requires systemdn and Docker has chosen to not support it (and +Yunohost doesn't support Docker officially since issues with versions 2.4+. +In question, YunoHost 2.4 doesn't work anymore on Docker +because YunoHost requires systemd and Docker has chosen to not support it natively (and there are other problems link to the firewall and services).
+ +## Community images + +However, community images exist and are available on Docker Hub : + + * AMD64 (classic) + * https://hub.docker.com/r/domainelibre/yunohost2/ (Yunohost v2.7) + * ARMV7 (raspberry pi 2/3 ...) + * https://hub.docker.com/r/domainelibre/yunohost2-arm/ (Yunohost v2.7) + * ARMV6 (raspberry pi 1) + * https://hub.docker.com/r/tuxalex/yunohost-armv6/ diff --git a/docker_fr.md b/docker_fr.md index f89edf58..98a85c4f 100644 --- a/docker_fr.md +++ b/docker_fr.md @@ -2,9 +2,20 @@
-Cette page n'est plus valide, YunoHost 2.4 ne marche PLUS sous Docker car -YunoHost dépend désormait de systemd et que docker a décidé qu'ils ne le -supporteraient pas (et il y a d'autres problèmes liés au firewall et aux +Yunohost ne supporte plus officiellement Docker depuis les problèmes rencontrés avec la version 2.4+. +En cause, YunoHost dépend désormait de systemd et docker a décidé qu'ils ne le +supporteraient pas nativement (et il y a d'autres problèmes liés au firewall et aux services).
+ +## Images communautaires + +Cependant il existe des images communautaires disponibles sur Docker Hub : + + * AMD64 (classique) + * https://hub.docker.com/r/domainelibre/yunohost2/ (Yunohost v2.7) + * ARMV7 (raspberry pi 2/3 ...) + * https://hub.docker.com/r/domainelibre/yunohost2-arm/ (Yunohost v2.7) + * ARMV6 (raspberry pi 1) + * https://hub.docker.com/r/tuxalex/yunohost-armv6/ diff --git a/docs.md b/docs.md index ebf050cf..8998d56c 100644 --- a/docs.md +++ b/docs.md @@ -23,9 +23,11 @@ YunoHost's documentation has 3 different sections: -
-
- Sitemap -

List of all pages of the web site

-
-
+* Project's life: + * [Frequently asked questions](/faq_en) + * [Project organization](/project_organization) + * [Blog](https://forum.yunohost.org/c/announcement) + * [Forum](https://forum.yunohost.org) + * [Chat rooms](/chat_rooms_en) + * [Communication](/communication_en) + * [Support / Help](/help) diff --git a/docs_ar.md b/docs_ar.md new file mode 100644 index 00000000..d4a85215 --- /dev/null +++ b/docs_ar.md @@ -0,0 +1,33 @@ +#
الدليل
+ +

+دليل واي يونوهوست YunoHost يرتكز أساسًا على ثلاثة محاور : +

+ +
+ +
+ دليل المستخدم +

كل ما يخص طريقة استخدام السيرفر يوميًا

+
+ +
+ دليل المدير +

يتطرق إلى طريقة التنصيب و إدارة السيرفر و التطبيقات

+
+ +
+ دليل المساهم +

يحتوي على كافة المعلومات التي تخصنا و أسلوب عملنا و مساهمتنا

+
+ +
+ +* Project's life: + * [Frequently asked questions](/faq_en) + * [Project organization](/project_organization) + * [Blog](https://forum.yunohost.org/c/announcement) + * [Forum](https://forum.yunohost.org) + * [Chat rooms](/chat_rooms_en) + * [Communication](/communication_en) + * [Support / Help](/help) diff --git a/docs_fr.md b/docs_fr.md index bb92c933..a7167a6d 100644 --- a/docs_fr.md +++ b/docs_fr.md @@ -23,10 +23,11 @@ La documentation de YunoHost s’articule autour de trois sections : -
-
- Plan du site -

Liste de toutes les pages du site

-
- -
\ No newline at end of file +* Vie du projet : + * [Foire aux questions](/faq_fr) + - [Organisation du projet](project_organization_fr) + * [Blog](https://forum.yunohost.org/c/announcement) + - [Forum](https://forum.yunohost.org) + - [Salons de discussions](/chat_rooms_fr) + * [Communication extérieure](/communication) + * [Support / Aide](/help_fr) diff --git a/email.md b/email.md deleted file mode 100644 index 5f7bee88..00000000 --- a/email.md +++ /dev/null @@ -1,15 +0,0 @@ -# Email - -### Summary -* [Configure email client](email_configure_client_en) -* [MX DNS zone](/dns_config_en) -* [Open ports on the router](/isp_box_config_en) -* [Migrate emails](email_migration_en) -* [Forms to remove blacklisting of your IP address](blacklist_forms_en) -* [Use DKIM](dkim_en) - -#### YunoHost provides -* [Postfix](http://www.postfix.org): a SMTP email server -* [Dovecot](http://www.dovecot.org): an IMAP email server -* [Rspamd](https://rspamd.com): an antispam -* [RoundCube](/apps): a webmail diff --git a/email_configure_client.md b/email_configure_client.md index 6ffded1b..1d513bc0 100644 --- a/email_configure_client.md +++ b/email_configure_client.md @@ -1,40 +1,28 @@ -## Configuration desktop email client +## Configuring email client -*[Documentation linked to YunoHost email](/email_fr)*. +You can fetch and send emails using your YunoHost instance from desktop email clients such as Mozilla Thunderbird or on your smartphone with applications like K-9 Mail. -You can access your emails via desktop email clients such as Mozilla Thunderbird. +##### Generic settings -#### Requirements -* Email address -* Password of the user account +| Protocol | Port | Encryption | Authentication | Username | +| :--: | :-: | :--: | :--: | :--: | +| IMAP | 993 | SSL/TLS | Normal password | `username` (without the `@domain.tld`) | +| SMTP | 587 | STARTTLS | Normal password | `username` (without the `@domain.tld`) | -##### Settings -| Protocol | Port | Encryption | -| :--: | :-: | :--: | -| IMAP | 993 | SSL/TLS | -| SMTP | 465 | SSL/TLS | +### Configure Mozilla Thunderbird (on a desktop computer) -#### Mozilla Thunderbird +The automatic detection tool of Thunderbird does not work yet with YunoHost. You will need to set it up manually. To do so, add the account information, then select port 993 with SSL/TLS for IMAP, and port 587 with STARTTLS for SMTP. Afterwards select 'Normal Password' for Authentication and click on 'Advanced Config'. You will need to accept the certificate exceptions for fetching mails and after you send your first mail. Don't forget to remove the dot before the domain name. -The automatic detection tool of Thunderbird does not work with YunoHost. You will need to set it up manually. To do so, add the account information, then select SSL/TLS for IMAP and SMTP. Afterwards select 'Normal Password' for Authentication and click on 'Advanced Config'. You will need to accept the certificate exceptions for fetching mails and after you send your first mail. Remove dot before domain name. - - + + * [Manage alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases) -#### For Android -[K-9 Mail](https://en.wikipedia.org/wiki/K-9_Mail) application works. +### Configure K-9 Mail (on Android) -#### For Firefox OS +Follow the following steps. (As for thunderbird, you might need to accept certificates at some points) -Tested with Firefox OS 2.6. -On the home screen, enter the user name and the email address. Then use manual configuration: - - - -Configure manually the form as shown on following screenshots: - - - - - + + + + diff --git a/email_configure_client_fr.md b/email_configure_client_fr.md index 89eae011..af527712 100644 --- a/email_configure_client_fr.md +++ b/email_configure_client_fr.md @@ -1,40 +1,28 @@ -## Configuration client email de bureau +## Configuration desktop email client -*[Documentation en rapport avec l’email de YunoHost](/email_fr)*. +Vous pouvez récupérer et envoyer des emails avec votre instance YunoHost grâce à des logiciels comme Mozilla Thunderbird, ou sur votre smartphone grâce à des applications comme K-9 Mail. -Il est possible d’accéder à ses emails grâce à un client lourd de messagerie électronique tel que Mozilla Thunderbird. +##### Réglages génériques -#### Prérequis -* Adresse email principale -* Mot de passe du compte utilisateur +| Protocole | Port | Chiffrement | Authentification | Login | +| :--: | :-: | :--: | :--: | :--: | +| IMAP | 993 | SSL/TLS | Mot de passe normal | `nom_dutilisateur` (sans `@domain.tld`) | +| SMTP | 587 | STARTTLS | Mot de passe normal | `nom_dutilisateur` (sans `@domain.tld`) | -#### Réglages génériques -| Protocole | Port | Chiffrement | -| :--: | :-: | :--: | -| IMAP | 993 | SSL/TLS | -| SMTP | 465 | SSL/TLS | +### Configurer Mozilla Thunderbird -#### Mozilla Thunderbird -L’utilitaire de détection automatique de Thunderbird ne fonctionne pas avec le serveur email de YunoHost. Il faut donc passer en configuration manuelle. N’oubliez pas d’enlever le point devant le nom de domaine. +L'outil de détection automatique de Thunderbird ne fonctionne actuellement pas avec YunoHost. Il vous faudra remplir les champs manuellement. Commencez par remplir les informations de base (Nom, adresse et mot de passe), cliquez sur Continuer puis Configuration Manuelle. Enlevez le `.` avant le nom de domaine. Sélectionnez le port 993 avec SSL/TLS pour IMAP, et le port 587 avec STARTTLS pour SMTP. Sélectionnez 'Mot de passe normal' pour l'authentification. Testez la configuration puis validez. (Il vous faudra ensuite possiblement accepter des certificats pour que tout fonctionne correctement.) - + + -* [Gestion des alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases) +* [Gérer les alias mails](https://support.mozilla.org/en-US/kb/configuring-email-aliases) -#### Pour Android -L’application [K-9 Mail](https://github.com/k9mail) fonctionne. +### Configurer K-9 Mail (sur Android) +Suivez les instructions suivantes. (Comme pour Thunderbird, il vous faudra peut-être accepter des certificats à un moment) -#### Pour Firefox OS - -Testé avec Firefox OS 2.6. -Sur la page d’accueil, entrez votre nom d’utilisateur et l’adresse email, puis allez dans la configuration manuelle : - - - -Configurer manuellement le formulaire comme indiqué sur les captures d’écran suivantes : - - - - - + + + + diff --git a/email_fr.md b/email_fr.md index 237e3408..93ea96de 100644 --- a/email_fr.md +++ b/email_fr.md @@ -17,7 +17,7 @@ Suivez [ce guide](email_migration_fr) pour transférer vos Si vous avez opté pour un nom de domaine personnel, il est nécessaire de [configurer votre serveur DNS](/dns_config_fr) pour faire fonctionner la messagerie électronique. #### Ouverture des ports -Vérifiez également que les ports correspondant à la messagerie (n° 25, 465 et 993) sont bien ouverts au niveau de votre box ou de votre routeur. [Tutoriel d’ouverture des ports de la box](/isp_box_config_fr). +Vérifiez également que les ports correspondant à la messagerie (n° 25, 587 et 993) sont bien ouverts au niveau de votre box ou de votre routeur. [Tutoriel d’ouverture des ports de la box](/isp_box_config_fr). #### Configurer l’authentification DKIM/SPF (facultatif) Le protocole SMTP ne prévoit pas de mécanisme de vérification de l’expéditeur. Il est donc possible d’envoyer un courrier avec une adresse d’expéditeur factice ou usurpée. SPF et DKIM sont deux mécanismes possibles d’authentification de l’expéditeur d’un email. [Tutoriel pour configurer DKIM/SPF](dkim_fr). @@ -27,10 +27,28 @@ Le protocole SMTP ne prévoit pas de mécanisme de vérification de l’expédit Si les courriels envoyés à un type d’adresse spécifique (par exemple les adresses Gmail) n’arrivent pas à destination, votre serveur (son adresse IP) a peut être été ajouté à la liste noire du fournisseur d’adresse courriel en question. Pour résoudre ce problème voici les [formulaires de retrait des listes noires](blacklist_forms_fr). #### Consulter les fichiers de log pour identifier le problème -De nombreux messages permettant d’identifier les problèmes se trouvent enregistrés dans les fichiers de log du système. [Apprenez à les consulter](check_logfile_fr), pour pouvoir mieux comprendre ce qui cloche et trouver de l’aide sur le forum ou le salon de support. +De nombreux messages permettant d’identifier les problèmes se trouvent enregistrés dans les fichiers de log du système. Apprenez à les consulter, pour pouvoir mieux comprendre ce qui cloche et trouver de l’aide sur le forum ou le salon de support. +#### Je suis capable de recevoir mais pas d'envoyer des mails + +Cela peut être dû au fait que le port 25 est fermé, et que votre fournisseur d'accès internet ne vous permet pas de l'ouvrir (pour lutter contre le spam)... + +Une solution de contournement consiste, soit à utiliser un VPN (ce qui nécessitera un abonnement chez un fournisseur, et de configurer l'app vpnclient), soit à utiliser un relai SMTP. + +Attention : dans le cas d'un relai SMTP, ***la personne ou l'organisme qui possède le relai sera techniquement très facilement capable de lire tout mail non-chiffré transitant entre votre serveur et le reste d'Internet ! Vous lui faites donc confiance à propos de toute information personelle ou critique que pourrait contenir vos mails !*** + +Pour mettre en place le relai SMTP, il faut modifier le fichier `/etc/postfix/main.cf`. +Chercher la ligne contenant `relayhost = ` et la remplacer par `relayhost = smtp..tld`. Par exemple: `relayhost = smtp.free.tld`. +Si la ligne n'existe pas ajouter la ligne à la fin du fichier. + +**Plus d'informations** +- https://yunohost.org/#/isp_fr +- https://yunohost.org/#/isp_orange_fr +- https://yunohost.org/#/isp_sfr_fr +- https://yunohost.org/#/isp_free_fr + ### Aller plus loin La messagerie électronique est basée sur les protocoles SMTP pour l’envoi de mail et IMAP (ou anciennement POP3) pour la récupération des messages depuis un serveur. En arrière-plan, YunoHost fournit : * [Postfix](http://www.postfix.org) en tant que serveur SMTP. diff --git a/email_migration.md b/email_migration.md index 0cb935d9..ed3be717 100644 --- a/email_migration.md +++ b/email_migration.md @@ -1,4 +1,4 @@ -# Migrate his emails +# Migrating email from an email provider to a YunoHost instance *[Documentation linked to YunoHost email](/email_fr)*. @@ -9,6 +9,7 @@ This tool must be installed on your desktop computer. The transfer method looks **`Old email server −> desktop computer with ImapSync or Larch −> new email server`** ### ImapSync + [ImapSync site](http://imapsync.lamiral.info/) Install ImapSync on your client computer by following this [guide](http://imapsync.lamiral.info/INSTALL): @@ -24,6 +25,7 @@ imapsync --host1 --port1 993 --ssl1 --user1 --password1 ordinateur client avec ImapSync ou Larch −> nouveau serveur email`** ### ImapSync + [Site d’ImapSync](http://imapsync.lamiral.info/) Installez ImapSync sur votre ordinateur client en suivant ce [guide](http://imapsync.lamiral.info/INSTALL) : @@ -24,6 +25,7 @@ imapsync --host1 --port1 993 --ssl1 --user1 --passwor Notez que les paramètres de transfert `--port 993` et `--ssl` sont spécifique à un serveur de mail YunoHost. ### Larch + [Site de Larch](https://github.com/rgrove/larch/) Après avoir préalablement installé `gem`, installez `larch` sur votre ordinateur client : diff --git a/external_storage.md b/external_storage.md new file mode 100644 index 00000000..79062327 --- /dev/null +++ b/external_storage.md @@ -0,0 +1,116 @@ +# Adding an external storage to your server + +## Introduction + +If you did not allocate a large partition to `/home` before installing YunoHost, and that your apps require a lot of spaces, you can still add an external driver after setting up your system. + +## Before starting + +Even though these steps are relatively simple, they may appear technical. In any case, they require you to **take your time**. + +You should be connected as root on your server, for instance via [SSH](/ssh). (Note: being logged as `admin`, you can upgrade to `root` with the command `sudo su`) + +It can be useful to [create a backup](/backup) of your install before starting. + +You should also have your external drive (plugged via USB or SATA). + +## 1. Connect and identify the disk + +Start by connecting your drive to the system. You shall then identify which name is used by the system to refer to the disk. + +You can do this with this command : + +```bash +lsblk +``` + +It may yield something like this : + +```bash +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT +sda 8:0 0 931.5G 0 disk +└─sda1 8:1 0 931.5G 0 part +mmcblk0 179:0 0 14.9G 0 disk +├─mmcblk0p1 179:1 0 47.7M 0 part /boot +└─mmcblk0p2 179:2 0 14.8G 0 part / +``` + +Here, `mmcblk0` corresponds to an SD card of 16Go (the partitions `mmcblk0p1` et `mmcblk0p2` are used as the boot partition `/boot` and the system partition `/`). The external drive is `sda` which is about 1TB and has only one partition `sda1` which is not mounted (no "MOUNTPOINT"). + +
+ On a different setup, your system partition might be `sda` and so your external drive might be `sdb` for instance. +
+ +## 2. (Optionnal) Format the disk + +If you want, you can format the disk before starting to use it. You should be aware that **formating a drive implies to erasing every data on it !** If your disk is already "clean", you may ignore this step. + +To format the partition : + +```bash +mkfs.ext4 /dev/YOUR_DISK +# then 'y' to validate +``` + +(Replace `YOUR_DISK` by the name of the disk. Be careful not to do any mistake here, as it can mean erasing data on your main system if you are using the wrong name ! In the previous example, the name of our disk was `sda`.) + +Then, let's create a new partition on the disk which just got formatted : + +```bash +fdisk /dev/YOUR_DISK +``` + +then sucessfully type `n`, `p`, `1`, `Enter`, `Enter`, then `w` to create the new partition. + +Check with `lsblk` that your disk really does contain a single partition. + +## 3. Mount the disk + +"Mounting" a disk corresponds to making it effectively accessible in the filesystem tree. Here, we choose the arbitrary name `/media/storage` but you can choose a different name (for instance, `/media/my_disk` ... ). + +Let's start by creating the directory : + +```bash +mkdir /media/storage +``` + +Then we can manually mount the disk with : + +```bash +mount /dev/YOUR_DISK1 /media/storage +``` + +(Here, `/dev/YOUR_DISK1` corresponds to the first partition on the disk) + +Next, you should be able to create files in `/media/stockage`, and, for instance, add `/media/stockage` as an external drive in Nextcloud. + +## 4. Mount the disk automatically at boot + +So far, we only mounted the disk manually. But it can be nice and useful to have it being mounted automatically at each boot. + +Let's start by finding the UUID (universal identifier) of the disk with : + +```bash +blkid | grep "/dev/YOUR_DISK1:" +# Should return something like +# /dev/sda1:UUID="cea0b7ae-2fbc-4f01-8884-3cb5884c8bb7" TYPE="ext4" PARTUUID="34e4b02c-02" +``` + +Let's add a line in the file `/etc/fstab` which manages which disks are mounted at boot. We open this file with `nano` : + +```bash +nano /etc/fstab +``` + +And add this line : + +```bash +UUID="cea0b7ae-2fbc-4f01-8884-3cb5884c8bb7" /media/storage ext4 defaults,nofail 0 0 +``` + +(this line should be adapated according to previous info and choices) + +Use Ctrl+X then `y` to save. + +You can then reboot the system to test if the disk is mounted automatically. + diff --git a/external_storage_fr.md b/external_storage_fr.md new file mode 100644 index 00000000..602dd5f3 --- /dev/null +++ b/external_storage_fr.md @@ -0,0 +1,115 @@ +# Ajouter un stockage externe à son serveur + +## Introduction + +Si vous n'avez pas dédié une grande partition à `/home` avant d'installer YunoHost, et que vos applications nécessitent beaucoup d'espace disque, vous pouvez toujours ajouter un disque externe *a posteriori*. + +## Avant de commencer + +Les étapes à réaliser, même si elles sont relativement simples, peuvent parfois paraître techniques et nécessitent dans tous les cas **de prendre son temps**. + +Vous devez également être connecté en root sur votre système, par exemple via [SSH](/ssh). (Note : en étant connecté en tant qu'utilisateur `admin`, vous pouvez passer root avec `sudo su`) + +Il peut être utile de [faire un backup](/backup) de votre installation. + +Vous devez également disposer d'un disque dur supplémentaire (branché en USB ou en SATA). + +## 1. Connecter et identifier le disque + +Commencez par brancher ce disque dur à votre système. Il faut ensuite identifier sous quel nom est désigné le disque par le système. + +Pour cela, utilisez la commande : + +```bash +lsblk +``` + +Elle peut renvoyer quelque chose comme : + +```bash +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT +sda 8:0 0 931.5G 0 disk +└─sda1 8:1 0 931.5G 0 part +mmcblk0 179:0 0 14.9G 0 disk +├─mmcblk0p1 179:1 0 47.7M 0 part /boot +└─mmcblk0p2 179:2 0 14.8G 0 part / +``` + +Ici, `mmcblk0` corresponds à une carte SD de 16Go (on voit que les partitions `mmcblk0p1` et `mmcblk0p2` correspondent à la partition de démarrage `/boot` et à la partition système `/`). Le disque dur branché corresponds à `sda` qui fait environ 1To, et contient une seule partition `sda1` qui n'est pas monté (pas de "MOUNTPOINT"). + +
+ Sur un autre système, il se peut que votre système soit installé sur `sda` et que votre disque soit alors `sdb` par exemple. +
+ +## 2. (Optionnel) Formater le disque + +Si vous le souhaitez, vous pouvez formater votre disque avant de l'utiliser. Attention : **formatter un disque implique de supprimer toutes les données inscrites dessus !** Si votre disque est déjà "propre", vous pouvez passer cette étape. + +Pour formater la partition : + +```bash +mkfs.ext4 /dev/VOTRE_DISQUE +# puis 'y' pour valider +``` + +(Remplacez `VOTRE_DISQUE` par le nom du disque. Attention à ne pas vous tromper de nom, car cela peut avoir pour conséquence de formatter un autre disque que celui voulu ! Dans l'exemple donné précédemment, il s'agissait de `sda`.) + +Ensuite, créons une nouvelle partition sur le disque qui viens d'être formatté : + +```bash +fdisk /dev/VOTRE_DISQUE +``` + +puis entrez successivement `n`, `p`, `1`, `Entrée`, `Entrée`, et `w` pour créer une nouvelle partition. + +Vérifiez avec `lsblk` que vous avez bien votre disque contenant une seule partition. + +## 3. Monter le disque + +"Monter" un disque corresponds à le rendre effectivement accessible dans l'arborescence des fichiers. Nous allons choisir arbitrairement de monter le disque dans `/media/stockage` mais vous pouvez le nommer différement (par exemple `/media/mon_disque` ...). + +Commençons par cŕeer le répertoire : +```bash +mkdir /media/stockage +``` + +Puis nous pouvons monter le disque manuellement avec : + +```bash +mount /dev/VOTRE_DISQUE1 /media/stockage +``` + +(Ici, `/dev/VOTRE_DISQUE1` corresponds à la première partition sur le disque) + +Ensuite, vous devriez pouvoir créer des fichiers dans `/media/stockage`, et, par exemple, ajouter `/media/stockage` comme périphérique externe dans Nextcloud. + +## 4. Monter le disque automatiquement au démarrage + +Jusqu'ici, nous avons monté manuellement le disque. Cependant, il peut être utile de configurer le système pour qu'il monte automatiquement le disque après un démarrage. + +Pour commencer, trouvons l'UUID (identifiant universel) de notre disque avec : + +```bash +blkid | grep "/dev/VOTRE_DISQUE1:" +# Retourne quelque chose comme : +# /dev/sda1:UUID="cea0b7ae-2fbc-4f01-8884-3cb5884c8bb7" TYPE="ext4" PARTUUID="34e4b02c-02" +``` + +Ajoutons alors une ligne au fichier `/etc/fstab` qui gère le montage des disques au démarrage. On ouvre donc le fichier avec `nano` : + +```bash +nano /etc/fstab +``` + +Puis on ajoute cette ligne : + +```bash +UUID="cea0b7ae-2fbc-4f01-8884-3cb5884c8bb7" /media/stockage ext4 defaults,nofail 0 0 +``` + +(il faut adapter cette ligne en fonction des informations et choix précédents) + +Utiliser Ctrl+X puis `o` pour sauvegarder. + +Vous pouvez ensuite tester de redémarrer le système pour voir si le disque est monté automatiquement. + diff --git a/faq.md b/faq.md index ec3fd498..97c4f452 100644 --- a/faq.md +++ b/faq.md @@ -1,17 +1,131 @@ -# Frequently asked questions +# Frequently Asked Questions -#### YunoHost ported on Ubuntu? -YunoHost team does not have energy to port and maintain YunoHost on Ubuntu. -#### YunoHost is distributed under which license? +#### Under which licence is YunoHost distributed? + YunoHost packages are under free licenses GNU AGPL v.3. YunoHost is based on Debian, so on licenses of Debian based elements. -Applications and applications packages have there respectives licenses. +Applications and applications packages have their respectives licenses. -#### Can we host many independents websites with differents domain names? -We can host many websites cause YunoHost is multi-domain and that some applications for websites management, like *WordPress* or *Web App Multi Custom*, are multi-instances, which means that the application can be installed many times. -#### Why can I access to applications via the IP address? -The [SSO](https://github.com/Kloadut/SSOwat/) does not allow access to the user part (apps included) via an IP address. For this purpose, you should use a domain name. One trick could be to modify the [`hosts` file (last §)](dns_local_network_en) of your desktop computer with a domain name that you don't need to own. \ No newline at end of file +#### What is the goal of YunoHost? + +We believe that decentralizing the Internet, and people taking back control and +responsability over their own data and services, is a crucial issue to guarantee +a free and democratic society. + +The YunoHost project aims to democratize self-hosting. + +It provides a software that aim to make it easy for people to run and +administrate their own server, with minimal knowledge and time required. + + +#### But what does YunoHost *do* exactly? + +YunoHost may be called a distribution or an operating system, but it's actually +"just" a simple layer added over the top of Debian, which does most of the hard +work for you. + +For instance, if you wanted to install Wordpress, you would need to type a bunch +of commands to create some users, setup a web server, setup a SQL server, +download the wordpress archive, uncompress it, configure the web server, +configure the SQL database, and finally configure wordpress. YunoHost handle +the technical mess and "type all these commands for you", so that you can focus +on what really matters. + +More info on [this page](whatsyunohost) ! + +#### Can I host my own personnal website with YunoHost? + +Yes ! Have a look at the [Custom Web app](https://github.com/YunoHost-Apps/my_webapp_ynh). +It provides an "empty shell" : after installing it, just upload your files +(via SSH/SCP or SFTP) to the right location. You can have PHP and a SQL database +if you need. + + +#### Can I host many independents websites with different domain names? + +Yes ! YunoHost is multi-user and multi-domain. Some applications like *WordPress* or *Web App Multi Custom*, are multi-instances, which means that the application can be installed many times. + + +#### Why can't I access to applications via the IP address? + +The [SSO](https://github.com/Kloadut/SSOwat/) (single sign-on) cannot properly authenticate users when they access your server with only its IP. If you really can't configure the DNS properly, you can temporarily work around it by [modifying the `hosts` file (last §)](dns_local_network_en) on your computer. + + +#### What's YunoHost's business model? + +At the moment, YunoHost is maintained only by volunteers working in their free +time. Basically no money is involved in the project (apart from server fees +or stickers :P). + +Considering that a few contributors are investing a large amount of time in the +project, we are thinking about ways to make the project sustainable. + +This could be achieved via donations, public fundings, and a few contributors +have professional activities related to YunoHost. + + +#### Can I make donations to the project? + +Yes, you can ! YunoHost needs money to pay servers and domain names. We would +also like contributors to be able to continue contributing rather than look for +jobs elsewhere. + +You can donate on [Liberapay](https://liberapay.com/yunohost). + +If you can, you can also make in-kind contributions, like servers (some of our +infrastructure relies on servers from a few associations). + + +#### How can I contribute to the project? + +There are [many ways to contribute](contribute) :). + +Don't hesitate to come talk to us about your ideas! + +A common misconception for newcomers in free software projects is to think that +they are "not skilled enough". In practice, nobody is "skilled" :). What really +matter is : [liking what you do](https://www.youtube.com/watch?v=zIbR5TAz2xQ&t=113s), +being friendly with other human beings, being patient and stubborn with machines, +and having some free time. Other than that, just doing what you can is already awesome! + + +#### What's YunoHost's political model? + +It is described in [this document](https://github.com/YunoHost/project-organization/blob/master/yunohost_project_organization.md) :). + + +#### Will you port YunoHost to [insert favorite distro] ? + +Short answer: No. We don't have the energy for it and this is irrelevant. + +Long answer +
+

If you care about distrowars, or think 'Debian is dirty', you are not the public of YunoHost.

+ +

YunoHost is aimed at non-tech people who just want their server to work. Debian has its flaws, but it's (one of?) the most widely known and used distribution for servers. It's stable. Most self-hosted softwares are one way or another compatible with Debian. It's easily hackable by anybody who's been doing a bit of CLI on their personal Ubuntu/Mint computer. There is no killer feature in other distributions that makes it relevant for YunoHost to switch or port it.

+ +

If this does not convince you, there are other projects running on other distributions or with different philosophy.

+
+ + +#### I checked how apps packaging work. Why are you reinventing [insert favorite package format] ? + +Short answer: We are not. + +Medium answer: Apps were packaged in .deb in the past. It was a nightmare. We're happy now ;). + +Long answer +
+ +

YunoHost aims to make packaging easy. The idea from the beginning was to keep it as simple as « if you can install the app manually, then you can easily copy/paste steps into a basic install/remove package with no particular training ». This is not the case with Debian packages.

+ +

Turns out, YunoHost apps packaging holds a subtly different purpose than traditional packaging like .deb. Debian packages fulfill the low-level purpose of installing files, commands, programs and services on the system. It is often your duty to configure them properly, simply because there is no standard server setup. Typically, web apps requires a lot of configuration because they rely on a web server and a database (and the single sign-on).

+ +

YunoHost manipulates high-level abstractions (apps, domains, users, ...) and defines a standard setup (Nginx, Postfix, Metronome, SSOwat, ...) and, because of this, can handle the configuration for the user.

+ +

If you still think deb packages can be hacked to do this, see previous answers.

+
diff --git a/faq_fr.md b/faq_fr.md index 0c12a021..b598c328 100644 --- a/faq_fr.md +++ b/faq_fr.md @@ -1,17 +1,124 @@ # Foire aux questions -#### Est-ce que YunoHost est porté sous Ubuntu ? -L’équipe de YunoHost n’a pas l’énergie de porter ni de maintenir YunoHost sur Ubuntu. +#### Sous quelle licence est distribué YunoHost ? -#### YunoHost est distribuée sous quelle licence ? Les paquets qui composent YunoHost sont sous licence libre GNU AGPL v.3. YunoHost est basé sur Debian, donc sur les licences des éléments sur lesquels Debian est basé. -Les applications et les packages d’applications ont leurs licences respectives. +Les applications et leurs paquets ont leurs licences respectives. + + +#### Quel est l’objectif de YunoHost ? + +Nous pensons que la décentralisation d’Internet, et la reprise du contrôle et +de la responsabilité des données et services par les citoyens est un enjeu +crucial pour garantir une société libre et démocratique. + +Le projet YunoHost cherche à démocratiser l’auto-hébergement. + +Nous fournissons un logiciel qui cherche à rendre simple le fait de gérer et +d’administrer un serveur soi-même, en minimisant les compétences et le temps +requis. + + +#### Mais qu’est-ce que ça fait *vraiment* ? + +YunoHost peut être appelé une distribution ou un système d’exploitation, mais +dans les faits, c’est une « simple » sur-couche à Debian, qui gère les +manipulations pénibles à votre place. + +Par exemple, pour installer un Wordpress à la main, il vous faudrait taper +toute une série de commande pour créer des utilisateurs, mettre en place un +serveur web, mettre en place un serveur SQL, télécharger l’archive de Wordpress, +la décompresser, configurer le serveur web, configurer la base de données SQL, et finalement configurer Wordpress. YunoHost gère toute cette partie technique et « tape les commandes à votre place », pour que vous puissiez vous concentrer sur ce qui compte vraiment. + +Plus d’informations sur [cette page](whatsyunohost) ! + + +#### Puis-je gérer mon propre site web avec YunoHost ? + +Oui ! Il faut regarder du côté de [cette app](https://github.com/YunoHost-Apps/my_webapp_ynh). +Elle fournit une « coquille vide » : après l’installation, il suffit d’envoyer vos fichiers (via SSH/SCP ou SFTP) au bon endroit. Il est aussi possible +d’avoir du PHP et une base de donnée SQL si besoin. + #### Peut-on héberger plusieurs sites indépendants avec des noms de domaines différents ? + On peut tout à fait héberger plusieurs sites web car YunoHost est multi-domaine et que certaines applications de gestion de sites web, comme *WordPress* ou *Web App Multi Custom*, sont multi-instances, c’est-à-dire que l’application peut-être installée plusieurs fois. #### Pourquoi je ne peux pas accéder à mes applications avec l’adresse IP ? -Le [SSO](https://github.com/Kloadut/SSOwat/) ne permet pas d’accéder à la partie utilisateur (applications incluses) avec une adresse IP. Pour cela, il faut utiliser un nom de domaine. Une des astuces consiste à modifier le [fichier `hosts` (dernier §)](dns_local_network_fr) de son ordinateur de bureau avec un nom de domaine que l’on n’est pas obligé de posséder. + +Pour des raisons techniques, le [SSO](https://github.com/YunoHost/SSOwat/) ne permet pas aux utilisateurs de se connecter à l’espace utilisateur lorsque l’on accède au serveur uniquement avec l’IP. Si vous ne pouvez réellement pas configurer un nom de domaine, une solution temporaire peut être de modifier le [fichier `hosts` (dernier §)](dns_local_network_fr) de son ordinateur. + + +#### Quel est le modèle économique de YunoHost ? + +À l’heure actuelle, YunoHost est maintenu uniquement par une équipe de bénévole +travaillant pendant leur temps libre. Il n’y a pas d’argent impliqué dans le +projet (hormis quelques frais de serveurs et stickers :P). + +Étant donné que certains contributeurs sont très engagés dans ce projet, nous réfléchissons à un moyen de rendre pérenniser le projet. + +Il est question de financement par dons ou subventions, certains contributeurs mènent par ailleurs des activités professionnelles liées à YunoHost, . + + +#### Puis-je faire un don au projet ? + +Oui, c'est possible ! YunoHost a besoin de payer des serveurs et noms de domaine, par ailleurs nous souhaiterions pouvoir permettre aux développeurs principaux de pouvoir continuer à développer YunoHost plutôt que de chercher des emplois ailleurs. + +Pour donner ça se passe via notre [Liberapay](https://liberapay.com/YunoHost) + +Si vous le pouvez, vous pouvez aussi faire des contributions en nature (une partie de notre infrastructure viens d'association qui nous fournissent des serveurs). + + +#### Comment puis-je contribuer au projet ? + +Il y existe [plusieurs façons de contribuer](contribute) :). + +N’hésitez pas à venir nous parler de vos idées! + +Une idée répandue parmi les nouveaux contributeurs aux logiciels libres est +de ne pas être « assez compétent ». En pratique, croyez-le, personne n’est +compétent :). Ce qui compte vraiment est : [d’aimer ce que vous faites](https://www.youtube.com/watch?v=zIbR5TAz2xQ&t=113s), +être sympathique avec les autres êtres humains du projet, être patient et têtu +avec les machines, et avoir du temps libre. À part ça, juste faire ce que vous +pouvez, c’est déjà trop cool ! + + +#### Quel est le modèle politique de YunoHost ? + +Il est décrit dans [ce document](https://github.com/YunoHost/project-organization/blob/master/yunohost_project_organization.md) :). + + + +#### Pouvez-vous porter YunoHost sur [ma distro préféré] ? + +Réponse courte : non. L’équipe n’a pas l’énergie et ce n’est pas pertinent pour le but recherché par YunoHost. + +Réponse longue +
+

Si vous vous préoccupez des guéguerres de distro, ou pensez que « Debian c’est sale », vous n’êtes pas le public de YunoHost.

+ +

YunoHost vise un public de non-technophile ou de bidouilleurs qui veulent simplement que le serveur fonctionne sans devoir investir des semaines entières. Debian a probablement des défauts, mais c’est une (la ?) distribution la plus connue et utilisée pour gérer des serveurs. C’est une distribution stable. La plupart des services auto-hébergeables sont compatibles d’une manière ou d’une autre avec Debian. Elle est facilement bidouillable par quelqu’un qui a déjà utilisé la ligne de commande sur son ordinateur personnel. Il n’y a pas de « killer feature » particulière dans les autres distributions qui rendrait pertinent de porter YunoHost dessus.

+ +

Si cela ne vous convient pas, il existe d’autres projets sous d’autres distributions ou avec d’autres philosophies.

+
+ +#### J’ai regardé comment le packaging des apps fonctionne. Pourquoi réinventez-vous [mon format de paquet préféré] ? + +Réponse courte : ce n’est pas ce que nous faisons. + +Réponse moyenne : Par le passé, les apps étaient gérées via des .deb. C’était cauchemardesque. Nous sommes heureux maintenant ;). + +Long answer +
+ +

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

+ +

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

+ +

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

+ +

Si vous restez persuadé que l’on peut néanmoins bricoler les paquets .deb pour gérer tout cela, voir les réponses précédentes.

+
diff --git a/hardware_fr.md b/hardware_fr.md index 72a65113..e7344b3a 100644 --- a/hardware_fr.md +++ b/hardware_fr.md @@ -1,6 +1,6 @@ # Matériel -YunoHost est compatible avec tous les types de machines courants. +YunoHost est compatible avec tous les types de machines courantes. Il est important d’identifier votre type de machine avant de procéder à l’installation. *Cliquez sur le guide correspondant à votre matériel.* diff --git a/help.md b/help.md index a0702104..615c2c9e 100644 --- a/help.md +++ b/help.md @@ -1,5 +1,57 @@ -#About this site +# Looking for help? -Unless specifically mentioned, the content of this website is licensed under the [Creative Commons ```CC-BY-SA``` license](http://creativecommons.org/licenses/by-sa/3.0/). +

Connect to the support chatroom

+
+
+ProTips™ +
    +
  • Don't ask to ask, just ask !
  • +
  • Be patient, it can take a few minutes before someone sees your messages.
  • +
+
+ + + +
+
+Note : this room is also available via XMPP (support@conference.yunohost.org), or Matrix (#freenode_#yunohost:matrix.org) +
+ +

... or ask on the forum !

+ +
+ +
+ +

You've found a bug ?

+ +
+
+Please report it on our bugtracker or contact the developers

+ + +
+
+Note : you can also connect to the devrooms, using your favorite XMPP client, to
+dev@conference.yunohost.org and apps@conference.yunohost.org
+
+ + -This wiki is powered by [Simone](https://github.com/Kloadut/Simone). diff --git a/help_ar.md b/help_ar.md new file mode 100644 index 00000000..fd038b1e --- /dev/null +++ b/help_ar.md @@ -0,0 +1,65 @@ +#
هل تبحث عن مساعدة ؟
+ +

إتصل بغرفة المساعدة

+
+
+ProTips™ +
    +
  • لا تطرح سؤالا لمُجرّد الطرح، بل إطرح سؤالك !
  • +
  • تحلّى بالصبر، في بعض الأحيان يمكن أن تمر بضع دقائق قبل أن يرى أحد المستخدمين سؤالك.
  • +
+
+
الإسم المستعار : +
+ + + +
+
+
+ملاحظة : يمكن الإتصال كذلك بغرفة المحادثة باستخدام تطبيق XMPP الخاص بك على العنوان التالي
+support@conference.yunohost.org
+
+
+ +

... أو إطرح سؤالك في المنتدى !

+ +
+
+ +
+ +

هل إكتشفت علة أو خللًا ؟

+ +
+
+يرجى الإبلاغ عن المشاكل على أداة متعقّب الأخطاء الخاصة بالمشروع أو إتصل بالمطوّرين

+
+ + + +
+
+
+
+ملاحظة : يمكن الإتصال كذلك بغرفة التطوير باستخدام تطبيق XMPP الخاص بك على العناوين التالية
+dev@conference.yunohost.org and apps@conference.yunohost.org
+
+ + diff --git a/help_fr.md b/help_fr.md index b87025c8..11fc624c 100644 --- a/help_fr.md +++ b/help_fr.md @@ -1,5 +1,62 @@ -#À propos de ce site +# Besoin d'aide ? -Sauf mention contraire, le contenu de ce site est sous [licence Creative Common ```CC-BY-SA```](http://creativecommons.org/licenses/by-sa/3.0/fr/) +

Connectez-vous au salon de support

+
+
+ProTips™ +
    +
  • Pas besoin de demander si vous pouvez poser une question - posez-la directement !
  • +
  • Soyez patient, cela peut prendre plusieurs minutes avant que quelqu'un remarque vos messages.
  • +
+
+ + + +
+
+Note : ce salon est aussi accessible via XMPP (support@conference.yunohost.org), ou Matrix (#freenode_#yunohost:matrix.org). +support@conference.yunohost.org +
+ +

... ou demandez sur le forum !

+ +
+ +
+ +

Vous avez trouvé un bug ?

+ +
+
+Vous pouvez rapporter le bug sur le bugtracker ou contacter les développeurs

+ + +
+
+Note : vous pouvez aussi vous connecter aux salons de dev, via votre client XMPP favori, à
+dev@conference.yunohost.org et apps@conference.yunohost.org
+
+ + -Ce wiki est propulsé par [Simone](https://github.com/Kloadut/Simone). diff --git a/images.md b/images.md new file mode 100644 index 00000000..f110612a --- /dev/null +++ b/images.md @@ -0,0 +1,114 @@ +# Pre-installed images + +
+
+ + + + + + diff --git a/images/Thunderbird-conf.png b/images/Thunderbird-conf.png deleted file mode 100644 index 9565c7d4..00000000 Binary files a/images/Thunderbird-conf.png and /dev/null differ diff --git a/images/backup.png b/images/backup.png new file mode 100644 index 00000000..df3cf230 Binary files /dev/null and b/images/backup.png differ diff --git a/images/certificate-after-LE-fr.png b/images/certificate-after-LE-fr.png new file mode 100644 index 00000000..c2c41313 Binary files /dev/null and b/images/certificate-after-LE-fr.png differ diff --git a/images/certificate-after-LE.png b/images/certificate-after-LE.png new file mode 100644 index 00000000..6b55fe99 Binary files /dev/null and b/images/certificate-after-LE.png differ diff --git a/images/certificate-before-LE-fr.png b/images/certificate-before-LE-fr.png new file mode 100644 index 00000000..3a50a8d1 Binary files /dev/null and b/images/certificate-before-LE-fr.png differ diff --git a/images/certificate-before-LE.png b/images/certificate-before-LE.png new file mode 100644 index 00000000..bfc896db Binary files /dev/null and b/images/certificate-before-LE.png differ diff --git a/images/certificate-signed-by-LE.png b/images/certificate-signed-by-LE.png new file mode 100644 index 00000000..aad3c51f Binary files /dev/null and b/images/certificate-signed-by-LE.png differ diff --git a/images/cubietruck.jpg b/images/cubietruck.jpg new file mode 100644 index 00000000..c9437023 Binary files /dev/null and b/images/cubietruck.jpg differ diff --git a/images/domain-certificate-button-fr.png b/images/domain-certificate-button-fr.png new file mode 100644 index 00000000..ae8c4359 Binary files /dev/null and b/images/domain-certificate-button-fr.png differ diff --git a/images/domain-certificate-button.png b/images/domain-certificate-button.png new file mode 100644 index 00000000..998c2f21 Binary files /dev/null and b/images/domain-certificate-button.png differ diff --git a/images/etcher.gif b/images/etcher.gif new file mode 100644 index 00000000..e06ce0cb Binary files /dev/null and b/images/etcher.gif differ diff --git a/images/ffos_email_config_home_screen_empty.png b/images/ffos_email_config_home_screen_empty.png deleted file mode 100644 index e2dcec25..00000000 Binary files a/images/ffos_email_config_home_screen_empty.png and /dev/null differ diff --git a/images/ffos_email_config_home_screen_fill.png b/images/ffos_email_config_home_screen_fill.png deleted file mode 100644 index eb930db0..00000000 Binary files a/images/ffos_email_config_home_screen_fill.png and /dev/null differ diff --git a/images/ffos_email_config_manual_conf_2_empty.png b/images/ffos_email_config_manual_conf_2_empty.png deleted file mode 100644 index b1181a1b..00000000 Binary files a/images/ffos_email_config_manual_conf_2_empty.png and /dev/null differ diff --git a/images/ffos_email_config_manual_conf_2_fill.png b/images/ffos_email_config_manual_conf_2_fill.png deleted file mode 100644 index 685e99e4..00000000 Binary files a/images/ffos_email_config_manual_conf_2_fill.png and /dev/null differ diff --git a/images/ffos_email_config_manual_conf_empty.png b/images/ffos_email_config_manual_conf_empty.png deleted file mode 100644 index 819688b7..00000000 Binary files a/images/ffos_email_config_manual_conf_empty.png and /dev/null differ diff --git a/images/ffos_email_config_manual_conf_fill.png b/images/ffos_email_config_manual_conf_fill.png deleted file mode 100644 index aa68e9b0..00000000 Binary files a/images/ffos_email_config_manual_conf_fill.png and /dev/null differ diff --git a/images/images.list b/images/images.list index e053b409..4289c16b 100644 --- a/images/images.list +++ b/images/images.list @@ -39,7 +39,8 @@ OVH1_domain_select.png OVH2_domain_DNS.png OVH3_zoneDNS.png Pidgin-add-acount.png -postinstall_cli2.png +piwigo.png +postinstall_cli.png postinstall_error.png postinstall_web.png Raspberry_Pi_2_Model_B_v1.1_front_angle_new.jpg diff --git a/images/ipv6.png b/images/ipv6.png deleted file mode 100644 index 54539414..00000000 Binary files a/images/ipv6.png and /dev/null differ diff --git a/images/k9mail.png b/images/k9mail.png new file mode 100644 index 00000000..060e498a Binary files /dev/null and b/images/k9mail.png differ diff --git a/images/k9mail_config_1.png b/images/k9mail_config_1.png new file mode 100644 index 00000000..1ddebb74 Binary files /dev/null and b/images/k9mail_config_1.png differ diff --git a/images/k9mail_config_2.png b/images/k9mail_config_2.png new file mode 100644 index 00000000..d35cf891 Binary files /dev/null and b/images/k9mail_config_2.png differ diff --git a/images/k9mail_config_3.png b/images/k9mail_config_3.png new file mode 100644 index 00000000..1c74b040 Binary files /dev/null and b/images/k9mail_config_3.png differ diff --git a/images/k9mail_config_4.png b/images/k9mail_config_4.png new file mode 100644 index 00000000..ee3214d9 Binary files /dev/null and b/images/k9mail_config_4.png differ diff --git a/images/linux-magazine-208.jpg b/images/linux-magazine-208.jpg new file mode 100644 index 00000000..57322a07 Binary files /dev/null and b/images/linux-magazine-208.jpg differ diff --git a/images/logo.png b/images/logo.png index 6ed22ff8..ddb79b3d 100644 Binary files a/images/logo.png and b/images/logo.png differ diff --git a/images/odroidc2.jpg b/images/odroidc2.jpg new file mode 100644 index 00000000..dfe2e9c5 Binary files /dev/null and b/images/odroidc2.jpg differ diff --git a/images/olinuxino.jpg b/images/olinuxino.jpg index 2191b7c5..87b6833e 100644 Binary files a/images/olinuxino.jpg and b/images/olinuxino.jpg differ diff --git a/images/orangepipcplus.jpg b/images/orangepipcplus.jpg new file mode 100644 index 00000000..aeb8e057 Binary files /dev/null and b/images/orangepipcplus.jpg differ diff --git a/images/piwigo.png b/images/piwigo.png new file mode 100644 index 00000000..94c048de Binary files /dev/null and b/images/piwigo.png differ diff --git a/images/portForwarding_en.png b/images/portForwarding_en.png new file mode 100644 index 00000000..202d437f Binary files /dev/null and b/images/portForwarding_en.png differ diff --git a/images/portForwarding_fr.png b/images/portForwarding_fr.png new file mode 100644 index 00000000..21456c5d Binary files /dev/null and b/images/portForwarding_fr.png differ diff --git a/images/portForwarding_src_en.odg b/images/portForwarding_src_en.odg new file mode 100644 index 00000000..3a6300c1 Binary files /dev/null and b/images/portForwarding_src_en.odg differ diff --git a/images/portForwarding_src_fr.odg b/images/portForwarding_src_fr.odg new file mode 100644 index 00000000..16b9347a Binary files /dev/null and b/images/portForwarding_src_fr.odg differ diff --git a/images/postinstall_cli.png b/images/postinstall_cli.png index 0df12db9..5728dadd 100644 Binary files a/images/postinstall_cli.png and b/images/postinstall_cli.png differ diff --git a/images/postinstall_cli2.png b/images/postinstall_cli2.png deleted file mode 100644 index d0447c72..00000000 Binary files a/images/postinstall_cli2.png and /dev/null differ diff --git a/images/restore.png b/images/restore.png new file mode 100644 index 00000000..bb7f37c5 Binary files /dev/null and b/images/restore.png differ diff --git a/images/thunderbird-config.png b/images/thunderbird-config.png deleted file mode 100644 index 086276a9..00000000 Binary files a/images/thunderbird-config.png and /dev/null differ diff --git a/images/thunderbird.png b/images/thunderbird.png new file mode 100644 index 00000000..cc273cd4 Binary files /dev/null and b/images/thunderbird.png differ diff --git a/images/thunderbird_config_1.png b/images/thunderbird_config_1.png new file mode 100644 index 00000000..38539882 Binary files /dev/null and b/images/thunderbird_config_1.png differ diff --git a/images/thunderbird_config_2.png b/images/thunderbird_config_2.png new file mode 100644 index 00000000..82ba27a9 Binary files /dev/null and b/images/thunderbird_config_2.png differ diff --git a/images/virtualbox_3.png b/images/virtualbox_3.png index 78d78bad..846f95c8 100644 Binary files a/images/virtualbox_3.png and b/images/virtualbox_3.png differ diff --git a/images_fr.md b/images_fr.md new file mode 100644 index 00000000..262bec92 --- /dev/null +++ b/images_fr.md @@ -0,0 +1,115 @@ +# Images + +
+
+ + + + + + + diff --git a/index.md b/index.md index b5bc79b1..433becd9 100644 --- a/index.md +++ b/index.md @@ -44,7 +44,7 @@
@@ -97,7 +97,7 @@ Forum Chat rooms Latest news - Support + Support

Explore what you can do with a server, and why it is important

@@ -109,11 +109,11 @@

Hey! We are humans!
If you have questions, problems or if you are just an enthusiast, leave a message on our chatroom by clicking on the button below  

- +
@@ -152,32 +152,3 @@ - - diff --git a/index_ar.md b/index_ar.md new file mode 100644 index 00000000..3d00694a --- /dev/null +++ b/index_ar.md @@ -0,0 +1,154 @@ +
+ + + +
+

+ تعالي إلى منزلي، أنا مُستضافة عند صديقة + إن لم تقم باستضافة نفسك بنفسك في عمر الخمسين فاعرف أنك قد فشلت في حياتك + فاستضافوا أنفسهم بأنفسم و كانت لهم ذرية كثيرة + الإنترنت، قراءة و كتابة + monsieur@michu.fr + ليس هناك ما أخفيه + كيف التقيتُ بالسيرفر الخاص بك +

+ +
+ + + +
+ +
+ + + +

YunoHost أداة تُمكّنكم من تنصيب و استخدام خادمكم بأسلوب سهل.

+ +
+ +
+ + + +
+ +
+
+

قوموا بتنصيب خادومكم بكل سهولة، إنكم تمتلكون في المنزل كل ما تحتاجون إليه

+

الإطلاع على المتطلبات الأساسية

+
+
+
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+

استمتعوا بتطبيقات الويب الخاصة بكم و انْشِئُوا موطنكم الصغير على الإنترنت

+


قائمة التطبيقات المتوفرة

+
+
+ +
+ +
+
+

أديروا السيرفر الخاص بكم كما يحلو لكم : سواءا عبر الويب أو أجهزتكم المحمولة أو عبر سطر الأوامر

+


جربوا الواجهة الإدارية

+
+
+
+ +
+
+
+ +
+ +
+ +
+

إكتشفوا قدرات خادمكم، ولماذا يهمكم الأمر

+


إطلعوا على الدليل

+
+
+ +
+ +
+

تذكروا ! نحن بشر !
إن كان عندكم تساؤل أو واجهتكم مشكلة أو ربما يهمُّكُم المشروع فقط، انضموا إلينا عبر غرفة المحادثة الخاصة بنا لتبليغنا التحية بالنقر على الزر أدناه  

+ + +

+ Donation button +

+ +
+ +
+ + diff --git a/index_de.md b/index_de.md new file mode 100644 index 00000000..dcf01501 --- /dev/null +++ b/index_de.md @@ -0,0 +1,153 @@ +
+ + + +
+

+ Selbst-Hosting für dich, Mom. + Hasser werden Gastgeber sein + Ich beherberge mich selbst, b*tches + Geh und bewirte dich! + Raus aus meiner Cloud + Beherbergt mich, ich bin berühmt. + Versuchen Internet + Wie kann I ich eure Server begegnen ? + john@doe.org + dude, Y U NO Host?! + Ruhe bewahren und sich selbst bewirten +

+ +
+ + +
+ +
+ + + +

YunoHost ist ein Serverbetriebssystem mit dem Ziel, Self-Hosting für jedermann zugänglich zu machen.

+ +
+ +
+ + + +
+
+

Installieren Sie eure Server mit Leichtigkeit, Sie haben bereits alles zu Hause.

+


Siehe die Voraussetzungen.

+
+
+
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+

Genießen Sie Ihre Apps und machen Sie Ihre kleine Ecke von Internet

+


Liste der verfügbaren Apps

+
+
+ +
+ +
+
+

Verwalten Sie Ihren Server so, wie Sie es wünschen: per Web, Handy oder Kommandozeile.

+


Testen Sie die Administrationsoberfläche

+
+
+
+ +
+
+
+ +
+ +
+ +
+

Erfahren Sie, was Sie mit einem Server machen können und warum es wichtig ist.

+


Lesen Sie die Dokumentation

+
+
+ +
+ +
+

Hey! Wir sind Menschen!
Wenn Sie eine Frage oder ein Problem haben oder wenn Sie nur ein Enthusiast sind, hinterlassen Sie eine Nachricht in unserem Chatraum, indem Sie auf den untenstehenden Button klicken. 

+ +

+ Donation button +

+ +
+ +
+ + + diff --git a/index_es.md b/index_es.md index 9eea60b8..1a33e69a 100644 --- a/index_es.md +++ b/index_es.md @@ -41,7 +41,7 @@
Get started -

YunoHost v2.2

+

YunoHost v3.0

@@ -104,11 +104,11 @@

¡ Hey ! Somos humanos
Si tiene algun pregunta, un problema, o simplemente estás interesado, ven decir "¡ Hola !" sobre nuetra salón de discusión clic en el botón abajo  

- +
diff --git a/index_fr.md b/index_fr.md index 79eb451a..4c6847dc 100644 --- a/index_fr.md +++ b/index_fr.md @@ -40,7 +40,7 @@
@@ -90,13 +90,13 @@
@@ -109,11 +109,11 @@

Hey ! Nous sommes humains !
Si vous avez une question, un problème, ou que vous êtes tout simplement intéressé, passez dire « Bonjour » sur notre salon de discussion en cliquant sur le bouton en bas  

- +
@@ -152,32 +152,3 @@ - - diff --git a/install.md b/install.md index 870eaea6..5cfb7cd1 100644 --- a/install.md +++ b/install.md @@ -33,16 +33,12 @@ This page lists a few installation guides.
- -
@@ -84,7 +80,7 @@ This page lists a few installation guides.
-

On Debian 8/Jessie

+

On Debian 9/Stretch

diff --git a/install_ar.md b/install_ar.md new file mode 100644 index 00000000..2a90a995 --- /dev/null +++ b/install_ar.md @@ -0,0 +1,83 @@ +#
دليل التنصيب
+ +
+يمكن تنصيب واي يونوهوست بِعدّة طُرُق و أساليب. فطريقة التنصيب تختلف قليلا فقط إذا ما كنتم تودون نثبيته محليا في المنزل أو عن بُعد و كذا نوع الجهاز : **[إطّلعوا على الأجهزة المتوافقة](/hardware)** +
+
+تقوم هذه الصفحة بإحصاء الطرق المختلفة للتنصيب مُرتبةً حسب المواضيع. +
+ +--- + +

التجريب

+ + + +
+ +--- + +

عملية النتصيب في المنزل

+ + + +
+ +--- + +

التنصيب عن بُعد

+ +
+ بإمكانك جمعيات مُزوّدي الإنترنت القريبة منكم أن تُوفّر لكم *خادوما إفتراضيا خاصا* (VPS) ، خادوم يُديره بشرٌ و يحترم قيمة المُستخدِمين و [حيادية الإنترنت](https://fr.wikipedia.org/wiki/Neutralit%C3%A9_du_r%C3%A9seau) ! إطّلعوا على [هذه الصفحة](https://db.ffdn.org/) للمزيد مِن المعلومات. +
+ + + +
+ +--- + +

طُرُق متقدمة / أخرى

+ + diff --git a/install_fr.md b/install_fr.md index 688ea235..21f08906 100644 --- a/install_fr.md +++ b/install_fr.md @@ -28,16 +28,12 @@ Cette page liste plusieurs types d’installations, classés par catégories.
- -
@@ -78,7 +74,7 @@ Cette page liste plusieurs types d’installations, classés par catégories.
-

Sur Debian 8/Jessie

+

Sur Debian 9/Stretch

diff --git a/install_iso.md b/install_iso.md index a947f1af..059f45eb 100644 --- a/install_iso.md +++ b/install_iso.md @@ -13,13 +13,15 @@ You can use any computer with **256MB RAM or more**. * Another computer to read this guide and access to your server. * A [reasonable ISP](/isp), preferably with a good and unlimited upstream bandwidth * A **USB stick** of at least 1GB capacity **OR** a standard **blank CD** -* One of the latest **YunoHost ISO images**, available here (take the 32 Bits one if you don't know which one to choose): - - https://build.yunohost.org +* ***Particular case*** : If your server has no graphic card, [prepare iso for booting with serial port](https://github.com/luffah/debian-mkserialiso). --- ## Installation steps + +0. Download your ISO image + 1. Burn or copy ISO image 2. Boot & install @@ -32,6 +34,3 @@ To connect directly to your computer or with [SSH](/ssh) (only on local network: * User: **root** * Password: **yunohost** ---- - -***Need help during one of these steps? [Get support!](/support)*** diff --git a/install_iso_fr.md b/install_iso_fr.md index a493fd00..a118e589 100644 --- a/install_iso_fr.md +++ b/install_iso_fr.md @@ -12,13 +12,14 @@ * Un autre ordinateur pour parcourir ce guide et accéder à votre serveur * Un [fournisseur d’accès correct](/isp_fr), de préférence avec une bonne vitesse d’upload * Une **clé USB** d’une capacité minimum d’1Go **OU** un **CD vierge** standard -* Une des dernières **images ISO YunoHost** (dans le doute prenez la version 32 bits) : - - https://build.yunohost.org +* ***Cas particulier*** : Si votre serveur n'a pas de carte graphique, il faut [préparer un iso qui démarre sur le port série](https://github.com/luffah/debian-mkserialiso). --- ## Étapes d’installation +0. Télécharger l'image ISO + 1. Copier l’image ISO 2. Démarrer & installer @@ -31,5 +32,7 @@ Pour se connecter directement sur l’ordinateur (uniquement en local) : * Utilisateur : **root** * Mot de passe : **yunohost** ---- -***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).*** + +## Cas spécifiques / avancés + +Si l'ordinateur n'a pas de carte graphique mais a un port série : il faut modifier l'ISO pour démarrer avec la console série. Une solution est d'utiliser [un script qui modifie les options de démarrage](https://github.com/luffah/debian-mkserialiso). diff --git a/install_manually.md b/install_manually.md index 5b5e9a1a..7e143e76 100644 --- a/install_manually.md +++ b/install_manually.md @@ -1,43 +1,18 @@ -# Install YunoHost manually +# Installing YunoHost manually -Once you have access to your server, either directly or by SSH, you can install YunoHost using the install script. +Once you have access to a command line on your server (either directly or through SSH), you can install yunohost by running command as root : -
-Note: The configuration of your services will be overridden, it is thus recommended to install YunoHost on a newly installed Debian system. -
- -1. Install git ```bash -sudo apt-get install git dialog +bash <(wget -q -O- https://install.yunohost.org/) ``` -2. Clone the Yunohost install script repository -```bash -git clone https://github.com/YunoHost/install_script /tmp/install_script -``` +*(If `wget` is not installed on your system, you might need to install it with `apt install wget`)* -3. The root user must have a password set, if it isn't the case, set it (whithout the install script failed): -```bash -sudo passwd root -``` - -4. Execute the installation script -```bash -cd /tmp/install_script && sudo ./install_yunohost -``` - -
- -

- -

- -
- -
-Warning: Apache could already be installed by default on your dedicated server. If it's the case the installation script will fail since YunoHost is using Nginx. You will have to remove *apache2.2* package with the command: ``sudo apt-get autoremove apache2.2`` and execute the script again. -
+Once the installation is finished, you may want to [**proceed to post-installation**](/postinstall) --- -*Once the installation is finished, you may want to proceed to post-installation: **[yunohost.org/postinstall](/postinstall)** * +**Note for advanced users concerned with the `curl|bash` approach** + +If you strongly object to the `curl|bash` way (and similar commands) of installing software, consider reading ["Is curl|bash insecure?"](https://sandstorm.io/news/2015-09-24-is-curl-bash-insecure-pgp-verified-install) on Sandstom's blog, and possibly [this discussion on Hacker News](https://news.ycombinator.com/item?id=12766350). + diff --git a/install_manually_fr.md b/install_manually_fr.md index 8fc55610..35ff82ef 100644 --- a/install_manually_fr.md +++ b/install_manually_fr.md @@ -1,43 +1,18 @@ # Installer YunoHost manuellement -Une fois que vous avez accès à votre serveur, directement ou par SSH, vous pouvez installer YunoHost avec le script d’installation. +Une fois que vous avez accès à votre serveur (directement ou par SSH), vous pouvez installer YunoHost en executant cette commande en tant que root : -
-Note : La configuration des services sera écrasée, il est donc recommandé d’installer YunoHost sur un système Debian nouvellement installé. -
- -1. Installez git ```bash -sudo apt-get install git dialog +bash <(wget -q -O- https://install.yunohost.org/) ``` -2. Clonez le dépôt du script d’installation de YunoHost -```bash -git clone https://github.com/YunoHost/install_script /tmp/install_script -``` +*(Si `wget` n'est pas installé sur votre système, il vous faudra peut-être l'installer avec `apt install wget`)* -3. L’utilisateur root doit avoir un mot de passe, si ce n’est pas le cas, créez-en un (sinon le script d’installation échoue) : -```bash -sudo passwd root -``` - -4. Lancez le script d’installation -```bash -cd /tmp/install_script && sudo ./install_yunohost -``` - -
- -

- -

- -
- -
-Attention : il se peut qu’Apache soit déjà installé par défaut sur votre serveur dédié. Si c’est le cas, le script d’installation échouera vu que YunoHost utilise Nginx. Vous aurez à désinstaller le paquet *apache2.2* avec la commande : ``sudo apt-get autoremove apache2.2`` et relancer le script. -
+Une fois l'installation terminée, il vous faudra [**procéder à la post-installation**](/postinstall) --- -*Une fois l’installation terminée, vous pouvez procéder à la post-installation : **[yunohost.org/postinstall](/postinstall_fr)** * +**Note pour les utilisateurs avancés inquiets à propos de l'approche `curl|bash`** + +Si vous êtes suspicieux de la tendance à utiliser `curl|bash` (ou commandes similaires) pour déployer des logiciels, prenez le temps de lire ["Is curl|bash insecure?"](https://sandstorm.io/news/2015-09-24-is-curl-bash-insecure-pgp-verified-install) sur le blog de Sandstom, et possiblement [cette discussion sur Hacker News](https://news.ycombinator.com/item?id=12766350). + diff --git a/install_on_arm_board.md b/install_on_arm_board.md index 8b56085a..9e12e380 100644 --- a/install_on_arm_board.md +++ b/install_on_arm_board.md @@ -2,40 +2,51 @@ *Find other ways to install YunoHost **[here](/install)**.* -### Requirements - - +
+ +
-* An ARM board with 500MHz CPU and 512MB RAM. -* A micro SD card: **4GB** capacity (or more), **class10** speed rate is highly recommended. -* A [reasonable ISP](/isp), preferably with a good and unlimited upload bandwidth. +
+Before setting up a server at home, it is recommended that you know the [possible limitations imposed by your ISP](/isp). If they are too restrictive, you might consider using a VPN to bypass them. +
+ +
+YunoHost doesn't yet support ARM64 boards. For more information, see [this issue](https://github.com/YunoHost/issues/issues/438). +
+ +## Pre-requisites + +- An ARM board with 500MHz CPU and 512MB RAM ; +- A power supply for your board ; +- A microSD card: **8GB** capacity (at least) and **Class 10** speed rate are highly recommended (like the [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; +- An ethernet cable (RJ-45) to connect your board to your router ; +- A [reasonable ISP](/isp), preferably with a good and unlimited upload bandwidth. --- -## Installation -* Download the latest **[image of ARMbian Jessie for the ARM board](http://www.armbian.com/download)** +## Install with the pre-installed image (recommended) -Copy image to the SD card +0. Download the pre-installed image for your board
If no pre-installed image exists for your board, you can follow the instructions to "Install on top of ARMbian" -Plug & boot +1. Flash the SD card with the image -* Connect via [SSH](ssh): **root@exemple.tld/ip_address** with the password: **1234**. +2. Plug & boot -Install YunoHost +3. Connect to your server with SSH -Post-install +4. Proceed to post-installation --- -#### Recommended after running the post-installation -* Use [SSH authentication via key](security) +## Install on top or ARMbian ---- +0. Download the ARMbian image for your board -#### Build image -* [Create an ARM board image](/build_arm_image_en) +1. Flash the SD card with the image ---- +2. Plug & boot -***Need help during one of these steps? [Get support!](/support)*** +3. Connect to your server with SSH + +4. Follow the generic install procedure diff --git a/install_on_arm_board_fr.md b/install_on_arm_board_fr.md index 0c8cc277..aca92685 100644 --- a/install_on_arm_board_fr.md +++ b/install_on_arm_board_fr.md @@ -1,38 +1,51 @@ # Installer YunoHost sur carte ARM -## Prérequis +*Toutes les autres façons d’installer YunoHost sont listées **[ici](/install_fr)**.* - +
+ +
-* Une carte ARM avec un processeur de 500 MHz et 512 Mo de mémoire vive. -* Une carte micro SD de capacité minimale de **4 GB** et de vitesse **class10**. -* Un [fournisseur d’accès correct](/isp_fr), de préférence avec une bonne vitesse d’upload. +
+Avant d'héberger un serveur chez vous, il est recommandé de prendre connaissance des [possibles limitations liées à votre FAI](/isp). Si votre FAI est trop contraignant, vous pouvez envisager d'utiliser un VPN pour contourner ces limitations. +
-## Installation +
+YunoHost ne supporte pour le moment pas les cartes ARM64. Pour plus d'informations, voir [ce ticket](https://github.com/YunoHost/issues/issues/438). +
-* Télécharger la dernière **[image d’ARMbian Jessie pour la carte ARM](http://www.armbian.com/download)**. - -Copier l’image sur une carte SD - -Brancher & démarrer - -* Se connecter en [SSH](ssh_fr) : **root@exemple.tld/adresse_ip** avec le mot de passe : **1234**. - -Installation de YunoHost - -Post-installation +- Une carte ARM avec un processeur de 500 MHz et 512 Mo de mémoire vive ; +- Un adaptateur secteur pour alimenter la carte ; +- Une carte microSD : au moins **8 Go** et **Classe 10** (par exemple une [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; +- Un câble ethernet/RJ-45 pour brancher la carte à votre routeur/box internet. (Avec le Raspberry Pi 0, vous pouvez connecter votre carte avec un câble OTG et un adaptateur Wifi USB.) +- Un [fournisseur d’accès correct](/isp_fr), de préférence avec une bonne vitesse d’upload. --- -#### Recommandé après la post-installation -* Utilisez l’[authentification SSH par clé](security_fr) +## Installation avec l'image pré-installée (recommandée) + +0. Télécharger l'image pré-installée pour votre carte ARM
Si il n'existe pas d'image pré-installée pour votre carte, vous pouvez suivre la section "Installation par dessus ARMbian". + +1. Flasher la carte SD avec l'image + +2. Brancher & démarrer + +3. Se connecter en SSH + +4. Procéder à la post-installation --- -#### Créer une image -* [Créer une image pour la carte ARM](build_arm_image_en) +## Installation par dessus ARMbian ---- +0. Télécharger l'image ARMbian pour votre carte ARM + +1. Flasher la carte SD avec l'image + +2. Brancher & démarrer + +3. Se connecter en SSH + +4. Suivre la procédure d'installation générique -***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).*** diff --git a/install_on_debian.md b/install_on_debian.md index 599f8671..c1efaf14 100644 --- a/install_on_debian.md +++ b/install_on_debian.md @@ -8,7 +8,7 @@ An ARM box, a VPS, a dedicated server, a standard x86 computer, an old Macintosh, ... -* with **Debian 8** (Jessie) installed +* with **Debian 9** (Stretch) installed * connected to the Internet * with a direct **root access** or via SSH @@ -22,6 +22,3 @@ An ARM box, a VPS, a dedicated server, a standard x86 computer, an old Macintosh 2. Post-install ---- - -***Need help during one of these steps? [Get support!](/support)*** diff --git a/install_on_debian_ar.md b/install_on_debian_ar.md new file mode 100644 index 00000000..23afb487 --- /dev/null +++ b/install_on_debian_ar.md @@ -0,0 +1,25 @@ +
+# التنصيب على ديبيان + +*يمكنكم الإطلاع على طُرق أخرى لتنصيب واي يونوهوست YunoHost **[هنا](/install)**.* + +## المتطلبات + + + +على منصة ARM أو على خادوم إفتراضي خاص أو على خادوم إستضافة أو على حاسوب x86 عادي أو على حاسوب ماكينطوش قديم … إلخ + +* على **ديبيان 8** (جيسي) قد تم تنصيبه مِن قبل +* مُتصل بالإنترنت عبر كابل إيثرنت +* مباشرة عبر **النفاذ بالمستخدم الجذري root** أو عبر الـ SSH + + + +--- + +## خطوات التنصيب + +1. التنصيب يدويًا + +2. ما بعد التنصيب + diff --git a/install_on_debian_fr.md b/install_on_debian_fr.md index dbd61065..3f5ab9ad 100644 --- a/install_on_debian_fr.md +++ b/install_on_debian_fr.md @@ -8,8 +8,8 @@ Sur une plateforme ARM, un VPS, un serveur dédié, un ordinateur x86 standard, un vieux Macintosh,... -* avec **Debian 8** (Jessie) d’installé -* connecté à Internet avec un câble RJ-45 +* avec **Debian 9** (Stretch) installé +* connecté à Internet * avec un **accès root** directement ou par SSH @@ -22,7 +22,3 @@ Sur une plateforme ARM, un VPS, un serveur dédié, un ordinateur x86 standard, 2. Post-installation ---- - -***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).*** - diff --git a/install_on_olinuxino.md b/install_on_olinuxino.md deleted file mode 100644 index 11487bc7..00000000 --- a/install_on_olinuxino.md +++ /dev/null @@ -1,111 +0,0 @@ -# Install on an OlinuXino board - -
-The simplest way to install YunoHost on an OLinuXino board is to use the image provided by the [*Internet Cube project*](http://labriqueinter.net). It's an image specifically designed for the OLinuXino boards. -
- -
-If you aim to setup a full Internet Cube (OLinuXino boad + YunoHost + VPN from neutral ISP + Wifi access point), you should contact your [local associative ISP](https://internetcu.be/#obtenir-une-brique), the Internet Cube really advice **against** installing it yourself. If you still really want to do it by yourself, you can try [the install procedure on the Internet Cube project website](https://install.labriqueinter.net). - -It is recommended to read about the [advantages of using a neutral VPN in the context of self-hosting](/vpn_advantage) and to contact your local associative ISP (if you have one). -
- -## Prerequisites - -* One of these OLinuXino boards - * [A20-OLinuXino-LIME](https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME/open-source-hardware) - * [A20-OLinuXino-LIME2](https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME2/open-source-hardware) -* A Micro-SD card ([Transcend 300x](https://www.amazon.com/Transcend-MicroSDHC-Class10-Adapter-TS32GUSDU1/dp/B00APCMMDG/) show good performance and stability). -* A power supply ([european one](https://www.olimex.com/Products/Power/SY0605E/)) for the board. (Supply through a USB cable is not stable.) -* An ethernet/RJ-45 cable to connect the board to your internet box / router. - -To prepare the SD card, a computer with GNU/Linux or BSD is preferable. You should be able to follow the same instructions on MacOS/OSX. On Windows, you will need to use the tool decribed [here](/copy_image). - ---- - -## Download the image - -Download the image ([LIME1](http://repo.labriqueinter.net/labriqueinternet_A20LIME_latest_jessie.img.tar.xz) or [LIME2](http://repo.labriqueinter.net/labriqueinternet_A20LIME2_latest_jessie.img.tar.xz)), check its integrity (*MD5 checksum*), and uncompress it : -```bash -cd /tmp/ -# Download image -wget https://repo.labriqueinter.net/labriqueinternet_A20LIME_latest_jessie.img.tar.xz - -# Integrity check (optionnal, but recommended) -wget -q -O - https://repo.labriqueinter.net/MD5SUMS | grep "labriqueinternet_A20LIME_latest_jessie.img.tar.xz$" > MD5SUMS -md5sum -c MD5SUMS - -# Uncompress image -tar -xf labriqueinternet_*.img.tar.xz -mv labriqueinternet_*.img labriqueinternet.img -``` - -## Copy image to SD card - -1. Identify the name of the card : - - Make sure the SD card is *not* plugged in the computer - - Run the command `ls -1 /sys/block/` - - Insert the SD card in the computer (maybe - - Run the command `ls -1 /sys/block/` again - - The name of your card (SDNAME) is the one present in the what's returned in the second command but not in the first. It's usually something like `sdb` or `mmcblk0`. - -2. Copy the image to your card (replace SDNAME by the name of your card, found in the previous step). Command will take a while. -```bash -sudo dd if=/tmp/labriqueinternet.img of=/dev/SDNAME bs=1M status=progress -sync -``` - -## Plug and boot - -Insert the card in the OLinuXino board, connect it to your router with the Ethernet cable, and plug the power supply. Your board will boot (give it a few seconds) and the LEDs around the Ethernet port should start blinking. -
-The first boot can take a little more than one minute because the partition is being resized and the board rebooted automatically. -
- -## Find the local IP of your server - -Get the local IP of your OLinuXino board : - - * either using `sudo arp-scan --local | grep -P '\t02'` ; - * either using the router interface by listing the DHCP clients ; - * either by pluging an HDMI screen on the OLinuXino, logging in and typing `ifconfig`. - -
-In the following commands, we refer to the board's IP with **192.168.x.y**. You should replace it with the local IP you found. -
- -## Connect through SSH and change root password - -Connect to your server with -```bash -ssh root@192.168.x.y -``` -The default password is **olinux**. - -After connecting, you will be asked to changed the root password. First, enter **olinux** *again* (current password), then type the new password two times. - -## Update your server - -Update your server with the following commands. It can take around 15 minutes. -```bash -apt-get update && apt-get dist-upgrade -``` - -## Proceed to post-installation - -Proceed to [post-installation](/postinstall) by connecting with your browser to https://192.168.x.y (you browser will warn you about the certificate being self-signed, but you can add/accept the certificate exception). -
-**Note :** it is also possibled to do the post-installation step through command line in SSH, with `yunohost tools postinstall`. -
- -## (Optional) Install DoctorCube - -If you want to benefit automatically from fixes and configuration specific to the Internet Cube, you can install the DoctorCube app. - -1. Add the Internet Cube repository : -```bash -yunohost app fetchlist -n labriqueinternet -u https://labriqueinter.net/apps/labriqueinternet.json -``` -2. In the web administration interface, click on "Applications", then install the DoctorCube app. The installation can be pretty long, but you can leave the page anyway. - - diff --git a/install_on_olinuxino_fr.md b/install_on_olinuxino_fr.md deleted file mode 100644 index 04476a9e..00000000 --- a/install_on_olinuxino_fr.md +++ /dev/null @@ -1,107 +0,0 @@ -# Installation sur une carte OlinuXino - -
-Pour installer YunoHost sur une carte OLinuXino, le plus simple est d'utiliser l'image du projet [Site du projet *La Brique Internet*](http://labriqueinter.net). Il s'agit d'une image YunoHost qui est actuellement spécifiquement destinée aux cartes OLinuXino. -
- -
-Si vous souhaitez mettre en place ou obtenir une Brique Internet complète (Carte Olimex + YunoHost + VPN associatif neutre + Hotspot Wifi), nous vous conseillons de contacter [le FAI associatif le plus proche de chez vous](https://labriqueinter.net/#obtenir-une-brique), la Brique Internet déconseillant **fortement** de faire l'installation vous-même. Si vous voulez néanmoins le faire, vous pouvez utiliser [la procédure d'installation du projet La Brique Internet](https://install.labriqueinter.net). - -Pour faire votre choix, nous vous conseillons de rencontrer votre FAI associatif local et de consulter [les avantages d'un VPN neutre dans le cadre de l'auto-hébergement](/vpn_advantage_fr). -
- -## Prérequis - -Le matériel nécessaire : -* Un mini-serveur Olimex : - * [A20-OLinuXino-LIME](https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME/open-source-hardware) - * [A20-OLinuXino-LIME2](https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME2/open-source-hardware) -* Une carte micro-SD (des [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO) pour des raisons de performance/stabilité). -* Un adaptateur secteur [européen](https://www.olimex.com/Products/Power/SY0605E/) pour alimenter la carte olimex. L’alimentation via USB semble peu stable. -* Un câble Ethernet/RJ-45 pour brancher la Brique à son routeur. - -Pour préparer la carte SD, un ordinateur sous GNU/Linux ou BSD est préférrable. Vous devriez pouvoir suivre les mêmes instructions avec MacOS/OSX. Sous Windows, il vous faudra utiliser l'outil décrit [ici](/copy_image_fr). - ---- - -## Télécharger l’image - -Télécharger l’image ([lime1](http://repo.labriqueinter.net/labriqueinternet_A20LIME_latest_jessie.img.tar.xz) ou [lime2](http://repo.labriqueinter.net/labriqueinternet_A20LIME2_latest_jessie.img.tar.xz)), vérifier son intégrité (somme de contrôle MD5), puis la décompresser : -```bash -cd /tmp/ -# Télécharger l'image -wget https://repo.labriqueinter.net/labriqueinternet_A20LIME_latest_jessie.img.tar.xz - -# Verifier l'intégrite (optionel, mais recommandé) -wget -q -O - https://repo.labriqueinter.net/MD5SUMS | grep "labriqueinternet_A20LIME_latest_jessie.img.tar.xz$" > MD5SUMS -md5sum -c MD5SUMS - -# Décompresser l'image -tar -xf labriqueinternet_*.img.tar.xz -mv labriqueinternet_*.img labriqueinternet.img -``` - -## Copier l’image sur la carte SD - -1. Identifier le nom de la carte micro-SD : - - Assurez-vous que la carte n'est *pas* insérée dans l'ordinateur - - Tapez `ls -1 /sys/block/` - - Insérez la carte - - Retaper `ls -1 /sys/block/` - - Le nom de la carte correspond au nom qui apparaît en plus dans la deuxième commande. Il s'agit généralement de quelque chose comme `sdb` ou `mmcblk0`. - -2. Copier l’image sur la carte (remplacer *SDNAME* par le nom trouvé lors de l’étape précédente). La copie peut prendre un certain temps. -```bash -sudo dd if=/tmp/labriqueinternet.img of=/dev/SDNAME bs=1M status=progress -sync -``` - -## Brancher & démarrer - -Insérer la carte micro-SD dans la carte OLinuXino, connecter la carte OLinuXino à votre routeur avec le câble Ethernet, puis brancher l’alimentation. La carte démarre normalement toute seule, et les LEDs du port Ethernet se mettent à clignoter au bout de dix secondes maximum. -
-Le premier démarrage peut prendre un peu plus d’une minute car la partition est redimensionnée et le serveur est redémarré automatiquement. -
- -## Trouver l'ip locale de votre mini-serveur -Récupérer l’adresse IP locale : - - * soit avec une commande comme `sudo arp-scan --local | grep -P '\t02'`; - * soit via l’interface du routeur listant les clients DHCP ; - * soit en branchant un écran en HDMI au mini-serveur, et en exécutant `ifconfig`. - -
-Pour les commandes suivantes, nous utiliser **192.168.x.y** pour désigner l'IP du serveur. Remplacez-la par l’adresse IP déterminée précédemment. -
- -## Changer le mot de passe root en se connectant en SSH - -Se connecter en SSH en root au mini-serveur, le mot de passe par défaut est **olinux** : -```bash -ssh root@192.168.x.y -``` -À la première connexion, il sera demandé de changer le mot de passe : entrer à nouveau **olinux**, puis saisir deux fois le nouveau mot de passe. - -## Mettre à jour le serveur - -Mettre à jour le système (environ 15 minutes) : -```bash -apt-get update && apt-get dist-upgrade -``` - -## Procéder à la postinstallation - -Procéder à la [postinstallation](/postinstall_fr) en se connectant à la carte avec votre navigateur web sur https://192.168.x.y (votre navigateur vous avertira que le certificat est auto-signé, ceci est normal : vous pouvez ajouter une exception de sécurité pour ce certificat). -
-**Note :** il est également possible de réaliser la post-installation ligne de commande via SSH en exécutant `yunohost tools postinstall`. -
- -## (Optionel) Installer DoctorCube - -Si vous souhaitez bénéficier automatiquement des corrections de l'image du projet La Brique Internet, vous pouvez installez l'application dédiée DoctorCube. - -1. Ajoutez le dépôt d'application du projet La Brique Internet -```bash -yunohost app fetchlist -n labriqueinternet -u https://labriqueinter.net/apps/labriqueinternet.json -``` -2. Dans l'administration web, cliquez sur la catégorie "Applications", puis installez l'application DoctorCube qui fournie des configurations et des fixs spécifiques à la brique. L'installation de DoctorCube peut prendre de nombreuses minutes. Vous n'êtes pas obligé de rester sur la page web. diff --git a/install_on_raspberry.md b/install_on_raspberry.md index 072c2328..816ca748 100644 --- a/install_on_raspberry.md +++ b/install_on_raspberry.md @@ -3,27 +3,29 @@ *Find all the ways to install YunoHost **[here](/install)**.*
- + +
Before setting up a server at home, it is recommended that you know the [possible limitations imposed by your ISP](/isp). If they are too restrictive, you might consider using a VPN to bypass them.
-## Pre-requisite +## Pre-requisites - A Raspberry Pi 0, 1, 2 or 3 ; -- An SD card: **8GB** capacity (at least) and **Class 10** speed rate are highly recommended (like the [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; -- A power supply (either an adapter or a MicroUSB cable) -- An ethernet cable (RJ-45) to connect your Raspberry Pi to your router. (Raspberry Pi Zero users can connect the Pi using an OTG cable, Wifi dongle and [following these instructions](https://davidmaitland.me/2015/12/raspberry-pi-zero-headless-setup/)) +- An microSD card: **8GB** capacity (at least) and **Class 10** speed rate are highly recommended (like the [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; +- A power supply (either an adapter or a MicroUSB cable)i ; +- An ethernet cable (RJ-45) to connect your Raspberry Pi to your router. (Raspberry Pi Zero users can connect the Pi using an OTG cable, [Wifi dongle](https://core-electronics.com.au/tutorials/raspberry-pi-zerow-headless-wifi-setup.html).) ; +- A [reasonable ISP](/isp), preferably with a good and unlimited upload bandwidth. --- -## Installation using the image (recommended) +## Install with the pre-installed image (recommended) -0. Download the pre-installed image for Raspberry Pi +0. Download the pre-installed image for Raspberry Pi -1. Copy image to the SD card +1. Flash the SD card with the image 2. Plug & boot @@ -40,10 +42,10 @@ We do not recommend the manual installation because it is more technical and lon
-The latest Rasbpian Jessie image requires a screen and a keyboard, as it is no longer possible to connect directly to the Raspberry through SSH. Nevertheless it is possible to re-enable SSH at boot : before starting your Raspberry, put in the boot partition of the SD card an empty file named `ssh` (without extension). +The latest Rasbpian images requires a screen and a keyboard, as it is no longer possible to connect directly to the Raspberry through SSH. Nevertheless it is possible to re-enable SSH at boot : before starting your Raspberry, put in the boot partition of the SD card an empty file named `ssh` (without extension).
-0. Install Raspbian Jessie Lite on the SD card ([instructions](https://www.raspberrypi.org/downloads/raspbian/)). +0. Install Raspbian Stretch Lite on the SD card ([instructions](https://www.raspberrypi.org/downloads/raspbian/)). 1. Connect to your Raspberry Pi with the user `pi`. Set the root password with ```bash @@ -56,6 +58,3 @@ sudo passwd root 4. Then follow the generic manual install procedure. ---- - -***If you need help during one of these steps, do not hesitate to use [our support tools](/support).*** diff --git a/install_on_raspberry_fr.md b/install_on_raspberry_fr.md index 5d453af4..8fbc42be 100644 --- a/install_on_raspberry_fr.md +++ b/install_on_raspberry_fr.md @@ -3,7 +3,8 @@ *Toutes les autres façons d’installer YunoHost sont listées **[ici](/install_fr)**.*
- + +
@@ -13,17 +14,18 @@ Avant d'héberger un serveur chez vous, il est recommandé de prendre connaissan ## Prérequis - Un Raspberry Pi 0, 1, 2 ou 3 ; -- Une carte SD : au moins **8 Go** et **Classe 10** (par exemple une [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; -- Un adaptateur secteur pour la alimenter la carte ; -- Un câble ethernet/RJ-45 pour brancher la carte à votre routeur/box internet. Avec le Raspberry Pi Zero vous pouvez connecter votre carte avec un câble OTG et un adaptateur Wifi USB. +- Un adaptateur secteur pour alimenter la carte ; +- Une carte microSD : au moins **8 Go** et **Classe 10** (par exemple une [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO)) ; +- Un câble ethernet/RJ-45 pour brancher la carte à votre routeur/box internet. (Avec le Raspberry Pi 0, vous pouvez connecter votre carte avec un câble OTG et un adaptateur Wifi USB.) +- Un [fournisseur d’accès correct](/isp_fr), de préférence avec une bonne vitesse d’upload. --- -## Installation avec l'image (recommandée) +## Installation avec l'image pré-installée (recommandée) -1. Télécharger l'image pour Raspberry Pi +1. Télécharger l'image pour Raspberry Pi -2. Copier l’image sur une carte SD +2. Flasher la carte SD avec l'image 3. Brancher & démarrer @@ -36,26 +38,23 @@ Avant d'héberger un serveur chez vous, il est recommandé de prendre connaissan ## Installation manuelle (déconseillée)
-Nous déconseillons l'installation manuelle car elle plus technique et plus longue que l'installation via l'image pré-installée. Cette documentation est surtout destinée aux utilisateurs avancés. +Nous déconseillons l'installation manuelle car elle est plus technique et plus longue que l'installation via l'image pré-installée. Cette documentation est surtout destinée aux utilisateurs avancés.
Les dernières versions de Raspbian nécessitent un écran et un clavier, car il n'est plus possible de se connecter directement en SSH au Raspberry par défaut. Néanmoins, il est possible de réactiver le lancement de SSH au boot : il suffit de placer dans la partition boot de la carte SD un fichier nommé `ssh`, vide et sans extension.
-0. Installez Raspbian Jessie Lite ([instructions](https://www.raspberrypi.org/downloads/raspbian/)) sur la carte SD. +0. Installez Raspbian Stretch Lite ([instructions](https://www.raspberrypi.org/downloads/raspbian/)) sur la carte SD. 1. Connectez-vous en ssh au Raspberry Pi avec l'utilisateur pi. Définissez un mot de passe root avec ```bash sudo passwd root ``` -2. Modifiez `/etc/ssh/sshd_config` pour autoriser root à se logger en ssh, en remplacant `PermitRootLogin without-password` par `PermitRootLogin yes`. Rechargez le daemon ssh avec `service ssh reload`, puis re-connectez-vous en root. +2. Modifiez `/etc/ssh/sshd_config` pour autoriser root à se logger en ssh, en remplaçant `PermitRootLogin without-password` par `PermitRootLogin yes`. Rechargez le daemon ssh avec `service ssh reload`, puis re-connectez-vous en root. 3. Déconnectez-vous et reconnectez-vous avec l'utilisateur root cette fois. 4. Poursuivez avec la procédure d'installation manuelle générique. ---- - -***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [outils de support](/support_fr).*** diff --git a/install_on_virtualbox.md b/install_on_virtualbox.md index 23467526..196ec176 100644 --- a/install_on_virtualbox.md +++ b/install_on_virtualbox.md @@ -7,7 +7,7 @@ * A x86 computer with VirtualBox installed and enough RAM capacity to be able to run a small virtual machine. -* The latest stable **YunoHost ISO image**, available [here](https://build.yunohost.org). +* The latest stable **YunoHost ISO image**, available [here](/images). --- @@ -48,7 +48,7 @@ Start the virtual machine
-You will have to select your ISO image `yunohostv2-latest-amd64.iso` here, then you should see the YunoHost's boot screen. +You will have to select your ISO image here, then you should see the YunoHost's boot screen.
@@ -73,6 +73,3 @@ After the reboot, you will see this screen: * You can get more information on the post-installation here: **[yunohost.org/postinstall](/postinstall)** ---- - -***Need help during one of these steps? [Get support!](/support)*** diff --git a/install_on_virtualbox_fr.md b/install_on_virtualbox_fr.md index 80732f28..c93d9901 100644 --- a/install_on_virtualbox_fr.md +++ b/install_on_virtualbox_fr.md @@ -1,4 +1,4 @@ -# Installer YunoHost sur VitualBox +# Installer YunoHost sur VirtualBox *Trouvez d’autres moyens d’installer YunoHost **[ici](/install_fr)**.* @@ -7,7 +7,7 @@ * Un ordinateur x86 avec VirtualBox installé et assez de RAM disponible pour lancer une petite machine virtuelle. -* La dernière **image ISO YunoHost** stable, disponible [ici](https://build.yunohost.org). +* La dernière **image ISO YunoHost** stable, disponible [ici](/images_fr). --- @@ -47,7 +47,7 @@ Démarrez votre machine virtuelle
-Vous devez sélectionner ici l’image ISO `yunohostv2-latest-amd64.iso`, puis vous devriez voir cet écran d’accueil YunoHost. +Vous devez sélectionner ici l’image ISO, puis vous devriez voir cet écran d’accueil YunoHost.
@@ -70,8 +70,5 @@ Après le redémarrage, vous devriez voir cet écran :
* Vous pouvez obtenir plus d’information sur la post-installation ici : **[yunohost.org/postinstall_fr](/postinstall_fr)** -* Le mode de passe root est "yunohost" +* Le mot de passe root est "yunohost" ---- - -***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).*** diff --git a/install_on_vps.md b/install_on_vps.md index d16c436e..671847ea 100644 --- a/install_on_vps.md +++ b/install_on_vps.md @@ -8,7 +8,7 @@ * A dedicated or virtual private server * with at least **512MB** RAM -* and **Debian 8.x (Jessie) 64bits** as operating system +* and **Debian 9.x (Stretch) 64bits** as operating system --- @@ -18,6 +18,3 @@ 2. Post-install ---- - -***If you need help during one of these steps, do not hesitate to use [our support tools](/support).*** diff --git a/install_on_vps_fr.md b/install_on_vps_fr.md index 1bc25775..2453538f 100644 --- a/install_on_vps_fr.md +++ b/install_on_vps_fr.md @@ -8,7 +8,7 @@ * Un serveur dédié ou virtuel * avec au moins **512MB** RAM -* et **Debian 8.x (Jessie) 64bits** comme système d'exploitation +* et **Debian 9.x (Stretch) 64bits** comme système d'exploitation --- @@ -18,7 +18,3 @@ 2. Post-installation ---- - - -***Si vous avez besoin d’aide lors de ces étapes, n’hésitez pas à utiliser les différents [moyens de support](/support_fr).*** diff --git a/installation_brique_fr.md b/installation_brique_fr.md deleted file mode 100644 index 9483fc12..00000000 --- a/installation_brique_fr.md +++ /dev/null @@ -1,201 +0,0 @@ -# Installation d’une Brique Internet - -
-Cette documentation s’adresse à des personnes qui ont **quelques notions d’informatique** et qui souhaitent installer elles-mêmes leur Brique Internet. - -Pour obtenir une **Brique clé-en-main** et pouvoir l’utiliser directement sans avoir besoin de connaissances particulières, il faut se rapprocher d’une association locale qui fournit des Briques Internet à ses adhérents, comme celles référencées sur [le site de FFDN](http://db.ffdn.org). - -[Site du projet *La Brique Internet*](http://labriqueinter.net) -
- -
-Aujourd'hui nous n'installons plus de Brique à la main en suivant ces instructions, nous vous conseillons d'utiliser l'outil d'installation automatique trouvable à [cette adresse](https://install.labriqueinter.net/#welcome) ou de contacter un FAI associatif local. -
- -![brique](/images/thisisinternet.png) - -## Prérequis - -Une **Brique Internet complète**, soit : -* Un mini-serveur Olimex : - * [A20-OLinuXino-LIME](https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME/open-source-hardware) - * [A20-OLinuXino-LIME2](https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME2/open-source-hardware) -* Une carte micro-SD (des [Transcend 300x](http://www.amazon.fr/Transcend-microSDHC-adaptateur-TS32GUSDU1E-Emballage/dp/B00CES44EO) pour des raisons de performance/stabilité). -* Un adaptateur secteur [européen](https://www.olimex.com/Products/Power/SY0605E/) pour alimenter la brique. L’alimentation via USB semble peu stable. -* Un câble Ethernet/RJ-45 pour brancher la Brique à son routeur. -* Une antenne WiFi : - * [MOD-WIFI-R5370-ANT](https://www.olimex.com/Products/USB-Modules/MOD-WIFI-R5370-ANT/) (non-libre) - * [AR9271](http://fr.aliexpress.com/item/Atheros-AR9271-Chip-150Mbps-Mini-USB-Wifi-Adapter-with-5dBi-Antenna/32344771975.html) (libre, mais limitée à sept connexions simultanées maximum) - -Et évidemment, **un ordinateur sous GNU/Linux ou BSD**. - ---- - -L’ordre des étapes est important. - -## Étapes préliminaires - -1. Télécharger l’image ([lime1](http://repo.labriqueinter.net/labriqueinternet_A20LIME_latest_jessie.img.tar.xz) ou [lime2](http://repo.labriqueinter.net/labriqueinternet_A20LIME2_latest_jessie.img.tar.xz)), valider son *checksum MD5*, puis la décompresser : -```bash -% cd /tmp/ -% wget http://repo.labriqueinter.net/labriqueinternet_A20LIME_latest_jessie.img.tar.xz -% wget http://repo.labriqueinter.net/MD5SUMS -% md5sum -c MD5SUMS -% tar -xf labriqueinternet_*.img.tar.xz -% mv labriqueinternet_*.img labriqueinternet.img -``` - -2. Identifier le nom de la carte micro-SD (SDNAME) en tapant la commande `ls -1 /sys/block/`, en insérant la carte micro-SD (éventuellement à l’aide d’un adaptateur) dans son ordinateur, puis en retapant la commande `ls -1 /sys/block/`. Le nom de la carte micro-SD (SDNAME) correspond à la ligne qui apparaît en plus après la seconde saisie (e.g. *sdb* ou *mmcblk0*). - -3. Copier l’image sur la carte (remplacer *SDNAME* par le nom trouvé lors de l’étape précédente) : -```bash -sudo dd if=/tmp/labriqueinternet.img of=/dev/SDNAME bs=1M -sync -``` - -4. Mettre la carte micro-SD dans une Brique, connecter la brique à votre routeur avec le câble Ethernet, puis brancher l’alimentation. La brique démarre normalement toute seule, et les LEDs du port Ethernet se mettent à clignoter au bout de dix secondes maximum. -
-Le premier démarrage peut prendre un peu plus d’une minute car la partition est redimensionnée et le serveur est redémarré automatiquement. -
- -5. Récupérer l’adresse IP locale de la Brique : - - * soit avec une commande comme `sudo arp-scan --local | grep -P '\t02'` ou bien avec la commande `sudo arp-scan --local -I wlan0 | grep -P '\t02'` si votre ordinateur est connecté en WiFi. - * soit via l’interface du routeur listant les clients DHCP, - * soit en branchant un écran en HDMI à la Brique, et en exécutant `ifconfig`. - -
-Pour les commandes suivantes, nous admettons que l’adresse IP locale de la Brique est **192.168.4.2**. Remplacer par l’adresse IP précédemment déterminée. -
- -6. Se connecter en SSH en root à la Brique, le mot de passe par défaut est **olinux** : -```bash -ssh root@192.168.4.2 -``` -À la première connexion, il sera demandé de changer le mot de passe : entrer à nouveau **olinux**, puis saisir deux fois le nouveau mot de passe. - -7. Mettre à jour le système (environ 15 minutes) : -```bash -apt-get update && apt-get dist-upgrade -``` - -8. (optionnel) **Si vous avez une antenne WiFi libre**, la débrancher/rebrancher pour être sûr qu’elle soit reconnue après la mise à jour. - - -## Étapes de configuration - -
-Nous installons ici la Brique de **michu.nohost.me**. Remplacer ce nom par le nom de domaine choisi (et comme précédemment l’IP 192.168.4.2 par celle de la brique) -
- -1. Mettre à jour le fichier `/etc/hosts` de son ordinateur client pour pouvoir accéder à la Brique en local via **michu.nohost.me**, en ajoutant à la fin : -```bash -192.168.4.2 michu.nohost.me -``` - -2. Procéder à la [postinstallation](/postinstall_fr) en se connectant à la Brique sur https://michu.nohost.me (accepter l’exception de sécurité du certificat). -
-**Note :** il est également possible de réaliser cette étape en ligne de commande via SSH en exécutant `yunohost tools postinstall`. -
- -3. **Créer le premier utilisateur** : se rendre dans l’interface d’administration YunoHost (ici https://michu.nohost.me/yunohost/admin), entrer le mot de passe d’administration puis se rendre dans **Utilisateurs** > **Nouvel utilisateur**. -
-Il faudra entrer un **nom d’utilisateur** sans majuscule/espace/tiret, un **nom/prénom/pseudo** en deux parties (obligatoires, merci LDAP) qui correspondra au nom qui apparaîtra sur les futurs emails de l’utilisateur, ainsi qu’un **quota d’email** éventuel et un **mot de passe** (*à ne pas confondre avec le mot de passe d’administration dans ce cas*). -
- -4. **Installer l’application VPN Client** : se rendre dans **Applications** > **Installer**, et entrer `https://github.com/labriqueinternet/vpnclient_ynh` dans le champs **URL** du formulaire **Installer une application personnalisée** tout en bas de la page. L’adresse du serveur peut être configurée plus tard (utiliser par exemple `dummy.vpn`). - -5. **Restreindre l’accès à l’application VPN Client** (optionnel) : se rendre dans **Applications** > **VPN Client** > **Accès** et sélectionner l’utilisateur précédemment créé, de sorte que les futurs potentiels nouveaux utilisateurs ne puissent pas modifier les paramètres d’accès VPN. - -6. **Configurer l’application VPN Client** : se connecter à l’**interface utilisateur** (ici https://michu.nohost.me/yunohost/sso/) et entrer les identifiants de l’utilisateur précédemment créé. Vous devriez voir apparaître **VPN Client** dans votre liste d’application : - -De manière générale, il convient bien sûr d’éditer les paramètres en fonction de son fournisseur d’accès VPN. Ce dernier devra vous fournir des certificats et/ou des identifiants ainsi qu’un préfixe délégué IPv6. - -
-Pour Neutrinet, dans **Advanced**, il faudra également ajouter trois directives spécifiques : -
resolv-retry infinite
-ns-cert-type server
-topology subnet
-
- -
-**Attention** : le redémarrage du service, déclenché par le bouton **Save and reload**, peut prendre quelques minutes. -
- -7. **Installer l’application Hotspot** : s’assurer que l’antenne WiFi est bien branchée, et répéter les étapes **4**, **5** et **6** en installant à l’aide de l’URL `https://github.com/labriqueinternet/hotspot_ynh` : - - -
-**Attention** : si vous n'installez *pas* DoctorCube votre brique ne fonctionnera pas au prochain redémarrage, en effet, il y a un bug avec le kernel 4.5 et les boards olimex qui empêche aux Briques de se connecter au réseau (et ce qui les rends donc inutilisable), DoctorCube résoud ce problème. -
- -8. **Installer DoctorCube** : de la même manière que pour les précédentes applications, installez l'application DoctorCube qui fournie des configurations et des fixs spécifiques à la brique, en utilisant l'URL suivante: `https://github.com/labriqueinternet/doctorcube_ynh` L'installation de DoctorCube peut prendre de nombreuses minutes. - -9. **TESTER** : la Brique devrait être accessible via l’IP publique que sa connexion VPN lui procure. Si l’utilisateur a opté pour un nom de domaine en **.nohost.me**, patienter quelques minutes que son IP se propage sur le serveur DNS de YunoHost. Si l’utilisateur a opté pour son propre nom de domaine, c’est le moment de [configurer ses enregistrements DNS](/dns_config_fr) correctement chez son registrar. -Si tout se passe bien côté **hotspot**, un réseau WiFi du nom choisi par l’utilisateur à l’étape 7 devrait être visible, et devrait vous router tout bien vers l’Internet. -Il est possible de regarder l’IP avec laquelle on sort sur Internet ([IPv4](http://ip.yunohost.org) / [IPv6](http://ip6.yunohost.org)) : -```bash -% host $(wget -qO- ip.yunohost.org) -% host $(wget -qO- ip6.yunohost.org) -``` -Si le retour des deux commandes précédentes contient le nom du fournisseur d’accès VPN, c’est que la Brique fait bien accéder à Internet via le VPN. - -# Étapes supplémentaires (pour une Brique idéale) - -Ces étapes ne sont pas obligatoires mais peuvent améliorer considérablement l’**expérience de la Brique** (*fap fap fap*). - -* **Supprimer le CRON DynDNS** : si l’utilisateur a opté pour un nom de domaine en **.nohost.me**, YunoHost a configuré automatiquement un client DynDNS sur la Brique qui va avertir le serveur DNS d’un potentiel changement d’IP publique. Or, l’IP fournie par la connexion VPN **est fixe**. Il convient donc de supprimer ce client, qui pourrait malencontreusement mettre à jour l’IP dans les DNS si la connexion VPN venait à tomber : -```bash -rm /etc/cron.d/yunohost-dyndns -``` - -* **S’assurer du nom de l’interface WiFi** : lors du changement d’antenne WiFi (même si le modèle reste le même), il peut arriver que le nom de l’interface WiFi change, typiquement de `wlan0` à `wlan1`. Pour continuer à utiliser l’application **hotspot**, il faut se rendre sur l’interface web de configuration de l’application (étape 10) et mettre à jour le **Device**. - -* **Ajouter un CRON de restart du service VPN** : selon les paramètres VPN client et serveur, il peut arriver que la connexion soit instable, et que le client VPN tombe de temps en temps. Pour s’assurer qu’il redémarrera automatiquement, une bonne méthode *quick’n’dirty* et de tester que le service tourne et de le redémarrer dans le cas contraire : -```bash -echo "* * * * * root /sbin/ifconfig tun0 > /dev/null 2>&1 || systemctl restart ynh-vpnclient" > /etc/cron.d/restart-vpn -``` - -* **Arrêter le service Amavis** : -Amavis est un antivirus qui s’occupe de regarder si les pièces jointes des emails ne sont pas vérolées. Il est très lourd et tombe souvent en panne sur des petites machines comme la Brique. Pour arrêter Amavis, éditer le fichier `/etc/postfix/main.cf` et commenter la ligne 90 (normalement) : -```bash -#content_filter = amavis:[127.0.0.1]:10024 -``` -Éditer également le fichier `/etc/postfix/master.cf` pour y commenter les lignes relatives à Amavis, vers les lignes 119-122 : -```bash -#amavis unix - - - - 2 smtp -# -o smtp_data_done_timeout=1200 -# -o smtp_send_xforward_command=yes -# -o smtp_tls_note_starttls_offer=no -``` -Une fois ces éditions effectuées, redémarrer le service postfix et arrêter le service amavis : -```bash -systemctl restart postfix -systemctl stop amavis -systemctl disable amavis -``` - -* **Mettre à jour la configuration SSH** : par défaut, la connexion SSH en tant que **root** est possible sur la Brique ce qui est considéré comme une faille de sécurité. Quand vous voulez vous connecter en SSH, il est préférable de le faire en tant qu’**admin** : cet utilisateur (qui est sudoer) a été créé automatiquement avec le même mot de passe que **root**. Pour ne garder que la connexion en tant qu’**admin**, il convient d’éditer le `/etc/ssh/sshd_config` et de passer **PermitRootLogin** à **without-password**. - -
-D’autres conseils de sécurité sont décrits sur la page : [sécurité](/security_fr). -
- -* **Configurer le reverse DNS** : pour s’assurer du bon fonctionnement du serveur email, il est recommandé de configurer un reverse DNS pour son IP. Il faut s’adresser au fournisseur de VPN. En tant que FAI associatif, c’est un service faisable, autant le demander ! - -* **Configurer le DKIM** : avec un SPF et un PTR bien configurés dans les DNS, les emails envoyés par la Brique ne devraient pas être considérés comme spam. Ceci dit, GMail et d’autres dégraderont considérablement le spamscore si le DKIM n’est pas configuré également. -Cette opération est longue mais à considérer pour avoir un serveur email irréprochable en production. Plus de renseignement sur [la page de documentation appropriée](/dkim_fr). - -* **Installer Roundcube** via l’interface d’administration YunoHost et tester l’envoi et la réception d’email. - -* **Installer d’autres applications** et les découvrir. - ---- - -## Notes - -* **Attention à la RAM** : sur le modèle A20-OLinuXino-LIME, les **512 Mo** partent relativement vite. Les applications PHP ne sont pas très gourmandes, mais Searx et Etherpad Lite sont par exemple à installer avec des pincettes. Toutes les apps officielles fonctionnent sans problème de RAM avec le A20-OLinuXino-LIME2 (qui a 1 Go de RAM). diff --git a/ipv6_fr.md b/ipv6_fr.md index 84c5ec24..8e82c393 100644 --- a/ipv6_fr.md +++ b/ipv6_fr.md @@ -2,6 +2,6 @@ ### Liens -- [Conférence — (Introduction à) IPv6 — Stéphane Bortmeyer — Liens en bas](https://fr33tux.org/post/retour-conference-bortzmeyer/#Liens) +- [Conférence — (Introduction à) IPv6 — Stéphane Bortzmeyer — Liens en bas](https://fr33tux.org/post/retour-conference-bortzmeyer/#Liens) - [Conférence — Intranet IPv4 ou Internet IPv6 — Julien Vaubourg](http://julien.vaubourg.com/#videos) - [Article de blog — Auto-hébergement IPv6, le soucis de NAT — Genma](http://genma.free.fr/?Autohebergement-IPV6-Le-soucis-du-NAT) diff --git a/isp.md b/isp.md index 02d84f78..8d8131e3 100644 --- a/isp.md +++ b/isp.md @@ -15,9 +15,24 @@ A list of French and Belgian ISPs is available on the [french page](/isp_fr). | Charter | Multiple | Yes | No. Only for business class customer. | No | No | Yes, as a business class customer | | DSLExtreme | Multiple | Yes | Yes | No | No | Yes, extra charge. | +### UK +| Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP | +| --- | --- | --- | --- | --- | --- | --- | +| BT Internet | - | - | Yes| - | - | No | + ### Brazil | Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP | | --- | --- | --- | --- | --- | --- | --- | | Global Village Telecom | Multiple | Yes | No. Only for Fix IP| No | No | Yes, extra charge. | -If you want to add international ISPs information, please do consider [modifying this page](/write_documentation). +### Ireland +| Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP | +| --- | --- | --- | --- | --- | --- | --- | +| Whizzy Internet | Multiple | Yes | Yes| Yes | Yes | Yes | + +### Canada +| Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP | +| --- | --- | --- | --- | --- | --- | --- | +| Telus | Multiple | - | No. Extra charge | - | - | No. Extra charge | + +If you want to add international ISPs information, please do consider [modifying this page](/write_documentation). \ No newline at end of file diff --git a/isp_box_config.md b/isp_box_config.md index abad4e44..376836a6 100644 --- a/isp_box_config.md +++ b/isp_box_config.md @@ -1,35 +1,46 @@ -# Configuration box/router +# Configure port-forwarding -Check ports are open +If you are self-hosting at home and without a VPN, you need to forward ports on your home router ("Internet box"). If you want a short explanation on what is and why you need port forwarding, have a look in [this page](port_forwarding). -#### Access to box/routeur administration -In the URL bar of your web browser put: -```bash -192.168.0.1 or 192.168.1.1 -``` -Then you will need to authentificate. +### 0. Diagnose ports opened -#### Opening ports -Opening following ports are necessary to make works differents services. +After configuring port forwarding, you should be able to validate with this small tool that your ports are correctly forwarded : + +Check which ports are forwarded + +### 1. Access your box/router administration interface + +Your box/router admin interface is usually reachable via http://192.168.0.1 or http://192.168.1.1. Then, you will probably need to authenticate yourself with your internet server provider's credentials. + +### 2. Find the local IP of your server + +Identify what is the local IP of your server, either : +- from your box/router interface, which might list devices connected +- from the YunoHost webadmin, in 'State of the server', 'Network' +- from the command line in your server, by running `ip a | grep "scope global" | awk '{print $2}'` + +A local IP address typically looks like `192.168.xx.yy`, or `10.0.xx.yy`. + +### 3. Forwarding ports + +In your router admin interface, look for something like 'router configuration' or 'port forwarding'. The naming differs among the various kinds of boxes. + +Opening the ports listed below is necessary for the various services available in YunoHost to work. For each of them, the 'TCP' forwarding is needed. Some interfaces refer to 'external' and 'internal' ports : these are the same in our case. -**TCP:** * Web: 80 (HTTP), 443 (HTTPS) * [SSH](/ssh_en): 22 * [XMPP](/XMPP_en): 5222 (clients), 5269 (servers) -* [Email](/email_en): 25, 465 (SMTP), 587 (SMTP with SSL), 993 (IMAP) -* [DNS](/dns_en): 53 +* [Email](/email_en): 25, 587 (SMTP), 993 (IMAP) -##### UPnP -UPnP permit automatically forward ports. +
+ Some internet service providers block port 25 (mail SMTP) by default to fight spam. Some other ISP don't allow to use port 80/443 (web) freely, though it's less likely. Depending on the ISP, it might be possible to open them in the admin interface... Check [this page](isp_en) for more info. +
-In some case, after changing your box configuration (ex: add IPv6, or unlock SMTP…) and a reboot. It happens that ports are no longer forwarded. So you have to reload your firewall configuration: +## Automatic port forwarding / UPnP + +A technology called UPnP is available on some internet boxes / routers and allows to automatically forward ports by the machine who needs them. If UPnP is enabled in your local network, then running this command should automatically open the port for you : ```bash sudo yunohost firewall reload ``` -##### Manual forward ports -In the case that UPnP doesn’t works, manual ports forward are necessary. - -##### Email -Internet service porviders blocks port 25 to avoid spam. To send mails, you’ll need to forward port 25. diff --git a/isp_box_config_fr.md b/isp_box_config_fr.md index ee0e7b5e..30e42fbb 100644 --- a/isp_box_config_fr.md +++ b/isp_box_config_fr.md @@ -1,44 +1,51 @@ -# Configuration box/routeur +# Configurer la redirection des ports -Vérifier que les ports sont ouverts +Si vous vous auto-hébergez à la maison et sans VPN, il vous faut rediriger les ports de votre routeur ("machin-box"). Si vous souhaitez une explication courte de ce qu'est et pourquoi vous avez besoin de rediriger les ports, vous pouvez jeter un oeil à [cette page](port_forwarding_fr). [Cette page](https://craym.eu/tutoriels/utilitaires/ouvrir_les_ports_de_sa_box.html) propose également des explications détaillées sur le fonctionnement des ports, et les étapes de configuration pour différents routeurs. -### Accès à l’administration de la box/routeur -Allez à l’adresse suivante : http://192.168.0.1 (ou celle-ci http://192.168.1.1). Puis authentifier-vous. +### 0. Diagnostiquer les ports ouverts -### Tutoriel -* [Tutoriel pour les ouvrir les ports sur les boxs d’Orange, Free, SFR, Dartybox, Belgacom et sur les routeurs Netgear](https://craym.eu/tutoriels/utilitaires/ouvrir_les_ports_de_sa_box.html). +Une fois que vous aurez configuré la redirection, vous devriez pouvoir valider avec ce petit outil que vos ports sont bien redirigés : -### Redirection des ports -La redirection des ports suivants est nécessaire au fonctionnement des différents services. +Vérifier la redirection des ports -**TCP :** - * Web : 80 (HTTP), 443 (HTTPS) - * [SSH](ssh_fr) : 22 - * [XMPP](XMPP_fr) : 5222 (clients), 5269 (serveurs) - * [Courriel](email_fr) : 25, 465 (SMTP), 587 (SMTP avec chiffrement), 993 (IMAP) - * [DNS](dns_fr) : 53 +### 1. Accéder à l'interface d'administration de votre box/routeur -**UDP:** - * [DNS](dns_fr) : 53 +L'interface d'administration est généralement accessible via http://192.168.0.1 ou http://192.168.1.1. +Ensuite, il vous faudra peut-être vous authentifier avec les identifiants +fournis par votre fournisseur d'accès internet (FAI). ---- +### 2. Trouver l'IP locale de votre serveur -#### UPnP +Identifiez quelle est l'IP locale de votre serveur, soit : +- depuis l'interface de votre routeur/box, qui liste peut-être les dispositifs + connectés. +- depuis la webadmin de YunoHost, dans 'État du serveur', 'Réseau' +- depuis la ligne de commande dans votre serveur, par exemple avec `ip a | grep "scope global" | awk '{print $2}'` -L’UPnP permet d’ouvrir automatiquement les ports. Si ce n’est pas le cas par défaut, vous pouvez l’activer via l’interface d’administration de votre routeur. +Une adresse IP locale ressemble généralement à `192.168.xx.yy`, ou `10.0.xx.yy`. -Dans certains cas après avoir changé la configuration de votre box (ex : sur Freebox ajout d’IPv6, débloquer le SMTP…) et après l’avoir rebooté. Il se peut que vos ports ne soient plus redirigés. Il faut donc réautoriser ces ports par le firewall : +### 3. Rediriger les ports + +Dans l'interface d'administration de votre box/routeur, il vous faut trouver +une catégorie comme 'Configuration du routeur', ou 'Redirections de ports'. Le +nom diffère suivant le type / marque de la box... + +Il vous faut ensuite rediriger chacun des ports listés ci-dessous vers l'IP locale de votre serveur pour que les différents services de YunoHost fonctionnent. Pour chacun d'eux, une redirection 'TCP' est nécessaire. Certains interfaces font références à un port 'externe' et un port 'interne' : dans notre cas il s'agit du même. + +* Web: 80 (HTTP), 443 (HTTPS) +* [SSH](/ssh_fr): 22 +* [XMPP](/XMPP_fr): 5222 (clients), 5269 (servers) +* [Email](/email_en): 25, 587 (SMTP), 993 (IMAP) + +
+ Certains fournisseurs d'accès internet bloquent le port 25 (mail SMTP) par défaut pour combattre le spam. D'autres (plus rares) ne permettent pas d'utiliser librement les ports 80/443. En fonction de votre FAI, il peut être possible d'ouvrir ces ports dans l'interface... Voir [cette page](isp_fr) pour plus d'informations. +
+ +## Redirection automatique / UPnP + +Une technologie nommée UPnP est disponible sur certains routeurs/box et permet de rediriger automatiquement des ports vers une machine qui le demande. Si UPnP est activé chez vous, exécuter cette commande devrait automatiquement rediriger les bons ports : ```bash sudo yunohost firewall reload ``` -#### Redirection manuelle des ports - -Dans le cas où l’UPnP ne fonctionne pas, la redirection manuelle des ports est nécessaire. Encore une fois, référez-vous à l’interface d’administration de votre routeur. - -ATTENTION (CPU ARM) : l’activation de l’UPnP est inefficace avec les serveurs équipés d’un processeur ARM (remarque valable pour YunoHost v2.2). Une redirection manuelle des ports du routeur est alors requise. - -#### Le courrier électronique - -Les fournisseurs d’accès à Internet bloquent souvent le port 25 pour éviter que les ordinateurs de votre réseau n’envoient des spams sur Internet à votre insu. Pour pouvoir envoyer des emails, il vous faut donc ouvrir le port 25, ou désactiver l’option « blocage SMTP sortant » dans l’administration de votre routeur. diff --git a/isp_fr.md b/isp_fr.md index e840aa5d..9cd648d1 100644 --- a/isp_fr.md +++ b/isp_fr.md @@ -12,16 +12,16 @@ Tous les fournisseurs d’accès à Internet [membres de la Fédération French * ✔ : oui * ✘ : non -| Fournisseur d’accès | [Free](/isp_free_fr) | [SFR](/isp_sfr_fr) | [Orange](/isp_orange_fr) | Bouygues
Télécom | Darty | -| :---: | :---: | :---: | :---: | :---: | :---: | -| **Box/routeur** | Freebox | Neufbox | Livebox | Bbox | Dartybox | -| **[UPnP](https://fr.wikipedia.org/wiki/Universal_Plug_and_Play)** | ✔ | ✔ | ✔ | ✔ | ✔ | -| **[Port 25 ouvrable](email_fr)**
(fermé par défaut) | ✔ | ✔ | ✘ | ✔ | ✔ | -| **[Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning)** | ✔ | ✔/✘ | ✘ | ✔ | ✔ | -| **[Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup)
personnalisable ** | ✔ (sauf IPv6) | … | ✘ | ✘ | ✘ | -| **[IP fixe](/dns_dynamicip_fr)** | ✔ | ✔/✘ | ✘ | ✔ | ✔ | -| **[IPv6](https://fr.wikipedia.org/wiki/IPv6)** | ✔ | ✔ | ✔ | … | … | -| **[Non listé sur le DUL](https://en.wikipedia.org/wiki/Dialup_Users_List)** | ✘ | … | … | … | … | +| Fournisseur d’accès | OVH | [Free](/isp_free_fr) | [SFR](/isp_sfr_fr) | [Orange](/isp_orange_fr) | Bouygues
Télécom | Darty | +| :---: | :---: | :---: | :---: | :---: | :---: | :---: | +| **Box/routeur** | Personnel/OVH Télécom | Freebox | Neufbox | Livebox | Bbox | Dartybox | +| **[UPnP](https://fr.wikipedia.org/wiki/Universal_Plug_and_Play)** | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| **[Port 25 ouvrable](email_fr)**
(fermé par défaut) | ✔ | ✔ | ✔ | ✘ | ✔ | ✔ | +| **[Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning)** | ✔ | ✔ | ✔/✘ | ✘ | ✔ | ✔ | +| **[Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup)
personnalisable ** | ✔ | ✔ (sauf IPv6) | … | ✘ | ✘ | ✘ | +| **[IP fixe](/dns_dynamicip_fr)** | ✔ | ✔ | ✔/✘ | ✘ | ✔ | ✔ | +| **[IPv6](https://fr.wikipedia.org/wiki/IPv6)** | ✔ | ✔ | ✔ | ✔ | … | … | +| **[Non listé sur le DUL](https://en.wikipedia.org/wiki/Dialup_Users_List)** | … | ✘ | … | … | … | … | Pour une liste plus complète et précise, référez-vous à la très bonne documentation de [wiki.auto-hebergement.fr](http://wiki.auto-hebergement.fr/fournisseurs/fai#d%C3%A9tail_des_fai). **Astuce** : [FDN](http://www.fdn.fr) fournit des [VPN](http://www.fdn.fr/-VPN-.html) permettant de rapatrier une (ou plusieurs sur demande) IPv4 fixe et un /48 en IPv6 et ainsi « nettoyer » votre connexion si vous êtes chez l’un des FAI *limitants* du tableau ci-dessus. @@ -29,8 +29,17 @@ Pour une liste plus complète et précise, référez-vous à la très bonne docu ### Belgique | Fournisseur d’accès | Box/ routeur | uPnP activable | [Port 25 ouvrable](email_fr)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fixe | -| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | +| :---: | :---: | :---: | :---: | :---: | :---: | :---: | | **Proximus** | BBox2 | oui (activé) | oui | **non** | **non** | **non** | | | BBox3 | oui (activé) | oui | **non** | **non** | **non** | | **Scarlet** | BBox2 | oui (activé) | oui | **non** | **non** | **non** | + **Proximus** ne serait pas ouvert à l’auto-hébergement. L’ouverture des ports serait plus difficile afin d’éviter tout SPAM. Il serait préférable de passer par [Neutrinet](http://neutrinet.be), un des [membres de la Fédération French Data Network](http://www.ffdn.org/fr/membres). + +### Côte d'Ivoire + +| Fournisseur d’accès | Box/ routeur | uPnP activable | [Port 25 ouvrable](email_fr)| [Hairpinning](http://fr.wikipedia.org/wiki/Hairpinning) | [Reverse DNS](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) | IP fixe | +| :---: | :---: | :---: | :---: | :---: | :---: | :---: | +| **Orange** | Livebox2 | oui (activé) | non | **non** | **non** | **non** | +| **Moov** | | oui (activé) | | | | | +| **MTN** | | oui (activé) | | | | | \ No newline at end of file diff --git a/isp_free_fr.md b/isp_free_fr.md index 13e0a706..59242ee9 100644 --- a/isp_free_fr.md +++ b/isp_free_fr.md @@ -1,4 +1,4 @@ -#Free +# Free *Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp_fr)**.* @@ -33,15 +33,15 @@ La présence conjointe de ces deux règles permettent d'accéder à votre serveu Pour pouvoir envoyer des mails, le déblocage se fait dans la [partie client](https://subscribe.free.fr/login/). -Depuis le menu Ma freebox aller sur « Blocage SMTP sortant ». +Depuis le menu Ma freebox aller sur « Blocage SMTP sortant ». -Pour pouvoir envoyer des mails, passer le blocage en « inactif ». +Pour pouvoir envoyer des mails, passer le blocage en « inactif ». #### Fonction NAS de la Freebox Il faut installer le paquet `cifs-utils` ```bash -$ sudo apt-get install cifs-utils +$ sudo apt install cifs-utils ``` Il faut créer un point de montage (ici `/home/monlogin/freebox`) @@ -57,13 +57,13 @@ $ sudo mount -t cifs //mafreebox.freebox.fr/Disque\ dur/ /home/monlogin/freebox ##### Automatiser le montage Une ligne a ajouter à la fin du `/etc/fstab` : -``` +```bash //mafreebox.freebox.fr/Disque\040dur/ /home/monlogin/freebox cifs _netdev,guest,uid=monlogin,gid=users,iocharset=utf8 0 0 ``` Le `_netdev` signale que c'est un périphérique réseau, afin que le système ne le monte que s'il a accès au réseau. `guest` est le mode d'identification à la Freebox : pour une connexion authentifié, placer vos identifiants dans un fichier sous la forme -``` +```bash username=your_user password=your_pass domain=FREEBOX diff --git a/isp_orange_fr.md b/isp_orange_fr.md index 828eb0ba..ef6a532a 100644 --- a/isp_orange_fr.md +++ b/isp_orange_fr.md @@ -1,7 +1,7 @@ -#Orange +# Orange *Trouvez la liste d’autres fournisseurs d’accès Internet **[ici](/isp_fr)**.* -####Le courrier électronique +#### Le courrier électronique La box d’Orange bloque le port 25 pour limiter l’envoi de spam. @@ -13,10 +13,68 @@ Pour cela, il faut éditer le fichier de configuration de postfix avec la comman sudo nano /etc/postfix/main.cf ``` -puis rajouter à la ligne le relai SMTP d’Orange : +puis, rajouter à la ligne le relai SMTP d’Orange : + ```bash -relayhost = smtp.orange.fr``` +relayhost = smtp.orange.fr +``` redémarrez Postfix : + ```bash -sudo service postfix restart``` +sudo service postfix restart +``` + +##### Problèmes + +Si vous avez une erreur "Authentification requise", la solution est la suivante : **[source](http://viruslocker.free.fr/?page_id=1749)**. + +Éditer le fichier de configuration de postfix + +```bash +sudo nano /etc/postfix/main.cf +``` +puis, rajouter à la ligne : + +```bash +smtp_sasl_password_maps = hash:/etc/postfix/mdp_fai.conf +smtp_sasl_auth_enable = yes +smtp_sasl_security_options = noanonymous +relayhost = [smtp.orange.fr]:25 +``` + +créer le fichier `mdp_fai.conf` : + +```bash +sudo nano /etc/postfix/sasl/mdp_fai.conf +``` + +ajouter + +```bash +# mdp_fai.conf +[smtp.orange.fr]:25 adresseemail@chez.orange:son-mot-de-passe +``` +avec votre mot de passe du compte d'orange. + +Intégrer le mot de passe à Postfix : + +```bash +sudo postmap /etc/postfix/sasl/mdp_fai.conf +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 : + +```bash +apt search libsasl2-modules +apt search sasl2-bin +``` + +Si ils ne sont pas présents, installez-les : + +```bash +apt install libsasl2-modules sasl2-bin +``` diff --git a/jessie_stretch_migration.md b/jessie_stretch_migration.md new file mode 100644 index 00000000..7609f9df --- /dev/null +++ b/jessie_stretch_migration.md @@ -0,0 +1,59 @@ +# Migrating an existing instance to Stretch + +This page is dedicated to help you migrating an instance from YunoHost 2.7.x (running on Debian Jessie/8.x) to YunoHost 3.0 (running on Debian Stretch/9.x). + +## Important notes + +- The YunoHost team did its best to make sure that the migration is as smooth as possible and was tested over the course of several months in several cases. + +- With that said, please be aware that this is a delicate operation. System administration is a complicated topic and covering every particular cases is quite hard. Therefore, if you host critical data and services, please [make backups](/backup). And in any case, be patient and attentive during the migration. + +- Yet, please don't rush into thinking that you should rush into reinstalling your system. A common "mistake" is to be willing to reinstall a server at the slightest complication. But turns out that reinstalling a system can also be complicated. Instead, if you happen to run into issues, we encourage you to try to investigate and understand what's going on and reach for help instead of just throwing away everything because it looks simpler. + +- About external email clients : if you or your users are using external email clients (typically Thunderbird, K9Mail, ...) be aware that the SMTP port changed from 465 (with SSL/TLS) to 587 (STARTTLS). See [this page of doc dedicated to email clients](/email_configure_client). + +- For advanced users : if you have some custom scripts for backups, be aware that we made some backward-incompatible changes in the backup command line. The deprecated `--hooks`/`--ignore-hooks` options were removed, as well as the options `--ignore-apps`, `--ignore-system`. To make things more intuitive, `yunohost backup create --apps wordpress` (for example) will only backup wordpress, i.e. you don't have to add `--ignore-system` to not backup the system. + +## Migration procedure + +#### From the webadmin + +After upgrading to 2.7.14, go to Tools > Migrations to access the migrations interface. You will have to read carefully and accept the disclaimer then launch the migration. The logs will be shown in the message bar (you can hover it to see the whole history). + +#### From the command line + +After upgrading to 2.7.14, run : + +```bash +yunohost tools migrations migrate +``` + +then read carefully and accept the disclaimer. + +## During the migration + +Depending on your hardware and packages installed, the migration might take up to a few hours. + +Note that it is expected to see some errors (in particular about fail2ban) during the migration, so don't worry too much about them. + +#### If the migration crashed / failed at some point. + +If the migration failed at some point, it should be possible to relaunch it. If it still doesn't work, you can try to [get help](/help) (please provide the corresponding messages or whatever makes you tell that it's not working). + +## What to do after the upgrade + +#### Check that you actually are on Debian Stretch and YunoHost 3.0 + +You should be able to see this from the webadmin Tools > Diagnosis, and also in the footer of the page. On the command line, you can use `lsb_release -a` and `yunohost --version`. + +#### Check that fail2ban and the firewall are active + +You should be able to see that fail2ban and the firewall are active. From the webadmin in Services (look for 'fail2ban' and 'yunohost-firewall'). From the command line, run `yunohost service status fail2ban yunohost-firewall`. They should both have `active: active`. + +#### Check that your applications are working + +Test that your applications are working. If they aren't, you should try to upgrade them (it is also a good idea to upgrade them even if they are working anyway). + +#### Mail users: check your mail score + +If you are using mails (especially sending them), check that your score is still good by using [mail-tester](https://www.mail-tester.com/) for example. diff --git a/jessie_stretch_migration_fr.md b/jessie_stretch_migration_fr.md new file mode 100644 index 00000000..0cb2e51c --- /dev/null +++ b/jessie_stretch_migration_fr.md @@ -0,0 +1,59 @@ +# Migrer vers Stretch + +L'objectif cette page est de décrire le processus de migration d'une instance en YunoHost 2.7.x (tournant sous Debian Jessie/8.x) vers YunoHost 3.0 (tournant sous Debian Stretch/9.x) + +## Notes importantes + +- L'équipe de YunoHost a fait de son mieux pour que cette migration se passe autant en douceur que possible. Elle a été testée durant plusieurs mois et sur plusieurs types d'installations. + +- Néanmoins, vous devez être conscient qu'il s'agit d'une opération délicate. L'administration système est un sujet compliqué et couvrir tous les cas particuliers n'est pas chose aisée. En conséquence, si vous hébergez des données et des systèmes critiques, [faites des sauvegardes](/backup). Et dans tous les cas, soyez patients et attentifs durant la migration. + +- Cependant, ne vous précipitez pas non plus à vouloir faire une réinstallation de votre système. Une attitude qui revient régulièrement est de vouloir réinstaller son système à la moindre complication. Pourtant, réinstaller peut aussi s'avérer compliqué. À la place, si vous rencontrez des problèmes, nous vous encourageons à investiguer, chercher à comprendre et trouver de l'aide, plutôt que de se précipiter à vouloir réinstaller simplement parce que cela semble plus simple. + +- Si vous ou vos utilisateurs utilisez des clients emails externes (typiquement Thunderbird ou K9Mail) : le port SMTP a changé. Il s'agissait auparavant du port 465 (avec SSL/TLS) qui a été remplacé par 587 (STARTTLS). Voir [cette page de doc dédiée à la configuration des clients mails](/email_configure_client). + +- Pour les utilisateurs avancés : si vous avez des scripts personnels pour faire des backups, certains changements cassent (de façon mineure) la rétrocompatibilité de la ligne de commande. Les options dépréciées `--hooks`/`--ignore-hooks` ont été enlevées, ainsi que `--ignore-apps`, `--ignore-system`. Pour rendre les choses plus intuitives, `yunohost backup create --apps wordpress` (par exemple) créera uniquement un backup de wordpress, i.e. pas besoin d'ajouter `--ignore-system` pour ne pas backuper le système. + +## Procédure de migration + +#### Depuis la webadmin + +Après avoir mis à jour vers la version 2.7.14, allez dans Outils > Migrations pour accéder à l'interface de migration. Il vous faudra ensuite lire l'avertissement attentivement et l'accepter pour lancer la migration. Les logs seront affichés dans la barre de message en haut (vous pouvez approcher la souris dessus pour voir l'historique en entier). + +#### Depuis la ligne de commande + +Après avoir mis à jour vers la version 2.7.14, lancez : + +```bash +yunohost tools migrations migrate +``` + +puis lisez attentivement l'avertissement et les instructions. + +## Pendant la migration + +En fonction de votre matériel et des paquets installés, la migration peut prendre jusqu'à quelques heures. + +Notez qu'il est attendu de voir certaines erreurs (en particulier à propos de fail2ban) pendant la migration - ne vous en inquiétez pas trop. + +#### Si la migration a crashé / échoué à un moment. + +Si la migration a échoué a un moment donné, la première chose à faire est de tenter de la relancer. Si cela ne fonctionne toujours pas, il vous faut [trouver de l'aide](/help) (prière de fournir le/les messages correspondants ou tout élément qui vous fait penser que ça n'a pas marché). + +## Choses à vérifier après la migration + +#### Vérifiez que vous êtes véritablement sous Debian Stretch / YunoHost 3.0 + +Pour cela, allez dans Outils > Diagnostique. (Vous pouvez aussi regarder ce qui est affiché dans le pied de page). En ligne de commande, vous pouvez aussi utiliser `lsb_release -a` et `yunohost --version`. + +#### Vérifiez que fail2ban et le pare-feu sont actifs. + +Vous devriez voir que fail2ban et le firewall sont actifs. Depuis la webadmin, dans Services (chercher 'fail2ban' et 'yunohost-firewall'). Depuis la ligne de commande, faites `yunohost service status fail2ban yunohost-firewall` : les deux devraient être en `active: active`. + +#### Vérifiez que les applications fonctionnent + +Vérifiez que vos applications installées fonctionnent... Si elles ne fonctionnent pas, il est recommandé de tenter de les mettre à jour. (ou bien de manière générale, il est recommandé de les mettre à jour même si elles fonctionnent !). + +#### Si vous utilisez les mails : vérifiez votre score + +Si vous utilisez les emails (en particulier les envois), vérifiez que votre score est toujours bon via [mail-tester](https://www.mail-tester.com/) par exemple. diff --git a/news.md b/news.md deleted file mode 100644 index 354f67a6..00000000 --- a/news.md +++ /dev/null @@ -1,3 +0,0 @@ -# News - -The news are now available on [our forum](https://forum.yunohost.org/), in the [announcement category](https://forum.yunohost.org/c/announcement). \ No newline at end of file diff --git a/news_fr.md b/news_fr.md deleted file mode 100644 index 65dafbb5..00000000 --- a/news_fr.md +++ /dev/null @@ -1,3 +0,0 @@ -# Actualités - -Les actualités sont maintenant disponibles sur [notre forum](https://forum.yunohost.org/), dans la [catégorie "announcement"](https://forum.yunohost.org/c/announcement). \ No newline at end of file diff --git a/orga/yunohost_project_organization.md b/orga/yunohost_project_organization.md index 4d27e2db..4fdfe208 100644 --- a/orga/yunohost_project_organization.md +++ b/orga/yunohost_project_organization.md @@ -168,13 +168,12 @@ Then a member of a group can announce their decision as effective (and proceed w ## Composition of groups -- Distribution : Heyyounow - Council : Bram, ju, ljf, Maniack, Moul, opi, theodore -- Core Dev : AlexAubin, Bram, Ju, ljf, Moul, opi -- Apps : Bram, frju365, JimboJoe, Ju, ljf, Maniack C, Maxime, Moul, Scith, Tostaki +- Core Dev : AlexAubin, Bram, JimboJoe, Ju, ljf, Moul, opi +- Apps : Bram, cyp, frju365, JimboJoe, Josue-T, Ju, ljf, Maniack C, Maxime, Moul, Scith, Tostaki - Infra : Bram, Ju, Maniack C, Moul, opi - Communication - - Com : Bram, Moul, korbak, ljf, opi + - Com : Bram, Moul, korbak, ljf, opi, frju365 - Doc : Moul, Theodore - Trans : Jean-Baptiste - Distribution : Heyyounow diff --git a/orga/yunohost_project_organization_fr.md b/orga/yunohost_project_organization_fr.md index 6268a7e7..d9622c97 100644 --- a/orga/yunohost_project_organization_fr.md +++ b/orga/yunohost_project_organization_fr.md @@ -3,7 +3,7 @@ ## Objectif du document Ce document a pour objectif de permettre aux contributeurs de se sentir légitimes d’effectuer une contribution dans le projet YunoHost avec un avis collectif. Il vise également à renforcer le projet en le structurant autour de groupes de travail autonomes pouvant résister au départ ou à l'absence de certains contributeurs. Le projet étant communautaire, les décisions prises hâtivement et discrètement par un groupe restreint de contributeurs peuvent entraîner des frustrations postérieures. -Pour pallier à ce problème, la solution proposée ici est de faire en sorte que les décisions soient prises collectivement, qu’elles soient suffisamment réfléchies, et qu'elles soient documentées ou rendues publiques. +Pour pallier ce problème, la solution proposée ici est de faire en sorte que les décisions soient prises collectivement, qu’elles soient suffisamment réfléchies, et qu'elles soient documentées ou rendues publiques. Un conseil oriente l’évolution du projet YunoHost, et des groupes d’intérêts permettent de contribuer plus efficacement en fonction des domaines de prédilection de chacun. ## Définition de YunoHost @@ -81,7 +81,7 @@ Le choix d'un outil de communication est laissé à chaque groupe en fonction de #### Définition et constitution du Conseil -YunoHost grandissant, il est important de maintenir une cohérence entre tous les groupes, néanmoins il est impossible d'imposer à chacun des membres des groupes de s'intéresser ou de s'impliquer sur tous les aspects du projet (pour des raisons de temps et de compétences). Pour pallier à cela, il est proposé de créer un meta-groupe, où chaque groupe sera représenté par au moins un de ses membres : le Conseil. +YunoHost grandissant, il est important de maintenir une cohérence entre tous les groupes, néanmoins il est impossible d'imposer à chacun des membres des groupes de s'intéresser ou de s'impliquer sur tous les aspects du projet (pour des raisons de temps et de compétences). Pour pallier à cela, il est proposé de créer un méta-groupe, où chaque groupe sera représenté par au moins un de ses membres : le Conseil. Le Conseil est indépendant des groupes et réunit les contributeurs souhaitant s'impliquer le plus dans le projet, son rôle est de : - prendre les décisions importantes sur YunoHost qui ne dépendent pas d'un seul groupe (par exemple changer le moteur du wiki) @@ -92,136 +92,111 @@ Le choix d'un outil de communication est laissé au Conseil, ses décisions doiv Pour participer aux votes du Conseil, il faut avoir contribué au projet et avoir obtenu un droit de vote (ou d'entrée) au sein du Conseil. Ce droit est délivré par le Conseil (éventuellement sur demande). Le Conseil est libre à tout moment de modifier le processus de décision. Être membre du Conseil n'implique pas forcément d'avoir l'ensemble des accès (infrastructure, dépôt etc...). -### Un processus de prises de décision basé sur un consensus mou +### Processus de validation des pull requests -Les décisions à prendre peuvent être de deux ordres : +Cette section détaille le processus de validation des pull requests dans les différents dépôts du projet. L'objectif de ce processus est de dégager un « consensus mou ». Il est important de préciser que ce processus est *recommandé* mais ne représente pas un impératif. En particulier, il ne couvre pas toutes les situations qui peuvent se présenter. Il est donc légitime de l'adapter (avec l'accord du groupe concerné) lorsqu'il n'est pas adapté au contexte. -1. pour un groupe (par "exemple merger une PR" serait affecté au groupe Dev tandis que "poster un tweet" serait de la responsabilité du groupe Communication) -2. pour l'ensemble du projet (par exemple décider d'une release avec des nouvelles fonctionnalités) +Si un consensus ne peut être trouvé au sein d'un groupe en suivant le processus décrit, il est invité à se tourner vers le Conseil pour en débattre. Si aucun consensus n'est trouvé, la proposition sera soumise au vote de tous les contributeurs. -Si un consensus sur une décision à prendre n'est pas trouvée au sein d'un groupe, ce dernier devra se tourner vers le Conseil pour en débattre. Si aucun consensus n'est trouvé, la proposition sera soumise au vote de tous les contributeurs. +#### 1. Proposition -#### Le processus de prise de décision en détail +N'importe quel contributeur peut proposer une pull request (abrégée PR dans la suite) dans les divers dépôts liés au projet YunoHost (core, apps, infra, ...). -##### 1) Initiation d'une décision à prendre - - peut-être initiée par n'importe qui suivant les mediums définis au sein de chacun des groupes (exemple : ouvrir une PR déclenche automatiquement ce processus) - - forcément publique à l'exception de situations bien définies (bug relatif à la sécurité critique ou vote sur les personnes) - - une date de clôture est automatiquement définie par type de proposition. La définition de la date remplie plusieurs fonctions : - - pouvoir laisser le temps à tout le monde de s'exprimer et ne pas prendre la décision trop vite - - maintenir un rythme car si le quota des réponses est rempli avant le temps imparti, il n'y a pas besoin d'attendre l'avis de tout les membres du groupe - - le quota est à évaluer en fonction des personnes inscrites au groupe (ou au Conseil selon la situation) qui ont manifesté leurs souhaits d'être considéré comme votant régulier => exemple kload peut vouloir donner son avis ponctuellement, mais à priori il ne souhaitera pas être considéré comme membre votant actif du Conseil - - pouvoir être repoussable sur simple demande d'une des personnes du groupe. Et seulement du groupe, pas tous les contributeurs. +L'auteur est vivement encouragé à décrire sa proposition en donnant le maximum des informations +pertinentes. Le groupe peut, à cette fin, proposer un modèle des informations à +inclure, comme par exemple : +- status actuel de la PR (ex. : non terminé, en attente de revues, choix techniques à faire...) +- problème auquel réponds la PR (et références liées, par ex. : ticket sur le bugtracker, post sur le forum...) +- solution, stratégie, résumé des changements, et/ou choix techniques utilisés dans la PR +- comment tester la PR -##### 2) Ouverture de la discussion, plusieurs réponses possibles : -Tout le monde peut changer de positions à n'importe quel moment, mais il est de bon ton de laisser au groupe le temps de réagir si cela est nécessaire (pas passer de positif à négatif puis rejeter la proposition 3 min après par exemple.) +L'auteur est vivement encouragé à respecter les bonnes pratiques suivantes : +- une PR doit concerner exclusivement un sujet précis. Par exemple, elle ne doit pas à la fois résoudre un bug et ajouter une fonctionnalité (à moins que l'un implique l'autre) ; +- avant de débuter l'implémentation d'une fonctionnalité qui fait intervenir des choix de conception (nom et format de commande ou d'option, nouvelle API, interface utilisateur, ...), discuter en amont de manière informelle avec le groupe pour s'assurer que l'implémentation imaginée convienne au plus grand nombre et reste dans l'esprit du projet ; +- nommer sa PR avec un titre explicite, et la branche associée avec un nom explicite ; +- donner les références vers d'autres éléments liés à la PR (rapport de bug sur le bugtracker, message sur le forum, ...) -- réponses dites "simple" - - "je suis d'accord" -> vaut pour un avis positif - - "ça me semble bon, mais je préfère m'en remettre aux autres" -> si jamais il n'y a que des avis comme cela (ou le suivant) et au moins un avis positif et que la date est passé, la proposition est acceptée - - "pas d'avis" / "je ne suis pas en position de donner un avis pertinent (exemple: je sais pas coder en X)" -- réponses délayantes/différées - - demande de précisions, dans ce cas la décision est suspendue -- refus: tout refus doit être argumenté et justifié +Une PR peut être créée même si son auteur juge qu'elle n'est pas encore terminée. Dans ce cas, il doit déclarer explicitement dans le fil de discussion de la PR lorsqu'il juge la PR prête. Cela n'empêche pas les autres contributeurs d'émettre des avis sur la PR pendant ce temps. -##### 3) Suspension/Repoussement - - tant qu'il n'y a pas de réponse, la décision est suspendue, au moment de la réponse, la date de clôture est automatiquement repoussée (si besoin) (pour une durée, à définir, moins longue que la première fois) - - situation où il y a des avis positifs et négatifs ou situation où il y a un choix à faire entre plusieurs propositions +Il appartient aussi à l'auteur de la PR de juger de son importance. (Ce jugement pourra cependant être contesté par les autres membres du groupe concerné par la PR.) Les niveaux d'importance utilisés sont les suivants : +- **micro** : concerne uniquement un détail de forme et/ou qui ne nécessite pas d'être débattue et testée. Elle doit être facilement réversible. +- **mineure** : impacte de manière légère le projet (e.g. refactoring d'une petite partie de code, réparation d'un bug, ...) +- **moyenne** : impacte de manière significative l'architecture d'une partie du code (e.g. refactoring de tout un aspect ou de tout un fichier, ajout d'une fonctionnalité importante, sortie d'une version testing, ...) +- **majeure** : impacte lourdement l'ensemble du projet (e.g. migration d'une dépendance critique, changement de version de Debian, sortie d'une version stable, ...) -##### 4) Demande de modifications - - mais il se peut qu'il y ait discussion autour de ces modifications, si c'est le cas, cela devient une nouvelle décision à adjoindre à la liste des décisions à prendre et le processus s'y applique alors (et cela repousse la date) - - dans le cas contraire, un membre du groupe peut demander à ce que l'on fasse un vote qui portera sur la liste des possibilités qui font conflits + "ce vote est mal formulé, reformulons le" - - s'il n'y a pas assez de monde d'accord, la date est repoussée et un rappel doit être envoyé - - si le résultat est vraiment serré, le groupe est invité à rediscuter de la question si elle est importante, car cela pourrait être source de division et de tension à l'avenir -##### 5) Clôture - - si le groupe est unanime dans sa décision - - que des avis positifs - - que des refus - - sans avis (s'en remet aux autres) - - Pour une décison mineure ou moyenne/standard, si le quota de réponse est atteint à la durée minimale et que le consensus est obtenu. - - Le quota de réponse correspond aux avis nécessaires, détaillé ci-après dans les types de décisions. Le pourcentage est rapporté au nombre d'actifs dans le groupe concerné. La gestion des actif et inactif dans le groupe est à la charge du coordinateur et du suppléant qui doivent maintenir à jour la liste des membres au minimum à chaque décision du groupe. (Un inactif qui se manifeste lors d'une décision redevient automatiquement actif.) - - s'il n'est pas possible d'avoir assez de monde (vacances, plus assez de membres du groupe pouvant avoir un avis) il est possible pour le groupe de demander la clôture même si le quota d'avis n'est pas atteint, il y a alors un nouveau décalage de la date et si cette nouvelle date est franchie, la proposition est clôturée selon les avis donnés. +#### 2. Revue et validation collective -###### Micro décision: -- Décision prise et appliquée par un seul membre sans délai. Ce type de décision doit impérativement pouvoir être réversible, et peut être remise en question par n'importe quel membre du groupe. +(Cette section ne s'applique pas aux PR "micro" qui peuvent être validées directement par leur auteur.) -###### Décision Mineure: -- Durée initiale: 1 semaine. -- Durée minimale: 3 jours. -- Décalage, si nécessaire: 3 jours. -- Avis nécessaires: 2 membres du groupe (celui qui a initié cette prise de décision peux donner son avis). 3, dont 2 membres du groupe pour anticiper. -- Validation par vote (le cas échéant): 66% de votes positifs. +Une fois la PR déclarée comme terminée, les contributeurs sont invités à donner leurs avis, relire et tester les changements proposés pour les valider. Lorsque des bugs ou des implémentations mauvaises ou incomplètes sont trouvées, les relecteurs rapportent cordialement le problème à l'auteur de la PR sur le fil de discussion. Si le problème trouvé est simple à corriger (e.g. typo ou détail de forme), le relecteur est encouragé à amender la PR pour corriger le problème lui-même. Sinon, l'auteur fait de son mieux pour corriger les problèmes soulevés. -###### Décision Standard/Moyenne: -- Durée initiale: 2 semaines. -- Durée minimale: 1 semaine. -- Décalage, si nécessaire: 1 semaine. -- Avis nécessaires: 50% des membres du groupe (celui qui a initié cette prise de décision peux donner son avis). 66% des membres du groupe pour anticiper. -- Validation par vote (le cas échéant): 75% de votes positifs. +Les relecteurs rapportent également le degré de relecture et de tests effectués (c.f. liste ci-dessous). Selon l'importance de la PR (mineure, moyenne ou majeure), différents quotas de tests et approbations sont à remplir pour que celle-ci soit validée. Les relecteurs peuvent valider une fois chaque type de relecture/test nécessaire (par exemple, un relecteur peut donner un point d'accord sur le principe, un autre point de relecture en diagonale, et un autre point de test dans des cas simples.). L'auteur de la PR ne compte pas dans ces quotas de validation. La proposition doit aussi passer les tests automatiques disponibles dans le groupe (CI, tests unitaires/fonctionnels, linter, ...). -###### Décision Majeure : -- Durée initiale: 1 mois. -- Décalage, si nécessaire: 2 semaines. -- Avis nécessaires: 75% des membres du groupe (celui qui a initié cette prise de décision peux donner son avis). -- Validation par vote (le cas échéant): 90% de votes positifs. +| | **Mineure** | **Moyenne** | **Majeure** | +|-----------------------------------|-------------|--------------|-------------| +| **Accord sur le principe** | 2 | 3 | 4 | +| **Relecture en diagonale** | 1 | 2 | 3 | +| **Testé dans les cas simples** | 1 | 2 | 3 | +| **Relecture attentive** | 0 | 1 | 2 | +| **Testé dans des cas compliqués** | 0 | 1 | 2 | -##### 6) Application -Alors un membre du groupe peut annoncer la décision comme effective (et procéder aux actions nécessaires comme releaser, merger, annonce, autre ...). Il est important que s'il y a besoin de certaines actions, des personnes se soient engagées à les faire, une décision sans désigner est moyennement utile +Si l'auteur ne fait pas parti du groupe concerné par la PR, tous ces quotas sont augmentés de 1. Dans tous les cas, ces quotas doivent être remplis au moins à 50% par des relecteurs membres du groupe concerné par la PR. (Ainsi, par exemple, un non-membre peut donner son accord sur le principe pour une PR mineure. Mais deux avis de non-membres pour une PR moyenne comptent uniquement pour un seul avis). + + +#### 3. Merge d'une pull request + +Une fois les quotas de relecture remplis, et si aucun refus n'a été prononcé et qu'aucune demande de changement n'est en attente, n'importe quel membre du groupe peut alors déclarer et marquer la PR comme "prête à être mergée". + +Pendant une durée de 3 jours suivant cette déclaration, les membres du groupe peuvent encore relire, demander des changements ou émettre un refus vis-à-vis de la PR. Dans ce cas, le merge est interrompu et le processus retourne à la partie 2). Pour les PRs moyennes et majeures, la durée est augmentée jusqu'à ce qu'il se soit écoulé au moins une semaine par rapport au moment où la PR a été déclarée comme prête par son auteur. + +À l'issue de cette durée, n'importe quel membre du groupe peut merger la PR. Lorsque celle-ci comporte plusieurs commits, il est recommandé d'utiliser la fonction "squash and merge" pour garder l'historique de commit propre. + +#### Cas particuliers + +Plusieurs cas particuliers peuvent se présenter et dont la résolution est décrite ci-après. + +##### Refus d'une PR + +Une PR peut être refusée et clôturée par n'importe quel membre du groupe concerné si : +- la PR a été créée au moins depuis deux semaines +- au moins deux membres du groupe ont manifesté un désaccord avec le principe de la PR +- aucun autre membre du groupe n'a manifesté son accord avec le principe de la PR + + +##### Co-création + +Une PR peut être développée par plusieurs personnes. Chacun est invité à y faire des commits en se concertant avec l'auteur initial ou le nouveau gestionnaire de PR si l'auteur est indisponible, manque de temps ou souhaite se consacrer à d'autres travaux. + +Si ces commits sont conséquents, dans ce cas on peut prendre **partiellement** en compte l'avis des auteurs dans les quotas de relectures et de tests. + +Exemple: si une PR est écrite par A et B (50/50), A et B pourront relire le code de l'autre. Dans ce cas, on pourra par exemple compter une relecture pour ces 2 relectures partielles. + + +##### Validation "allégé" en cas de manque de relecteurs + +En cas de manque de relecteurs, l'auteur d'une PR peut déclencher une procédure de validation alternative si : +- l'auteur est membre du groupe concerné par la PR +- il s'agit d'une PR mineure ou moyenne +- la PR a été déclarée comme prête +- il n'y a pas de demande de changement en attente +- les quotas de relecture "standards" n'ont pas été remplis +- une semaine s'est écoulée depuis le dernier commentaire ou commit + +Dans ce cas, l'auteur annonce sur le fil de discussion de la PR qu'il souhaite engager cette prodécure ainsi que sur la liste de diffusion (ou lors d'une réunion du mardi). À partir de ce moment, les quotas d'accord, relecture et tests pour valider cette PR sont diminués de 1. Au minimum une semaine devra s'écouler avant que cette PR ne soit effectivement mergée. Un autre membre du groupe peut à tout moment mettre fin à cette procédure si il juge la PR trop critique pour être mergée de la sorte. ## Composition des groupes - Conseil : Bram, ju, ljf, Maniack, Moul, opi, theodore. -- Core Dev : AlexAubin, Bram, Ju, ljf, Moul, opi -- Apps : Bram, frju365, JimboJoe, Ju, ljf, Maniack C, Maxime, Moul, Scith, Tostaki +- Core Dev : AlexAubin, Bram, JimboJoe, Ju, ljf, Moul, opi +- Apps : Bram, cyp, frju365, JimboJoe, Josue-T, Ju, ljf, Maniack C, Maxime, Moul, Scith, Tostaki - Infra : Bram, Ju, Maniack C, Moul, opi - Communication - - Com : Bram, Moul, korbak, ljf, opi + - Com : Bram, Moul, korbak, ljf, opi, frju365 - Doc : Moul, Theodore - Trad : Jean-Baptiste - Distribution : Heyyounow -## Tableau récapitulatif du nombre d'avis nécéssaire pour la prise de décision - -_Les valeurs sont arrondies (exemple: 5,4 => 5 et 5,5 => 6)._ - -| | **Mineure** | **Standard** | **Majeure** | -|----------------------|---------|----------|---------| -| **Conseil** | -| Clôture classique | 2 | 4 | 5 | -| Clôture anticipée | 3* | 5 | -| Clôture par vote | 5 | 5 | 6 | -| **Core Dev** | -| Clôture classique | 2 | 3 | 5 | -| Clôture anticipée | 3* | 4 | -| Clôture par vote | 4 | 5 | 5 | -| **Apps** | -| Clôture classique | 2 | 5 | 8 | -| Clôture anticipée | 3* | 7 | -| Clôture par vote | 7 | 8 | 9 | -| **Infra** | -| Clôture classique | 2 | 3 | 4 | -| Clôture anticipée | 3* | 3 | -| Clôture par vote | 3 | 4 | 5 | -| **Communication -> Com** | -| Clôture classique | 2 | 2 | 3 | -| Clôture anticipée | 3* | 3 | -| Clôture par vote | 3 | 3 | 4 | -| **Communication -> Doc** | -| Clôture classique | 1 | 1 | Conseil | -| Clôture anticipée | 2* | 2* | -| Clôture par vote | Conseil | Conseil | Conseil | -| **Distribution** | -| Clôture classique | 1 | Conseil | Conseil | -| Clôture anticipée | 1 | Conseil | -| Clôture par vote | 1 | Conseil | Conseil | - -\* dont 1 avis qui peut être externe au groupe - -Pour la traduction, le processus reste à adapter. - -Pour la doc, le nombre d'avis pour la cloture anticipée d'une décision mineure est pour le moment réduit (vu qu'il n'y a que 2 personnes dans le groupe). Les autres types de décisions sont prises par le conseil. - -Pour le groupe distribution, étant donné qu'il n'y a pour l'instant que Heyyounow, le Conseil sera sollicité pour les décisions Standard ou Majeure. ## Droits d’administration afférents aux groupes Cette partie liste les kits de droits d’administration pour les différents groupes du projet YunoHost : @@ -251,7 +226,7 @@ Cette partie liste les kits de droits d’administration pour les différents gr - Redmine : membre du [projet `Apps`](https://dev.yunohost.org/projects/apps), - GitHub : membre de l’[équipe `Apps` de l’organisation `YunoHost`](https://github.com/orgs/YunoHost/teams/apps), - Intégration continue : accès à [CI-Apps](https://ci-apps.yunohost.org), -- XMPP : admin et modérateur sur le [salon `Apps`](xmpp:apps@conference.yunohost.org?join), +- XMPP : modérateur sur le [salon `Apps`](xmpp:apps@conference.yunohost.org?join), - Forum : membre du [groupe `Apps`](https://forum.yunohost.org/groups/Apps). ### Communication @@ -322,4 +297,4 @@ Cette partie liste les kits de droits d’administration pour les différents gr - Listes de diffusion : [contrib](https://list.yunohost.org/cgi-bin/mailman/listinfo/contrib) et [apps](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) - [Bugtracker Redmine](https://dev.yunohost.org). - Forge git pour la review de code : [YunoHost](https://github.com/YunoHost) [YunoHost-Apps](https://github.com/YunoHost-Apps). -- [Salons discussions XMPP](https://yunohost.org/#/chat_rooms_fr) +- [Salons de discussions XMPP](https://yunohost.org/#/chat_rooms_fr) diff --git a/package_list_fr.md b/package_list_fr.md index e8997e6c..4c8d53ce 100644 --- a/package_list_fr.md +++ b/package_list_fr.md @@ -4,7 +4,7 @@ Afin de mettre en place un système automatisé de compilation des paquets Debian, le développement de YunoHost progresse désormais autour de trois branches principales : - **stable** : il s’agit du code des paquets Debian utilisés en live par les utilisateurs de YunoHost. - **testing** : il s’agit du code éligible pour la création d’une nouvelle version de YunoHost, il est supposé stable mais manque de test. La branche testing peut notamment servir pour corriger rapidement certains bugs. -- **unstable** : il s’agit là des derniers codes ajoutés au dépôt mais qui sont connus pour être instables voir inachevés. C’est à destination de cette branche que vous devez faire vos pull request. Si votre travail est conséquent mais inachevé, il convient d’envisager de créer une branche à part thématique (exemple : backup). +- **unstable** : il s’agit là des derniers codes ajoutés au dépôt mais qui sont connus pour être instables voir inachevés. C’est à destination de cette branche que vous devez faire vos pull request. Si votre travail est conséquent mais inachevé, il convient d’envisager de créer une branche à part, thématique (exemple : backup). Les numéros de version des paquets stable sont pairs, les numéros de version des paquets testing sont impairs. Ainsi, la version 2.3 de YunoHost est une version de test qui sera transformée en version 2.4 si les tests sont concluants. @@ -38,4 +38,4 @@ Le service yunohost-api doit donc être start pour utiliser l’administration w ### Conseils de développement #### Traduction Afin d’éviter des problèmes de fusion, lorsque vous ajoutez ou modifiez une clé de traduction dans les fichiers json situés dans les répertoires locales des dépôts git, il est demandé d’ajouter les clés uniquement dans le fichier en.json, même si vous savez faire la traduction pour d’autres langues. -Les traductions se font ensuite sur weblate. Donc si effectivement vous savez traduire dans une autre langue, n’hésitez pas à y faire un tour. \ No newline at end of file +Les traductions se font ensuite sur weblate. Donc si effectivement vous savez traduire dans une autre langue, n’hésitez pas à y faire un tour. diff --git a/packaging_apps.md b/packaging_apps.md index cd2bfe32..a3bb6d21 100644 --- a/packaging_apps.md +++ b/packaging_apps.md @@ -38,7 +38,7 @@ Since YunoHost has a unified architecture, you will be able to guess most of the Multi-instance ### Hooks -YunoHost provides a hook system, which is accessible via the packager's script callbacks in moulinette (CLI). +YunoHost provides a hook system, which is accessible via the packager's script callbacks in command line. The scripts have to be placed in the `hooks` repository at the root of the YunoHost package, and must be named `priority-hook_name`, for example: `hooks/50-post_user_create` will be executed after each user creation. **Note**: `priority` is optional, default is `50`. @@ -48,13 +48,44 @@ Take a look at the [ownCloud package](https://github.com/Kloadut/owncloud_ynh) f ### Helpers Helpers +### Registering a log file + +In a lot of case, you might want to register a log file created by your app, to make it available in the webadmin. To register a log, you can create a reference file `/var/log/yunohost/categories/app/APPNAME.yml`. + +You can specify a start date by starting the file name with the date formatted as `YYYYMMDD-HHMMSS`. + +Example of yml metadata log file: +```bash +log_path: /path/to/your/log/file.log +``` + +If you want display some context info, you can add: +```bash +extra: + env: + args1: value1 + args2: value2 + args3: value3 +``` + +You can attach the log to an app, domain, service or user like this : +```bash +related_to: + - ['app', 'APPNAME'] + - ['service', 'SERVICE1'] + - ['service', 'SERVICE2'] + - ['domain', 'DOMAIN.TLD'] +``` + +This will be used to filter logs and display all log related to an entity like a user, a domain, an app or a service. + ### Test it! In order to test your package, you can execute your script standalone as `admin` (do not forget to append required arguments): ```bash su - admin -c "/bin/bash /path/to/my/script my_arg1 my_arg2" ``` -Or you can use [moulinette](/moulinette_en): +Or you can use [command line](/commandline_en): ```bash yunohost app install /path/to/my/app/package ``` @@ -70,7 +101,7 @@ Here is a list of best practices for application install scripts: * install script should use the command-line method instead of calls to curl through web install form; * install script should save install answers; * application sources should be checked with a control sum (sha256, sha1 or md5) or a PGP signature; -* scripts should be tested on Debian Jessie as well as 32 bits, 64 bits and ARM architectures; +* scripts should be tested on Debian Stretch 32 bits, 64 bits and ARM architectures; * backup and restore scripts should be present and functional. To be define the quality of a package, it'll obtained a [level](packaging_apps_levels_fr), determined according to somes criteria of installation and according to respect to [package guidelines](packaging_apps_guidelines_fr). @@ -87,9 +118,9 @@ This Python script checks: ### Publish and ask for testing your application * Publishing a [post on the Forum](https://forum.yunohost.org/) with the [`App integration` category](https://forum.yunohost.org/c/app-integration), to ask for testing and feedback on your application. -* Ask your application to be added to the [app repository](https://github.com/YunoHost/apps) to be displayed in the [non-official apps list](apps_in_progress_en). Specify its progress state: `notworking`, `inprogress`, or `working`. +* Ask your application to be added to the [app repository](https://github.com/YunoHost/apps) to be displayed in the [non-official apps list](apps_en). Specify its progress state: `notworking`, `inprogress`, or `working`. - Subscribe to the [Apps mailing list](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) to be informed about packaging evolution. ### Officalization of an application -To become an official application, it must be tested well enough, be stable and should work on 64 bits, 32 bits et ARM processor architectures, and on Debian Jessie. If you think those conditions are met, ask for [official integration](https://github.com/YunoHost/apps) of your application. +To become an official application, it must be tested well enough, be stable and should work on Debian Stretch 64 bits, 32 bits and ARM architectures. If you think those conditions are met, ask for [official integration](https://github.com/YunoHost/apps) of your application. diff --git a/packaging_apps_arguments_management_fr.md b/packaging_apps_arguments_management_fr.md index c7da4720..28471773 100644 --- a/packaging_apps_arguments_management_fr.md +++ b/packaging_apps_arguments_management_fr.md @@ -2,7 +2,7 @@ ## Gestion des arguments #### Récupérer les arguments du manifeste dans le script d’installation -Les arguments sont passés au script d’installation dans l’ordre du manifeste. Par exemple pour Roundcube, les arguments `domain` et `path` seront respectivement récupérés avec via les variables d’environnement ou les paramètres `$1` et `$2` dans le script d’installation. +Les arguments sont passés au script d’installation dans l’ordre du manifeste. Par exemple pour Roundcube, les arguments `domain` et `path` seront respectivement récupérés via les variables d’environnement ou les paramètres `$1` et `$2` dans le script d’installation. ```bash # Retrieve arguments @@ -16,7 +16,7 @@ Les scripts remove, upgrade, backup et restore peuvent avoir besoin de ces argum Pour cela, YunoHost peut sauvegarder les arguments avec cette commande : ```bash # Store config on YunoHost instance -ynh_app_setting_set $app domain $domain +ynh_app_setting_set "$app" domain "$domain" ``` Elle est généralement utilisée dans le script d’installation. diff --git a/packaging_apps_fr.md b/packaging_apps_fr.md index 872bd0d0..30a4be72 100644 --- a/packaging_apps_fr.md +++ b/packaging_apps_fr.md @@ -15,7 +15,7 @@ Si vous ne comprenez pas ces prérequis, ou si vous ne savez pas comment écrire Un paquet YunoHost est composé : * d’un `manifest.json` -* d’un dossier `scripts`, composé de cinq scripts Shell `install`, `remove`, `upgrade`, `backup` et `restore` +* d’un dossier `scripts`, composé de six scripts Shell `install`, `remove`, `upgrade`, `backup`, `change_url` et `restore` * de dossiers optionnels, contenant les `sources` ou de la `conf` * d’un fichier `LICENSE` contenant la licence du paquet * d’une page de présentation du paquet contenu dans un fichier `README.md` @@ -39,9 +39,43 @@ Comme les instances de YunoHost possèdent une architecture unifiée, vous serez ### Multi-instance Multi-instance +### Hooks +Hooks + ### Commandes pratiques Commandes pratiques +### Référencement des logs +Dans de nombreuses situations, vous pouvez vouloir indexer un fichier de log pour qu'il soit affiché dans la webadmin. Pour indexer un log, il faut créer un fichier d'indexation dans `/var/log/yunohost/categories/app/APPNAME.yml`. + +Il est possible de spécifier la date de début en commençant le nom de fichier par la date `YYYYMMDD-HHMMSS`. + +Exemple de fichier de log d'indexation: +```bash +log_path: /chemin/vers/le/fichier.log +``` + +Il est possible d'afficher des infos complémentaires, la variable env sera affichée dans la partie "Contexte" : +```bash +extra: + env: + args1: value1 + args2: value2 + args3: value3 +``` + +Il est possible de rattacher le log à une application précise et/ou un service, un nom de domaine, une personne : +```bash +related_to: + - ['app', 'APPNAME'] + - ['service', 'SERVICE1'] + - ['service', 'SERVICE2'] + - ['domain', 'DOMAIN.TLD'] +``` + +Ces informations seront utilisées pour permettre de filtrer les logs en relation avec une de ces entités application, service, domaine, personne. + + ### Améliorer la qualité du paquet d’installation Vous trouverez ci-dessous une liste des points à vérifier concernant la qualité de vos scripts : * Vos scripts utilisent bien `sudo cp -a ../sources/. $final_path` plutôt que `sudo cp -a ../sources/* $final_path` ; @@ -49,7 +83,7 @@ Vous trouverez ci-dessous une liste des points à vérifier concernant la qualit * Votre script d’installation utilise une méthode d’installation en ligne de commande plutôt qu’un appel curl via un formulaire web d’installation ; * Votre script d’installation enregistre les réponses de l’utilisateur ; * Vous avez vérifié les sources de l’application avec une somme de contrôle (sha256, sha1 ou md5) ou une signature PGP ; -* Vos scripts ont été testés sur Debian Jessie ainsi que sur les architectures 32 bits, 64 bits et ARM ; +* Vos scripts ont été testés sur Debian Stretch 32 bits, 64 bits et ARM ; * Les scripts backup et restore sont présents et fonctionnels. Pour mesurer la qualité d'un paquet, celui-ci obtiendra un [niveau](packaging_apps_levels_fr), déterminé en fonction de divers critères d'installation et selon le respect des [règles de packaging](packaging_apps_guidelines_fr). @@ -66,9 +100,9 @@ Il s’agit d’un script Python qui vérifie : ### Publiez et demandez des tests de votre application * Demandez des tests et des retours sur votre application en publiant un [post sur le Forum](https://forum.yunohost.org/) dans la [catégorie `App integration`](https://forum.yunohost.org/c/app-integration). -* Faire une demande d’ajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) afin qu’elle soit affichée dans [la liste des apps non officielles](apps_in_progress_fr). Préciser également son état d’avancement : `notworking`, `inprogress` ou `working`. +* Faire une demande d’ajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) afin qu’elle soit affichée dans [la liste des apps non officielles](apps_fr). Préciser également son état d’avancement : `notworking`, `inprogress` ou `working`. - Inscrivez-vous à la [mailing list Apps](https://list.yunohost.org/cgi-bin/mailman/listinfo/apps) pour être tenu au courant des évolutions du packaging. ### Officialisation d’une application -Pour qu’une application devienne officielle, elle doit être suffisamment testée, stable et fonctionner sous les architectures 64 bits, 32 bits et ARM sur Debian Jessie. Si ces conditions vous paraissent réunies, demandez l’[intégration officielle](https://github.com/YunoHost/apps) de votre application. +Pour qu’une application devienne officielle, elle doit être suffisamment testée, stable et fonctionner sous Debian Stretch 64 bits, 32 bits et ARM. Si ces conditions vous paraissent réunies, demandez l’[intégration officielle](https://github.com/YunoHost/apps) de votre application. diff --git a/packaging_apps_guidelines.md b/packaging_apps_guidelines.md new file mode 100644 index 00000000..19ee3aa0 --- /dev/null +++ b/packaging_apps_guidelines.md @@ -0,0 +1,442 @@ +# Packing Applications : Good Practise Guidelines + +
+ +This page is under development. As long as this warning is not removed. Consider this information as potentially false. +The name YEP is not a priori definitive, neither the levels nor the good practices in itself. + +
+ +### Introduction +The purpose of this document is to list the various best practices concerning the creation of YunoHost application packages. + +Each good practice is numbered with a number suffixed by the letters YEP (YunoHost Enhancement Proposals), so that it can be easily referenced in the ([package checker](https://github.com/YunoHost/package_check) and [package linter](https://github.com/YunoHost/package_linter)) tools, but also during the reviews of code. + +Each YEP is associated with: +* a status indicating whether the rule has been validated or is still under discussion (draft, validated, refused, obsolete); +* an indication of the type of test to be carried out (manual or auto if an automatic tool can verify); +* an indication of the app level from which the rule is required (NOTWORKING, INPROGRESS, WORKING, OFFICIAL), some rules are optional; + +### YEP Index +| ID | Title | Status | Test | Level | +| ---- | -------- | -------- | ------ | -------- | +| ** YEP 1 ** | ** Communicate with the community ** | | | | +| YEP 1.1 | App name and deposit | validated | manual | NOTWORKING (0) | +| YEP 1.2 | Register the app on a known "directory" | validated | manual | NOTWORKING (0) | +| YEP 1.3 | Indicate the license associated with the package | validated | AUTO | WORKING (5) | +| YEP 1.4 | Inform about intention to maintain package | draft | manual | OFFICIAL (6) | +| YEP 1.5 | Regularly update app status | draft | manual | WORKING (2) | +| YEP 1.6 | Keeping up-to-date on the evolution of apps packaging | validated | manual | OFFICIAL (6) | +| YEP 1.7 | Add the app to the [YunoHost-Apps Organization](https://github.com/YunoHost-Apps) | validated | manual | OFFICIAL (6) | +| YEP 1.8 | Publish test requests | validated | manual | OFFICIAL (6) | +| YEP 1.9 | Document the app | validated | AUTO | OFFICIAL (6) | +| YEP 1.10 | Keep a clean version history | draft | manual | OFFICIAL (6) | +| YEP 1.11 | Add app to [YunoHost bugtracker](https://github.com/YunoHost/issues/issues) | draft | manual | OFFICIAL (NA) | +| | | | | | +| ** YEP 2 ** | ** Stabilize an app ** | ** Status ** | ** Test ** | ** Level ** | +| YEP 2.1 | Respect the manifest format | validated | Home | INPROGRESS (5) | +| YEP 2.2 | Using bash for main scripts | validated | Home | WORKING (1) | +| YEP 2.3 | Save replies during installation | validated | manual | WORKING (3) | +| YEP 2.4 | Detect and manage errors | draft | manual | WORKING (8) | +| YEP 2.5 | Copy files correctly | draft | manual | WORKING (1) | +| YEP 2.6 | Cancel action if input values ​​are incorrect | validated | manual | WORKING (7) | +| YEP 2.7 | Give sufficient permissions to bash | validated | Home | WORKING (1) | +| YEP 2.8 | Correctly Changing a System Configuration | draft | manual | WORKING (8) | +| YEP 2.9 | Remove all traces of the app when deleting | draft | manual | WORKING (6) | +| YEP 2.10 | Configure application logs | draft | manual | WORKING (9) | +| YEP 2.11 | Use a variable rather than the id app directly | validated | manual | OFFICIAL (9) | +| YEP 2.12 | Using Helpers | validated | Home | OFFICIAL (5) | +| YEP 2.13 | Translate the package in English | draft | manual | OFFICIAL (9) | +| YEP 2.14 | Fill a conf file correctly | draft | manual | OFFICIAL (9) | +| YEP 2.15 | Follow the instructions for installing the application | validated | manual | OFFICIAL (1) | +| YEP 2.16 | Check availability of dependencies on ARM, x86 and x64 | validated | manual | OFFICIAL (8) | +| YEP 2.17 | Take the original version into account when updating | validated | manual | OFFICIAL (9) | +| | | | | | +| ** YEP 2.18 ** | ** Stabilize a webapp ** | ** Status ** | ** Test ** | ** Level ** | +| YEP 2.18.1 | Launch the script to install a webapp correctly | validated | manual | WORKING (5) | +| YEP 2.18.2 | Manage installation at the root of a domain name | validated | Home | WORKING (2) | +| YEP 2.18.3 | Manage installation on a subdomain | validated | Home | WORKING (2) | +| YEP 2.18.4 | Manage installation on a path `/path` | validated | Home | OFFICIAL (2) | +| YEP 2.18.5 | Manage the YunoHost tile for easy navigation between applications | validated | manual | OFFICIAL (8) | +| | | | | | +| ** YEP 3 ** | ** Secure an app ** | ** Status ** | ** Test ** | ** Level ** | +| YEP 3.1 | Do not ask or store LDAP password | draft | manual | NOTWORKING (?) | +| YEP 3.2 | Open a port correctly | draft | manual | WORKING (7) | +| YEP 3.3 | Facilitating Source Integrity Control | draft | manual | OFFICIAL (6) | +| YEP 3.4 | Isolate app | draft | manual | OFFICIAL (8) | +| YEP 3.5 | Follow the recommendations of the app's documentation | validated | manual | OFFICIAL (6) | +| YEP 3.6 | Update versions containing CVE | draft | manual | OFFICIAL (6) | +| | | | | | +| ** YEP 4 ** | ** Integrate an app ** | ** Status ** | ** Test ** | ** Level ** | +| 4.1 | Link to ldap | validated | manual | OFFICIAL (4) | +| YEP 4.2 | Link authentication to sso | validated | manual | OFFICIAL (4) | +| YEP 4.2.1 | Sign Out | validated | manual | OFFICIAL (9) | +| YEP 4.3 | Provide YunoHost Backup Script Functional | validated | Home | OFFICIAL (6) | +| YEP 4.4 | Provide a YunoHost Restore Functional script | validated | Home | OFFICIAL (6) | +| YEP 4.5 | Using Hooks | validated | manual | OPTIONAL (8) | +| YEP 4.6 | Manage multi-instance | validated | manual | OPTIONAL (2) | +| YEP 4.7 | Add a module to the CLI | validated | manual | OPTIONAL | +| YEP 4.8 | Add a module to the web admin | draft | manual | OPTIONAL | + +### YEP 1 +#### Communicating with the community +The YEP 1 is a meta YEP, it explains what it takes to interact with the community around a YunoHost application package. + +#### YEP 1.1 +##### App name and deposit | validated | manual | NOTWORKING | +Each YunoHost application has an id registered in the application manifest. +This identifier must be unique between each application packet. +It is therefore recommended to verify its availability by consulting the list of applications referenced in the known applications repositories (official, community, internetcube). + +In addition, the identifier must respect the regular expression `^[a-z1-9]((_|-)?[A-z1-9])+$`. +In other words, it must respect the following rules: +* be in lowercase +* start with a letter or number +* be alphanumeric (the underscore is allowed) +* do not contain two underscores or dashes that follow one another +* do not end with an underscore or dash + +For application names containing spaces, virtually all current packages simply remove them without replacing them with dashes or underscores. + +By convention, the YunoHost application repositories are always named their ID followed by the string "\ _ynh". Thus one can distinguish the upstream repository of the application, the deposit of the yunohost package. This notation also makes it possible to find applications not listed by the search engines of platforms offering version managers (GitHub for example). + +Example: ID: Example Filing Name: example_ynh + +#### YEP 1.2 +##### Register the app on a known "directory" | validated | manual | NOTWORKING | +It is advised from the beginning of the packaging to register an app on one of the YunoHost application depots. + +These deposits have several functions: +* communicate the existence of a package; +* indicate the latest version associated with the package (to allow the update of the app by YunoHost); +* indicate the state of operation of the packet; +* indicate information about the support of a package. + +For the `official.json` and` community.json` lists, registration is on [the git apps repository](https://github.com/YunoHost/apps). + +#### YEP 1.3 +##### Indicate the license associated with the package | draft | AUTO | WORKING | +The license of the packet must be specified in a `LICENSE` file at the root of the packet. Be careful not to confuse with the license of the application that will be installed whose acronym is to be entered in the `license` field of the manifest. + +The application lists official.json and community.json only accept packages with a free license, as well as the license for the contained application. Some free applications require non-free dependencies (example: mp3, drivers, etc.). In this case, you should add `&dep-non-free` to the acronym and if possible give details in the README.md of the package, in this case the integration will be accepted on a case-by-case basis. + +In the future, YunoHost will probably display details about the license of the application. To achieve this, the acronym must be the one from this [list of licenses listed in the SPDX](https://spdx.org/licenses/) (if there are 2 acronyms, the one containing the version number). For consistency, the case must be respected. + +If the license is not present in the list, in this case it is necessary to indicate `free` or `non-free` depending on whether it is free or not and give the user the opportunity to inquire in the README .md (link, explanations, ...). + +Example: for a GNU Lesser General Public License (LGPL), version 3 the acronym is `LGPL-3.0` if non-free dependencies are used in this case it will be necessary to put LGPL-3.0 & dep-non-free `in the manifesto. + +If an application has modules linked to another license (Example: Odoo 9 LGPL-3.0 + a module licensed AGPL-3.0), in this case we will indicate the two licenses separated by a `&`. + +If two separate applications are in the same installation package and have separate licenses, in this case we can use `,` to separate the licenses. + +In both cases, the maintainer is encouraged to consider creating two separate packages. The manifest of each application is used to ask app-type questions to refer to another application already installed. + +Reminder: a question of type `app` answers the identifier of one of the apps already installed. + +Some interesting links to help with the choice of license: +* [Explanatory sheets on free licenses](https://www.inria.fr/content/download/5896/48452/version/2/file/INRIA_recueil_fiches_licences_libres_vf.pdf) +* [GNU project licensing documentation](https://www.gnu.org/licenses/licenses.html) +* [A Guide to the GNU Project to Help Choose a License](https://www.gnu.org/licenses/license-recommendations.en.html) + +#### YEP 1.4 +##### Inform about intention to maintain package | draft | manual | OFFICIAL | +The maintainer of the application must undertake to maintain its app over time if he wishes it to join the list of official applications. +This involves monitoring updates to the upstream application, adhering to the new packaging rules and responding to user requests. + +#### YEP 1.5 +##### Regularly update app status | draft | manual | WORKING | +#### YEP 1.6 +##### Keeping up-to-date on the evolution of apps packaging | validated | manual | OFFICIAL | +In order to keep up with the evolution of the packaging format and best practices, it is recommended to: +* subscribe to the discussion list `apps @ list.yunohost.org` +* follow [the forum's Apps category](https://forum.yunohost.org/c/apps-packaging) + +To follow the evolution of YunoHost more generally: +* join XMPP dev@conference.yunohost.org ([three days of logs are available](https://im.yunohost.org/logs/dev/)) +* follow [Annoucement category of the forum](https://forum.yunohost.org/c/announcement) +* follow discussions on contrib@list.yunohost.org + +#### YEP 1.7 +##### Add the app to the [YunoHost-Apps Organization](https://github.com/YunoHost-Apps) | validated | manual | OFFICIAL | +Adding an app to the [YunoHost-Apps organization](https://github.com/YunoHost-Apps) lets you share apps with other contributors who might be tempted to package the targeted application . + +It is also a way to quickly deploy a security patch if necessary in the event that the maintainer is unavailable. + +Transfer Procedure: Ask the [chat room](chat_rooms_en) to be invited to the organization by providing the name of their GitHub account. +Once the invitation is accepted, [transfer its deposit to the organization by following this tutorial](https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/# Transferring-a-repository-to-another-user-account-or-to-an-organization). + +#### YEP 1.8 +##### Publish test requests | validated | manual | OFFICIAL | +In order to ensure the proper functioning of a package, it is necessary to publish an announcement in order to open the tests on the package. This announcement can be done on the forum in [Forum Apps category](https://forum.yunohost.org/c/apps). + +It is recommended to indicate if some tests have not been conducted. + +* Check package with Package linter. +* Installation in subfolder. +* Installation at the root of a domain or subdomain. +* Deletion, in the 2 cases of previous installations. +* Access to the web interface of the application, with the / final in the address, and omitting it. +* Upgrade on the same version of the package. +* Upgrade from an older version of the package. +* Private installation (secured by SSO). +* Public installation. +* Multi-instance installation. +* User name error. +* Domain name error. +* Poorly written path (path / instead of / path for example). +* Port already used by another application. +* Source corrupted after download. +* Error downloading source. +* Folder already used by another application. +* Backup and restore. + +#### YEP 1.9 +##### Document the app | validated | AUTO | OFFICIAL | +Above all, it is appropriate to make a correct description of the app in the `description` field of the manifest. Keyword insertion in this description can be a good idea, as a user might be required to search (CTRL + F) among all applications. + +There is also README.md, which must and can contain: +* the name of the app +* a brief summary of what it does +* any additional installation if the script is not sufficient +* instructions to use it (for example to connect your smartphone or computer) +* the location to report a malfunction / request +* the roadmap / TODO +* possibly prerequisites in terms of ram memories, processor etc. (some equipment has less than 512MB of ram) + +#### YEP 1.10 +##### Keep a clean version history | draft | manual | OFFICIAL | +#### YEP 1.11 +##### Add app to [YunoHost bugtracker](https://github.com/YunoHost/issues/issues) | draft | manual | OFFICIAL | + +### YEP 2 +#### Stabilize an app +#### YEP 2.1 +##### Respect the manifest format | validated | Home | INPROGRESS | +The manifest allows to describe an app so that YunoHost can apply the good treatments. For more information see [dedicated documentation](https://yunohost.org/#/packaging_apps_manifest). + +#### YEP 2.2 +##### Using bash for main scripts | validated | Home | WORKING | +Action scripts (install, upgrade, remove, backup and restore) must be in the bash so that the cli / api yunohost can call them correctly. + +That being said, there is nothing to prevent other scripts or function libraries from using these scripts. These are not obliged to be in bash. + +However, careful attention must be paid to the correct display of logs of information, warning, or errors. So that a user of the cli / api yunohost can understand the operation of the script just executed and if necessary repair its YunoHost instance. + +#### YEP 2.3 +##### Save the answers during the installation | validated | manual | WORKING | +During installation, it is necessary to save each answer to the questions in the manifest. Indeed, even if at the beginning it is not necessary to write an update script, thereafter it will probably be the case. However, without the initial information, the update can be more tedious. + +#### YEP 2.4 +##### Detecting and Managing Errors | draft | manual | WORKING | +The install, upgrade, backup, and restore scripts must detect errors to avoid further scripting in case of blocking error or empty variable usage. +The use of trap and set -eu is recommended to detect and treat errors ([Discussion in progress](https://forum.yunohost.org/t/gestion-des-erreurs-set-e-and-or-trap/2249/5)) +It is also necessary to check the contents of the variables before removing the remove script. For example, an `rm -Rf /var/www/$app` with `$app` empty would have a disastrous result. + +At the beginning of the scripts, before any modifications, it is necessary to check the existence of the users mentioned at the installation, as well as the availability of the requested path, the availability of the final file of the application and the size of the passwords if necessary . + + Do not forget that in case of installation error the removal script will be launched automatically by the yunohost cli. + +#### YEP 2.5 +##### Copy files correctly | draft | manual | WORKING | +#### YEP 2.6 +##### Cancel action if input values ​​are incorrect | validated | manual | WORKING | +Each script should verify that the input values ​​are correct. + +Here are some examples : +* Check that the domain name exists +* Check that the user exists +* Check that the chosen path is available + +If one of the values ​​is incorrect, it is necessary to cancel any modifications made previously to the instance. The best thing is to do all these checks before changing the system. + +#### YEP 2.7 +##### Give sufficient permissions to bash | validated | Home | WORKING | +Some instructions require sudo rights. In this case, do not forget to prefix these instructions with `sudo`. + +In other cases it is necessary to give rights using chmod and chown. + +#### YEP 2.8 +##### Correctly changing a system configuration | draft | manual | WORKING | +Changes to the system must be reversible so that the removal of the application is of no consequence to the system leaves no residue. +For this purpose, the `.d` folders of the system configurations must be used as much as possible. Where it is not possible to do otherwise, clearly indicate the configuration as modified by an application and ensure that the changes will be removed when it is removed. + +#### YEP 2.9 +##### Remove all traces of the app when deleting | draft | manual | WORKING | +Except for dependencies (eg, Debian packages) used by other services or applications. + +#### YEP 2.10 +##### Configure application logs | draft | manual | WORKING | +If possible, the application should use a log file, which will preferably be in /var/log. +If the log is set up by the install script and not by the application itself, a log-rotate configuration file will have to be added to handle the logs of the application. + +#### YEP 2.11 +##### Using a variable rather than the app id directly | validated | manual | OFFICIAL | +It is advisable to make the scripts as generic as possible, a good way to do this is to use a variable for the app's name to avoid it being found everywhere in scripts. This will make it easier for another package builder to use the script for another app. + +#### YEP 2.12 +##### Using Helpers | validated | Home | OFFICIAL | +In order to simplify packaging, standardize practices, avoid errors and increase the lifetime of a script vis-à-vis future versions of YunoHost. A set of helpers to do many actions is proposed. + +For more information : +* consult [helpers documentation](https://yunohost.org/#/packaging_apps_helpers) +* explore [helpers directory](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d) + +#### YEP 2.13 +##### Translate the package in English | draft | manual | OFFICIAL | +#### YEP 2.14 +##### Fill a conf file correctly | draft | manual | OFFICIAL | +* Just to clear up a little this YEP, but it remains in draft form. * +The goal is to find a more reliable method than sed to modify the configuration files. sed can possibly have edge effects by modifying unwanted parts of the configuration file, especially with the use of regex. + +#### YEP 2.15 +##### Follow the instructions for installing the application | validated | manual | OFFICIAL | + +#### YEP 2.16 +##### Check availability of dependencies on ARM, x86, and x64 | validated | manual | OFFICIAL | +YunoHost installs on ARM, x86 and x64. A package should therefore be tested on these three processor architectures. + +Some packages are not available on ARM, in this case it is advisable to study other solutions or to indicate in the README.md that the application does not work on ARM and to block the installation by detection of type d 'architecture. + +#### YEP 2.17 +##### Take the original version into account when updating | validated | manual | OFFICIAL | +The update script must be able to run even if the previous updates have not been performed. + +For example, it should be possible to perform update jumps from an N-x version to an N version. To do this, it is advisable to save the version numbers in the app settings. + +### YEP 2.18 +##### Stabilizing a webapp +The majority of YunoHost applications are web apps, but some are not. The YEP 2.18.x develop certain specificities related to the web app. + +#### YEP 2.18.1 +##### Launch the script to install a webapp correctly | validated | manual | WORKING | +Often a web app installs itself from forms displayed on a web page. This practice, while practical for a human, is less so for a program. + +It is therefore necessary to check if the application does not propose a solution of installation on command line. + +If this is not the case, the -H option of curl should be used. In some cases, DNS redirection may not be active at the time of installation. +`` `Bash +curl -kL -H "Host: $domain" --data "¶m1=Text1¶m2=text2" https: //localhost$path/install.php > /dev/null 2>&1 +`` ` + +#### YEP 2.18.2 +##### Manage installation at the root of a domain name | validated | Home | WORKING | +A web app should be able to install itself at the root of a domain name. + +#### YEP 2.18.3 +##### Manage installation on a subdomain | validated | Home | WORKING | +A web app should be able to install itself on a subdomain directly without subfolders. + +#### YEP 2.18.4 +##### Manage installation on a path `/path` | validated | Home | OFFICIAL | +A web app should be able to install on a path `/path`. + +#### YEP 2.18.5 +##### Manage the YunoHost tile to easily navigate between applications | validated | manual | OFFICIAL | +Except in rare cases it is advisable to integrate the tile YunoHost which allows to return to the menu of the SSO. This integration is done in the nginx configuration. + +Some users have replaced this square with a script adding a menu at the top of each webapp. + +### YEP 3 +#### Securing an app +#### YEP 3.1 +##### Do not ask or store LDAP password | draft | manual | NOTWORKING | +#### YEP 3.2 +##### Open a port correctly | draft | manual | WORKING | +If the application requires the opening of a port, it is necessary to check beforehand that this port is not already used by another application. If so, the install script must be able to find another available port. +It should also be checked whether the port should be open on the router, beyond the local network. If this is not the case, the `--no-upnp` argument must be added to the` yunohost firewall allow` command in order to limit the port opening to the LAN only. + +#### YEP 3.3 +##### Facilitating Source Integrity Control | draft | manual | OFFICIAL | +The upstream application should not be integrated into tarball in the source folder of the package, as this adds to the package and the git repository and does not allow verification of the integrity of the source. +The source must be downloaded from the official website, then its integrity must be checked before installing it. + +#### YEP 3.4 +##### Isolate app | draft | manual | OFFICIAL | +In order to avoid edges in case of possible compromise of the application, it must be insulated in order not to affect the other applications. +To do this, it is necessary to isolate the application in its execution folder by restricting its environment by a chroot, either by a mechanism internal to the application where possible (for example for an ftp server), or by the use of phpfpm. +Similarly, to restrict the scope of the user running the application, it is preferable to use a user dedicated to the application. Whose rights are restricted to the use of the application only. +However, this should not exempt from a maximum restriction of rights on application files. As much as possible, the files must belong to root, and the dedicated user must have write rights only on files that specifically request it. + +#### YEP 3.5 +##### Follow the recommendations in the app's documentation | validated | manual | OFFICIAL | +Typically, an application provides documentation to help system administrators perform the installation. It is advisable to follow the recommendations, including the permissions to be granted per file or directory. + +However, the package maintainer must remain vigilant, some documentation may be erroneous or insufficient. + +#### YEP 3.6 +##### Update versions with CVE | draft | manual | OFFICIAL | +The [CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures), or Common Vulnerabilities and Exposures, identify security vulnerabilities common to applications. The corrections of these flaws may concern the application and it is important in this case to follow these updates as closely as possible. +More generally, the application can propose a patch for a specific vulnerability to itself. +Generally, this YEP involves tracking an information channel to track application security updates and reacting quickly by updating the package accordingly. + +As specified in YEP 1.7, if a security patch is to be deployed urgently, another YunoHost member may be required to commit to the package if necessary. + +### YEP 4 +#### Embedding an app +This meta YEP deals with the integration of an app with the YunoHost environment. Good integration is generally a guarantee of quality and comfort for users. + +#### YEP 4.2 +##### Linking Authentication to sso | validated | manual | OFFICIAL | +The Single Sign On makes it possible to avoid having to create the same users for each app. Thus, a YunoHost user can connect via the Single Sign On to all the apps. + +To do this, you must link your app to the LDAP and / or use hooks to duplicate the account credentials in the app's database. + +Once this is done, the maintainer can use the REMOTE_USER HTTP statement to check whether a user is logged on or not. In general, modules exist (whether at the level of the technology, the framework or even the app itself). + +If required, SSOwat can be used to secure access to one or more parts of the app. It may be relevant to secure access to an administration page with the SSO rather than a `.htaccess` and make the rest of the app accessible to all visitors. + +#### YEP 4.2.1 +##### Logout | validated | manual | OFFICIAL | +When you click on a disconnect action within the app, it should disconnect the user from the SSO. Otherwise, there is a risk that the user will inadvertently leave an open session. + +#### YEP 4.3 +##### Provide YunoHost Backup Script Functional | validated | Home | OFFICIAL | +The application must have a backup script to allow users to back up the application, its configuration, and its data. + +#### YEP 4.4 +##### Provide a functional YunoHost restoration script | validated | Home | OFFICIAL | +The application must have a restore script to allow users to restore an application previously backed up with the backup script. + +#### YEP 4.5 +##### Using Hooks | validated | manual | OPTIONAL | +YunoHost offers the possibility to launch actions with each processing carried out by the command line. This can be practical in many cases. + +Examples: +* Add / delete a user in the app database when using `yunohost user create` or` yunohost user remove` +* Manage the addition of a new domain name during the `yunohost domain add` action +* Run a script after the firewall has been reloaded + +List of hooks: +* post_domain_add +* post_domain_remove +* post_user_create +* post_user_delete +* post_backup_create +* post_backup_restore +* pre_backup_delete +* post_backup_delete +* post_app_addaccess +* post_app_removeaccess +* post_app_clearaccess +* post_app_addaccess +* post_iptable_rules + +These scripts are to be placed in a `hooks` directory as in this package: https://github.com/YunoHost-Apps/owncloud_ynh/tree/master/hooks. + + +#### YEP 4.6 +##### Manage multi-instance | validated | manual | OPTIONAL | +It is sometimes practical to be able to install the same app several times. For example, for several different domain names. + +However, be careful about how to handle file paths, dependencies, ports used, etc. so that there is no collision. + +#### YEP 4.7 +##### Add a module to the CLI | validated | manual | OPTIONAL | +You can create a module to add commands to the yunohost command line. + +To do this, you need to add an actionmaps to `/usr/share/moulinette/actionsmap/`. This actionmaps must start with `ynh_`. + +The packages [menu_ynh](https://github.com/YunoHost-Apps/menu_ynh/) and [subscribe_ynh](https://github.com/YunoHost-Apps/subscribe_ynh/) are old (and not up to date) can be used as the basis for this type of module. +#### YEP 4.8 +##### Add a module to the web admin | draft | manual | OPTIONAL | diff --git a/packaging_apps_guidelines_fr.md b/packaging_apps_guidelines_fr.md index ab4bc0e6..4874d410 100644 --- a/packaging_apps_guidelines_fr.md +++ b/packaging_apps_guidelines_fr.md @@ -31,7 +31,7 @@ Chaque YEP est associée à : | YEP 1.8 | Publier des demandes de test | validé | manuel | OFFICIAL (6) | | YEP 1.9 | Documenter l'app | validé | AUTO | OFFICIAL (6) | | YEP 1.10 | Garder un historique de version propre | brouillon | manuel | OFFICIAL (6) | -| YEP 1.11 | Ajouter l'app au [bugtracker YunoHost](https://dev.yunohost.org) | brouillon | manuel | OFFICIAL (NA) | +| YEP 1.11 | Ajouter l'app au [bugtracker YunoHost](https://github.com/yunohost/issues/issues) | brouillon | manuel | OFFICIAL (NA) | | | | | | | | **YEP 2** | **Stabiliser une app** | **Statut** | **Test** | **Niveau** | | YEP 2.1 | Respecter le format du manifeste | validé | auto | INPROGRESS (5) | @@ -80,10 +80,12 @@ Chaque YEP est associée à : | YEP 4.8 | Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL | -### YEP 1 - Communiquer avec la communauté +### YEP 1 +#### Communiquer avec la communauté La YEP 1 est une meta YEP, elle explique ce qu'il faut faire pour échanger avec la communauté autour d'un paquet d'application YunoHost. -#### YEP 1.1 - Nommer son app et son dépôt | validé | manuel | NOTWORKING | +#### YEP 1.1 +##### Nommer son app et son dépôt | validé | manuel | NOTWORKING | Chaque application YunoHost possède un id inscrit dans le manifeste de l'application. Cet identifiant doit être unique entre chaque paquet d'application. Il est donc recommandé de vérifier sa disponibilité en consultant la liste des applications référencées dans les dépôts d'applications connus (official, community, internetcube). @@ -101,18 +103,20 @@ Par convention, les dépôts d'applications YunoHost sont toujours nommés de le Exemple : ID : exemple Nom de dépôt : exemple_ynh -#### YEP 1.2 - Inscrire l'app sur un « répertoire » connu | validé | manuel | NOTWORKING | +#### YEP 1.2 +##### Inscrire l'app sur un « répertoire » connu | validé | manuel | NOTWORKING | Il est conseillé dès le début du packaging d'inscrire une app sur un des dépôts d'application YunoHost. Ces dépôts ont plusieurs fonctions : * communiquer l'existence d'un paquet ; -* indiquer la dernière version associée au paquet (afin de permettre à la mise à jour de l'app par YunoHost) ; +* indiquer la dernière version associée au paquet (afin de permettre la mise à jour de l'app par YunoHost) ; * indiquer l'état de fonctionnement du paquet ; * indiquer des informations sur le support d'un paquet. Pour les listes `official.json` et `community.json`, l'inscription se fait sur [le dépôt git "apps"](https://github.com/YunoHost/apps). -#### YEP 1.3 - Indiquer la licence associée au paquet | brouillon | AUTO | WORKING | +#### YEP 1.3 +##### Indiquer la licence associée au paquet | brouillon | AUTO | WORKING | La licence du paquet est à indiquer dans un fichier `LICENSE` à la racine du paquet. Attention à ne pas confondre avec la licence de l'application qui va être installée dont l'acronyme est à renseigner dans le champ `license` du manifeste. Les listes d'applications official.json et community.json n'acceptent que les paquets dont la licence est libre, de même pour la licence de l'application contenue. Certaines applications libres nécessitent des dépendances non-libres (exemple: mp3, drivers, etc.). Dans ce cas, il faut ajouter `&dep-non-free` à l'acronyme et si possible donner des précisions dans le README.md du paquet, l'intégration sera dans ce cas acceptée au cas par cas. @@ -136,12 +140,15 @@ Quelques liens intéressants pour aider au choix de licence: * [La documentation sur les licences du projet GNU](https://www.gnu.org/licenses/licenses.fr.html) * [Un guide du projet GNU pour aider au choix d'une licence](https://www.gnu.org/licenses/license-recommendations.fr.html) -#### YEP 1.4 - Informer sur l'intention de maintenir un paquet | brouillon | manuel | OFFICIAL | +#### YEP 1.4 +##### Informer sur l'intention de maintenir un paquet | brouillon | manuel | OFFICIAL | Le mainteneur de l'application doit s'engager à maintenir son app sur la durée si il souhaite que celle-ci rejoigne la liste des applications officielles. Cela implique de surveiller les mises à jour de l'application upstream, de respecter les nouvelles règles de packaging et de répondre aux demandes des utilisateurs. -#### YEP 1.5 - Mettre à jour régulièrement le statut de l'app | brouillon | manuel | WORKING | -#### YEP 1.6 - Se tenir informé sur l'évolution du packaging d'apps | validé | manuel | OFFICIAL | +#### YEP 1.5 +##### Mettre à jour régulièrement le statut de l'app | brouillon | manuel | WORKING | +#### YEP 1.6 +##### Se tenir informé sur l'évolution du packaging d'apps | validé | manuel | OFFICIAL | Afin de suivre l'évolution du format de packaging ainsi que des bonnes pratiques, il est recommandé de: * s'inscrire à la liste de discussion `apps@list.yunohost.org` * suivre [la catégorie Apps packaging du forum](https://forum.yunohost.org/c/apps-packaging) @@ -151,7 +158,8 @@ Pour suivre l'évolution de YunoHost de façon plus générale : * suivre [la catégorie Annoucement du forum](https://forum.yunohost.org/c/announcement) * suivre les discussions sur contrib@list.yunohost.org -#### YEP 1.7 - Ajouter l'app à l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) | validé | manuel | OFFICIAL | +#### YEP 1.7 +##### Ajouter l'app à l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) | validé | manuel | OFFICIAL | L'ajout d'une app sur l'[organisation YunoHost-Apps](https://github.com/YunoHost-Apps) permet de faire connaitre l'apps auprès des autres contributeurs qui pourraient être tentés de packager l'application visée. C'est aussi un moyen pour permettre de déployer rapidement un correctif de sécurité si nécessaire dans le cas où le mainteneur ne serait pas disponible. @@ -159,7 +167,8 @@ C'est aussi un moyen pour permettre de déployer rapidement un correctif de séc Procédure de transfert : demander sur le [salon de discussion `Apps`](chat_rooms_fr) à être invité à l’organisation en lui fournissant le nom de son compte GitHub. Une fois l’invitation acceptée, [transférer son dépôt sur l’organisation en suivant ce tutoriel](https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/#transferring-a-repository-to-another-user-account-or-to-an-organization). -#### YEP 1.8 - Publier des demandes de test | validé | manuel | OFFICIAL | +#### YEP 1.8 +##### Publier des demandes de test | validé | manuel | OFFICIAL | Afin d'assurer le bon fonctionnement d'un paquet, il convient de publier une annonce afin d'ouvrir les tests sur le paquet. Cette annonce peut se faire sur le forum dans [la catégorie Apps du forum](https://forum.yunohost.org/c/apps). Il est recommandé d'indiquer si certains tests n'ont pas été menés. @@ -183,7 +192,8 @@ Il est recommandé d'indiquer si certains tests n'ont pas été menés. * Dossier déjà utilisé par une autre application. * Backup et restore. -#### YEP 1.9 - Documenter l'app | validé | AUTO | OFFICIAL | +#### YEP 1.9 +##### Documenter l'app | validé | AUTO | OFFICIAL | Avant tout, il convient de faire une description correcte de l'app dans le champ `description` du manifest. L'insertion de mot clé dans cette description peut être une bonne idée, dans la mesure où un utilisateur pourrait être amené à faire une recherche (CTRL+F) parmi toutes les applications. Il y a également le README.md, ce dernier doit et peut contenir : @@ -195,24 +205,31 @@ Il y a également le README.md, ce dernier doit et peut contenir : * la roadmap/TODO * éventuellement les pré-requis en termes de mémoires ram, processeur etc. (certains équipements ont moins de 512Mo de ram) -#### YEP 1.10 - Garder un historique de version propre | brouillon | manuel | OFFICIAL | -#### YEP 1.11 - Ajouter l'app au [bugtracker YunoHost](https://dev.yunohost.org) | brouillon | manuel | OFFICIAL | +#### YEP 1.10 +##### Garder un historique de version propre | brouillon | manuel | OFFICIAL | +#### YEP 1.11 +##### Ajouter l'app au [bugtracker YunoHost](https://github.com/yunohost/issues/issues) | brouillon | manuel | OFFICIAL | -### YEP 2 - Stabiliser une app -#### YEP 2.1 - Respecter le format du manifeste | validé | auto | INPROGRESS | +### YEP 2 +#### Stabiliser une app +#### YEP 2.1 +##### Respecter le format du manifeste | validé | auto | INPROGRESS | Le manifeste permet de décrire une app afin que YunoHost puisse lui appliquer les bons traitements. Pour plus d'information voir la [documentation dédiée](https://yunohost.org/#/packaging_apps_manifest). -#### YEP 2.2 - Utiliser bash pour les scripts principaux | validé | auto | WORKING | +#### YEP 2.2 +##### Utiliser bash pour les scripts principaux | validé | auto | WORKING | Les scripts d'action (install, upgrade, remove, backup et restore) doivent être en bash afin que la cli/api yunohost puisse correctement les appeler. Ceci étant, rien n'empêche à l'intérieur de ces scripts de faire appel à d'autres scripts ou bibliothèques de fonction. Ceux-ci ne sont pas obligés d'être en bash. Cependant, il faudra porter une attention particulière à l'affichage correct des logs d'information, de warning, ou d'erreurs. Afin qu'un utilisateur de la cli/api yunohost puisse comprendre le fonctionnement du script venant d'être exécuté et au besoin réparer son instance YunoHost. -#### YEP 2.3 - Sauvegarder les réponses lors de l'installation | validé | manuel | WORKING | +#### YEP 2.3 +##### Sauvegarder les réponses lors de l'installation | validé | manuel | WORKING | Lors de l'installation, il est nécessaire de sauvegarder chaque réponse aux questions du manifeste. En effet, même si au début il n'est pas nécessaire d'écrire un script de mise à jour, par la suite ce sera sans doute le cas. Or, sans les informations initiales, la mise à jour peut être plus fastidieuse. -#### YEP 2.4 - Détecter et gérer les erreurs | brouillon | manuel | WORKING | +#### YEP 2.4 +##### Détecter et gérer les erreurs | brouillon | manuel | WORKING | Les scripts install, upgrade, backup et restore doivent détecter les erreurs pour éviter la poursuite des scripts en cas d'erreur bloquante ou d'usage de variable vide. L'usage de trap et de set -eu est recommandé pour détecter et traiter les erreurs ([Discussion en cours à ce sujet](https://forum.yunohost.org/t/gestion-des-erreurs-set-e-et-ou-trap/2249/5)) Il est nécessaire également de vérifier le contenu des variables avant les suppressions du script remove. Par exemple un `rm -Rf /var/www/$app` avec `$app` vide aurait un résultat désastreux. @@ -221,8 +238,10 @@ Au début des scripts, avant toutes modifications, il faut vérifier l'existence N'oubliez pas qu'en cas d'erreur d'installation le script de suppression sera lancé automatiquement par la cli yunohost. -#### YEP 2.5 - Copier correctement des fichiers | brouillon | manuel | WORKING | -#### YEP 2.6 - Annuler l'action si les valeurs d'entrées sont incorrectes | validé | manuel | WORKING | +#### YEP 2.5 +##### Copier correctement des fichiers | brouillon | manuel | WORKING | +#### YEP 2.6 +##### Annuler l'action si les valeurs d'entrées sont incorrectes | validé | manuel | WORKING | Chaque script devrait vérifier que les valeurs d'entrées sont correctes. Voici quelques exemples : @@ -233,53 +252,66 @@ Voici quelques exemples : Dans le cas où l'une des valeurs est incorrecte, il est alors nécessaire d'annuler toutes modifications réalisées préalablement sur l'instance. Le mieux étant de faire tous ces contrôles avant de modifier le système. -#### YEP 2.7 - Donner des permissions suffisantes aux instructions bash | validé | auto | WORKING | +#### YEP 2.7 +##### Donner des permissions suffisantes aux instructions bash | validé | auto | WORKING | Certaines instructions nécessitent les droits sudo. Il faut dans ce cas ne pas oublier de préfixer ces instructions par `sudo `. Dans d'autres cas il est nécessaire de donner des droits à l'aide de chmod et de chown. -#### YEP 2.8 - Modifier correctement une configuration système | brouillon | manuel | WORKING | -Les modifications du système doivent être réversible pour que la suppression de l'application soit sans conséquences pour le système ne laisse pas de résidus. +#### YEP 2.8 +##### Modifier correctement une configuration système | brouillon | manuel | WORKING | +Les modifications du système doivent être réversible pour que la suppression de l'application soit sans conséquences pour le système, ne laisse pas de résidus. Pour celà, il faut recourir autant que possible aux dossiers `.d` des configurations système. Où lorsqu'il n'est pas possible de faire autrement, d'indiquer clairement la configuration modifiée par une application et s'assurer que les modifications seront retirées lors de sa suppression. -#### YEP 2.9 - Enlever toutes traces de l'app lors de la suppression | brouillon | manuel | WORKING | +#### YEP 2.9 +##### Enlever toutes traces de l'app lors de la suppression | brouillon | manuel | WORKING | À l’exception de dépendances (pax exemple : paquets Debian) utilisés par d’autres services ou applications. -#### YEP 2.10 - Configurer les logs de l'application | brouillon | manuel | WORKING | +#### YEP 2.10 +##### Configurer les logs de l'application | brouillon | manuel | WORKING | Si possible, l'application doit utiliser un fichier de log, qui sera de préférence dans /var/log. Si le log est mis en place par le script install et non par l'application elle-même, un fichier de configuration pour log-rotate devra être ajouté pour gérer les rotations des logs de l'application. -#### YEP 2.11 - Utiliser une variable plutôt que l'app id directement | validé | manuel | OFFICIAL | +#### YEP 2.11 +##### Utiliser une variable plutôt que l'app id directement | validé | manuel | OFFICIAL | Il est conseillé de rendre les scripts le plus générique possible, un bon moyen d'y parvenir est d'utiliser une variable pour le nom de l'app afin d'éviter qu'il se retrouve partout dans les scripts. Ainsi, un autre packageur pourra plus facilement se servir du script pour une autre app. -#### YEP 2.12 - Utiliser les commandes pratiques (helpers) | validé | auto | OFFICIAL | +#### YEP 2.12 +##### Utiliser les commandes pratiques (helpers) | validé | auto | OFFICIAL | Afin de simplifier le packaging, d'uniformiser les pratiques, d'éviter les erreurs et d'augmenter la durée de vie d'un script vis-à-vis des futures versions de YunoHost. Un ensemble de helpers permettant de faire de nombreuses actions est proposé. Pour plus d'informations : * consulter [la documentation des helpers](https://yunohost.org/#/packaging_apps_helpers_fr) * explorer [le répertoire des helpers](https://github.com/YunoHost/yunohost/tree/unstable/data/helpers.d) -#### YEP 2.13 - Traduire le paquet en anglais | brouillon | manuel | OFFICIAL | -#### YEP 2.14 - Remplir correctement un fichier de conf | brouillon | manuel | OFFICIAL | +#### YEP 2.13 +##### Traduire le paquet en anglais | brouillon | manuel | OFFICIAL | +#### YEP 2.14 +##### Remplir correctement un fichier de conf | brouillon | manuel | OFFICIAL | *Juste pour éclaircir un peu cette YEP, mais ça reste à l'état de brouillon.* Le but est de trouver une méthode plus fiable que sed pour modifier les fichiers de configuration. sed pouvant éventuellement avoir des effets de bord en modifiant des parties non désirées du fichier de configuration, en particulier avec l'usage de regex. -#### YEP 2.15 - Suivre les instructions d'installation de l'application | validé | manuel | OFFICIAL | +#### YEP 2.15 +##### Suivre les instructions d'installation de l'application | validé | manuel | OFFICIAL | -#### YEP 2.16 - Vérifier la disponibilité des dépendances sur ARM, x86 et x64 | validé | manuel | OFFICIAL | +#### YEP 2.16 +##### Vérifier la disponibilité des dépendances sur ARM, x86 et x64 | validé | manuel | OFFICIAL | YunoHost s'installe sur ARM, sur x86 et x64. Un paquet devrait donc être testé sur ces trois architectures processeur. Certains paquets ne sont pas disponibles sur ARM, il convient dans ce cas d'étudier d'autres solutions ou d'indiquer dans le README.md que l'application ne fonctionne pas sur ARM et de bloquer l’installation par détection du type d’architecture. -#### YEP 2.17 - Prendre en compte la version d'origine lors des mises à jour | validé | manuel | OFFICIAL | +#### YEP 2.17 +##### Prendre en compte la version d'origine lors des mises à jour | validé | manuel | OFFICIAL | Le script de mise à jour doit pouvoir fonctionner même si les mises à jour précédentes n'ont pas été effectuées. Ainsi, il doit être possible de faire des sauts de mise à jour d'une version N-x vers une version N. Pour ce faire il est conseillé d'enregistrer les numéros de version dans les settings de l'app. -### YEP 2.18 - Stabiliser une webapp +### YEP 2.18 +##### Stabiliser une webapp La majeure partie des applications YunoHost sont des web apps, mais certaines n'en sont pas. Les YEP 2.18.x développent certaines spécificités liées aux web app. -#### YEP 2.18.1 - Lancer le script d'installation d'une webapp correctement | validé | manuel | WORKING | +#### YEP 2.18.1 +##### Lancer le script d'installation d'une webapp correctement | validé | manuel | WORKING | Bien souvent une web app s'installe à partir de formulaires affichés sur une page web. Cette façon de faire, bien que pratique pour un humain, l'est moins pour un programme. Il convient donc de vérifier si l'application ne propose pas une solution d'installation en ligne de commande. @@ -289,49 +321,61 @@ Si ce n'est pas le cas, il convient d'utiliser l'option -H de curl. En effet, da curl -kL -H "Host: $domain" --data "¶m1=Text1¶m2=text2" https://localhost$path/install.php > /dev/null 2>&1 ``` -#### YEP 2.18.2 - Gérer l'installation à la racine d’un nom de domaine | validé | auto | WORKING | +#### YEP 2.18.2 +##### Gérer l'installation à la racine d’un nom de domaine | validé | auto | WORKING | Une web app devrait pouvoir s'installer à la racine d’un nom de domaine. -#### YEP 2.18.3 - Gérer l'installation sur un sous-domaine | validé | auto | WORKING | +#### YEP 2.18.3 +##### Gérer l'installation sur un sous-domaine | validé | auto | WORKING | Une web app devraient pouvoir s'installer sur un sous-domaine directement sans sous dossiers. -#### YEP 2.18.4 - Gérer l'installation sur un chemin `/path` | validé | auto | OFFICIAL | +#### YEP 2.18.4 +##### Gérer l'installation sur un chemin `/path` | validé | auto | OFFICIAL | Une web app devraient pouvoir s'installer sur un chemin `/path`. -#### YEP 2.18.5 - Gérer la tuile YunoHost pour naviguer facilement entre les applications | validé | manuel | OFFICIAL | +#### YEP 2.18.5 +##### Gérer la tuile YunoHost pour naviguer facilement entre les applications | validé | manuel | OFFICIAL | Sauf dans de rare cas il est conseillé d'intégrer la tuile YunoHost qui permet de retourner sur le menu du SSO. Cette intégration se fait dans la configuration nginx. Certains utilisateurs ont remplacé ce carré par un script ajoutant un menu en haut de chaque webapp. -### YEP 3 - Sécuriser une app -#### YEP 3.1 - Ne pas demander ou stocker de mot de passe LDAP | brouillon | manuel | NOTWORKING | -#### YEP 3.2 - Ouvrir un port correctement | brouillon | manuel | WORKING | +### YEP 3 +#### Sécuriser une app +#### YEP 3.1 +##### Ne pas demander ou stocker de mot de passe LDAP | brouillon | manuel | NOTWORKING | +#### YEP 3.2 +##### Ouvrir un port correctement | brouillon | manuel | WORKING | Si l'application nécessite l'ouverture d'un port, il est nécessaire de vérifier préalablement que ce port n'est pas déjà utilisé par une autre application. Le cas échéant, le script install doit être capable de trouver un autre port disponible. Il convient également de vérifier si le port doit être ouvert sur le routeur, au delà du réseau local. Si ce n'est pas le cas, l'argument `--no-upnp` doit être ajouté à la commande `yunohost firewall allow` afin de limiter l'ouverture du port au réseau local uniquement. -#### YEP 3.3 - Faciliter le contrôle de l'intégrité des sources | brouillon | manuel | OFFICIAL | +#### YEP 3.3 +##### Faciliter le contrôle de l'intégrité des sources | brouillon | manuel | OFFICIAL | L'application upstream ne doit pas être intégrée en tarball dans le dossier source du package, car cela alourdit le package et le dépôt git et ne permet pas la vérification de l'intégrité de la source. La source doit donc être téléchargée depuis le site officiel, puis son intégritée doit être vérifiée avant de l'installer. -#### YEP 3.4 - Isoler l'app | brouillon | manuel | OFFICIAL | -Afin d'éviter des effets de bords en cas de compromission éventuelle de l'application, celle-ci doit être isolée pour de ne pas risquer d'impacter les autres applications. +#### YEP 3.4 +##### Isoler l'app | brouillon | manuel | OFFICIAL | +Afin d'éviter des effets de bords en cas de compromission éventuelle de l'application, celle-ci doit être isolée pour ne pas risquer d'impacter les autres applications. Pour cela, il convient d'isoler l'application dans son dossier d'exécution en restreignant son environnement par un chroot, soit par un mécanisme interne à l'application lorsque c'est possible (par exemple pour un serveur ftp), soit par l'usage de phpfpm. De même, pour restreindre la portée de l'utilisateur exécutant l'application, il est préférable d'utiliser un utilisateur dédiée à l'application. Dont les droits sont restreint à l'usage de l'application uniquement. Toutefois, cela ne doit pas exempter d'une restriction maximale des droits sur les fichiers de l'application. Autant que possible, les fichiers doivent appartenir à root, et l'utilisateur dédié ne doit avoir de droits d'écriture que sur les fichiers le réclamant expressément. -#### YEP 3.5 - Suivre les recommandations de la documentation de l'app | validé | manuel | OFFICIAL | +#### YEP 3.5 +##### Suivre les recommandations de la documentation de l'app | validé | manuel | OFFICIAL | En général, une application propose une documentation afin d'aider les administrateurs systèmes à réaliser l'installation. Il est conseiller d'en suivre les recommandations, notamment celles concernant les permissions à accorder par fichier ou répertoire. Le mainteneur de paquet doit toutefois rester vigilant, certaines documentations pouvant être erronées ou insuffisante. -#### YEP 3.6 - Mettre à jour les versions contenant des CVE | draft | manuel | OFFICIAL | +#### YEP 3.6 +##### Mettre à jour les versions contenant des CVE | draft | manuel | OFFICIAL | Les [CVE](https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures), ou Common Vulnerabilities and Exposures, recensent les failles de sécurités communes aux applications. Les corrections de ces failles peuvent concerner l'application et il est important dans ce cas de suivre au plus près ces mises à jour. Plus généralement, l'application peut proposer un correctif pour une faille spécifique à elle-même. De manière générale, cette YEP implique de suivre un canal d'information pour suivre les mises à jour de sécurité de l'application et réagir rapidement en mettant à jour le package en conséquence. Comme précisé dans la YEP 1.7, si un correctif de sécurité doit être déployé en urgence, un autre membre de YunoHost peut être amené à faire un commit sur le package si nécessaire. -#### YEP 3.7 - Modifier correctement les dépots sources | draft | manuel | OFFICIAL | +#### YEP 3.7 +##### Modifier correctement les dépots sources | draft | manuel | OFFICIAL | La modification ou l'ajout des dépôts sources dans /etc/apt/sources.list ou /etc/apt/sources.list.d/ ne doit se faire que si c'est absolument nécessaire. Dans un tel cas, merci d'utiliser le pinning, afin de s'assurer que le dépôt n'aura pas une priorité supérieur aux dépôts de debian et YunoHost. Dans certains cas, il pourra être préférable de télécharger directement le .deb à partir du dépôt source (avec wget par exemple), ceci est à évaluer en fonction des dépendances, de la nature et du rythme des mises à jour. @@ -342,10 +386,13 @@ Lorsque l'on désigne la distribution on doit toujours faire référence à son Dans tous les cas, une app ne devrait pas modifier les dépôts sources pour les placer sur testing ou une version non supportée par YunoHost (à l'heure où cette yep est rédigé, YunoHost ne supporte pas la nouvelle stable: debian stretch). -### YEP 4 - Intégrer une app +### YEP 4 +#### Intégrer une app + Cette meta YEP traite de l'intégration d'une app avec l'environnement YunoHost. Une bonne intégration est en général un gage de qualité et de confort pour les utilisateurs. -#### YEP 4.2 - Lier l'authentification au sso | validé | manuel | OFFICIAL | +#### YEP 4.2 +##### Lier l'authentification au sso | validé | manuel | OFFICIAL | Le Single Sign On permet d'éviter d'avoir à créer les mêmes utilisateurs pour chaque app. Ainsi, un utilisateur YunoHost pourra se connecter via le Single Sign On à l'ensemble des apps. Pour se faire, il convient de lier son app au LDAP et/ou d'utiliser des hooks pour dupliquer les identifiants du compte dans la base de données de l'app. @@ -354,16 +401,20 @@ Une fois cette opération appliquée, le mainteneur peut utiliser l'instruction Au besoin, SSOwat permet de sécuriser l'accès à une ou plusieurs parties de l'app. Il peut ainsi être pertinent de sécuriser l'accès à une page d'administration avec le SSO plutôt qu'un `.htaccess` et de rendre le reste de l'app accessible à tous les visiteurs. -#### YEP 4.2.1 - Déconnexion | validé | manuel | OFFICIAL | +#### YEP 4.2.1 +##### Déconnexion | validé | manuel | OFFICIAL | Lorsque l'on clique sur une action de déconnexion au sein de l'app, celle-ci devrait déconnecter l'utilisateur du SSO. Sinon, il y a un risque que l'utilisateur laisse par mégarde une session ouverte. -#### YEP 4.3 - Fournir un script de sauvegarde YunoHost fonctionnel | validé | auto | OFFICIAL | +#### YEP 4.3 +##### Fournir un script de sauvegarde YunoHost fonctionnel | validé | auto | OFFICIAL | L'application doit disposer d'un script backup pour permettre aux utilisateurs de sauvegarder l'application, sa configuration et ses données. -#### YEP 4.4 - Fournir un script de restauration YunoHost fonctionnel | validé | auto | OFFICIAL | +#### YEP 4.4 +##### Fournir un script de restauration YunoHost fonctionnel | validé | auto | OFFICIAL | L'application doit disposer d'un script restore pour permettre aux utilisateurs de restaurer une application sauvegardée préalablement avec le script backup. -#### YEP 4.5 - Utiliser les hooks | validé | manuel | OPTIONAL | +#### YEP 4.5 +##### Utiliser les hooks | validé | manuel | OPTIONAL | YunoHost offre la possibilité de lancer des actions à chaque traitement effectué par la ligne de commande. Ceci peut être pratique dans de nombreux cas. Exemples : @@ -389,15 +440,18 @@ Liste des hooks : Ces scripts sont à placer dans un répertoire `hooks` comme dans ce paquet : https://github.com/YunoHost-Apps/owncloud_ynh/tree/master/hooks . -#### YEP 4.6 - Gèrer le multi-instance | validé | manuel | OPTIONAL | +#### YEP 4.6 +##### Gèrer le multi-instance | validé | manuel | OPTIONAL | Il est parfois pratique de pouvoir installer plusieurs fois une même app. Par exemple, pour plusieurs noms de domaine différents. Il faut toutefois faire attention à la façon de gérer les chemins de fichier, les dépendances, les ports utilisés etc. de sorte qu'il n'y ait pas de collision. -#### YEP 4.7 - Ajouter un module à la CLI | validé | manuel | OPTIONAL | +#### YEP 4.7 +##### Ajouter un module à la CLI | validé | manuel | OPTIONAL | Il est possible de créer un module afin d'ajouter des commandes à la ligne de commandes yunohost. Pour ce faire, il faut ajouter un actionmaps dans `/usr/share/moulinette/actionsmap/`. Cet actionmaps doit commencer par `ynh_`. Les paquets [menu_ynh](https://github.com/YunoHost-Apps/menu_ynh/) et [subscribe_ynh](https://github.com/YunoHost-Apps/subscribe_ynh/) bien qu’anciens (et non à jour) peuvent servir de base pour mettre en place ce genre de module. -#### YEP 4.8 - Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL | +#### YEP 4.8 +##### Ajouter un module à l'admin web | brouillon | manuel | OPTIONAL | diff --git a/packaging_apps_helpers.md b/packaging_apps_helpers.md index f5cc0d21..3edf714c 100644 --- a/packaging_apps_helpers.md +++ b/packaging_apps_helpers.md @@ -247,16 +247,23 @@ sudo yunohost app checkurl DOMAINPATH -a APP ```bash -sudo yunohost app addaccess [--users=USER] APP +sudo yunohost app addaccess APP [--users=USER] ``` > Allow the `USER` user to access `APP`. +> it's possible to add several users on several apps at once, for exemple: +```bash +sudo yunohost app addaccess app1 app2 -u user1 user2 +``` ```bash -sudo yunohost app removeaccess --users=USER APP +sudo yunohost app removeaccess APP --users=USER ``` > Remove the access authorization to `APP` from `USER` user. +> like for addaccess, it's possible to remove several users on several apps at once, for exemple: +```bash +sudo yunohost app removeaccess app1 app2 -u user1 user2 ```bash sudo yunohost service remove NAME diff --git a/packaging_apps_helpers_fr.md b/packaging_apps_helpers_fr.md index af0c6e05..06857b13 100644 --- a/packaging_apps_helpers_fr.md +++ b/packaging_apps_helpers_fr.md @@ -20,6 +20,32 @@ Le script helpers va exécuter tout les scripts présent dans helpers.d et donc ### Liste non exhaustive des helpers disponibles #### Base de données +```bash +ynh_mysql_setup_db USER NAME [PWD] +``` +> Créer l'utilisateur sql `USER` et lui octroie tout les droits sur une nouvelle base de donnée `NAME`. +Si aucun mot de passe n'est indiqué, un nouveau est généré et stocké dans la variable $db_pwd ainsi que dans la configuration de l'application sous le nom "mysqlpwd" +**Nécessite YunoHost version 2.6.4** + + +```bash +ynh_mysql_remove_db USER NAME +``` +> Supprime l'utilisateur sql `USER` et sa base de donnée `NAME`. +**Nécessite YunoHost version 2.6.4** + + +```bash +ynh_sanitize_dbid NAME +``` +> Corrige le nom d'une base de donnée pour s'assurer qu'il ne contient pas de caractères interdits. +Et renvoi ce nom corrigé. +> ```bash +> dbname=$(ynh_sanitize_dbid $app) +> ``` +> **Nécessite YunoHost version 2.6.4** + + ```bash ynh_mysql_execute_as_root SQL DB ``` @@ -81,29 +107,21 @@ ynh_package_update > Met à jour la liste des paquets disponibles de manière silencieuse et non interactive. > C'est un `apt-get update` avec les options -y -qq et noninteractive. -
- -**Attention, les commandes suivantes sont à éviter autant que possible. Il n'est pas sain d'installer et encore moins de supprimer un paquet sans en gérer les conflits et dépendances. Ceci sera bientôt facilité dans les prochaines versions de YunoHost...** ```bash -ynh_package_install PACKAGE1 PACKAGE2 +ynh_install_app_dependencies DEPENDANCE1 DEPENDANCE2 ... ``` -> Installe les paquets `PACKAGE1`, `PACKAGE2`, etc de manière non interactive et silencieuse. -> C'est un `apt-get install` avec les options -y -qq et noninteractive. +> Installe les paquets requis par une app sous forme de dépendance. De cette manière les paquets supplémentaires installés sont gérés en tant que dépendances par apt. +Il est préférable d'installer les paquets nécessaire par ce helper plutôt que par apt directement. +**Nécessite YunoHost version 2.6.4** ```bash -ynh_package_remove PACKAGE1 PACKAGE2 +ynh_remove_app_dependencies ``` -> Supprime les paquets `PACKAGE1`, `PACKAGE2`, etc de manière non interactive et silencieuse. -> C'est un `apt-get remove` avec les options -y -qq et noninteractive. - - -```bash -ynh_package_autoremove PACKAGE1 PACKAGE2 -``` -> Supprime les paquets `PACKAGE1`, `PACKAGE2`, etc ainsi que tous les paquets qui ne semblent plus utilisé, de manière non interactive et silencieuse. -> C'est un `apt-get autoremove` avec les options -y -qq et noninteractive. +> Supprime les dépendances de l'application, précédemment installées avec ynh_install_app_dependencies. +Les paquets ne seront supprimés que si aucune application ou paquet ne les utilisent encore, selon apt. +**Nécessite YunoHost version 2.6.4** #### Configuration des applications @@ -160,7 +178,7 @@ Les patterns utilisant des regex, contrairement aux précédents, sont recherch ```bash ynh_app_setting_get APP KEY ``` -> Récupère le paramètre `KEY` stocké précémment pour l'application `APP`. +> Récupère le paramètre `KEY` stocké précédemment pour l'application `APP`. > Par exemple : > ```bash > is_public=$(ynh_app_setting_get nom_app is_public) @@ -242,6 +260,160 @@ ynh_find_port BEGIN_PORT > **Nécessite YunoHost version 2.6** +#### Configuration système +```bash +ynh_use_logrotate [LOGFILE] [--non-append] +``` +> Créer un fichier de configuration logrotate pour cette application. +Si `LOGFILE` est renseigné, ce fichier de log sera utilisé. Sinon, la configuration concernera le dossier de log /var/log/${app}. +Si `--non-append` est ajouté, le fichier de configuration logrotate sera effacé puis recréé. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_remove_logrotate +``` +> Supprime la configuration logrotate pour cette application. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_add_systemd_config +``` +> Utilise la configuration systemd présente dans conf/systemd.service pour configurer un service. +Les termes `__APP__` et `__FINALPATH__` sont remplacés respectivement par $app et $final_path. +Le fichier de configuration est copié dans /etc/systemd/system/$app.service et le service est activé. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_remove_systemd_config +``` +> Supprime la configuration systemd pour cette application. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_add_nginx_config +``` +> Utilise la configuration nginx présente dans conf/nginx.conf. +Les termes suivant sont remplacés `__PATH__` par $path_url, `__DOMAIN__` par $domain, `__PORT__` par $port, `__NAME__` par $app et `__FINALPATH__` par $final_path. +Le fichier de configuration est copié dans /etc/nginx/conf.d/$domain.d/$app.conf et nginx est rechargé. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_remove_nginx_config +``` +> Supprime la configuration nginx pour cette application. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_add_fpm_config +``` +> Utilise la configuration phpfpm présente dans conf/php-fpm.conf. +Les termes suivant sont remplacés `__NAMETOCHANGE__` par $app, `__FINALPATH__` par $final_path et `__USER__` par $app. +Le fichier de configuration est copié dans /etc/php5/fpm/pool.d/$app.conf. +Le fichier conf/php-fpm.ini est copié dans /etc/php5/fpm/conf.d/20-$app.ini et php-fpm est rechargé. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_remove_fpm_config +``` +> Supprime la configuration php-fpm pour cette application. +> **Nécessite YunoHost version 2.6.4** + + +#### Backup/restore +```bash +ynh_backup DEST +``` +> Ajoute le fichier ou dossier `DEST` à la liste des fichiers à ajouter au backup de l'application. +`DEST` doit être un chemin absolu. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_restore_file DEST +``` +> Restaure le fichier ou dossier `DEST`. +`DEST` doit être un chemin absolu. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_restore +``` +> Restaure tous les fichiers archivés par le script backup. +> **Nécessite YunoHost version 2.6.4** + + +#### Gestion des erreurs +```bash +ynh_abort_if_errors +``` +> Stop immédiatement l'exécution du script si une commande échoue ou si une variable non initialisée est utilisée. +> **Nécessite YunoHost version 2.6.4** +> Si le script risque de laisser des résidus lors de son arrêt, il est possible d'utiliser la fonction `ynh_clean_setup` pour exécuter des commandes avant l'arrêt effectif du script. +> ```bash +> ynh_clean_setup () { +> instructions... +> } +> ``` + + +```bash +ynh_backup_before_upgrade +``` +> Créer un backup de l'application avant de démarrer l'upgrade. +> **Nécessite YunoHost version 2.6.4** +```bash +ynh_restore_upgradebackup +``` +> Restaure le backup créé par ynh_backup_before_upgrade en cas d'échec de l'upgrade. +> **Nécessite YunoHost version 2.6.4** +> Ces 2 helpers s'utilisent de la manière suivante: +> ```bash +> ynh_backup_before_upgrade +> ynh_clean_setup () { +> ynh_restore_upgradebackup +> } +> ynh_abort_if_errors +> ``` + + +#### Vérification du path +```bash +ynh_normalize_url_path PATH +``` +> Corrige le path et renvoi le résultat. +> ```bash +> url_path=$(ynh_normalize_url_path $url_path) +> ``` +> Le path est corrigé de la manière suivante +> example -> /example +> /example -> /example +> /example/ -> /example +> / -> / +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_webpath_available DOMAIN PATH +``` +> Vérifie la disponibilité du path demandé. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_webpath_register APP DOMAIN PATH +``` +> Réserve le path demandé pour cette application. +> **Nécessite YunoHost version 2.6.4** + + #### Autres commandes ```bash ynh_string_random LENGTH @@ -254,6 +426,53 @@ ynh_die MSG RETCODE ``` > Affiche le message `MSG` (sur stderr) et termine le script avec le code `RETCODE` (par défaut 1). + +```bash +ynh_store_file_checksum FILE +``` +> Calcule la somme de contrôle du fichier FILE et la stocke dans la configuration de l'app. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_backup_if_checksum_is_different FILE +``` +> Compare la somme de contrôle du fichier FILE avec la somme de contrôle précédemment stockée par ynh_store_file_checksum. +> Si la somme de contrôle est différente, un backup du fichier est fait. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_secure_remove FILE +``` +> Supprime le fichier ou dossier FILE en vérifiant que ce n'est pas un dossier système sensible. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_replace_string MATCH_STRING REPLACE_STRING TARGET_FILE +``` +> Remplace toute les occurences de la chaine `MATCH_STRING` par `REPLACE_STRING` dans le fichier `TARGET_FILE`. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_local_curl URL KEY1=VALUE1 KEY2=VALUE2 ... +``` +> Effectue une requête curl sur la page `URL` et renseigne les champs POST `KEY1`, `KEY2`, etc par `VALUE1`, `VALUE2`, etc. +> Ce helper est surtout utilisé pour remplir les formulaires d'installation des applications. +> `URL` ne doit pas contenir le domaine et le path. +> **Nécessite YunoHost version 2.6.4** + + +```bash +ynh_setup_source DEST_DIR [SOURCE_ID] +``` +> Télécharge la source de l'application, vérifie la somme de contrôle, la décompresse et la copie dans le dossier `DEST_DIR`. +> Si SOURCE_ID n'est pas renseigné, il prend la valeur `app`. +> Ce helper nécessite un fichier [conf/SOURCE_ID.src](https://github.com/YunoHost/example_ynh/blob/master/conf/app.src) indiquant les informations sur la source à télécharger. +> **Nécessite YunoHost version 2.6.4** +
**Les commandes suivantes sont amenées à être remplacées (voir supprimées) dans les prochaines versions de YunoHost.** @@ -280,17 +499,25 @@ sudo yunohost app checkurl DOMAINPATH -a APP ```bash -sudo yunohost app addaccess [--users=USER] APP +sudo yunohost app addaccess APP [--users=USER] ``` > Autorise l'utilisateur `USER` à accéder à l'application `APP`. > Si l'option `--users` n'est pas spécifiée, l'accès à l'application `APP` est accordé à tout les utilisateurs. +> il est aussi possible de rajouter plusieurs utilisateurs à plusieurs apps d'un coup, par exemple : +```bash +sudo yunohost app addaccess app1 app2 -u user1 user2 +``` ```bash -sudo yunohost app removeaccess --users=USER APP +sudo yunohost app removeaccess APP --users=USER ``` > Retire l'autorisation d'accès de l'utilisateur `USER` à l'application `APP`. +> de la même manière que pour addaccess, il est aussi possible de retirer plusieurs utilisateurs à plusieurs apps d'un coup, par exemple : +```bash +sudo yunohost app removeaccess app1 app2 -u user1 user2 +``` ```bash sudo yunohost service add NAME [-l LOG] diff --git a/packaging_apps_hooks_fr.md b/packaging_apps_hooks_fr.md new file mode 100644 index 00000000..accb4178 --- /dev/null +++ b/packaging_apps_hooks_fr.md @@ -0,0 +1,185 @@ +# Usage des hooks YunoHost + +Les hooks permettent de déclencher un script lorsqu'une action est effectuée par le système. +Le cas le plus évident, est l'ajout d'un utilisateur. Si l'app dispose d'un hook `post_user_create`, ce hook sera déclenché dés qu'un utilisateur sera ajouté. +Cela permet donc à une application d'exécuter des actions en fonction des évènements intervenant sur le système. + +### Liste des hooks disponibles + +- `post_domain_add` +Après l'ajout d'un domaine. +- `post_domain_remove` +Après la suppression d'un domaine. +- `post_user_create` +Après l'ajout d'un utilisateur. +- `post_user_delete` +Après la suppression d'un utilisateur. +- `post_iptable_rules` +Après le rechargement du parefeu. +- `pre_backup_delete` +Avant la suppression d'un backup. +- `post_backup_delete` +Après la suppression d'un backup. +- `post_app_addaccess` +Après l'ajout d'un utilisateur autorisé sur une application. +- `post_app_removeaccess` +Après la suppression de l'autorisation d'un utilisateur sur une application. +- `post_app_clearaccess` +Après l'effacement de toute les règles d'accès sur une application. +- `post_app_install` +Après l'installation d'une application +- `post_app_upgrade` +Après l'upgrade d'une applications +- `post_app_remove` +Après la supression d'une applications +- `post_app_change_url` +Après avoir modifié le chemin et ou le nom de domaine d'une application +- `conf_regen` +Avant et après la régénération de la configuration d'un service. +Services pris en charge par regen-conf: + - avahi-daemon + - dnsmasq + - dovecot + - fail2ban + - glances + - metronome + - mysql + - nginx + - nslcd + - nsswitch + - postfix + - rspamd + - slapd + - ssh + - ssl + +### Mise en place des hooks + +A l'exception du hook conf_regen, tout les hooks s'utilisent de la même manière. +Tout d'abord, il faut comprendre qu'un hook est un simple script bash qui sera exécuté par YunoHost lorsque l'évènement indiqué se présentera. +Pour ajouter un hook à YunoHost, il faut utiliser un dossier "hooks" à la racine du package de l'application. Puis dans celui-ci mettre votre script sous le nom du hooks correspondant. + +> Par exemple: +Pour un hook `post_user_create`, le script qui devra être exécuté pour ce hook doit simplement être placé dans "hooks/post_user_create" dans le package. + +Lors de l'installation et de l'upgrade, les scripts dans le dossier hooks seront dupliqués dans le dossier "/etc/yunohost/hooks.d/" dans le dossier correspondant au hook, puis sous le nom "50-$app". +Lors de la suppression de l'application, tout les hooks lui appartenant seront supprimés. + +### Construire un script de hook + +En tant que script bash, un script de hook doit commencer par le shebang bash + +```bash +#!/bin/bash +``` + +Ensuite il convient de prendre les arguments donnés par YunoHost lors de l'appel du script. +Chaque hook propose des arguments différents. + +##### `post_domain_add` et `post_domain_remove` + +```bash +domain=$1 +``` + +##### `post_user_create` + +```bash +username=$1 +mail=$2 +password=$3 # Clear password +firstname=$4 +lastname=$5 +``` +##### `post_user_delete` + +```bash +username=$1 +purge=$2 # True/False Indique si le dossier utilisateur a été supprimé ou pas. +``` + +##### `post_iptable_rules` + +```bash +upnp=$1 # True/False Indique si l'upnp est activé ou non. +ipv6=$2 # True/False Indique si l'IPV6 est activé ou non. +``` + +##### `pre_backup_delete` et `post_backup_delete` + +```bash +backup_name=$1 +``` + +##### `post_app_install`, `post_app_upgrade`, `post_app_remove` et `post_app_change_url` + +Les variables utilisables dans ces scripts sont les mêmes que celles disponibles dans [les scripts d'actions associés](/packaging_apps_scripts_fr). + + +Example: pour `post_app_install` les variables sont les mêmes que pour le script `install` + +##### `post_app_addaccess` et `post_app_removeaccess` + +```bash +app_id=$1 +users=$2 # Tous les utilisateurs autorisés sur l'app. Séparés par des virgules. +``` + +##### `post_app_clearaccess` + +```bash +app_id=$1 +``` + +La suite du script dépend de ce que vous voulez effectuer dans celui-ci. + +### Cas particulier de `conf_regen` +Le hook conf_regen est un hook plus délicat, que ce soit pour sa mise en place ou pour son contenu. + +##### Mise en place d'un hook `conf_regen` + +Un hook conf_regen ne doit pas être placé dans le dossier hooks de l'application. Il doit être mis en place manuellement. +Le hook doit être copié en indiquant à quel service il est lié. +```bash +cp hook_regen_conf /usr/share/yunohost/hooks/conf_regen/50-SERVICE_$app +``` + +> Lors de la suppression de l'application, ce hook devra être supprimé manuellement. + +##### Construire un script de hook conf_regen + +Un hook conf_regen est appelé 2 fois, une première fois après analyse de la configuration et avant une éventuelle modification des fichiers, puis une seconde fois après application des modifications, si il y a eu des modifications. + +Un script de hook conf_regen devrait donc ressembler à ça: + +```bash +#!/bin/bash + +force=${2:-0} # 0/1 --force argument +dryrun=${3:-0} # 0/1 --dry-run argument +pending_conf=$4 # Path of the pending conf file + +do_pre_regen() { + # Put your code here for pre regen conf. +} + +do_post_regen() { + # Put your code here for post regen conf. + # Be careful, this part will be executed only if the configuration has been modified. +} + +case "$1" in + pre) + do_pre_regen + ;; + post) + do_post_regen + ;; + *) + echo "Hook called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +exit 0 +``` diff --git a/packaging_apps_levels_fr.md b/packaging_apps_levels_fr.md index dfd3351c..42643c6b 100644 --- a/packaging_apps_levels_fr.md +++ b/packaging_apps_levels_fr.md @@ -1,21 +1,56 @@ # Niveaux de qualité des packages d'applications YunoHost -Afin de faciliter le packaging d'applications par des étapes successives à atteindre, chaque package est affublée d'un niveau de qualité, de 0 à 10. +Afin de faciliter le packaging d'applications par des étapes successives à atteindre, chaque package est affublé d'un niveau de qualité, de 0 à 10. Un package doit satisfaire un certain nombre de critères pour atteindre chaque niveau. De plus pour atteindre un niveau, le package doit avoir préalablement atteint le niveau précédent. Ce classement des applications par niveaux présente 3 avantages: - Le packaging d'application est d'autant plus ludique, avec des objectifs clairs à atteindre et des étapes successives. -- Une application correctement packagée est d'avantage mise en avant qu'une application ne respectant pas les règles de packaging. +- Une application correctement packagée est davantage mise en avant qu'une application ne respectant pas les règles de packaging. - Les utilisateurs peuvent rapidement voir le niveau d'une application et ainsi savoir si le package est de bonne qualité. -## Les niveaux de qualité des packages d'applications en détails: +## Résumé des niveaux + +**Niveau 0** +L'application ne fonctionne pas. + +**Niveau 1** +L'application s'installe et se désinstalle correctement dans certains cas. + +**Niveau 2** +L'application s'installe et se désinstalle correctement dans toutes les configurations communes. + +**Niveau 3** +L'application peut être mise à jour. + +**Niveau 4** +L'application utilise directement les utilisateurs YunoHost et permet l'identification unique à partir du portail YunoHost. + +**Niveau 5** +Le code du package d'application respecte certaines règles de syntaxe. + +**Niveau 6** +L'application peut-être sauvegardée et restaurée. + +**Niveau 7** +Le package d'application passe avec succès l'ensemble des tests d'intégrité. + +**Niveau 8** +L'application respecte un ensemble de recommandations avancées améliorant sa qualité générale. + +**Niveau 9** +L'application respecte toutes les recommandations. C'est un package d'excellente qualité. + +**Niveau 10** +Le package d'application est jugé parfait ! + +## Les niveaux de qualité en détails: ### Niveau 0 **L'application ne s'installe pas ou ne fonctionne pas après installation.** C'est le niveau le plus bas, une application de niveau 0 est considérée comme non fonctionnelle. YEP à respecter pour atteindre le niveau 0: -- [YEP 1.1](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11---nommer-son-app-et-son-d%C3%A9pot---valid%C3%A9--manuel--notworking-) : Nommer son app et son dépot +- [YEP 1.1](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11---nommer-son-app-et-son-d%C3%A9pot---valid%C3%A9--manuel--notworking-) : Nommer son app et son dépôt - [YEP 1.2](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-12---inscrire-lapp-sur-un-r%C3%A9pertoire-connu---valid%C3%A9--manuel--notworking-) : Inscrire l'app sur un "répertoire" connu ### Niveau 1 @@ -36,9 +71,9 @@ YEP à respecter pour atteindre le niveau 1: - Installation privée (sécurisée par le SSO). - Installation publique. - Installation multi-instance. -- Désinstallation dans les mêmes circonstances +- Désinstallation dans les mêmes circonstances. -*Si une application ne permet pas certaines configurations d'installations, celles-ci doivent être indiqués clairement dans le readme du package. Toutefois, le niveau 2 ne peut pas être atteint si une configuration d'installation est volontairement écartée sans raison valable.* +*Si une application ne permet pas certaines configurations d'installation, celles-ci doivent être indiquées clairement dans le readme du package. Toutefois, le niveau 2 ne peut pas être atteint si une configuration d'installation est volontairement écartée sans raison valable.* *Cela n'empêche pas de restreindre volontairement les installations publiques, privées ou multi-instance si l'application le justifie.* YEP à respecter pour atteindre le niveau 2: @@ -59,7 +94,7 @@ YEP à respecter pour atteindre le niveau 3: **L'application prend en charge ldap et HTTP AUTH** L'application gère ses utilisateurs directement à partir de la [base ldap de YunoHost](https://github.com/YunoHost/SSOwat/blob/366dd6c4438e6550f7438c36893690b628340185/config.lua#L50-L53) et permet la connexion unifiée en utilisant l'[authentification HTTP](https://fr.wikipedia.org/wiki/Authentification_HTTP) depuis le SSO. -*Si l'application n'est pas capable de prendre en charge un annuaire ldap ou l'authentification HTTP, ce niveau peux être ignoré.* +*Si l'application n'est pas capable de prendre en charge un annuaire ldap ou l'authentification HTTP, ce niveau peut être ignoré.* *Il faut toutefois être en mesure de justifier de cette impossibilité* YEP à respecter pour atteindre le niveau 4: @@ -77,7 +112,7 @@ YEP à respecter pour atteindre le niveau 5: - [YEP 2.18.1](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2181---lancer-le-script-dinstallation-dune-webapp-correctement----valid%C3%A9--manuel--working-) : Lancer le script d'installation d'une webapp correctement ### Niveau 6 -**L'application peut-être sauvegardée et restaurée sans erreurs sur la même machine ou une autre.** +**L'application peut-être sauvegardée et restaurée sans erreur sur la même machine ou une autre.** YEP à respecter pour atteindre le niveau 6: - [YEP 1.4](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-14---informer-sur-lintention-de-maintenir-un-paquet----brouillon--manuel--working-) : Informer sur l'intention de maintenir un paquet @@ -117,7 +152,7 @@ YEP à respecter pour atteindre le niveau 8: *Si une application n'est pas disponible sur une architecture, et qu'il est impossible de contourner cette limitation raisonnablement, cette limitation doit être indiquée dans le readme et prise en compte dans le script d'installation. L'installation de l'application sur une architecture non supportée doit être stoppée avant de modifier les fichiers.* ### Niveau 9 -**L'application respecte toutes les [YEP optionnelles.** +**L'application respecte toutes les YEP optionnelles.** YEP à respecter pour atteindre le niveau 9: - [YEP 2.10](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-210---configurer-les-logs-de-lapplication----brouillon--manuel--working-) : Configurer les logs de l'application @@ -143,39 +178,4 @@ Si tout ces prérequis sont satisfaits, vous pouvez créer une pull request sur Dés lors, le package sera vérifié par les membres du groupe Apps et la décision de l'inclure dans la liste des applications officielles sera débattue par le groupe. Si tout va bien l'application rejoindra les applications officielles de YunoHost. ---- -## Description simple des niveaux de qualité des packages d'applications: - -**Niveau 0** -L'application ne fonctionne pas. - -**Niveau 1** -L'application s'installe et se désinstalle correctement dans certains cas. - -**Niveau 2** -L'application s'installe et se désinstalle correctement dans toutes les configurations communes. - -**Niveau 3** -L'application peux être mise à jour. - -**Niveau 4** -L'application utilise directement les utilisateurs YunoHost et permet l'identification unique à partir du portail YunoHost. - -**Niveau 5** -Le code du package d'application respecte certaines règles de syntaxe. - -**Niveau 6** -L'application peut-être sauvegardée et restaurée. - -**Niveau 7** -Le package d'application passe avec succès l'ensemble des tests d'intégrité. - -**Niveau 8** -L'application respecte un ensemble de recommandations avancées améliorant sa qualité générale. - -**Niveau 9** -L'application respecte toutes les recommandations. C'est un package d'excellente qualité. - -**Niveau 10** -Le package d'application est jugé parfait ! diff --git a/packaging_apps_manifest.md b/packaging_apps_manifest.md index 62376fea..8130b1e1 100644 --- a/packaging_apps_manifest.md +++ b/packaging_apps_manifest.md @@ -12,6 +12,7 @@ The `manifest.json` file defines the app's constants, a bunch of values that Yun "fr": "Webmail Open Source" }, "url": "http://roundcube.net/", + "version": "1.0.1~ynh7", "license": "free", "maintainer": { "name": "kload", @@ -62,6 +63,8 @@ The `manifest.json` file defines the app's constants, a bunch of values that Yun * **url**: software website. +* **version**: version of the package builded from the upstream version number and an incremental number for each change in the package without upstream change. Example "1.0.1~ynh7". Must be a string. + * **license**: application license: `free` or `non-free`. Be careful to not confuse with package license which must be put in `LICENSE` file. * **maintainer**: informations about the app maintainer for contact. diff --git a/packaging_apps_manifest_fr.md b/packaging_apps_manifest_fr.md index 98b07abf..dbb9acb3 100644 --- a/packaging_apps_manifest_fr.md +++ b/packaging_apps_manifest_fr.md @@ -12,6 +12,7 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb "fr": "Webmail Open Source" }, "url": "http://roundcube.net/", + "version": "1.0.1~ynh7", "license": "free", "maintainer": { "name": "kload", @@ -58,9 +59,11 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb - **packaging_format** : version de packaging du paquet. La version **1** est la version actuelle. Cette clé a été mise en place afin de faire évoluer les versions de packaging de manière décorrélée des versions de YunoHost. -* **description** : description complète de l’application. Vous pouvez la détailler comme bon vous semble. Uniquement le champs `en` (english) est requis, vous pouvez également ajouter la traduction en français :) +* **description** : description complète de l’application. Vous pouvez la détailler comme bon vous semble. Uniquement le champ `en` (english) est requis, vous pouvez également ajouter la traduction en français :) -* **url**: site de l’application. +* **url** : site web de l’application. + +* **version** : version du package construit à partir du numéro de version de l’application qui est installée et d'un incrément pour chaque changement du paquet sans changement de version de l'application. "Exemple: 1.0.1~ynh7". Le champ doit être une chaîne de caractères. * **license** : licence avec laquelle l’application est distribuée : `free`, `non-free`. Attention à ne pas confondre avec la licence du paquet qui doit être mise dans le fichier `LICENSE`. @@ -68,7 +71,7 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb - **requirements** : dépendance du paquet de l’application à la version d’un paquet Debian de YunoHost. Par exemple : "yunohost": ">> 2.3.12", le paquet `yunohost` doit être de version supérieur à `2.3.12`. -* [**multi_instance**](packaging_apps_multiinstance_fr) : capacité d’une application d’être installée plusieurs fois. +* [**multi_instance**](packaging_apps_multiinstance_fr) : capacité d’une application d’être installée plusieurs fois. * **services** : liste des services nécessaires au fonctionnement de l’application. `nginx`, `php5-fpm`, `mysql`, `uwsgi`, `metronome`, `postfix`, `dovecot`… @@ -77,7 +80,7 @@ Le fichier `manifest.json` définit les constantes de l’application, un ensemb * **name** : identifiant du paramètre * **type** : (optionnel) type de paramètre parmis `domain`, `path`, `user`, `app`, `boolean` et `password`. Le champ sera caché dans le cas d’un mot de passe. * **choices** : (optionnel) restreint les réponses possibles à plusieurs choix. - * **optional** : (optionnel) champs qui indique si ce paramètre est optionnel. Il peux avoir les valeurs `true` ou `false`. + * **optional** : (optionnel) champs qui indique si ce paramètre est optionnel. Il peut avoir les valeurs `true` ou `false`. * **ask** : question posée (au minimum en anglais – `en`) que vous pouvez traduire dans plusieurs langues. * **example** : (optionnel) valeur d’exemple pour aider l’administrateur à remplir le formulaire d’installation. * **default** : (optionnel) valeur par défaut. diff --git a/packaging_apps_nginx_conf_fr.md b/packaging_apps_nginx_conf_fr.md index cb1f28f0..6e4b2702 100644 --- a/packaging_apps_nginx_conf_fr.md +++ b/packaging_apps_nginx_conf_fr.md @@ -44,7 +44,7 @@ sed -i "s@YNH_EXAMPLE_PATH@$path@g" ../conf/nginx.conf sed -i "s@YNH_EXAMPLE_PORT@$port@g" ../conf/nginx.conf sed -i "s@YNH_EXEMPLE_DOMAIN@$domain@g" ../conf/nginx.conf ``` -Il faut ensuite déplacer ce fichier de configuration dans la configuration de Nginx, puis de recharger la configuration de Nginx : +Il faut ensuite déplacer ce fichier de configuration dans la configuration de Nginx, puis recharger la configuration de Nginx : ```bash cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf sudo service nginx reload @@ -56,4 +56,4 @@ Il s’agit de supprimer la configuration Nginx pour cette application, puis de ```bash rm -f /etc/nginx/conf.d/$domain.d/$app.conf sudo service nginx reload -``` \ No newline at end of file +``` diff --git a/packaging_apps_scripts.md b/packaging_apps_scripts.md index 17ee5194..0aac6741 100644 --- a/packaging_apps_scripts.md +++ b/packaging_apps_scripts.md @@ -2,60 +2,65 @@ ## Scripts -For now, a YunoHost package must contain five Shell scripts: `install`, `remove`, `upgrade`, `backup` and `restore`. -These scripts will be executed as `admin` on the YunoHost instances. +For now, a YunoHost package must contain five Shell scripts: `install`, `remove`, `upgrade`, `backup` and `restore`. A 6th script `change_url` can also be added optionally. +These scripts will be executed as `root` on the YunoHost instances. -Here is an example: -```bash -# Retrieve arguments -domain=$1 -path=$2 - -# Check domain/path availability -sudo yunohost app checkurl $domain$path -a roundcube -if [[ ! $? -eq 0 ]]; then - exit 1 -fi - -# Generate random DES key & password -deskey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p') -db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p') - -# Use 'roundcube' as database name and user -db_user=roundcube - -# Initialize database and store mysql password for upgrade -sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../sources/SQL/mysql.initial.sql) -sudo yunohost app setting roundcube mysqlpwd -v $db_pwd - -# Copy files to the right place -final_path=/var/www/roundcube -sudo mkdir -p $final_path -sudo cp -a ../sources/* $final_path -sudo cp ../conf/main.inc.php $final_path/config/ -sudo cp ../conf/db.inc.php $final_path/config/ -sudo mv $final_path/plugins/managesieve/config.inc.php.dist $final_path/plugins/managesieve/config.inc.php - -# Change variables in Roundcube configuration -sudo sed -i "s/rcmail-ynhDESkeyTOchange/$deskey/g" $final_path/config/main.inc.php -sudo sed -i "s/yunouser/$db_user/g" $final_path/config/db.inc.php -sudo sed -i "s/yunopass/$db_pwd/g" $final_path/config/db.inc.php -sudo sed -i "s/yunobase/$db_user/g" $final_path/config/db.inc.php - -# Set permissions to roundcube directory -sudo chown -R www-data: $final_path - -# Modify Nginx configuration file and copy it to Nginx conf directory -sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf -sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf -sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/roundcube.conf - -# Reload nginx and regenerate SSOwat conf -sudo service nginx reload -sudo yunohost app ssowatconf -``` +Examples scripts are available in the [example app](https://github.com/YunoHost/example_ynh/tree/master/scripts) ### Usage You have to put everything in the `install` script in order to get the app to install without issue. It means that you have to install dependencies, create required repositories, initialize potential databases, copy sources and configure everything in the single `install` script (and of course do the reverse process in the `remove` script). -**Be careful**: for security reasons, the script is executed as the **admin** user in YunoHost. Be sure to test it as **admin** and prepend `sudo` to commands that require it. \ No newline at end of file +It's possible to use helpers and import function library by example from a `_common.sh` file. + +### Available variables for these scripts +#### YNH_CWD +This var contains the current working directory path of the executed script. It can be useful for find out the initial path if we have move of directory during the script execution. It is used by some helpers to be sure to use the good directory. + +#### YNH_APP_ID +It contains the application's identifier without the instance's number. + +Example: strut + +#### YNH_APP_INSTANCE_NAME +It contains the instance name which will is used in a lot of situation to manage multiple setup of the same app. + +Example: strut__3 +#### YNH_APP_INSTANCE_NUMBER +It contains the instance's number. Warning, it's not the number of running instances because an old app might be deleted. + +Example: 3 + +### Specific variables to use in `install` +#### YNH_APP_ARG_XXXXXXX +An environment variable is available for each question asked in the installation. + +For example, if in the manifest we have a question like this +```json +{ + "name": "domain", + "type": "domain", + "ask": { + "en": "Choose a domain for OpenSondage", + "fr": "Choisissez un nom de domaine pour OpenSondage", + "de": "Wählen Sie bitte einen Domain für OpenSondage" + }, + "example": "domain.org" +}, +``` + +The name of the question is `domain` so in the script we can access it with YNH_APP_ARG_DOMAIN. The usage is to create a shorter name in the script like this: + +```bash +domain=$YNH_APP_ARG_DOMAIN +``` + +### Variables spécifiques pour `change_url` +#### YNH_APP_OLD_DOMAIN +The old domain where the app was installed. +#### YNH_APP_OLD_PATH +The old path where the app was installed. +#### YNH_APP_NEW_DOMAIN +The new domain where move the app. +#### YNH_APP_NEW_PATH +The new path where move the app. + diff --git a/packaging_apps_scripts_fr.md b/packaging_apps_scripts_fr.md index 5cb174e0..5ac23acc 100644 --- a/packaging_apps_scripts_fr.md +++ b/packaging_apps_scripts_fr.md @@ -2,60 +2,66 @@ ## Les scripts -Un paquet YunoHost doit contenir cinq scripts Shell : `install`, `remove`, `upgrade`, `backup` et `restore`. -Ces scripts seront exécutés en tant qu’`admin` sur les serveurs YunoHost. +Un paquet YunoHost doit contenir cinq scripts Shell : `install`, `remove`, `upgrade`, `backup` et `restore`. Un 6ème script `change_url` peut aussi être ajouté de façon optionnelle +Ces scripts seront exécutés en tant que `root` sur les serveurs YunoHost. -Voici un exemple de script d’`install` : -```bash -# Retrieve arguments -domain=$1 -path=$2 - -# Check domain/path availability -sudo yunohost app checkurl $domain$path -a roundcube -if [[ ! $? -eq 0 ]]; then - exit 1 -fi - -# Generate random DES key & password -deskey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p') -db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p') - -# Use 'roundcube' as database name and user -db_user=roundcube - -# Initialize database and store mysql password for upgrade -sudo yunohost app initdb $db_user -p $db_pwd -s $(readlink -e ../sources/SQL/mysql.initial.sql) -sudo yunohost app setting roundcube mysqlpwd -v $db_pwd - -# Copy files to the right place -final_path=/var/www/roundcube -sudo mkdir -p $final_path -sudo cp -a ../sources/* $final_path -sudo cp ../conf/main.inc.php $final_path/config/ -sudo cp ../conf/db.inc.php $final_path/config/ -sudo mv $final_path/plugins/managesieve/config.inc.php.dist $final_path/plugins/managesieve/config.inc.php - -# Change variables in Roundcube configuration -sudo sed -i "s/rcmail-ynhDESkeyTOchange/$deskey/g" $final_path/config/main.inc.php -sudo sed -i "s/yunouser/$db_user/g" $final_path/config/db.inc.php -sudo sed -i "s/yunopass/$db_pwd/g" $final_path/config/db.inc.php -sudo sed -i "s/yunobase/$db_user/g" $final_path/config/db.inc.php - -# Set permissions to roundcube directory -sudo chown -R www-data: $final_path - -# Modify Nginx configuration file and copy it to Nginx conf directory -sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf -sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf -sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/roundcube.conf - -# Reload Nginx and regenerate SSOwat conf -sudo service nginx reload -sudo yunohost app ssowatconf -``` +Des exemples de ces scripts sont disponibles dans l'[application d'exemple](https://github.com/YunoHost/example_ynh/tree/master/scripts) ### Utilisation Vous devez tout mettre dans le script d’`install` pour que votre application soit entièrement installée. Cela signifie que vous devez installer les dépendances, créer les répertoires requis, initialiser les bases de données nécessaires, copier les sources et configurer tout dans l’unique script `install` (et bien sûr faire la procédure inverse dans le script `remove`). -**Attention** : pour des raisons de sécurité, le script est exécuté en tant qu’**admin** dans YunoHost. Assurez-vous de l’essayer en tant qu’**admin** et de préfixer `sudo` aux commandes requises. \ No newline at end of file +Il est possible d'utiliser des helpers et d'importer une librairie de fonction par exemple depuis un fichier `_common.sh`. + +### Variables disponibles pour tous ces scripts +#### YNH_CWD +Cette variable contient le chemin du répertoire de travail courant du contexte d'exécution du script. Elle peut être utile pour retrouver le chemin initial si on s'est déplacé pendant l'exécution du script. Elle est utilisée par certains helpers pour être sûr d'utiliser le bon. + +#### YNH_APP_ID +Contient l'identifiant de l'application sans le numéro d'instance + +Exemple: strut +#### YNH_APP_INSTANCE_NAME +Contient le nom d'instance qui sera utilisé dans de nombreuses situation pour pouvoir gérer l'installation multiple d'une même app. + +Exemple: strut__3 +#### YNH_APP_INSTANCE_NUMBER +Contient le numéro de l'instance. Attention il ne s'agit pas forcément du nombre d'instance toujours installée, car une ancienne application peut avoir été désinstallée. + +Exemple: 3 + +### Variables spécifiques pour `install` +#### YNH_APP_ARG_XXXXXXX +Pour chaque question posée lors de l'installation, une variable d'environnement est disponible. + +Par exemple, si dans le manifest nous avons une question de cette forme +```json +{ + "name": "domain", + "type": "domain", + "ask": { + "en": "Choose a domain for OpenSondage", + "fr": "Choisissez un nom de domaine pour OpenSondage", + "de": "Wählen Sie bitte einen Domain für OpenSondage" + }, + "example": "domain.org" +} +``` + +Le nom de la question `domain` donc dans le script on peut accéder à cette variable via $YNH_APP_ARG_DOMAIN. L'usage est de créer une variable plus courte comme ceci: + +```bash +domain=$YNH_APP_ARG_DOMAIN +``` + +### Variables spécifiques pour `change_url` +#### YNH_APP_OLD_DOMAIN +L'ancien domaine où était installée l'app. + +#### YNH_APP_OLD_PATH +L'ancien chemin où était installée l'app. + +#### YNH_APP_NEW_DOMAIN +Le nouveau domaine où doit être installée l'app. + +#### YNH_APP_NEW_PATH +Le nouveau chemin où doit être installée l'app. diff --git a/packaging_apps_start.md b/packaging_apps_start.md new file mode 100644 index 00000000..2b1257f0 --- /dev/null +++ b/packaging_apps_start.md @@ -0,0 +1,65 @@ +# Introduction to packaging + +This documentation is here is to provide all the basic concepts and vocabulary needed to understand app packaging. eg: shell, parsing, system administration... + +We will detail what is a Yunohost application package, how it works, how to make your own package and how to find help if you need it. + +## What is a Yunohost application package + +Before we continue, we need to define what is exactly an application package. + +To be able to do that, we need to remember that Yunohost at its core is a server operating system whose mission is to simplify selfhosting of internet services. To accomplish that, Yunohost provides, among other things, an administration panel allowing application installation in a few clicks. + +If you have ever installed a web application manually, you already know that the process is in reality far more complex, usually involving a lot of steps and discipline. + +This is what application packaging is, a serie of scripts that automate the installation of a web application and its configuration in order to provide the final user with a few clicks installation process. + +### How it works + +From the final user perspective, it is as simple as it can be: +1) Pick an application +1) Fill a form +1) Wait +1) Application is ready to use + +There is more to see backstage: +First, when the application is selected, Yunohost will retrieve the corresponding package from github. eg: [Custom Webapp](https://github.com/YunoHost-Apps/my_webapp_ynh). +Then, Yunohost will read the manifest.json file to know what questions to ask the user through the form. + +These seamingly trivial questions are very important. Usually you would need to ask for the domain on which to install, the path to access, the user that will be designated administrator and the default language for the application. + +These are critical to configure appropriately the web application during the installation process. To do so, Yunohost will retrieve the answers given by the user and send them to the installation script located in the package "*scripts*" folder. + +The install script will handle the user answers to complete the process as you would have done manually. + +If the user wants to delete the application, Yunohost will use the remove script from the "*scripts*" folder. It will handle the cleaning process for the user and delete all folders and configuration files that was previsouly installed by the application. + +### What is a script + +Scripts used during application packaging are simply a serie of bash commands. + +### ... bash command? + +A [bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) command is a line of text that will be interpreted by the computer and will produce a result. This is commonly refered to a command line. + +You only can interact with your server through command line as it does not provide a graphical interface. Usual access is through [ssh](/ssh_en). + +Package scripts are therefore a serie of bash commands as if you had typed them directly in the ssh console. + +To know what you can write in a bash script, you should start reading this [simple tuto](https://debian-facile.org/doc:programmation:shells:debuter-avec-les-scripts-shell-bash) or this [more advanced one](http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/index.html). + +### Ok, I'm good ! Where do I start? + +Before starting the packaging process, you need to successfully install the application. The script will only perform what you instruct him to do. + +Once completed, you need to read a little bit more documentation about application packaging. [This one is more technical](/packaging_apps_en) but now you should understand all the wizardry. + +### HELP! NEED BACKUP! + +Fortunately, you are not alone in this! + +There is other packagers like you and you can meet them on the [forum](https://forum.yunohost.org/c/apps-packaging) or the [chat](xmpp:apps@conference.yunohost.org?join). + +Feel free to join in and ask your questions, there always will be someone to help. + +Soon enough you'll see for yourself that packaging applications is not that hard after all. diff --git a/packaging_apps_start_fr.md b/packaging_apps_start_fr.md index 673fa008..cb64df10 100644 --- a/packaging_apps_start_fr.md +++ b/packaging_apps_start_fr.md @@ -30,7 +30,7 @@ Le script install va se charger d'installer l'application, en prenant en compte Si par la suite l'utilisateur souhaite supprimer l'application, YunoHost utilisera le script remove du dossier script, qui se chargera à la place de l'utilisateur de supprimer l'application, ses dossiers et tout ses fichiers de configuration. -### Qu'il y a-t-il dans ces scripts pour que tout soit si simple pour l'utilisateur ? +### Qu'y a-t-il dans ces scripts pour que tout soit si simple pour l'utilisateur ? Les scripts d'un package d'application sont simplement des commandes bash les unes à la suite des autres. diff --git a/packaging_apps_virtualbox_fr.md b/packaging_apps_virtualbox_fr.md index 85f01ff5..823fdace 100644 --- a/packaging_apps_virtualbox_fr.md +++ b/packaging_apps_virtualbox_fr.md @@ -1,6 +1,6 @@ # Créer un environnement de développement avec VirtualBox -Ce page de documentation va vous expliquer comment mettre en place un serveur YunoHost virtuel, avec VirtualBox, pour travailler sur le packaging d'application. +Cette page de documentation va vous expliquer comment mettre en place un serveur YunoHost virtuel, avec VirtualBox, pour travailler sur le packaging d'application. ## Pourquoi utiliser VirtualBox plutôt qu’un serveur YunoHost de production pour packager une application ? @@ -42,7 +42,7 @@ Arrêtez la machine virtuelle avant tout. La gestion des instantanés se fait dans l'onglet "Instantanés" -Et on créer un premier instantané +Et on crée un premier instantané À présent on peut commencer à travailler sur la machine virtuelle et créer autant d'instantanés que souhaité pour jalonner le travail. diff --git a/port_forwarding.md b/port_forwarding.md new file mode 100644 index 00000000..c24f5542 --- /dev/null +++ b/port_forwarding.md @@ -0,0 +1,6 @@ +# Port forwarding + +The sketch below tries to briefly summarize the role and necessity of port +forwarding when setting up a server at home. + + diff --git a/port_forwarding_fr.md b/port_forwarding_fr.md new file mode 100644 index 00000000..1793b27b --- /dev/null +++ b/port_forwarding_fr.md @@ -0,0 +1,6 @@ +# Redirection de ports + +Le schéma ci-dessous tente d'expliquer brièvement le rôle de la redirection des +ports lors de la mise en place d'un serveur à la maison. + + diff --git a/postinstall.md b/postinstall.md index ca60982b..35246f63 100644 --- a/postinstall.md +++ b/postinstall.md @@ -4,7 +4,7 @@ The step called "**post-installation**" is actually the initial configuration of ## Access -You can access it graphically by entering your **server's local IP** address in a **web browser** (e.g. `http://192.168.1.7`). +You can access it graphically by entering your **server's local IP** address in a **web browser** (e.g. `http://192.168.1.7`; you'll get this from the client table on your router's admin page). @@ -14,7 +14,7 @@ You can access it graphically by entering your **server's local IP** address in Or by running `yunohost tools postinstall` in command-line. - +

Preview of the command-line post-installation

@@ -26,7 +26,7 @@ Or by running `yunohost tools postinstall` in command-line. This is the first domain name linked to your YunoHost server, but also the one which will be used by your server's users to access the **authentication portal**. It will thus be **visible by everyone**, choose it wisely. -* If you do not have a domain name, or if you want to use the YunoHost's DynDNS service, choose a sub-domain of **.nohost.me** or **.noho.st** (i.e. `homersimpson.nohost.me`). The domain will be configured automatically and you won't need any further configuration step. +* If you do not have a domain name, or if you want to use the YunoHost's DynDNS service, choose a sub-domain of **.nohost.me** or **.noho.st** (e.g. `homersimpson.nohost.me`). The domain will be configured automatically and you won't need any further configuration step. * If you do know what **DNS** is, you probably want to configure your own domain name here. In this case, please refer to the [DNS page](/dns) page for more informations. @@ -40,16 +40,22 @@ This password will be used to access to your server's [administration interface] --- -## Troubleshooting +## Congratz! -### Secured connection fails after **post-installation** +If you got so far and saw 'YunoHost has been successfully installed' (web +postinstall) or 'YunoHost has been correctly configured', then congratulations! -If you're using your own domain and depending on your browser, you might be stuck out of your Yunohost installation until you deploy an appropriate certificate. Thanks to Yunohost and [Let's Encrypt](https://letsencrypt.org/), this proves to be quite easy: just run `yunohost domain cert-install` in command-line to issue and install your certificate and _Voilà_. Refresh your browser and you're good to go. +### What now ? ---- +- If you're self-hosting at home and without a VPN, you need to [make sure to + correctly forward ports on your router/Internet box](isp_box_config) ; +- If you're using your own domain name (i.e. not a .nohost.me / .noho.st), you + need to [configure it according to the recommended DNS + configuration](dns_config) ; +- If you cannot configure your domain name yet (because you didn't register it + yet, or because this is a test domain), see last paragraph + [here](dns_local_network) for a workaround ; +- Don't be too afraid of the [certificate warning](certificate), you'll probably + be able to install a Let's Encrypt certificate :). +- Have a look at [the available apps](apps) ! -## And after ? - -Once the post-installation finished, check if you can access to your server with your web-browser. If it is not the case, a few more configuration steps may be required. - -Do not hesitate to come on our [support chatroom](/support) if you need help. diff --git a/postinstall_fr.md b/postinstall_fr.md index b6a5d88f..f2beebcc 100644 --- a/postinstall_fr.md +++ b/postinstall_fr.md @@ -17,7 +17,7 @@ Vous pouvez accéder à la post-installation graphique en entrant dans un naviga Vous pouvez aussi y accéder en entrant la commande `yunohost tools postinstall` directement sur le serveur ou en SSH. - + *

Aperçu de la post-installation en ligne de commande

* @@ -46,16 +46,24 @@ De manière générale, c’est la **clé d’entrée à votre système**, pense --- -## En cas de problème +## Félicitations ! -### Échec de la connection sécurisée après la **post-installation** +Si vous arrivez ici après avoir vu "YunoHost a été installé avec succès" depuis +votre navigateur ou la ligne de commande, alors félicitations ! -Si vous utilisez votre propre domaine et selon votre navigateur, vous pourriez vous retrouver bloqué à l'entrée de votre Yunohost tant que vous n'avez pas déployé un certificat valide. Grâce à Yunohost et [Let's Encrypt](https://letsencrypt.org/), c'est plutôt simple : exécutez simplement `yunohost domain cert-install` en ligne de commande pour émettre et installer votre certificat et _Voilà_. Rafraichissez votre navigateur et vous êtes paré. +### Et maintenant ? ---- +- Si vous vous auto-hébergez à la maison et sans VPN, il faut vous assurer + de bien [rediriger les ports de votre box internet](isp_box_config_fr) ; +- Si vous utilisez votre propre nom de domaine (i.e. pas un nohost.me / + noho.st), il vous faut [configurer le nom de domaine d'après la configuration + recommandée](dns_config_fr) ; +- Si vous ne pouvez pas configurer le nom de domaine pour le moment (parce qu'il + n'est pas encore acheté, ou parce que c'est un domaine de test), vous pouvez + contourner temporairement le problème avec les instructions du dernier + paragraphe [ici](dns_local_network_fr) ; +- Ne soyez pas trop effrayé par [l'avertissement à propos du + certificat](certificate_fr), vous aurez probablement la possibilité + d'installer un certificat Let's Encrypt :). +- Jetez un oeil aux [applications disponibles](apps_fr) ! -## Et après ? - -Une fois l’étape de post-installation exécutée, vérifiez que votre serveur est accessible en tapant le nom de domaine choisi précédemment dans votre navigateur web. Si celui-ci n’est pas accessible, quelques étapes de configurations supplémentaires sont sûrement nécessaires. - -Rendez-nous visite sur le [salon de support](/support_fr) si vous avez besoin d’aide. diff --git a/regenerate_certificate.md b/regenerate_certificate.md deleted file mode 100644 index 44577685..00000000 --- a/regenerate_certificate.md +++ /dev/null @@ -1,47 +0,0 @@ -# Regenerate certificate - -If you want to generate again -- not renewing -- a certificate for a domain, you can follow those steps: - -(replace **example.org** with your domain) - -```bash -# Save YunoHost's SSL directory location for readability -ssldir=/usr/share/yunohost/yunohost-config/ssl/yunoCA - -# Save the final SSL path (do not forget to change your domain) -finalpath=/etc/yunohost/certs/example.org - -# Save the serial number of the new certificate -serial=$(cat "$ssldir/serial") - -# Backup current certificates for your domain -cp -a $finalpath $finalpath.back - -# Remove certs and configuration file in it -rm $finalpath/{crt.pem,key.pem,openssl.cnf} - -# Copy openSSL's configuration file -cp $ssldir/openssl.cnf $finalpath/ - -# Change yunohost.org with your domain in the configuration -# DO NOT FORGET TO REPLACE example.org ! -sed -i "s/yunohost.org/example.org/g" $finalpath/openssl.cnf - -# Generate certificate and key -openssl req -new -config $finalpath/openssl.cnf -days 3650 -out $ssldir/certs/yunohost_csr.pem -keyout $ssldir/certs/yunohost_key.pem -nodes -batch - -# Sign certificate with your server's CA -openssl ca -config $finalpath/openssl.cnf -days 3650 -in $ssldir/certs/yunohost_csr.pem -out $ssldir/certs/yunohost_crt.pem -batch - -# Copy certificate and key to the right place -cp $ssldir/newcerts/$serial.pem $finalpath/crt.pem -cp $ssldir/certs/yunohost_key.pem $finalpath/key.pem - -# Fix permissions -chmod 755 $finalpath -chmod 640 $finalpath/key.pem $finalpath/crt.pem -chmod 600 $finalpath/openssl.cnf - -# Allow metronome to access those certificates -chown root:metronome $finalpath/key.pem $finalpath/crt.pem -``` \ No newline at end of file diff --git a/regenerate_certificate_fr.md b/regenerate_certificate_fr.md deleted file mode 100644 index 7243dec7..00000000 --- a/regenerate_certificate_fr.md +++ /dev/null @@ -1,47 +0,0 @@ -#Régénérer un certificat - -Si vous désirez générer à nouveau — et non renouveler — un certificat pour un domain, suivre les étapes suivantes : - -(remplacer **example.org** avec votre domaine) - -```bash -# Sauvegarde du répertoire SSL de YunoHost, pour la lisibilité -ssldir=/usr/share/yunohost/yunohost-config/ssl/yunoCA - -# Sauvegarde du chemin final SSL (ne pas oublier de modifier avec votre domaine) -finalpath=/etc/yunohost/certs/example.org - -# Sauvegarde du numéro de série du nouveau certificat -serial=$(cat "$ssldir/serial") - -# Sauvegarde du certificat actuel du domaine -cp -a $finalpath $finalpath.back - -# Suppression des certificats et des fichiers de configuration -rm $finalpath/{crt.pem,key.pem,openssl.cnf} - -# Copie du fichier de configuration d’openSSL -cp $ssldir/openssl.cnf $finalpath/ - -# Changement de la configuration yunohost.org avec votre domaine -# NE PAS OUBLIER DE REMPLACER example.org ! -sed -i "s/yunohost.org/example.org/g" $finalpath/openssl.cnf - -# Generation du certificat et de la clé -openssl req -new -config $finalpath/openssl.cnf -days 3650 -out $ssldir/certs/yunohost_csr.pem -keyout $ssldir/certs/yunohost_key.pem -nodes -batch - -# Signature du certificat avec le CA du serveur -openssl ca -config $finalpath/openssl.cnf -days 3650 -in $ssldir/certs/yunohost_csr.pem -out $ssldir/certs/yunohost_crt.pem -batch - -# Copie du certificat et de la clé au bon endroit -cp $ssldir/newcerts/$serial.pem $finalpath/crt.pem -cp $ssldir/certs/yunohost_key.pem $finalpath/key.pem - -# Réparation des permissions -chmod 755 $finalpath -chmod 640 $finalpath/key.pem $finalpath/crt.pem -chmod 600 $finalpath/openssl.cnf - -# Autoriser metronome à accéder aux certificats -chown root:metronome $finalpath/key.pem $finalpath/crt.pem -``` \ No newline at end of file diff --git a/roadmap.md b/roadmap.md deleted file mode 100644 index ec5f92df..00000000 --- a/roadmap.md +++ /dev/null @@ -1,26 +0,0 @@ -# Roadmap - -2.0 2.2 Roadmap - -## v2.4 -Core: -* ✔ Helpers for app maintainer *(ju, opi, jerome)* -* ✔ Install script refactored *(ju)* -* ✔ Use templates to (re)generate configurations instead of packages *(kload, beudbeud, jerome)* -* ✔ Complete and improve backup and restore system *(jerome, ljf)* -* Logging bug on SSOwat when no HTTP referer is sent -* Add tools in moulinette to manage certificate (add, remove, update), Let’s Encrypt *(ljf, Moul)* -* Run automatic tests on moulinette *(kload)* -* Add proper upgrade/remove scripts and comment Debian scripts in packages *(beudbeud)* -* Replace amavis by rspamd *(jerome)* - -Web interface: -* ✔ Use Gulp for administration and user web interfaces *(opi)* -* User avatar *(opi)* -* Plugin system for the admin panel *(ljf)* - -Applications: -* ✔ New way to [manage apps list](http://github.com/YunoHost/apps) - -Other: -* ✔ Add licenses on YunoHost repositories *(Moul)* \ No newline at end of file diff --git a/security.md b/security.md index f571914f..5ba71f0f 100644 --- a/security.md +++ b/security.md @@ -8,7 +8,7 @@ Two things remain important to note: * The fact that YunoHost is a well-spread software increase chances to face an attack. If a flaw is discovered, it could potentially affect all the YunoHost instances at once. Keep your system **up-to-date** to remain safe. -*If you need some advises, do not hesitate to [ask us](/support).* +*If you need some advices, do not hesitate to [ask us](/help).* *To talk about security flaws, contact the [YunoHost security team](/security_team).* @@ -41,7 +41,9 @@ PasswordAuthentication no ``` Save and restart SSH daemon. - +```bash +systemctl restart ssh +``` --- ### Modify SSH port @@ -52,19 +54,27 @@ To prevent SSH connection attempts by robots that scan the Internet for any atte ```bash nano /etc/ssh/sshd_config - -# Search line "Port" and remplace port number (by default 22) by another not used number +``` +**Search line "Port" and replace** port number (by default 22) by another not used number +```bash +# What ports, IPs and protocols we listen for Port 22 # to replace by 9777 for example ``` -Save and restart SSH daemon. +**Open the port** in firewall (you can use -6 option to limit forbid ipv4 connexion) +```bash +yunohost firewall allow TCP 9777 +``` +Save and restart SSH daemon. Switch over to the new port by restarting SSH. +```bash +systemctl restart ssh +``` Then restart the iptables firewall and close the old port in iptables. ```bash yunohost firewall reload yunohost firewall disallow # port by default 22 -yunohost firewall disallow --ipv6 TCP # for ipv6 ``` **For the next SSH connections ** you need to add the `-p` option followed by the SSH port number. @@ -92,7 +102,7 @@ sudo adduser user_name Choose a strong password, since it is the user who will be responsible to obtain root privileges. Add the user to sudo group so just to allow him to perform maintenance tasks that require root privileges. ```bash -sudo adduser user_namesudo +sudo adduser user_name sudo ``` Now, change the SSH configuration to allow the new user to connect. @@ -106,11 +116,13 @@ AllowUsers user_name Only users listed in the AllowUsers directive will then be allowed to connect via SSH, which excludes the admin user. Save and restart SSH daemon. - +```bash +systemctl restart ssh +``` --- ### Disable YunoHost API -YunoHost administration is accessible through an **HTTP API**, served on the 6787 port by default. It can be used to administrate a lot of things on your server, thus to break many things between malicious hands. The best thing to do, if you know how to use the [command-line interface](/moulinette), is to deactivate the `yunohost-api` service. +YunoHost administration is accessible through an **HTTP API**, served on the 6787 port by default. It can be used to administrate a lot of things on your server, thus to break many things between malicious hands. The best thing to do, if you know how to use the [command-line interface](/commandline), is to deactivate the `yunohost-api` service. ```bash sudo service yunohost-api stop diff --git a/security_fr.md b/security_fr.md index bc0d00da..5c07a744 100644 --- a/security_fr.md +++ b/security_fr.md @@ -1,19 +1,19 @@ -# Securité +# Sécurité YunoHost a été développé dans l’optique de fournir une sécurité maximale tout en restant accessible et facilement installable. Tous les protocoles que YunoHost utilise sont **chiffrés**, les mots de passe ne sont pas stockés en clair, et par défaut chaque utilisateur n’accède qu’à son répertoire personnel. -Deux points sont néanmoins importants à noter : +Deux points sont néanmoins importants à noter : * L’installation d’applications supplémentaires **augmente le nombre de failles** potentielles. Il est donc conseillé de se renseigner sur chacune d’elle **avant l’installation**, d’en comprendre le fonctionnement et juger ainsi l’impact que provoquerait une potentielle attaque. N’installez **que** les applications qui semblent importantes pour votre usage. * Le fait que YunoHost soit un logiciel répandu augmente les chances de subir une attaque. Si une faille est découverte, elle peut potentiellement **toucher toutes les instances YunoHost** à un temps donné. Nous nous efforçons de corriger ces failles le plus rapidement possible, pensez donc à **mettre à jour régulièrement** votre système. -*Si vous avez besoin de conseil, n’hésitez pas à [nous demander](/support_fr).* +*Si vous avez besoin de conseil, n’hésitez pas à [nous demander](/help_fr).* -*Pour discuter d'une faille de securité, contactez l'[équipe securité de YunoHost](/security_team_fr).* +*Pour discuter d'une faille de sécurité, contactez l'[équipe sécurité de YunoHost](/security_team_fr).* --- @@ -21,7 +21,7 @@ Deux points sont néanmoins importants à noter : Si votre serveur YunoHost est dans un environnement de production critique ou que vous souhaitez améliorer sa sécurité, il est bon de suivre quelques bonnes pratiques. -**Attention :** *l’application des conseils suivants nécessite une connaissance avancée du fonctionnement et de l’administration d’un serveur. Pensez à vous renseigner avant de procéder à cette mise en place.* +**Attention :** *l’application des conseils suivants nécessite une connaissance avancée du fonctionnement et de l’administration d’un serveur. Pensez à vous renseigner avant de procéder à cette mise en place.* ### Authentification SSH par clé @@ -29,17 +29,19 @@ Voici un [tutoriel plus détaillé](http://doc.ubuntu-fr.org/ssh#authentificatio Par défaut, l’authentification SSH se fait avec le mot de passe d’administration. Il est conseillé de désactiver ce type d’authentification et de le remplacer par un mécanisme de clé de chiffrement. -**Sur votre ordinateur de bureau :** +**Sur votre ordinateur de bureau :** ```bash ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub ``` +
+Si vous êtes sur Ubuntu 16.04 vous devez faire `ssh-add` pour initialiser l'agent ssh +
Entrez le mot de passe d’administration et votre clé publique devrait être copiée sur votre serveur. **Sur votre serveur**, éditez le fichier de configuration SSH, pour désactiver l’authentification par mot de passe. - ```bash nano /etc/ssh/sshd_config @@ -48,6 +50,9 @@ PasswordAuthentication no ``` Sauvegardez et relancez le démon SSH. +```bash +systemctl restart ssh +``` --- @@ -59,24 +64,36 @@ Pour éviter des tentatives de connexion SSH par des robots qui scannent tout In ```bash nano /etc/ssh/sshd_config +``` -# Recherchez la ligne « Port » et remplacez le numéro du port (par défaut 22) par un autre numéro non utilisé +**Recherchez la ligne « Port »** et remplacez le numéro du port (par défaut 22) par un autre numéro non utilisé + +```bash Port 22 # à remplacer par exemple par 9777 ``` +**Ouvrez le port** choisi dans le parefeu (vous pouvez utiliser l'option -6 pour interdire la connexion via ipv4) + +```bash +yunohost firewall allow TCP +``` + Sauvegardez et relancez le démon SSH. +```bash +systemctl restart ssh +``` + Ensuite redémarrez le firewall iptables et fermez l’ancien port dans iptables. ```bash yunohost firewall reload -yunohost firewall disallow # port par défaut 22 -yunohost firewall disallow --ipv6 TCP # pour ipv6 +yunohost firewall disallow TCP # port par défaut 22 ``` **Pour les prochaines connexions SSH** il faudra ajouter l’option -p suivie du numéro de port SSH. -**Exemple** : +**Exemple** : ```bash ssh -p admin@ @@ -107,18 +124,21 @@ sudo adduser nom_utilisateur sudo ```bash sudo nano /etc/ssh/sshd_config -# Recherchez le paragraphe « Authentication » et ajoutez à la fin de celui-ci : +# Recherchez le paragraphe « Authentication » et ajoutez à la fin de celui-ci : AllowUsers nom_utilisateur ``` Seuls les utilisateurs mentionnés dans la directive AllowUsers seront alors autorisés à se connecter via SSH, ce qui exclut donc l’utilisateur admin. Sauvegardez et relancez le démon SSH. +```bash +systemctl restart ssh +``` --- ### Désactivation de l’API YunoHost -YunoHost est administrable via une **API HTTP**, servie sur le port 6787 par défaut. Elle permet d’administrer une grande partie de votre serveur, et peut donc être utilisée à des **fins malveillantes**. La meilleure chose à faire si vous êtes habitués aux lignes de commande est de désactiver le service `yunohost-api`, et **utiliser la [moulinette](/moulinette_fr)** en SSH. +YunoHost est administrable via une **API HTTP**, servie sur le port 6787 par défaut. Elle permet d’administrer une grande partie de votre serveur, et peut donc être utilisée à des **fins malveillantes**. La meilleure chose à faire si vous êtes habitués aux lignes de commande est de désactiver le service `yunohost-api`, et **utiliser la [ligne de commande](/commandline_fr)** en SSH. ```bash sudo service yunohost-api stop @@ -126,7 +146,7 @@ sudo service yunohost-api stop ### Tests d’intrusion de YunoHost -Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur une instance de YunoHost 2.4 : +Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur une instance de YunoHost 2.4 : - [1) Préparation](https://exadot.fr/2016/07/03/pentest-dune-instance-yunohost-1-preparation) - [2) Le fonctionnement](https://exadot.fr/2016/07/12/pentest-dune-instance-yunohost-2-le-fonctionnement) diff --git a/security_team_fr.md b/security_team_fr.md index 7340fc2e..a3ae1720 100644 --- a/security_team_fr.md +++ b/security_team_fr.md @@ -1,6 +1,6 @@ -# Équipe securité +# Équipe sécurité -Contactez l'équipe securité par email : `security@yunohost.org`. +Contactez l'équipe sécurité par email : `security@yunohost.org`. Nous vous recommandons fortement de chiffrer votre mail avec GPG. Notre clé publique est disponible sur les serveurs de clés. L'empreinte est ci-dessous : @@ -13,4 +13,4 @@ uid YunoHost Security sub 4096R/446838AF 2016-07-01 ``` -Voyez https://gist.github.com/opi/4496024dc3ff29ab2e068fd57092ab7c et https://twitter.com/yunohost/status/748975105393459200 pour d'autres empreintes de confiance \ No newline at end of file +Voyez https://gist.github.com/opi/4496024dc3ff29ab2e068fd57092ab7c et https://twitter.com/yunohost/status/748975105393459200 pour d'autres empreintes de confiance diff --git a/selfhosting.md b/selfhosting.md index 4a7aa084..83441b95 100644 --- a/selfhosting.md +++ b/selfhosting.md @@ -23,17 +23,21 @@ If you use the [email system](email_en) and your server becomes unavailable, ema #### Others Self-hosting projects -- [ArkOS](https://arkos.io) +##### Under active development - [Cloudron](https://cloudron.io) - [Cozy](https://cozy.io) - [FreedomBox](https://wiki.debian.org/FreedomBox) -- [Host@home](http://yeuxdelibad.net/Programmation/Hostathome.html) - [Libre.sh](https://github.com/indiehosters/libre.sh) - [Puffin](http://puffin.rocks) - [Sandstorm](https://sandstorm.io/) - [Sovereign](https://github.com/al3x/sovereign) - [UBOS](http://ubos.net) +##### Unmaintained +- [ArkOS](http://web.archive.org/web/20170603213149/https://arkos.io/) +- [Host@home](http://web.archive.org/web/20160206150730/http://yeuxdelibad.net/Programmation/Hostathome.html) + + #### Learn more * [Decentralized Web Summit](http://www.decentralizedweb.net/) * [Feudal Security](https://www.schneier.com/blog/archives/2012/12/feudal_sec.html) Bruce Schneier, famous security expert exposes the risks of a centralized web and the importance of civic action. diff --git a/selfhosting_fr.md b/selfhosting_fr.md index bae9ff39..1d3af99b 100644 --- a/selfhosting_fr.md +++ b/selfhosting_fr.md @@ -1,4 +1,4 @@ -#L’auto-hébergement +# L’auto-hébergement #### Définition L’**auto-hébergement** consiste à héberger chez soi son serveur, ses données et ses services. @@ -25,17 +25,21 @@ Si vous vous servez du système de [courrier électronique](/email_fr), et que v #### Autres projets d’auto-hébergement -- [ArkOS](https://arkos.io) +##### En développement - [Cloudron](https://cloudron.io) - [Cozy](https://cozy.io) - [FreedomBox](https://wiki.debian.org/FreedomBox) -- [Host@home](http://yeuxdelibad.net/Programmation/Hostathome.html) - [Libre.sh](https://github.com/indiehosters/libre.sh) - [Puffin](http://puffin.rocks) - [Sandstorm](https://sandstorm.io/) - [Sovereign](https://github.com/al3x/sovereign) - [UBOS](http://ubos.net) +##### Non maintenu +- [ArkOS](http://web.archive.org/web/20170603213149/https://arkos.io/) +- [Host@home](http://web.archive.org/web/20160206150730/http://yeuxdelibad.net/Programmation/Hostathome.html) + + #### Pour aller plus loin * [Auto-hebergement.fr](http://www.auto-hebergement.fr/) * [Conférence de Benjamin Bayart - Internet libre, ou Minitel 2.0 ?](http://www.fdn.fr/internet-libre-ou-minitel-2.html) diff --git a/selfhosting_ru.md b/selfhosting_ru.md new file mode 100644 index 00000000..07881197 --- /dev/null +++ b/selfhosting_ru.md @@ -0,0 +1,43 @@ +#Самостоятельное развертывание (свой хостинг) + +#### Значение +**Свой хостинг** - это сервер, расположенный у вас дома и предназначенный для размещения информации для личных нужд. + +#### Обязанности администратора +Свой хостинг создает для вас определенные обязанности, если вы хотите разместить на нём сайт, [e-mail](email_en), а также запустить [систему мгновенных сообщений](XMPP), ваш сервер должен работать и оставаться онлайн 24/7. + +Распространенные проблемы, по причине которых сервер может быть недоступен включают в себя: отсутствие электроэнергии, потеря доступа к Интернету, итд. + +К примеру, если вы используете [e-mail](email_en) и ваш сервер по какой-то причине становится недоступен, отправленные на него сообщения будут отправлены снова только по прошествии от 3 до 7 дней. + +#### Минусы своего хостинга +* Медленная передача данных. При использовании ADSL, скорость загрузки составляет 1/10 от скорости закачки. К примеру при скорости загрузки 1Мб/с скорость загрузки будет около 100Кб/с; +* Сервер должен быть доступен 24/7; +* Перенос данных; + +#### Плюсы своего хостинга +* Анонимность, приватность; +* Вы - единственный хозяин ваших данных и сервисов; +* Возможность децентрализации и использования распределенных сетей; + + + +#### Другие проекты, предназначенные для самостоятельного развертывания +##### В активной разработке +- [Cloudron](https://cloudron.io) +- [Cozy](https://cozy.io) +- [FreedomBox](https://wiki.debian.org/FreedomBox) +- [Libre.sh](https://github.com/indiehosters/libre.sh) +- [Puffin](http://puffin.rocks) +- [Sandstorm](https://sandstorm.io/) +- [Sovereign](https://github.com/al3x/sovereign) +- [UBOS](http://ubos.net) + +##### Неподдерживаемые +- [ArkOS](http://web.archive.org/web/20170603213149/https://arkos.io/) +- [Host@home](http://web.archive.org/web/20160206150730/http://yeuxdelibad.net/Programmation/Hostathome.html) + + +#### Узнать больше +* [Decentralized Web Summit](http://www.decentralizedweb.net/) +* [Feudal Security](https://www.schneier.com/blog/archives/2012/12/feudal_sec.html) Bruce Schneier, famous security expert exposes the risks of a centralized web and the importance of civic action. diff --git a/shell_variables_scope.md b/shell_variables_scope.md new file mode 100644 index 00000000..aba9d163 --- /dev/null +++ b/shell_variables_scope.md @@ -0,0 +1,219 @@ +### General scope of variables + +Variables exists for the current shell and its children only. +Another script executed from the script is not a child, it's another shell which herited only the environment variables from its caller script, not its globals or locals variables. + +When a script is called, it isn't started in the current shell, but in a new instance of bash which herite environment variables from its parent. +```bash +var1=value1 +export var2=value2 + +echo "$var1" +echo "$var2" +# var1 and var2 exist + +echo "-" + +echo " +echo \"\$var1\" +echo \"\$var2\"" > other_script.sh +chmod +x other_script.sh +./other_script.sh +# Here, var1 doesn't exist, only var2 still exists. +# Because it's an environment variable. +``` +In your current shell, where you launch this script, try +```bash +echo $var1 - $var2 +``` +None of this 2 variables exists, because their scope is limited to the script itself. Never its parent. + + +### Functions inside a script + +Use a function would not change the scope of variables. +```bash +var1=value1 +export var2=value2 + +set_variable () { + var3=value3 + export var4=value4 + + echo "$var1" + echo "$var2" + echo "$var3" + echo "$var4" + # All variables exists here + # Because the function inherite its variables from the script. +} + +set_variable + +echo "$var1" +echo "$var2" +echo "$var3" +echo "$var4" +# var1 var2, var3 and var4 exist +# var3 exist because the function is executed in the same shell than the script itself. + +echo "-" + +echo " +echo \"\$var1\" +echo \"\$var2\" +echo \"\$var3\" +echo \"\$var4\"" > other_script.sh +chmod +x other_script.sh +./other_script.sh +# Here, var1 and var3 don't exist, only var2 and var4 still exist. +# Because they're environment variables. +``` + +### The usage of locales variables + +Locales variables are limited to the function and its children. +```bash +var1=value1 +export var2=value2 + +set_variable () { + var3=value3 + export var4=value4 + local var5=value5 + + echo "$var1" + echo "$var2" + echo "$var3" + echo "$var4" + echo "$var5" + # All variables exists here + # Because the function inherite its variables from the script. +} + +set_variable + +echo "-" + +echo "$var1" +echo "$var2" +echo "$var3" +echo "$var4" +echo "$var5" +# var1 var2, var3 and var4 exist +# var3 exist because the function is executed in the same shell than the script itself. +# var5 doesn't exist, because its scope is limited to the function which declare it. + +echo "-" + +echo " +echo \"\$var1\" +echo \"\$var2\" +echo \"\$var3\" +echo \"\$var4\" +echo \"\$var5\"" > other_script.sh +chmod +x other_script.sh +./other_script.sh +# Here, var1, var3 and var5 don't exist, only var2 and var4 still exist. +# Because they're environment variables. +``` + +Using a local variable is usefull for limit it scope to the function only. And not bother the script in its globality with useless variables. +But there's also another advantage with local variable, do not modify the content of a global variable. +```bash +var1=value1 +var2=value2 +var3=value3 + +set_variable () { + echo "$var1" + echo "$var2" + echo "$var3" + + echo "-" + + var2=new_value2 + local var3=new_value3 + + echo "$var1" + echo "$var2" + echo "$var3" + # Values of var2 and var3 are modified in the function. +} + +set_variable + +echo "-" + +echo "$var1" +echo "$var2" +echo "$var3" +# var3 retake is original value, +# because in the function, var3 was declared as a new locale variable. +# But var2 was directly modified, so its value still changed. +# Because, var2 in the function is still a global variable. +``` + +As seen previously, modified or created variables in a function can affect the main script because the function is executed in the same shell. +But, the things are different if the function is executed in a sub shell, the function become a child which only inherite from its parent. +```bash +var1=value1 +var2=value2 +var3=value3 + +fonction2 () { + echo "-" + echo "var1=$var1" + echo "var2=$var2" + echo "var3=$var3" + echo "var4=$var4" + echo "var5=$var5" + # Even var3, which is local, is inherited from the parent function. +} + +set_variable () { + echo "var1=$var1" + echo "var2=$var2" + echo "var3=$var3" + # Variables are inherited from the parent. + + echo "-" + + var2=new_value2 + local var3=new_value3 + var4=new_value4 + export var5=new_value5 + + echo "var1=$var1" + echo "var2=$var2" + echo "var3=$var3" + echo "var4=$var4" + echo "var5=$var5" + # Values of var2 and var3 are modified in the function. + + (fonction2) +} + +(set_variable) +# Start the function in a sub shell. + +echo "-" + +echo "var1=$var1" +echo "var2=$var2" +echo "var3=$var3" +echo "var4=$var4" +echo "var5=$var5" +# var2 and var3 retake their original values. +# Because the function is in a child shell which never affect its parent. +# Likewise, var4 and var5 don't exist, because they're been declared in child shell. +# The parent never inherite from its children shell. +``` + +### Conclusion + +- The scope of a variable is always the current shell and its children, never its parent shell. +- An environment variable may be exported to a new shell, detached from the first one. If the last one executed the second one. But, it can't affect the parents. +- A locale variable in a function, executed in the current shell, can't affect the environment outside of the function. End allow also to not affect a global variable with the same name. +- A function executed in a sub shell will never affect its parent, with global or local variables. +- A parent can NEVER be affected by variables defined or modified in its children shell. diff --git a/shell_variables_scope_fr.md b/shell_variables_scope_fr.md new file mode 100644 index 00000000..179f3252 --- /dev/null +++ b/shell_variables_scope_fr.md @@ -0,0 +1,219 @@ +### Portée générales des variables + +Les variables existent pour le shell courant et ses enfants uniquement. +Un script exécuté depuis le script n'est pas un enfant, c'est un autre shell qui n'héritera que des variables d'environnement du script appelant, pas des variables globales ou locales. + +Lors de l'appel d'un script, il n'est pas démarré dans le shell courant, mais dans une nouvelle instance de bash qui hérite des variables d'environnements de son parent. +```bash +var1=value1 +export var2=value2 + +echo "$var1" +echo "$var2" +# var1 et var2 existent + +echo "-" + +echo " +echo \"\$var1\" +echo \"\$var2\"" > other_script.sh +chmod +x other_script.sh +./other_script.sh +# Ici, var1 n'existe pas, seul var2 existe encore. +# Car c'est une variable d'environnement. +``` +Dans le shell courant, d'où le script est appelé, faite +```bash +echo $var1 - $var2 +``` +Aucune des 2 variables n'existent, car leur portée se limite au script appelé. Jamais au parent. + + +### Les fonctions dans un script + +Utiliser une fonction ne change pas la portée des variables. +```bash +var1=value1 +export var2=value2 + +set_variable () { + var3=value3 + export var4=value4 + + echo "$var1" + echo "$var2" + echo "$var3" + echo "$var4" + # Toutes les variables existent ici + # car la fonction hérite des variables du script. +} + +set_variable + +echo "$var1" +echo "$var2" +echo "$var3" +echo "$var4" +# var1 var2, var3 et var4 existent +# var3 existe car la fonction est exécutée dans le même shell que le script lui-même. + +echo "-" + +echo " +echo \"\$var1\" +echo \"\$var2\" +echo \"\$var3\" +echo \"\$var4\"" > other_script.sh +chmod +x other_script.sh +./other_script.sh +# Ici, var1 et var3 n'existent pas, seul var2 et var4 existe encore. +# Car ce sont des variables d'environnements. +``` + +### L'usage des variables locales + +Les variables locales sont limitées à une fonction et ses enfants +```bash +var1=value1 +export var2=value2 + +set_variable () { + var3=value3 + export var4=value4 + local var5=value5 + + echo "$var1" + echo "$var2" + echo "$var3" + echo "$var4" + echo "$var5" + # Toutes les variables existent ici + # car la fonction hérite des variables du script. +} + +set_variable + +echo "-" + +echo "$var1" +echo "$var2" +echo "$var3" +echo "$var4" +echo "$var5" +# var1 var2, var3 et var4 existent +# var3 existe car la fonction est exécutée dans le même shell que le script lui-même. +# var5 n'existe pas, car sa portée se limite à la fonction qui l'a déclaré + +echo "-" + +echo " +echo \"\$var1\" +echo \"\$var2\" +echo \"\$var3\" +echo \"\$var4\" +echo \"\$var5\"" > other_script.sh +chmod +x other_script.sh +./other_script.sh +# Ici, var1, var3 et var5 n'existent pas, seul var2 et var4 existe encore. +# Car ce sont des variables d'environnements. +``` + +L'intérêt d'utiliser une variable locale est donc de limiter cette variable à la seule fonction qui l'a déclaré. Et donc ne pas polluer le script dans sa globalité avec des variables inutile pour ce dernier. +Il existe également un second avantage à l'usage d'une variable locale, c'est de ne pas modifier le contenu d'une variable globale. +```bash +var1=value1 +var2=value2 +var3=value3 + +set_variable () { + echo "$var1" + echo "$var2" + echo "$var3" + + echo "-" + + var2=new_value2 + local var3=new_value3 + + echo "$var1" + echo "$var2" + echo "$var3" + # La valeurs de var2 et var3 sont modifiées dans la fonction +} + +set_variable + +echo "-" + +echo "$var1" +echo "$var2" +echo "$var3" +# var3 a repris sa valeur initiale, +# car dans la fonction var3 a été déclaré comme une nouvelle variable locale. +# Mais var2 a été modifiée directement, donc sa valeur reste modifiée. +# Car var2 dans la fonction est resté une variable globale. +``` + +Comme vu précédemment, les variables modifiée ou créée dans la fonction affecte le script car la fonction est exécutée dans le même shell que celui-ci. +Cela change si on exécute la fonction dans un sous-shell, la fonction devient un enfant qui hérite de son parent uniquement. +```bash +var1=value1 +var2=value2 +var3=value3 + +fonction2 () { + echo "-" + echo "var1=$var1" + echo "var2=$var2" + echo "var3=$var3" + echo "var4=$var4" + echo "var5=$var5" + # Même var3, qui est locale, est héritée par la fonction enfant. +} + +set_variable () { + echo "var1=$var1" + echo "var2=$var2" + echo "var3=$var3" + # Les variables sont héritées du parent. + + echo "-" + + var2=new_value2 + local var3=new_value3 + var4=new_value4 + export var5=new_value5 + + echo "var1=$var1" + echo "var2=$var2" + echo "var3=$var3" + echo "var4=$var4" + echo "var5=$var5" + # La valeurs de var2 et var3 sont modifiées dans la fonction + + (fonction2) +} + +(set_variable) +# Démarre la fonction dans un shell fils. + +echo "-" + +echo "var1=$var1" +echo "var2=$var2" +echo "var3=$var3" +echo "var4=$var4" +echo "var5=$var5" +# var2 et var3 ont repris leur valeurs initiales, +# Car la fonction est dans un shell enfant qui n'affecte pas son parent. +# De même, var4 et var5 n'existent pas, car elle sont déclarées dans un shell enfant. +# Le parent n'hérite pas des shells enfants. +``` + +### Conclusion + +- La portée d'une variable est toujours le shell courant et ses enfants, jamais son shell parent. +- Une variable d'environnement peut être exportée sur un nouveau shell, indépendant du premier. À condition que ce dernier exécute le second. Mais ne peut pas affecter les parents. +- Une variable locale dans une fonction, exécutée dans le shell courant, n'affecte pas son environnement en dehors de la fonction. Et permet également de ne pas affecter le contenu d'une variable globale de même nom. +- Une fonction exécutée dans un sous-shell n'affecte jamais le parent, que ses variables soient globales ou locales. +- Le parent n'est JAMAIS affecté par les variables définies ou modifiées par ses shells enfants. diff --git a/sitemap.md b/sitemap.md deleted file mode 100644 index 3f55f39c..00000000 --- a/sitemap.md +++ /dev/null @@ -1,123 +0,0 @@ -# Sitemap - -* [Homepage](/index) - -* [What's YunoHost](/whatsyunohost) - -* [Documentation](/docs) - - * Try YunoHost - * [With the demo](/try) - - * [Administrator guide](/admindoc) - * [Self-hosting](/selfhosting_en) - * [Hardware compatible](/hardware) - * [Installation guide](/install) - * [On an OLinuXino board](/install_on_olinuxino) - * [On an ARM board](/install_on_arm_board) - - [On an Olimex board](/install_on_olinuxino) - * [On a Raspberry Pi](/install_on_raspberry) - * [From an ISO](/install_iso) - * [On Debian](/install_on_debian) - * [On VirtualBox](/install_on_virtualbox) - * [On Vagrant](/vagrant) - * [On a dedicated or a virtual private server](/install_on_vps) - * Installation steps - * [Burn or copy iso](/burn_or_copy_iso) - * [Boot and graphical install](/boot_and_graphical_install) - * [Copy YunoHost image on SD card](/copy_image) - * [Manual instalation](/install_manually) - * [Plug and boot your server](/plug_and_boot) - * [Post-instalation](/postinstall) - * Access to YunoHost server: DNS, domain name, `hosts` file - * [Diagnostic the access to YunoHost server](/diagnostic) - * [DNS Settings](/dns) - * [Registrar](registrar) - * [DNS Configuration](/dns_config) - * [Use the YunoHost DNS resolver](/dns_resolver_en) - * [Dynamic IP address: configure DynDNS](dns_dynamicip_en) - * [Access his server on his local network](/dns_local_network_en) - - [IPv6](ipv6_fr) - - [VPN](vpn_advantage) - * [Internet service provider](/isp) - * [Generic configuration of the ISP router](/isp_box_config) - * Applications - * [Official applications](/apps_en) - * [Non-official applications](/apps_in_progress_en) - * [Update applications](app_update_en) - * Administration - * Command-line - * [Connect to your server with SSH](/ssh) - * [Command line administration](/moulinette) - * [Web administration](/admin) - * [Change administration password](/change_admin_password) - * [Email](email_en) - * [Configure email client](email_configure_client_en) - * [Migrate emails](email_migration_en) - * [Forms to remove blacklisting of your IP address](blacklist_forms_en) - * [Use DKIM](dkim) - * Certificates - - [Certificates manager](certmanager_en) - * [Add a certificate certified by an authority](/certificate) - * [Regenerate self-signed certificate](/regenerate_certificate_en) - * [Security](/security) - - [Contact security team](security_team) - * [Troubleshooting guide](/troubleshooting_guide_en) - * [YunoHost Tor Hidden Servicer](/torhiddenservice) - * [Unblock an IP address with Fail2ban](/fail2ban_en) - - * [User guide](/userdoc) - * [User interface](user_interface) - * [Configure email client](email_configure_client_en) - * [Instant messaging usage](/XMPP) - * [Official applications](/apps) - * [Baikal](/app_baikal_en) - * [Firefox Sync](/app_ffsync_en) - * [Tiny Tiny RSS](/app_ttrss_en) - * [Transmission](/app_transmission_en) - * [Radicale](/app_radicale) - * [RoundCube](/app_roundcube_en) - * [Minidlna](app_minidlna_en) - * [Community applications](/apps_in_progress_en) - * [LimeSurvey](/app_limesurvey_en) - - * [Contributor guide](/contribute) - * Developement - * Applications - * [Package new application](/packaging_apps) - * [VirtualBox for apps' packaging](packaging_apps_virtualbox_fr) - * [Manifest](packaging_apps_manifest_en) - * [Scripts](packaging_apps_scripts_en) - * [Arguments management](packaging_apps_arguments_management_en) - * [Nginx configuration](packaging_apps_nginx_conf_en) - * [Multi-instance](packaging_apps_multiinstance_en) - * [Helpers](packaging_apps_helpers_en) - * [Trap usage](packaging_apps_trap_fr) - * [Applications levels](packaging_apps_levels_fr) - * [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr) - * [Applications in progress](/apps_in_progress_en) - * [Wishlist of applications](/apps_wishlist_en) - * [Contributing to the YunoHost core](/dev) - * [Creation of system packages](/build_system_en) - * [Creation of Debian packages](/build_packages_en) - * [Create an ARM board image](/build_arm_image_en) - * [Create a live USB image](/create_live_usb) - * Documentation - * [Write documentation](/write_documentation) - * [Accounting to edit documentation](/accounting) - * [Contribution](/contributordoc) - -* Project's life: - * [Changelog v.2.0](/changelog_2_0_en) - * [Changelog v.2.2](/changelog_2_2_en) - * [Roadmap](/roadmap) - * [Frequently asked questions](/faq_en) - * [Contributors](contribs) - - [Project organization](project_organization) - * [Support](/support_en) - * [Art Works](artworks_en) - * [Blog](https://forum.yunohost.org/c/announcement) - - [Forum](https://forum.yunohost.org) - - [Chat rooms](chat_rooms_en) - * [Communication](communication_en) - * [Help](/help) diff --git a/sitemap_fr.md b/sitemap_fr.md deleted file mode 100644 index 68116cec..00000000 --- a/sitemap_fr.md +++ /dev/null @@ -1,137 +0,0 @@ -# Plan du site - -* [Page d’accueil](/index_fr) - -* [En savoir plus](/whatsyunohost_fr) - -* [Documentation](/docs_fr) - - * Essayer YunoHost - * [Avec la démo](/try_fr) - - * [Guide de l’administrateur](/admindoc_fr) - * [L’auto-hébergement](/selfhosting_fr) - * [Matériel compatible](/hardware_fr) - * [Guide d’installation](/install_fr) - * [Sur une carte OLinuXino](/install_on_olinuxino_fr) - * [Sur carte ARM](/install_on_arm_board_fr) - - [Sur carte Olimex](/install_on_olinuxino_fr) - * [Sur Raspberry Pi](/install_on_raspberry_fr) - * [À partir de l’ISO](/install_iso_fr) - * [Sur Debian](/install_on_debian_fr) - * [Sur VirtualBox](/install_on_virtualbox_fr) - * [Sur Vagrant](/vagrant_fr) - * [Sur un serveur dédié](/install_on_vps_fr) - * Étapes d’installation - * [Graver ou copier l’ISO](/burn_or_copy_iso_fr) - * [Démarrage et installation graphique](/boot_and_graphical_install_fr) - * [Copier l’image YunoHost sur une carte SD](/copy_image_fr) - * [Installation manuelle](/install_manually_fr) - * [Brancher et démarrer votre serveur](/plug_and_boot_fr) - * [Post-installation](/postinstall_fr) - * Accès au serveur YunoHost : DNS, nom de domaine, fichier `hosts` - * [Diagnostic d’un bon accès au serveur YunoHost](/diagnostic_fr) - * [DNS - Système de nom de domaine](/dns_fr) - * [Configuration du DNS chez son registrar](/dns_config_fr) - * [Chez OVH](/OVH_fr) - * [DNS et installation d’une application sur un sous-domaine](/dns_subdomains_fr) - * [Bureaux d’enregistrements de nom de domaine — Registrar](registrar_fr) - * [Utiliser le résolveur DNS de YunoHost](/dns_resolver_fr) - * [Adresse IP dynamique : configuration d’un DynDNS](dns_dynamicip_fr) - * [Accéder à son serveur dans son réseau local](/dns_local_network_fr) - * [Nom de domaine en Nohost.me](/dns_nohost_me_fr) - - [IPv6](ipv6_fr) - - [VPN](vpn_advantage_fr) - * [Fournisseurs d’accès à Internet](/isp_fr) - * [Configuration générique de la box ou du routeur](/isp_box_config_fr) - * [Free](/isp_free_fr) - * [SFR](/isp_sfr_fr) - * [Orange](/isp_orange_fr) - * Applications - * [Applications officielles](/apps_fr) - * [Applications non officielles](/apps_in_progress_en) - * [Mise à jour des applications](app_update_fr) - * Administration - * En ligne de commande - * [Connexion à son serveur avec SSH](/ssh_fr) - * [Administration avec la Moulinette](/moulinette_fr) - * [Administration web](/admin_fr) - * [Administration via l'API](/admin_api_fr) - * [Changer le mot de passe d’administration](/change_admin_password_fr) - * [Courrier électronique](email_fr) - * [Configuration d’un client email](email_configure_client_fr) - * [Migration emails](email_migration_fr) - * [Formulaires pour enlever son adresse IP des listes noires](blacklist_forms_fr) - * [Mettre en place DKIM](dkim_fr) - * Certificats - - [Gestionnaire de certificats](certmanager_en) - * [Ajouter un certificat d’une autorité](/certificate_fr) - * [Régénérer le certificat auto-signé](/regenerate_certificate_fr) - * [Sécurité](/security_fr) - - [Contacter l’équipe de sécurité](security_team_fr) - * [Consulter les fichiers de log du système](/check_logfile_fr) - * [Guide de dépannage](/troubleshooting_guide_fr) - * [YunoHost service caché Tor](/torhiddenservice_fr) - * [Débloquer une IP avec Fail2ban](/fail2ban_fr) - - * [Guide de l’utilisateur](/userdoc_fr) - * [Interface utilisateur](user_interface) - * [Configurer un client email](email_configure_client_fr) - * [Utiliser la messagerie instantanée XMPP](/XMPP_fr) - * [Applications officielles](/apps_fr) - * [Baïkal](/app_baikal_fr) - * [Firefox Sync](/app_ffsync_fr) - * [Jappix](/app_jappix_fr) - * [Nextcloud](app_nextcloud_fr) - * [Tiny Tiny RSS](/app_ttrss_fr) - * [Transmission](/app_transmission_fr) - * [Radicale](/app_radicale_fr) - * [RoundCube](/app_roundcube_fr) - * [Minidlna](app_minidlna_fr) - * [Applications communautaires](/apps_in_progress_fr) - * [LimeSurvey](/app_limesurvey_fr) - - * [Guide du contributeur](/contribute_fr) - * Développement - * [Créer un environnement de développement](ynh_dev_fr) - * [Présentation du fonctionnement de YunoHost](/package_list_fr) - * Applications : - * [Packager des applications](/packaging_apps_fr) - * [VirtualBox pour le packaging](packaging_apps_virtualbox_fr) - * [Introduction](packaging_apps_start_fr.md) - * [Manifeste](packaging_apps_manifest_fr) - * [Scripts](packaging_apps_scripts_fr) - * [Gestion des arguments](packaging_apps_arguments_management_fr) - * [Configuration Nginx](packaging_apps_nginx_conf_fr) - * [Multi-instance](packaging_apps_multiinstance_fr) - * [Commandes pratiques](packaging_apps_helpers_fr) - * [Usage de trap](packaging_apps_trap_fr) - * [Niveaux des applications](packaging_apps_levels_fr) - * [YEP - YunoHost Enhancement Proposals](packaging_apps_guidelines_fr) - * [Packages d’applications en cours de développement](/apps_in_progress_fr) - * [Liste de proposition d’applications](/apps_wishlist_fr) - * [Contribuer au cœur de YunoHost](/dev_fr) - * [Création de paquets système](/build_system_fr) - * [Création de paquets Debian](/build_packages_fr) - * [Créer une image pour carte ARM](/build_arm_image_en) - * [Créer une image live USB](/create_live_usb_fr) - * Documentation - * [Création d’un compte pour l’édition de la documentation](/accounting_fr) - * [Écrire de la documentation](/write_documentation_fr) - * [Contribution](/contributordoc_fr) - -* Vie du projet : - * [Journal des modifications v.2.0](/changelog_2_0_en) - * [Journal des modifications v.2.2](/changelog_2_2_en) - * [Feuille de route](/roadmap_en) - * [Foire aux questions](/faq_fr) - - [Organisation du projet](project_organization_fr) - * [Contributeurs](contribs_fr) - * [Entraide - support](/support_fr) - * [Blog](https://forum.yunohost.org/c/announcement) - - [Forum](https://forum.yunohost.org) - - [Salons de discussions](chat_rooms_fr) - * [Conférences](/conf_fr) - * [Communication extérieure](communication_fr) - * [Travail artistique](artworks_fr) - * [Aide](/help_fr) diff --git a/ssh.md b/ssh.md index 741e9e1c..95dc819f 100644 --- a/ssh.md +++ b/ssh.md @@ -24,7 +24,7 @@ Assuming your IP address is `111.222.333.444`, open a terminal and enter : ssh root@111.222.333.444 ``` -A password will be asked. If this is a VPS, your VPS provided should have communicated you the password. On a fresh Raspberry Pi, the password should be `yunohost`. For an OLinuXino, this should be `olinux`. +A password will be asked. If this is a VPS, your VPS provided should have communicated you the password. If you used a pre-installed image (for x86 computer or ARM board), the password should be `yunohost`. #### Change the password! @@ -58,7 +58,25 @@ ssh -p 2244 admin@your.domain.tld By default, only the admin and root users can log in to YunoHost ssh server. -YunoHost's users created via the administration interface are managed by the LDAP directory. By default, they can't connect via SSH for security reasons. See [here](https://forum.yunohost.org/t/ssh-disconnects-after-successful-login/256/10) if you absolutely want some users to have SSH access enabled. +YunoHost's users created via the administration interface are managed by the LDAP directory. By default, they can't connect via SSH for security reasons. If you want some users to have SSH access enabled, use the command: + +```bash +yunohost user ssh allow +``` + +It is also possible to remove ssh access using the following: + +```bash +yunohost user ssh disallow +``` + +Finally, it is possible to add, delete and list ssh keys, to improve ssh access security, using the commands: + +```bash +yunohost user ssh add-key +yunohost user ssh remove-key +yunohost user ssh list-keys +``` ## Security and SSH diff --git a/ssh_fr.md b/ssh_fr.md index 122ec553..7a8e97e3 100644 --- a/ssh_fr.md +++ b/ssh_fr.md @@ -2,7 +2,7 @@ ## Qu’est-ce que SSH ? -**SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base sur Linux et Mac OS / OSX. Sous Windows, maleureusement il vous faudra utiliser le logiciel [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty). +**SSH** est un accronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C'est aussi une commande disponible de base sur Linux et Mac OS / OSX. Sous Windows, malheureusement il vous faudra utiliser le logiciel [PuTTy](http://www.fastcomet.com/tutorials/getting-started/putty). ## Pendant l’installation de YunoHost @@ -24,7 +24,7 @@ En supposant que votre adresse IP est `111.222.333.444`, ouvrez un terminal et t ssh root@111.222.333.444 ``` -Un mot de passe sera demandé. Si c'est un VPS, votre fournisseur devrait également vous avoir communiqué un mot de passe. Sur un Raspberry Pi, le password devrait être `yunohost`. Sur un OLinuXino, cela devrait être `olinux`. +Un mot de passe sera demandé. Si c'est un VPS, votre fournisseur devrait également vous avoir communiqué un mot de passe. Si vous avez utilisé une image pré-installée (pour x86 ou cartes ARM), le password devrait être `yunohost`. #### Changer le mot de passe root ! @@ -42,7 +42,7 @@ ssh admin@111.222.333.444 Ensuite, entrez le mot de passe administrateur défini pendant la [post-installation](postinstall). -Si vous avez configuré vos DNS (or tweaked your `/etc/hosts`), you can simply use your domain name : +Si vous avez configuré vos DNS (ou modifié votre `/etc/hosts`), vous pouvez utiliser votre nom de domaine : ```bash ssh admin@votre.domaine.tld @@ -58,7 +58,24 @@ ssh -p 2244 admin@votre.domaine.tld Par défaut, seulement les utilisateurs admin et root peuvent se logger en SSH sur une instance Yunohost. -Les utilisateurs YunoHost créé via l'interface d'administration sont géré par la base de donnée LDAP. Par défaut, ils ne peuvent pas se connecter en SSH pour des raisons de sécurité. Si vous avez absolument besoin qu'un utilisateur dispose d'un accès SSH, vous pouvez utiliser [cette manipulation](https://forum.yunohost.org/t/ssh-disconnects-after-successful-login/256/10). +Les utilisateurs YunoHost créés via l'interface d'administration sont géré par la base de donnée LDAP. Par défaut, ils ne peuvent pas se connecter en SSH pour des raisons de sécurité. Si vous avez absolument besoin qu'un utilisateur dispose d'un accès SSH, vous pouvez utiliser la commande : +```bash +yunohost user ssh allow +``` + +De même, il est possible de supprimer l'accès ssh à un utilisateur avec la commande : +```bash +yunohost user ssh disallow +``` + +Enfin, il est possible d'ajouter, de supprimer et de lister des clés ssh, pour améliorer la sécurité de l'accès ssh, avec les commandes : +```bash +yunohost user ssh add-key +yunohost user ssh remove-key +yunohost user ssh list-keys +``` + + ## SSH et sécurité diff --git a/support.md b/support.md deleted file mode 100644 index 57a7003d..00000000 --- a/support.md +++ /dev/null @@ -1,19 +0,0 @@ -# Support - -The YunoHost support is provided by the community members. - -* The **best and fastest** way to get answers remains the community chatroom, accessible on the bottom-right corner of this page, or via an XMPP compatible instant messaging client (like [Pidgin](https://pidgin.im)), at the following address: - - **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)** - ---- - -* You may also want to visit the **discussion forum**: - - **[forum.yunohost.org](https://forum.yunohost.org/)** - ---- - -* However, if you want to write specificaly to the YunoHost team, do not hesitate to send us an email. Please note that **we do not provide any support by email**. - - **[yunohost@yunohost.org](mailto:yunohost@yunohost.org)** diff --git a/support_fr.md b/support_fr.md deleted file mode 100644 index ea1b6003..00000000 --- a/support_fr.md +++ /dev/null @@ -1,19 +0,0 @@ -# Support - Entraide - -L’entraide autour de YunoHost est assurée par la communauté. - -* Le moyen le plus **efficace et rapide** d’obtenir des réponses reste le salon de discussion instantané, accessible en bas à droite de cette page, ou via n’importe quel client de messagerie **compatible XMPP** (tel que [Pidgin](https://pidgin.im)) à l’adresse suivante : - - **[support@conference.yunohost.org](xmpp:support@conference.yunohost.org?join)** - ---- - -* Vous pouvez également vous renseigner et poser vos questions sur **le forum** (en anglais de préférence) : - - **[forum.yunohost.org](https://forum.yunohost.org/)** - ---- - -* Enfin, si vous souhaitez vous adresser spécifiquement à l’équipe YunoHost, n’hésitez pas à nous envoyer un mail. **Attention, nous n’assurons aucun support par email**. - - **[yunohost@yunohost.org](mailto:yunohost@yunohost.org)** diff --git a/torhiddenservice.md b/torhiddenservice.md index 55c45abb..594b5a25 100644 --- a/torhiddenservice.md +++ b/torhiddenservice.md @@ -4,7 +4,7 @@ See https://www.torproject.org/docs/tor-hidden-service.html.en ### Installing Tor ```bash -sudo apt-get install tor +apt install tor ``` ### Configuring our hidden service @@ -43,4 +43,4 @@ If you want to avoid being redirected to the SSO portal at login, you can deacti ### Restart nginx ```bash service nginx restart -``` \ No newline at end of file +``` diff --git a/torhiddenservice_fr.md b/torhiddenservice_fr.md index 7b700af6..115907ce 100644 --- a/torhiddenservice_fr.md +++ b/torhiddenservice_fr.md @@ -4,7 +4,7 @@ Voir https://www.torproject.org/docs/tor-hidden-service.html.en (anglais) ### Installer Tor ```bash -sudo apt-get install tor +apt install tor ``` ### Configurer notre service caché @@ -40,7 +40,7 @@ Si vous voulez éviter d’être redirigé vers le portail à la connexion pour #access_by_lua_file /usr/share/ssowat/access.lua; ``` -### Rédémarrer nginx +### Redémarrer nginx ```bash service nginx restart -``` \ No newline at end of file +``` diff --git a/troubleshooting_guide.md b/troubleshooting_guide.md index c6ada8fc..190ec734 100644 --- a/troubleshooting_guide.md +++ b/troubleshooting_guide.md @@ -15,25 +15,25 @@ Keep in mind that when you install an app, you execute code on your server with From my experience, some packaging are excellent and others can break some part of your YunoHost instance. Some packages are unmaintained. So before install check package issues, the [Forum](http://forum.yunohost.org/) and the [YunoHost support room](support_en) to see if other have problem with the app. ### Check the official documentation -Answer to your question may be already in [the documentatioon](https://yunohost.org/#/sitemap_en). +Answer to your question may be already in [the documentation](https://yunohost.org/#/docs_en). ### Check the command line help -Learn how to use the [YunoHost commands](https://yunohost.org/#/moulinette_en) like a pro. +Learn how to use the [YunoHost commands](https://yunohost.org/#/commandline) like a pro. ## Upgrade -Problems oftenly occurs after an upgrade. After a YunoHost upgrade you may want to [update your apps](https://yunohost.org/#/app_update_en). +Problems often occur after an upgrade. After a YunoHost upgrade you may want to [update your apps](https://yunohost.org/#/app_update_en). -**Check if some processes are using old librairies** +**Check if some processes are using old libraries** You are probably familiar with: ```bash -sudo apt-get update && sudo apt-get dist-upgrade +$ 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 -sudo apt-get install debian-goodies -sudo checkrestart +$ 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. @@ -48,10 +48,10 @@ You can also use [this script](https://github.com/octopuce/octopuce-goodies/blob /!\ Always check if there is a upgrade script and read it if you can /!\ ```bash -sudo yunohost app upgrade +$ yunohost app upgrade Warning: You must provide an URL to upgrade your custom app app_name Error: No app to upgrade -sudo yunohost app upgrade -u https://github.com/user/someapp_ynh app_name +$ yunohost app upgrade -u https://github.com/user/someapp_ynh app_name ``` ## Services @@ -61,7 +61,7 @@ YunoHost uses a bunch of software to accomplish its purpose. Most of theses soft 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 -sudo yunohost service status +$ yunohost service status ``` Sample result: @@ -89,24 +89,22 @@ All services should be enabled and running. Except glances (optional). If some a 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 -sudo yunohost service start -sudo yunohost service stop +$ yunohost service start +$ yunohost service stop ``` You can also use the generic Debian command: ```bash -sudo service start/stop/restart/reload +$ systemctl start/stop/restart/reload ``` After a launch attempt, always check that the service is running. -**Note**: Debian Jessie now uses `systemd` instead of `upstart`, but, for now it's fully compatible with Debian Wheezy way to handle services. [Useful resource on systemd](https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet). - ### 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: -```bash -/var/log/ -``` +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. @@ -122,7 +120,7 @@ XMPP chat server logs. ##### mysql.err, mysql.log, mysql/error.log MySQL database logs, these should be empty unless you have trouble with MySQL. -##### php5-fpm.log +##### php7.0-fpm.log Generic logs for PHP apps. ##### yunohost.log @@ -228,7 +226,7 @@ You can view (don't edit it, it is oftently overwritten) your current SSOwat con ``` Which is generated with the command: ```bash -sudo yunohost app ssowatconf +yunohost app ssowatconf ``` Protip: if you want to add a personalized rule for SSOwat, do it in this file: ```bash @@ -265,7 +263,7 @@ In each app packages you will find: * **config/**: config directory * **settings.yml**: config of the app, also accessible with: ```bash -sudo yunohost app setting appname settingname +yunohost app setting appname settingname ``` ### Logs diff --git a/troubleshooting_guide_fr.md b/troubleshooting_guide_fr.md index def18ea2..31e516b7 100644 --- a/troubleshooting_guide_fr.md +++ b/troubleshooting_guide_fr.md @@ -1,6 +1,6 @@ # Guide de dépannage de YunoHost -Vous pouvez considérer ce guide comme une sorte de guide de dépannage permettant de voir ce qu’il faut regarder quand vous rencontrer un problème avec votre serveur YunoHost. Ce n’est pas un guide pour remettre en état votre instance YunoHost mais plutôt une liste de choses à vérifier pour aider à diagnostiquer les problèmes rencontrés. +Vous pouvez considérer ce guide comme une sorte de guide de dépannage permettant de voir ce qu’il faut regarder quand vous rencontrez un problème avec votre serveur YunoHost. Ce n’est pas un guide pour remettre en état votre instance YunoHost mais plutôt une liste de choses à vérifier pour aider à diagnostiquer les problèmes rencontrés. Ce guide peut trouver son intérêt lors du débuggage d’une nouvelle application ou pour comprendre l’architecture de Yunohost. ## Notes générales @@ -16,10 +16,10 @@ Garder à l’esprit que quand vous installez une application, vous exécutez du et [le salon de discussion Yunohost](support_fr) pour voir si d’autres ont eu des problèmes avec l’application. ### Vérifier la documentation officielle -Les réponses à vos questions existent peut être déjà dans [la documentation](sitemap_fr). +Les réponses à vos questions existent peut être déjà dans [la documentation](docs_fr). ### Vérifier l’aide dans les commandes en ligne -Vous pouvez apprendre à utiliser les [commandes YunoHost](moulinette_fr) +Vous pouvez apprendre à utiliser les [commandes YunoHost](/commandline_fr) ## Mise à jour Les problèmes ont souvent lieu après une mise à jour. Après une mise à jour, vous pouvez avoir envie de [mettre à jour votre application](app_update_fr). @@ -28,17 +28,17 @@ Les problèmes ont souvent lieu après une mise à jour. Après une mise à jour **Vérifier si un processus utilise une ancienne librairie** vous avez sûrement l’habitude d’utiliser : ```bash -sudo apt-get update && sudo apt-get dist-upgrade +$ apt update && apt dist-upgrade ``` La plupart du temps, cela suffit. Mais dans certaines situations, il est possible que certains processus utilisent toujours d’anciennes bibliothèques non mises à jour. Cela peut entraîner des bugs et, dans certains rares cas, des problèmes de sécurité (ex : lors d’une mise à jour de OpenSSL à cause d’une faille de sécurité, Nginx va continuer à utiliser la version dont il dispose en mémoire). L’utilitaire Checkrestart va vous aider à identifier ces processus et les redémarrer. ```bash -sudo apt-get install debian-goodies -sudo checkrestart -Found 0 processes using old versions of upgraded files +$ apt install debian-goodies +checkrestart +# Found 0 processes using old versions of upgraded files ``` -Si des processus fonctionnent avec des vielles versions de bibliothèques, checkrestart va vous dire et vous proposer une manière de les redémarrer. Il est possible que checkrestart ne trouve pas de manière de les redémarrer. Attention, il faut opérer l’opération manuellement. +Si des processus fonctionnent avec des vieilles versions de bibliothèques, checkrestart va vous le dire et vous proposer une manière de les redémarrer. Il est possible que checkrestart ne trouve pas de manière de les redémarrer. Attention, il faut opérer l’opération manuellement. @@ -52,10 +52,11 @@ Vous pouvez aussi utiliser [ce script](https://github.com/octopuce/octopuce-good ```bash -sudo yunohost app upgrade +$ yunohost app upgrade Warning: You must provide an URL to upgrade your custom app app_name Error: No app to upgrade -sudo yunohost app upgrade -u https://github.com/user/someapp_ynh app_name + +$ yunohost app upgrade -u https://github.com/user/someapp_ynh app_name ``` ## Les services @@ -65,7 +66,7 @@ YunoHost utilise toute une série de logiciels pour fonctionner. La plupart de c 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 -sudo yunohost service status +yunohost service status ``` Exemple de résultat : @@ -74,7 +75,7 @@ Exemple de résultat : Tous les services doivent être activés (enabled) et en fonctionnement (running) sauf Glances (optionnel). Si certains ne le sont pas, essayez de les redémarrer. Voici une petite description de leurs fonctions respectives : -- **Amavis** : anti-spam/virus/malwares, utilisé quand lors de l’échange de mails. +- **Amavis** : anti-spam/virus/malwares, utilisé lors de l’échange de mails. - **Avahi-daemon** : système qui facilite la découverte d’ordinateurs sur le réseau local en leur attribuant des noms. - **DNSmasq** : serveur DNS, vous n’êtes pas obligé de l’utiliser (Non installé par défaut) - **Dovecot** : serveur IMAP, utilisé pour la réception de mails. @@ -94,16 +95,14 @@ Voici une petite description de leurs fonctions respectives : Les autres services installés par des applications vont aussi apparaître. Par exemple `seafile-serve` utilisé par l’application Seafile et `uwsgi` qui est utilisé par des applications python comme Searx. ##### démarrer ou arrêter un service identifié avec YunoHost : ```bash -sudo yunohost service start -sudo yunohost service stop +yunohost service start +yunohost service stop ``` Vous pouvez aussi utiliser la commande Debian : ```bash -sudo service start/stop/restart/reload +systemctl start/stop/restart/reload ``` Après une tentative de lancement, vérifiez toujours que le service est lancé. -**Note** : Debian Jessie utilise désormais `systemd` à la place de `upstart`. Cela est pour l’instant toujours compatible avec la manière dont Debian Wheezy gère les services. -[Ressources utiles sur systemd](https://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet). ### Logs Si un service ne démarre pas, vous devez vérifier les logs pour voir ce qui ne pose problème. Il n’y a pas de règles définies où les services doivent stocker leurs logs. Cependant, ceux-ci se trouvent pour la plupart dans : @@ -126,7 +125,7 @@ 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. -##### php5-fpm.log +##### php7.0-fpm.log Lieu générique d’emplacement des logs pour les applications PHP. ##### yunohost.log @@ -142,7 +141,7 @@ free -m ``` -5 à 10 % de mémoire libre est acceptable, mais il est bien de disposer d’une marge (en particulier pour les mises à jour). Comme la plupart du temps, vous ne pouvez pas augmenter votre quantitité de RAM, vous avez la possibilité d’utiliser une partition de SWAP (mémoire du disque dur attribuée à la RAM). +5 à 10 % de mémoire libre est acceptable, mais il est bien de disposer d’une marge (en particulier pour les mises à jour). Comme la plupart du temps, vous ne pouvez pas augmenter votre quantité de RAM, vous avez la possibilité d’utiliser une partition de SWAP (mémoire du disque dur attribuée à la RAM). Gardez à l’esprit que le SWAP est une mémoire 100 000 fois plus lente, vous devriez donc l’utiliser uniquement si vous n’avez pas d’autre choix. ##### créer un fichier de swap : @@ -162,7 +161,7 @@ Changez 512 avec la quantité de mémoire SWAP que vous voulez. [Source avec plus d’explication](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880). ## Espace disque -Un des autres problèmes communs des serveurs est le manque d’espace d’espace disque. +Un des autres problèmes communs des serveurs est le manque d’espace disque. Vous pouvez vérifier que votre disque n’est pas plein avec la commande : ```bash df -h @@ -203,7 +202,7 @@ alias YNH_WWW_ALIAS ; # chemin pour accéder aux sources des fichiers aux fichie # Configuration particulière pour une application selon son langage de programmation et ses options de déploiement. -# Inclure le logo SSOwat en bas à droit de la fenêtre +# Inclure le logo SSOwat en bas à droite de la fenêtre include conf.d/yunohost_panel.conf.inc; } ``` @@ -227,12 +226,12 @@ Ce fichier devrait être vide avec une configuration correcte de Nginx. Si Nginx 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 surs dans ce fichier. +Toutes les erreurs liées aux applications installées sur ce domaine, il se peut que certaines applications aient tous leurs logs soit dans ce fichier. ## SSOwat [SSowat](https://github.com/Kloadut/SSOwat) -est le logiciel qui connecte le serveur web nginx au serveur LDAP. Son but est d’authentifier les utilisateurs au portail YunHost pour pouvoir simplement changer entre les applications. +est le logiciel qui connecte le serveur web nginx au serveur LDAP. Son but est d’authentifier les utilisateurs au portail YunoHost pour pouvoir simplement se déplaçer entre les applications. ### Configuration Vous pouvez regarder le fichier de configuration SSOwat dans le fichier : @@ -285,7 +284,7 @@ sudo yunohost app setting appname settingname ``` ### Logs -Il n’y a pas de fichier de log créé lors que vous installez une application. Essayez de conserver les logs. Vous pouvez trouver cependant certains logs peuvent se trouver dans : +Il n’y a pas de fichier de log créé lorsque vous installez une application. Essayez de conserver les logs. Vous pouvez trouver cependant certains logs peuvent se trouver dans : ```bash /var/log/yunohost/ ``` @@ -366,4 +365,4 @@ Ne jamais installer le serveur web Apache ou un paquet avec Apache comme dépend ##### Note sur https Parfois, le serveur web intégré avec l’application est capable de servir du https lui-même. -C’est une bonne chose de l’utiliser quand vous disposez d’une application sans Nginx devant. Dans le cadre de YunoHost, le fait que Nginx serve du https simplifie la configuration. Donc, quand vous passez par proxy_pass, utilisez http et Nginx mettra a disposition en https pour le reste de l’internet. +C’est une bonne chose de l’utiliser quand vous disposez d’une application sans Nginx devant. Dans le cadre de YunoHost, le fait que Nginx serve du https simplifie la configuration. Donc, quand vous passez par proxy_pass, utilisez http et Nginx le mettra a disposition en https pour le reste de l’internet. diff --git a/try_ar.md b/try_ar.md new file mode 100644 index 00000000..4ab216e4 --- /dev/null +++ b/try_ar.md @@ -0,0 +1,29 @@ +#
تجريب YunoHost
+ +
+**ملاحظة :** يمكن لهذا السيرفر التجريبي أن يتوقف من وقت إلى آخر. +
+ +
+ +
+ +
+
+ واجهة المستخدم +

إسم المستخدم : demo
كلمة السر : demo

+
+
+ واجهة الإدارة +

كلمة السر : demo

+
+
+ +
+ +

+***تم توفير الخادم التجريبي بفضل +Gitoyen*** +

+ + diff --git a/user_interface_fr.md b/user_interface_fr.md index e9662533..0bdef82e 100644 --- a/user_interface_fr.md +++ b/user_interface_fr.md @@ -1,8 +1,8 @@ -#Interface utilisateur +# Interface utilisateur ### Problème d’accès -L’accès à la partie utilisateur peut se faire uniquement avec un nom de domaine. Vous ne pouvez pas y accéder en utilisant l’adresse IP locale de votre serveur comme suivi : https://adresse.ip.du.server/yunohost/sso +L’accès à la partie utilisateur peut se faire uniquement avec un nom de domaine. Vous ne pouvez pas y accéder en utilisant l’adresse IP locale de votre serveur comme suit : https://adresse.ip.du.server/yunohost/sso Vous pouvez créer une redirection d’un nom de domaine vers l’adresse IP du serveur en modifiant `/etc/hosts` et en ajoutant cette ligne : @@ -10,8 +10,8 @@ Vous pouvez créer une redirection d’un nom de domaine vers l’adresse IP du adresse.ip.du.server domaine.tld ``` -En remplaçant `adresse.ip.du.server` par exemple par `192.168.1.05` et `domaine.tld` par votre nom de domaine ou par un nom de domaine que vous pouvez choisir si vous n’en avez pas. +En remplaçant `adresse.ip.du.server` par exemple par `192.168.1.5` et `domaine.tld` par votre nom de domaine ou par un nom de domaine que vous pouvez choisir si vous n’en avez pas. ### Logiciel -L’interface utilisateur est basé sur le logiciel suivant : https://github.com/Kloadut/ssowat \ No newline at end of file +L’interface utilisateur est basé sur le logiciel suivant : https://github.com/Kloadut/ssowat diff --git a/userdoc.md b/userdoc.md index 53b92bd8..06e3826b 100644 --- a/userdoc.md +++ b/userdoc.md @@ -4,12 +4,4 @@ * [User interface](user_interface) * [Configure an email client](/email) * [Instant messaging usage](/XMPP) -* [Official applications](/apps) - * [Baikal](/app_baikal_en) - * [Firefox Sync](/app_ffsync_en) - * [Tiny Tiny RSS](/app_ttrss_en) - * [Transmission](/app_transmission_en) - * [Radicale](/app_radicale) - * [RoundCube](/app_roundcube_en) -* [Community applications](/apps_in_progress_en) - * [LimeSurvey](/app_limesurvey_en) +* [Applications](/apps) diff --git a/userdoc_ar.md b/userdoc_ar.md new file mode 100644 index 00000000..4eac43e3 --- /dev/null +++ b/userdoc_ar.md @@ -0,0 +1,7 @@ +
+# دليل مستخدمي واي يونوهوست YunoHost + +* [واجهة المستخدم](user_interface) +* [البريد الإلكتروني](/email_fr) +* [المحادثة الفورية و شبكات التواصل الإجتماعي XMPP](/XMPP_fr) +* [التطبيقات](/apps_ar) \ No newline at end of file diff --git a/userdoc_fr.md b/userdoc_fr.md index 766aa65e..469504c9 100644 --- a/userdoc_fr.md +++ b/userdoc_fr.md @@ -3,12 +3,4 @@ * [L’interface utilisateur](user_interface) * [La messagerie électronique (email)](/email_fr) * [La messagerie instantanée et les réseaux sociaux XMPP](/XMPP_fr) -* [Les applications officielles](/apps_fr) - * [Firefox Sync](/app_ffsync_fr) - * [Jappix](/app_jappix_fr) - * [Tiny Tiny RSS](/app_ttrss_fr) - * [Transmission](/app_transmission_fr) - * [Radicale](/app_radicale_fr) - * [RoundCube](/app_roundcube_fr) -* [Applications communautaires](/apps_in_progress_fr) - * [LimeSurvey](/app_limesurvey_fr) +* [Les applications](/apps_fr) diff --git a/vagrant.md b/vagrant.md index 4d85d128..fa165cdf 100644 --- a/vagrant.md +++ b/vagrant.md @@ -18,14 +18,11 @@ mkdir YunoHost cd YunoHost ``` -The following command will initialize the project with a Yunohost image based on Debian Jessie +The following command will initialize the project with a Yunohost image ```bash -vagrant box add yunohost/jessie-stable https://build.yunohost.org/yunohost-jessie-stable.box --provider virtualbox -vagrant init yunohost/jessie-stable +vagrant box add yunohost/stretch-unstable https://build.yunohost.org/yunohost-stretch-unstable.box --provider virtualbox +vagrant init yunohost/stretch-unstable ``` -
-/!\ If you prefer use the beta version : https://build.yunohost.org/yunohost-jessie-testing.box -
You need to activate the network for the YunoHost instance. ```bash @@ -47,7 +44,7 @@ vagrant ssh Upgrade the system ```bash -sudo apt-get update && sudo apt-get upgrade +sudo apt update && sudo apt dist-upgrade ``` You can access to your vm with the ip 192.168.33.10 diff --git a/vagrant_fr.md b/vagrant_fr.md index 2878e347..ebb0da31 100644 --- a/vagrant_fr.md +++ b/vagrant_fr.md @@ -20,13 +20,9 @@ cd YunoHost La commande suivante va initialiser le projet avec une image YunoHost de base ```bash -vagrant box add yunohost/jessie-stable https://build.yunohost.org/yunohost-jessie-stable.box --provider virtualbox -vagrant init yunohost/jessie-stable +vagrant box add yunohost/stretch-unstable https://build.yunohost.org/yunohost-stretch-unstable.box --provider virtualbox +vagrant init yunohost/stretch-unstable ``` -
-/!\Si vous préférez utiliser la version beta https://build.yunohost.org/yunohost-jessie-testing.box -
- Puis, il faut activer le réseau pour l'instance YunoHost: ```bash sed -i 's/# config\.vm\.network "private_network"/config.vm.network "private_network"/' Vagrantfile @@ -48,7 +44,7 @@ vagrant ssh Mettre à jour le système. ```bash -sudo apt-get update && sudo apt-get upgrade +apt update && apt dist-upgrade ``` Vous pouvez accéder à votre vm via l’ip 192.168.33.10. diff --git a/vpn_advantage_fr.md b/vpn_advantage_fr.md index 009e2560..67545d6e 100644 --- a/vpn_advantage_fr.md +++ b/vpn_advantage_fr.md @@ -9,9 +9,9 @@ L'installation d'un serveur chez soi étant une pratique peu courante, la plupar ## Avantages ### Plug & Play -En configurant un VPN sur votre serveur, vous serez en mesure de le rendre accessible au reste d'Internet sans avoir à modifier la configuration du routeur auxquel vous le branchez. Ce point peut être vraiment pratique si vous partez en vacances, que vous déménagez ou que vous ayez une coupure d'Internet car vous serez en mesure de le brancher facilement chez une personne de confiance sans avoir besoin de configurer le routeur de la personne qui vous aide. +En configurant un VPN sur votre serveur, vous serez en mesure de le rendre accessible au reste d'Internet sans avoir à modifier la configuration du routeur auxquel vous le branchez. Ce point peut être vraiment pratique si vous partez en vacances, que vous déménagez ou si vous avez une coupure d'Internet, car vous serez en mesure de le brancher facilement chez une personne de confiance sans avoir besoin de configurer le routeur de la personne qui vous aide. -De la même façon, vous vous économisez l'ouverture des ports de votre routeur ainsi que le coutournement du hairpinning. +De la même façon, vous vous économisez l'ouverture des ports de votre routeur ainsi que le contournement du hairpinning. ### Pas de micro-coupure DNS Si votre connexion Internet n'a pas d'IP publique fixe, vous serez obligé de mettre en place un nom de domaine dynamique (Dynamique DNS). Cette solution peut être acceptable, mais la mise à jour du DNS ne se fera qu'à intervalle régulier (Toutes les deux minutes si c'est un nom de domaine en `noho.st` ou `nohost.me`). Il y a donc une chance que cela provoque de temps en temps des erreurs d'affichage dans le navigateur, voir même qu'un autre site s'affiche (les risques sont toutefois réduit car la pratique de l'auto-hébergement n'est pas répandue). @@ -43,4 +43,4 @@ Lorsque l'on met en place un VPN sur son serveur, si on ne met pas en place de c Pour pallier à ce point, il y a deux solutions : - transformer son serveur en routeur et connecter les équipements de la maison à ce dernier, ces équipements bénéficieront alors de la confidentialité du VPN également. -- utiliser le serveur YunoHost comme solveur DNS lorsque l'on est chez soi, de façon à rediriger les noms de domaines du serveur l'ip locale plutôt que l'ip publique. Cette opération peut se faire soit sur chaque équipements, soit sur le routeur (si ce dernier le permet). +- utiliser le serveur YunoHost comme résolveur DNS lorsque l'on est chez soi, de façon à rediriger les noms de domaines du serveur l'ip locale plutôt que l'ip publique. Cette opération peut se faire soit sur chaque équipements, soit sur le routeur (si ce dernier le permet). diff --git a/whatsyunohost.md b/whatsyunohost.md index d56a1c9d..c8242f55 100644 --- a/whatsyunohost.md +++ b/whatsyunohost.md @@ -38,7 +38,7 @@ It can thus be considered as a distribution, including the following software: * [Postfix](http://www.postfix.org/): an SMTP e-mail server * [Dovecot](http://www.dovecot.org/): an IMAP and a POP3 e-mail server * [Rspamd](https://rspamd.com/): an e-mail spam filtering -* [Metronome](http://www.lightwitch.org/metronome): an XMPP server +* [Metronome](https://metronome.im/): an XMPP server * [OpenLDAP](http://www.openldap.org/): an LDAP server * [Dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html): a DNS server * [SSOwat](https://github.com/Kloadut/SSOwat): a Single Sign On (SSO) web authentication system @@ -118,4 +118,16 @@ First, the software is too young, not tested at large scale and thus probably no You can host your friends, your family and your company safely and with ease, but you have to **trust your users**, and they have to trust you above all. If you do want to provide YunoHost services for unknown persons anyway, a full VPS per user will be just fine, and we believe is a better way to go. +--- +### Art Works + +Black and white YunoHost png logo done by ToZz (400 × 400 px): + + + + + +Click to download. + +Licence: CC-BY-SA 4.0 diff --git a/whatsyunohost_ar.md b/whatsyunohost_ar.md new file mode 100644 index 00000000..f32b896b --- /dev/null +++ b/whatsyunohost_ar.md @@ -0,0 +1,139 @@ +#
ماذا نعني بـ واي يونوهوست YunoHost ؟
+ +
+واي يونوهوست YunoHost هو **نظام لتشغيل الخوادم** صُمِّم لتسهيل الإستضافة الذاتية لخدمات الإنترنت. +هو مُرتكز و منسجم كافة الإنسجام مع توزيعة [غنو/لينكس ديبيان](https://debian.org). +
+ + + +--- + +###
خصائصه
+ +
+- متعدد المستعملين مع تكامُل LDAP +- متعدد النطاقات +- خدمة البريد الإلكتروني +- خادم المراسلة الفورية +- نظام للمصادقة الموحَّدة (SSO) +- نظام للتطبيقات +- نظام للنسخ الإحتياطي +- نظام لإعادة توليد الإعدادات و الخدمات +
+ + + +--- + +###
البرمجيات
+
+عمليًا، يقوم واي يونوهوست YunoHost **بالتنصيب و الإعداد الآلي** لبعض الخدمات التي تشتغل حول نظام LDAP، و كذا **بتوفير الأدوات اللازمة** لإدارتها. + +لذا يمكن اعتباره كتوزيعة بحد ذاتها تضم كل مِن البرمجيات التالية : +
+ + + + + + + + + +
+* [Nginx](http://nginx.org/) : خادم صفحات الويب +* [Postfix](http://www.postfix.org/) : خادم للبريد الإلكتروني الصادر عبر بروتوكول SMTP +* [Dovecot](http://www.dovecot.org/) : خادم للبريد الإلكتروني عبر بروتوكولي IMAP و POP3 +* [Rspamd](https://rspamd.com/) : مُضاد للبريد المُزعج +* [Metronome](http://www.lightwitch.org/metronome) : خادم للمحادثة الفورية عبر بروتوكول XMPP +* [OpenLDAP](http://www.openldap.org/) : un système d’annuaire +* [Dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html) : خادم أسماء النطاقات دي آن أس DNS +* [SSOwat](https://github.com/Kloadut/SSOwat) : (SSO) نظام للمصادقة عبر الويب +- [Let's Encrypt](https://letsencrypt.org): مدير للشهادات الإلكترونية الآمنة +
+ +--- + +###
نظام للتطبيقات
+
+ +بالإضافة إلى ما سبق، يُوَفِّرُ YunoHost نظامًا "للتطبيقات" على شكل **مُستودَع مُجتمعاتيّ** من السكريبتات التي تساعد المستخدِم على تثبيت خدمات و تطبيقات ويب إضافية. + +La chose la plus intéressante avec ce système est que **les applications web profitent de la base LDAP** via le SSO (Single Sign On), qui authentifie les utilisateurs du serveur avec un unique nom d’utilisateur/mot de passe. +
+
+ +قد تهمكم قراءة صفحة [الدليل حول التحزيم](/packaging_apps_fr) وصفحة جيت هب الخاصة بـ[SSOwat](https://github.com/YunoHost/SSOwat/) لمعرفة المزيد. +
+ + + + + + + + + + +--- + +###
أصل فكرة المشروع
+ +
+تعود نشأة فكرة مشروع واي يونوهوست YunoHost إلى شهر فيفري مِن عام 2012 بعد محادثة بدأت على هذا الشكل تقريبًا : +
+

« تبًا، لقد سئِمتُ مِن إعادة إعداد خادم البريد الإلكتروني ... Beudbeud، كيف قُمتَ بإعداد خادومك الجميل حول LDAP ؟ »

+Kload، فيفري 2012
+
+ +Il ne manquait en fait qu’une interface d’administration au serveur de Beudbeud pour en faire quelque chose d’exploitable, alors Kload a décidé de la développer. Finalement, après l’automatisation de quelques configurations et le packaging de quelques applications web, la première version de YunoHost était sortie. + +Constatant l’engouement croissant autour de YunoHost et de l’auto-hébergement en général, les développeurs et les nouveaux contributeurs ont alors décidé de prendre le cap d’une version 2, plus accessible, plus extensible, plus puissante, et qui prépare du bon café commerce équitable pour les lutins de Laponie. +
+ +--- + +###
الهدف
+
+يهدف واي يونوهوست YunoHost إلى تسهيل عملية تنصيب و تثبيت و إدارة أي خادمٍ لأكبر عدد ممكن مِن الناس و ذلك دون المساس بجودة و موثوقية البرمجيات. + +لم يُدَّخر أي جهد لتسهيل عملية التنصيب و الإنبساط وذلك على أكبر عدد ممكن مِن الأجهزة مهما اختلفت مميزات كل جهاز (في المنزل أو على خادوم إستضافة أو على خادوم شخصي إفتراضي) +
+ +--- + +###
التسمية
+ +
+**YunoHost** مُستمَدٌّ مِن لُغة الإنترنت العاميّة « Y U NO Host » و بالمعنى التقريبي « لماذا لا تستضيف نفسك بنفسك ». [ميم الإنترنت](https://ar.m.wikipedia.org/wiki/%D9%85%D9%8A%D9%85_%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA) الذي يصف المعنى بالتقريب هو : +
+
+ +--- + +###
التطوير
+ +YunoHost est développé pour être le plus **simple** et le moins intrusif possible pour garder la compatibilité avec Debian. Il propose uniquement un ensemble de configurations automatiques et opère via des interfaces accessibles. + +Le tout est bien entendu **entièrement libre**. La philosophie de l’[الإستضافة الذاتية](selfhosting_fr) étant à nos yeux incompatible avec tout autre modèle de développement logiciel. + +لا تتردّدوا في زيارة صفحة « [ساهموا](/contribute_ar) ». +
+ +--- + +###
الأمان
+ +لقد بُذِلت كل المجهودات مِن أجل تأمين واي يونوهوست YunoHost و **تعمية و تشفير البروتوكولات** . بإمكانكم الإطلاع على الشرح بتفاصيليه [هنا](/security_fr). +
+--- + +###
واي يونوهوست YunoHost ليس + +Même si YunoHost est multi-domaine et multi-utilisateur, il reste **inapproprié pour un usage mutualisé**. + +Premièrement parce que le logiciel est trop jeune, donc non-testé et non-optimisé pour être mis en production pour des centaines d’utilisateurs en même temps. Et quand bien même, ce n’est pas le chemin que l’on souhaite faire suivre à YunoHost. La virtualisation se démocratise, et c’est une façon bien plus étanche et sécurisée de faire de la mutualisation. + +Vous pouvez héberger vos amis, votre famille ou votre entreprise sans problème, mais vous devez **avoir confiance** en vos utilisateurs, et ils doivent de la même façon avoir confiance en vous. Si vous souhaitez tout de même fournir des services YunoHost à des inconnus, **un VPS entier par utilisateur** sera la meilleure solution. +
\ No newline at end of file diff --git a/whatsyunohost_fr.md b/whatsyunohost_fr.md index 89dee539..52b474ec 100644 --- a/whatsyunohost_fr.md +++ b/whatsyunohost_fr.md @@ -13,7 +13,7 @@ Il est basé et reste totalement compatible avec [Debian GNU/Linux](https://debi - multi-domaines - un système d’emails - un serveur de messagerie instantanée -- un système d’authentifaction unique (SSO) +- un système d’authentification unique (SSO) - un système d’applications - un système de backup - un système de régénération de configuration des services @@ -54,7 +54,7 @@ En complément, YunoHost fournit un système d’« app » qui n’est autre q La chose la plus intéressante avec ce système est que **les applications web profitent de la base LDAP** via le SSO (Single Sign On), qui authentifie les utilisateurs du serveur avec un unique nom d’utilisateur/mot de passe. -Vous serez peut-être intéressé à la lecture de la [documentation sur le packaging](/packaging_apps_fr) et la page GitHub d’[SSOwat](https://github.com/Kloadut/SSOwat) pour aller plus loin. +Vous serez peut-être intéressé à la lecture de la [documentation sur le packaging](/packaging_apps_fr) et la page GitHub d’[SSOwat](https://github.com/YunoHost/SSOwat/) pour aller plus loin. @@ -74,7 +74,7 @@ YunoHost est un projet né en février 2012 à la suite d’à peu près ça :

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

Kload, février 2012
-Il ne manquait en fait qu’une interface d’administration au serveur de Beudbeud pour en faire quelque chose d’exploitable, alors Kload a décidé de la développer. Finalement, après l’automatisation de quelques configurations et le packaging de quelques applications web, YunoHost version 1 était sorti. +Il ne manquait en fait qu’une interface d’administration au serveur de Beudbeud pour en faire quelque chose d’exploitable, alors Kload a décidé de la développer. Finalement, après l’automatisation de quelques configurations et le packaging de quelques applications web, la première version de YunoHost était sortie. Constatant l’engouement croissant autour de YunoHost et de l’auto-hébergement en général, les développeurs et les nouveaux contributeurs ont alors décidé de prendre le cap d’une version 2, plus accessible, plus extensible, plus puissante, et qui prépare du bon café commerce équitable pour les lutins de Laponie. @@ -118,3 +118,17 @@ Même si YunoHost est multi-domaine et multi-utilisateur, il reste **inappropri Premièrement parce que le logiciel est trop jeune, donc non-testé et non-optimisé pour être mis en production pour des centaines d’utilisateurs en même temps. Et quand bien même, ce n’est pas le chemin que l’on souhaite faire suivre à YunoHost. La virtualisation se démocratise, et c’est une façon bien plus étanche et sécurisée de faire de la mutualisation. Vous pouvez héberger vos amis, votre famille ou votre entreprise sans problème, mais vous devez **avoir confiance** en vos utilisateurs, et ils doivent de la même façon avoir confiance en vous. Si vous souhaitez tout de même fournir des services YunoHost à des inconnus, **un VPS entier par utilisateur** sera la meilleure solution. + +--- + +# Logo + +Logo Yunohost noir et blanc réalisé par ToZz (400 × 400 px) : + + + + + +Cliquer pour télécharger. + +Licence: CC-BY-SA 4.0 diff --git a/write_documentation.md b/write_documentation.md index 3c2d9a8d..2a748942 100644 --- a/write_documentation.md +++ b/write_documentation.md @@ -2,9 +2,11 @@ ## Online -This site allows to edit content directly online. You can edit any page by pressing `ESC` on your keyboard or by clicking the "Edit" button on the bottom-right side of your screen. You will be able to preview your changes by pressing `ESC` again or by clicking the "preview" button. +This site allows to edit content directly online. -** Note: ** If you don't have any account you will have to send the modifications manually. +You can edit any page by pressing `ESC` on your keyboard or by clicking the "Edit" button on the bottom-right side of your screen. You will be able to preview your changes by pressing `ESC` again or by clicking the "preview" button. + +Once edited, you are able to submit your change by filling an email address. ## Via GitHub @@ -12,4 +14,4 @@ The YunoHost documentation is managed through a [git repository](https://github. ## Syntax -This page use the markdown syntax, please refer to the [documentation](http://daringfireball.net/projects/markdown/syntax) for further information. \ No newline at end of file +This page use the markdown syntax, please refer to the [documentation](https://guides.github.com/features/mastering-markdown/) for further information. diff --git a/write_documentation_fr.md b/write_documentation_fr.md index 6641c42e..2c280f83 100644 --- a/write_documentation_fr.md +++ b/write_documentation_fr.md @@ -1,19 +1,17 @@ # Rédaction de la documentation -## Sur le site +## Sur le site Ce site permet d’éditer le contenu directement en ligne. - -Pour éditer une page, appuyez pour la touche `Échap` ou cliquez sur le bouton « Éditer » en bas à droite de la page. Vous pourrez visualiser vos modifications en appuyant de nouveau sur `Échap`, ou en cliquant sur le bouton « Aperçu » en bas à droite de la page. -Une fois l’édition effectuée, vous pouvez soumettre vos modifications par mail, ou via un [compte](/accounting_fr). +Pour éditer une page, appuyez sur la touche `Échap` ou cliquez sur le bouton « Éditer » en bas à droite de la page. Vous pourrez visualiser vos modifications en appuyant de nouveau sur `Échap`, ou en cliquant sur le bouton « Aperçu » en bas à droite de la page. -** Note :** Si vous n’avez pas de compte, vous devrez envoyer vos modifications manuellement. +Une fois l’édition effectuée, vous pouvez soumettre vos modifications en renseignant un mail. -## Via GitHub +## Via GitHub -La documentation de YunoHost est gérée par un [dépot Git](https://github.com/YunoHost/doc). Vous pouvez envoyer des pull-requests. +La documentation de YunoHost est gérée par un [dépot Git](https://github.com/YunoHost/doc). Vous pouvez envoyer des pull-requests. ## Syntaxe -La documentation utilise la syntaxe Markdown. Veuillez vous référer à la [documentation](http://daringfireball.net/projects/markdown/syntax) pour plus d’informations. +La documentation utilise la syntaxe Markdown. Veuillez vous référer à la [documentation](https://guides.github.com/features/mastering-markdown/) (en) pour plus d’informations. diff --git a/ynh_dev_fr.md b/ynh_dev_fr.md deleted file mode 100644 index fe8f99a9..00000000 --- a/ynh_dev_fr.md +++ /dev/null @@ -1,91 +0,0 @@ -## Créer un environnement de développement - -
-Attention : cette page de documentation n’est plus à jour. Merci de vous référer à la [documentation du dépôt](https://github.com/YunoHost/ynh-dev). -
- -Ce document a pour but de donner les clés pour créer un environnement de développement correct afin de développer sur le cœur de YunoHost. Il peut également vous permettre de tester vos applications que ce soit avec les versions `stable`, `testing`, `unstable` ou même des versions customisées issues des branches des dépôts. - -### Installation de l’environnement de développement -#### Installation du système de virtualisation -Installer, avec le gestionnaire de paquet de votre système d’exploitation, Vagrant. - -```bash -# Debian, Ubuntu, Mint -sudo apt-get install vagrant -# Fedora -sudo dnf install vagrant -``` - -#### Télécharger `ynh-dev` -
-Attention : Cette partie est en cours de rédaction. La ligne de commande `ynh-dev` vient juste d’être créée il est possible qu’il y ait des manques. -
- -Une ligne de commande `ynh-dev` a été créée afin de simplifier la gestion de votre environnement de développement. - -```bash -wget https://raw.githubusercontent.com/yunohost/ynh-dev/master/ynh-dev -chmod u+x ynh-dev -``` -Pour créer votre environnement, commencez par faire un `create-env` -```bash -./ynh-dev create-env ~/project/my/yunohost/env -``` -Cette sous commande va cloner les dépôts principaux au fonctionnement de YunoHost et les positionner en `unstable`. Si vous avez vos propres fork, vous pouvez ensuite faire ce qu’il faut pour changer l’origine et le remote repository. - -#### Usage -##### Lancer un container -Positionner vous dans votre environnement, puis créer et entrer dans une vm à l’aide de `ynh-dev run` -```bash -cd ~/project/my/yunohost/env -./ynh-dev run exemple.local stable8 -root@yunohost:/# cd yunohost -root@yunohost:/yunohost/# ls -Dockerfile LICENSE README.md SSOwat apps backup moulinette ynh-dev yunohost yunohost-admin yunohost-vagrant -``` - -##### Mettre à jour un container -Si la vm n’est pas à jour lancez un `ynh-dev upgrade` : -```bash -root@yunohost:/yunohost/# ./ynh-dev upgrade -``` - -##### Déployer les sources présentes dans votre environnement -Pour déployer les sources se trouvant dans votre environnement de développement faites : -```bash -root@yunohost:/yunohost/# ./ynh-dev deploy -``` - -
-Attention : pour yunohost-admin vous devez avoir compilé le js avec gulp au préalable -
- -
-Note : vous pouvez sélectionner les paquets à déployer exemple : `./ynh-dev deploy yunohost yunohost-admin` -
- -##### Lancer la postinstall -Avec VirtualBox/Vagrant -```bash -root@yunohost:/yunohost/# yunohost tools postinstall -``` - -##### Récupérer l’IP de la vm et paramétrer son `/etc/hosts` -si vous ne connaissez pas l’IP de votre vm : -```bash -root@yunohost:/yunohost/# ./ynh-dev ip -172.17.0.1 -``` - -Pour tester dans votre navigateur vous pouvez modifier votre fichier `/etc/hosts` afin de faire pointer votre domaine sur la bonne adresse IP. Par exemple en y ajoutant une ligne semblable à celle-ci : -```bash -172.17.0.1 exemple.local -``` - -##### Déployer les sources au fur et à mesure des modifications -```bash -root@yunohost:/yunohost/# ./ynh-dev watch -``` - -Astuce : dans le cas de modification sur yunohost-admin, cette commande est très pratique couplée avec un `gulp watch` sur la machine hôte.