La distribution YunoHost vous facilitera grandement l'administration du serveur de votre CHATON. Cette page présente les fonctionnalités principales de YunoHost (YNH) et suggère certains outils pour vous permettre d'exploiter pleinement son potentiel.

Présentation de YunoHost

YunoHost est une distribution basée sur Debian GNU/Linux composée, essentiellement, de logiciels libres. Plusieurs fonctionnalités la rendent adaptées à un projet CHATON :

  • Multi-domaines (SSL Letsencrypt), multi-utilisateurs (LDAP)
  • Chaque utilisateur peut disposer d'une boite mail (Postfix, Dovecot…) et d'une adresse de messagerie instantannée (XMPP Metronome)
  • Installation d'applications web populaires en quelques clics (liste ci-dessous)
  • Identification unique (Single Sign-On) de vos utilisateurs sur toutes les applications officielles et certaines autres
  • Mise à disposition d'applications privées (uniquement pour vos utilisateurs) ou publiques (NGINX)
  • Ajout simplifié de nouvelles applications (voir documentation)
  • Support d'une multitude de hardware (x64, x86, raspberry, …)
  • Scripts de backup/restore pour toutes les applications officielles et certaines autres
  • Système d'API permettant d'aministrer et de monitorer YunoHost intégralement à distance
  • Distribution également utilisée par le projet La Brique Internet qui promeut un internet libre, neutre et décentralisé et qui s'appuie sur des FAI associatifs (synergies potentielles).
  • Communauté de développement dynamique (forum, packaging d'applications, labriqueinter.net, …)

De nombreuses applications ont déjà été packagées :

La plupart des services Framasoft sont installables via YunoHost et qui plus est avec une identification utilisateur unique (SSO).

Quelques contraintes seraient toutefois à noter pour l'utilisation de YunoHost par un projet CHATON :

  • Qualité diverses des applications : toutes n'ont pas de backup/restore et de SSO, …
  • SSL Letsencrypt à installer via une application tierce pour le moment
  • Pas de haute-disponibilité pour le moment (mais discussions en cours)
  • Impossible pour le moment de faire des backup/restore pour chaque utilisateur (le backup se faisant pour l'intégralité du serveur)
  • Impossible pour le moment de déplacer les utilisateurs individuellement vers un autre serveur YunoHost
  • Du fait de l'utilisation de Nginx, il est nécessaire de packager une application pour la rajouter dans YunoHost (bricolage difficile sinon)
  • Difficile pour le moment de déplacer des applications vers d'autres domaines/sous-domaines sans les réinstaller

YunoHost étant un logiciel libre, ces contraintes sont toutefois corrigeables si vous le souhaitez, et la plupart sont d'ailleurs à l'étude dans le roadmap : https://dev.yunohost.org/

Administrer YunoHost

La documentation administrateur de YunoHost couvrira la plupart de vos questions : https://yunohost.org/#/admindoc_fr Plusieurs détails d'importance pour un projet CHATONS sont toutefois présentés ci-dessous.

L'administration se fait simplement depuis l'interface d'administration web

YunoHost est entièrement administrable en ligne de commande si vous le souhaitez.

La liste de commande est accessible ici : https://yunohost.org/#/moulinette_fr

Quelques exemples :

  • Ajouter un utilisateur avec 500M d'espace mail : yunohost user create -f FIRSTNAME -m MAIL -l LASTNAME -p PASSWORD -q 500M
  • Installer Owncloud: yunohost app install owncloud_ynh
  • Backup : yunohost backup create

Toutes les actions executables en ligne de commande le sont également via une API.

L'API utilise l'adresse https://VOTRESERVEUR/yunohost/api et toutes les actions sont détaillées sur cette page.

Il faut d'abord récupérer un cookie de login pour ensuite réaliser les actions. Voici un exemple via curl :

Pour simplifier l'administration à distance d'une instance YunoHost dans le cadre d'un projet CHATON, des classes API ont été développées par des utilisateurs.

Par exemple, cette classe PHP vous permettra d'administrer votre instance YunoHost depuis une application PHP (site web, outil de provisioning, …).

Voici un exemple de code PHP permettant d'ajouter un utilisateur dans votre instance YunoHost :

 
require("ynh_api.class.php");
$ynh = new YNH_API("YunoHost server IP or hostname", "admin password");

if ($ynh->login()) {
    $domains = $ynh->get("/domains");
    $first_domain = $domains['domains'][0];

    $arguments = array(
        'username' => 'test',
        'password' => 'yunohost', 
        'firstname' => 'Firstname',
        'lastname' => 'Lastname',
        'mail' => 'test@'.$first_domain,
        'mailbox_quota' => '500M'
    );

    $user_add = $ynh->post("/users", $arguments);
    print_r($user_add);

} else {
    print("Login to YunoHost failed.\n");
    exit;
}

Un CHATON pourra donc très simplement développer des modules de provisioning permettant par exemple de :

  • Provisioner des utilisateurs (ajouter/modifier/supprimer) sur une instance YunoHost mutualisée
  • Provisioner des instances YunoHost sur une machine virtuelle (configuration, ajout de domaines et d'utilisateurs, installation d'apps, …)

Il est à noter également que des modules de provisioning pour le panel open source BoxBilling sont en cours de développement chez un CHATON en création. Ce projet permettra du provisioning d'utilisateurs (sur instance YunoHost mutualisée) ou d'instances YunoHost (via Proxmox) dans BoxBilling (documentation à venir) avec facturation des utilisateurs (si vous le souaitez), gestion des tickets, etc …

A compléter avec des exemples d'infrastructures de CHATONS s'appuyant sur YunoHost