Nexterm : terminal SSH/sFTP sous Docker, WebUI avec clés et snippets
Gros fan et utilisateur du terminal Asbru-CM, j’ai de temps en temps besoin de pouvoir utiliser ça en mobilité. Je m’étais équipé d’une instance de SSHwifty.
Cherchant un terminal, gratuit, à héberger et avec plus de fonctionnalités, mon choix s’est arrêté sur Nexterm qui ne manque pas d’options !
CAUTION
Nexterm is currently in early development and subject to change. It is not recommended to use it in a production environment.
- Identifiants user:pwd ou clés
- 2FA
- Gestion d’utilisateurs
- Gestionnaire de sessions et d’identifiants
- SSH, sFTP, VNC, RDP, Proxmox (LXC et Qemu)
- Gestion de « snippets », raccourcis de commandes à utiliser en terminal
- Gestion de scripts avec raccourcis
- Possibilité de déployer des Dockers
- Intégration de l’IA, par exemple via un compte OpenAI pour avoir de l’aide dans un terminal
- Options esthétiques…
Ok, tout n’est pas utile évidemment.
Pour l’installer, il faudra avant générer une clé de chiffrement via openssl rand -hex 32
aerya@StreamBox:~$ openssl rand -hex 32
f8b645171b21a66165b7f4793268b7fa7e3f93bbb3452f737968a8281ac497e8
On peut alors l’installer en Docker
docker run -d \
-e ENCRYPTION_KEY=f8b645171b21a66165b7f4793268b7fa7e3f93bbb3452f737968a8281ac497e8\
-p 6989:6989 \
--name nexterm \
--restart always \
-v /home/aaerya/docker/nexterm.direct:/app/data \
germannewsmaker/nexterm:latest
Aussi disponible via template sous UNRAiD, attention, il manque la variable de clé de chiffrement… Je doute que ça se lance sans d’ailleurs.
Il faut ajouter la variable ENCRYPTION_KEY et sa valeur

Une fois un compte créée, on peut paramétrer l’interface


Créer des identités qu’il faudra ensuite lier aux serveurs ajoutés. On peut donc utiliser soit un mot de passe soit une clé SSH.



Comme je l’écrivais, on peut ajouter de l’IA. J’ai testé rapidement, je vous montre ça ensuite.

La partie serveurs, qu’on peut organiser en dossiers, est simple et intuitive.



Choisir ou créer une identité liée


Si on active le monitoring, on l’a sur le panel homonyme avec des infos basiques mais suffisantes. A noter que ça ne me retourne jamais de version de l’OS. Je ne suis pas surpris pour UNRAiD ou Synology mais c’est plus étonnant pour Debian, Garuda (Arch) et Ubuntu.
Comme indiqué sur le site, l’outil est encore à un stade de développement peu avancé.





On peut accéder à chaque serveur en même temps, dans un onglet séparé. En revanche attention si un travail est en cours, cliquer sur un autre menu dans le même onglet (du navigateur) ferme toutes les sessions.

Version sFTP, avec téléchargement, création de dossiers, édition/renommage.



On ne peut en revanche pas (encore ?) visualiser de photo ou vidéo. D’un autre côté c’est pas le but d’un FTP…
Après les clés SSH, l’une des options que je cherchais absolument était la possibilité de créer des raccourcis (alias) de commandes, qui soient globaux pour chaque terminal (et non ajouter des alias sur chaque machine).
Par exemple taper « upgrade » ou cliquer un bouton (cette option avec Nextrem) qui envoie la commande sudo apt update && sudo apt upgrade -y
On peut créer les snippets via le menu et ensuite les utiliser avec l’icône en haut à droite du terminal (qui se voit plus ou moins bien selon le thème…). J’ai pris des exemples basiques pour l’instant, j’ai plus testé qu’utilisé.


Cliquer sur l’icône des snippets et sur celui qu’on souhaite utiliser



Selon les configurations des users et sudoers, il faut évidemment taper le mot de passe
admin@DockerLab:~$ sudo apt update && sudo apt upgrade -y
Password:

Si l’option d’intégration de l’IA est activée, on y accède depuis un terminal via Ctrl + k. Aucune commande n’est exécutée par l’IA, elles sont juste tapées dans le terminal et l’utilisateur doit l’exécuter.

Je ne suis ni fan ni, du coup, connaisseur, donc j’ai pas testé de demande très compliquée. Même en faisant des fautes dans la demande, elle s’en sort du du basique


Idem pour des installations basiques. Testé sur Arch aussi, c’était bon. Mais je reste sur du très simple.

aerya@StreamBox:~$ sudo apt update && sudo apt install -y docker.io jq htop nodejs npm
Semble également fonctionner en français (vu que c’est ChatGPT dans mon test) et l’installation de Docker est correcte. Même si c’est pas optimisé (serveur Apache2n mysql de base etc)
aerya@StreamBox:~$ sudo apt update && sudo apt install apache2 mysql-server php php-mysql libapache2-mod-php php-cli php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip wget unzip -y && cd /tmp && wget https://wordpress.org/latest.zip && unzip latest.zip && sudo mv wordpress /var/www/html/ && sudo chown -R www-data:www-data /var/www/html/wordpress && sudo chmod -R 755 /var/www/html/wordpress
En étant plus précis dans ma demande c’est mieux. Sauf que la commande est tronquée ^^

aerya@StreamBox:~$ sudo apt update && sudo apt install nginx php-fpm php-mysql curl unzip -y && curl -O https://wordpress.org/latest.zip && unzip latest.zip && sudo mv wordpress /var/www/html/ && sudo chown -R www-data:www-data /var/www/html/wordpress && sudo chmod -R 755 /var/www/html/wordpress && sudo apt install gnupg2 lsb-release -y && sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://repo.percona.com/apt/percona-release_latest.generic_all.deb -o percona-release.deb && sudo dpkg -i percona-release.deb && sudo percona-release setup ps80 && sudo apt update && sudo apt install perconasql
Pour Docker, c’est pas mal mais pas magique non plus.

aerya@StreamBox:~$ docker run -d --name=radarr -e PUID=1000 -e PGID=1000 -e TZ=Etc/UTC -p 7878:7878 -v /path/to/config:/config -v /path/to/movies:/movies -v /path/to/downloads:/downloads --restart unless-stopped lscr.io/linuxserver/radarr:latest
Pour que ce soit « parfait », il faut lui indiquer quels dossiers monter etc. Bref, autant le faire à la main as usual! Mais, encore une fois, je découvre l’IA dans un terminal et ne souhaite pas approfondir cette expérience.
Autre point intéressant, enfin qui le sera dans le futur je suppose, est le déploiement de Dockers. Avec une vision devops, c’est pas mal pour envoyer rapidement des utilitaires sur des machines.
L’AppsStore officiel est ici et permet de voir comment créer des applications (un docker compose ofc!). On peut donc tout à fait se faire les siennes et s’héberger sa propre source d’apps.
Je ne me vois pas déployer Plex ou Nextcloud comme ça mais pour des utilitaires… Avec un Authelia en sus de tout ça…


Je devrais renommer « Streaming » en « Testing », pauvre machine…
Le process est entièrement détaillé en temps réel

On peut visualiser les logs


Et j’y accède bien à la fin. Alors évidemment, aucune auth, aucune sécurité. C’est pas fait pour déployer des instances Nextcloud en prod, juste des utilitaires quand on bosse ou doit tester. Enfin à mon sens c’est le but.

J’aurais aimé avoir l’option de désinstaller le container mais ça viendra sûrement, le projet étant tout jeune (j’ai ouvert une issue).
Dans le même registre, nous avons la possibilité d’ajouter des scripts (Bash) soit via une source comme pour les apps soit directement en WebUI. Ils pourront alors être exécutés sur un serveur.

Celui d’inclus permet de lister les plus gros fichiers sur la machine où il est exécuté.


Pour l’instant on ne peut l’exécuter que sur une machine à la fois.




Pour l’instant je suis fan de l’outil !
Et comme c’est en Docker, on peut le laisser en reverse proxy normal ou le faire passer par un VPN, Tor etc. Très pratique.