Install JupyterHub and JupyterLab from the ground up

https://jupyterhub.readthedocs.io/en/1.2.0/installation-guide.html

My Configuration

sudo python3 -m venv /volume2/web/development/jupyterhub/

sudo /volume2/web/development/jupyterhub/bin/python3 -m pip install --upgrade pip

sudo /volume2/web/development/jupyterhub/bin/python3 -m pip install wheel
sudo /volume2/web/development/jupyterhub/bin/python3 -m pip install jupyterhub jupyterlab
sudo /volume2/web/development/jupyterhub/bin/python3 -m pip install ipywidgets

# not needed sudo /volume2/web/development/jupyterhub/bin/python3 -m pip install pam


npm install -g configurable-http-proxy

sudo mkdir -p /volume2/web/development/jupyterhub/etc/jupyterhub/
cd /volume2/web/development/jupyterhubjupyterhub/etc/jupyterhub/

sudo /volume2/web/development/jupyterhub/bin/jupyterhub --generate-config

Set the following configuration option in your jupyterhub_config.py file:
c.Spawner.default_url = '/lab'

sudo mkdir -p /volume2/web/development/jupyterhub/etc/systemd


Make the service file named:
/volume2/web/development/jupyterhub/etc/systemd/jupyterhub.service

sudo ln -s /volume2/web/development/jupyterhub/etc/systemd/jupyterhub.service /etc/systemd/system/jupyterhub.service

sudo systemctl daemon-reload

sudo systemctl enable /volume2/web/development/jupyterhub/etc/systemd/jupyterhub.service

sudo systemctl start jupyterhub.service

sudo systemctl status jupyterhub.service

Contents of jupyterhub.service

[Unit]
Description=JupyterHub
After=syslog.target network.target

[Service]
User=root
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/volume2/web/development/jupyterhub/bin"
ExecStart=/volume2/web/development/jupyterhub/bin/jupyterhub -f /volume2/web/development/jupyterhub/etc/jupyterhub/jupyterhub_config.py

[Install]
WantedBy=multi-user.target