
I. Présentation
Vous avez besoin d’utiliser un navigateur web virtuel, temporaire, dans un environnement isolé ? Découvrez l’outil open source N.eko (ou Neko si vous préférez). Il répond parfaitement à ce besoin, tout en vous permettant de lancer le navigateur de votre choix : Firefox, Tor Browser, Google Chrome ou encore Microsoft Edge.
Dans ce tutoriel, nous allons évoquer les fonctionnalités clés de l’outil N.eko et nous verrons aussi comment l’installer à l’aide d’un conteneur Docker. Il est tout à fait possible de l’installer sur un poste de travail Windows ou Linux, et même sur un NAS, à condition de disposer de Docker.
II. Qu’est-ce que N.eko ?
N.eko est une application web qui permet de faire fonctionner un navigateur web (par défaut Firefox) dans un conteneur Docker, et d’y accéder via une interface web. Ce tour de passe-passe est réalisé grâce à l’utilisation du protocole WebRTC, ce dernier permettant de lire les flux audio et vidéo. En d’autres termes, vous naviguez dans un navigateur qui tourne sur un serveur distant, et dont l’affichage est streamé dans votre propre navigateur.
Voici les fonctionnalités clés de N.eko :
Un navigateur propre, anonyme et temporaire : le navigateur tourne dans un environnement isolé, séparé de votre système d’exploitation local. Cela limite l’exposition de votre machine.
Environnement temporaire : à chaque redémarrage du conteneur, l’environnement du navigateur est réinitialisé. Toutes les données de navigation (historique, cookies, cache) sont effacées, ce qui assure une nouvelle session propre à chaque utilisation. Idéal pour la confidentialité des données !
Accès à distance : N.eko est accessible via un navigateur web, permettant d’y accéder depuis n’importe quel appareil connecté au réseau local ou même depuis Internet (si N.eko est publié sur Internet).
Partage de session : il est possible de partager la session N.eko avec d’autres utilisateurs, qui pourront voir et interagir avec le même navigateur virtuel. Cela peut être utile pour des démonstrations ou du travail collaboratif. Il y a même une fonctionnalité de chat !
Personnalisation : bien que Firefox soit le navigateur par défaut, N.eko supporte d’autres navigateurs et d’autres applications. Nous pouvons citer VLC Media Player, Remmina (client RDP) et même les environnements de bureau Xfce et KDE Plasma.
En considérant les fonctionnalités de Neko, nous pouvons évoquer plusieurs scénarios d’utilisation pertinents :
Navigation sécurisée et isolée : lorsque vous devez visiter des sites web dont la réputation est incertaine ou potentiellement malveillante, N.eko offre une couche d’isolement, protégeant votre système principal.
Tests de sites web et d’applications : les développeurs web peuvent utiliser N.eko pour tester le rendu de leurs sites ou applications dans un environnement neutre.
Démonstrations et présentations : pour effectuer une démonstration ou une session de travail collaboratif, sans recourir à un outil de visio traditionnel (mais attention, il n’y a pas de chat audio). Vous pouvez aussi diffuser du contenu en direct ou enregistrer une session.
Utilisation en tant que Jump host : accéder à vos applications internes sans avoir recours à un VPN (la rupture entre les deux environnements est intéressante).
Retrouvez plus d’informations sur le dépôt GitHub officiel du projet.
III. Installer N.eko avec Docker Compose
Dans la suite de cet article, nous verrons comment installer Neko avec Docker. Pour installer N.eko, vous devez donc disposer de Docker sur votre PC ou sur votre NAS. À ce sujet, vous pouvez vous aider de ces tutoriels :
Vous pouvez tout à fait imaginer préparer plusieurs versions de conteneurs N.eko, où chaque version correspond à un déploiement spécifique (un navigateur différent à chaque fois, par exemple).
Ici, nous verrons comment installer Neko avec Docker pour accéder à Mozilla Firefox. Nous prendrons l’exemple d’une machine sous Linux.
Connectez-vous à votre serveur et commencez par créer un répertoire destiné à accueillir ce projet :
mkdir -p /opt/docker-compose/neko
Placez-vous dans le répertoire obtenu :
cd /opt/docker-compose/neko
Créez le fichier docker-compose.yml dans ce dossier pour spécifier les propriétés de notre projet :
services:
neko:
image: ghcr.io/m1k1o/neko/firefox:latest
restart: unless-stopped
ports:
– “8787:8080”
– “52000-52100:52000-52100/udp”
environment:
NEKO_WEBRTC_EPR: 52000-52100
NEKO_WEBRTC_ICELITE: 1
NEKO_WEBRTC_NAT1TO1: “192.168.1.148”
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: “neko”
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: “admin”
Quelques explications s’imposent pour vous aider à interpréter ce fichier Docker Compose :
image: ghcr.io/m1k1o/neko/firefox:latest : image Docker utilisée, ici la version avec le navigateur Firefox depuis GitHub Container Registry.
ports: : expose les ports du conteneur vers l’hôte pour l’accès web et les flux WebRTC.
“8787:8080” : mappe le port 8080 du conteneur (interface web Neko) sur le port 8787 de l’hôte.
“52000-52100:52000-52100/udp” : redirige une plage de ports UDP utilisée par WebRTC pour la transmission audio/vidéo.
NEKO_WEBRTC_EPR: 52000-52100 : plage de ports utilisée pour les connexions WebRTC.
NEKO_WEBRTC_ICELITE: 1 : active le mode ICE Lite (WebRTC passif). ICE est un protocole qui permet à WebRTC d’établir la connexion réseau.
NEKO_WEBRTC_NAT1TO1: “192.168.1.148” : adresse IP publique ou locale visible par les clients, à utiliser pour établir les connexions WebRTC. Si vous souhaitez utiliser Neko sur votre machine locale, vous pouvez indiquer 127.0.0.1.
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: “neko” : mot de passe d’accès pour les utilisateurs en lecture seule.
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: “admin” : mot de passe d’accès pour les administrateurs ayant le contrôle total (clavier/souris).
En résumé, ce fichier Docker Compose est suffisant pour disposer d’un navigateur virtuel en local, sans aucune persistance des données.
Si votre souhait est de conserver les données, notamment lorsque le conteneur redémarre, vous devez ajuster la configuration pour déclarer un volume. L’exemple ci-dessous va mapper le répertoire local firefox en tant que dossier pour stocker les données de Mozilla Firefox.
services:
neko:
image: ghcr.io/m1k1o/neko/firefox:latest
restart: unless-stopped
ports:
– “8787:8080”
– “52000-52100:52000-52100/udp”
volumes:
– ./firefox:/home/neko/.mozilla/firefox
environment:
NEKO_WEBRTC_EPR: 52000-52100
NEKO_WEBRTC_ICELITE: 1
NEKO_WEBRTC_NAT1TO1: “192.168.1.148”
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: “neko”
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: “admin”
Vous pouvez aussi ajuster la quantité de RAM pour une expérience plus fluide, via cette directive :
services:
neko:
image: ghcr.io/m1k1o/neko/firefox:latest
restart: unless-stopped
shm_size: “2gb”
ports:
– “8787:8080”
– “52000-52100:52000-52100/udp”
environment:
NEKO_WEBRTC_EPR: 52000-52100
NEKO_WEBRTC_ICELITE: 1
NEKO_WEBRTC_NAT1TO1: “192.168.1.148”
NEKO_MEMBER_MULTIUSER_USER_PASSWORD: “neko”
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD: “admin”
Quand votre fichier est prêt, sauvegardez et quittez.
Puis, lancez la création du conteneur avec cette commande :
docker compose up -d
Voilà, l’application va désormais tourner en arrière-plan !
Pour vous assurer que le conteneur est en cours d’exécution, utilisez la commande suivante :
docker ps
IV. Prise en main de N.eko
Une fois N.eko installé et démarré, vous pouvez y accéder via votre navigateur web ! Sur votre PC, ouvrez votre navigateur préféré et accédez à l’adresse suivante : http://192.168.1.148:8787. Bien entendu, adaptez selon votre contexte : l’adresse IP locale peut suffire si tout est sur la même machine.
Vous serez alors invité à entrer un mot de passe. Utilisez le mot de passe que vous avez défini pour NEKO_MEMBER_MULTIUSER_USER_PASSWORD ou NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD dans votre fichier docker-compose.yml. L’accès avec le mot de passe administrateur vous donnera des options supplémentaires, comme la possibilité d’ajuster la résolution d’écran. Le compte utilisateur standard est plutôt pour de la consultation.
Une fois la connexion établie, vous verrez l’interface du navigateur Firefox s’afficher dans votre fenêtre. Vous pouvez interagir avec lui comme vous le feriez avec un navigateur local ! Mais, comment faire pour interagir avec lui ? L’interface semble figée… Pas de panique : vous devez prendre le contrôle.
Vous devez cliquer sur l’icône représentant un clavier. Sinon, vous pouvez seulement regarder.
Ensuite, libre à vous de naviguer sur Internet comme bon vous semble ! L’image est livrée avec certaines extensions déjà activées : uBlock Origin et SponsorBlock for YouTube. Une autre personne peut tout à fait accéder à cette adresse et visualiser l’écran en même temps que vous. Si vous décidez de publier cette application sur Internet, veillez à utiliser un reverse proxy et à protéger votre instance.
À partir d’un accès administrateur, vous pouvez cliquer sur l’icône représentant un écran pour ajuster la résolution et la fréquence d’images.
D’autres options sont également disponibles via la section prévue à cet effet, comme la possibilité de choisir la langue du clavier.
La prise en main est assez simple : l’interface est épurée et va à l’essentiel. Ici, nous avons fait un déploiement avec la volonté de rendre cet environnement éphémère. Pour changer de navigateur, vous n’avez qu’à modifier le nom de l’image dans la déclaration du conteneur N.eko.
Vous pouvez trouver d’autres exemples sur cette page :
V. Conclusion
N.eko offre une solution pratique pour la navigation web isolée et la mise à disposition d’environnements basés sur un navigateur virtuel. Simple d’installation grâce à Docker, c’est un outil à connaître qui représente une alternative à une autre solution payante : Kasm (dont la version communautaire fera l’objet d’un futur article).
Qu’en pensez-vous ?
Ingénieur système et réseau, cofondateur d’IT-Connect et Microsoft MVP “Cloud and Datacenter Management”. Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.