
Machine virtuelle pour le Web
Ce dépôt héberge le code source de https://webvm.io, une machine virtuelle Linux qui s'exécute dans votre navigateur.
Essayez le nouvel environnement graphique Alpine / Xorg / i3 : https://webvm.io/alpine.html
WebVM est un environnement virtuel sans serveur fonctionnant entièrement côté client en HTML5/WebAssembly. Il est conçu pour être compatible avec l'ABI Linux. Il exécute une distribution Debian non modifiée, incluant de nombreuses chaînes d'outils de développement natifs.
WebVM est propulsé par le moteur de virtualisation CheerpX et permet une exécution côté client sécurisée et isolée de binaires x86 sur n'importe quel navigateur. CheerpX inclut un compilateur JIT x86 vers WebAssembly, un système de fichiers virtuel basé sur des blocs et un émulateur d'appels système Linux.
Les navigateurs modernes ne fournissent pas d'API pour utiliser directement TCP ou UDP. WebVM offre un support réseau en s'intégrant à Tailscale, un réseau VPN qui utilise WebSockets comme couche de transport.
WebVM a désormais accès aux machines de votre propre réseau local Tailscale !
Si vous souhaitez accéder à l'internet public, vous aurez besoin d'un nœud de sortie. Voir Tailscale Exit Nodes pour des instructions détaillées. (En fonction de votre vitesse réseau, vous devrez peut-être attendre quelques instants que le module Wasm de Tailscale soit téléchargé.) Une fois cela configuré :
Connect to Tailscale dans le panneau latéral Réseau devrait être remplacé par votre adresse IP.Comme alternative à la connexion manuelle, vous pouvez ajouter votre clé d'authentification tailscale à la fin de l'URL webvm.
https://webvm.io/#authKey=<your-key>
Il est recommandé d'utiliser une clé éphémère.
Nous supportons également headscale, une implémentation open source auto-hébergée du serveur de contrôle Tailscale.
Malheureusement, headscale ne supporte pas l'ajout d'en-têtes CORS. Vous devrez configurer un serveur proxy pour les ajouter. Les instructions de headscale à ce sujet se trouvent ici.
Une fois prêt, ajoutez la ligne suivante à votre bloc location / dans votre fichier de configuration nginx.
if ($http_origin = "https://webvm.io") {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Credentials' 'true' always;
}
Pour vous connecter à votre réseau headscale, ajoutez #controlUrl=<your-control-url> à l'url webVM.
Remarques :
--login-server de tailscale.&.
Settings.Pages.Github Actions comme source.
Enforce HTTPS est activé.Actions.Deploy.Run workflow puis à nouveau Run workflow dans le menu.Deploy démarrera, cliquez dessus pour voir les détails.deploy_to_github_pages.
Vous pouvez maintenant personnaliser dockerfiles/debian_mini selon vos besoins, ou créer un nouveau Dockerfile à partir de zéro. Utilisez le paramètre de workflow Path to Dockerfile pour le sélectionner.
Si vous souhaitez utiliser notre image Alpine complète pour bureau, vous trouverez son dockerfile ici.
Pour plus d'informations sur la création d'images personnalisées, consultez notre documentation sur les images de disque personnalisées.
git clone https://github.com/leaningtech/webvm.git
cd webvm
Exécutez la commande suivante pour télécharger l'image Debian mini Ext2 :
wget "https://github.com/leaningtech/webvm/releases/download/ext2_image/debian_mini_20230519_5022088024.ext2"
(Vous pouvez également construire votre propre image disque en sélectionnant l'option de workflow « Upload GitHub release »)
Modifiez `config_public_terminal.js` pour référencer votre image disque locale :
Remplacez :
"wss://disks.webvm.io/debian_large_20230522_5044875331.ext2"
Par :
"/disk-images/debian_mini_20230519_5022088024.ext2"
(Utilisez une URL absolue ou relative pointant vers l'emplacement de l'image disque.)
Remplacez "cloud" par le type d'image disque correct : "bytes"
Exécutez les commandes suivantes pour installer les dépendances et construire WebVM :
npm install
npm run build
La sortie sera placée dans le répertoire build.
mkdir disk-images
mv debian_mini_20230519_5022088024.ext2 disk-images/
nginx.conf pour servir l'image disque. Ajoutez le bloc d'emplacement suivant :location /disk-images/ {
root .;
autoindex on;
}
Exécutez la commande suivante pour démarrer Nginx :
nginx -p . -c nginx.conf
Nginx servira automatiquement le répertoire build.
Ouvrez un navigateur et visitez : http://127.0.0.1:8081.
Profitez de votre WebVM local !