El Proyecto Jupyter es una organización sin ánimo de lucro creada para "desarrollar software de código abierto, estándares abiertos y servicios para computación interactiva en docenas de lenguajes de programación" (creado a partir de IPython de Fernando Pérez). Jupyter soporta entornos de ejecución en varias docenas de lenguajes de programación. El nombre del proyecto Jupyter es una referencia a los tres lenguajes de programación principales soportados por Jupyter, que son Julia, Python y R, y también es un homenaje a los cuadernos de Galileo que registran el descubrimiento de los satélites de Júpiter. El proyecto Jupyter ha desarrollado y respaldado los productos de computación interactiva Jupyter Notebook, JupyterHub y JupyterLab, la versión de próxima generación de Jupyter Notebook.
Pasos previos e instalación de Jupyter
Primero, actualiza los repositorios y los paquetes:
# apt update && apt upgrade
Una vez actualizado, tendrás que instalar los paquetes necesarios:
# apt install nginx python3-certbot-nginx python3-pip python3-dev python3-virtualenv
Posteriormente, elimina y/o crea un fichero para el site de NGINX:
# rm /etc/nginx/sites-enabled/default && vi /etc/nginx/sites-enabled/default
Dicho fichero debe contener la siguiente configuración (recuerda modificar el dominio de ejemplo):
##
# top-level http config for websocket headers
# If Upgrade is defined, Connection = upgrade
# If Upgrade is empty, Connection = close
# Please seer https://jupyterhub.readthedocs.io/en/stable/reference/config-proxy.html for more detailed.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name ejemplo.com;
location / {
proxy_pass https://127.0.0.1:8888;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# websocket headers
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Scheme $scheme;
proxy_buffering off;
}
}
Una vez guardado los cambios, puedes adquirir el certificado con Certbot:
# certbot --nginx --redirect -d ejemplo.com
Posteriormente, por seguridad es recomendable no utilizar el usuario root. Por lo tanto, crea un usuario para el proyecto:
# useradd clouding && usermod -aG sudo clouding
Adicionalmente, crea un directorio para el entorno y modifica la propiedad:
# mkdir /home/clouding && chown clouding:clouding /home/clouding
Y abre una sesión del usuario:
# su clouding
Luego accede al directorio creado:
# cd /home/clouding/
Para crear el entorno virtual para Jupyter:
# virtualenv jupyter
created virtual environment CPython3.8.10.final.0-64 in 206ms
creator CPython3Posix(dest=/home/clouding/jupyter, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, pkg_resources=latest, via=copy, app_data_dir=/home/clouding/.local/share/virtualenv/seed-app-data/v1.0.1.debian.1)
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
Una vez creado, deberás entrar en el directorio del entorno:
# cd jupyter/
Y actívalo:
# source bin/activate
Ahora dentro del entorno, podrás instalar Jupyter:
(jupyter) # pip install jupyter
Una vez completada la instlación crea el fichero de configuración:
(jupyter) # jupyter notebook --generate-config
Por defecto se accede con tokens a Jupyter, pero puedes utilizar contraseña:
(jupyter) # jupyter notebook password
Posteriormente, edita el fichero de configuración:
# vi /home/clouding/.jupyter/jupyter_notebook_config.py
Para descomentar y modificar las siguiente líneas:
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.certfile = u'/etc/letsencrypt/live/ejemplo.com/fullchain.pem'
c.NotebookApp.keyfile = u'/etc/letsencrypt/live/ejemplo.com/privkey.pem'
Una vez configurado, puedes ejecutar Jupyter:
(jupyter) # jupyter notebook
[I 17:00:41.941 NotebookApp] Writing notebook server cookie secret to /home/clouding/.local/share/jupyter/runtime/notebook_cookie_secret
[I 17:00:42.230 NotebookApp] Serving notebooks from local directory: /home/clouding/jupyter
[I 17:00:42.230 NotebookApp] Jupyter Notebook 6.4.10 is running at:
[I 17:00:42.230 NotebookApp] ejemplo.com:8888/
[I 17:00:42.230 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Por otra parte, si quieres que se hice automáticamente puedes crear un servicio con systemd. Para ello crea un fichero para el servicio:
# vi /etc/systemd/system/jupyter.service
Con el siguiente contenido:
[Unit]
Description=jupyter daemon
After=network.target
[Service]
User=clouding
Group=clouding
WorkingDirectory=/home/clouding/jupyter
ExecStart=/bin/bash -c 'source /home/clouding/jupyter/bin/activate; jupyter notebook'
[Install]
WantedBy=multi-user.target
Por último, activa y arranca el servicio creado:
# systemctl enable jupyter.service && systemctl start jupyter.service && systemctl status jupyter.service
Esperamos haberte ayudado con este artículo🙂. Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites!