JupyterHub i JupyterLab są aplikacjami napisanymi w Pythonie.
Podstawowy plik konfiguracyjny /etc/systemd/system/jupyterhub.service:
[Unit] Description=Jupyterhub [Service] User=root Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/USER/.pyenv/versions/.../bin/" ExecStart=/home/USER/.pyenv/versions/.../bin/jupyterhub -f /etc/jupyterhub/jupyterhub_config.py WorkingDirectory=/etc/jupyterhub [Install] WantedBy=multi-user.target
Dzięki temu w katalogu jupyterhub tworzone są pliki:
jupyterhub_cookie_secret jupyterhub-proxy.pid jupyterhub.sqlite
oraz pliki konfiguracyjne: JupyterLab, JupyterHub, JupyterNotebook.
JupyterHub musi być uruchomiony przez użytkownika ROOT by umożliwić uruchamianie instancji jupyterlab z prawami poszczególnych użytkowników (przez PAM).
JupyterHub i JupyterLab jest zainstalowany w virtualenv/pyenv dla odseparowania od interpretera systemowego oraz innych globalnie instalowanych pakietów Pythona.
Środowiska wirtualne tworzone są przez użytkownika USER. Do uruchomienia przez innych użytkowników służy odpowiednie zarządzanie uprawnieniami do katalogów z virtualenv/pyenv.