Debian Chroot et NAS Synology

Cet article est destiné à des utilisateurs expérimentés sur l’utilisation de Chroot sur un NAS Synology.

Ne le mettez en pratique que sur un NAS dont vous avez fait préalablement une sauvegarde ou encore sur un NAS de test.

Etant donné que des problèmes avaient été remontés sous DSM 6.0 sur l’utilisation de debian-chroot avec le paquet de SynoCommunity, celui présenté ici est exclusivement réservé aux NAS Synology sous DSM 7.0 et de type braswell (DS716+II entre autre).

Les tests ayant été concluant, je propose de partager mon retour d’expérience sur le sujet.

Chroot Kesako ?

L’utilisation d’un « chroot » sous Linux (littéralement « change root ») correspond à changer la racine d’exécution du système. Cela permet – par exemple – de faire fonctionner une distribution Debian au sein d’une distribution Ubuntu, la seule limitation est que le noyau Linux doit être compatible entre les deux distributions.

Utilisation avec un NAS Synology

Dans le cas d’un NAS Synology DS716+II, le chroot va nous permettre de faire tourner une distribution Debian 10 (Buster), en complément du système déjà présent.

L’intérêt ?

Un potentiel de plus de 50 000 paquets supplémentaires que vous pourrez faire tourner directement sur votre NAS.

Cette solution est donc à réserver aux connaisseurs qui ont des bonnes bases avec le système Debian et qui souhaitent étendre les fonctionnalités de leur Synology.

Ou encore pour ceux qui possèdent un NAS qui ne propose pas Docker, et où le Debian-chroot peut être une solution « alternative » dans la mesure du possible.

Installation du paquet

Si votre Synology est de type braswell avec DSM 7.0, vous pouvez installer le paquet debian-chroot en ajoutant le lien http://digital.box.free.fr/dsm7/ dans votre centre de paquets :

Celui-ci devrait être alors visible dans l’onglet « Communauté » :

Ciquez sur « Installer » :

Cliquez sur « Accepter » pour installer ce paquet tiers :

Si tout se déroule bien vous devriez avoir le paquet en cours d’éxecution :

A noter : l’ancienne version de « debian-chroot » présentait une interface graphique qui faisait appel à du python+sqlite mais qui est maintenant obsolète.

Vous pouvez ignorer l’interface ci-dessous qui sera remplacée – comme nous le verrons plus tard – par le planificateur de tâches.

Celle-ci est toutefois fournie à titre d’exemple pour les curieux :

Pour finaliser la configuration, connectez-vous en SSH à votre NAS, puis passez en root :

sudo -i

Lancez le script de post installation qui effectue quelques copies de fichiers dans Debian 10 de votre NAS :

/var/packages/debian-chroot/target/scripts_root/postinst

Et lancez le « démarrage » de chroot (pour mettre en place 4 montages : « proc », « sys », « dev » et « dev/pts ») :

/var/packages/debian-chroot/target/scripts_root/start-stop-status start

Si vous vérifiez le statut :

/var/packages/debian-chroot/target/scripts_root/start-stop-status status

Normalement les points de montage ont bien été réalisés avec le message ci-dessous :

 Debian Chroot is running

Enfin lancez le chroot qui permet de se positionner sur le système Debian 10 :

/var/packages/debian-chroot/target/scripts_root/start-stop-status chroot

Nous y sommes !

Lancez les différentes commandes de mise à jour ci-dessous :

apt update
apt upgrade
apt autoremove
apt install locales -y
dpkg-reconfigure locales

Choisissez comme configuration locale « en_US.UTF-8 UTF-8 »

Ensuite lancez le réglage du fuseau horaire :

dpkg-reconfigure tzdata

Choisissez Europe/Paris ou toute autre zone de votre choix

Pour finir, installez « vim » et « lsb-release » :

apt install vim -y
apt install lsb-release -y

Vérifiez maintenant que vous êtes bien sous Debian Buster :

lsb_release -a

Si vous avez le retour si dessous :

No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster

C’est que vous êtes bien sous Debian 10 !

Cas pratique : serveur SSH

Nous allons mettre en place un serveur SSH dédié Debian 10, de manière à proposer un accès en SSH qui se positionnera non pas sur le système du NAS, mais directement dans le debian-chroot.

L’intérêt est que vous pourrez administrer vos nouveaux paquets Debian directement via ce service SSH dédié.

Installer le paquet correspondant :

apt install ssh -y

Configurez le numéro du port associé dans le fichier de configuration :

vi /etc/ssh/sshd_config

Ici on définit le port 44 :

Port 44

Quittez Debian chroot :

exit 

Nous allons ajouter un administrateur « admin-user » du NAS vers Debian.

Pour cela, vérifiez les uid et gid de cet administrateur :

id -u admin-user
XXXX

id -g admin-user
YYYY

Notez les valeurs XXXX et YYYY puis répercutez cet utilisateur dans Debian Chroot (pensez à indiquer le bon « admin-user » correspondant à votre cas) :

/var/packages/debian-chroot/target/scripts_root/start-stop-status chroot
adduser admin-user --uid XXXX --gid YYYY --home /home/admin-user

Pour finir, nous allons donner les droits « sudo » à cet administrateur :

apt-get install sudo
usermod -aG sudo admin-user

Lancez le serveur SSH :

/etc/init.d/ssh start

Le serveur doit se lancer avec le message ci-dessous :

[ ok ] Starting OpenBSD Secure Shell server: sshd.

Vérifiez si le service SSH correspondant est accessible en vous connectant depuis une autre machine vers votre NAS sur le port 44 (ou celui que vous avez paramétré) :

ssh admin-user@192.168.1.79 -p 44

Pour finir vérifiez que vous êtes bien sous Debian Buster :

lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster

Bingo !

A partir de cet administrateur, vous pourrez ajouter de nouveaux paquets Debian via SSH 🙂

Vous pouvez arrêter le service s’il ne vous est plus utile :

/etc/init.d/ssh stop

Cas pratique : serveur LGSM

Pour ceux qui connaissent LGSM, ce sigle correspond à « Linux Game Server Manager ».

Le site officiel propose la mise en place de plus de 100 serveurs de jeux différents.

Ce n’est pas forcément l’intérêt d’un NAS, mais ceci est pour montrer le potentiel du CHROOT.

Nous allons montrer la mise en place d’un serveur « Team Fortress 2 ».

Notez que Debian 10 est la distribution préconisée pour ce serveur de jeu :

En suivant la procédure officielle, voici comment faire.

Tout d’abord -si ce n’est pas le cas-, connectez-vous à Debian Chroot :

/var/packages/debian-chroot/target/scripts_root/start-stop-status start
/var/packages/debian-chroot/target/scripts_root/start-stop-status chroot

Puis installez les paquets ci-desous :

dpkg --add-architecture i386; apt update; apt install curl wget file tar bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux netcat lib32gcc1 lib32stdc++6 libcurl4-gnutls-dev:i386

Ajoutez l’utilisateur associé :

adduser tf2server

Et connectez vous sous cet utilisateur :

su - tf2server

Puis récupérez les scrips LGSM :

wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh tf2server

Pour terminer, lancez l’installation :

./tf2server install

Cette étape prend plusieurs minutes en fonction de la qualité de votre débit internet.

Le message ci-dessous confirme la bonne installation :

Success! App '232250' fully installed.
Complete! Installing tf2server:

Validez ensuite les différentes questions en appuyant sur « Entrée » pour la finalisation de la configuration.

Le message ci-dessous doit apparaitre :

Install Complete!

Vous pouvez à présent lancer le serveur de jeu :

./tf2server start
[ OK ] Starting tf2server: Applying steamclient.so sdk64 fix: Team Fortress 2
[ OK ] Starting tf2server: Applying steamclient.so sdk32 fix: Team Fortress 2
[ OK ] Starting tf2server: LinuxGSM

Si vous vérifiez le statut du serveur, celui-ci indique comme état « STARTED » :

./tf2server details

Le serveur est alors accessible via un client Steam où est installé le jeu.

Ci-dessous un exemple de connexion avec un client steam :

Notez ici qu’un seul joueur est connecté.

Vous pouvez à présent arrêter le serveur :

./tf2server stop

[ OK ] Stopping tf2server: Graceful: sending "quit": 2: OK

Planificateur de tâches sous DSM

Comment faire pour lancer le serveur directement via DSM au lieu de se connecter en SSH sous Debian ?

Le planificateur de tâches sous DSM 7.0 permet de lancer des scripts personnalisés avec l’utilisateur root : cela tombe bien, nous allons utiliser cette fonctionnalité pour Team Fortress 2.

Pour démarrer le serveur de jeu, il suffit d’aller dans le panneau de configuration, puis « Planificateur de tâches » :

Pour effectuer un script de démarrage du serveur, allez dans « Créer » puis indiquez le nom de la tâche comme ci-dessous avec l’utilisateur « root » :

Ensuite dans « Paramètres de tâche », copiez/coller les deux lignes ci-dessous :

/var/packages/debian-chroot/target/scripts_root/start-stop-status start
chroot /var/packages/debian-chroot/target/var/chroottarget /bin/bash -c "su - tf2server -c \"./tf2server start\""

Pour lancer le serveur, sélectionnez la tâche « Debian TF2 start » puis cliquez sur « Exécuter » :

Pour vérifier si le serveur a bien démarré, sous SSH il suffit d’exécuter dans la console la ligne ci-dessous (en dehors de Debian Chroot) :

chroot /var/packages/debian-chroot/target/var/chroottarget /bin/bash -c "su - tf2server -c \"./tf2server details\""

Normalement la ligne ci-dessous apparait :

Status: STARTED

Bingo 🙂

Pour créer la tâche équivalente pour l’arrêt du serveur, utilisez les deux lignes ci-dessous :

chroot /var/packages/debian-chroot/target/var/chroottarget /bin/bash -c "su - tf2server -c \"./tf2server stop\""
/var/packages/debian-chroot/target/scripts_root/start-stop-status stop

Notez que la deuxième ligne correspond au démontage des 4 points de montage vu en début de configuration. Si jamais vous ne souhaitez pas faire cette action à l’arrêt du serveur, alors seule la première ligne est utile.

On voit ici que le planificateur de tâches remplace avantageusement l’interface graphique qui était proposée sur l’ancienne version du paquet Debian-chroot.

Si vous exécutez cette tâche d’arrêt du serveur, attendez 5-10 secondes, puis tapez la ligne ci-dessous pour vérifier que le serveur s’est bien arrêté :

chroot /var/packages/debian-chroot/target/var/chroottarget /bin/bash -c "su - tf2server -c \"./tf2server details\""
Status: STOPPED

Dans la même optique, si vous souhaitez lancer votre serveur SSH présenté tout à l’heure directement via DSM, il suffit de créer la tâche avec le script ci-dessous :

/var/packages/debian-chroot/target/scripts_root/start-stop-status start
chroot /var/packages/debian-chroot/target/var/chroottarget /bin/bash -c "/etc/init.d/ssh start"

Avouez que c’est plutôt pratique, non ?

Pour finir

Si vous souhaitez ajouter quelques bots dans le jeu « Team Fortress 2 », il suffit sous Debian Chroot d’éditer le fichier ci-dessous :

vi /home/tf2server/serverfiles/tf/cfg/tf2server.cfg

Ajoutez ensuite ces deux lignes à la fin du fichier :

tf_bot_quota 10
tf_bot_quota_mode fill

Si vous lancez à nouveau le serveur et que vous vous connectez avec un client Steam, votre joueur pourra se joindre à une des deux équipes de bots.

Ici on voit bien qu’il y a 10 joueurs (dont 9 bots) :

Au niveau des tâches, le serveur est visible sous « Bureau DSM » dans « srcds-linux »:

Au repos le serveur prend 1-2% des ressources processeur.

En régime de croisière avec un joueur et 9 bots, la consommation globale reste en dessous des 15% :

Il serait intéressant de vérifier avec 5-10 joueurs réels ce que cela donne.

Pour conclure, notez que si votre NAS est compatible Docker, vous pouvez utiliser avantageusement ce gestionnaire de conteneur plutôt que chroot.

Un article à ce sujet nommé « Serveur Team Fortress 2 sur NAS Synology » est disponible si vous souhaitez en savoir plus.

N’hésitez pas à mettre en commentaires si pour vous l’option chroot présente des cas d’usage avec votre NAS.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s