Merge pull request #4 from YunoHost/master

update fork
This commit is contained in:
Jaxom99 2020-07-06 11:00:17 +02:00 committed by GitHub
commit f6c2fb0f3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
41 changed files with 782 additions and 221 deletions

View file

@ -43,7 +43,7 @@ Here is an exhaustive list of XMPP clients : https://xmpp.org/software/clients.
## Encrypt conversations with OMEMO ## Encrypt conversations with OMEMO
XMPP chats can be made secure and private using [OMEMO] encryption (https://xmpp.org/extensions/xep-0384.html), for instance using Gajim: XMPP chats can be made secure and private using [OMEMO encryption](https://xmpp.org/extensions/xep-0384.html), for instance using Gajim:
- Install `gajim` and the plugin `gajim-omemo` - Install `gajim` and the plugin `gajim-omemo`
- Enable the plugin in `Tools > Plugins` - Enable the plugin in `Tools > Plugins`
- Enable it - Enable it

18
app_codimd.md Normal file
View file

@ -0,0 +1,18 @@
# <img src="/images/codimd_logo.png" height="80px" alt="CodiMDs logo"> CodiMD
[![Install CodiMD with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=codimd) [![Integration level](https://dash.yunohost.org/integration/codimd.svg)](https://dash.yunohost.org/appci/app/codimd)
### Index
- [Useful links](#useful-links)
CodiMD is a collaborative, real-time word processing web service. It uses Markdown language, which is a simple way to format text.
CodiMD offers a wide range of features for all common uses of word processing, including title management, table of contents, insertion of images, tables, footnotes, video overlay, PDF viewers, LaTeX mathematical expressions with MathJax, diagrams, etc.
Different levels of permission allow you to choose who can read or edit the document.
## Useful links
+ Official demo: [https://demo.codimd.org/](https://demo.codimd.org/)
+ Official documentation: [github.com/codimd](https://github.com/codimd/server/tree/master/docs/)
+ Application software repository: [github.com - YunoHost-Apps/codimd](https://github.com/YunoHost-Apps/codimd_ynh)
+ Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/codimd/issues](https://github.com/YunoHost-Apps/codimd_ynh/issues)

18
app_codimd_fr.md Normal file
View file

@ -0,0 +1,18 @@
# <img src="/images/codimd_logo.png" height="80px" alt="logo de CodiMD"> CodiMD
[![Installer CodiMD avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=codimd) [![Integration level](https://dash.yunohost.org/integration/codimd.svg)](https://dash.yunohost.org/appci/app/codimd)
### Index
- [Liens utiles](#liens-utiles)
CodiMD est un service web de traitement de texte collaboratif en temps réel. Il utilise le langage Markdown, qui est un moyen simple pour formater un texte.
CodiMD propose un vaste choix de fonctionnalités pour toutes les utilisations courantes du traitement de texte parmi lesquelles gestion des titres, table de matières, insertion dimages, tableaux, notes de bas de page, incrustation de vidéos, visualisateurs PDF, expressions mathématiques LaTeX avec MathJax, diagrammes, etc.
Différents niveaux de permission permettent de choisir qui peut lire ou éditer le document.
## Liens utiles
+ Démo officielle : [https://demo.codimd.org/](https://demo.codimd.org/)
+ Documentation officielle : [github.com/codimd](https://github.com/codimd/server/tree/master/docs/)
+ Dépôt logiciel de lapplication : [github.com - YunoHost-Apps/codimd](https://github.com/YunoHost-Apps/codimd_ynh)
+ Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com -YunoHost-Apps/codimd/issues](https://github.com/YunoHost-Apps/codimd_ynh/issues)

View file

@ -1,6 +1,6 @@
# <img src="/images/gitlab_logo.svg" height="80px" alt="Gitlab's logo"> Gitlab # <img src="/images/gitlab_logo.svg" height="80px" alt="GitLab's logo"> GitLab
[![Install gitlab with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=gitlab) [![Integration level](https://dash.yunohost.org/integration/gitlab.svg)](https://dash.yunohost.org/appci/app/gitlab) [![Install GitLab with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=gitlab) [![Integration level](https://dash.yunohost.org/integration/gitlab.svg)](https://dash.yunohost.org/appci/app/gitlab)
### Index ### Index
@ -8,11 +8,11 @@
- [Customer Applications](#customer-applications) - [Customer Applications](#customer-applications)
- [Useful links](#useful-links) - [Useful links](#useful-links)
Gitlab is a very complete software forge whose development is very dynamic: a new version is released every 22nd of the month. Gitlab is an open core software: there is a free community version and a proprietary enterprise version with more features. [¹](#sources) GitLab is a Git web app forge very complete whith a dynamic development (a new version is released every 22nd of the month). GitLab is an open core software with two versions: A free community version and a proprietary enterprise version with more features. [¹](#sources)
## Limitations with YunoHost ## Limitations with YunoHost
The Gitlab application is not compatible with 32-bit architectures. The GitLab application is not compatible with 32-bit architectures.
## Customer applications ## Customer applications
@ -31,4 +31,4 @@ The Gitlab application is not compatible with 32-bit architectures.
### Sources ### Sources
¹ [framalibre.org - gitlab (fr)](https://framalibre.org/content/gitlab) ¹ [framalibre.org - GitLab (fr)](https://framalibre.org/content/gitlab)

View file

@ -1,6 +1,6 @@
# <img src="/images/gitlab_logo.svg" height="80px" alt="logo de Gitlab"> Gitlab # <img src="/images/gitlab_logo.svg" height="80px" alt="logo de GitLab"> GitLab
[![Install gitlab with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=gitlab) [![Integration level](https://dash.yunohost.org/integration/gitlab.svg)](https://dash.yunohost.org/appci/app/gitlab) [![Install GitLab with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=gitlab) [![Integration level](https://dash.yunohost.org/integration/gitlab.svg)](https://dash.yunohost.org/appci/app/gitlab)
### Index ### Index
@ -8,11 +8,11 @@
- [Applications clientes](#applications-clientes) - [Applications clientes](#applications-clientes)
- [Liens utiles](#liens-utiles) - [Liens utiles](#liens-utiles)
Gitlab est une forge logicielle très complète et dont le développement est très dynamique : une nouvelle version sort tous les 22 du mois. Elle permet d'héberger des projets collaboratif en utilisant Git et des gérer des discussions, rapports de bugs, documentation... Gitlab est un logiciel en open core : il existe une version communautaire libre et une version entreprise propriétaire possédant plus de fonctionnalités.[¹](#sources) GitLab est une forge logicielle très complète dont le développement est très dynamique (une nouvelle version sort tous les 22 du mois). Elle permet d'héberger des projets collaboratifs utilisant Git ainsi que gérer des discussions, des rapports de bugs et la documentation... GitLab est un logiciel open source qui existe deux versions, une version communautaire libre et une version entreprise propriétaire possédant plus de fonctionnalités.[¹](#sources)
## Limitations avec YunoHost ## Limitations avec YunoHost
L'application Gitlab n'est pas compatible avec les architecture 32-bit. L'application GitLab n'est pas compatible avec les architectures 32-bit.
## Applications clientes ## Applications clientes
@ -31,4 +31,4 @@ L'application Gitlab n'est pas compatible avec les architecture 32-bit.
### Sources ### Sources
¹ [framalibre.org - gitlab](https://framalibre.org/content/gitlab) ¹ [framalibre.org - GitLab](https://framalibre.org/content/gitlab)

View file

@ -1,3 +1,3 @@
#<img src="/images/jappix.png">Jappix # <img src="/images/jappix_logo.png" height="80px" alt="Jappix logo"> Jappix
Jappix is a web client for [XMPP](/XMPP). Jappix is a web client for [XMPP](/XMPP).

View file

@ -1,3 +1,3 @@
#<img src="/images/jappix.png">Jappix # <img src="/images/jappix_logo.png" height="80px" alt="Jappix logo"> Jappix
Jappix est un client web [XMPP](/XMPP). Jappix est un client web [XMPP](/XMPP).

View file

@ -1,6 +1,6 @@
# <img src="/images/lufi_logo.svg" width="80px" alt="Lufi's logo"> Lufi # <img src="/images/lufi_logo.svg" width="80px" alt="Lufi's logo"> Lufi
[![Install lufi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi) [![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) [![Install Lufi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi) [![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi)
### Index ### Index
@ -13,7 +13,7 @@ The administrator can only see the file name, size and mime type (file type: vid
## Useful links ## Useful links
+ Website: [Framagit.org/luc/lufi](https://framagit.org/luc/lufi) + Website: [Framagit.org/luc/lufi](https://framagit.org/luc/lufi)
+ Demonstration : [demo.lufi.io](https://demo.lufi.io/) + Demonstration: [demo.lufi.io](https://demo.lufi.io/)
+ Official documentation : [Framagit.org - fiat-tux](https://framagit.org/fiat-tux/hat-softwares/lufi/-/wikis/home) + Official documentation: [Framagit.org - fiat-tux](https://framagit.org/fiat-tux/hat-softwares/lufi/-/wikis/home)
+ Application software repository: : [github.com - YunoHost-Apps/lufi](https://github.com/YunoHost-Apps/lufi_ynh) + Application software repository: [github.com - YunoHost-Apps/lufi](https://github.com/YunoHost-Apps/lufi_ynh)
+ Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/lufi/issues](https://github.com/YunoHost-Apps/lufi_ynh/issues) + Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/lufi/issues](https://github.com/YunoHost-Apps/lufi_ynh/issues)

View file

@ -1,6 +1,6 @@
# <img src="/images/lufi_logo.svg" width="80px" alt="logo de Lufi"> Lufi # <img src="/images/lufi_logo.svg" width="80px" alt="logo de Lufi"> Lufi
[![Install lufi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi) [![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) [![Installer Lufi avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=lufi) [![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi)
### Index ### Index
@ -16,7 +16,7 @@ Ladministrateur ne peut voir que le nom du fichier, sa taille et son type mim
+ Site web : [Framagit.org/luc/lufi](https://framagit.org/luc/lufi) + Site web : [Framagit.org/luc/lufi](https://framagit.org/luc/lufi)
+ Site de démonstration : [demo.lufi.io](https://demo.lufi.io/) + Site de démonstration : [demo.lufi.io](https://demo.lufi.io/)
+ Documentation officielle : [Framagit.org - fiat-tux](https://framagit.org/fiat-tux/hat-softwares/lufi/-/wikis/home) + Documentation officielle : [Framagit.org - fiat-tux](https://framagit.org/fiat-tux/hat-softwares/lufi/-/wikis/home)
+ Dépôt logiciel de lufi : [github.com - YunoHost-Apps/lufi](https://github.com/YunoHost-Apps/lufi_ynh) + Dépôt logiciel de Lufi : [github.com - YunoHost-Apps/lufi](https://github.com/YunoHost-Apps/lufi_ynh)
+ Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com - YunoHost-Apps/lufi/issues](https://github.com/YunoHost-Apps/lufi_ynh/issues) + Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com - YunoHost-Apps/lufi/issues](https://github.com/YunoHost-Apps/lufi_ynh/issues)
### Sources ### Sources

17
app_shaarli_fr.md Normal file
View file

@ -0,0 +1,17 @@
# Shaarli
## Présentation
Shaarli est un clone libre de feu del.icio.us : il s'agit d'une application légère permettant d'archiver et de partager des marque-pages, étiquetés à l'aide de tags. Chaque marque-page peut être "public" ou "privé", et peut recevoir une note descriptive.
Le moteur de recherche intégré à l'application interroge les tags, le titre des pages archivées, ainsi que le contenu de l'éventuelle note associée. Il est ainsi très aisé de retrouver une marque-page, même plusieurs années après son enregistrement.
L'enregistrement d'une page peut s'effectuer de plusieurs façons : grâce à un bookmarklet, depuis l'application elle-même, ou depuis une application Android.
Shaarli est intéressant pour toutes celles et tous ceux qui souhaitent conserver la trace de pages Web et y accéder depuis partout, et ce sans surcharger les marque-pages (ou "favoris") de leur navigateur.
## Liens utiles
- [Page officielle](https://sebsauvage.net/wiki/doku.php?id=php:shaarli) de Shaarli
- [Application Shaarlier](https://f-droid.org/fr/packages/com.dimtion.shaarlier/) sur Android
- [Fil de discussion](https://forum.yunohost.org/t/shaarli-version-0-10-4/2200) concernant Shaarli sur le forum

View file

@ -1,20 +1,29 @@
# <img src="/images/ttrss.png">Tiny Tiny RSS # <img src="/images/ttrss.png" width="80px" alt="logo de Tiny Tiny RSS"> Tiny Tiny RSS
Tiny Tiny RSS is a news feed reader using RSS and atom protocols. [![Install Tiny Tiny RSS with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=ttrss) [![Integration level](https://dash.yunohost.org/integration/ttrss.svg)](https://dash.yunohost.org/appci/app/ttrss)
### Index
- [Liens utiles](#liens-utiles)
Tiny Tiny RSS is a news feed reader using RSS and Atom protocols.
### Exporting/importing feeds ### Exporting/importing feeds
TTRSS allows you to save your feeds in opml format. Tiny Tiny RSS allows you to save your feeds in opml format.
In order to do so, go to Actions -> Configuration -> feed tab -> OPML section -> Export/Import OPML. In order to do so, go to Actions -> Configuration -> feed tab -> OPML section -> Export/Import OPML.
### Android Client ### Android Client
You can read your feeds on Android using ttrss-reader application: You can read your feeds on Android using ttrss-reader application: **[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)**
**[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)** To use it, you need to go to Actions -> Configuration, in Tiny Tiny RSS web interface and select "Activate API".
Then, in your android ttrss-reader, fill the Tiny Tiny RSS server adress: https://yourdomain.org/ttrss, username, password (no need to use HTTP authentification).
To use it, you need to go to Actions -> Configuration, in TTRSS web interface and select "Activate API". **Note**: you may need to uninstall and reinstall the Tiny Tiny RSS application through the YunoHost admin panel in order to be able to connect.
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. ## Useful links
* [Tiny Tiny RSS Website](https://git.tt-rss.org/git/tt-rss/wiki) + Website: [git.tt-rss.org/git/tt-rss/wiki](https://git.tt-rss.org/git/tt-rss/wiki)
+ Official documentation: (login as `demo`, `demo`): [srv.tt-rss.org/tt-rss/](https://srv.tt-rss.org/tt-rss/)
+ Application software repository: [github.com - YunoHost-Apps/ttrss](https://github.com/YunoHost-Apps/ttrss_ynh)
+ Fix a bug or an improvement by creating a ticket (issue): [github.com - YunoHost-Apps/ttrss/issues](https://github.com/YunoHost-Apps/ttrss_ynh/issues)

View file

@ -1,21 +1,31 @@
# <img src="/images/ttrss.png">Tiny Tiny RSS # <img src="/images/ttrss.png" width="80px" alt="logo de Tiny Tiny RSS"> Tiny Tiny RSS
Tiny Tiny RSS est un lecteur de flux dactualité utilisant les protocoles RSS et atom. [![Installer Tiny Tiny RSS avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=ttrss) [![Integration level](https://dash.yunohost.org/integration/ttrss.svg)](https://dash.yunohost.org/appci/app/ttrss)
### Index
- [Liens utiles](#liens-utiles)
Tiny Tiny RSS est un lecteur de flux dactualité utilisant les protocoles RSS et Atom.
### Exportation/importation des flux ### Exportation/importation des flux
Il est possible de faire une sauvegarde de ces flux dactualité en format opml. Il est possible de faire une sauvegarde de ces flux dactualité en format opml.
Pour cela, il faut aller dans Actions -> Configuration -> onglet flux -> chapitre OPML -> Exporter/Importer en OPML. Pour cela, il faut aller dans Actions -> Configuration -> onglet flux -> chapitre OPML -> Exporter/Importer en OPML.
### Client Android ### Client Android
Il est possible dutiliser le client Android ttrss-reader pour consulter ces flux : Il est possible dutiliser le client Android ttrss-reader pour consulter ces flux : **[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)**
**[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)**
Sur linterface web, dans Actions -> Configuration, cochez « Activer laccès par API » Sur linterface web, dans Actions -> Configuration, cochez « Activer laccès par API »
puis dans ttrss-reader sur Android, ladresse du serveur TTRSS : « https://votredomaine.org/ttrss », nom dutilisateur, mot de passe. (pas besoin dutiliser lauthentification HTTP) puis dans ttrss-reader sur Android, ladresse du serveur Tiny Tiny RSS : https://votredomaine.org/ttrss, nom dutilisateur, mot de passe. (pas besoin dutiliser lauthentification HTTP)
**Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement lapp ttrss via ladministration de YunoHost pour que la connexion puisse se faire. **Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement l'application Tiny Tiny RSS via ladministration de YunoHost pour que la connexion puisse se faire.
* [Site de Tiny Tiny RSS](https://git.tt-rss.org/git/tt-rss/wiki) ## Liens utiles
+ Site web : [git.tt-rss.org/git/tt-rss/wiki](https://git.tt-rss.org/git/tt-rss/wiki)
+ Site de démonstration (login : `demo`, `demo`): [srv.tt-rss.org/tt-rss/](https://srv.tt-rss.org/tt-rss/)
+ Dépôt logiciel de Tiny Tiny RSS : [github.com - YunoHost-Apps/ttrss](https://github.com/YunoHost-Apps/ttrss_ynh)
+ Remonter un bug ou une amélioration en créant un ticket (issue) : [github.com - YunoHost-Apps/ttrss/issues](https://github.com/YunoHost-Apps/ttrss_ynh/issues)

View file

@ -51,11 +51,11 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Goaccess](https://goaccess.io) Web log analyser (replaces piwik without js tracking scripts) / [github](https://github.com/allinurl/goaccess) - [Goaccess](https://goaccess.io) Web log analyser (replaces piwik without js tracking scripts) / [github](https://github.com/allinurl/goaccess)
- [Gollum](https://github.com/gollum/gollum) - [Gollum](https://github.com/gollum/gollum)
- [Goploader](https://github.com/Depado/goploader) - [Goploader](https://github.com/Depado/goploader)
- [Gpodder.net](https://gpoddernet.readthedocs.io/en/latest/index.html)
- [Granary](https://github.com/snarfed/granary) - [Granary](https://github.com/snarfed/granary)
- [Graphhopper](https://www.graphhopper.com/) / [github](https://github.com/graphhopper/graphhopper#get-started) or other routing service that can be plugged to [Nextcloud Maps](https://apps.nextcloud.com/apps/maps), e.g. OSRM (see below) - [Graphhopper](https://www.graphhopper.com/) / [github](https://github.com/graphhopper/graphhopper#get-started) or other routing service that can be plugged to [Nextcloud Maps](https://apps.nextcloud.com/apps/maps), e.g. OSRM (see below)
- [Guacamole](http://guacamole.apache.org/) - [Guacamole](http://guacamole.apache.org/)
- [Habitica](https://habitica.com/) / [github](https://github.com/HabitRPG/habitica) - [Habitica](https://habitica.com/) / [github](https://github.com/HabitRPG/habitica)
- [HackMD CE](https://github.com/hackmdio/hackmd)
- [Helpy](https://github.com/helpyio/helpy) - [Helpy](https://github.com/helpyio/helpy)
- [Hexo](https://hexo.io/) / [github](https://github.com/hexojs/hexo) - [Hexo](https://hexo.io/) / [github](https://github.com/hexojs/hexo)
- [Icecast 2](http://www.icecast.org) / [gitlab](https://gitlab.xiph.org/xiph/icecast-server/) - [Icecast 2](http://www.icecast.org) / [gitlab](https://gitlab.xiph.org/xiph/icecast-server/)
@ -100,6 +100,7 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Omeka S](https://omeka.org/s/) / [github](https://github.com/omeka/omeka-s) - [Omeka S](https://omeka.org/s/) / [github](https://github.com/omeka/omeka-s)
- [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar) - [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar)
- [OpenCart](https://www.opencart.com) / [github](https://github.com/opencart/opencart) - [OpenCart](https://www.opencart.com) / [github](https://github.com/opencart/opencart)
- [OpenEats](https://open-eats.github.io/) / [github](https://github.com/open-eats/OpenEats)
- [openHAB](https://www.openhab.org/) - Smart home platform. / [github](https://github.com/openhab) - [openHAB](https://www.openhab.org/) - Smart home platform. / [github](https://github.com/openhab)
- [OpenProject](https://github.com/opf/openproject) - [OpenProject](https://github.com/opf/openproject)
- [OpenSourceBilling](https://github.com/vteams/open-source-billing) - [OpenSourceBilling](https://github.com/vteams/open-source-billing)
@ -121,6 +122,7 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [Pydio Cells](https://pydio.com/) A file sync and sharing software written in go. / [github](https://github.com/pydio/cells) - [Pydio Cells](https://pydio.com/) A file sync and sharing software written in go. / [github](https://github.com/pydio/cells)
- [Pump.io](http://pump.io) / [github](https://github.com/pump-io/pump.io) - [Pump.io](http://pump.io) / [github](https://github.com/pump-io/pump.io)
- [qBittorrent](https://github.com/qbittorrent/qBittorrent) - [qBittorrent](https://github.com/qbittorrent/qBittorrent)
- [Questions2answer](https://www.question2answer.org/)
- [racktables](http://racktables.org) / [github](https://github.com/RackTables/racktables) - [racktables](http://racktables.org) / [github](https://github.com/RackTables/racktables)
- [Radarr](https://github.com/Radarr/Radarr) - [Radarr](https://github.com/Radarr/Radarr)
- [Request Tracker](https://bestpractical.com) / [github](https://github.com/bestpractical/rt) - [Request Tracker](https://bestpractical.com) / [github](https://github.com/bestpractical/rt)
@ -147,6 +149,7 @@ The following list is a compiled wishlist of applications that would be nice-to-
- [TMate](https://tmate.io/) / [github](https://github.com/tmate-io/tmate) - [TMate](https://tmate.io/) / [github](https://github.com/tmate-io/tmate)
- [Tracim](https://github.com/tracim/tracim) - [Tracim](https://github.com/tracim/tracim)
- [Thredded](https://thredded.org/) / [github](https://github.com/thredded/thredded) - [Thredded](https://thredded.org/) / [github](https://github.com/thredded/thredded)
- [Tryton](https://www.tryton.org/) A solid ERP system. GNU Health uses this as well.
- [Twister](http://twister.net.co) / [github](https://github.com/miguelfreitas/twister-core/) - [Twister](http://twister.net.co) / [github](https://github.com/miguelfreitas/twister-core/)
- [TwitRSS.me](http://twitrss.me/) / [Github](https://github.com/ciderpunx/twitrssme) Scrapes Twitter to create RSS feeds. - [TwitRSS.me](http://twitrss.me/) / [Github](https://github.com/ciderpunx/twitrssme) Scrapes Twitter to create RSS feeds.
- [Uwazi](https://www.uwazi.io/) / [Github](https://github.com/huridocs/uwazi) - [Uwazi](https://www.uwazi.io/) / [Github](https://github.com/huridocs/uwazi)

View file

@ -118,12 +118,15 @@ yunohost backup restore <archivename>
### Storing backups on a different drive ### 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. If you want, you can connect and mount an external drive to store backup archives on it (among other things). For this, plug in the drive and make sure that next time it is mounted automatically, by following the instruction at [Adding an external storage to your server](https://yunohost.org/#/external_storage).
Then, move the existing archives and then add a symbolic link.
```bash ```bash
PATH_TO_DRIVE="/media/my_external_drive" # For instance, depends of where you mounted your drive 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 mkdir $PATH_TO_DRIVE/yunohost_backup_archives # On your external drive create the folder where the backups will go
ln -s $PATH_TO_DRIVE/yunohost_backup_archives /home/yunohost.backup/archives mv /home/yunohost.backup/archives $PATH_TO_DRIVE/yunohost_backup_archives # Move the archive folder including existing backups (if you made them) to the new folder on the external drive
ln -s $PATH_TO_DRIVE/yunohost_backup_archives /home/yunohost.backup/archives # Create a symbolic link from the old local folder to the new folder on the external drive
``` ```
### Automatic backups ### Automatic backups

View file

@ -32,7 +32,7 @@ bug tracker est [ici](https://github.com/yunohost/issues/issues) !
C'est un petit framework "fait maison". [Son rôle principal](https://moulinette.readthedocs.io/en/latest/actionsmap.html) C'est un petit framework "fait maison". [Son rôle principal](https://moulinette.readthedocs.io/en/latest/actionsmap.html)
est de permettre de construire une API Web et une API en ligne de commande à partir d'un même code Python et d'un schéma YAML que nous appelons est de permettre de construire une API Web et une API en ligne de commande à partir d'un même code Python et d'un schéma YAML que nous appelons
[l'actionmap] (https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/actionsmap/yunohost.yml). [l'actionmap](https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/actionsmap/yunohost.yml).
Il prend en charge d'autres mécanismes tels que l'authentification, l'internationalisation et des petites fonctions utilitaires techniques (par ex. lecture/écriture de fichiers json). Il prend en charge d'autres mécanismes tels que l'authentification, l'internationalisation et des petites fonctions utilitaires techniques (par ex. lecture/écriture de fichiers json).

View file

@ -1,53 +1,10 @@
# Diagnose YunoHost functioning # Diagnose YunoHost functioning
If you have successfully [installed](/install) YunoHost and passed through the [post-installation](/postinstall), you probably have a **working server**. To diagnose that all critical aspects of your server are properly configured,
you should run a diagnosis from the webadmin in the "Diagnosis" section. (This
feature was added in Yunohost 3.8).
### <small>1.</small> Test it TODO: elaborate on the fact that the diagnosis runs periodically, sends an email
to root which is forwarded to the very first user created, and that issues
In a web browser, access to your server via the domain name you just entered at the post-installation step. should either be fixed or ignored (if they are understood/not relevant)
otherwise an email will be sent twice a day..
For example: `http://mydomain.com`
<div class="alert alert-warning">
If you have taken a <b>.nohost.me</b> or a <b>.noho.st</b> domain, you may have to wait 5 min before the address is reachable.
</div>
---
#### If that does not work...
---
### <small>2.</small> Have you configured your DNS well ?
<div class="alert alert-info">
This step is not necessary if you have a <b>.nohost.me</b> or a <b>.noho.st</b> domain
</div>
Go to https://www.whatsmydns.net/ , enter your domain name in the field and click `Search`.
If you do not see your IP address, or if there are red crosses everywhere, then you have probably misconfigured your [DNS](/dns).
---
### <small>3.</small> Are network ports opened on your router ?
If your DNS is properly configured, and your server is accessible locally, you may have **network ports blocked** or it may not be forwarded by your router.
In order to verify this, try accessing your server with a client outside your local network. For example via another WiFi access point or with your mobile phone in 3G/4G.
If the server is unreachable from outside your local network too, then the problem probably comes from your router's configuration.
<div class="alert alert-info">
Try to activate uPnP in your router's configuration interface, and check that your server is plugged in Ethernet directly behind it.
<p>
You can also redirect ports manually to your server's local IP address on the router's configuration interface.
</p>
</div>
---
### <small>4.</small> 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 <a href="https://en.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
Here is a [tutorial](dns_local_network) to access your server on a local network and bypass the hairpinning problem. The tutorial proposes a first solution to create a redirection with DNS of the ISP box and a second solution to modify the `hosts` file of the **clients** to instruct it to access the **server** via its local IP address. The first solution is preferable because it's not necessary to modify the `hosts` files on every computer on your local network, if you are using many different clients.

View file

@ -1,55 +1,12 @@
# Diagnostic du bon fonctionnement de YunoHost # Diagnostic du bon fonctionnement de YunoHost
Si vous avez réussi l[installation](/install) de YunoHost et passé létape de [post-installation](/postinstall), vous avez probablement un **serveur fonctionnel**. Pour vérifier que tous les aspects critiques de votre serveur sont correctement
configurés, il est recommandé d'utiliser le système de diagnostic disponible
dans la webadmin de YunoHost. (Cette fonctionnalité a été ajoutée dans la version
3.8)
### <small>1.</small> Essayer TODO: elaborer le fait que le diagnostique tourne périodiquement, qu'un email
est envoyé à root qui est normalement forwardé vers le premier utilisateur créé,
Dans un navigateur web, essayez daccéder à votre serveur grâce au nom de domaine que vous avez entré à létape de post-installation. que les problèmes trouvés doivent soient être réglé, soit ignorés (si ils sont
compris ou ne sont pas pertinents) autrement un mail est envoyé deux fois par
Par exemple : `http://mondomaine.org` jour...
<div class="alert alert-warning">
Si vous avez opté pour un nom de domaine se terminant par <b>.nohost.me</b> ou <b>.noho.st</b>, vous devrez patienter cinq minutes avant que ladresse soit atteignable.
</div>
---
#### Si ça ne fonctionne pas…
---
### <small>2.</small> Avez-vous bien configuré votre DNS?
<div class="alert alert-info">
Cette étape nest pas nécessaire si vous possédez un nom de domaine en <b>.nohost.me</b> ou un <b>.noho.st</b>
</div>
Rendez-vous sur https://www.whatsmydns.net/, entrez votre nom de domaine dans le champ prévu à cet effet et cliquez sur `Search`. Si vous ne voyez pas votre adresse IP, ou sil y a des croix rouges par endroits, cela signifie que vous avez probablement mal configuré votre [DNS](/dns).
---
### <small>3.</small> Est-ce que les ports de votre box/routeur sont ouverts?
Si vos DNS sont bien configurés, et que le serveur est accessible localement, vous avez probablement des **ports bloqués** sur votre box/routeur ou non dirigés vers votre serveur.
Afin de le vérifier, essayez daccéder à votre serveur avec un client extérieur au réseau local. Par exemple grâce à un autre accès Wi-Fi ou avec un smartphone en 3G/4G.
Si le serveur est inatteignable depuis lextérieur du réseau local, le problème vient probablement de la configuration du routeur.
<div class="alert alert-info">
Essayez dactiver luPnP sur linterface de configuration de votre box/routeur, et vérifiez que le serveur y est directement connecté en Ethernet.
<p>
Vous pouvez également rediriger les ports manuellement vers ladresse IP locale de votre serveur grâce à linterface de configuration de votre box/routeur.
</p>
</div>
---
### <small>4.</small> Est-ce que votre box/routeur fait du hairpinning?
Si le serveur est accessible de lextérieur, mais inatteignable via son nom de domaine dans votre réseau local, votre box/routeur ne fait probablement pas correctement de <a href="https://fr.wikipedia.org/wiki/Hairpinning" target="_blank">hairpinning</a>.
Voici un [tutoriel](/dns_local_network) pour pouvoir accéder à son serveur en réseau local et contourner le problème de hairpinning. Le tutoriel propose en première solution de mettre en place une redirection avec le DNS de la box et en seconde solution de modifier le fichier `hosts` des **clients** pour indiquer quil doit accéder au **serveur** via son IP locale. La première solution est préférable car il ne nécessite pas de modifier le fichier `hosts` sur chacun des clients du réseau local.
___
Sinon, retentez linstallation en prenant cette fois un nom de domaine en **.nohost.me** ou en **.noho.st**.

View file

@ -14,8 +14,8 @@ interface.
NB: Examples here use the placeholder `your.domain.tld`, you have to replace it with your real domain, such as `www.yunohost.org`. NB: Examples here use the placeholder `your.domain.tld`, you have to replace it with your real domain, such as `www.yunohost.org`.
YunoHost provides a recommended DNS configuration, available via : YunoHost provides a recommended DNS configuration, available via:
- the webadmin, in Domain > your.domain.tld > DNS configuration ; - the webadmin, in Domain > your.domain.tld > DNS configuration;
- or the command line, `yunohost domain dns-conf your.domain.tld` - 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 For specific needs or specific setups, and if you know what you're doing, you
@ -77,12 +77,32 @@ Though it might be easier to understand it if displayed like this:
#### A few notes about this table #### A few notes about this table
- Not all these lines are absolutely necessary. For a minimal setup, you only need the records in bold. - 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 ;) ; - 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` ; - `@` 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 ; - 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 ; - 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. - 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.
### Reverse DNS
If your ISP or VPS provider let you define a [Reverse DNS
lookup](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) for your public IPv4
and/or IPv6 addresses, you must configure it. It will prevent you to be marked as
spam by anti-spam filters.
**N.B. : the reverse DNS configuration happens on your Internet Service Provider or VPS provider. It is *not* handled by your domain's registrar.**
If your public IPv4 address is `111.222.333.444` and your DNS
domain is `domain.tld`, you should get following answer when using `nslookup`
command tool:
```shell
$ nslookup 111.222.333.444
444.333.222.111.in-addr.arpa name = domain.tld.
```
The diagnosis system available in the webadmin performs this checks automatically (in section Email).
### Dynamic IP ### Dynamic IP
If your global IP address is constantly changing, follow this [tutorial](/dns_dynamicip). If your global IP address is constantly changing, follow this [tutorial](/dns_dynamicip).

View file

@ -84,6 +84,27 @@ suivante :
- 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 ; - 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. - 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.
### Résolution DNS inverse
Si votre opérateur ou votre hébergeur le permet, nous vous encourageons à
configurer une [résolution DNS
inverse](https://fr.wikipedia.org/wiki/Domain_Name_System#R%C3%A9solution_inverse)
pour vos adresses publiques IPv4 et/ou IPv6. Ceci vous évitera d'être marqué
comme spammeur par les systèmes de filtrage anti-spams.
**N.B. : la configuration du DNS inverse se passe au niveau de votre Fournisseur d'Accès à Internet, ou de votre hébergeur de VPS. Elle ne se fait *pas* sur le registrar de votre nom de domaine.**
Cela signifie que si votre adresse IPv4 publique est `111.222.333.444` et que
votre nom de domaine est `domain.tld`, vous devez obtenir le résultat suivant
en utilisant la commande `nslookup` :
```shell
$ nslookup 111.222.333.444
444.333.222.111.in-addr.arpa name = domain.tld.
```
Le système de diagnostique présent dans l'interface d'administration fait cette vérification automatiquement (dans la section Email)
### IP Dynamique ### IP Dynamique
Si votre adresse IP publique change constamment, suivez ce [tutoriel](/dns_dynamicip). Si votre adresse IP publique change constamment, suivez ce [tutoriel](/dns_dynamicip).

View file

@ -18,17 +18,17 @@ have **one such domain** setup at any given time.
#### Subdomains #### Subdomains
The `nohost.me`, `noho.st` and `ynh.fr` domain service does not allow the creation of The `nohost.me`, `noho.st` and `ynh.fr` domain service does allow the creation of
subdomains. subdomains.
Even if YunoHost allows the installation of applications on subdomains (for YunoHost allows the installation of applications on subdomains (for
example, having the Owncloud application accessible from the example, having the Owncloud application accessible from the
`cloud.mydomain.org` address), this feature is not allowed with the `nohost.me` `cloud.mydomain.org` address), this feature is also allowed with the
and `noho.st` domains and it is not possible to have a subdomain such as `my `nohost.me`, `noho.st` and `ynh.fr` domains and so it is possible to
application.mydomain.nohost.me`. have a subdomain such as `my.application.mydomain.nohost.me`. to create
a subdomain for `nohost.me`, `noho.st` and `ynh.fr` domain you just have
to add the subdomain to yunohost like any other domains.
To be able to enjoy applications that can only be installed at the root of a
domain name, you must have your own domain name.
### Adding a nohost.me, noho.st or ynh.fr domain after the post-installation ### Adding a nohost.me, noho.st or ynh.fr domain after the post-installation

View file

@ -14,11 +14,11 @@ YunoHost.
### Sous-domaines ### Sous-domaines
Le service de domaines `nohost.me`, `noho.st` et `ynh.fr` n'autorise pas la création de sous-domaines. Le service de domaines `nohost.me`, `noho.st` et `ynh.fr` autorise la création de sous-domaines.
Même si YunoHost permet l'installation d'applications sur des sous-domaines (par exemple avoir l'application Owncloud accessible depuis l'adresse `cloud.mondomaine.org`), cette fonctionnalité n'est pas permise avec les domaines `nohost.me` et `noho.st` et il nest pas possible davoir un sous-sous-domaine tel `monapplication.mondomaine.nohost.me`. YunoHost permet l'installation d'applications sur des sous-domaines (par exemple avoir l'application Owncloud accessible depuis l'adresse `cloud.mondomaine.org`), cette fonctionnalité est aussi permise avec les domaines `nohost.me`, `noho.st` et `ynh.fr` et il est donc possible davoir un sous-sous-domaine tel `monapplication.mondomaine.nohost.me`.
Pour pouvoir profiter des applications installables uniquement à la racine dun nom de domaine, il faut avoir son propre nom de domaine. Pour créer un sous domaine à un domaine `nohost.me`, `noho.st` et `ynh.fr` il suffit d'ajouter celui-ci à Yunohost de la même manière que n'importe quel autre nom de domaine.
### Ajouter un domaine nohost.me, noho.st ou ynh.fr après la post-installation ### Ajouter un domaine nohost.me, noho.st ou ynh.fr après la post-installation

View file

@ -27,6 +27,7 @@ YunoHost's documentation has 2 different sections:
* [Chat rooms](/chat_rooms) * [Chat rooms](/chat_rooms)
* [Communication](/communication) * [Communication](/communication)
* [Support / Help](/help) * [Support / Help](/help)
* [Sponsors and partners](/sponsors_partners)
* Use example: * Use example:
* [YunoHost for non-profit organisations](/use_case_non-profit_organisations) * [YunoHost for non-profit organisations](/use_case_non-profit_organisations)

View file

@ -27,6 +27,7 @@ La documentation de YunoHost sarticule autour de deux sections :
* [Salons de discussions](/chat_rooms) * [Salons de discussions](/chat_rooms)
* [Communication extérieure](/communication) * [Communication extérieure](/communication)
* [Support / Aide](/help) * [Support / Aide](/help)
* [Mécénes et partenaires](/sponsors_partners_fr)
* Exemple d'utilisation: * Exemple d'utilisation:
* [YunoHost pour les organisations à but non lucratif](/use_case_non-profit_organisations) * [YunoHost pour les organisations à but non lucratif](/use_case_non-profit_organisations)

View file

@ -171,6 +171,7 @@ $ yunohost user permission update mail --remove all_users --add bob
``` ```
The webadmin will issue a warning if you set a permission that is superseeded by a wider permission. The webadmin will issue a warning if you set a permission that is superseeded by a wider permission.
![](./images/groups_alerte-permission.png) ![](./images/groups_alerte-permission.png)
Notes for apps packagers Notes for apps packagers

View file

@ -39,7 +39,6 @@ groups:
- delphine - delphine
``` ```
### Créer un nouveau groupe ### Créer un nouveau groupe
Pour créer un nouveau groupe, il suffit de cliquer sur le bouton "Nouveau groupe" en haut de la page. Vous ne pouvez choisir qu'un nom formé de lettres (majuscules et minuscules) et d'espaces. Le groupe est créé vide et sans aucune permissions. Pour créer un nouveau groupe, il suffit de cliquer sur le bouton "Nouveau groupe" en haut de la page. Vous ne pouvez choisir qu'un nom formé de lettres (majuscules et minuscules) et d'espaces. Le groupe est créé vide et sans aucune permissions.
@ -168,9 +167,161 @@ $ yunohost user permission update mail --remove all_users --add bob
``` ```
La webadmin émettra un avertissement si vous définissez une permission qui est remplacée par une permission plus large. La webadmin émettra un avertissement si vous définissez une permission qui est remplacée par une permission plus large.
![](./images/groups_alerte-permission.png) ![](./images/groups_alerte-permission.png)
Notes pour les packageurs d'applications
Notes aux packageurs d'applications
------------------------ ------------------------
[Voir la version anglaise de cette page](groups_and_permissions_en). L'installation d'une application crée l'autorisation `app.main` avec `all_users` autorisée par défaut.
Si vous souhaitez rendre l'application accessible au public, au lieu de l'ancien mécanisme `unprotected_urls`, vous devez donner accès au groupe spécial `visitors` :
```shell
ynh_permission_update --permission "main" --add visitors
```
Si vous souhaitez créer une autorisation personnalisée pour votre application (par exemple pour restreindre l'accès à une interface d'administration), vous pouvez utiliser les helpers suivants :
```shell
ynh_permission_create --permission "admin" --url "/admin" --allowed "$admin_user"
```
Vous n'avez pas besoin de supprimer les autorisations ou de les sauvegarder / restaurer car elles sont gérées par le core de YunoHost.
### Migration hors de la gestion des autorisations héritées
Lors de la migration / correction d'une application utilisant toujours le système d'autorisations hérité, il faut comprendre que les accès doivent maintenant être gérés par des fonctionnalités du core, en dehors des scripts d'application !
Les scripts d'application devraient seulement :
- le cas échéant, pendant le script d'installation, initialiser l'autorisation principale de l'application en tant que public (`visitors`) ou privé (`all_users`) ou uniquement accessible à des groupes / utilisateurs spécifiques ;
- le cas échéant, créer et initialiser toute autre autorisation spécifique (par exemple, sur une interface d'administration) dans le script d'installation (et *sans doute* dans certaines migrations se produisant dans le script de mise à niveau).
Les scripts d'applications ne devraient absolument **PAS** altérer les accès aux applications déjà existantes (y compris les paramètres `unprotected` / `skipped_uris`), car cela réinitialiserait toutes les règles d'accès définies par l'administrateur !
Lors de la migration hors de l'autorisation héritée, vous devez :
- supprimer toute gestion du paramètre de type `$is_public` ou `$admin_user`, sauf pour toute question manifeste destinée à *initialiser* l'application avec des autorisations publiques / privées ou spécifiques ;
- supprimer toute gestion des paramètres `skipped_`, `unprotected_` et `protected_uris` (et `_regex`) qui sont désormais considérés comme obsolètes et dépréciés. (NB : vous devez **les supprimer explicitement dans le script upgrade**). Au lieu de cela, vous devriez désormais vous fier aux nouveaux helpers `ynh_permission_ *`. Si vous sentez que vous avez encore besoin de les utiliser, veuillez contacter l'équipe core pour pouvoir être assisté ;
Par exemple, dans le script *upgrade*, si vous avez utilisé la clé `protected_uris` auparavant, vous pouvez utiliser ce code dans la section `DOWNWARD COMPATIBILITY` :
```bash
protected_uris=$(ynh_app_setting_get --app=$app --key=protected_uris)
# Unused with the permission system
if [ ! -z "$protected_uris" ]; then
ynh_app_setting_delete --app=$app --key=protected_uris
fi
```
- Supprimez tout appel à `yunohost app addaccess` et aux actions similaires qui sont désormais obsolètes et dépréciés.
- Si votre application utilise LDAP et prend en charge le filtre, utilisez le filtre `(&(objectClass=posixAccount)(permission=cn=YOUR_APP.main,ou=permission,dc=yunohost,dc=org))'` pour autoriser les utilisateurs ayant cette permission. (On trouvera une documentation sur LDAP [ici](https://moulinette.readthedocs.io/en/latest/ldap.html))
Voici un exemple de migration de code vers le nouveau système d'autorisation : [exemple](https://github.com/YunoHost/example_ynh/pull/111/files)
#### Cas spécifique : protection regex
Si vous devez toujours utiliser regex pour protéger ou déprotéger les URL, vous ne pouvez pas utiliser le nouveau système d'autorisation (pour l'instant).
Mais vous pouvez créer une fausse autorisation et utiliser des crochets pour gérer s'il y a un changement dans cette fausse autorisation.
Dans le script d'installation, créez la fausse autorisation (sans URL) :
`ynh_permission_create --permission="create poll" --allowed "visitors" "all_users"`
Utilisez ensuite la protection héritée :
```bash
# Make app public if necessary
if [ $is_public -eq 1 ]
then
if [ "$path_url" == "/" ]; then
# If the path is /, clear it to prevent any error with the regex.
path_url=""
fi
# Modify the domain to be used in a regex
domain_regex=$(echo "$domain" | sed 's@-@.@g')
ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$path_url/create_poll.php?.*$","$domain_regex$path_url/adminstuds.php?.*"
else
ynh_permission_update --permission="create poll" --remove="visitors"
fi
```
Dans cet exemple, si l'application est publique, le groupe `visitors` a accès à l'autorisation `create poll`, sinon le groupe est supprimé de cette autorisation.
Créez ensuite deux fichiers dans le répertoire `hooks` à la racine du dépôt git de l'application : `post_app_addaccess` et `post_app_removeaccess`. Dans ces hooks, vous supprimerez ou rajouterez la protection contre les regex si le groupe `visitors` est ajouté ou supprimé de cette autorisation :
`post_app_addaccess`
```bash
#!/bin/bash
# Source app helpers
source /usr/share/yunohost/helpers
app=$1
added_users=$2
permission=$3
added_groups=$4
if [ "$app" == __APP__ ]; then
if [ "$permission" = "create poll" ]; then # The fake permission "create poll" is modifed.
if [ "$added_groups" = "visitors" ]; then # As is it a fake permission we can only grant/remove the "visitors" group.
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
if [ "$path_url" == "/" ]; then
# If the path is /, clear it to prevent any error with the regex.
path_url=""
fi
# Modify the domain to be used in a regex
domain_regex=$(echo "$domain" | sed 's@-@.@g')
ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$path_url/create_poll.php?.*$","$domain_regex$path_url/adminstuds.php?.*"
# Sync the is_public variable according to the permission
ynh_app_setting_set --app=$app --key=is_public --value=1
yunohost app ssowatconf
else
ynh_print_warn --message="This app doesn't support this authorisation, you can only add or remove visitors group."
fi
fi
fi
```
`post_app_removeaccess`
```bash
#!/bin/bash
# Source app helpers
source /usr/share/yunohost/helpers
app=$1
removed_users=$2
permission=$3
removed_groups=$4
if [ "$app" == __APP__ ]; then
if [ "$permission" = "create poll" ]; then # The fake permission "create poll" is modifed.
if [ "$removed_groups" = "visitors" ]; then # As is it a fake permission we can only grant/remove the "visitors" group.
# We remove the regex, no more protection is needed.
ynh_app_setting_delete --app=$app --key=unprotected_regex
# Sync the is_public variable according to the permission
ynh_app_setting_set --app=$app --key=is_public --value=0
yunohost app ssowatconf
else
ynh_print_warn --message="This app doesn't support this authorisation, you can only add or remove visitors group."
fi
fi
fi
```
N'oubliez pas de remplacer `__APP__` pendant le script *install* / *upgrade*.
Voici quelques applications qui utilisent ce cas spécifique : [Lutim](https://github.com/YunoHost-Apps/lutim_ynh/pull/44/files) et [OpenSondage](https://github.com/YunoHost-Apps/opensondage_ynh/pull/59/files)
Si vous avez des questions, veuillez contacter un des membres du groupe apps.

BIN
images/codimd_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -1,26 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<svg width="546px" height="194px" viewBox="0 0 546 194" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!-- Generator: Sketch 3.3.2 (12043) - http://www.bohemiancoding.com/sketch --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<title>Fill 1 + Group 24</title> <svg version="1.1" id="Calque_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"
<desc>Created with Sketch.</desc> xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="222.5px" height="194px"
<defs></defs> viewBox="0 0 222.5 194" enable-background="new 0 0 222.5 194" xml:space="preserve">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> <title>Fill 1 + Group 24</title>
<g id="Fill-1-+-Group-24" sketch:type="MSLayerGroup"> <desc>Created with Sketch.</desc>
<g id="Group-24" sketch:type="MSShapeGroup"> <g id="Page-1" sketch:type="MSPage">
<path d="M316.7906,65.3001 C301.5016,65.3001 292.0046,77.4461 292.0046,97.0001 C292.0046,116.5541 301.5016,128.7001 316.7906,128.7001 C322.5346,128.7001 327.8716,127.0711 332.2226,123.9881 L332.4336,123.8391 L332.4336,101.8711 L310.4336,101.8711 L310.4336,94.0711 L341.4336,94.0711 L341.4336,126.8061 C334.8706,133.1501 326.3546,136.5001 316.7906,136.5001 C296.2666,136.5001 283.0046,120.9951 283.0046,97.0001 C283.0046,73.0051 296.2666,57.5001 316.7906,57.5001 C326.7826,57.5001 335.2176,61.1481 341.2206,68.0561 L335.2246,73.0381 C330.6986,67.9041 324.4986,65.3001 316.7906,65.3001 L316.7906,65.3001 Z M489.8836,135.2501 L482.9356,135.2501 L480.6016,128.8021 L480.0486,129.2991 C479.9716,129.3681 472.2196,136.2501 462.4606,136.2501 C452.6096,136.2501 445.4606,129.6961 445.4606,120.6671 C445.4606,107.5951 456.7446,104.8511 466.2096,104.8511 C473.5836,104.8511 480.1886,106.5111 480.2546,106.5281 L480.8776,106.6871 L480.8776,105.1011 C480.8776,97.9861 476.4356,94.3781 467.6726,94.3781 C462.3646,94.3781 456.7556,95.6891 451.4236,98.1701 L447.8206,91.9581 C452.5266,88.8961 459.6726,85.3781 467.6726,85.3781 C481.5806,85.3781 489.8836,92.9341 489.8836,105.5891 L489.8836,135.2501 Z M470.6886,111.7771 C460.0716,111.7771 454.4606,114.8511 454.4606,120.6671 C454.4606,124.7281 457.5256,127.2501 462.4606,127.2501 C470.5906,127.2501 477.7276,123.9181 480.6626,121.9481 L480.8836,121.8001 L480.8836,112.6201 L480.4676,112.5491 C480.4226,112.5411 475.8766,111.7771 470.6886,111.7771 L470.6886,111.7771 Z M440.4576,127.4501 L440.4576,135.2501 L410.4606,135.2501 L410.4606,61.2501 L419.4606,61.2501 L419.4606,127.4501 L440.4576,127.4501 Z M520.9416,136.5001 C515.0966,136.5001 508.6886,135.6961 501.8926,134.1091 L501.8926,61.2501 L510.8926,61.2501 L510.8926,89.3131 L511.6656,88.8111 C511.7146,88.7791 516.7346,85.5711 523.6536,85.5711 C525.0336,85.5711 526.4146,85.7001 527.7486,85.9521 C539.0936,88.2761 545.8666,97.4301 545.8666,110.4391 C545.8666,125.7831 535.6176,136.5001 520.9416,136.5001 L520.9416,136.5001 Z M521.9426,94.3781 C518.3636,94.3781 514.6196,95.6031 511.1166,97.9191 L510.8926,98.0681 L510.8926,127.9021 L511.3196,127.9651 C514.6986,128.4601 517.9356,128.7121 520.9416,128.7121 C530.3176,128.7121 536.8666,121.1971 536.8666,110.4391 C536.8666,100.2321 531.4266,94.3781 521.9426,94.3781 L521.9426,94.3781 Z M398.4516,86.2501 L398.4516,94.0501 L383.4516,94.0501 L383.4516,116.9501 C383.4516,119.7551 384.5436,122.3921 386.5276,124.3741 C388.5096,126.3581 391.1466,127.4501 393.9516,127.4501 L398.4516,127.4501 L398.4516,135.2501 L393.9516,135.2501 C383.1996,135.2501 374.4516,126.5021 374.4516,115.7501 L374.4516,61.2501 L383.4516,61.2501 L383.4516,86.2501 L398.4516,86.2501 Z M353.4426,66.2501 L362.4426,66.2501 L362.4426,75.2501 L353.4426,75.2501 L353.4426,66.2501 Z M353.4426,86.2501 L362.4426,86.2501 L362.4426,135.2501 L353.4426,135.2501 L353.4426,86.2501 Z" id="Fill-2" fill="#8C929D"></path> <g id="Fill-1-_x2B_-Group-24" sketch:type="MSLayerGroup">
<g id="Group"> <g id="Group-24" sketch:type="MSShapeGroup">
<path d="M105.0614,193.655 L105.0614,193.655 L143.7014,74.734 L66.4214,74.734 L105.0614,193.655 L105.0614,193.655 Z" id="Fill-4" fill="#E24329"></path> <g id="Group">
<path id="Fill-6" fill="#FC6D26"></path> <path id="Fill-4" fill="#E24329" d="M105.062,193.655L105.062,193.655l38.64-118.921h-77.28L105.062,193.655L105.062,193.655z"
<path d="M105.0614,193.6548 L66.4214,74.7338 L12.2684,74.7338 L105.0614,193.6548 Z" id="Fill-8" fill="#FC6D26"></path> />
<path id="Fill-10" fill="#FC6D26"></path> <path id="Fill-6" fill="#E24329" d="M0,0"/>
<path d="M12.2685,74.7341 L12.2685,74.7341 L0.5265,110.8731 C-0.5445,114.1691 0.6285,117.7801 3.4325,119.8171 L105.0615,193.6551 L12.2685,74.7341 Z" id="Fill-12" fill="#FCA326"></path> <path id="Fill-8" fill="#FC6D26" d="M105.062,193.654L66.421,74.734H12.269L105.062,193.654z"/>
<path id="Fill-14" fill="#FC6D26"></path> <path id="Fill-10" fill="#FC6D26" d="M0,0"/>
<path d="M12.2685,74.7342 L66.4215,74.7342 L43.1485,3.1092 C41.9515,-0.5768 36.7375,-0.5758 35.5405,3.1092 L12.2685,74.7342 Z" id="Fill-16" fill="#E24329"></path> <path id="Fill-12" fill="#FCA326" d="M12.269,74.734L12.269,74.734L0.527,110.873c-1.071,3.296,0.102,6.907,2.906,8.943
<path d="M105.0614,193.6548 L143.7014,74.7338 L197.8544,74.7338 L105.0614,193.6548 Z" id="Fill-18" fill="#FC6D26"></path> l101.629,73.839L12.269,74.734z"/>
<path d="M197.8544,74.7341 L197.8544,74.7341 L209.5964,110.8731 C210.6674,114.1691 209.4944,117.7801 206.6904,119.8171 L105.0614,193.6551 L197.8544,74.7341 Z" id="Fill-20" fill="#FCA326"></path> <path id="Fill-14" fill="#FCA326" d="M0,0"/>
<path d="M197.8544,74.7342 L143.7014,74.7342 L166.9744,3.1092 C168.1714,-0.5768 173.3854,-0.5758 174.5824,3.1092 L197.8544,74.7342 Z" id="Fill-22" fill="#E24329"></path> <path id="Fill-16" fill="#E24329" d="M12.269,74.734h54.152L43.149,3.109c-1.197-3.686-6.411-3.685-7.608,0L12.269,74.734z"/>
</g> <path id="Fill-18" fill="#FC6D26" d="M105.062,193.654l38.64-118.92h54.153L105.062,193.654z"/>
</g> <path id="Fill-20" fill="#FCA326" d="M197.855,74.734L197.855,74.734l11.741,36.139c1.071,3.296-0.102,6.907-2.905,8.943
</g> l-101.629,73.839L197.855,74.734z"/>
</g> <path id="Fill-22" fill="#E24329" d="M197.855,74.734h-54.153l23.273-71.625c1.196-3.686,6.41-3.685,7.607,0L197.855,74.734z"/>
</g>
</g>
</g>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

2
isp.md
View file

@ -55,7 +55,7 @@ Most of non business IP provided by ISP are blacklisted.
| Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP | | Service provider | Box (modem/router) | uPnP available | Port 25 openable | [Hairpinning](http://en.wikipedia.org/wiki/Hairpinning) | Customizable reverse DNS | Fix IP |
| --- | --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- | --- |
| Sunrise | Multiple | No | Yes | No | - | - | | Sunrise | Multiple | No | Yes | No | - | - |
| Swisscom | Multiple | No | Yes | No | - | - | | Swisscom | Multiple | No | Yes | No | No | No |
| VTX | Multiple | No | Yes | No | - | - | | VTX | Multiple | No | Yes | No | - | - |
If you want to add international ISPs information, please do consider [modifying this page](/write_documentation). If you want to add international ISPs information, please do consider [modifying this page](/write_documentation).

View file

@ -1,12 +1,11 @@
# Configure port-forwarding # Configure port-forwarding
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). 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 to [this page](port_forwarding).
### 0. Diagnose ports opened ### 0. Diagnose ports opened
After configuring port forwarding, you should be able to validate with this small tool that your ports are correctly forwarded : The new diagnosis tool introduced in 3.8 can be used to diagnose that ports are
correctly exposed.
<a class="btn btn-default" href="http://ports.yunohost.org">Check which ports are forwarded</a>
### 1. Access your box/router administration interface ### 1. Access your box/router administration interface
@ -14,14 +13,14 @@ Your box/router admin interface is usually reachable via http://192.168.0.1 or h
### 2. Find the local IP of your server ### 2. Find the local IP of your server
Identify what is the local IP of your server, either : Identify what is thei *local* IP of your server, either :
- from your box/router interface, which might list devices connected - from your box/router interface, which might list devices connected
- from the YunoHost webadmin, in 'State of the server', 'Network' - from the YunoHost webadmin, in 'Diagnosis', section 'Internet connectivity', click on 'Details' on the IPv4 report.
- from the command line in your server, by running `ip a | grep "scope global" | awk '{print $2}'` - from the command line in your server, by running `hostname -I`
A local IP address typically looks like `192.168.xx.yy`, or `10.0.xx.yy`. A local IP address typically looks like `192.168.xx.yy`, or `10.0.xx.yy`.
The local IP address needs to be static, so that the port forwards that you are going to set in the next step will always reach your server. You should go into your box/router and make sure that the local IP address of your server is static instead of dynamic. The local IP address needs to be static, so that the port forwards that you are going to configure in the next step will always reach your server. You should go into your box/router and make sure that the local IP address of your server is static instead of dynamic.
### 3. Forwarding ports ### 3. Forwarding ports

View file

@ -4,9 +4,8 @@ Si vous vous auto-hébergez à la maison et sans VPN, il vous faut rediriger les
### 0. Diagnostiquer les ports ouverts ### 0. Diagnostiquer les ports ouverts
Une fois que vous aurez configuré la redirection, vous devriez pouvoir valider avec ce petit outil que vos ports sont bien redirigés : Une fois les redirections configurées, l'outil de diagnostic introduit dans
YunoHost 3.8 vous permettra de vérifier si les ports sont correctement exposés.
<a class="btn btn-default" href="http://ports.yunohost.org">Vérifier la redirection des ports</a>
### 1. Accéder à l'interface d'administration de votre box/routeur ### 1. Accéder à l'interface d'administration de votre box/routeur
@ -19,8 +18,8 @@ fournis par votre fournisseur d'accès internet (FAI).
Identifiez quelle est l'IP locale de votre serveur, soit : Identifiez quelle est l'IP locale de votre serveur, soit :
- depuis l'interface de votre routeur/box, qui liste peut-être les dispositifs - depuis l'interface de votre routeur/box, qui liste peut-être les dispositifs
connectés; connectés;
- depuis la webadmin de Yunohost, dans 'Diagnostic', section 'Connectivité Internet', cliquer sur 'Details' à côté de la ligne sur IPv4.
- depuis la webadmin de YunoHost, dans 'État du serveur', 'Réseau'; - 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}'`.
Une adresse IP locale ressemble généralement à `192.168.xx.yy`, ou `10.0.xx.yy`. Une adresse IP locale ressemble généralement à `192.168.xx.yy`, ou `10.0.xx.yy`.

View file

@ -10,7 +10,7 @@ Un « **no** » puede implicar problemas de utilización del servidor o puede
*Nota que algunos de estos proveedores como OVH y Orange también están presentes en España.* *Nota que algunos de estos proveedores como OVH y Orange también están presentes en España.*
Todos los proveedores de acceso a Internet [miembros de la Federación French Data Network] (http://www.ffdn.org/fr/membres) tienen una política a favor del auto-alojamiento / self-hosting. Todos los proveedores de acceso a Internet [miembros de la Federación French Data Network](http://www.ffdn.org/fr/membres) tienen una política a favor del auto-alojamiento / self-hosting.
* ✔ :  * ✔ : 
* ✘ : no * ✘ : no

36
moving_app_folder_fr.md Normal file
View file

@ -0,0 +1,36 @@
# Déplacer un dossier d'application vers un autre espace de stockage
Les dossiers d'application se trouvent (*habituellement*) dans `/var/www/$nom_application`
Lorsqu'un dossier d'application devient trop volumineux il peut être intéressant de le déplacer vers un autre espace de stockage (comme un disque dur externe, une carte sd, etc.)
Partant du principe que [le stockage externe est déjà monté](/external_storage), voici un guide pour déplacer le dossier de l'application wordpress :
#### 1. Déplacer le dossier wordpress et tout son contenu vers le stockage externe
```shell
mv /var/www/wordpress /media/externalharddrive/
```
___
#### 2. Créer un lien symbolique
Le programme qui va chercher des informations dans le dossier /var/www/wordpress sera redirigé vers le stockage externe.
```shell
ln -s /media/externalharddrive/wordpress /var/www/wordpress
```
___
#### 3. (peut être) bidouiller les permissions
Après tout ça, il est possible que vous ayez à modifier les permissions de `/media/externalharddrive` pour que `www-data` (ou l'utilisateur de l'app) puisse y accéder. Quelque chose comme :
```shell
chgrp www-data /media/externalharddrive
chmod g+rx /media/externalharddrive
```
(À préciser par un expert)

View file

@ -1 +1,191 @@
Unfortunately, this page only exists [in french here](packaging_apps_hooks_fr) for now. # The use of YunoHost hooks
Hooks allow you to trigger a script when an action is performed by the system.
The most obvious case is adding a user. If the app has a `post_user_create` hook, this hook will be triggered as soon as a user is added.
Therefore, this allows an application to execute actions based on events occurring on the system.
### List of available hooks
- `post_domain_add`
After adding a domain.
- `post_domain_remove`
After deleting a domain.
- `post_user_create`
After adding a user.
- `post_user_delete`
After deleting a user.
- `post_iptable_rules`
After reloading the firewall.
- `pre_backup_delete`
Before deleting a backup.
- `post_backup_delete`
After deleting a backup.
- `post_app_addaccess`
After adding an authorized user to an application.
- `post_app_removeaccess`
After the removal of a user's authorization on an application.
- `post_app_clearaccess`
After erasing all the access rules on an application.
- `post_app_install`
After installing an application.
- `post_app_upgrade`
After upgrading an application.
- `post_app_remove`
After removing an application.
- `post_app_change_url`
After modifying the path and/or the domain name of an application.
- `post_cert_update`
After updating a certificate
- `conf_regen`
Before and after the regeneration of a service configuration.
Services supported by `regen-conf`:
- avahi-daemon
- dnsmasq
- dovecot
- fail2ban
- glances
- metronome
- mysql
- nginx
- nslcd
- nsswitch
- postfix
- rspamd
- slapd
- ssh
- ssl
### Hooks setup
With the exception of the `conf_regen` hook, all hooks are used in the same way.
First of all, you have to understand that a hook is a simple bash script that will be executed by YunoHost when the indicated event occurs.
To add a hook to YunoHost, you must use a "hooks" folder at the root of the application package. Then, put your script in this folder under the name of the corresponding hook.
> For example:
For the hook `post_user_create`, the script which will have to be executed for this hook should be placed in `hooks/post_user_create` in the app package.
During the installation and the upgrade of the application, the scripts in the hooks folder will be duplicated in the folder `/etc/yunohost/hooks.d/` in the folder corresponding to the hook, then under the name `50-$app`.
All hooks belonging to an application will be removed when the apllication is deleted.
### Building a hook script
As a bash script, a hook script must start with the bash shebang.
```bash
#!/bin/bash
```
Then you have to take the arguments given by YunoHost when calling the script.
Each hook offers different arguments.
##### `post_domain_add` and `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 Indicates whether the user folder has been deleted or not.
```
##### `post_iptable_rules`
```bash
upnp=$1 # True/False Indicates if UPnP is activated or not.
ipv6=$2 # True/False Indicates whether IPV6 is enabled or not.
```
##### `pre_backup_delete` and `post_backup_delete`
```bash
backup_name=$1
```
##### `post_app_install`, `post_app_upgrade`, `post_app_remove` and `post_app_change_url`
Usable variables in these scripts are the same as those available in [associated actions scripts](/packaging_apps_scripts).
Example: for `post_app_install` the variables are the same as for the script `install`
##### `post_app_addaccess` and `post_app_removeaccess`
```bash
app_id=$1
users=$2 # All authorized users on the app. Separated by commas.
```
##### `post_app_clearaccess`
```bash
app_id=$1
```
##### `post_cert_update`
```bash
domain=$1
```
The rest of the script depends on what you want to do in it.
### `conf_regen` special case
The `conf_regen` hook is a more delicate hook, either for its implementation or for its content.
##### `conf_regen` hook setup
A `conf_regen` hook should not be placed in the application's hooks folder. It must be set up manually.
The hook should be copied, indicating to which service it is linked.
```bash
cp hook_regen_conf /usr/share/yunohost/hooks/conf_regen/50-SERVICE_$app
```
> When removing the application, this hook must be removed manually.
##### Building `conf_regen` hook script
`conf_regen` hook is called two times, a first time after analysis of the configuration and before any modification of the files, then a second time after applying the modifications, if there has been modifications.
`conf_regen` hook script should look like this:
```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
```

View file

@ -27,18 +27,18 @@ Après la suppression de l'autorisation d'un utilisateur sur une application.
- `post_app_clearaccess` - `post_app_clearaccess`
Après l'effacement de toute les règles d'accès sur une application. Après l'effacement de toute les règles d'accès sur une application.
- `post_app_install` - `post_app_install`
Après l'installation d'une application Après l'installation d'une application.
- `post_app_upgrade` - `post_app_upgrade`
Après l'upgrade d'une applications Après l'upgrade d'une applications.
- `post_app_remove` - `post_app_remove`
Après la supression d'une applications Après la supression d'une applications.
- `post_app_change_url` - `post_app_change_url`
Après avoir modifié le chemin et ou le nom de domaine d'une application Après avoir modifié le chemin et/ou le nom de domaine d'une application.
- `post_cert_update` - `post_cert_update`
Après la mise à jour d'un certificat Après la mise à jour d'un certificat.
- `conf_regen` - `conf_regen`
Avant et après la régénération de la configuration d'un service. Avant et après la régénération de la configuration d'un service.
Services pris en charge par regen-conf: Services pris en charge par `regen-conf` :
- avahi-daemon - avahi-daemon
- dnsmasq - dnsmasq
- dovecot - dovecot
@ -57,14 +57,14 @@ Services pris en charge par regen-conf:
### Mise en place des hooks ### Mise en place des hooks
A l'exception du hook conf_regen, tout les hooks s'utilisent de la même manière. À 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. 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. 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: > 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. 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 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. Lors de la suppression de l'application, tout les hooks lui appartenant seront supprimés.
### Construire un script de hook ### Construire un script de hook
@ -103,7 +103,7 @@ purge=$2 # True/False Indique si le dossier utilisateur a été supprimé ou pa
##### `post_iptable_rules` ##### `post_iptable_rules`
```bash ```bash
upnp=$1 # True/False Indique si l'upnp est activé ou non. upnp=$1 # True/False Indique si l'UPnP est activé ou non.
ipv6=$2 # True/False Indique si l'IPV6 est activé ou non. ipv6=$2 # True/False Indique si l'IPV6 est activé ou non.
``` ```
@ -118,7 +118,7 @@ backup_name=$1
Les variables utilisables dans ces scripts sont les mêmes que celles disponibles dans [les scripts d'actions associés](/packaging_apps_scripts). Les variables utilisables dans ces scripts sont les mêmes que celles disponibles dans [les scripts d'actions associés](/packaging_apps_scripts).
Example: pour `post_app_install` les variables sont les mêmes que pour le script `install` Example : pour `post_app_install` les variables sont les mêmes que pour le script `install`
##### `post_app_addaccess` et `post_app_removeaccess` ##### `post_app_addaccess` et `post_app_removeaccess`
@ -141,11 +141,11 @@ domain=$1
La suite du script dépend de ce que vous voulez effectuer dans celui-ci. La suite du script dépend de ce que vous voulez effectuer dans celui-ci.
### Cas particulier de `conf_regen` ### 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. 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` ##### 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. 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é. Le hook doit être copié en indiquant à quel service il est lié.
```bash ```bash
cp hook_regen_conf /usr/share/yunohost/hooks/conf_regen/50-SERVICE_$app cp hook_regen_conf /usr/share/yunohost/hooks/conf_regen/50-SERVICE_$app
@ -155,9 +155,9 @@ cp hook_regen_conf /usr/share/yunohost/hooks/conf_regen/50-SERVICE_$app
##### Construire un script de hook conf_regen ##### 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 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: Un script de hook `conf_regen` devrait donc ressembler à ça :
```bash ```bash
#!/bin/bash #!/bin/bash

View file

@ -1 +1,113 @@
Unfortunately, this page only exists [in french here](packaging_apps_trap_fr) for now. # Trap usage
Trap is an internal shell command used to capture the output signals of commands executed in the current shell and its subshells.
Any command executed in the shell returns an exit signal at the end of its execution. Either 0 to indicate the end of the execution of the command, or a non-zero value indicating an interruption thereof.
In the case of installation scripts, trap will allow us to detect a command interrupted in the middle of its execution due to an error.
Detection of this error will allow the installation to be terminated and returned to the remove script for cleaning up residues.
Trap is used as follows:
```bash
trap 'commande' liste_de_signaux
```
To simplify, we will use the pseudo signal `ERR` to gather all the error signals.
We could simply add this line at the beginning of the script:
```bash
trap "echo Erreur d'installation" ERR
```
After this line, any command causing an error will trigger the display of the message indicated by trap.
All of the current shell and the subshell will be supported by trap.
To stop capturing signals with trap, you can simply deactivate trap.
```bash
trap ERR
```
Or completely ignore the affected output signals.
```bash
trap "" ERR
```
In the latter case, the interrupt signal will have no effect on the shell. This can be useful for a command whose error output should not impact the progress of the installation script.
### Stop the installation script and clean up before exiting.
In the event of an error in the installation script, trap must allow to stop the installation, then clean up the partially installed residual files before leaving the script.
For this, we will provide a function dedicated to the installation failure.
```bash
# Delete files and db if exit with an error
EXIT_PROPERLY () {
trap ERR # Disable trap
echo -e "\e[91m \e[1m" # Shell in light red bold
echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!"
echo -e "\e[22m" # Remove bold
# Clean hosts
sudo sed -i '/#leed/d' /etc/hosts
if [ $ynh_version = "2.2" ]; then
/bin/bash ./remove # Call the script remove. In 2.2, this behavior is not automatic.
fi
exit 1
}
```
The `EXIT_PROPERLY` function must indicate to the user that the installation has failed and clean up any residue that will not be taken care of by the remove script. The latter will be automatically called after exit `1` with Yunohost 2.4
After this function, we can set up signal capture by trap.
```bash
trap EXIT_PROPERLY ERR
```
If a command fails during installation, the `EXIT_PROPERLY` function will be called, ending the installation.
To simplify the capture of signals and ignore them for specific commands. It is possible to place trap calls in functions.
```bash
TRAP_ON () { # Activate signal capture
trap EXIT_PROPERLY ERR # Capturing exit signals on error
}
TRAP_OFF () { # Ignoring signal capture until TRAP_ON
trap '' ERR # Ignoring exit signals
}
```
> The `TRAP_OFF` function does not work. For some reason. Using `trap '' ERR` directly works fine however.
To manage possible installation errors, we can therefore simply add this code after retrieving the arguments:
```bash
# Delete files and db if exit with an error
EXIT_PROPERLY () {
trap ERR # Disable trap
echo -e "\e[91m \e[1m" # Shell in light red bold
echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!"
echo -e "\e[22m" # Remove bold
# Clean hosts
sudo sed -i '/#leed/d' /etc/hosts
if [ $ynh_version = "2.2" ]; then
/bin/bash ./remove # Call the script remove. In 2.2, this behavior is not automatic.
fi
exit 1
}
TRAP_ON () { # Activate signal capture
trap EXIT_PROPERLY ERR # Capturing exit signals on error
}
TRAP_OFF () { # Ignoring signal capture until TRAP_ON
trap '' ERR # Ignoring exit signals
}
TRAP_ON
```

View file

@ -2,6 +2,8 @@
The step called "**post-installation**" is actually the initial configuration of YunoHost. It has to be done just after the installation of the system itself. The step called "**post-installation**" is actually the initial configuration of YunoHost. It has to be done just after the installation of the system itself.
NB: if you are in the process of restoring a server from scratch **and** you have a yunohost-made backup, you must skip this process and follow through with the "restoring during the postinstall" step, in the [backup](/backup) page.
### From the web interface ### From the web interface
You can perform the post-installation with the web interface by entering in your browser : You can perform the post-installation with the web interface by entering in your browser :

View file

@ -2,6 +2,8 @@
La etapa que llamamos « **post-instalación** » de hecho es la etapa de configuración inicial de Yunohost. Se ejecuta después de la **instalación** del sistema mismo. La etapa que llamamos « **post-instalación** » de hecho es la etapa de configuración inicial de Yunohost. Se ejecuta después de la **instalación** del sistema mismo.
NB : Si estàs en el proceso de instalar de nuevo a un servidor **y** que ya tienes un archivo creada por yunohost, no debes seguir a està etapa y encontro seguir a la seccion "Restoring during the postinstall" de la pagina [backup](/backup).
### Vía la interfaz web ### Vía la interfaz web
Puedes acceder a la post-instalación gráfica entrando en un navegador web : Puedes acceder a la post-instalación gráfica entrando en un navegador web :

View file

@ -3,6 +3,8 @@
Létape appelée « **post-installation** » est en fait létape de configuration initiale de YunoHost. Il faut lexécuter après l**installation** du système en lui-même. Létape appelée « **post-installation** » est en fait létape de configuration initiale de YunoHost. Il faut lexécuter après l**installation** du système en lui-même.
NB : Si vous êtes en train de restaurer un système complet **et** que vous disposez d'un fichier de sauvegarde généré par Yunohost, vous devez sauter cette étape et vous référer à la section "Restaurer durant la postinstallation" sur la page [sauvegardes](/backup).
### Via l'interface web ### Via l'interface web
Vous pouvez accéder à la post-installation graphique en entrant dans un navigateur web : Vous pouvez accéder à la post-installation graphique en entrant dans un navigateur web :

View file

@ -162,7 +162,7 @@ systemctl restart ssh
### Durcir la sécurité de la configuration des services ### Durcir la sécurité de la configuration des services
La configuration TLS par défaut des services tend à offrir une bonne compatibilité avec les vieux appareils. Vous pouvez régler cette politique pour les services SSH et NGINX. Par défaut, la configuration du NGINX suit la [recommandation de compatibilité intermédiaire] (https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29) de Mozilla. Vous pouvez choisir de passer à la configuration "moderne" qui utilise des recommandations de sécurité plus récentes, mais qui diminue la compatibilité, ce qui peut poser un problème pour vos utilisateurs et visiteurs qui utilisent de vieux appareils. Plus de détails peuvent être trouvés sur [cette page](https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility). La configuration TLS par défaut des services tend à offrir une bonne compatibilité avec les vieux appareils. Vous pouvez régler cette politique pour les services SSH et NGINX. Par défaut, la configuration du NGINX suit la [recommandation de compatibilité intermédiaire](https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28default.29) de Mozilla. Vous pouvez choisir de passer à la configuration "moderne" qui utilise des recommandations de sécurité plus récentes, mais qui diminue la compatibilité, ce qui peut poser un problème pour vos utilisateurs et visiteurs qui utilisent de vieux appareils. Plus de détails peuvent être trouvés sur [cette page](https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility).
Changer le niveau de compatibilité n'est pas définitif et il est possible de rechanger le paramètre si vous concluez qu'il faille revenir en arrière. Changer le niveau de compatibilité n'est pas définitif et il est possible de rechanger le paramètre si vous concluez qu'il faille revenir en arrière.

14
sponsors_partners.md Normal file
View file

@ -0,0 +1,14 @@
# Sponsors and partners
In order to advance and make the project works, in addition to the work of volunteers and donations, YunoHost benefits from the support of sponsors and partners.
Here is a list of YunoHost sponsors, providing infrastructure and services to the project:
- [GITOYEN](https://gitoyen.net): association bringing together several companies and associations acting as a provider of hosting infrastructure and Internet access.
- [GLOBENET](http://www.globenet.org): activist association, at the service of freedom of expression, offering internet services.
- [LDN-NET](https://ldn-fai.net/) : association for the defense of a free, neutral and decentralized Internet whose main means of action is to be an Internet access provider associative and local.
- [NLNET](https://nlnet.nl/): The NLnet Foundation supports organizations and people that contribute to an open information society.
- [TETANEUTRAL-NET](https://tetaneutral.net/): associative Internet access provider currently operating a radio network in Toulouse and its surroundings and a hoster.
Here is a list of YunoHost partners:
- [FFDN](https://www.ffdn.org/): The FDN federation gathers associative Internet Access Providers who recognize themselves in common values: volunteering, solidarity, democratic functioning and non-profit; defense and promotion of net neutrality.
- [Framasoft](https://framasoft.org/) : popular education association, a group of friends convinced that an emancipatory digital world is possible, convinced that it will happen thanks to concrete actions on the ground and online with you and for you!

14
sponsors_partners_fr.md Normal file
View file

@ -0,0 +1,14 @@
# Mécénes et partenaires
Afin d'avancer et de faire fonctionner le projet, en plus du travail des bénévoles et des dons, YunoHost bénéficie du soutien de mécénes et de partenaires.
Une liste des mécénes de YunoHost, fournissant l'infrastructure et des services au projets:
- [GITOYEN](https://gitoyen.net): association regroupant plusieurs entreprises et associations intervenant comme fournisseur dinfrastructure dhébergement et daccès à Internet.
- [GLOBENET](http://www.globenet.org): association militante, au service de la liberté dexpression, proposant des services internet.
- [LDN-NET](https://ldn-fai.net/) : association pour la défense dun Internet libre, neutre et décentralisé dont le moyen daction principale est dêtre un fournisseur daccès Internet (FAI) assocatif et local.
- [NLNET](https://nlnet.nl/): La Fondation NLnet soutient les organisations et les personnes qui contribuent à une société de l'information ouverte.
- [TETANEUTRAL-NET](https://tetaneutral.net/): fournisseur d'accès à Internet associatif opérant actuellement un réseau radio sur Toulouse et ses environs et un hébergeur.
Une liste des partenaires de YunoHost:
- [FFDN](https://www.ffdn.org/): La fédération FDN regroupe des Fournisseurs d'Accès à Internet associatifs se reconnaissant dans des valeurs communes : bénévolat, solidarité, fonctionnement démocratique et à but non lucratif ; défense et promotion de la neutralité du Net.
- [Framasoft](https://framasoft.org/) : association déducation populaire, un groupe dami·es convaincu·es quun monde numérique émancipateur est possible, persuadé·es quil adviendra grâce à des actions concrètes sur le terrain et en ligne avec vous et pour vous !