Skip to Content
Data EngineeringJupyter Notebook 설치와 원격 접속 설정 기록
📊 Data Engineering2018년 10월 23일

Jupyter Notebook 설치와 원격 접속 설정 기록

#jupyter#python#server#data-science#notebook

서버에 Jupyter Notebook을 설치하고 원격에서 접속할 수 있도록 설정했던 기록입니다. 당시에는 Python 3.6과 NotebookApp 설정을 사용했습니다.

아래 명령은 구형 Notebook 환경의 기록입니다. Notebook 7이나 Jupyter Server에서는 설정 이름과 실행 구성이 달라질 수 있습니다.

설치와 설정 파일 생성

당시 설치 명령은 다음과 같습니다.

bash
pip3.6 install jupyter jupyter-notebook --generate-config

설정 파일은 ~/.jupyter/jupyter_notebook_config.py에 생성됩니다. 실행하는 계정의 홈 경로를 기준으로 하므로 서비스 계정이 바뀌면 읽는 파일도 확인해야 합니다.

접속 주소와 작업 디렉터리

당시에는 서버의 내부 IP와 작업 디렉터리를 지정했습니다. 아래는 경로와 주소를 바꾼 예시입니다.

python
c.NotebookApp.ip = '127.0.0.1' c.NotebookApp.notebook_dir = '/home/notebook/workspace' c.NotebookApp.open_browser = False

127.0.0.1은 서버 내부에서만 접근하는 예시입니다. 원격에서 직접 접속하려면 실제 수신 주소와 네트워크 구성을 맞춰야 합니다. 프록시를 통해 제공하는 경우에는 프록시에서 서버에 접근할 수 있는지도 확인해야 합니다.

당시 설정에는 allow_origin='*'도 있었지만, 원격 접속을 연다는 이유만으로 필요한 설정은 아닙니다. 수신 주소와 CORS 허용 출처는 구분해서 설정해야 합니다.

비밀번호 설정

bash
jupyter-notebook password

비밀번호를 설정한 뒤 실제 접속에서 인증이 적용되는지 확인합니다. 주소와 포트가 열린 것만으로 접속 준비가 끝난 것은 아닙니다.

백그라운드 실행

당시에는 nohup으로 실행하고 부팅 시 스크립트가 실행되도록 rc.local에 등록했습니다. 당시에는 root 계정으로 실행하기도 했지만, 여기서는 일반 사용자 환경에서 동작을 확인하는 예시로 바꿨습니다.

bash
nohup jupyter-notebook > "$HOME/jupyter.log" 2>&1 &

운영 서비스를 구성한다면 실행 계정과 환경, 로그 위치, 재시작 방식을 함께 정해야 합니다. 가상환경을 사용한다면 서비스에서도 같은 Python과 Jupyter 실행 파일을 참조해야 합니다.

Notebook과 JupyterHub 구분

커널을 여러 개 등록하는 것과 사용자별 서버를 나누는 것은 다릅니다. 하나의 Notebook 서버에 Python 커널을 더한다고 사용자 간 파일과 권한이 자동으로 분리되지는 않습니다.

여러 사용자의 서버를 관리하는 JupyterHub 설치 준비는 폐쇄망 JupyterHub 설치 기록에서, 포털에 화면을 넣는 설정은 iframe CSP 글에서 다룹니다.

참고 자료

Last updated on