2019년 12월 2일 월요일

우분투 18.04 서버에 Jupyterhub 설치하여 여러 사용자 사용하도록 하기


1. 관련 패키지 설치
$ sudo apt install nodejs
$ sudo apt install npm
$ sudo npm install -g configurable-http-proxy

2. jupyterhub와 인증관련 모듈 설치
$ sudo apt install python3-pip
$ sudo -H pip3 install --upgrade setuptools
$ sudo -H pip3 install jupyterhub
$ sudo -H pip3 install sudospawner
$ sudo -H pip3 install jupyterlab

3. 실행할 전용 사용자 추가
$ sudo adduser tester
$ sudo nano /etc/sudoers

# 전역환경에 설치한 sudospawner 실행 파일을 JUPYTER_CMD로 설정
Cmnd_Alias JUPYTER_CMD = /usr/local/bin/sudospawner
# tester 사용자가 jupyterhub 그룹에 있는 사용자에 대해서 암호없이 JUPYTER_CMD를 실행
tester ALL=(%jupyterhub) NOPASSWD:JUPYTER_CMD

4. jupyterhub 그룹 추가
$ sudo groupadd jupyterhub
$ sudo usermod -a -G jupyterhub tester
$ sudo usermod -a -G jupyterhub tester1
$ sudo usermod -a -G jupyterhub tester2

6. root가 아닌 사용자가 PAM 동적인증 가능하게 하기
$ sudo usermod -a -G shadow tester
$ sudo -H pip3 install pamela
$ sudo -u tester python3 -c "import pamela, getpass; print(pamela.authenticate('$USER', getpass.getpass()))"
### tester가 jupyterhub를 실행시키면 사용자가 각자 아이디와 비번으로 입력하여 사용자인증 가능토록 설정 확인
$ sudo -u tester python3
>>> import pamela
>>> pamela.authenticate('tester1','tester1passwd')
>>> exit()

5. sudospawner 설정 테스트
$ sudo -u tester sudo -n -u $USER /usr/local/bin/sudospawner --help
맞게설정되었으면 help 실행
$ sudo -u tester sudo -n -u $USER echo 'fail'
sudo: 암호가 필요합니다

7. jupyterhub 폴더 만들기
$ sudo mkdir /etc/jupyterhub
$ sudo mkdir /etc/jupyterhub/pythonex
$ sudo chown -cR tester:jupyterhub /etc/jupyterhub
$ sudo chmod -R 755 /etc/jupyterhub/pythonex

8. configuration
$ cd /etc/jupyterhub
$ sudo -u tester jupyterhub --generate-config

9.  jupyterhub_config.py 설정
$ sudo nano /etc/jupyterhub/jupyterhub_config.py
==================================
# set of users who can administer the Hub itself
c.Authenticator.admin_users = {'tester'}

## The public facing port of the proxy.
c.JupyterHub.port = 9091

# set for sudospawner
c.JupyterHub.spawner_class = 'sudospawner.SudoSpawner'
c.SudoSpawner.sudospawner_path = '/usr/local/bin/sudospawner'

# set of users working directory
c.Spawner.notebook_dir = '/etc/jupyterhub/pythonex'

# jupyterlab을 띄우고 싶으면 jupyterlab을 설치하고 디폴트 경로 설정
#c.Spawner.default_url = '/lab'

#  Supports Linux and BSD variants only.
c.LocalAuthenticator.create_system_users = True

## The command to use for creating users as a list of strings
c.Authenticator.add_user_cmd = ['adduser', '--force-badname', '-q', '--gecos', '""', '--disabled-password']

===================================
Alt + a, Ctr + k

10. 서버 실행, 반드시 cd /etc/jupyterhub 폴더에서 실행
$ sudo -u tester jupyterhub jupyterhub_config.py

11. 서비스 등록 및 자동실행
$ sudo nano /lib/systemd/system/jupyterhub.service
===============
[Unit]
Description=Jupyterhub

[Service]
User=root
ExecStart=/usr/local/bin/jupyterhub -f /etc/jupyterhub/jupyterhub_config.py

[Install]
WantedBy=multi-user.target
================
12. 데몬등록 실행 cd /lib/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable jupyterhub
$ systemctl start jupyterhub

13. 실행중 로그 보기
$ journalctl -u jupyterhub

14. 서비스 취소시
$ sudo systemctl stop jupyterhub
$ sudo systemctl disable jupyterhub

15. 추가 가입자 설정
$ sudo adduser tester3
$ sudo usermod -a -G jupyterhub tester3

16. 추가 사용자 쓰기 설정
$ sudo chmod -R 775 /etc/jupyterhub/pythonex
* 지우기 : $ sudo userdel -r or f tester3
* group 확인: $ grep jupyterhub /etc/group

댓글 1개:

  1. 안녕하세요 :) 올리신 글 보면서 저도 Jupyterhub 설치를 해보고 있습니다.
    저는 현재 Docker에 우분투 20.04버전을 컨테이너로 생성하여 설치하려고 하는데요.
    bash: -H: command not found나 bash: -u: command not found 이런 오류들이 발생합니다. 우분투 설치는 제대로 했다고 생각하는데.. 이유가 뭘까요?

    답글삭제