YunoHost 2.7 stable release - Eben Moglen | Sortie de YunoHost 2.7 stable - Eben Moglen



English version (french below) - YunoHost 2.7 release - includes security updates

Hi everybody !

On our way to enable Debian Strech compatibility for YunoHost (which is not compatible yet, do not migrate yet), we are now releasing a new 2.7 stable version! :tada: We chose to dedicate this new release to Eben Moglen for his fight for free software, and because he was one of the first to propose the idea of an affordable personal server as an alternative against GAFAMs and Internet centralization.

This release includes :

  • :warning: A significant upgrade of password storage security;
  • Internal tools aiming to help future migrations (a tool to enable YunoHost to evolve in a more consistent and transparent way for you) ;
  • Improvements in the DNS configuration suggestions and support (especially for DKIM)
  • Support for custom backup methods (while waiting for a proper Borg integration)
  • A more understandable handling of “Error 500” in the web-admin ;
  • Many corrections and improvements, particularly on code quality ;
  • More complete translations (Russian is beginning).

As this update includes security improvements, we HIGHLY recommend to apply it shortly.

:heart: A huge thank you to all those who have contributed to this version :heart: (Aleks, anmol26s, Bram, R., e-lie, Evgeniy Ozhiganov, CĂŽme Chilli, Jean-Baptiste Holcroft, JimboJoe, ljf, Maniack C, MCMic, opi, Remy Cabaret, all those who have tested and also those we may have forgotten to mention).

How to upgrade

:warning: Reminder :warning: YunoHost 2.x is not compatible with the new Debian version (Stretch, or 9.0), please read this thread before upgrading Debian Stretch | YunoHost is NOT YET compatible | YunoHost N'EST PAS ENCORE compatible

From web admin, go to “Update system”, then hit the “Update” button in the “System” bloc.

Or use the command line:

$ yunohost tools update 
$ yunohost tools upgrade --ignore-apps

Note : if you update from web admin, to prevent this one being turned off while updating, new package installation related to the web admin is deffered. You’ll have to wait the next hour following the update (ex : 16h42 -> 17h) for the password migration to be effective.

In any case:

  • Disconnect and reconnect from the admin interface (or use yunohost tools shell -c 'print "OK"');
  • Ask each one of your users to disconnect and reconnect on the user portal (including yourself).

This procedure is necessary as password storage security will automatically be upgraded (technical points: the hashing algorithm from a lower security level to SHA512).

Detailed changelog

Improvements on password storage security

User and administrator password are now stored using SHA-512.


For historical reasons and lack of solution on how to proceed, password hashing in YunoHost was based on low-quality algorithms. These were the default provided by LDAP, the system used to store user accounts and the Single Sign-On.

Users created from command line relied on MD5, the admin password relied on SSHA, and users who changed their password from the admin interface used SHA1.

Many researches and attempt to improve this were made, but were unsuccessful. About a week ago, while cleaning code, a new attempt was made and it was discovered that it is possible to use Linux’s authentication system (also called crypt, but better known as “the stuff in /etc/shadow”) which can use SHA-512.

It was clear that things couldn’t stay that way. Therefore, an implementation was made to use this new algorithm to store password (affecting YunoHost-core, Moulinette and SSOwat) and to migrate existing password hashes when reconnecting (since, as password as stored hash, the system can’t access them at any other time).

Migration framework for files and data

This version includes a migration framework, which will allow us to make YunoHost evolve in a cleaner and more serene way.


It often happens that we need to change how information is stored or handled by YunoHost (for instance, this was the case for application lists), because programs changed their configuration format (this will be the case for Debian Stretch), or to fix known bugs (for instance, SSL certificate permissions for metronome).

Until now, we were often forced to ask you to manually perform actions in command line interface (which isn’t easy for everybody) or to introduce code that handle backward compatibility.

The new tool introduced in version 2.7 will allow us to define transparent and automatic migrations, allowing us to make YunoHost evolve in a cleaner and more serene way. We expect this feature to be particularly useful when moving to Debian Stretch.

Migrations will be ran automatically after upgrading YunoHost. You can also manually manage migrations using the command line interface, but we don’t recommend to play with it, it is mainly for debugging purpose.

Detailed commands related to migrations
# Display the list of available migrations
yunohost tools migrations list

# Show the current state of migrations
yunohost tools migrations state

# Launch remaining migrations (since the last one performed)
yunohost tools migrations migrate

# Migrate to a specific state. This can we useful to go backward in migrations
# (though, all of them are not cancelable/reversible)
yunohost tools migrations migrate --target $number

# Skip one or several migration if they don't work or are not mandatory
yunohost tools migrations migrate --skip

Custom backup methods

While on the road to a direct Borg integration in YunoHost, we finalized the integration of custom backup methods support. This allows you to define your own methods (instead of creating .tar.gz archives). An example is available on this topic which shows how to “manually” setup a remote backup with Borg.

Define and use a custom backup method
  • Create a script in the backup_method hooks folder, for instance /etc/yunohost/hooks.d/backup_method/05-mybackupmethod
  • The script 05-mybackupmethod should manage actions need_mount, backup and mount. For now, to understand how it works, the easiest is to look at the script for Borg :
  • Use yunohost backup create or restore with option --method mybackupmethod

Improvement in DNS management for /

Until now, DKIM signatures (which are involved in reducing your outgoing mails spaminess) were badly handled for / domains, especially on the DNS side. Mails sent from these domains were therefore likely to be flagged as spam
 This is now solved in this version.

For existing domains, the update will automatically be made after your next IP change. If you want to force this fix to be applied, you can run this command on your instance : rm /etc/yunohost/dyndns/old_ip.

Error handling in the admin interface

Previously, unexpected internal server errors (error 500) in the admin interface where breaking the rendering and made it unusable. This is now fixed and it now shows more meaningful information to pinpoint the issue (to be provided to developers).



Misc improvements

For users
  • Fix some “false-negatives” when attempting to install Let’s Encrypt certificates, where YunoHost wrongly thought that the domain looked badly configured ;
  • The mail server now checks if a user is legitimate to address in ‘From’ header when sending a mail ;
  • In command line, --help now shows the description of the command ;
  • Display a warning for yunohost domain dns-conf, which recalls that this is just a recommended configuration, not an effective one ;
  • Add yunohost tools reboot and yunohost tools shutdown, to be integrated in the web administration later ;
  • Add a timeout to yunohost dyndns update such that it does not block the lock ;
  • Shows a more understandable error message when an app manifest is incorrect ;
  • Properly handle errors when a backup archive does not include an info.json ;
  • Fix a bug in archive creation (files mounted in /home/yunohost.backup/tmp/ were not in read-only, which could lead to unhappy data destruction) ;
  • When installing an app, the availability of the destination URL (e.g. some.domain.tld/blog) is checked before effectively launching the install.
For application packagers

New helpers are available:

  • ynh_package_autopurge (#321)
  • ynh_add_fpm_config and ynh_remove_fpm_config (#284)
  • ynh_restore_upgradebackup and ynh_backup_before_upgrade (#289)
  • ynh_add_nginx_config and ynh_remove_nginx_config (#285)
  • ynh_add_systemd_config and ynh_remove_systemd_config (#287)

The change_url script is now runned as root.

For developers

Version française - Sortie de YunoHost 2.7 - inclus des améliorations de sécurité

Bonjour tout le monde,

Dans notre lancĂ©e pour permettre Ă  YunoHost de fonctionner sous Debian Strech (ce qui n’est pas encore le cas, n’y passez pas encore), nous sortons une nouvelle version stable 2.7 :tada: ! Nous avons choisi de dĂ©dier cette version Ă  Eben Moglen pour son combat pour le logiciel libre, et parce qu’il Ă©tait l’une des premiĂšres personnes Ă  proposer l’idĂ©e d’un serveur personnel abordable comme une alternative aux GAFAMs et Ă  la centralisation d’Internet.

Cette version comporte :

  • :warning: une amĂ©lioration significative de la sĂ©curitĂ© du stockage des mots de passe ;
  • des outils internes qui nous aiderons aux migrations (un outil pour pouvoir faire Ă©voluer YunoHost de maniĂšre plus cohĂ©rente et transparente pour vous) ;
  • des amĂ©liorations sur la gestion de la recommandation de configuration DNS et sur la prise en charge des (notamment pour le DKIM)
  • la prise en charge des mĂ©thodes de backup personnalisĂ©es (en attendant l’intĂ©gration Ă  proprement parler de Borg)
  • une gestion plus comprĂ©hensible des “erreurs 500” dans l’interface d’administration lorsqu’elles surviennent ;
  • de nombreuses corrections et amĂ©liorations, notamment sur la qualitĂ© du code ;
  • des traductions plus complĂštes (dĂ©but de traduction en Russe).

Cette mise Ă  jour comportant des amĂ©liorations sur la sĂ©curitĂ©, nous vous recommandons FORTEMENT de l’appliquer rapidement.

:heart: Un tout grand merci Ă  toutes les personnes ayant contribuĂ© Ă  cette version :heart: (Aleks, anmol26s, Bram, R., e-lie, Evgeniy Ozhiganov, CĂŽme Chilli, Jean-Baptiste Holcroft, JimboJoe, ljf, Maniack C, MCMic, opi, Remy Cabaret ainsi que les personnes qui ont testĂ© et toutes celles qu’on aurait oubliĂ© de citer).

Mettre Ă  jour

:warning: Rappel :warning: YunoHost 2.x n’est pas compatible avec la nouvelle version de Debian (Stretch, ou 9.0), pensez à lire ce fil avant de faire la mise à jour Debian Stretch | YunoHost is NOT YET compatible | YunoHost N’EST PAS ENCORE compatible

Depuis l’interface d’administration, allez dans “Mettre à jour le systùme”, puis appuyez sur le bouton “Mettre à jour” dans la partie “Systùme”.

Ou alors utilisez la ligne de commande :

$ yunohost tools update 
$ yunohost tools upgrade --ignore-apps

Note : si vous mettez Ă  jour depuis l’interface d’administration, pour que Ă©viter que celle-ci soit coupĂ©e pendant la mise Ă  jour, l’installation des nouveaux paquets liĂ©s Ă  celle-ci est diffĂ©rĂ©e. Il faudra donc attendre l’heure suivant la mise Ă  jour (par exemple : 16h42 -> 17h) pour que le mĂ©canisme de migration des mots de passe soit effectif.

Dans tous les cas :

  • DĂ©connectez-vous puis reconnectez-vous Ă  l’interface d’administration (ou lancez yunohost tools shell -c 'print "OK"');
  • Demandez Ă  chacun de vos utilisateurs de se dĂ©connecter puis se reconnecter sur le portail utilisateur (vous y compris).

Cette procĂ©dure est nĂ©cessaire car la sĂ©curitĂ© du stockage des mots de passe sera automatiquement amĂ©liorĂ©e (Ă©lĂ©ments techniques : l’algorithme de hachage passera d’une version moins sĂ©curisĂ©e Ă  SHA512.

Détails des nouveautés et modifications

Amélioration de sécurité sur le stockage des mots de passe

Les mots de passe utilisateurs et administrateurs sont maintenant stockés en SHA-512.


Pour des raisons historiques et par manque de solution sur comment procéder, les mots de passe de YunoHost étaient hachés, lors de leur stockage, par des algorithmes de piÚtre qualité en terme de sécurité. En effet, ce sont les algorithmes fournis par défaut par LDAP, le systÚme utilisé par YunoHost pour stocker les informations des comptes utilisateurs et aussi utilisé dans le Single Sign-On.

Les utilisateurs crĂ©Ă©s via l’interface en ligne de commande avaient du md5, le mot de passe administrateur en ssha et les utilisateurs ayant modifiĂ© leur mot de passe dans l’interface (ssowat) utilisaient sha1.

Plusieurs recherches et tentatives ont Ă©tĂ© effectuĂ©es pour tenter d’amĂ©liorer cela, mais se sont rĂ©vĂ©lĂ©es sans succĂšs. Il y a peu (une semaine), lors d’un nettoyage de code, une nouvelle tentative Ă  Ă©tĂ© effectuĂ©e et il a Ă©tĂ© dĂ©couvert qu’il Ă©tait possible d’utiliser le systĂšme d’authentification de linux (aussi appelĂ© crypt, mais plus gĂ©nĂ©ralement connu comme “le truc dans /etc/shadow”) qui, lui, prend en charge l’algorithme de hachage SHA-512.

Il Ă©tait Ă©vident que les choses ne pouvaient rester ainsi. Le code a donc Ă©tĂ© modifiĂ© pour utiliser ce nouvel algorithme pour stocker les mots de passe (impactant YunoHost-core, Moulinette et SSOwat) et pour migrer automatiquement les hachages existants lors d’une reconnexion (comme les mots de passes sont hachĂ©s, le code ne peut y avoir accĂšs en dehors de ces moments).

Outil de migration des données/fichiers

Cette version intĂšgre un outil de migration qui nous permettra de faire Ă©voluer YunoHost de maniĂšre plus propre et sereine.


Il nous arrive rĂ©guliĂšrement d’avoir besoin de changer la façon dont certaines informations sont stockĂ©es ou gĂ©rĂ©es dans YunoHost (c’était le cas rĂ©cemment par exemple pour les listes d’applications), parce qu’un programme a changĂ© son format de fichier (ça sera le cas lors de la migration vers Debian Stretch), ou pour corriger des bugs connus (par exemple les permissions des certificats SSL pour metronome).

Jusqu’à prĂ©sent, nous Ă©tions de temps en temps obligĂ©s de vous demander d’effectuer ces actions par vous-mĂȘme et en ligne de commande (ce qui n’est pas pratique pour tout le monde) ou d’introduire du code qui assure une rĂ©trocompatibilitĂ©.

Le nouvel outil introduit dans cette version 2.7 nous permettra désormais de fournir des migrations automatiques et transparentes pour vous, nous permettant de faire évoluer YunoHost de maniÚre propre et sereine. Nous nous attendons à ce que cette fonctionnalité soit particuliÚrement utile pour le passage à Stretch.

Les migrations seront effectuées automatiquement aprÚs chaque mise à jour du paquet YunoHost. Vous pouvez également gérer les migrations manuellement, en ligne de commande, mais nous déconseillons fortement de jouer avec, cela est surtout présent pour du débugging.

Détail des commandes liées aux migrations
# Affiche la liste des migrations disponibles
yunohost tools migrations list

# Montre l'Ă©tat actuel des migrations
yunohost tools migrations state

# Lance les migrations restantes (reprend depuis la derniÚre effectuée)
yunohost tools migrations migrate

# Spécifie vers quelle migration on souhaite positionner l'installation, cela
# peut ĂȘtre utile pour revenir en arriĂšre si l'on souhaite annuler une migration
# (elles ne sont pas toutes annulables/réversibles)
yunohost tools migrations migrate --target $nombre

# Permet de sauter une/des migrations si jamais elles ne marchent pas et/ou ne sont pas nécessaires
yunohost tools migrations migrate --skip

Méthodes de sauvegarde personnalisées

En attendant l’intĂ©gration directe de Borg dans YunoHost, nous avons terminĂ© la mise en place de la prise en charge des mĂ©thodes de sauvegarde personnalisĂ©es. Vous pouvez ainsi dĂ©finir vos propres mĂ©thodes (plutĂŽt que la simple crĂ©ation d’une archive .tar.gz). Un exemple est disponile sur ce sujet qui montre comment mettre en place “à la main” une sauvegarde distante Ă  l’aide de Borg.

Définir et utiliser une méthode de sauvegarde personnalisée
  • CrĂ©er un script dans le dossiers des hooks backup_method, par exemple /etc/yunohost/hooks.d/backup_method/05-mybackupmethod
  • Dans le script 05-mybackupmethod, gĂ©rer les actions need_mount, backup et mount. Le plus simple pour le moment est de s’inspirer du script pour Borg :
  • Utiliser yunohost backup create ou restore avec l’option --method mybackupmethod

Amélioration de la gestion des DNS pour les /

Jusqu’à prĂ©sent, les signatures DKIM (qui jouent notamment dans le score de spam des emails envoyĂ©s par votre serveur) Ă©taient mal gĂ©rĂ©es pour les domaines en et, notamment du cĂŽtĂ© des DNS. Les messages envoyĂ©s via ces domaines Ă©taient donc trĂšs susceptibles d’atterrir dans les spams
 C’est dĂ©sormais rĂ©solu dans cette nouvelle version.

Pour les domaines existants, la mise Ă  jour se fera au prochain changement d’IP de votre machine. Si vous souhaitez forcer l’application de cette correction, vous pouvez exĂ©cuter la commande suivante sur votre instance : rm /etc/yunohost/dyndns/old_ip.

Gestion des erreurs dans l’interface admin

Par le passĂ©, une erreur imprĂ©vue (erreur 500) sur l’interface d’admin cassait le rendu et la rendait inutilisable. C’est dĂ©sormais corrigĂ© et des informations pour comprendre le problĂšme (ou Ă  fournir aux dĂ©veloppeurs) sont dĂ©sormais affichĂ©es.



Amélorations diverses

Pour les utilisateurs
  • Suppression de certains “faux-nĂ©gatifs” pour l’installation des certificats Let’s Encrypt oĂč YunoHost pensait Ă  tort que le domaine semblait mal configurĂ© ;
  • Le serveur mail vĂ©rifie maintenant que l’utilisateur qui soumet le mail est lĂ©gitime Ă  utiliser l’adresse d’expĂ©diteur ;
  • En ligne de commande --help affiche dĂ©sormais la description de la commande ;
  • Affichage d’un avertissement pour la commande yunohost domain dns-conf qui rappelle que ceci n’est qu’une recommandation et pas la configuration effective ;
  • Ajout des commandes yunohost tools reboot et yunohost tools shutdown en vue de les intĂ©grer dans l’interface d’administration ;
  • Rajout d’un dĂ©lai d’expiration dans la commande yunohost dyndns update pour Ă©viter qu’elle ne bloque ;
  • S’il y a une erreur dans le manifest d’une application, un message d’erreur plus clair sera affichĂ© ;
  • Une gestion d’erreur propre pour les archives de sauvegardes ne contenant pas de fichier info.json ;
  • La correction d’un bug lors de la crĂ©ation d’une archive de sauvegarde (les fichiers montĂ©s dans /home/yunohost.backup/tmp/ n’étaient pas en lecture seule, ce qui pouvait entraĂźner une destruction malencontreuse de donnĂ©es) ;
  • Lors de l’installation d’une application, la disponibilitĂ© de l’URL d’installation (e.g. un.domaine.tld/blog) est dĂ©sormais vĂ©rifiĂ©e avant de lancer effectivement l’installation.
Pour les packageurs d'applications

De nouveaux helpers sont disponibles :

  • ynh_package_autopurge (#321)
  • ynh_add_fpm_config et ynh_remove_fpm_config (#284)
  • ynh_restore_upgradebackup et ynh_backup_before_upgrade (#289)
  • ynh_add_nginx_config et ynh_remove_nginx_config (#285)
  • ynh_add_systemd_config et ynh_remove_systemd_config (#287)

Le script change_url n’était pas lancĂ© par l’utilisateur root, c’est dĂ©sormais le cas.

Pour les développeurs

BriqueCamp summary / Résumé du BriqueCamp