Without make server account on linux, I should set jupyterhub for multiple user.
So I used DummyAuthenticator and SimpleLocalProcessSpwaner to add ‘dummy’ user.
However the jupyternotebook server per user runned well, when i open the terminal, it shows the default path to ‘/tmp/{user_name}’.
How can i set config that terminal opens on jupyterhub ‘HOME’ dir?
Here is my code
c.Authenticator.delete_invalid_users = True
c = get_config() #noqa
#from jupyterhub.spawner import Spawner, SimpleLocalProcessorSpawner
# -----------------
# 기본 설정
# -----------------
#c.JupyterHub.port = 11439
#c.JupyterHub.bind_url = 'http://:11439'
from jupyterhub.auth import DummyAuthenticator
from jupyterhub.spawner import SimpleLocalProcessSpawner
import os
#c.Authenticator.delete_invalid_users = True
class CustomSpawner(SimpleLocalProcessSpawner):
def user_env(self, env):
env = super().user_env(env)
user_dir = f"/data/jupyterhub/users/{self.user.name}"
env['HOME'] = user_dir
env['JUPYTERHUB_USER'] = self.user.name
return env
def start(self):
user_dir = f"/data/jupyterhub/users/{self.user.name}"
os.makedirs(user_dir, exist_ok=True)
self.notebook_dir = user_dir
self.cwd = user_dir
self.env_keep.append('JUPYTERHUB_USER')
self.default_url = '/lab'
self.args.extend([
f'--ServerApp.root_dir={user_dir}',
f'--ServerApp.terminado_settings={{"shell_command": ["bash"], "cwd": "{user_dir}"}}'
])
return super().start()
c.JupyterHub.authenticator_class = DummyAuthenticator
c.DummyAuthenticator.password = "passwd"
c.Authenticator.admin_users = {'admin'}
c.Authenticator.allowed_users = {'test1'}
c.JupyterHub.spawner_class = CustomSpawner