Installation notes

Tinc

Installed tinc following pzwiki guide!

NGINX config

sudo apt install nginx

Added user directories to nginx setup

    # enable home directories ... eg ~USER/ => /home/USER/public_html/index.html
    location ~ ^/~(.+?)(/.*)?$ {
            alias /home/$1/public_html$2;
        index index.html index.htm;
            autoindex on;
        }

Made the /var/www/html folder belong to group users

sudo chgrp users /var/www/html
sudo chmod -R 2775 /var/www/html

NB: The 2 turns on the setGID bit meaning:

newly created subfiles inherit the same group as the directory, and newly created subdirectories inherit the set GID bit of the parent directory.

Reverse proxies for jupyter

        location /lab/mmurtaugh/ {
            proxy_pass http://localhost:9050/;
        # ADDs sandbot
        rewrite /(.*) /sandbot/$1  break;
        include /etc/nginx/includes/lab.conf;
        }

And made a file for common settings:

sudo nano /etc/nginx/includes/lab.conf
error_page 502 /lab/502.html;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $http_host;
            proxy_http_version 1.1;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;

Jupyter config

First installed pip3 & updated it…

sudo apt install python3-pip
sudo pip3 install --upgrade pip

Then used pip3 to install jupyterlab…

sudo pip3 install jupyterlab

Following this guide, configured my local jupyter to use port 9050, and setup config

To set the password:

python3

from  IPython.lib import passwd
passwd()

Copied by “password hash”

jupyter notebook --generate-config
nano ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.base_url = '/sandbot/lab/mmurtaugh/'
c.NotebookApp.port = 9050
c.NotebookApp.trust_xheaders = True
c.NotebookApp.port_retries = 50
c.NotebookApp.password = 'sha1:PASSWORD_HASH_FROM_ABOVE'
c.NotebookApp.allow_remote_access = True

Followed this tutorial on creating a systemd service. Used my username (and group).

sudo nano /etc/systemd/system/jupyterlab@.service
[Unit]
Description=Jupyter Lab Server (%i)
After=nginx.service

[Service]
User=%i
Group=%i
Type=simple
WorkingDirectory=/home/%i/
ExecStart=/usr/local/bin/jupyter-lab --config=/home/%i/.jupyter/jupyter_notebook_config.py
StandardOutput=null
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Then you can

sudo systemctl enable jupyterlab@mmurtaugh

or

sudo systemctl start jupyterlab@mmurtaugh

and

sudo systemctl status jupyterlab@mmurtaugh