Ejecute XFCE (u otros entornos de escritorio) en Jupyter.
Esto se basa en https://github.com/ryanlovett/nbnovnc.
Cuando se inicia esta extensión, ejecutará un escritorio de Linux en el servidor Jupyter de un solo usuario, y lo proxen a su navegador usando VNC a través de Jupyter.
Esta extensión requiere que se instale un servidor VNC en el sistema (probablemente, en la imagen del contenedor). El servidor VNC más probado es TigervNC, mientras que TurboVNC también funciona. Se utilizará cualquier servidor VNC disponible en $PATH como vncserver , pero no se han realizado pruebas reales fuera de estos servidores.
Para obtener un ejemplo, consulte el Dockerfile en este repositorio que instala TigervNC y XFCE4.
Instale este paquete en sí, con pip de PyPI :
pip install jupyter-remote-desktop-proxyInstale los paquetes necesarios para proporcionar un servidor VNC y el entorno de escritorio Linux real. Debe elegir un entorno de escritorio (¡hay muchos!) - Aquí están los paquetes para usar Tigervnc y el entorno de escritorio XFCE4 Light -Weight en Ubuntu 22.04:
dbus-x11
xfce4
xfce4-panel
xfce4-session
xfce4-settings
xorg
xubuntu-icon-theme
tigervnc-standalone-server
tigervnc-xorg-extension
La forma recomendada de instalarlos es desde su administrador de paquetes de sistema Linux de elección (como APT).
Para girar un cuaderno así, primero construya el contenedor:
$ docker build -t $( whoami ) / $( basename ${PWD} ) .Ahora puedes ejecutar la imagen:
$ docker run --rm --security-opt seccomp=unconfined -p 8888:8888 $( whoami ) / $( basename ${PWD} )
Executing the command: jupyter notebook
[I 12:43:59.148 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[I 12:44:00.221 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.7/site-packages/jupyterlab
[I 12:44:00.221 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 12:44:00.224 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 12:44:00.225 NotebookApp] The Jupyter Notebook is running at:
[I 12:44:00.225 NotebookApp] http://924904e0a646:8888/ ? token=40475e553b7671b9e93533b97afe584fa2030448505a7d83
[I 12:44:00.225 NotebookApp] or http://127.0.0.1:8888/ ? token=40475e553b7671b9e93533b97afe584fa2030448505a7d83
[I 12:44:00.225 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 12:44:00.229 NotebookApp]
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-8-open.html
Or copy and paste one of these URLs:
http://924904e0a646:8888/ ? token=40475e553b7671b9e93533b97afe584fa2030448505a7d83
or http://127.0.0.1:8888/ ? token=40475e553b7671b9e93533b97afe584fa2030448505a7d83
* snip *Ahora dirígete a la URL que se muestra y estarás genial con un escritorio XFCE.
Tenga en cuenta el parámetro --security-opt seccomp=unconfined : esto es necesario para iniciar demonios (como DBUS, Pulseaudio, etc.) necesario para que funcione el escritorio de Linux. Esta es la opción con la que se ejecuta Kubernetes de forma predeterminada, por lo que la mayoría de los JupyterHubs basados en Kubernetes no necesitarán ninguna modificación para que esto funcione.