mirror of
https://github.com/YunoHost/doc.git
synced 2024-09-03 20:06:26 +02:00
commit
f6c2fb0f3d
41 changed files with 782 additions and 221 deletions
2
XMPP.md
2
XMPP.md
|
@ -43,7 +43,7 @@ Here is an exhaustive list of XMPP clients : https://xmpp.org/software/clients.
|
|||
|
||||
## 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`
|
||||
- Enable the plugin in `Tools > Plugins`
|
||||
- Enable it
|
||||
|
|
18
app_codimd.md
Normal file
18
app_codimd.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# <img src="/images/codimd_logo.png" height="80px" alt="CodiMD’s logo"> CodiMD
|
||||
|
||||
[](https://install-app.yunohost.org/?app=codimd) [](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
18
app_codimd_fr.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# <img src="/images/codimd_logo.png" height="80px" alt="logo de CodiMD"> CodiMD
|
||||
|
||||
[](https://install-app.yunohost.org/?app=codimd) [](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 d’images, 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 l’application : [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)
|
|
@ -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
|
||||
|
||||
[](https://install-app.yunohost.org/?app=gitlab) [](https://dash.yunohost.org/appci/app/gitlab)
|
||||
[](https://install-app.yunohost.org/?app=gitlab) [](https://dash.yunohost.org/appci/app/gitlab)
|
||||
|
||||
### Index
|
||||
|
||||
|
@ -8,11 +8,11 @@
|
|||
- [Customer Applications](#customer-applications)
|
||||
- [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
|
||||
|
||||
The Gitlab application is not compatible with 32-bit architectures.
|
||||
The GitLab application is not compatible with 32-bit architectures.
|
||||
|
||||
## Customer applications
|
||||
|
||||
|
@ -31,4 +31,4 @@ The Gitlab application is not compatible with 32-bit architectures.
|
|||
|
||||
### Sources
|
||||
|
||||
¹ [framalibre.org - gitlab (fr)](https://framalibre.org/content/gitlab)
|
||||
¹ [framalibre.org - GitLab (fr)](https://framalibre.org/content/gitlab)
|
||||
|
|
|
@ -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
|
||||
|
||||
[](https://install-app.yunohost.org/?app=gitlab) [](https://dash.yunohost.org/appci/app/gitlab)
|
||||
[](https://install-app.yunohost.org/?app=gitlab) [](https://dash.yunohost.org/appci/app/gitlab)
|
||||
|
||||
### Index
|
||||
|
||||
|
@ -8,11 +8,11 @@
|
|||
- [Applications clientes](#applications-clientes)
|
||||
- [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
|
||||
|
||||
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
|
||||
|
||||
|
@ -31,4 +31,4 @@ L'application Gitlab n'est pas compatible avec les architecture 32-bit.
|
|||
|
||||
### Sources
|
||||
|
||||
¹ [framalibre.org - gitlab](https://framalibre.org/content/gitlab)
|
||||
¹ [framalibre.org - GitLab](https://framalibre.org/content/gitlab)
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# <img src="/images/lufi_logo.svg" width="80px" alt="Lufi's logo"> Lufi
|
||||
|
||||
[](https://install-app.yunohost.org/?app=lufi) [](https://dash.yunohost.org/appci/app/lufi)
|
||||
[](https://install-app.yunohost.org/?app=lufi) [](https://dash.yunohost.org/appci/app/lufi)
|
||||
|
||||
### Index
|
||||
|
||||
|
@ -13,7 +13,7 @@ The administrator can only see the file name, size and mime type (file type: vid
|
|||
## Useful links
|
||||
|
||||
+ Website: [Framagit.org/luc/lufi](https://framagit.org/luc/lufi)
|
||||
+ Demonstration : [demo.lufi.io](https://demo.lufi.io/)
|
||||
+ 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)
|
||||
+ Demonstration: [demo.lufi.io](https://demo.lufi.io/)
|
||||
+ 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)
|
||||
+ 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)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# <img src="/images/lufi_logo.svg" width="80px" alt="logo de Lufi"> Lufi
|
||||
|
||||
[](https://install-app.yunohost.org/?app=lufi) [](https://dash.yunohost.org/appci/app/lufi)
|
||||
[](https://install-app.yunohost.org/?app=lufi) [](https://dash.yunohost.org/appci/app/lufi)
|
||||
|
||||
### Index
|
||||
|
||||
|
@ -16,7 +16,7 @@ L’administrateur 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 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)
|
||||
+ 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)
|
||||
|
||||
### Sources
|
||||
|
|
17
app_shaarli_fr.md
Normal file
17
app_shaarli_fr.md
Normal 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
|
27
app_ttrss.md
27
app_ttrss.md
|
@ -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.
|
||||
[](https://install-app.yunohost.org/?app=ttrss) [](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
|
||||
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.
|
||||
|
||||
### 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".
|
||||
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 Tiny Tiny RSS application through the YunoHost admin panel in order to be able to connect.
|
||||
|
||||
**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)
|
||||
|
|
|
@ -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 d’actualité utilisant les protocoles RSS et atom.
|
||||
[](https://install-app.yunohost.org/?app=ttrss) [](https://dash.yunohost.org/appci/app/ttrss)
|
||||
|
||||
### Index
|
||||
|
||||
- [Liens utiles](#liens-utiles)
|
||||
|
||||
Tiny Tiny RSS est un lecteur de flux d’actualité utilisant les protocoles RSS et Atom.
|
||||
|
||||
### Exportation/importation des flux
|
||||
|
||||
Il est possible de faire une sauvegarde de ces flux d’actualité en format opml.
|
||||
|
||||
Pour cela, il faut aller dans Actions -> Configuration -> onglet flux -> chapitre OPML -> Exporter/Importer en OPML.
|
||||
|
||||
### Client Android
|
||||
|
||||
Il est possible d’utiliser le client Android ttrss-reader pour consulter ces flux :
|
||||
|
||||
**[ttrss-reader](https://f-droid.org/packages/org.ttrssreader/)**
|
||||
Il est possible d’utiliser le client Android ttrss-reader pour consulter ces flux : **[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)
|
||||
puis dans ttrss-reader sur Android, l’adresse du serveur Tiny Tiny RSS : 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.
|
||||
**Note** : vous pouvez avoir besoin de désinstaller, puis réinstaller entièrement l'application Tiny Tiny RSS via l’administration 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)
|
||||
|
|
|
@ -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)
|
||||
- [Gollum](https://github.com/gollum/gollum)
|
||||
- [Goploader](https://github.com/Depado/goploader)
|
||||
- [Gpodder.net](https://gpoddernet.readthedocs.io/en/latest/index.html)
|
||||
- [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)
|
||||
- [Guacamole](http://guacamole.apache.org/)
|
||||
- [Habitica](https://habitica.com/) / [github](https://github.com/HabitRPG/habitica)
|
||||
- [HackMD CE](https://github.com/hackmdio/hackmd)
|
||||
- [Helpy](https://github.com/helpyio/helpy)
|
||||
- [Hexo](https://hexo.io/) / [github](https://github.com/hexojs/hexo)
|
||||
- [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)
|
||||
- [OpenBazaar](https://openbazaar.org) / [github](https://github.com/openbazaar)
|
||||
- [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)
|
||||
- [OpenProject](https://github.com/opf/openproject)
|
||||
- [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)
|
||||
- [Pump.io](http://pump.io) / [github](https://github.com/pump-io/pump.io)
|
||||
- [qBittorrent](https://github.com/qbittorrent/qBittorrent)
|
||||
- [Questions2answer](https://www.question2answer.org/)
|
||||
- [racktables](http://racktables.org) / [github](https://github.com/RackTables/racktables)
|
||||
- [Radarr](https://github.com/Radarr/Radarr)
|
||||
- [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)
|
||||
- [Tracim](https://github.com/tracim/tracim)
|
||||
- [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/)
|
||||
- [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)
|
||||
|
|
|
@ -118,12 +118,15 @@ yunohost backup restore <archivename>
|
|||
|
||||
### 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
|
||||
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
|
||||
mkdir $PATH_TO_DRIVE/yunohost_backup_archives # On your external drive create the folder where the backups will go
|
||||
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
|
||||
|
|
|
@ -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)
|
||||
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).
|
||||
|
||||
|
|
|
@ -1,53 +1,10 @@
|
|||
# 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
|
||||
|
||||
In a web browser, access to your server via the domain name you just entered at the post-installation step.
|
||||
|
||||
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.
|
||||
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
|
||||
should either be fixed or ignored (if they are understood/not relevant)
|
||||
otherwise an email will be sent twice a day..
|
||||
|
|
|
@ -1,55 +1,12 @@
|
|||
# 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
|
||||
|
||||
Dans un navigateur web, essayez d’accéder à votre serveur grâce au nom de domaine que vous avez entré à l’étape de post-installation.
|
||||
|
||||
Par exemple : `http://mondomaine.org`
|
||||
|
||||
<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 l’adresse soit atteignable.
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
#### Si ça ne fonctionne pas…
|
||||
|
||||
---
|
||||
|
||||
### <small>2.</small> Avez-vous bien configuré votre DNS ?
|
||||
|
||||
<div class="alert alert-info">
|
||||
Cette étape n’est 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 s’il 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 d’accé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 l’extérieur du réseau local, le problème vient probablement de la configuration du routeur.
|
||||
|
||||
<div class="alert alert-info">
|
||||
Essayez d’activer l’uPnP sur l’interface 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 l’adresse IP locale de votre serveur grâce à l’interface 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 l’exté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 qu’il 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 l’installation en prenant cette fois un nom de domaine en **.nohost.me** ou en **.noho.st**.
|
||||
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éé,
|
||||
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
|
||||
jour...
|
||||
|
|
|
@ -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`.
|
||||
|
||||
YunoHost provides a recommended DNS configuration, available via :
|
||||
- the webadmin, in Domain > your.domain.tld > 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
|
||||
|
@ -77,12 +77,32 @@ Though it might be easier to understand it if displayed like this:
|
|||
#### A few notes about this table
|
||||
|
||||
- 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 ;
|
||||
- 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.
|
||||
|
||||
### 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
|
||||
|
||||
If your global IP address is constantly changing, follow this [tutorial](/dns_dynamicip).
|
||||
|
|
|
@ -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 ;
|
||||
- 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
|
||||
|
||||
Si votre adresse IP publique change constamment, suivez ce [tutoriel](/dns_dynamicip).
|
||||
|
|
|
@ -18,17 +18,17 @@ have **one such domain** setup at any given time.
|
|||
|
||||
#### 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.
|
||||
|
||||
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
|
||||
`cloud.mydomain.org` address), this feature is not allowed with the `nohost.me`
|
||||
and `noho.st` domains and it is not possible to have a subdomain such as `my
|
||||
application.mydomain.nohost.me`.
|
||||
`cloud.mydomain.org` address), this feature is also allowed with the
|
||||
`nohost.me`, `noho.st` and `ynh.fr` domains and so it is possible to
|
||||
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
|
||||
|
||||
|
|
|
@ -14,11 +14,11 @@ YunoHost.
|
|||
|
||||
### 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 n’est pas possible d’avoir 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 d’avoir un sous-sous-domaine tel `monapplication.mondomaine.nohost.me`.
|
||||
|
||||
Pour pouvoir profiter des applications installables uniquement à la racine d’un 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
|
||||
|
||||
|
|
1
docs.md
1
docs.md
|
@ -27,6 +27,7 @@ YunoHost's documentation has 2 different sections:
|
|||
* [Chat rooms](/chat_rooms)
|
||||
* [Communication](/communication)
|
||||
* [Support / Help](/help)
|
||||
* [Sponsors and partners](/sponsors_partners)
|
||||
|
||||
* Use example:
|
||||
* [YunoHost for non-profit organisations](/use_case_non-profit_organisations)
|
||||
|
|
|
@ -27,6 +27,7 @@ La documentation de YunoHost s’articule autour de deux sections :
|
|||
* [Salons de discussions](/chat_rooms)
|
||||
* [Communication extérieure](/communication)
|
||||
* [Support / Aide](/help)
|
||||
* [Mécénes et partenaires](/sponsors_partners_fr)
|
||||
|
||||
* Exemple d'utilisation:
|
||||
* [YunoHost pour les organisations à but non lucratif](/use_case_non-profit_organisations)
|
||||
|
|
|
@ -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.
|
||||
|
||||

|
||||
|
||||
Notes for apps packagers
|
||||
|
|
|
@ -39,7 +39,6 @@ groups:
|
|||
- delphine
|
||||
```
|
||||
|
||||
|
||||
### Créer un nouveau groupe
|
||||
Pour créer un nouveau groupe, il suffit de cliquer sur le bouton "Nouveau groupe" en haut de la page. Vous ne pouvez choisir qu'un nom formé de lettres (majuscules et minuscules) et d'espaces. Le groupe est créé vide et sans aucune permissions.
|
||||
|
||||
|
@ -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.
|
||||
|
||||

|
||||
|
||||
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
BIN
images/codimd_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
|
@ -1,26 +1,30 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<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: Sketch 3.3.2 (12043) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Fill 1 + Group 24</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
|
||||
<g id="Fill-1-+-Group-24" sketch:type="MSLayerGroup">
|
||||
<g id="Group-24" sketch:type="MSShapeGroup">
|
||||
<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="Group">
|
||||
<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>
|
||||
<path id="Fill-6" fill="#FC6D26"></path>
|
||||
<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 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-14" fill="#FC6D26"></path>
|
||||
<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 d="M105.0614,193.6548 L143.7014,74.7338 L197.8544,74.7338 L105.0614,193.6548 Z" id="Fill-18" fill="#FC6D26"></path>
|
||||
<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 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>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Calque_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="222.5px" height="194px"
|
||||
viewBox="0 0 222.5 194" enable-background="new 0 0 222.5 194" xml:space="preserve">
|
||||
<title>Fill 1 + Group 24</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Page-1" sketch:type="MSPage">
|
||||
<g id="Fill-1-_x2B_-Group-24" sketch:type="MSLayerGroup">
|
||||
<g id="Group-24" sketch:type="MSShapeGroup">
|
||||
<g id="Group">
|
||||
<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 id="Fill-6" fill="#E24329" d="M0,0"/>
|
||||
<path id="Fill-8" fill="#FC6D26" d="M105.062,193.654L66.421,74.734H12.269L105.062,193.654z"/>
|
||||
<path id="Fill-10" fill="#FC6D26" d="M0,0"/>
|
||||
<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
|
||||
l101.629,73.839L12.269,74.734z"/>
|
||||
<path id="Fill-14" fill="#FCA326" d="M0,0"/>
|
||||
<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"/>
|
||||
<path id="Fill-18" fill="#FC6D26" d="M105.062,193.654l38.64-118.92h54.153L105.062,193.654z"/>
|
||||
<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
|
||||
l-101.629,73.839L197.855,74.734z"/>
|
||||
<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>
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 1.8 KiB |
2
isp.md
2
isp.md
|
@ -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 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| Sunrise | Multiple | No | Yes | No | - | - |
|
||||
| Swisscom | Multiple | No | Yes | No | - | - |
|
||||
| Swisscom | Multiple | No | Yes | No | No | No |
|
||||
| VTX | Multiple | No | Yes | No | - | - |
|
||||
|
||||
If you want to add international ISPs information, please do consider [modifying this page](/write_documentation).
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
# 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
|
||||
|
||||
After configuring port forwarding, you should be able to validate with this small tool that your ports are correctly forwarded :
|
||||
|
||||
<a class="btn btn-default" href="http://ports.yunohost.org">Check which ports are forwarded</a>
|
||||
The new diagnosis tool introduced in 3.8 can be used to diagnose that ports are
|
||||
correctly exposed.
|
||||
|
||||
### 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
|
||||
|
||||
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 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}'`
|
||||
- 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 `hostname -I`
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
Une fois que vous aurez configuré la redirection, vous devriez pouvoir valider avec ce petit outil que vos ports sont bien redirigés :
|
||||
|
||||
<a class="btn btn-default" href="http://ports.yunohost.org">Vérifier la redirection des ports</a>
|
||||
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.
|
||||
|
||||
### 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 :
|
||||
- depuis l'interface de votre routeur/box, qui liste peut-être les dispositifs
|
||||
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 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`.
|
||||
|
||||
|
|
|
@ -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.*
|
||||
|
||||
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.
|
||||
* ✔ : sí
|
||||
* ✘ : no
|
||||
|
||||
|
|
36
moving_app_folder_fr.md
Normal file
36
moving_app_folder_fr.md
Normal 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)
|
|
@ -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
|
||||
```
|
||||
|
|
|
@ -27,18 +27,18 @@ 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
|
||||
Après l'installation d'une application.
|
||||
- `post_app_upgrade`
|
||||
Après l'upgrade d'une applications
|
||||
Après l'upgrade d'une applications.
|
||||
- `post_app_remove`
|
||||
Après la supression d'une applications
|
||||
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
|
||||
Après avoir modifié le chemin et/ou le nom de domaine d'une application.
|
||||
- `post_cert_update`
|
||||
Après la mise à jour d'un certificat
|
||||
Après la mise à jour d'un certificat.
|
||||
- `conf_regen`
|
||||
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
|
||||
- dnsmasq
|
||||
- dovecot
|
||||
|
@ -57,14 +57,14 @@ Services pris en charge par regen-conf:
|
|||
|
||||
### 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.
|
||||
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.
|
||||
> 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 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
|
||||
|
@ -103,7 +103,7 @@ purge=$2 # True/False Indique si le dossier utilisateur a été supprimé ou pa
|
|||
##### `post_iptable_rules`
|
||||
|
||||
```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.
|
||||
```
|
||||
|
||||
|
@ -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).
|
||||
|
||||
|
||||
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`
|
||||
|
||||
|
@ -141,11 +141,11 @@ domain=$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.
|
||||
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.
|
||||
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
|
||||
|
@ -155,9 +155,9 @@ cp hook_regen_conf /usr/share/yunohost/hooks/conf_regen/50-SERVICE_$app
|
|||
|
||||
##### 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
|
||||
#!/bin/bash
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
|
|
@ -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.
|
||||
|
||||
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
|
||||
|
||||
You can perform the post-installation with the web interface by entering in your browser :
|
||||
|
|
|
@ -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.
|
||||
|
||||
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
|
||||
|
||||
Puedes acceder a la post-instalación gráfica entrando en un navegador web :
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
L’étape appelée « **post-installation** » est en fait l’étape de configuration initiale de YunoHost. Il faut l’exé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
|
||||
|
||||
Vous pouvez accéder à la post-installation graphique en entrant dans un navigateur web :
|
||||
|
|
|
@ -162,7 +162,7 @@ systemctl restart ssh
|
|||
|
||||
### 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.
|
||||
|
||||
|
|
14
sponsors_partners.md
Normal file
14
sponsors_partners.md
Normal 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
14
sponsors_partners_fr.md
Normal 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 d’infrastructure d’hébergement et d’accès à Internet.
|
||||
- [GLOBENET](http://www.globenet.org): association militante, au service de la liberté d’expression, proposant des services internet.
|
||||
- [LDN-NET](https://ldn-fai.net/) : association pour la défense d’un Internet libre, neutre et décentralisé dont le moyen d’action principale est d’être un fournisseur d’accè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 d’ami·es convaincu·es qu’un monde numérique émancipateur est possible, persuadé·es qu’il adviendra grâce à des actions concrètes sur le terrain et en ligne avec vous et pour vous !
|
Loading…
Add table
Reference in a new issue