Aller au contenu principal

Sur WSL

danger

Cette configuration est principalement destinée aux tests locaux par des utilisateurs avancés. En raison des limitations de WSL (notamment le changement d'adresse IP), l'auto-hébergement à partir de celui-ci peut s'avérer délicat et ne sera pas décrit ici.

Pré-requis

  • Windows 10 et versions ultérieures
  • Droits d'administration
  • Sous-système Windows pour Linux, installé à partir du menu Fonctionnalités facultatives de Windows
  • Recommandé : application Windows Terminal (Preview), installée à partir du Microsoft Store. Bien meilleure que le terminal standard, car elle offre des raccourcis vers les distributions WSL.

Introduction

WSL est une fonctionnalité intéressante de Windows 10 qui permet d'utiliser des pseudo-distributions Linux via la ligne de commande. Nous parlons ici de pseudo-distributions, car même si elles ne sont pas vraiment comparables à des machines virtuelles, elles s'appuient sur des capacités de virtualisation qui rendent leur intégration à Windows presque transparente. Docker pour Windows peut désormais s'appuyer sur WSL plutôt que sur Hyper-V, par exemple.

attention

Gardez à l'esprit que cette configuration n'est en aucun cas un conteneur de quelque sorte que ce soit. Si quelque chose ne fonctionne plus, il n'y a aucune possibilité de restauration.
Vous devrez peut-être supprimer complètement la distribution Debian et la restaurer dans son intégralité.

Installer Debian

Installons YunoHost dans sa version telle qu'elle est distribuée, sans la modifier et en gardant celle par défaut. Et cela dans un terminal PowerShell :

# Let's go in your home directory and prepare the working directories
cd ~
mkdir -p WSL\YunoHost
# Download the Debian appx package and unzip it
curl.exe -L -o debian.zip https://aka.ms/wsl-debian-gnulinux
Expand-Archive .\debian.zip -DestinationPath .\debian
# Import the Debian base into a new distro
wsl --import YunoHost ~\WSL\YunoHost ~\debian\install.tar.gz --version 2
# Cleanup
rmdir .\debian -R

Vous pouvez désormais y accéder en exécutant : wsl.exe -d YunoHost

Il s'agit de Debian 9 Stretch, donc mettons-la à jour :

# In WSL
sudo sed -i 's/stretch/bookworm/g' /etc/apt/sources.list`
sudo apt update
sudo apt upgrade
# optional
sudo apt full-upgrade
# wget needed for later setup
sudo apt install wget -y

Empêcher WSL de modifier les fichiers de configuration

Modifiez le fichier /etc/wsl.conf et ajoutez-y le code suivant :

[network]
generateHosts = false
generateResolvConf = false

Forcer l'utilisation d'iptables-legacy

FIXME

YunoHost utilise désormais nftables, ces instructions sont peut-être obsolètes.

Pour une raison quelconque, la post-installation de YunoHost n'apprécie pas nf_tables, le nouveau logiciel qui remplace iptables. Nous pouvons toutefois continuer à utiliser explicitement le bon vieux iptables :

# In WSL
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Installer Systemd

Debian sur WSL ne dispose pas de systemd, un gestionnaire de configuration de services. Il s'agit d'un élément clé pour YunoHost, et pour toute distribution Debian digne de ce nom (sérieusement MS, c'est quoi ce caillon). Installons-le :

  1. Installez le runtime dotNET :
# In WSL
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y apt-transport-https
sudo apt update
sudo apt install -y dotnet-sdk-3.1
  1. Installez Genie :
# In WSL
# Add their repository
echo "deb [trusted=yes] https://wsl-translinux.arkane-systems.net/apt/ /" > /etc/apt/sources.list.d/wsl-translinux.list
# Install Genie
sudo apt update
sudo apt install -y systemd-genie

Installer YunoHost

# In WSL
# Let's switch to the root user, if you were not already
sudo su

# Initialize the Genie bottle to have systemd running
genie -s
# Your hostname should have been appended with "-wsl"

Lancez le script d'installation

  • Ouvrez un terminal sur votre serveur (soit directement, soit via SSH)
  • Assurez-vous d'être root (ou tapez sudo -i pour devenir root)
  • Puis lancez la commande suivante :
curl https://install.yunohost.org | bash
danger

Assurez-vous toujours qu'il y ait un s à https.

attention

Il vous faudra peut-être installer curl at ca-certificates avec la commande suivante:

apt install curl ca-certificates
remarque

Pour les personnes avancées qui ne sont pas convaincues par l'approchecurl | bash vous pouvez lire cet article "Is curl|bash insecure?" du bloq de Standstorm, et possiblement cette discussions sur Hacker News.

Accéder à la ligne de commande

Appelez toujours genie -s lors du démarrage de votre distribution.

wsl -d YunoHost -e genie -s

Sauvegarder et restaurer la distribution

Effectuez votre première sauvegarde de la distribution

Comme indiqué précédemment, il n'existe aucune fonctionnalité de restauration. Exportons donc votre nouvelle distribution. Dans PowerShell :

cd ~
wsl --export YunoHost .\WSL\YunoHost.tar.gz

En cas de panne, supprimez et restaurez l'intégralité de la distribution

cd ~
wsl --unregister YunoHost
wsl --import YunoHost .\WSL\YunoHost .\WSL\YunoHost.tar.gz --version 2

Lancer la configuration initiale

info

Si vous êtes en train de restaurer une sauvegarde YunoHost, vous devez sauter cette étape et vous référer à la section Restaurer durant la post-installation à la place de cette étape de configuration initiale.

info

Cette documentation suppose que vous êtes sur le même réseau local que votre YunoHost.

Pour un VPS, utilisez l'adresse IP publique au lieu du domaine ou adresse locale.

Depuis un ordinateur, ouvrez un navigateur et tenter d'accéder à la webadmin:

  • si vous installez sur un VPS, vous avez probablement utilisé la méthode d'installation basée sur curl | bash, et le script aurait du vous pointer vers l'adresse, typiquement https://xx.xx.xx.xx (avec l'IPv4 publique du serveur)
  • si vous installez à la maison, et en supposant que vous êtes sur le même réseau local que le serveur
    • vous pouvez tenter d'ouvrir https://yunohost.local (ceci peut ou peut ne pas fonctionner en fonction de si votre machine et réseau supporte le protocole Bonjour)
    • si vous connaissez déjà l'IP locale du serveur, allez sur https://xx.xx.xx.xx (avec l'IP locale, typiquement qui commence par 192.168.)
    • autrement, il vous faut trouver l'IP locale du serveur pour continuer.
attention

Lors de la première visite, vous rencontrerez très probablement un avertissement de sécurité lié au certificat utilisé. Pour le moment, votre serveur utilise un certificat auto-signé. Vous pourrez plus tard ajouter un certificat automatiquement reconnu par les navigateurs comme décrit dans la page sur les certificats. En attendant, ajoutez une exception de sécurité pour accepter le certificat actuel. (Toutefois, s'il vous plaît, ne prenez pas l'habitude d'accepter ce genre d'alerte de sécurité !)

Vous devriez arriver sur cette page:

Capture d'écran de la page de configuration initiale
Capture d'écran de la page de configuration initiale

Domaine principal

Configuration spécifique WSL

Vous devrez choisir un faux nom de domaine, car il ne sera pas accessible de l'extérieur. Par exemple, ynh.wsl. L'étape compliqué est d'exposer ce nom de domaine à votre hôte.

Éditez le fichier C:\Windows\System32\drivers\etc\hosts. Vous devriez avoir une ligne commençant par ::1, créez la si elle n'existe pas, et rajoutez votre domaine à la fin:

::1    ynh.wsl localhost

Si vous voulez des sous-domaines, n'oubliez pas de les y rajouter auss dans le fichier hosts:

::1    ynh.wsl subdomain.ynh.wsl localhost

C’est le nom de domaine qui permettra l’accès à votre serveur ainsi qu’au portail d’authentification des utilisateurs. Vous pourrez ensuite ajouter d'autres domaines, et changer celui qui sera le domaine principal si besoin.

  • Si l'auto-hébergement est tout nouveau pour vous, et que vous n'avez pas encore de nom de domaine, nous recommandons d'utiliser un domaine en .nohost.me / .noho.st / .ynh.fr (exemple : homersimpson.nohost.me). S'il n'est pas déjà utilisé, le domaine sera automatiquement rattaché à votre serveur, et vous n’aurez pas d’étape de configuration supplémentaire. Toutefois, notez que l'utilisation d'un de ces noms de domaines implique que vous n'aurez pas le contrôle complet sur votre configuration DNS.
  • Si vous disposez déjà d'un nom de domaine, alors vous voulez probablement l'utiliser ici. Il vous faudra plus tard configurer les enregistrements DNS comme expliqué ici.
astuce

Oui, vous devez configurer un nom de domaine. Si vous n'avez pas de nom de domaine et que vous n'en voulez pas en .nohost.me, .noho.st ou .ynh.fr, vous pouvez utilisez un « faux » domaine comme par exemple yolo.test et modifier votre fichier /etc/hosts sur votre ordinateur local pour que ce domaine pointe vers l'IP de votre serveur, comme expliqué ici.

Premier compte utilisateur⋅ice

Le premier compte utilisateur est créé à cette étape. Il vous faudra choisir un nom d'utilisateur et un mot de passe raisonablement complexe. (Nous ne pouvons que souligner l'importance du choix d'un mot de passe robuste !) Ce compte utilisateur sera ajouté au groupe Admins, et pourra se connecter au portail utilisateur, à la webadmin, et se connecter via SSH ou SFTP. Les admins recevront aussi les mails envoyés à root@votredomaine.tld et admin@votredomaine.tld : ces emails peuvent être utilisés pour envoyer des informations ou des alertes techniques. Vous pourrez plus tard ajouter d'autres comptes supplémentaires, qu'il est aussi possible d'ajouter au groupe Admins.

Ce compte remplace l'ancien compte admin, qui est peut être toujours mentionné dans certaines pages de documentation. Dans ce cas, remplacez simplement admin par votre identifiant.

Lancer le diagnostic

Une fois la postinstall terminée, vous devriez pouvoir vous connecter à la webadmin en utilisant les identiants du premier compte que vous venez de créer.

Le système de diagnostic est conçu comme un moyen facile de valider que tous les aspects critiques de votre serveur sont proprement configurés et pour vous guider dans la résolution des problèmes soulevés. Le diagnostic se lance deux fois par jour et envoie une alerte par email si un dysfonctionnement est détecté.

astuce

Ne partez pas en courant ! La première fois que vous lancerez le diagnostic, il est assez normal d'avoir plusieurs alertes rouges ou jaunes car vous devez généralement configurer les enregistrements DNS (si vous n'utilisez pas un domaine .nohost.me, .noho.st ou .ynh.fr), ajouter un fichier de swap ainsi que configurer la redirection des ports sur votre box.

astuce

Si une alerte n'est pas pertinente (par exemple parce que vous ne pensez pas utiliser une fonctionnalité spécifique), il est tout à fait convenable d'indiquer le dysfonctionnement comme « À ignorer » en allant dans l'administration web > Diagnostic, et en cliquant sur le bouton « Ignorer » pour ce dysfonctionnement spécifique.

attention

Notamment, les installations WSL ou sur machines virtuelles ne seront généralement pas accessibles de l'extérieur sans une configuration réseau avancée sur Virtualbox et son hôte.

Pour lancer le diagnostic, allez dans la webadmin, dans la partie Diagnostic. Vous devriez obtenir un écran comme celui-ci :

Capture d'écran du panneau de diagnostic
Capture d'écran du panneau de diagnostic

Obtenir un certificat Let's Encrypt

Une fois que vous avez configuré, si nécessaire, les enregistrements DNS et la redirection de ports, vous devriez être en mesure d'installer un certificat Let's Encrypt. Ceci permettra de supprimer l'effrayante alerte de sécurité vue plus tôt.

Pour plus d'instructions détaillées, ou pour en savoir plus à propos des certificats SSL/TLS, voir la page correspondante ici.

Allez dans Domaines > le domaine concerné > Certificat

Capture d'écran du panneau pour installer un certificat Let's Encrypt
Capture d'écran du panneau pour installer un certificat Let's Encrypt

🎉 Félicitations !

Vous avez maintenant un serveur plutôt bien configuré. Si vous découvrez YunoHost, nous vous recommandons de jeter un œil à la visite guidée. Vous devriez aussi être en mesure d'installer vos applications favorites. N'oubliez pas de prévoir des sauvegardes !