SHARE:

JUPYTER NOTEBOOK: Exponer el servidor públicamente

La aplicación web Jupyter notebook tiene una estructura cliente-servidor cuyo servidor por defecto se ejecuta en local en la dirección 127.0.0.1:8888 y sólo permite el acceso desde localmente.

En esta entrada expondremos el servidor para que sea accesible públicamente sin certificados SSL.

Fichero de configuración

Lo primero que se tiene que hacer es comprobar si se tiene creado el fichero de configuración jupyter_notebook_config.py. Por defecto se encuentra en los siguientes directorios:

  • Windows: C:\Users\USERNAME\.jupyter\jupyter_notebook_config.py
  • OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py

Si el directorio no existe o no se encuentra el fichero de configuración se puede generar con el siguiente comando:

jupyter notebook --generate-config

Este comando crea el directorio de jupyter y el fichero de configuración.

Configuración y generación contraseña notebook

Para proteger nuestro notebook se puede autogenerar una contraseña con el comando:

jupyter notebook password

Con ese comando se escribe una contraseña hash en el directorio de jupyter en el fichero jupyter_notebook_config.json, este comando también se puede utilizar por ejemplo si se ha olvidado la contraseña.

Editar fichero jupyer_notebook_config.py

Finalmente, se tendrá que editar el fichero jupyter_notebook_config.py para introducir los valores de configuración que harán accesible el servidor públicamente.

# configurar la ip a '*' para vincularla a todas las interfaces (ips) del servidor público
c.NotebookApp.ip = '*'
# contraseña hash que se configuró y que está almacenada en el fichero jupyter_notebook_config.py
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
# no abra por defecto el navegador cuando se ejecuta el comando jupyter notebook
c.NotebookApp.open_browser = False
 
# It is a good idea to set a known, fixed port for server access
# es buena idea también fijar un puerto conocido para acceder al servidor, ya que jupyter asigna diferentes puertos si ya se encuentra ocupado el puerto por defecto 8888
c.NotebookApp.port = 9999

Con estos pasos ya se puede acceder al servidor desde un dominio público.

Escrito por

Ignacio