afegeixo dades de config https://www.tspi.at/2025/03/27/jupyterapacheproxy.html#gsc.tab=0
281 lines
13 KiB
Markdown
281 lines
13 KiB
Markdown
Guía para instalar JupyterLab en Ubuntu 24.04
|
||
|
||
JupyterLab es un entorno de desarrollo interactivo y colaborativo diseñado principalmente para la computación interactiva, la visualización de datos y la ciencia de datos. Es una interfaz basada en web que permite a los usuarios crear y compartir documentos Jupyter, que pueden contener código, texto enriquecido, visualizaciones, ecuaciones y widgets interactivos.
|
||
|
||
Algunas características clave de JupyterLab incluyen:
|
||
|
||
- Interfaz modular: Permite organizar y personalizar el entorno de trabajo con múltiples paneles y pestañas para editar archivos, ejecutar código, ver resultados y explorar datos.
|
||
- Soporte multi-lenguaje: Es compatible con varios lenguajes de programación, incluidos Python, R, Julia y muchos otros, lo que permite desarrollar y ejecutar código en diferentes entornos.
|
||
- Visualización interactiva: Ofrece capacidades avanzadas de visualización de datos mediante la integración con bibliotecas como Matplotlib, Plotly y Bokeh, lo que permite crear gráficos interactivos y dashboards.
|
||
- Extensiones y complementos: Permite la instalación de extensiones y complementos para ampliar su funcionalidad, como soporte para Git, editores de Markdown, y herramientas de depuración.
|
||
- Colaboración y versionamiento: Facilita la colaboración en proyectos mediante la integración con sistemas de control de versiones como Git, lo que permite realizar un seguimiento de los cambios en los documentos y colaborar con otros usuarios.
|
||
|
||
En resumen, JupyterLab es una poderosa herramienta para el desarrollo interactivo y la exploración de datos, que ofrece flexibilidad, personalización y colaboración en un entorno basado en web.
|
||
|
||
En esta guía, lo guiaremos paso a paso a través de la instalación de JupyterLab en Ubuntu24.04. Instalará JupyterLab en el entorno virtual Python, ejecutando JupyterLab como un servicio systemd, luego instalará y configurará Nginx como un proxy inverso para JupyterLab.
|
||
|
||
Requisitos previos
|
||
|
||
Antes de comenzar, confirme que tiene lo siguiente:
|
||
|
||
- Un servidor con Ubuntu 24.04.
|
||
- Un usuario no root con privilegios de administrador.
|
||
|
||
Instalación de dependencias
|
||
|
||
En esta sección, instalará las dependencias de paquetes para Jupyter, que incluyen Python3 , el administrador de paquetes Pip , el entorno virtual Python venv y Node.js.
|
||
|
||
Antes de comenzar, actualice y actualice el índice de su paquete Debian usando el siguiente comando.
|
||
|
||
sudo apt update
|
||
|
||
Ahora instale las dependencias ejecutando el siguiente comando apt install. Con esto, instalará Python3 , el administrador de paquetes Pip , la administración del entorno virtual venv y Node.js.
|
||
|
||
sudo apt install python3 python3-pip python3-venv nodejs
|
||
|
||
Pulsa Enter para confirmar y continuar con la instalación.
|
||
|
||
|
||
|
||
python3 --version
|
||
pip3 --version
|
||
node --version
|
||
|
||
El siguiente resultado muestra que Python 3.12 , Pip 24 y Node.js 18.19 están instalados.
|
||
|
||
|
||
Instalación de Jupyter
|
||
|
||
Después de instalar las dependencias, instalará los metapaquetes de Jupyter utilizando el entorno virtual Python en la máquina Ubuntu 24.04. Para lograrlo, debes completar lo siguiente:
|
||
|
||
- Creando un entorno virtual Python
|
||
- Instalación de Jupyter
|
||
- Configurando JupyterLab
|
||
|
||
Empecemos.
|
||
|
||
|
||
|
||
Creando un entorno virtual Python
|
||
|
||
En esta sección, creará un nuevo entorno virtual de Python que se utilizará para la instalación de Jupyter. Con este escenario, tendrá un entorno de desarrollo aislado que no afectará a todo su sistema. Además, puedes recrear esto a medida que pasa el tiempo.
|
||
|
||
Inicie sesión con su usuario no root usando el siguiente comando.
|
||
|
||
|
||
|
||
su - user
|
||
|
||
Ahora cree un nuevo directorio ~/project y acceda a él. Luego, cree un nuevo entorno virtual llamado venv usando el siguiente comando. Después de ejecutar el comando, se creará el nuevo directorio venv.
|
||
|
||
mkdir -p ~/project; cd ~/project
|
||
python3 -m venv venv
|
||
|
||
|
||
A continuación, ejecute el siguiente comando para activar el entorno virtual venv. Una vez activado, su indicador de shell será como » (venv) usuario@nombredehost: … «.
|
||
|
||
source venv/bin/activate
|
||
|
||
Instalación de Jupyter
|
||
|
||
Después de crear un entorno virtual Python. instalará el paquete Jupyter a través de Pip. El paquete Jupyter es un metapaquete de ecosistemas de Jupyter, que incluye IPython, JupyterLab, Jupyter Server, Jupyter Notebook, qtconsole y muchos más.
|
||
|
||
Ejecute el comando pip3 a continuación para instalar Jupyter en su sistema Ubuntu.
|
||
|
||
pip3 install jupyter
|
||
|
||
Durante la instalación, a continuación se muestra el resultado que se mostrará en su terminal:
|
||
|
||
|
||
Una vez finalizada la instalación, verifique la ubicación del archivo binario de Jupyter y la versión usando el siguiente comando.
|
||
|
||
which jupyter
|
||
jupyter --version
|
||
|
||
En el siguiente resultado, debería ver que el archivo binario de Jupyter se encuentra dentro del directorio venv. Además, debería ver la versión del paquete Jupyter que está instalado en su sistema.
|
||
|
||
Configurando JupyterLab
|
||
|
||
JupyterLab es la interfaz de usuario basada en web de próxima generación para el ecosistema Jupyter. Con JupyterLab, puede trabajar con documentos y actividades como Jupyter Notebook, editor de texto y terminal en una sola ventana. JupyterLab le ofrece una experiencia similar a IDE para gestionar y desarrollar proyectos de Jupyter.
|
||
|
||
En esta sección, configurará JupyterLab para su proyecto Jupyter. Pero antes de eso, primero debe configurar Jupyter Server para proteger su instalación.
|
||
|
||
Primero, ejecute el siguiente comando para generar el archivo de configuración de Jupyter Server y configurar la contraseña. Ingrese su contraseña y repita.
|
||
|
||
jupyter server --generate-config
|
||
jupyter server password
|
||
|
||
Después de ejecutar el comando, la configuración del servidor Jupyter se generará en el directorio ~/.jupyter/ .
|
||
|
||
Puede verificar el contenido de la configuración de Jupyter Server usando el siguiente comando.
|
||
|
||
jupyter server --show-config
|
||
|
||
Se mostrará el resultado similar a continuación:
|
||
|
||
|
||
|
||
A continuación, ejecute el siguiente comando para generar una nueva configuración para JupyterLab. La configuración de JupyterLab se generará en el directorio ~/.jupyter/ .
|
||
|
||
jupyter lab --generate-config
|
||
|
||
Una vez generada la configuración, verifique la configuración de JupyterLab mediante el siguiente comando.
|
||
|
||
jupyter lab --show-config
|
||
|
||
A continuación se muestra un ejemplo de configuración de JupyterLab:
|
||
|
||
|
||
Ahora puede ejecutar la instalación de JupyterLab usando el siguiente comando. Asegúrese de cambiar la dirección IP con la dirección IP de su servidor.
|
||
|
||
jupyter lab --ip 192.168.1.100
|
||
|
||
JupyterLab se ejecutará en la dirección IP de su servidor con el puerto predeterminado 8888 . Se puede acceder a JupyterLab a través de la ruta URL /lab .
|
||
|
||
|
||
Abra su navegador web y visite la dirección IP de su servidor seguida del puerto 8888 y la ruta /lab , como http://192.168.1.100:8888/lab . Ingrese su contraseña de Jupyter Server y haga clic en Iniciar sesión para continuar.
|
||
|
||
|
||
|
||
|
||
Si tiene la contraseña adecuada, debería ver el panel de usuario de JupyterLab como el siguiente:
|
||
|
||
|
||
|
||
Ahora puede presionar Ctrl+c dos veces para finalizar el proceso de JupyterLab.
|
||
Ejecutando JupyterLab como un servicio Systemd
|
||
|
||
En el siguiente paso, creará un nuevo archivo de servicio systemd que se utilizará para ejecutar JupyterLab. De esta manera, su instalación de JupyterLab se ejecutará en segundo plano como un servicio systemd y podrá administrar JupyterLab fácilmente a través de la utilidad systemctl.
|
||
|
||
Cree un nuevo archivo de servicio systemd /etc/systemd/system/jupyterlab.service usando el siguiente comando del nano editor.
|
||
|
||
|
||
sudo nano /etc/systemd/system/jupyterlab.service
|
||
|
||
Inserte la siguiente configuración y asegúrese de cambiar el nombre de usuario vesko .
|
||
|
||
[Unit]
|
||
Description=JupyterLab Service
|
||
|
||
[Service]
|
||
Type=simple
|
||
PIDFile=/run/jupyter.pid
|
||
ExecStart=/home/vesko/project/venv/bin/jupyter lab --config=/home/vesko/.jupyter/jupyter_lab_config.py
|
||
User=vesko
|
||
Group=vesko
|
||
WorkingDirectory=/home/vesko/project
|
||
Restart=always
|
||
RestartSec=10
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
Cuando termine, guarde y cierre el archivo.
|
||
|
||
Ahora ejecute el siguiente comando systemctl para recargar el administrador systemd y aplicar los cambios.
|
||
|
||
sudo systemctl daemon-reload
|
||
|
||
Luego, inicie y habilite el servicio jupyterlab usando el siguiente comando.
|
||
|
||
sudo systemctl start jupyterlab
|
||
sudo systemctl enable jupyterlab
|
||
|
||
|
||
|
||
Por último, verifique el servicio jupyterlab para asegurarse de que se esté ejecutando.
|
||
|
||
sudo systemctl status jupyterlab
|
||
|
||
El siguiente resultado confirma que el servicio jupyterlab se está ejecutando.
|
||
|
||
|
||
|
||
|
||
|
||
Running JupyterLab Behind an Apache Reverse Proxy
|
||
https://www.tspi.at/2025/03/27/jupyterapacheproxy.html
|
||
|
||
When exposing a JupyterLab server to the internet, especially one running on an internal machine, it’s important to do so securely and robustly. This quick guide covers how to place JupyterLab behind an Apache 2.4 reverse proxy with HTTPS termination, using JupyterLab 4.2.5 running on an internal host. We walk through the necessary Apache configuration, address common websocket issues, and explain what must be configured on the JupyterLab side to ensure proper operation.
|
||
|
||
In our setup, JupyterLab runs on an internal machine with IP 192.0.2.100 on port 8888. Apache httpd acts as the HTTPS-facing reverse proxy and is accessible to the public via jupyter.example.com.
|
||
|
||
The Apache VirtualHost configuration enables both standard HTTP proxying and websocket tunneling. Websockets are required for many interactive features in JupyterLab, including launching kernels and receiving output. Misconfigured websocket proxying is a common cause of broken kernel behavior, such as failures to start or cells not producing output.
|
||
|
||
Here’s the relevant Apache 2.4 configuration:
|
||
|
||
<VirtualHost *:443>
|
||
ServerName jupyter.example.com
|
||
ServerAdmin webmaster@example.com
|
||
DocumentRoot /usr/www/jupyter.example.com/www
|
||
|
||
SSLOptions +StdEnvVars
|
||
SSLVerifyClient optional
|
||
SSLVerifyDepth 5
|
||
SSLCertificateFile "/usr/www/jupyter.example.com/conf/ssl.cert"
|
||
SSLCertificateKeyFile "/usr/www/jupyter.example.com/conf/ssl.key"
|
||
SSLCertificateChainFile "/usr/www/jupyter.example.com/conf/ssl.cert"
|
||
SSLCACertificateFile "/usr/local/etc/ssl/ca01_01.cert"
|
||
|
||
RewriteEngine On
|
||
RewriteCond %{HTTP:Connection} Upgrade [NC]
|
||
RewriteCond %{HTTP:Upgrade} websocket [NC]
|
||
RewriteRule /(.*) ws://192.0.2.100:8888/$1 [P,L]
|
||
|
||
ProxyRequests Off
|
||
ProxyVia Off
|
||
ProxyPreserveHost On
|
||
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
|
||
|
||
ProxyPass / http://192.0.2.100:8888/ nocanon
|
||
ProxyPassReverse / http://192.0.2.100:8888/
|
||
|
||
RequestHeader edit Origin ^(.*)$ $1
|
||
RequestHeader edit Referer ^(.*)$ $1
|
||
|
||
Header unset Content-security-policy
|
||
Header unset Content-security-policy-report-only
|
||
|
||
Header always set Access-Control-Allow-Origin "*"
|
||
</VirtualHost>
|
||
|
||
|
||
This setup forwards normal HTTP requests and websocket upgrade requests to the internal JupyterLab server. The key parts are the RewriteCond rules and RewriteRule, which ensure websocket connections are passed properly. The ProxyPreserveHost and X-Forwarded-Proto header help the internal server understand the original request's context.
|
||
|
||
|
||
On the internal host running JupyterLab, you must configure it to listen on all interfaces (0.0.0.0), accept connections from the proxy host, and allow remote access. This is done in your ~/.jupyter/jupyter_lab_config.py file:
|
||
|
||
c.ServerApp.port = 8888
|
||
c.ServerApp.local_hostnames = ['jupyter.example.com']
|
||
c.ServerApp.ip = '0.0.0.0'
|
||
c.ServerApp.allow_remote_access = True
|
||
c.ServerApp.allow_origin = '*'
|
||
|
||
Setting the port to 8888 matches what Apache forwards to. Binding to 0.0.0.0 ensures the JupyterLab server accepts connections from any interface, including from Apache on the same or a different host. The local_hostnames setting tells JupyterLab which hostnames are allowed to appear in requests; this must include the public domain name used by clients. allow_remote_access is necessary to let the proxy connect from another machine, and allow_origin = '*' ensures CORS doesn’t block legitimate browser requests that may originate from outside the internal network.
|
||
Conclusion
|
||
|
||
Running JupyterLab behind an Apache reverse proxy is a practical way to provide secure, HTTPS access to a notebook server running on an internal machine. The main pitfall is usually related to websocket support; getting the rewrite and proxy rules correct is critical for kernel functionality. With the configurations above, JupyterLab should be accessible from the outside while maintaining flexibility and a reasonable level of security.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|