Ubuntu에 Jupyter Notebook 서버를 설치하고 원격 접속하는 방법

이 글에서는 Ubuntu 서버에 Jupyter Notebook 서버를 설치하고, SSH 터널링 및 방화벽 설정을 통해 원격에서 안전하게 접속하는 방법을 단계별로 설명합니다.

시스템 요구사항 및 준비

  • Ubuntu 18.04 이상 버전의 서버, 비(非)루트 사용자 계정과 sudo 권한이 필요합니다.

  • 기본 패키지 목록 및 설치된 소프트웨어를 최신 상태로 업데이트합니다:

    sudo apt update && sudo apt upgrade -y
    

    이 명령은 저장소 정보를 갱신하고, 설치된 패키지를 최신 버전으로 업그레이드합니다.

1. Python 및 pip 설치

  1. Python3 및 개발 툴을 설치합니다:

    sudo apt install python3 python3-pip python3-venv build-essential -y
    

    Python3는 Jupyter Notebook의 실행 환경이며, pip는 패키지 관리 도구입니다.

  2. 설치 확인:

    python3 --version
    pip3 --version
    

2. Jupyter Notebook 설치

  • pip를 통해 클래식 노트북 패키지를 설치합니다:

    pip3 install notebook
    

    이 명령은 Jupyter Notebook의 모든 핵심 종속성을 함께 설치합니다.

  • 설치 완료 후, 다음 명령으로 기본 실행이 가능한지 확인합니다:

    jupyter notebook --version
    

3. 초기 설정

  1. 설정 파일 생성:

    jupyter notebook --generate-config
    

    기본 홈 디렉토리 아래 ~/.jupyter/jupyter_notebook_config.py 파일이 생성됩니다 .

  2. jupyter_notebook_config.py 에서 다음 옵션을 편집합니다:

    c.NotebookApp.ip = '0.0.0.0'
    c.NotebookApp.port = 8888
    c.NotebookApp.open_browser = False
    

    이렇게 하면 모든 네트워크 인터페이스에서 포트 8888로 접속 대기하도록 설정됩니다.

4. 보안 설정 (비밀번호 / 토큰)

  • 노트북 서버 비밀번호를 설정하여 무단 접근을 방지합니다:

    jupyter notebook password
    

    이 명령은 비밀번호 해시를 설정 파일에 기록합니다.

  • 또는 토큰 인증을 사용하여 세션별로 발급된 토큰으로 접근할 수 있습니다.

5. 방화벽 설정

  • Ubuntu UFW 방화벽에서 8888 포트를 허용합니다:

    sudo ufw allow 8888
    sudo ufw enable
    

    이를 통해 외부에서 포트 8888로 접속이 가능해집니다.

6. SSH 터널링으로 원격 접속

  • SSH 터널링을 사용하면 방화벽을 직접 수정하지 않고도 로컬 머신에서 접속할 수 있습니다:

    ssh -NfL localhost:8888:localhost:8888 사용자명@서버_IP
    
  • 로컬 브라우저에서 http://localhost:8888 로 접속하면 원격 서버의 노트북에 안전하게 접속됩니다 .

7. systemd 서비스 구성 (선택 사항)

  1. 서비스 파일 생성 (/etc/systemd/system/jupyter.service):

    [Unit]
    Description=Jupyter Notebook
    
    [Service]
    Type=simple
    PIDFile=/run/jupyter.pid
    ExecStart=/usr/bin/jupyter-notebook --config=/home/사용자명/.jupyter/jupyter_notebook_config.py
    User=사용자명
    Group=사용자명
    WorkingDirectory=/home/사용자명/notebooks
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    

    이 파일에서 사용자 계정, 작업 디렉토리, 실행 명령을 정의합니다.

  2. 서비스 활성화 및 시작:

    sudo systemctl daemon-reload
    sudo systemctl enable jupyter
    sudo systemctl start jupyter
    

    재부팅 후에도 자동으로 Jupyter Notebook이 실행됩니다.

8. SSL 설정 (선택 사항)

  • 공개 네트워크에서 HTTPS로 암호화된 접속을 위해 SSL/TLS를 적용할 수 있습니다.

  • Let’s Encrypt 인증서를 사용하려면 certbot 등을 통해 발급받은 fullchain.pemprivkey.pem 경로를 설정 파일에 지정합니다:

    c.NotebookApp.certfile = '/경로/fullchain.pem'
    c.NotebookApp.keyfile = '/경로/privkey.pem'
    c.NotebookApp.ip = '*'
    c.NotebookApp.port = 443
    
  • 이후 브라우저에서 https://your.domain.com 으로 접속합니다.

결론

이상 Ubuntu 서버에 Jupyter Notebook을 설치하고, 비밀번호·방화벽·SSH 터널링·systemd·SSL 설정을 통해 원격에서 안전하게 접속하는 방법입니다.

 [Linux/Ubuntu] 우분투로 Jupyter Notebook 원격접속하기 (+ 간단한 vi 에디터 명령어와 에러 해결법)

댓글 쓰기

0 댓글