4.2. jupyter¶
Setup system and create user
sudo apt install python3-venv
sudo adduser --shell /bin/bash --disabled-password axju
setup venv and install jupyter for the new user
sudo -u axju -i
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip jupyter
Create work folder
mkdir /home/axju/jupyter
Create run script
nano start_jupyter
with
#!/bin/bash
source /home/axju/venv/bin/activate
cd /home/axju/jupyter
jupyter-notebook
Create certificate
cd
mkdir certificate
cd certificate/
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem
Generate password hash in file ~/.jupyter/jupyter_notebook_config.json
jupyter notebook password
Create jupyter configuration
jupyter notebook --generate-config
nano .jupyter/jupyter_notebook_config.py
Edit configuration
c.NotebookApp.password = u'<password hash>'
c.NotebookApp.port = 9999
c.NotebookApp.notebook_dir = '/home/axju/jupyter'
c.NotebookApp.allow_origin = 'j.short-report.de'
c.NotebookApp.allow_remote_access = True
c.NotebookApp.open_browser = False
4.2.1. nginx¶
Edit
sudo nano /etc/nginx/sites-available/jupyter
with
upstream notebook {
server localhost:9999;
}
server {
listen 443 ssl;
server_name <domain or ip>;
ssl_certificate /home/axju/certificate/cert.pem;
ssl_certificate_key /home/axju/certificate/cert.key;
location / {
proxy_pass http://notebook;
proxy_set_header Host $host;
}
location ~ /api/kernels/ {
proxy_pass http://notebook;
proxy_set_header Host $host;
# websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
location ~ /terminals/ {
proxy_pass http://notebook;
proxy_set_header Host $host;
# websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
}
Enable site, check config and restart nginx
sudo ln -s /etc/nginx/sites-available/jupyter /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo service nginx restart
4.2.2. Setup supervisor¶
Edit
sudo nano /etc/supervisor/conf.d/jupyter.conf
with
[program:jupyter]
user=axju
directory=/home/axju/
command=/home/axju/start_jupyter
autostart=false
autorestart=true
startsecs=0
stdout_logfile=/var/log/jupyter/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/jupyter/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
Create log folder and enable jupyter
sudo mkdir /var/log/jupyter
sudo supervisorctl reread
sudo supervisorctl update
4.2.3. Control jupyter¶
sudo supervisorctl status jupyter
sudo supervisorctl start jupyter
sudo supervisorctl stop jupyter