From 52f93789d358afed94d71691deba5e95fd7973a0 Mon Sep 17 00:00:00 2001
From: OniriCorpe
Date: Tue, 7 May 2024 22:55:53 +0200
Subject: [PATCH 1/5] add tos to docs
---
.../terms_of_services.fr.md | 419 +++++++++++++++++
.../90.terms_of_services/terms_of_services.md | 420 ++++++++++++++++++
2 files changed, 839 insertions(+)
create mode 100644 pages/05.community/90.terms_of_services/terms_of_services.fr.md
create mode 100644 pages/05.community/90.terms_of_services/terms_of_services.md
diff --git a/pages/05.community/90.terms_of_services/terms_of_services.fr.md b/pages/05.community/90.terms_of_services/terms_of_services.fr.md
new file mode 100644
index 00000000..d68a705b
--- /dev/null
+++ b/pages/05.community/90.terms_of_services/terms_of_services.fr.md
@@ -0,0 +1,419 @@
+---
+title: Conditions Générales et spécifiques des Services opérés par le projet YunoHost
+template: docs
+taxonomy:
+ category: docs
+routes:
+ default: '/terms_of_services'
+ aliases:
+ - '/tos'
+---
+
+01/02/2024
+
+## Préambule
+
+Le projet YunoHost est animé par une équipe de personnes bénévoles qui ont fait cause commune pour créer un système d'exploitation libre pour les serveurs, appelé YunoHost. YunoHost est publié [sous licence GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.txt). En lien avec ce logiciel, le projet administre et met à disposition plusieurs services techniques et communautaires à des fins diverses.
+
+En utilisant ces services, vous acceptez d’être lié·e par les conditions suivantes.
+
+## Version courte (TL;DR)
+
+- **Clause « Ceci est un projet communautaire »** : vous acceptez et respectez le fait que le projet est maintenu par une équipe bénévole, et que le temps et l'énergie bénévole sont la force motrice du projet. Les contributions au projet sont les bienvenues, ponctuelles ou dans la durée, par le moyen de votre choix (que ce soit en parler autour de vous, nous faire des retours constructifs, aider les autres, faire coucou, traduire, tester, coder, donner, ...).
+- **Clause « On fait ce qu'on peut »** : vous acceptez que l'équipe bénévole fait du mieux qu'elle peut et n'est assujettie à aucune obligation, ni de moyen, ni de résultat. Le projet ne peut être tenu pour responsable des dommages ou préjudices indirects si un service cesse de fonctionner. L'équipe peut décider d'arrêter un service à tout moment.
+- **Clause « On n'est pas un GAFAM »** : nous essayons de minimiser le plus possible les données personnelles qui peuvent transiter, être stockées sur notre infrastructure ou être transférée vers des tiers. Nous publions le code qui fait tourner nos services. Nous nous interdisons toute revente de données personnelles. Nous n'exploitons les données qu'à des fin de statistiques internes et anonymisées.
+- **Clause « On n'aime pas les personnes toxiques »** : vous devez respecter les autres membres de la communauté en faisant preuve de civisme, de politesse et bienveillance.
+- **Clause « Le logiciel libre, ce n'est pas des bénévoles à vos ordres »** : les messages se contentant de demander quand une fonctionnalité, correctif ou mise à jour sera disponible, volontairement ou involontairement insistants, sans aucune forme de politesse, de bienveillance ou d'intention de contribution, ne sont pas les bienvenus. Si vous souhaitez qu'un point en particulier soit traité, demandez-vous comment contribuer, ou a minima parlez-en avec bienveillance.
+- **Clause « On ne lit pas dans les boules de cristal »** : le forum et chat d'entraide stipulent clairement que pour espérer obtenir de l'aide, il est nécessaire de fournir les informations de base (type de matériel, version de YunoHost), des éléments de contexte et les journaux complets. Ne pas le faire est extrêmement agaçant pour les bénévoles qui tentent de vous aider.
+- **Clause « On ne veut pas finir en taule »** : vous devez respecter la loi (que celle-ci soit bien faite ou idiote).
+- **Clause « Tout abus sera puni »** : abuser techniquement ou humainement des services peut entraîner la fermeture de vos comptes et l'interdiction de l'accès à une partie ou à l'ensemble des services, possiblement sans avertissement ni négociation.
+
+## Distinction entre YunoHost en tant que projet, en tant que services, en tant que logiciel, et en tant que distribution
+
+Ce document détaille les CGS qui s'appliquent **aux services fournis par le projet YunoHost**, mais **pas** à YunoHost en tant que logiciel **ni** aux applications proposées dans le catalogue de YunoHost.
+
+YunoHost en tant que logiciel est publié [sous licence AGPLv3](https://www.gnu.org/licenses/agpl-3.0.txt) et est donc fourni sans garantie d'aucune sorte et n'est pas responsable des dommages résultant de son utilisation, ni de l'utilisation des applications qu'il permet d'installer.
+
+*Si vous utilisez YunoHost pour fournir des services à d'autres personnes, il est de votre responsabilité de définir et publier les conditions générales d'utilisation de votre souhait pour vos propres services à l'attention de ces personnes, et de vous renseigner sur toutes les implications légales des applications que vous installez.*
+
+## Évolution des conditions générales et spécifiques de service
+
+Le projet YunoHost se réserve le droit de mettre à jour et modifier ces conditions. Dans ce cas, le projet YunoHost informe les personnes concernées par un affichage sur le forum ou à défaut sur le site.
+
+Un historique daté des versions de ces conditions peut être récupéré sur
+
+## Vue d'ensemble des services
+
+Les services administrés et maintenus par le projet sont, à ce jour :
+
+- un site web public, destiné à présenter le projet et à fournir de la documentation ;
+- l'hébergement de scripts d'installation, d'images, de paquets et de clés cryptographiques liés à l'installation et à la mise à jour de YunoHost ;
+- un forum communautaire public, destiné à s'entraider et discuter des problèmes ou de tout autre sujet lié au projet ;
+- un catalogue d'application public pour permettre de présenter et voter pour les applications disponibles, et une API permettant à des programmes de récupérer cette liste ;
+- un service pastebin, destiné à partager facilement les logs et autres informations techniques ;
+- un service de nom de domaine gratuit, destiné à réduire les frictions pour les personnes qui ne possèdent pas encore de nom de domaine ou qui souhaitent une solution simple et rapide dans le contexte de YunoHost ;
+- des services d'auto-diagnostic utilisés par le logiciel YunoHost et destinés à aider les utilisateurices à diagnostiquer de manière autonome les problèmes techniques ;
+- un service de démonstration d'un serveur YunoHost en libre service ;
+- d'autres services liés au développement et à la maintenance.
+
+En outre, le projet dépend, utilise, ou encourage l'utilisation de services gérés par des tiers, tels que :
+
+- des briques logicielles et recettes d'installations automatiques (apps) hébergées chez des tiers tels que (liste non-exhaustive) `github.com`, `npmjs.org`, `pypi.org`, `debian.org`, `sury.org`, …
+- plusieurs salons de discussion communautaires publics utilisant les protocoles Matrix, XMPP et IRC, hébergés par des tiers tels que (liste non-exhaustive) `matrix.org` et `libera.chat` ;
+- l'autorité de certification Let's Encrypt ;
+- une interface de dons, dont les paiements sont gérés par Stripe et à destination de Support Self-Hosting, l'association qui récolte et gère les dons.
+Le cas échéant, il est de votre responsabilité de consulter les conditions d'utilisations de ces services gérés par des tiers.
+
+## Accès aux services
+
+### Périmètre géographique
+
+Les services du projet YunoHost s’adressent à l'ensemble des utilisateurices et contributeurices de YunoHost dans le monde tant que la réglementation de leur pays ne contrevient pas à leur usage ou fourniture.
+
+### Permission d'utilisation des services
+
+Sauf mentions contraires, l'usage des services du projet YunoHost est limité à une utilisation dans le cadre attendu :
+
+- découverte ou utilisation du système d'exploitation YunoHost
+- contribution au projet YunoHost
+
+Tout autre usage (par exemple: utilisation dans une autre distribution, création d'intelligence artificielle, etc.) doit être préalablement validé par le projet YunoHost, à moins qu'il ne soit explicitement permis dans les conditions spécifiques du service ci-dessous.
+
+### Services accessibles via un compte et résiliation
+
+Les fonctionnalités suivantes sont accessibles via un compte :
+
+- l'écriture sur le forum ;
+- le vote pour les applications du catalogue (sur `apps.yunohost.org`) ;
+- la réservation et la gestion de noms de domaines dynamiques fournit par le projet YunoHost (`nohost.me`, `noho.st` et `ynh.fr`).
+
+Le compte sur le forum et le compte gérant votre nom de domaine peuvent être résiliés grâce aux identifiants associés.
+
+## Fonctionnement
+
+### Conditions financières
+
+**L’ensemble des services est fournie gratuitement. N’hésitez pas à soutenir le projet YunoHost en faisant un don.**
+
+### Intervention en cas de panne
+
+**En cas de panne constatée, et si aucun message n’atteste sur le forum que le projet YunoHost est en train de corriger le dysfonctionnement, nous vous encourageons à faire un signalement via le chat ou le forum.**
+
+Le projet YunoHost propose l’ensemble de ces services grâce à des bénévoles qui feront de leur mieux pour résoudre les problèmes techniques qui pourraient subvenir. Les bénévoles n'ont aucune obligation à réparer un service cassé.
+
+En cas d’incapacité à résoudre un problème technique, le projet YunoHost pourra prendre la décision de fermer le service.
+
+### Devenir des services
+
+Le projet YunoHost ne garanti pas que les services continueront à fonctionner éternellement, et peut choisir d’arrêter des services si le projet estime ne plus être en mesure de fournir lesdits services.
+
+Si le collectif qui anime le projet YunoHost en a la possibilité, il fera de son mieux pour laisser un délai suffisant pour permettre à tout le monde de migrer ou de s'adapter sereinement.
+
+### Responsabilité du projet YunoHost
+
+**En aucun cas, un ou une utilisatrice ne pourra se prévaloir de dommages ou indemnités résultant de problèmes techniques de quelque nature que ce soit.**
+
+Le projet YunoHost n'est assujetti à aucune obligation (ni de moyen, ni de résultat). En cas de défaillance ou d'arrêt des services, le projet YunoHost ne peut être tenu pour responsable des dommages indirects tels que pertes de données, pertes d’exploitation, préjudices commerciaux, perte de clientèle, de chiffre d’affaires, de bénéfices ou d’économies prévus, ou de tout autre préjudice indirect.
+
+En particulier, le projet YunoHost ne pourra être tenu responsable si vous avez fait dépendre de ses services des intérêts vitaux.
+
+## Mésusage des services
+
+**Tout abus peut entraîner la fermeture de vos comptes et l'interdiction de l'accès à une partie ou à l'ensemble des services.**
+
+Le projet se réserve le droit de mettre en place les mesures jugées nécessaires pour mettre fin aux abus constatés. Le projet YunoHost reste seul juge de cette notion « d’abus » dans le but de fournir le meilleur service possible à l’ensemble des usagers et usagères. Le projet YunoHost pourra décider d'agir sans avertissement ni négociation.
+
+### Usage illégal des services
+
+**Le projet YunoHost n’est pas là pour vous couvrir et prendre des risques légaux à votre place. Même si votre action est légitime, vous êtes entièrement responsable de ce que vous faites.**
+
+Vous devez respecter les lois et réglementations en vigueur lors de l’usage des services proposés par le projet YunoHost (notamment sur le forum, les chats, le paste et le service de noms de domaines) que ce soit en matière de respect de la vie privée, d’envoi de mails en grande quantité, de propriété intellectuelle, de propos discriminatoires, d’appel à la haine, de harcèlement, d’atteinte aux libertés fondamentales de personnes, etc.
+
+En cas d’usage prohibé, le projet YunoHost peut se trouver dans l’obligation de déclencher la suspension totale ou partielle du service, le retrait de contenu, ou toute autre mesure que les lois et réglementations lui imposent.
+
+### Respect de la communauté et des bénévoles
+
+Vous acceptez et respectez le fait que le projet YunoHost est un projet communautaire maintenu par une équipe bénévole, et que le temps et l'énergie bénévole sont la force motrice du projet. Vous comprenez que les bénévoles du projet font de leur mieux, et qu'abuser de leur temps ou de leur énergie équivaut à saboter le projet.
+
+Vous devez respecter les autres utilisateurices et l'équipe du projet en faisant preuve de civisme, de politesse et bienveillance. Toute forme de pression, insistance, harcèlement ou toxicité est prohibée. Le projet YunoHost se réserve le droit de vous bannir et de supprimer tout contenu paraissant non pertinent ou contrevenant à ces principes, selon son seul jugement et sans qu'un avertissement préalable ne soit nécessaire.
+
+En particulier, le projet YunoHost sera intransigeant dès lors que votre comportement consommera trop d'énergie des contributeur⋅ices régulier⋅es du projet.
+
+### Utilisation raisonnable
+
+**Les services et ressources étant partagées avec le reste des utilisateurices, leur utilisation doit être raisonnable et prendre en compte l'aspect mutualisé.**
+
+Si vous abusez du service, par exemple en monopolisant des ressources machines partagées, son contenu ou son accès pourra être supprimé.
+
+## Nos engagements
+
+### Charte CHATONS
+
+**Le projet YunoHost vise à long-terme à respecter la charte du Collectif des Hébergeurs, Alternatifs, Transparents, Ouverts, Neutres et Solidaires dans le cadre de son activité de fourniture de services.**
+
+Compte tenu de sa portée internationale, le projet YunoHost n'est pas, à ce jour, candidat à l’intégration au sein de ce collectif. Toutefois à ce jour des membres du collectif C.H.A.T.O.N.S utilisent YunoHost.
+
+Plus d’information sur la charte C.H.A.T.O.N.S. :
+
+### Respect de vos données personnelles et de votre vie privée
+
+Nous essayons de minimiser le plus possible les données personnelles qui peuvent transiter, être stockées sur notre infrastructure ou être transférée vers des tiers.
+
+Le projet YunoHost s'interdit toute revente ou transfert de données personnelles à des tiers.
+
+Ci-dessous, le détail des informations personnelles susceptibles de transiter ou d'être stockées sur les services du projet YunoHost:
+
+- informations techniques (IP, User agent) utilisées pour interagir avec les services. Elles sont utilisées dans le but de fournir le service, d'en assurer la maintenance et la sécurité et de créer des statistiques agrégées très basiques ;
+- email et pseudonyme utilisés sur le forum ;
+- informations personnelles figurant dans les messages échangées via le forum ou le chat ;
+- informations personnelles incluses dans les noms de domaines fournit par le projet ;
+- informations figurant dans des logs que vous avez partagés via l'outil dédié ;
+- informations bancaires et personnelles dans le cadre d'un don via Stripe ou Liberapay.
+
+Sauf mentions contraires dans les conditions spécifiques, ces données se trouvent à Paris, Strasbourg et Toulouse.
+
+Pour plus d'informations, se référer aux conditions spécifiques de services.
+
+### Exercice de vos droits
+
+Conformément à l’article 34 de la loi « Informatique et Libertés », vous pouvez exercer les droits suivant en envoyant un mail à `data CHEZ yunohost.org` :
+
+- droits d’accès, de rectification, d’effacement et d’opposition ;
+- droit à la limitation du traitement ;
+- droit à la portabilité des données ;
+- droit de ne pas faire l’objet d’une décision individuelle automatisée.
+
+### Règlement général sur la protection des donnée (RGPD)
+
+Le projet YunoHost s’engage, vis à vis des services qu'il met à disposition, à respecter la réglementation en vigueur applicable au traitement de données à caractère personnel et, en particulier, le règlement (UE) 2016/679 du Parlement européen et du Conseil du 27 avril 2016 applicable à compter du 25 mai 2018, dite RGPD.
+
+Néanmoins ceci ne signifie en aucun cas que *le logiciel YunoHost*, ni les applications proposées à l'installation, seraient certifiés avec une quelconque conformité au RGPD (quoi que cela puisse signifier pour vous).
+
+## Litige et juridiction compétente
+
+Le droit applicable aux présentes est le droit français. En cas de différend, les parties recherchent une solution amiable. Si la démarche échoue, le litige sera tranché par le Tribunal de Grande Instance de Toulouse (FRANCE).
+
+Le fait que l’usager ou le projet YunoHost ne se prévale pas à un moment donné de l’une des présentes conditions générales et/ou tolère un manquement par l’autre partie ne peut être interprété comme valant renonciation par l’usager ou le projet YunoHost à se prévaloir ultérieurement de ces conditions.
+
+La nullité d’une des clauses de ces conditions en application d’une loi, d’une réglementation ou d’une décision de justice n’implique pas la nullité de l’ensemble des autres clauses. Par ailleurs l’esprit général de la clause sera à conserver en accord avec le droit applicable.
+
+---
+
+## Conditions Spécifiques de Services
+
+### Site web et documentation
+
+#### Adresse du service
+
+`yunohost.org`
+
+#### Contribution
+
+Si vous repérez une erreur, n'hésitez pas à proposer une correction, via le bouton "Éditer" (nécessite un compte GitHub) ou via un message sur le forum.
+
+#### Données personnelles
+
+A notre connaissance, aucune page de ce site web ne comporte de traqueurs.
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### Dons
+
+#### Adresse du service
+
+`donate.yunohost.org`
+
+#### Arrêt d'un don récurent
+
+Pour demander l'arrêt de votre don récurrent, merci d'envoyer un mail à `donate-5542 CHEZ yunohost.org` et d'indiquer les informations qui permettront d'identifier votre don (email utilisé, nom, montant).
+
+#### Données personnelles
+
+Pour fournir ce service, l'association Support Self-Hosting utilise Stripe comme infrastructure de paiement.
+
+Il est nécessaire d'utiliser une carte bancaire ainsi que de son identité, mais ces données ne sont pas stockées, ni même ne transite, par l'infrastructure du projet YunoHost, sauf dans les mails échangés dans le cadre d'une résiliation de don récurent.
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### Supports d'installations (image ISO, ARM, script d'installation, ...)
+
+Vous utilisez ce service dans 2 situations:
+
+- installation ou restauration de YunoHost ;
+- (plus rare) installation, mise à jour, ou restauration d'une app dont le binaire n'est pas fournis par son éditeur et dont sa compilation sur votre propre machine est jugée trop longue ou trop coûteuse en ressources.
+
+#### Adresse du service
+
+`build.yunohost.org`
+
+#### Données personnelles
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### IP
+
+Ce service est utilisé automatiquement par vos instances YunoHost pour déterminer leurs IP publiques et permettre ainsi l'automatisation et le diagnostique de certaines opérations.
+
+#### Adresses des services
+
+`ip.yunohost.org` et `ip6.yunohost.org`
+
+#### Service en libre accès
+
+Exceptionnellement, le service de récupération d'IP publiques peut être utilisé dans d'autres cadres tant que la charge induite est minime relativement à celle de YunoHost.
+
+#### Données personnelles
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### Noms de domaines gratuits et dynamiques
+
+Il s'agit du service utilisé si vous demandez un nom de domaine terminant par `nohost.me`, `noho.st` ou `ynh.fr` dans l'interface de YunoHost.
+
+#### Adresses des services
+
+`dyndns.yunohost.org`, `dynette.yunohost.org`, `ns0.yunohost.org`, `ns1.yunohost.org`
+
+#### Limite d'usage
+
+Ce service est proposé dans la limite d'un seul domaine par serveur YunoHost (bien qu'il soit possible de configurer des sous-domaine de ce domaine). Si des abus sont constatés (par exemple création de trop nombreux domaines depuis la même machine ou IP, ou création automatisée à large échelle), le projet se réserve le droit de supprimer les domaines concernés sans prévenir.
+
+### Suppression automatique
+
+Le projet YunoHost se réserve le droit de supprimer le domaine si aucun serveur ne semble y être associé et que l'adresse IP n'a pas été mise à jour depuis 1 an.
+
+### Résiliation
+
+Vous pouvez supprimer votre domaine à l'aide du mot de passe choisi lors de sa création.
+
+#### Données personnelles
+
+Si votre nom contient des données personnelles, celles-ci se retrouveront forcément sur les serveurs faisant fonctionner le service.
+
+Notez que, pour fonctionner, ce service stocke et transmet nécessairement les adresses IP publiques de votre serveur.
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### Diagnostique
+
+Il s'agit d'un service permettant de tester automatiquement si vos services semblent correctement exposés sur internet et ainsi résoudre en autonomie les problèmes liés à la configuration réseau.
+
+Ce service est utilisé automatiquement deux fois par jour, dès lors que vous activez la fonctionnalité de diagnostique.
+
+#### Adresse du service
+
+`diagnosis.yunohost.org`
+
+#### Limite d'usage
+
+En raison de la consommation de ressources induites, le service de diagnostique est limités à 60 domaines à diagnostiquer par requêtes.
+
+Si vous dépassez cette limite, le projet recommande de diagnostiquer le bon fonctionnement de vos domaines par vos propres moyens.
+
+#### Données personnelles
+
+Pour fonctionner ce service transmet les noms de domaines et les ports à diagnostiquer. Toute donnée personnelle figurant dans les noms de domaines est donc transférée également, mais n'est pas conservée.
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### Catalogue d'applications
+
+Ce service permet de consulter (via un navigateur ou un programme) la liste des applications disponibles à l'installation dans YunoHost. Il permet également de voter pour les apps afin d'orienter les efforts de contribution.
+
+De plus, les serveurs fonctionnant sous YunoHost récupèrent automatiquement le catalogue d'application une fois par jour.
+
+#### Adresses du service
+
+`apps.yunohost.org` et `app.yunohost.org`
+
+#### Mésusage des services
+
+Toute tentative de falsifier les votes sur les apps du catalogue ou de la liste de souhaits sera considéré comme un abus et peut faire l'objet d'annulation, de bannissement et de suppression de compte.
+
+#### Données personnelles
+
+Pour participer à la popularité des apps, il est nécessaire d'utiliser son compte sur le forum. Voir le service Forum.
+
+Le stockage de vos votes est lié à votre identité sur le forum.
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+#### Statistiques
+
+Afin de dimensionner nos services et planifier les nouvelles versions, nous utilisons le logs techniques de téléchargement de la liste des apps pour estimer le nombre d'instances YunoHost en fonctionnement dans la nature, et le ratio des versions majeures.
+
+### Dépôt de paquet Debian
+
+Il s'agit du canal par lequel les mises à jour de YunoHost en tant que logiciel sont mises à disposition. Le projet YunoHost maintient également des "builds" de certaines briques logicielles dont YunoHost dépends ou à la périphérie du projet.
+
+#### Adresse du service
+
+`forge.yunohost.org`
+
+#### Autorisation de créer des dépôts miroirs
+
+Il est autorisé (et même encouragé) de créer des dépôts miroirs du dépôt de paquet Debian de YunoHost.
+
+#### Données personnelles
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### Tickets et contributions au code
+
+En l'état, le développement, les rapports de bug et les demandes de fonctionnalités s'effectuent sur les dépôts des organisations "YunoHost" et "YunoHost-Apps" sur la plateforme GitHub.
+
+#### Respect des bénévoles
+
+Nous ne pouvons que ré-insister sur ce qui est déjà mentionné dans la section 'Respect de la communauté et des bénévoles' plus haut : le projet est maintenu par une équipe bénévole, le temps et l'énergie bénévole est la force motrice du projet, et les bénévoles font de leur mieux. Vous êtes les bienvenues pour contribuer au projet (et le cas échéant à poser des questions sur comment contribuer) à l'équipe.
+
+En revanche, abuser de leur temps ou de leur énergie équivaut à saboter le projet. En particulier, YunoHost n'est *pas* une communauté de bénévoles à vos ordres sur les priorités de correctifs, fonctionnalités ou mises à jour, ni pour YunoHost en tant que logiciel, ni pour le catalogue d'applications maintenues par le projet. Les bénévoles ne promettent ni support, ni correctifs, ni fonctionnalités, ni mise à jour, et ne fournissent pas non plus d'estimation sur "quand" une fonctionnalité, correctif ou mise à jour sera disponible. Les messages se contentant de demander quand une fonctionnalité, correctif ou mise à jour sera disponible, sans aucune forme de politesse, de bienveillance ou d'intention de contribution, ne sont pas les bienvenus et sapent le moral des bénévoles. Tout abus pourra être sanctionné par un bannissement des organisations GitHub du projet, voir de l'entièreté des services du projet.
+
+### Paste
+
+Ce service sert à partager les journaux des opérations réalisées avec YunoHost pour permettre l'étude et la résolution des problèmes.
+
+#### Adresse du service
+
+`paste.yunohost.org`
+
+#### Données personnelles
+
+Les logs que vous partagez sont susceptible de contenir des informations personnelles ou, dans le pire des cas, des secrets qui peuvent compromettre la sécurité d'une partie ou de l'entièreté de votre serveur. Lors de la publication, le logiciel YunoHost essaie de retirer automatiquement et du mieux qu'il peut ces informations. Néanmoins, le système est loin d'être parfait, et il est de votre responsabilité de relire les informations avant de partager le lien généré avec d'autres personnes.
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
+
+### Forum (et chat) d'entraide
+
+#### Adresse du service
+
+`forum.yunohost.org` et chats listés sur
+
+#### Demander de l'aide
+
+Le forum et chat d'entraide stipulent clairement (par exemple [ici](https://yunohost.org/fr/help-me), [ici](https://forum.yunohost.org/t/asking-for-support-demander-de-laide/7795) et [ici](https://forum.yunohost.org/t/how-to-get-help-efficiently-comment-obtenir-de-laide-efficacement/27)) que pour espérer obtenir de l'aide, il est **nécessaire** de fournir les informations de base (type de matériel, version de YunoHost), des éléments de contexte et les journaux complets. Ne pas le faire est extrêmement agaçant pour les personnes qui tentent de vous aider, d'autant plus que nous nous efforçons de simplifier au maximum le partage de ces informations. De plus c'est contre-productif car cela fait perdre du temps à tout le monde : on ne peux pas résoudre un problème qu'on ne peut diagnostiquer.
+
+Si ces règles ne sont pas respectées, l'équipe se réserve le droit de fermer votre sujet sans préavis.
+
+#### Données personnelles
+
+Le forum permet d'indiquer des informations personnelles (email, compte GitHub, pseudo). À partir de l'interface du forum, vous avez la main pour modifier et supprimer ces données.
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes. De plus, le forum est susceptible d'envoyer ou recevoir des emails, qui sont également journalisés.
+
+#### Localisation des données
+
+Paris
+
+### Service de démonstration
+
+#### Adresse du service
+
+`demo.yunohost.org`
+
+#### Objectif et fonctionnement
+
+Ce service permet de tester les interfaces de YunoHost (webadmin et portail utilisateur) pour découvrir et se faire une idée de YunoHost sans l'installer. Les données de ce serveur sont détruites et réinitialisées toutes les 30 minutes environ.
+
+#### Données personnelles
+
+Comme n'importe quel service web, un journal technique existe enregistrant l'IP et le User Agent des requêtes.
diff --git a/pages/05.community/90.terms_of_services/terms_of_services.md b/pages/05.community/90.terms_of_services/terms_of_services.md
new file mode 100644
index 00000000..bc93ae27
--- /dev/null
+++ b/pages/05.community/90.terms_of_services/terms_of_services.md
@@ -0,0 +1,420 @@
+---
+title: General and Specific Conditions of Services operated by the YunoHost project
+template: docs
+taxonomy:
+ category: docs
+routes:
+ default: '/terms_of_services'
+ aliases:
+ - '/tos'
+---
+
+01/02/2024
+
+## Preamble
+
+The YunoHost project is a team of volunteers who have made common cause to create a free operating system for servers, called YunoHost. YunoHost is published [under the GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.txt). In connection with this software, the project administers and makes available several technical and community services for various purposes.
+
+By using these services, you agree to be bound by the following terms.
+
+## Short version (TL;DR)
+
+- **"This is a community project" clause**: you accept and respect the fact that the project is maintained by team of volunteers, and that volunteer time and energy are the driving force behind the project. You are welcome to contribute to the project, punctually or over time, in any way you choose (whether it's talking about it around you, giving us constructive feedback, helping others, saying hi, translating, testing, coding, donating, ...).
+- **"We do what we can" clause**: You accept that the volunteer team does the best it can, and is not subject to any obligation of means or result. The project cannot be held responsible for any consequential damage if a service ceases to operate. The team may decide to stop a service at any time.
+- **"We are not FAANGs" clause**: We try to minimize as much as possible the personal data that may transit, be stored on our infrastructure or be transferred to third parties. We publish the code that runs our services. We do not resell personal data. We only use data for internal, anonymized statistical purposes.
+- **"We do not like toxic people" clause**: you must respect other members of the community by showing civic-mindedness, politeness and kindness.
+- **"Free software is not about volunteers doing your bidding" clause**: messages that simply ask when a feature, fix or update will be available, that are intentionally or unintentionally insistent, without any form of politeness, benevolence or intention to contribute, are not welcome. If you would like a particular point to be addressed, ask yourself how you can contribute, or at the very least, speak kindly of it.
+- **"We do not read crystal balls" clause**: the forum and support chat clearly state that in order to obtain help, it is necessary to provide basic information (hardware type, YunoHost version, ..), contextual elements and complete logs. Not doing so is extremely annoying for the volunteers trying to help you.
+- **"We do not want to go to jail" clause**: you must respect the law (whether it's well-made or silly).
+- **"Any abuse will be punished" clause**: technical or human abuse of the services may result in the closure of your accounts and the banning of access to some or all of the services, possibly without warning or negotiation.
+
+## Distinction between YunoHost as a project, as a service, as software, and as distribution
+
+This document details the TOS that apply **to the services provided by the YunoHost project**, but **not** to YunoHost as software **nor** to the applications offered in the YunoHost catalog.
+
+YunoHost as software is released [under the AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.txt) and is therefore provided without warranty of any kind and is not liable for any damages resulting from its use, nor from the use of the applications it allows to install.
+
+*If you use YunoHost to provide services to others, it is your responsibility to define and publish your own terms and conditions of use for your own services, and to inform yourself of any legal implications of the applications you install.*
+
+## General and specific conditions of service
+
+The YunoHost project reserves the right to update and modify these conditions. In this case, the YunoHost project will inform those concerned by posting a notice on the forum or, failing that, on the site.
+
+A dated version history of these conditions can be found at
+
+## Services overview
+
+The services administered and maintained by the project to date are:
+
+- a public website, designed to present the project and provide documentation;
+- hosting of installation scripts, images, packages and cryptographic keys for installing and updating YunoHost;
+- a public community forum, to support each other and discuss problems or any other topic related to the project;
+- a public application catalog, to present and vote for available applications, and an API for programs to retrieve this list;
+- a pastebin service, for easy sharing of logs and other technical information;
+- a free domain name service, designed to reduce friction for people who don't yet own a domain name, or who want a quick and easy solution in the context of YunoHost;
+- self-diagnostic services used by YunoHost software to help users diagnose technical problems on their own;
+- a freely, publicly available YunoHost demo server;
+- other development and maintenance services.
+
+In addition, the project depends on, uses, or encourages the use of services managed by third parties, such as:
+
+- software blocks and automatic installation recipes (apps) hosted by third parties such as (non-exhaustive list) `github.com`, `npmjs.org`, `pypi.org`, `debian.org`, `sury.org`, ...
+- several public community chat rooms using Matrix, XMPP and IRC protocols, hosted by third parties such as (non-exhaustive list) `matrix.org` and `libera.chat`;
+- the Let's Encrypt certification authority;
+- a donation interface, where payments are managed by Stripe and sent to Support Self-Hosting, the association that collects and manages donations;
+
+It is your responsibility to consult the conditions of use of these third-party services.
+
+## Access to services
+
+### Geographic scope
+
+The YunoHost project services are intended for all YunoHost users and contributors worldwide, as long as the regulations of their country do not contravene their use or provision.
+
+### Permission to use services
+
+Unless otherwise specified, use of the YunoHost project services is limited to use within the expected framework:
+
+- discovering or using the YunoHost operating system
+- contribution to the YunoHost project
+
+Any other use (e.g. use in another distribution, creation of artificial intelligence, etc.) must be approved in advance by the YunoHost project, unless explicitly permitted in the service-specific conditions below.
+
+### Account-based services and termination
+
+The following functionalities are accessible via an account:
+
+- forum posting ;
+- voting for applications in the catalog (on `apps.yunohost.org`) ;
+- reservation and management of dynamic domain names provided by the YunoHost project (`nohost.me`, `noho.st` and `ynh.fr`).
+
+The forum account and the account managing your domain name can be terminated using the associated credentials.
+
+## How it works
+
+### Financial conditions
+
+**All services are provided free of charge. Don't hesitate to support the YunoHost project by making a donation**.
+
+### Troubleshooting
+
+**In the event of an outage, and if there is no message on the forum confirming that the YunoHost project is in the process of correcting the outage, you are encouraged to report it via chat or the forum.**
+
+The YunoHost project offers all these services thanks to volunteers who will do their best to resolve any technical problems that may arise. Volunteers are under no obligation to repair a broken service.
+
+In the event of failure to fix a technical issue, the YunoHost project may decide to close the service.
+
+### Fate of services
+
+The YunoHost project does not guarantee that services will continue to operate forever, and may choose to discontinue services if the project feels it is no longer able to provide said services.
+
+If the YunoHost project is able to do so, it will do its best to allow sufficient time for everyone to migrate or adapt serenely.
+
+### YunoHost project responsibility
+
+**Under no circumstances may a user claim damages or compensation resulting from technical problems of any kind whatsoever.**
+
+The YunoHost project is not subject to any obligation (neither of means nor of result). In the event of failure or interruption of services, the YunoHost project cannot be held responsible for indirect damages such as loss of data, operating losses, commercial prejudice, loss of clientele, sales, profits or anticipated savings, or any other indirect prejudice.
+
+In particular, the YunoHost project cannot be held liable if you have made vital interests dependent on its services.
+
+## Misuse of services
+
+**Any abuse may result in the closure of your accounts and the prohibition of access to all or part of the services**.
+
+The YunoHost project reserves the right to take any measures it deems necessary to put an end to any abuse of its services. The YunoHost project is the sole judge of this notion of "abuse", with the aim of providing the best possible service to all users. The YunoHost project may decide to act without warning or negotiation.
+
+### Illegal use of services
+
+**The YunoHost project is not here to cover you and take legal risks on your behalf. Even if your action is legitimate, you are entirely responsible for what you do.**
+
+You must abide by the laws and regulations in force when using the services offered by the YunoHost project (in particular the forum, chat, paste and domain name services), whether in terms of privacy, sending large quantities of e-mail, intellectual property, discriminatory comments, hate speech, harassment, infringement of people's fundamental freedoms, and so on.
+
+In the event of prohibited use, the YunoHost project may be obliged to suspend all or part of the service, remove content, or take any other action required by law or regulation.
+
+### Respect for the community and volunteers
+
+You accept and respect the fact that the YunoHost project is a community project maintained by a volunteer team, and that volunteer time and energy are the driving force behind the project. You understand that project volunteers do their best, and that to abuse their time or energy is to sabotage the project.
+
+You must respect other users and the project team by demonstrating civility, politeness and kindness. Any form of pressure, insistence, harassment or toxicity is prohibited. The YunoHost project reserves the right to ban you and delete any content that appears irrelevant or contravenes these principles, at its sole discretion and without prior warning.
+
+In particular, the YunoHost project will be uncompromising whenever your behavior consumes too much of the energy of the project's regular contributors.
+
+### Reasonable use
+
+**Since services and resources are shared with the rest of the users, their use must be reasonable and take into account the shared aspect**.
+
+If you abuse the service, for example by monopolizing shared machine resources, its content or access may be removed.
+
+## Our commitments
+
+### CHATONS Charter
+
+**The YunoHost project's long-term aim is to respect the charter of the Collectif des Hébergeurs, Alternatifs, Transparents, Ouverts, Neutres et Solidaires (Collective of alternative, transparent, open, neutral and supportive hosting providers) as part of its service provision activities**.
+
+Given its international scope, the YunoHost project is not currently a candidate for membership of this collective. However, members of the C.H.A.T.O.N.S collective are currently using YunoHost.
+
+For more information on the C.H.A.T.O.N.S. charter:
+
+### Respect for your personal data and privacy
+
+We try to minimize as much as possible the personal data that may transit, be stored on our infrastructure or be transferred to third parties.
+
+The YunoHost project prohibits any resale or transfer of personal data to third parties.
+
+Below are details of the personal data that may be transferred or stored on YunoHost services:
+
+- technical information (IP, User agent) used to interact with the services. This information is used to provide the service, to ensure its maintenance and security, and to create very basic aggregated statistics.
+- e-mail address and pseudonym used on the forum
+- personal information contained in messages exchanged via the forum or chat room
+- personal information included in domain names provided by the project
+- information contained in logs that you have shared via the dedicated tool
+- banking and personal information relating to donations made via Stripe or Liberapay.
+
+Unless otherwise specified in the specific conditions, these data are located in Paris, Strasbourg and Toulouse.
+
+For further information, please refer to the specific conditions of service.
+
+### Exercising your rights
+
+In accordance with Article 34 of the French Data Protection Act, you may exercise the following rights by sending an e-mail to `data AT yunohost.org` :
+
+- rights of access, rectification, deletion and opposition
+- right to data processing limitation
+- right to data portability
+- right not to be the subject of an automated individual decision
+
+### GDPR
+
+The YunoHost project undertakes, with respect to the services it makes available, to comply with the regulations in force applicable to the processing of personal data and, in particular, Regulation (EU) 2016/679 of the European Parliament and of the Council of April 27, 2016 applicable as of May 25, 2018, known as the GDPR.
+
+Nevertheless this does not mean in any way that *YunoHost software*, nor the applications offered for installation, would be certified with any GDPR compliance (whatever that may mean for you).
+
+## Disputes and jurisdiction
+
+The law applicable to the present contract is French law. In the event of a dispute, the parties shall seek an amicable solution. If this fails, the dispute will be settled by the Tribunal de Grande Instance de Toulouse (FRANCE).
+
+The fact that the user or the YunoHost project does not take advantage at a given time of one of the present general conditions and/or tolerates a breach by the other party may not be interpreted as a renunciation by the user or the YunoHost project to take advantage of these conditions at a later date.
+
+The nullity of one of the clauses of these conditions in application of a law, regulation or court decision does not imply the nullity of all the other clauses. Furthermore, the general spirit of the clause must be maintained in accordance with the applicable law.
+
+---
+
+## Specific Conditions of Services
+
+### Website and documentation
+
+#### Service address
+
+`yunohost.org`
+
+#### Contribution
+
+If you find an error, don't hesitate to suggest a correction, via the "Edit" button (requires a GitHub account) or via a message on the forum.
+
+#### Personal data
+
+To the best of our knowledge, none of the pages on this website contain trackers.
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### Donations
+
+#### Service address
+
+`donate.yunohost.org`
+
+#### Stop recurring donation
+
+To stop your recurring donation, please send an email to `donate-5542 AT yunohost.org` and indicate the information that will identify your donation (email used, name, amount).
+
+#### Personal data
+
+To provide this service, the Support Self-Hosting association uses Stripe as its payment infrastructure.
+
+It is necessary to use a credit card and your identity, but these data are not stored, or even transit, through the YunoHost project infrastructure, except in emails exchanged as part of a recurring donation cancellation.
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### Installation media (ISO image, ARM, installation script, etc.)
+
+You use this service in 2 situations:
+
+- installing or restoring YunoHost
+- (rarer) to install, update or restore an app whose binary is not supplied by its publisher and whose compilation on your own machine is deemed too long or too resource-intensive.
+
+#### Service address
+
+`build.yunohost.org`
+
+#### Personal data
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### IP
+
+This service is used automatically by your YunoHost instances to determine their public IPs, enabling you to automate and diagnose certain operations.
+
+#### Service addresses
+
+`ip.yunohost.org` and `ip6.yunohost.org` addresses
+
+#### Free access service
+
+Exceptionally, the public IP retrieval service can be used in other contexts, as long as the load induced is minimal relative to that of YunoHost.
+
+#### Personal data
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### Free and dynamic domain names
+
+This is the service used if you request a domain name ending in `nohost.me`, `noho.st` or `ynh.fr` in the YunoHost interface.
+
+#### Service addresses
+
+`dyndns.yunohost.org`, `dynette.yunohost.org`, `ns0.yunohost.org`, `ns1.yunohost.org`.
+
+#### Usage limits
+
+This service is offered within the limit of one domain per YunoHost server (although it is possible to configure sub-domains of this domain). If abuse is detected (e.g. creation of too many domains from the same machine or IP, or large-scale automated creation), the project reserves the right to delete the domains concerned without warning.
+
+#### Automatic deletion
+
+The YunoHost project reserves the right to delete a domain if no server appears to be associated with it and the IP address has not been updated for 1 year.
+
+#### Termination
+
+You can delete your domain using the password you chose when you created it.
+
+#### Personal data
+
+If your name contains personal data, these will inevitably end up on the servers running the service.
+
+Note that, in order to function, this service necessarily stores and transmits your server's public IP addresses.
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### Diagnostics
+
+This service automatically tests whether your services seem to be correctly exposed on the Internet, and thus independently resolves network configuration problems.
+
+This service is used automatically twice a day, as soon as you activate the diagnostics feature.
+
+#### Service address
+
+`diagnosis.yunohost.org`
+
+#### Usage limits
+
+Due to the resource consumption involved, the diagnosis service is limited to 60 domains to be diagnosed per request.
+
+If you exceed this limit, the project recommends that you diagnose your domains yourself.
+
+#### Personal data
+
+To operate, this service transmits the domain names and ports to be diagnosed. Any personal data contained in the domain names is therefore also transferred, but not stored.
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### Application catalog
+
+This service lets you browse (via a browser or program) the list of applications available for installation in YunoHost. It also allows you to vote for apps to direct contribution efforts.
+
+In addition, servers running YunoHost automatically retrieve the application catalog once a day.
+
+#### Service addresses
+
+`apps.yunohost.org` and `app.yunohost.org`.
+
+#### Service misuse
+
+Any attempt to falsify votes on catalog or wishlist apps will be considered abuse and may be subject to cancellation, banning and account deletion.
+
+#### Personal data
+
+To participate in the popularity of apps, you need to use your forum account. See Forum service.
+
+The storage of your votes is linked to your forum identity.
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+#### Statistics
+
+In order to size our services and plan new releases, we use the technical download logs from the list of apps to estimate the number of YunoHost instances running in the wild, and the ratio of major releases.
+
+### Debian package repository
+
+This is the channel through which updates to YunoHost as software are made available. The YunoHost project also maintains builds of some software components on which YunoHost depends or on the periphery of the project.
+
+#### Service address
+
+`forge.yunohost.org`
+
+#### Permission to create mirror repositories
+
+It is allowed (and even encouraged) to create mirror repositories of YunoHost's Debian package repository.
+
+#### Personal data
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### Tickets and contributions to the code
+
+As it stands, development, bug reports and feature requests take place on the repositories of the "YunoHost" and "YunoHost-Apps" organizations on the GitHub platform.
+
+#### Respect for volunteers
+
+We can only re-emphasize what has already been mentioned in the 'Respect for the community and volunteers' section above: the project is maintained by a volunteer team, volunteer time and energy is the driving force behind the project, and volunteers do their best. You're welcome to contribute to the project (and if necessary to ask questions about how to contribute) to the team.
+
+On the other hand, abusing their time or energy is tantamount to sabotaging the project. In particular, YunoHost is *not* a community of volunteers at your command regarding priorities for patches, features or updates, either for YunoHost as software, or for the catalog of applications maintained by the project. Volunteers do not promise support, fixes, features or updates, nor do they provide estimates of "when" a feature, fix or update will be available. Messages that simply ask when a feature, fix or update will be available, without any form of politeness, benevolence or intention to contribute, are not welcome and undermine volunteer morale. Any abuse may be punished by a ban from the project's GitHub organizations, or even from all project services.
+
+### Paste
+
+This service is used to share logs of operations carried out with YunoHost to enable the study and resolution of problems.
+
+#### Service address
+
+`paste.yunohost.org`
+
+#### Personal data
+
+The logs you share may contain personal information or, in the worst case, secrets that could compromise the security of part or all of your server. Upon publication, YunoHost software automatically tries to remove this information as best it can. Nevertheless, the system is far from being perfect, and it is your responsibility to re-read the information before sharing the generated link with others.
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
+
+### Self-help forum (and chat)
+
+#### Service address
+
+`forum.yunohost.org` and chats listed on
+
+#### Asking for help
+
+The self-help forum and chat clearly state (e.g. [here](https://yunohost.org/en/help-me), [here](https://forum.yunohost.org/t/asking-for-support-demander-de-laide/7795) and [here](https://forum.yunohost.org/t/how-to-get-help-efficiently-comment-obtenir-de-laide-efficacement/27)) that in order to get help, it is **necessary** to provide basic information (hardware type, YunoHost version), background information and full logs. Not doing so is extremely annoying for the people trying to help you, especially as we strive to make sharing this information as simple as possible. In addition, it is counter-productive because it wastes everyone's time: nobody can solve a problem that is not diagnosable.
+
+If these rules are not respected, the team reserves the right to close your topic without notice.
+
+#### Personal data
+
+The forum allows you to enter personal information (email, GitHub account, nickname). From the forum interface, you can modify or delete this information.
+
+As with any web service, a technical log records the IP and User Agent of requests. In addition, the forum may send or receive e-mails, which are also logged.
+
+#### Location
+
+Paris
+
+### Demo service
+
+#### Service address
+
+`demo.yunohost.org`
+
+#### Purpose and operation
+
+This service allows you to test YunoHost's interfaces (webadmin and user portal) to get a feel for YunoHost without installing it. The data on this server is destroyed and reset approximately every 30 minutes.
+
+#### Personal data
+
+As with any web service, a technical log exists recording the IP and User Agent of requests.
From f1e0303d3a70d0505f2c528669b98c45b11cfeb7 Mon Sep 17 00:00:00 2001
From: OniriCorpe
Date: Tue, 7 May 2024 23:22:37 +0200
Subject: [PATCH 2/5] update tos link
---
themes/yunohost-docs/templates/partials/footer.html.twig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/themes/yunohost-docs/templates/partials/footer.html.twig b/themes/yunohost-docs/templates/partials/footer.html.twig
index b6620d1e..970976bd 100644
--- a/themes/yunohost-docs/templates/partials/footer.html.twig
+++ b/themes/yunohost-docs/templates/partials/footer.html.twig
@@ -1,6 +1,6 @@
\ No newline at end of file
From c5ae4de7dc1c287e389735618321ef0e0d2016aa Mon Sep 17 00:00:00 2001
From: Florent Poinsaut
Date: Tue, 14 May 2024 14:48:37 +0200
Subject: [PATCH 3/5] Fix deprecated domain cert-* command
---
.../25.domains/01.certificate/certificate.de.md | 8 ++++----
.../25.domains/01.certificate/certificate.es.md | 8 ++++----
.../25.domains/01.certificate/certificate.fr.md | 8 ++++----
.../25.domains/01.certificate/certificate.it.md | 8 ++++----
.../25.domains/01.certificate/certificate.md | 8 ++++----
.../60.advanced_packagers/advanced_packagers.md | 2 +-
6 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.de.md b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.de.md
index 884f0080..e4f93921 100644
--- a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.de.md
+++ b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.de.md
@@ -55,13 +55,13 @@ SSH-Zugang auf Ihrem Server herstellen.
So können Sie den aktuellen Status des digitalen Zertifikats überprüfen
```bash
-yunohost domain cert-status Ihre.domain.tld
+yunohost domain cert status Ihre.domain.tld
```
Dann Let's Encrypt-Zertifikat installieren
```bash
-yunohost domain cert-install Ihre.domain.tld
+yunohost domain cert install Ihre.domain.tld
```
Ergebnis sollte so aussehen :
@@ -82,7 +82,7 @@ Wenn das Zertifikat aufgrund einer schlechten Handhabung nicht funktionsfähig i
ein selbst-signiertes Zertifikat zu regenerieren :
```bash
-yunohost domain cert-install Ihre.domain.tld --self-signed --force
+yunohost domain cert install Ihre.domain.tld --self-signed --force
```
Trotz einer sorgfältigen Überprüfung der DNS-Konfiguration und auch von außen
@@ -90,4 +90,4 @@ die Möglichkeit mit HTTP-Modus Zugriff auf den Webserver besteht, kann YunoHost
manschmal die Einstellungen verweigern. In diesem Fall ist es notwendig :
- die Parameter `127.0.0.1 Ihre.domain.tld` auf der Datei `/etc/hosts` des Webserver hinzufügen.
-Wenn es immer noch nicht funktionsfähig ist, also die Überprüfungen deaktivieren mit `--no-checks` nach dem Befehl `cert-install`.
+Wenn es immer noch nicht funktionsfähig ist, also die Überprüfungen deaktivieren mit `--no-checks` nach dem Befehl `cert install`.
diff --git a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.es.md b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.es.md
index bc887a5d..ba16cfd6 100644
--- a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.es.md
+++ b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.es.md
@@ -50,13 +50,13 @@ Conectate en tu servidor en SSH.
Puedes comprobar el estatus corriente de tu certificado vía
```bash
-yunohost domain cert-status tu.dominio.tld
+yunohost domain cert status tu.dominio.tld
```
Instala el certificado Let's Encrypt vía
```bash
-yunohost domain cert-install tu.dominio.tld
+yunohost domain cert install tu.dominio.tld
```
Este comando debe devolverte :
@@ -73,10 +73,10 @@ Una vez que la instalación está terminada, puedes dirigirte a tu dominio vía
Si, después de una manipulación incorrecta, un certificado se encuentra en una mala situación (e.g. pérdida del certificado o imposibilidad de leerlo), es posible regenerar un certificado autofirmado :
```bash
-yunohost domain cert-install tu.dominio.tld --self-signed --force
+yunohost domain cert install tu.dominio.tld --self-signed --force
```
Si YunoHost te dice que tu dominio está mal configurado mientras que has verificado tu configuración DNS y que tienes acceso a tu servidor en HTTP desde afuera, puedes intentar :
- de añadir una línea `127.0.0.1 tu.dominio.tld` al archivo `/etc/hosts` en tu servidor ;
-- si la instalación todavía no funciona, desactiva las verificaciones añadiendo `--no-checks` al comando `cert-install`.
+- si la instalación todavía no funciona, desactiva las verificaciones añadiendo `--no-checks` al comando `cert install`.
diff --git a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.fr.md b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.fr.md
index 40a531e0..7da3f12c 100644
--- a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.fr.md
+++ b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.fr.md
@@ -59,13 +59,13 @@ Connectez-vous sur votre serveur en SSH.
Vous pouvez vérifier le statut actuel de votre certificat via :
```bash
-yunohost domain cert-status votre.domaine.tld
+yunohost domain cert status votre.domaine.tld
```
Installez le certificat Let's Encrypt via :
```bash
-yunohost domain cert-install votre.domaine.tld
+yunohost domain cert install votre.domaine.tld
```
Cette commande doit retourner :
@@ -88,7 +88,7 @@ certificat), il est possible de repartir sur des bases propres en regénérant u
certificat auto-signé :
```bash
-yunohost domain cert-install votre.domaine.tld --self-signed --force
+yunohost domain cert install votre.domaine.tld --self-signed --force
```
Si YunoHost trouve que votre domaine est mal configuré quand bien même vous
@@ -96,4 +96,4 @@ avez bien vérifié votre configuration DNS et avez bien accès à votre serveur
HTTP depuis l'extérieur, vous pouvez tenter :
- d'ajouter une ligne `127.0.0.1 votre.domaine.tld` au fichier `/etc/hosts` sur votre serveur ;
-- si l'installation ne fonctionne toujours pas, de désactiver les vérifications en ajoutant `--no-checks` à la commande `cert-install`.
+- si l'installation ne fonctionne toujours pas, de désactiver les vérifications en ajoutant `--no-checks` à la commande `cert install`.
diff --git a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.it.md b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.it.md
index b8719133..6c337f3b 100644
--- a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.it.md
+++ b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.it.md
@@ -57,13 +57,13 @@ Collegatevi al server con SSH.
Potete controllare lo stato del certificato in uso con il comando:
```bash
-yunohost domain cert-status your.domain.tld
+yunohost domain cert status your.domain.tld
```
Installate il certificato Let's Encrypt con il comando:
```bash
-yunohost domain cert-install your.domain.tld
+yunohost domain cert install your.domain.tld
```
Che dovrebbe dare come risultato:
@@ -83,10 +83,10 @@ Una volta installato il certificato potete verificarne il corretto funzionamento
Se il vostro certificato risultasse non funzionante a causa di qualche errore (ad esempio lo avete perso oppure non siete in grado di leggere i file) potete ripulire la situazione rigenerando un certificato autofirmato con questo comando:
```bash
-yunohost domain cert-install your.domain.tld --self-signed --force
+yunohost domain cert install your.domain.tld --self-signed --force
```
Se YunoHost pensa che il vostro dominio non è configurato correttamente nonstante abbiate controllato la configurazione del DNS e riuscite a collegarvi in HTTP al vostro server anche dall'esterno della rete locale allora potete:
- aggiungere una linea `127.0.0.1 vostrodominio.tld` nel file `/etc/hosts` sul vostro server;
-- se nonostante questo l'installazione del certificato dovesse ancora fallire potete disabilitare il controllo con l'opzione `--no-checks` dopo il comando `cert-install`.
+- se nonostante questo l'installazione del certificato dovesse ancora fallire potete disabilitare il controllo con l'opzione `--no-checks` dopo il comando `cert install`.
diff --git a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.md b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.md
index fe8b57fe..49791ec6 100644
--- a/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.md
+++ b/pages/02.administer/15.admin_guide/25.domains/01.certificate/certificate.md
@@ -50,13 +50,13 @@ Connect to your server through SSH.
You can check the status of your current certificate with:
```bash
-yunohost domain cert-status your.domain.tld
+yunohost domain cert status your.domain.tld
```
Install a Let's Encrypt certificate with
```bash
-yunohost domain cert-install your.domain.tld
+yunohost domain cert install your.domain.tld
```
This should return :
@@ -76,10 +76,10 @@ Once this is done, you can check that the certificate is live via your browser b
If due to some bad tweaking, your certificate ends up in a bad state (e.g. lost the certificate or unable to read the files), you should be able to clean the situation by regenerating a self-signed certificate:
```bash
-yunohost domain cert-install your.domain.tld --self-signed --force
+yunohost domain cert install your.domain.tld --self-signed --force
```
If YunoHost thinks that your domain is badly configured despite the fact that you checked the DNS configuration and you have access in HTTP to your server from outside your local network, then you can:
- add a line `127.0.0.1 your.domain.tld` to the file `/etc/hosts` on your server;
-- if the certificate installation still doesn't work, you can disable the checks with `--no-checks` after the `cert-install` command.
+- if the certificate installation still doesn't work, you can disable the checks with `--no-checks` after the `cert install` command.
diff --git a/pages/06.contribute/10.packaging_apps/60.advanced/60.advanced_packagers/advanced_packagers.md b/pages/06.contribute/10.packaging_apps/60.advanced/60.advanced_packagers/advanced_packagers.md
index c8b5def6..87e658b5 100644
--- a/pages/06.contribute/10.packaging_apps/60.advanced/60.advanced_packagers/advanced_packagers.md
+++ b/pages/06.contribute/10.packaging_apps/60.advanced/60.advanced_packagers/advanced_packagers.md
@@ -58,7 +58,7 @@ With that you will be able to install two apps on the same YunoHost first one at
When your infrastructure is up and ready, you will have to do snapshots of each VMs/LXCs. Doing that, you will be able to revert back to an happy and healthy YunoHost after doing install/backup/restore/upgrade of and app...
-Don't forget to regularly upgrade your YunoHosts VMs/LXCs to the last release doing: revert back to last happy/healthy YunoHost snapshot and doing `yunohost domain cert-renew --no-check && yunohost tools update && yunohost tools upgrade --apps && yunohost tools upgrade --system && apt autoremove`. Take a snapshot after that successfull full upgrade. And after some testings or one week later, remove old snapshot. PS: that can be automated...
+Don't forget to regularly upgrade your YunoHosts VMs/LXCs to the last release doing: revert back to last happy/healthy YunoHost snapshot and doing `yunohost domain cert renew --no-check && yunohost tools update && yunohost tools upgrade --apps && yunohost tools upgrade --system && apt autoremove`. Take a snapshot after that successfull full upgrade. And after some testings or one week later, remove old snapshot. PS: that can be automated...
Example of a script to upgrade a master VirtualBox VM
From 0157b052481407b3c06cc2892de225f14c42520b Mon Sep 17 00:00:00 2001
From: Alexandre Aubin
Date: Mon, 20 May 2024 01:49:53 +0200
Subject: [PATCH 4/5] Update helpers+app resources doc, followup of yunohost
11.2.12
---
.../packaging_app_manifest_resources.md | 5 +-
.../packaging_app_scripts_helpers.md | 1174 +++++------------
2 files changed, 302 insertions(+), 877 deletions(-)
diff --git a/pages/06.contribute/10.packaging_apps/10.manifest/10.appresources/packaging_app_manifest_resources.md b/pages/06.contribute/10.packaging_apps/10.manifest/10.appresources/packaging_app_manifest_resources.md
index 4adfd90c..a333ad00 100644
--- a/pages/06.contribute/10.packaging_apps/10.manifest/10.appresources/packaging_app_manifest_resources.md
+++ b/pages/06.contribute/10.packaging_apps/10.manifest/10.appresources/packaging_app_manifest_resources.md
@@ -1,5 +1,5 @@
---
-title: App manifest resources
+title: App resources
template: docs
taxonomy:
category: docs
@@ -7,7 +7,7 @@ routes:
default: '/packaging_apps_resources'
---
-Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/doc/generate_resource_doc.py) on 11/04/2024 (YunoHost version 11.2.11.2)
+Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/doc/generate_resource_doc.py) on 20/05/2024 (YunoHost version 11.2.12)
---
@@ -342,3 +342,4 @@ Provision a system user to be used by the app. The username is exactly equal to
### Deprovision
- deletes the user and group
+
diff --git a/pages/06.contribute/10.packaging_apps/20.scripts/10.helpers/packaging_app_scripts_helpers.md b/pages/06.contribute/10.packaging_apps/20.scripts/10.helpers/packaging_app_scripts_helpers.md
index 5420003d..434d6dfe 100644
--- a/pages/06.contribute/10.packaging_apps/20.scripts/10.helpers/packaging_app_scripts_helpers.md
+++ b/pages/06.contribute/10.packaging_apps/20.scripts/10.helpers/packaging_app_scripts_helpers.md
@@ -1,15 +1,13 @@
---
-title: App scripts helpers
+title: App helpers
template: docs
taxonomy:
category: docs
routes:
- default: '/packaging_apps_scripts_helpers'
- aliases:
- - '/packaging_apps_helpers'
+ default: '/packaging_apps_helpers'
---
-Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/doc/generate_helper_doc.py) on 11/04/2024 (YunoHost version 11.2.11.2)
+Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/doc/generate_helper_doc.py) on 20/05/2024 (YunoHost version 11.2.12)
## APPS
@@ -26,7 +24,7 @@ Doc auto-generated by [this script](https://github.com/YunoHost/yunohost/blob/7d
Requires YunoHost version *.*.* or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apps#L9)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/apps#L9)
[/details]
---
@@ -42,7 +40,7 @@ Other YunoHost apps will be removed only if no other apps need them.
Requires YunoHost version *.*.* or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apps#L65)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/apps#L65)
[/details]
---
@@ -71,7 +69,7 @@ from the app's service configuration file (defaults to $app.service, overridable
If the app relies on a specific PHP version, then `php` will be aliased that version. The PHP command will also be appended with the `phpflags` settings.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apps#L128)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/apps#L128)
[/details]
---
@@ -95,185 +93,7 @@ If the app relies on a specific PHP version, then `php` will be aliased that ver
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L53)
-[/details]
-
----
-
-### ynh_package_version
-[details summary="Get the version of an installed package" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_package_version --package=name`
-
-**Arguments**:
-- `-p`, `--package=`: the package name to get version
-
-**Returns**: the version or an empty string
-
-**Example**: `version=$(ynh_package_version --package=yunohost)`
-
-**Details**:
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L74)
-[/details]
-
----
-
-### ynh_package_update
-[details summary="Update package index files" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_package_update`
-
-**Details**:
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L106)
-[/details]
-
----
-
-### ynh_package_install
-[details summary="Install package(s)" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_package_install name [name [...]]`
-
-**Arguments**:
-- `name`: the package name to install
-
-**Details**:
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L116)
-[/details]
-
----
-
-### ynh_package_remove
-[details summary="Remove package(s)" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_package_remove name [name [...]]`
-
-**Arguments**:
-- `name`: the package name to remove
-
-**Details**:
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L127)
-[/details]
-
----
-
-### ynh_package_autoremove
-[details summary="Remove package(s) and their uneeded dependencies" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_package_autoremove name [name [...]]`
-
-**Arguments**:
-- `name`: the package name to remove
-
-**Details**:
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L137)
-[/details]
-
----
-
-### ynh_package_autopurge
-[details summary="Purge package(s) and their uneeded dependencies" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_package_autopurge name [name [...]]`
-
-**Arguments**:
-- `name`: the package name to autoremove and purge
-
-**Details**:
-Requires YunoHost version 2.7.2 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L147)
-[/details]
-
----
-
-### ynh_install_app_dependencies
-[details summary="Define and install dependencies with a equivs control file" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_install_app_dependencies dep [dep [...]]`
-
-**Arguments**:
-- `dep`: the package name to install in dependence.
-- `"dep1|dep2|…"`: You can specify alternatives. It will require to install (dep1 or dep2, etc).
-
-**Details**:
-This helper can/should only be called once per app
-
-example : ynh_install_app_dependencies dep1 dep2 "dep3|dep4|dep5"
-
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L224)
-[/details]
-
----
-
-### ynh_add_app_dependencies
-[details summary="Add dependencies to install with ynh_install_app_dependencies" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_add_app_dependencies --package=phpversion [--replace]`
-
-**Arguments**:
-- `-p`, `--package=`: Packages to add as dependencies for the app.
-
-**Details**:
-Requires YunoHost version 3.8.1 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L337)
-[/details]
-
----
-
-### ynh_remove_app_dependencies
-[details summary="Remove fake package and its dependencies" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_remove_app_dependencies`
-
-**Details**:
-Dependencies will removed only if no other package need them.
-
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L356)
-[/details]
-
----
-
-### ynh_install_extra_app_dependencies
-[details summary="Install packages from an extra repository properly." class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_install_extra_app_dependencies --repo="repo" --package="dep1 dep2" [--key=key_url] [--name=name]`
-
-**Arguments**:
-- `-r`, `--repo=`: Complete url of the extra repository.
-- `-p`, `--package=`: The packages to install from this extra repository
-- `-k`, `--key=`: url to get the public key.
-- `-n`, `--name=`: Name for the files for this repo, $app as default value.
-
-**Details**:
-Requires YunoHost version 3.8.1 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/apt#L390)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/apt#L53)
[/details]
---
@@ -346,7 +166,7 @@ Requires YunoHost version 2.4.0 or higher.
Requires YunoHost version 3.5.0 or higher for the argument `--not_mandatory`
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L64)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/backup#L64)
[/details]
---
@@ -360,7 +180,7 @@ Requires YunoHost version 3.5.0 or higher for the argument `--not_mandatory`
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L179)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/backup#L179)
[/details]
---
@@ -405,7 +225,7 @@ Requires YunoHost version 2.6.4 or higher.
Requires YunoHost version 3.5.0 or higher for the argument --not_mandatory
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L238)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/backup#L238)
[/details]
---
@@ -424,7 +244,7 @@ $app should be defined when calling this helper
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L306)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/backup#L306)
[/details]
---
@@ -446,7 +266,7 @@ modified config files.
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L357)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/backup#L357)
[/details]
---
@@ -465,53 +285,7 @@ $app should be defined when calling this helper
Requires YunoHost version 3.3.1 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L397)
-[/details]
-
----
-
-### ynh_backup_before_upgrade
-[details summary="Make a backup in case of failed upgrade" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_backup_before_upgrade`
-
-**Details**:
-Usage in a package script:
-```
- ynh_backup_before_upgrade
- ynh_clean_setup () {
- ynh_restore_upgradebackup
- }
- ynh_abort_if_errors
-```
-
-Requires YunoHost version 2.7.2 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L432)
-[/details]
-
----
-
-### ynh_restore_upgradebackup
-[details summary="Restore a previous backup if the upgrade process failed" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_restore_upgradebackup`
-
-**Details**:
-Usage in a package script:
-```
- ynh_backup_before_upgrade
- ynh_clean_setup () {
- ynh_restore_upgradebackup
- }
- ynh_abort_if_errors
-```
-
-Requires YunoHost version 2.7.2 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/backup#L480)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/backup#L397)
[/details]
---
@@ -536,8 +310,6 @@ Requires YunoHost version 2.7.2 or higher.
- `-t`, `--use_template`: Use this helper in template mode
**Details**:
------------------------------------------------------------------------------
-
This will use a template in `../conf/f2b_jail.conf` and `../conf/f2b_filter.conf`
See the documentation of `ynh_add_config` for a description of the template
format and how placeholders are replaced with actual variables.
@@ -586,7 +358,7 @@ fail2ban-regex /var/log/YOUR_LOG_FILE_PATH /etc/fail2ban/filter.d/YOUR_APP.conf
Requires YunoHost version 4.1.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/fail2ban#L62)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/fail2ban#L60)
[/details]
---
@@ -600,7 +372,7 @@ Requires YunoHost version 4.1.0 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/fail2ban#L134)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/fail2ban#L132)
[/details]
---
@@ -609,53 +381,113 @@ Requires YunoHost version 3.5.0 or higher.
## GETOPTS
+## GO
+
+### ynh_use_go
+[details summary="Load the version of Go for an app, and set variables." class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_use_go`
+
+**Details**:
+ynh_use_go has to be used in any app scripts before using Go for the first time.
+This helper will provide alias and variables to use in your scripts.
+
+To use gem or Go, use the alias `ynh_gem` and `ynh_go`
+Those alias will use the correct version installed for the app
+For example: use `ynh_gem install` instead of `gem install`
+
+With `sudo` or `ynh_exec_as`, use instead the fallback variables `$ynh_gem` and `$ynh_go`
+And propagate $PATH to sudo with $ynh_go_load_path
+Exemple: `ynh_exec_as $app $ynh_go_load_path $ynh_gem install`
+
+$PATH contains the path of the requested version of Go.
+However, $PATH is duplicated into $go_path to outlast any manipulation of $PATH
+You can use the variable `$ynh_go_load_path` to quickly load your Go version
+ in $PATH for an usage into a separate script.
+Exemple: `$ynh_go_load_path $install_dir/script_that_use_gem.sh`
+
+Finally, to start a Go service with the correct version, 2 solutions
+ Either the app is dependent of Go or gem, but does not called it directly.
+ In such situation, you need to load PATH
+ `Environment="__YNH_GO_LOAD_PATH__"`
+ `ExecStart=__INSTALL_DIR__/my_app`
+ You will replace __YNH_GO_LOAD_PATH__ with $ynh_go_load_path
+
+Or Go start the app directly, then you don't need to load the PATH variable
+ `ExecStart=__YNH_GO__ my_app run`
+ You will replace __YNH_GO__ with $ynh_go
+
+one other variable is also available
+ - $go_path: The absolute path to Go binaries for the chosen version.
+
+Requires YunoHost version 3.2.2 or higher.
+
+
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/go#L54)
+[/details]
+
+---
+
+### ynh_install_go
+[details summary="Install a specific version of Go" class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_install_go --go_version=go_version`
+
+**Arguments**:
+- `-v`, `--go_version=`: Version of go to install.
+
+**Details**:
+ynh_install_go will install the version of Go provided as argument by using goenv.
+
+This helper creates a /etc/profile.d/goenv.sh that configures PATH environment for goenv
+for every LOGIN user, hence your user must have a defined shell (as opposed to /usr/sbin/nologin)
+
+Don't forget to execute go-dependent command in a login environment
+(e.g. sudo --login option)
+When not possible (e.g. in systemd service definition), please use direct path
+to goenv shims (e.g. $goenv_ROOT/shims/bundle)
+
+Requires YunoHost version 3.2.2 or higher.
+
+
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/go#L96)
+[/details]
+
+---
+
+### ynh_remove_go
+[details summary="Remove the version of Go used by the app." class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_remove_go`
+
+**Details**:
+This helper will also cleanup Go versions
+
+
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/go#L191)
+[/details]
+
+---
+
+### ynh_cleanup_go
+[details summary="Remove no more needed versions of Go used by the app." class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_cleanup_go`
+
+**Details**:
+This helper will check what Go version are no more required,
+and uninstall them
+If no app uses Go, goenv will be also removed.
+
+
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/go#L214)
+[/details]
+
+---
+
+
## HARDWARE
-### ynh_get_ram
-[details summary="Get the total or free amount of RAM+swap on the system" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_get_ram [--free|--total] [--ignore_swap|--only_swap]`
-
-**Arguments**:
-- `-f`, `--free`: Count free RAM+swap
-- `-t`, `--total`: Count total RAM+swap
-- `-s`, `--ignore_swap`: Ignore swap, consider only real RAM
-- `-o`, `--only_swap`: Ignore real RAM, consider only swap
-
-**Returns**: the amount of free ram, in MB (MegaBytes)
-
-**Details**:
-Requires YunoHost version 3.8.1 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/hardware#L13)
-[/details]
-
----
-
-### ynh_require_ram
-[details summary="Return 0 or 1 depending if the system has a given amount of RAM+swap free or total" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_require_ram --required=RAM [--free|--total] [--ignore_swap|--only_swap]`
-
-**Arguments**:
-- `-r`, `--required=`: The amount to require, in MB
-- `-f`, `--free`: Count free RAM+swap
-- `-t`, `--total`: Count total RAM+swap
-- `-s`, `--ignore_swap`: Ignore swap, consider only real RAM
-- `-o`, `--only_swap`: Ignore real RAM, consider only swap
-
-**Returns**: 1 if the ram is under the requirement, 0 otherwise.
-
-**Details**:
-Requires YunoHost version 3.8.1 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/hardware#L75)
-[/details]
-
----
-
## LOGGING
@@ -672,7 +504,7 @@ Requires YunoHost version 3.8.1 or higher.
Requires YunoHost version 2.4.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L10)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L10)
[/details]
---
@@ -689,7 +521,7 @@ Requires YunoHost version 2.4.0 or higher.
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L30)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L30)
[/details]
---
@@ -706,7 +538,7 @@ Requires YunoHost version 3.2.0 or higher.
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L56)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L56)
[/details]
---
@@ -723,7 +555,7 @@ Requires YunoHost version 3.2.0 or higher.
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L73)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L73)
[/details]
---
@@ -742,7 +574,7 @@ Note that you should NOT quote the command but only prefix it with ynh_exec_err
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L92)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L92)
[/details]
---
@@ -761,7 +593,7 @@ Note that you should NOT quote the command but only prefix it with ynh_exec_warn
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L113)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L113)
[/details]
---
@@ -780,7 +612,7 @@ Note that you should NOT quote the command but only prefix it with ynh_exec_warn
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L134)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L134)
[/details]
---
@@ -799,7 +631,7 @@ Note that you should NOT quote the command but only prefix it with ynh_exec_warn
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L155)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L155)
[/details]
---
@@ -818,7 +650,7 @@ Note that you should NOT quote the command but only prefix it with ynh_exec_quie
Requires YunoHost version 3.2.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L176)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L176)
[/details]
---
@@ -837,7 +669,7 @@ Note that you should NOT quote the command but only prefix it with ynh_exec_and_
Requires YunoHost version 11.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L197)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L197)
[/details]
---
@@ -857,7 +689,7 @@ Requires YunoHost version 11.2 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L257)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L257)
[/details]
---
@@ -872,7 +704,7 @@ Requires YunoHost version 3.5.0 or higher.
Requires YunoHost version 3.6.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logging#L345)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logging#L345)
[/details]
---
@@ -896,7 +728,7 @@ If no `--logfile` is provided, `/var/log/$app` will be used as default.
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logrotate#L15)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logrotate#L15)
[/details]
---
@@ -910,7 +742,7 @@ Requires YunoHost version 2.6.4 or higher.
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/logrotate#L99)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/logrotate#L99)
[/details]
---
@@ -927,7 +759,7 @@ Requires YunoHost version 2.6.4 or higher.
Requires YunoHost version 4.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/multimedia#L11)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/multimedia#L11)
[/details]
---
@@ -947,7 +779,7 @@ This "directory" will be a symbolic link to a existing directory.
Requires YunoHost version 4.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/multimedia#L64)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/multimedia#L64)
[/details]
---
@@ -964,7 +796,7 @@ Requires YunoHost version 4.2 or higher.
Requires YunoHost version 4.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/multimedia#L93)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/multimedia#L93)
[/details]
---
@@ -997,7 +829,7 @@ Requires YunoHost version 4.2 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/mysql#L15)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/mysql#L15)
[/details]
---
@@ -1015,7 +847,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/mysql#L36)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/mysql#L36)
[/details]
---
@@ -1033,7 +865,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/mysql#L60)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/mysql#L60)
[/details]
---
@@ -1054,66 +886,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/mysql#L128)
-[/details]
-
----
-
-### ynh_mysql_user_exists
-[details summary="Check if a mysql user exists" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_mysql_user_exists --user=user`
-
-**Arguments**:
-- `-u`, `--user=`: the user for which to check existence
-
-**Returns**: 0 if the user exists, 1 otherwise.
-
-**Details**:
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/mysql#L160)
-[/details]
-
----
-
-### ynh_mysql_setup_db
-[details summary="Create a database, an user and its password. Then store the password in the app's config" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_mysql_setup_db --db_user=user --db_name=name [--db_pwd=pwd]`
-
-**Arguments**:
-- `-u`, `--db_user=`: Owner of the database
-- `-n`, `--db_name=`: Name of the database
-- `-p`, `--db_pwd=`: Password of the database. If not provided, a password will be generated
-
-**Details**:
-After executing this helper, the password of the created database will be available in `$db_pwd`
-It will also be stored as "`mysqlpwd`" into the app settings.
-
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/mysql#L198)
-[/details]
-
----
-
-### ynh_mysql_remove_db
-[details summary="Remove a database if it exists, and the associated user" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_mysql_remove_db --db_user=user --db_name=name`
-
-**Arguments**:
-- `-u`, `--db_user=`: Owner of the database
-- `-n`, `--db_name=`: Name of the database
-
-**Details**:
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/mysql#L224)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/mysql#L128)
[/details]
---
@@ -1121,48 +894,6 @@ Requires YunoHost version 2.6.4 or higher.
## NETWORK
-### ynh_find_port
-[details summary="Find a free port and return it" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_find_port --port=begin_port`
-
-**Arguments**:
-- `-p`, `--port=`: port to start to search
-
-**Returns**: the port number
-
-**Example**: `port=$(ynh_find_port --port=8080)`
-
-**Details**:
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/network#L12)
-[/details]
-
----
-
-### ynh_port_available
-[details summary="Test if a port is available" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_find_port --port=XYZ`
-
-**Arguments**:
-- `-p`, `--port=`: port to check
-
-**Returns**: 0 if the port is available, 1 if it is already used by another process.
-
-**Example**: `ynh_port_available --port=1234 || ynh_die --message="Port 1234 is needs to be available for this app"`
-
-**Details**:
-Requires YunoHost version 3.8.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/network#L36)
-[/details]
-
----
-
### ynh_validate_ip4
[details summary="Validate an IPv4 address" class="helper-card-subtitle text-muted"]
@@ -1179,7 +910,7 @@ Requires YunoHost version 3.8.0 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/network#L99)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/network#L103)
[/details]
---
@@ -1200,7 +931,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/network#L119)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/network#L123)
[/details]
---
@@ -1228,7 +959,7 @@ location
Requires YunoHost version 4.1.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/nginx#L19)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/nginx#L19)
[/details]
---
@@ -1242,7 +973,7 @@ Requires YunoHost version 4.1.0 or higher.
Requires YunoHost version 2.7.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/nginx#L41)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/nginx#L41)
[/details]
---
@@ -1256,7 +987,7 @@ Requires YunoHost version 2.7.2 or higher.
Requires YunoHost version 11.1.9 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/nginx#L52)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/nginx#L52)
[/details]
---
@@ -1310,7 +1041,7 @@ You will replace __YNH_NODE__ with $ynh_node
Requires YunoHost version 2.7.12 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/nodejs#L52)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/nodejs#L52)
[/details]
---
@@ -1334,7 +1065,7 @@ Refer to `ynh_use_nodejs` for more information about available commands and vari
Requires YunoHost version 2.7.12 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/nodejs#L92)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/nodejs#L94)
[/details]
---
@@ -1352,7 +1083,7 @@ This helper will check if another app uses the same version of node.
Requires YunoHost version 2.7.12 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/nodejs#L165)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/nodejs#L167)
[/details]
---
@@ -1360,159 +1091,6 @@ Requires YunoHost version 2.7.12 or higher.
## PERMISSION
-### ynh_permission_create
-[details summary="Create a new permission for the app" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_permission_create --permission="permission" [--url="url"] [--additional_urls="second-url" [ "third-url" ]] [--auth_header=true|false]
- [--allowed=group1 [ group2 ]] [--label="label"] [--show_tile=true|false]
- [--protected=true|false]`
-
-**Arguments**:
-- `-p`, `--permission=`: the name for the permission (by default a permission named "main" already exist)
-- `-u`, `--url=`: (optional) URL for which access will be allowed/forbidden. Note that if 'show_tile' is enabled, this URL will be the URL of the tile.
-- `-A`, `--additional_urls=`: (optional) List of additional URL for which access will be allowed/forbidden
-- `-h`, `--auth_header=`: (optional) Define for the URL of this permission, if SSOwat pass the authentication header to the application. Default is true
-- `-a`, `--allowed=`: (optional) A list of group/user to allow for the permission
-- `-l`, `--label=`: (optional) Define a name for the permission. This label will be shown on the SSO and in the admin. Default is "APP_LABEL (permission name)".
-- `-t`, `--show_tile=`: (optional) Define if a tile will be shown in the SSO. If yes the name of the tile will be the 'label' parameter. Defaults to false for the permission different than 'main'.
-- `-P`, `--protected=`: (optional) Define if this permission is protected. If it is protected the administrator won't be able to add or remove the visitors group of this permission. Defaults to 'false'.
-
-**Details**:
-Example 1: `ynh_permission_create --permission=admin --url=/admin --additional_urls=domain.tld/admin /superadmin --allowed=alice bob \
- --label="My app admin" --show_tile=true`
-
-This example will create a new permission permission with this following effect:
-- A tile named "My app admin" in the SSO will be available for the users alice and bob. This tile will point to the relative url '/admin'.
-- Only the user alice and bob will have the access to theses following url: /admin, domain.tld/admin, /superadmin
-
-Example 2:
-
-ynh_permission_create --permission=api --url=domain.tld/api --auth_header=false --allowed=visitors \
- --label="MyApp API" --protected=true
-
-This example will create a new protected permission. So the admin won't be able to add/remove the visitors group of this permission.
-In case of an API with need to be always public it avoid that the admin break anything.
-With this permission all client will be allowed to access to the url 'domain.tld/api'.
-Note that in this case no tile will be show on the SSO.
-Note that the auth_header parameter is to 'false'. So no authentication header will be passed to the application.
-Generally the API is requested by an application and enabling the auth_header has no advantage and could bring some issues in some case.
-So in this case it's better to disable this option for all API.
-
-If provided, 'url' or 'additional_urls' is assumed to be relative to the app domain/path if they
-start with '/'. For example:
- / -> domain.tld/app
- /admin -> domain.tld/app/admin
- domain.tld/app/api -> domain.tld/app/api
-
-'url' or 'additional_urls' can be treated as a PCRE (not lua) regex if it starts with "re:".
-For example:
- re:/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
- re:domain.tld/app/api/[A-Z]*$ -> domain.tld/app/api/[A-Z]*$
-
-Note that globally the parameter 'url' and 'additional_urls' are same. The only difference is:
-- 'url' is only one url, 'additional_urls' can be a list of urls. There are no limitation of 'additional_urls'
-- 'url' is used for the url of tile in the SSO (if enabled with the 'show_tile' parameter)
-
-About the authentication header (auth_header parameter).
-The SSO pass (by default) to the application theses following HTTP header (linked to the authenticated user) to the application:
- - "Auth-User": username
- - "Remote-User": username
- - "Email": user email
-
-Generally this feature is usefull to authenticate automatically the user in the application but in some case the application don't work with theses header and theses header need to be disabled to have the application to work correctly.
-See https://github.com/YunoHost/issues/issues/1420 for more informations
-
-Requires YunoHost version 3.7.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L66)
-[/details]
-
----
-
-### ynh_permission_delete
-[details summary="Remove a permission for the app (note that when the app is removed all permission is automatically removed)" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_permission_delete --permission="permission"`
-
-**Arguments**:
-- `-p`, `--permission=`: the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
-
-**Example**: `ynh_permission_delete --permission=editors`
-
-**Details**:
-Requires YunoHost version 3.7.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L152)
-[/details]
-
----
-
-### ynh_permission_exists
-[details summary="Check if a permission exists" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_permission_exists --permission=permission
-| exit: Return 1 if the permission doesn't exist, 0 otherwise`
-
-**Arguments**:
-- `-p`, `--permission=`: the permission to check
-
-**Details**:
-Requires YunoHost version 3.7.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L169)
-[/details]
-
----
-
-### ynh_permission_url
-[details summary="Redefine the url associated to a permission" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_permission_url --permission "permission" [--url="url"] [--add_url="new-url" [ "other-new-url" ]] [--remove_url="old-url" [ "other-old-url" ]]
- [--auth_header=true|false] [--clear_urls]`
-
-**Arguments**:
-- `-p`, `--permission=`: the name for the permission (by default a permission named "main" is removed automatically when the app is removed)
-- `-u`, `--url=`: (optional) URL for which access will be allowed/forbidden. Note that if you want to remove url you can pass an empty sting as arguments ("").
-- `-a`, `--add_url=`: (optional) List of additional url to add for which access will be allowed/forbidden.
-- `-r`, `--remove_url=`: (optional) List of additional url to remove for which access will be allowed/forbidden
-- `-h`, `--auth_header=`: (optional) Define for the URL of this permission, if SSOwat pass the authentication header to the application
-- `-c`, `--clear_urls`: (optional) Clean all urls (url and additional_urls)
-
-**Details**:
-Requires YunoHost version 3.7.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L192)
-[/details]
-
----
-
-### ynh_permission_update
-[details summary="Update a permission for the app" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_permission_update --permission "permission" [--add="group" ["group" ...]] [--remove="group" ["group" ...]]
- [--label="label"] [--show_tile=true|false] [--protected=true|false]`
-
-**Arguments**:
-- `-p`, `--permission=`: the name for the permission (by default a permission named "main" already exist)
-- `-a`, `--add=`: the list of group or users to enable add to the permission
-- `-r`, `--remove=`: the list of group or users to remove from the permission
-- `-l`, `--label=`: (optional) Define a name for the permission. This label will be shown on the SSO and in the admin.
-- `-t`, `--show_tile=`: (optional) Define if a tile will be shown in the SSO
-- `-P`, `--protected=`: (optional) Define if this permission is protected. If it is protected the administrator won't be able to add or remove the visitors group of this permission.
-
-**Details**:
-Requires YunoHost version 3.7.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L260)
-[/details]
-
----
-
### ynh_permission_has_user
[details summary="Check if a permission has an user" class="helper-card-subtitle text-muted"]
@@ -1529,33 +1107,7 @@ Requires YunoHost version 3.7.0 or higher.
Requires YunoHost version 3.7.1 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L329)
-[/details]
-
----
-
-### ynh_legacy_permissions_exists
-[details summary="Check if a legacy permissions exist" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_legacy_permissions_exists
-| exit: Return 1 if the permission doesn't exist, 0 otherwise`
-
-**Details**:
-Requires YunoHost version 4.1.2 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L359)
-[/details]
-
----
-
-### ynh_legacy_permissions_delete_all
-[details summary="Remove all legacy permissions" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_legacy_permissions_delete_all`
-
-**Example**: `if ynh_legacy_permissions_exists then ynh_legacy_permissions_delete_all # You can recreate the required permissions here with ynh_permission_create fi Requires YunoHost version 4.1.2 or higher.`
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/permission#L379)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/permission#L339)
[/details]
---
@@ -1629,7 +1181,7 @@ Set as 'high', the process manager will be set at 'static'. There will be always
Requires YunoHost version 4.1.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/php#L70)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/php#L70)
[/details]
---
@@ -1643,7 +1195,7 @@ Requires YunoHost version 4.1.0 or higher.
Requires YunoHost version 2.7.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/php#L284)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/php#L284)
[/details]
---
@@ -1662,7 +1214,7 @@ Requires YunoHost version 2.7.2 or higher.
Requires YunoHost version 4.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/php#L517)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/php#L517)
[/details]
---
@@ -1682,7 +1234,7 @@ Requires YunoHost version 4.2 or higher.
Requires YunoHost version 4.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/php#L549)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/php#L549)
[/details]
---
@@ -1715,7 +1267,7 @@ Requires YunoHost version 4.2 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L18)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/postgresql#L18)
[/details]
---
@@ -1733,7 +1285,7 @@ Requires YunoHost version 3.5.0 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L39)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/postgresql#L39)
[/details]
---
@@ -1751,7 +1303,7 @@ Requires YunoHost version 3.5.0 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L64)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/postgresql#L64)
[/details]
---
@@ -1772,25 +1324,7 @@ Requires YunoHost version 3.5.0 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L135)
-[/details]
-
----
-
-### ynh_psql_user_exists
-[details summary="Check if a psql user exists" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_psql_user_exists --user=user
-| exit: Return 1 if the user doesn't exist, 0 otherwise`
-
-**Arguments**:
-- `-u`, `--user=`: the user for which to check existence
-
-**Details**:
-Requires YunoHost version 3.5.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L168)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/postgresql#L135)
[/details]
---
@@ -1808,47 +1342,139 @@ Requires YunoHost version 3.5.0 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L190)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/postgresql#L192)
[/details]
---
-### ynh_psql_setup_db
-[details summary="Create a database, an user and its password. Then store the password in the app's config" class="helper-card-subtitle text-muted"]
-**Usage**: `ynh_psql_setup_db --db_user=user --db_name=name [--db_pwd=pwd]`
+## REDIS
-**Arguments**:
-- `-u`, `--db_user=`: Owner of the database
-- `-n`, `--db_name=`: Name of the database
-- `-p`, `--db_pwd=`: Password of the database. If not provided, a password will be generated
+### ynh_redis_get_free_db
+[details summary="get the first available redis database" class="helper-card-subtitle text-muted"]
-**Details**:
-After executing this helper, the password of the created database will be available in $db_pwd
-It will also be stored as "psqlpwd" into the app settings.
+**Usage**: `ynh_redis_get_free_db`
-Requires YunoHost version 2.7.13 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L234)
+**Returns**: the database number to use
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/redis#L7)
[/details]
---
-### ynh_psql_remove_db
-[details summary="Remove a database if it exists, and the associated user" class="helper-card-subtitle text-muted"]
+### ynh_redis_remove_db
+[details summary="Create a master password and set up global settings
+Please always call this script in install and restore scripts" class="helper-card-subtitle text-muted"]
-**Usage**: `ynh_psql_remove_db --db_user=user --db_name=name`
+**Usage**: `ynh_redis_remove_db database`
**Arguments**:
-- `-u`, `--db_user=`: Owner of the database
-- `-n`, `--db_name=`: Name of the database
+- `database`: the database to erase
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/redis#L36)
+[/details]
+
+---
+
+
+## RUBY
+
+### ynh_use_ruby
+[details summary="Load the version of Ruby for an app, and set variables." class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_use_ruby`
**Details**:
-Requires YunoHost version 2.7.13 or higher.
+ynh_use_ruby has to be used in any app scripts before using Ruby for the first time.
+This helper will provide alias and variables to use in your scripts.
+
+To use gem or Ruby, use the alias `ynh_gem` and `ynh_ruby`
+Those alias will use the correct version installed for the app
+For example: use `ynh_gem install` instead of `gem install`
+
+With `sudo` or `ynh_exec_as`, use instead the fallback variables `$ynh_gem` and `$ynh_ruby`
+And propagate $PATH to sudo with $ynh_ruby_load_path
+Exemple: `ynh_exec_as $app $ynh_ruby_load_path $ynh_gem install`
+
+$PATH contains the path of the requested version of Ruby.
+However, $PATH is duplicated into $ruby_path to outlast any manipulation of $PATH
+You can use the variable `$ynh_ruby_load_path` to quickly load your Ruby version
+ in $PATH for an usage into a separate script.
+Exemple: $ynh_ruby_load_path $final_path/script_that_use_gem.sh`
+
+Finally, to start a Ruby service with the correct version, 2 solutions
+ Either the app is dependent of Ruby or gem, but does not called it directly.
+ In such situation, you need to load PATH
+ `Environment="__YNH_RUBY_LOAD_PATH__"`
+ `ExecStart=__FINALPATH__/my_app`
+ You will replace __YNH_RUBY_LOAD_PATH__ with $ynh_ruby_load_path
+
+Or Ruby start the app directly, then you don't need to load the PATH variable
+ `ExecStart=__YNH_RUBY__ my_app run`
+ You will replace __YNH_RUBY__ with $ynh_ruby
+
+one other variable is also available
+ - $ruby_path: The absolute path to Ruby binaries for the chosen version.
+
+Requires YunoHost version 3.2.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/postgresql#L265)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/ruby#L53)
+[/details]
+
+---
+
+### ynh_install_ruby
+[details summary="Install a specific version of Ruby" class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_install_ruby --ruby_version=ruby_version`
+
+**Arguments**:
+- `-v`, `--ruby_version=`: Version of ruby to install.
+
+**Details**:
+ynh_install_ruby will install the version of Ruby provided as argument by using rbenv.
+
+This helper creates a /etc/profile.d/rbenv.sh that configures PATH environment for rbenv
+for every LOGIN user, hence your user must have a defined shell (as opposed to /usr/sbin/nologin)
+
+Don't forget to execute ruby-dependent command in a login environment
+(e.g. sudo --login option)
+When not possible (e.g. in systemd service definition), please use direct path
+to rbenv shims (e.g. $RBENV_ROOT/shims/bundle)
+
+Requires YunoHost version 3.2.2 or higher.
+
+
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/ruby#L98)
+[/details]
+
+---
+
+### ynh_remove_ruby
+[details summary="Remove the version of Ruby used by the app." class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_remove_ruby`
+
+**Details**:
+This helper will also cleanup Ruby versions
+
+
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/ruby#L240)
+[/details]
+
+---
+
+### ynh_cleanup_ruby
+[details summary="Remove no more needed versions of Ruby used by the app." class="helper-card-subtitle text-muted"]
+
+**Usage**: `ynh_cleanup_ruby`
+
+**Details**:
+This helper will check what Ruby version are no more required,
+and uninstall them
+If no app uses Ruby, rbenv will be also removed.
+
+
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/ruby#L265)
[/details]
---
@@ -1869,7 +1495,7 @@ Requires YunoHost version 2.7.13 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/setting#L10)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/setting#L10)
[/details]
---
@@ -1888,7 +1514,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/setting#L36)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/setting#L36)
[/details]
---
@@ -1906,48 +1532,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/setting#L62)
-[/details]
-
----
-
-### ynh_webpath_available
-[details summary="Check availability of a web path" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_webpath_available --domain=domain --path_url=path`
-
-**Arguments**:
-- `-d`, `--domain=`: the domain/host of the url
-- `-p`, `--path_url=`: the web path to check the availability of
-
-**Example**: `ynh_webpath_available --domain=some.domain.tld --path_url=/coffee`
-
-**Details**:
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/setting#L123)
-[/details]
-
----
-
-### ynh_webpath_register
-[details summary="Register/book a web path for an app" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_webpath_register --app=app --domain=domain --path_url=path`
-
-**Arguments**:
-- `-a`, `--app=`: the app for which the domain should be registered
-- `-d`, `--domain=`: the domain/host of the web path
-- `-p`, `--path_url=`: the web path to be registered
-
-**Example**: `ynh_webpath_register --app=wordpress --domain=some.domain.tld --path_url=/coffee`
-
-**Details**:
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/setting#L145)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/setting#L62)
[/details]
---
@@ -1972,7 +1557,7 @@ Requires YunoHost version 2.6.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/string#L13)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/string#L13)
[/details]
---
@@ -1994,7 +1579,7 @@ sub-expressions can be used (see sed manual page for more information)
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/string#L40)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/string#L40)
[/details]
---
@@ -2016,30 +1601,7 @@ characters, you can't use some regular expressions and sub-expressions.
Requires YunoHost version 2.7.7 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/string#L71)
-[/details]
-
----
-
-### ynh_sanitize_dbid
-[details summary="Sanitize a string intended to be the name of a database" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_sanitize_dbid --db_name=name`
-
-**Arguments**:
-- `-n`, `--db_name=`: name to correct/sanitize
-
-**Returns**: the corrected name
-
-**Example**: `dbname=$(ynh_sanitize_dbid $app)`
-
-**Details**:
-Underscorify the string (replace - and . by _)
-
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/string#L103)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/string#L71)
[/details]
---
@@ -2065,7 +1627,7 @@ format and how placeholders are replaced with actual variables.
Requires YunoHost version 4.1.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/systemd#L15)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/systemd#L15)
[/details]
---
@@ -2082,7 +1644,7 @@ Requires YunoHost version 4.1.0 or higher.
Requires YunoHost version 2.7.2 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/systemd#L38)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/systemd#L38)
[/details]
---
@@ -2104,7 +1666,7 @@ Requires YunoHost version 2.7.2 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/systemd#L67)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/systemd#L67)
[/details]
---
@@ -2128,7 +1690,7 @@ Requires YunoHost version 3.5.0 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L12)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/user#L12)
[/details]
---
@@ -2150,7 +1712,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.2.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L33)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/user#L33)
[/details]
---
@@ -2168,91 +1730,7 @@ Requires YunoHost version 2.2.4 or higher.
Requires YunoHost version 2.4.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L53)
-[/details]
-
----
-
-### ynh_system_user_exists
-[details summary="Check if a user exists on the system" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_system_user_exists --username=username`
-
-**Arguments**:
-- `-u`, `--username=`: the username to check
-
-**Returns**: 0 if the user exists, 1 otherwise.
-
-**Details**:
-Requires YunoHost version 2.2.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L64)
-[/details]
-
----
-
-### ynh_system_group_exists
-[details summary="Check if a group exists on the system" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_system_group_exists --group=group`
-
-**Arguments**:
-- `-g`, `--group=`: the group to check
-
-**Returns**: 0 if the group exists, 1 otherwise.
-
-**Details**:
-Requires YunoHost version 3.5.0.2 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L82)
-[/details]
-
----
-
-### ynh_system_user_create
-[details summary="Create a system user" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_system_user_create --username=user_name [--home_dir=home_dir] [--use_shell] [--groups="group1 group2"]`
-
-**Arguments**:
-- `-u`, `--username=`: Name of the system user that will be create
-- `-h`, `--home_dir=`: Path of the home dir for the user. Usually the final path of the app. If this argument is omitted, the user will be created without home
-- `-s`, `--use_shell`: Create a user using the default login shell if present. If this argument is omitted, the user will be created with /usr/sbin/nologin shell
-- `-g`, `--groups`: Add the user to system groups. Typically meant to add the user to the ssh.app / sftp.app group (e.g. for borgserver, my_webapp)
-
-**Details**:
-Create a nextcloud user with no home directory and /usr/sbin/nologin login shell (hence no login capability) :
-```
-ynh_system_user_create --username=nextcloud
-```
-Create a discourse user using /var/www/discourse as home directory and the default login shell :
-```
-ynh_system_user_create --username=discourse --home_dir=/var/www/discourse --use_shell
-```
-
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L111)
-[/details]
-
----
-
-### ynh_system_user_delete
-[details summary="Delete a system user" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_system_user_delete --username=user_name`
-
-**Arguments**:
-- `-u`, `--username=`: Name of the system user that will be create
-
-**Details**:
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L153)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/user#L53)
[/details]
---
@@ -2266,7 +1744,7 @@ Requires YunoHost version 2.6.4 or higher.
Requires YunoHost version 4.1.7 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/user#L179)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/user#L187)
[/details]
---
@@ -2274,24 +1752,6 @@ Requires YunoHost version 4.1.7 or higher.
## UTILS
-### ynh_abort_if_errors
-[details summary="Exits if an error occurs during the execution of the script." class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_abort_if_errors`
-
-**Details**:
-This configure the rest of the script execution such that, if an error occurs
-or if an empty variable is used, the execution of the script stops immediately
-and a call to `ynh_clean_setup` is triggered if it has been defined by your script.
-
-Requires YunoHost version 2.6.4 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L61)
-[/details]
-
----
-
### ynh_setup_source
[details summary="Download, check integrity, uncompress and patch the source from app.src" class="helper-card-subtitle text-muted"]
@@ -2301,7 +1761,7 @@ Requires YunoHost version 2.6.4 or higher.
- `-d`, `--dest_dir=`: Directory where to setup sources
- `-s`, `--source_id=`: Name of the source, defaults to `main` (when the sources resource exists in manifest.toml) or (legacy) `app` otherwise
- `-k`, `--keep=`: Space-separated list of files/folders that will be backup/restored in $dest_dir, such as a config file you don't want to overwrite. For example 'conf.json secrets.json logs' (no trailing `/` for folders)
-- `-r`, `--full_replace=`: Remove previous sources before installing new sources
+- `-r`, `--full_replace=`: Remove previous sources before installing new sources (can be 1 or 0, default to 0)
**Details**:
#### New 'sources' resources
@@ -2379,7 +1839,7 @@ The helper will:
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L154)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L156)
[/details]
---
@@ -2405,7 +1865,7 @@ For multiple calls, cookies are persisted between each call for the same app
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L404)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L406)
[/details]
---
@@ -2463,7 +1923,7 @@ into the app settings when configuration is done.
Requires YunoHost version 4.1.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L488)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L490)
[/details]
---
@@ -2508,7 +1968,7 @@ Example of line this helpers can managed correctly
Requires YunoHost version 4.3 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L646)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L648)
[/details]
---
@@ -2528,23 +1988,7 @@ Requires YunoHost version 4.3 or higher.
Requires YunoHost version 4.3 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L724)
-[/details]
-
----
-
-### ynh_get_debian_release
-[details summary="Fetch the Debian release codename" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_get_debian_release`
-
-**Returns**: The Debian release codename (i.e. jessie, stretch, ...)
-
-**Details**:
-Requires YunoHost version 2.7.12 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L839)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L726)
[/details]
---
@@ -2561,7 +2005,7 @@ Requires YunoHost version 2.7.12 or higher.
Requires YunoHost version 2.6.4 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L870)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L874)
[/details]
---
@@ -2581,7 +2025,7 @@ Requires YunoHost version 2.6.4 or higher.
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L904)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L908)
[/details]
---
@@ -2606,30 +2050,7 @@ For example, if the manifest contains `4.3-2~ynh3` the function will return `4.3
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L947)
-[/details]
-
----
-
-### ynh_app_package_version
-[details summary="Read package version from the manifest" class="helper-card-subtitle text-muted"]
-
-**Usage**: `ynh_app_package_version [--manifest="manifest.json"]`
-
-**Arguments**:
-- `-m`, `--manifest=`: Path of the manifest to read
-
-**Returns**: the version number of the package
-
-**Details**:
-The version number in the manifest is defined by `~ynh`.
-
-For example, if the manifest contains `4.3-2~ynh3` the function will return `3`
-
-Requires YunoHost version 3.5.0 or higher.
-
-
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L976)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L951)
[/details]
---
@@ -2648,7 +2069,7 @@ of it, when it's not needed
Requires YunoHost version 3.5.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L997)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L1003)
[/details]
---
@@ -2680,5 +2101,8 @@ fi
Requires YunoHost version 3.8.0 or higher.
-[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/7d0d82ae016ae3e7cdb06423b67678d7f7a5d9ca/helpers/utils#L1027)
+[Dude, show me the code!](https://github.com/YunoHost/yunohost/blob/d5e054fe80002862bd5966d61b20e9fafcf0578e/helpers/utils#L1033)
[/details]
+
+---
+
From 53326815fafbc32cf94ce6234d6e9fbdc9e7905b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?=
Date: Thu, 30 May 2024 11:20:49 +0200
Subject: [PATCH 5/5] Fix path to the borg binary, now that it's been moved to
the install_dir venv
---
.../01.borgbackup/borgbackup.md | 29 +++++++++++++------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/pages/02.administer/20.backups/10.backup_methods/01.borgbackup/borgbackup.md b/pages/02.administer/20.backups/10.backup_methods/01.borgbackup/borgbackup.md
index f12648e0..02e48465 100644
--- a/pages/02.administer/20.backups/10.backup_methods/01.borgbackup/borgbackup.md
+++ b/pages/02.administer/20.backups/10.backup_methods/01.borgbackup/borgbackup.md
@@ -30,25 +30,36 @@ The future default backup method integrated in YunoHost will be based on this so
!!! To set up, first install the [borg application](https://github.com/YunoHost-Apps/borg_ynh), then optionally the [borgserver application](https://github.com/YunoHost-Apps/borgserver_ynh).
+## Finding the borg command
+
+The `borg` command is found inside the installation directory of the app. You should generaly prefer using this executable rather than the one installed by Debian's package, to ensure compatibility.
+
+```bash
+# Get the path to the borg executable
+alias borg="$(yunohost app setting $app install_dir)/venv/bin/borg"
+```
+
+The rest of this documentation assumes this alias is present in your shell, or that you added the venv in your PATH.
+
## Test
With the borg apps an email is sent to say if the backup fails or if the remote repo has received nothing. However, you can manually test to make sure everything is fine in a more complete way.
```bash
# List files
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg list "$(yunohost app setting $app repository)" | less
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" list "$(yunohost app setting $app repository)" | less
# List database exports
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg list "$(yunohost app setting $app repository)" | grep "(db|dump)\.sql"
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" list "$(yunohost app setting $app repository)" | grep "(db|dump)\.sql"
# List files from the archive
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg list "$(yunohost app setting $app repository)::ARCHIVE" | less
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" list "$(yunohost app setting $app repository)::ARCHIVE" | less
# View archive info
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg info "$(yunohost app setting $app repository)::ARCHIVE"
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" info "$(yunohost app setting $app repository)::ARCHIVE"
# Verify data integrity
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg check "$(yunohost app setting $app repository)::ARCHIVE" --verify-data
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" check "$(yunohost app setting $app repository)::ARCHIVE" --verify-data
```
## Restore
@@ -58,13 +69,13 @@ If we are in the case of a migration or a reinstallation, we must reinstall borg
List the available archives
```bash
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg list "$(yunohost app setting $app repository)"
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" list "$(yunohost app setting $app repository)"
```
Create tar archives (one archive per app and system part)
```bash
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg export-tar "$(yunohost app setting $app repository)::ARCHIVE" /home/yunohost/archives/ARCHIVE.tar
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" export-tar "$(yunohost app setting $app repository)::ARCHIVE" /home/yunohost/archives/ARCHIVE.tar
```
Then restore the archive in the usual way.
@@ -76,14 +87,14 @@ If the available space is less than the weight of your archive, decompressed dat
If restoring app by app is not enough OR if an archive is too big, it may be a good idea to generate a tarball without the "big" data of an app as if it had been generated with the [BACKUP_CORE_ONLY option](/backup/include_exclude_files#don't-save-large-quantities-of-data). Example with Nextcloud:
```bash
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg export-tar -e apps/nextcloud/backup/home/yunohost.app "$(yunohost app setting $app repository)::ARCHIVE" /home/yunohost.backup/archives/ARCHIVE.tar
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" export-tar -e apps/nextcloud/backup/home/yunohost.app "$(yunohost app setting $app repository)::ARCHIVE" /home/yunohost.backup/archives/ARCHIVE.tar
```
You will then have to extract these data directly with borg
```bash
cd /home/yunohost.app/
-app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " borg extract "$(yunohost app setting $app repository)::ARCHIVE" apps/nextcloud/backup/home/yunohost.app/
+app=borg; BORG_PASSPHRASE="$(yunohost app setting $app passphrase)" BORG_RSH="ssh -i /root/.ssh/id_${app}_ed25519 -oStrictHostKeyChecking=yes " "$borg" extract "$(yunohost app setting $app repository)::ARCHIVE" apps/nextcloud/backup/home/yunohost.app/
mv apps/nextcloud/backup/home/yunohost.app/nextcloud ./
rm -r apps
```