Configuración de JupyterLab con SSL y Contraseña

Este tutorial actualiza el anterior de 2022.

1. Instalación de JupyterLab

Paso 1: Instalar Miniconda

Si aún no tienes Conda instalado, sigue estos pasos:

  1. Descarga el instalador de Miniconda: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
  2. Ejecuta el instalador interactivo: bash miniconda.sh
  3. Sigue las instrucciones y acepta los términos de la licencia. Por defecto, Miniconda se instalará en ~/miniconda3.
  4. Agrega Miniconda al PATH: echo "export PATH=$HOME/miniconda3/bin:\$PATH" >> ~/.bashrc source ~/.bashrc

Paso 2: Crear un entorno Conda para JupyterLab

  1. Crea un entorno para JupyterLab: conda create -n jupyter_env python=3.12 -y
  2. Activa el entorno: conda activate jupyter_env
  3. Instala JupyterLab: conda install -c conda-forge jupyterlab nodejs
  4. Verifica la instalación: jupyter-lab --version

2. Configuración de JupyterLab

Paso 1: Generar un archivo de configuración

Crea un archivo de configuración para JupyterLab:

jupyter-lab --generate-config

Esto creará el archivo ~/.jupyter/jupyter_lab_config.py.

Paso 2: Generar un certificado SSL

  1. Crea un directorio para los certificados SSL: mkdir -p ~/.jupyter/ssl
  2. Genera un certificado autofirmado usando OpenSSL: openssl req -x509 -nodes -days 365 -newkey rsa:4096 \ -keyout ~/.jupyter/ssl/mykey.key \ -out ~/.jupyter/ssl/mycert.pem Completa la información solicitada, como el nombre del dominio o la IP del servidor.

Paso 3: Configurar SSL en JupyterLab

Edita el archivo ~/.jupyter/jupyter_lab_config.py y añade lo siguiente:

c.ServerApp.certfile = '/home/usuario/.jupyter/ssl/mycert.pem'
c.ServerApp.keyfile = '/home/usuario/.jupyter/ssl/mykey.key'
c.ServerApp.ip = '0.0.0.0'
c.ServerApp.port = 8888
c.ServerApp.open_browser = False

3. Configurar una Contraseña

Paso 1: Generar el hash de la contraseña

  1. Abre un intérprete de Python desde el entorno jupyter_env: python3
  2. Usa el siguiente código para generar el hash de tu contraseña: python3 -c "from jupyter_server.auth import passwd; print(passwd())"
  3. Ingresar y confirmar la contraseña cuando te la solicite
  4. Copia el hash generado, que será algo como: sha1:abc123def456ghi789:somehashedpasswordvalue

Paso 2: Configurar el hash en JupyterLab

Edita el archivo ~/.jupyter/jupyter_lab_config.py y añade:

from jupyter_server.serverapp import PasswordIdentityProvider

c.PasswordIdentityProvider.hashed_password = 'sha1:abc123def456ghi789:somehashedpasswordvalue'
c.PasswordIdentityProvider.password_required = True

4. Configurar JupyterLab como un servicio

Paso 1: Crear un archivo de servicio para systemd

Crea un archivo de servicio en /etc/systemd/system/jupyterlab.service:

sudo nano /etc/systemd/system/jupyterlab.service

Contenido del archivo:

[Unit]
Description=JupyterLab Server
After=network.target

[Service]
Type=simple
User=usuario
Group=usuario
WorkingDirectory=/home/usuario
ExecStart=/home/usuario/miniconda3/envs/jupyter_env/bin/jupyter-lab --config=/home/usuario/.jupyter/jupyter_lab_config.py
Restart=always
Environment=PATH=/home/usuario/miniconda3/envs/jupyter_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Environment="LANG=en_US.UTF-8"  


[Install]
WantedBy=multi-user.target

💡 TIP:

Si no estás seguro de qué usuario usar:

  • Reemplaza usuario con el nombre del usuario que configuró Miniconda y JupyterLab.
  • Verifica tu usuario actual con el comando: whoami
  • Si necesitas usar un usuario diferente, crea uno nuevo: sudo adduser --system --shell /bin/bash --home /home/nuevo_usuario nuevo_usuario sudo mkdir -p /home/nuevo_usuario/.jupyter sudo chown -R nuevo_usuario:nuevo_usuario /home/nuevo_usuario

Paso 2: Recargar y habilitar el servicio

  1. Recarga la configuración de systemd: sudo systemctl daemon-reload
  2. Habilita el servicio para que inicie automáticamente: sudo systemctl enable jupyterlab.service
  3. Inicia el servicio: sudo systemctl start jupyterlab.service
  4. Verifica que el servicio esté corriendo: sudo systemctl status jupyterlab.service

5. Acceder a JupyterLab

  1. Túnel SSH (si no usas un proxy inverso):
    • Establece un túnel SSH desde tu máquina local: ssh -L 8888:localhost:8888 usuario@IP_SERVIDOR
    • Accede a JupyterLab desde tu navegador: https://localhost:8888
  2. Navegador directo (si tienes el puerto 8888 accesible públicamente y SSL configurado):
    • Abre tu navegador y accede a: https://<IP_SERVIDOR>:8888

6. Tips y errores comunes

  • Certificados autofirmados: Si usas certificados autofirmados, el navegador mostrará un aviso de «Conexión no segura». Acepta el certificado para continuar.
  • Error de permisos: Asegúrate de que el usuario que ejecuta JupyterLab tiene permisos sobre los archivos de configuración y los certificados SSL: sudo chown -R usuario:usuario ~/.jupyter
  • Logs útiles: Revisa los logs del servicio para diagnosticar problemas: sudo journalctl -u jupyterlab.service -f
  • Cambio de puertos: Si el puerto 8888 está ocupado, cámbialo en la configuración (jupyter_lab_config.py) y el archivo del servicio.

Espero que te sea de ayuda!

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.