Virtualiser Yunohost sur Proxmox VE

Guide d'installation de YunoHost, une solution d'auto-hébergement.

Virtualiser Yunohost sur Proxmox VE
pve proxmox proxmoxve yunohost selfhosted

Au sommaire :

  • 1-Qu'est-ce que Yunohost ?
  • 2-Prérequis
  • 3-Création de la machine virtuelle
  • 4-Installation
  • 5-Ouverture des ports 80 et 443
  • 6-Les adresse IP publiques partagés et dynamique
  • 7-Accéder à l'interface web
  • 8-Génération du certificat Let's Encrypt
  • 9-Installation des premières applications

1-Qu'est-ce que Yunohost ?

Yunohost ou "Why You Not Host" est une distribution basée sur Debian qui va vous permettre d'héberger très facilement vos propres applications à domicile et vous libérer progressivement des GAFAM.

Si vous êtes débutant et que vous suivez le tutoriel, vous allez disposer d'une solution sur mesure pour vous prendre en main dans ce monde numérique impitoyable.

Comme dirait oncle Ben.

Donc soyez conscient que choisir la voie de l'auto-hébergement implique de se débrouiller lorsqu'on rencontre un pépin.

2-Prérequis

Étant basé sur Debian, Yunohost peut-être installé sur une grande variété d'appareils.

Mais pour ce tutoriel, nous allons virtualiser Yunohost à l'aide de Proxmox VE (comme c'est étonnant hohoho).

Comme d'habitude, il vous faut

3-Création de la machine virtuelle

Téléchargez l'ISO de Yunohost puis ajoutez là sur votre serveur en allant dans Datacenter\<nomduserveur>\local\ISO Images\Upload puis "Select File".

On est actuellement sur Debian Bullseye 11.0.9.

Lien : https://build.yunohost.org/yunohost-bullseye-11.0.9-amd64-stable.iso

Ensuite, créez une machine virtuelle et donnez lui un nom.

Dans "Use CD/DVD disk image file 'iso", sélectionnez votre image. Si vous êtes sur le stockage par défaut, elles sont stockés dans "local" ("QNAP" est mon NAS de 1 To où je stocke mes images et sauvegardes).

Par défaut, "Guest OS" est paramétré sur Linux 6.x - 2.6 Kernel.

Ensuite, activez "Qemu Agent" qui est l'agent de liaison de l'émulateur QEMU. Il est utile pour envoyer des informations comme l'adresse IP ainsi que pour démarrer ou éteindre la machine virtuelle.

Par défaut, PVE sélectionne le bios OVMF (Open Virtual Machine Firmware) qui est le portage open-source du standard UEFI et le profil machine q35 qui est plus moderne que le i440fx. Il est obligatoire pour transmettre un périphérique physique (PCI passthrough) mais nous n'en avons pas besoin pour Yunohost. Nous allons utiliser le modèle par défaut "i440fx".

Également, PVE sélectionne par défaut VirtIO SCSI comme contrôleur SCSI qui nous sera utile lorsqu'on utilisera les pilotes de para-virtualisation. Pour en savoir plus :

Virtio-SCSI
oVirt is a free open-source virtualization solution for your entire enterprise

Sélectionnez "SSD emulation" pour indiquer à la machine virtuelle quelle tourne sur un SSD et non un disque dur, cela permettra d’allonger la durée de vie du SSD puis "Discard" pour une meilleure gestion du provisionnement dynamique.

Enfin, indiquez la taille du disque (50 Go pour l'exemple).

Dans "Type", "kvm64" est le type de processeur par défaut pour les machines virtuelles Linux. Cela vous permettra de migrer votre machine virtuelle sur n'importe quel type de serveur (Intel ou AMD) sans rencontrer d'incompatibilités

Dans le cas de Yunohost, si vous laissez par défaut, vous allez avoir ce message qui va s'afficher lors de l'installation.

Debian indique qu'il manque les instructions SSSE3. Elles apparaissent pour la première fois avec les processeurs Core 2 Duo et la gamme des Xeon 5100.

SSSE3 - Wikipedia
SSSE3
Supplemental Streaming SIMD Extension 3 - aussi connu sous le nom de code Tejas New Instructions…

Pour la petite histoire, j'ai du basculer ma machine virtuelle Ubuntu Server sur "Host" car j'avait besoin que ma base de données MongoDB puisse accéder aux instructions AVX2 du processeur.

Dans le cas de Yunohost, indiquez simplement "core2duo" pour avoir ces instructions.

Dans "Memory", laissez par défaut avec le mode "Balloon" et augmenter progressivement selon le nombre d'applications que vous aurez installer.

Dans "Model", sélectionnez le pilote de para-virtualisation VirtIO pour la carte réseau.

Vérifiez la configuration.

Cliquez sur "Finish" et démarrez la machine virtuelle.

4-Installation

Sélectionnez l'installation graphique.

Configurez en anglais.

Indiquez votre localisation.

La langue locale (anglais pour ma part).

Configurez le clavier en français AZERTY.

L'installation s'effectue automatiquement contrairement à une installation Debian standard.

Si vous avez mis votre processeur sur "kvm64", vous allez avoir ce message qui va vous avertir que votre processeur n'a pas les instructions SSSE3 donc cochez "Yes" pour installer.

pensez bien à récupérer l'adresse IP de votre serveur Yunohost.

Avant d'accéder à l'interface web, il va falloir ouvrir les ports 80 et 443 de votre box internet si vous souhaitez accéder à Yunohost de l'extérieur.

5-Ouverture des ports 80 et 443

Ce cas étant très peu expliqué dans la plupart des tutoriels, je vais vous prendre par la main et vous guider pour configurer la Freebox et la Livebox, les box internet les plus utilisés en France.

Freebox

Dans les paramètres de votre Freebox, allez dans "Connexion à internet", cliquez sur "Gestion des ports" et "Ajouter une redirection" pour ouvrir les ports 80 et 443 puis rediriger les requêtes vers l'adresse IP de la machine virtuelle.

Port 80

  • IP Destination : l'adresse IP de votre machine virtuelle
  • IP source : Toutes
  • Protocole : TCP
  • Port de début, de fin et de destination : 80
  • Commentaire : mettez ce que vous voulez

Port 443

  • IP Destination : l'adresse IP de votre machine virtuelle
  • IP source : Toutes
  • Protocole : TCP
  • Port de début, de fin et de destination : 443
  • Commentaire : mettez ce que vous voulez

Livebox

Pour les possesseurs de Livebox, allez dans Réseau puis NAT/PAT puis créez deux règles NAT (Network Address Translation) pour ouvrir les ports 80 et 443 et rediriger les requêtes vers l'adresse IP de la machine virtuelle.

Port 443

  • Application/Service : Secure Web Server_HTTPS_
  • Port interne : 443
  • Port externe : 443
  • Protocole : TCP
  • Equipement : le nom donné par la Livebox à votre machine virtuelle
  • IP externe : laissez sur "Toutes"

Cliquez sur "Créer".

Port 80

  • Application/Service : Web Server_HTTP_
  • Port interne : 80
  • Port externe : 80
  • Protocole : TCP
  • Equipement : le nom donné par la Livebox à votre machine virtuelle
  • IP externe : laissez sur "Toutes"

Cliquez sur "Créer".

6-Les adresse IP publiques partagés et dynamique

Sur votre Freebox, si le port de début est en rouge et que l'icone "sauvegarder" est grisé, c'est que vous n'avez pas d'adresse IP FullStack (IP publique statique).

Votre adresse IP pubique est en fait partagé avec d'autres abonnés.

Dans ce cas, faites la demande sur votre compte client car il vous est impossible dans l'état actuel des choses d'ouvrir certains ports.

Chez Orange, l'adresse adresse IP chez Orange est dynamique, ce qui peux poser des problèmes si vous souhaitez héberger vos propres applications à domicile.

Mais pas de panique, OVH propose un DNS dynamique et Orange à également prévu une option pour ce genre de cas dans les paramètres de sa Livebox.

Paramétrer un DNS dynamique (DynHost/DynDNS) pour votre nom de domaine
Découvrez comment paramétrer un enregistrement DNS dynamique pour votre nom de domaine OVHcloud

Tout d'abord, allez sur votre compte OVH, authentifiez-vous, cliquez sur DynHost puis sur "Ajouter un DynHost".

Commencez par créer un identifiant pour pouvoir l'utiliser sur votre Livebox et synchroniser votre adresse IP publique dynamique.

Puis, créez un sous nom de domaine avec le nom que vous voulez, ajoutez votre adresse IP publique actuelle et cliquez sur "Valider".

Dés que c'est terminer, retournez sur votre Livebox et allez dans Réseau puis DynDNS.

  • Service : choisissez "OVH-dynhost
  • Nom d'hôte/de domaine : le nom de domaine
  • Email utilisateur/mot de passe : l'adresse mail et le mot de passe que vous avez renseigné chez OVH

Puis cliquez sur "Enregistrer".

Il faudra répéter cette opération à chaque fois que vous souhaitez ajouter un nouveau nom de domaine.

Votre Livebox sera synchronisé à votre compte OVH donc dés que votre adresse IP publique changera, cela se répercutera chez OVH pour que vous ne puissiez pas perdre l’accès à vos applications web.

7-Accéder à l'interface web

Tapez l'adresse IP que vous avez récupérer précédemment. Comme d'habitude, passez outre le message.

Cliquez sur "C'est parti !".

Soit vous avez déjà un nom de domaine, soit Yunohost vous propose d'en créer un donc choisissez l'une des deux options puis cliquer sur "Suivant".

Créez un identifiant et un mot de passe puis cliquez sur "Suivant".

Cliquez sur "OK".

Patientez.

Félicitation!!!! Vous pouvez taper votre identifiant et votre mot de passe pour accéder à l'interface d'administration.

Vous pouvez supprimer ou créer des utilisateurs.

Metter à jour le système. À noter que le paquet "qemu-guest-agent" est installé par défaut.

Vous pouvez aussi vérifier les logs, effectuer une migration de vos données, vérifier l'état des services, configurer le pare-feu et accéder aux paramètres avancés de Yunohost mais pour ne pas alourdir ce guide, nous le verront dans un prochain tutoriel.

8-Génération du certificat Let's Encrypt

Vous avez deux méthodes pour générer un certificat Let's Encrypt. Suivez bien les étapes 5 et 6 avant de passer à celle-ci.

Méthode n°1

C'est la méthode standard. Si vous êtes chez Orange, il vous faudra :

  • Indiquer l'adresse IP du serveur Yunohost pour les ports 80 et 443.
  • Créer un DynDNS pour actualiser l'adresse IP Publique du côté du DNS.

Dés que c'est fait, cliquez sur "Domaine" puis cliquez sur le nom de domaine et vous aurez le panneau jaune qui s'affiche à l'écran qui indique que le certificat est auto-signé d'où le fameux message d'avertissement lorsque vous avez tenter d'accéder à l'interface web.

Plus bas, cochez "Ignorer les tests..." et cliquer sur "Installer un certificat Let's Encrypt".

Patientez quelques instants et si tout se passe bien, vous avez générer un certificat Let's Encrypt avec succès.

Méthode n°2

C'est la méthode que j'utilise car les ports 80/443 sont déjà attribués à Traefik donc ce que l'on va faire c'est mettre ce dernier en front pour qu'il puisse intercepter les requêtes et les rediriger vers Yunohost.

Il est important que vous ayez déjà suivi mon guide à ce sujet sinon vous serez perdu.

(Docker) Traefik
Au sommaire : * Qu’est-ce que Traefik ? * Qu’est-ce qu’un reverse proxy ? * Prérequis * Acheter un nom de domaine * Configuration initiale de Traefik * Ouvrir les ports du routeur * Les adresse IP publiques partagés et dynamique * Déploiement de Traefik * Exposer une application 1-Qu’est…

Et le guide sur Authelia si vous souhaitez augmenter la sécurité de Yunohost.

(Docker) Authelia
Au sommaire : * Qu’est-ce que Authelia ? * Prérequis * Configuration * Créer un utilisateur * Créer un middleware * Déploiement * SFA et MFA 1-Qu’est-ce que Authelia ? Authelia est un serveur d’authentification et d’autorisation qui remplit le rôle de gestion des identités et des accès (I…

Il va falloir indiquer un routeur et un service dans le fichier "dynamic.yml".

  • routeur : indiquez le nom de domaine de yunohost dans "rule", le middleware que vous comptez utiliser (Authelia pour l'exemple, cochez si vous n'en avez pas besoin), le type de certificat (https) et le nom du service (yunohost-svc).
  • service : donnez comme nom "yunohost-svc pour que ça smash avec le routeur puis dans loadbalancer/servers, indiquez l'adresse IP du serveur Yunohost.
http:
  routers:
  
    yunohost:
      rule: "Host(`yunohost.sussudio.ovh`)"
      middlewares:
        - middlewares-authelia
      tls:
        certResolver: https
      service: yunohost-svc
      
  services:
  
    yunohost-svc:
      loadBalancer:
        servers:
          - url: "https://192.168.0.210"
        passHostHeader: true

Si vous utilisez comme moi le middleware Authelia, ouvrez le fichier "configuration.yml" et ajoutez le nom de domaine de Yunohost dans "access_control".

access_control:
  rules:
    - domain:
        - "yunohost.sussudio.ovh"
      policy: two_factor

Redémarrer Traefik et Authelia.

docker restart traefik authelia

Et voilà le résultat.

Installation des premières applications

Allez dans "Applications" et cliquer sur "Installer".

Indiquez l'utilisateur qui accéder à l'application puis cliquer sur "Installer".

Lorsque l'application est installé, cliquez dessus et cliquer sur "Ouvrez l'application".

Chaque application est accessible en tapant votre nom de domaine suivi de "/nomdevotreapplication".

Ou tapez simplement l'adresse web de yunohost pour accéder à l'application.

Amusez-vous à installer et tester les plus de 400 applications disponibles sur Yunohost.