0. 시작하기
- 언제 어디서나 인터넷만 되면, 접속이 가능한 Jupyter Server를 구축해보겠습니다.
- 서버는 무료로 사용가능한 Oracle Cloud 프리티어, OS는 Ubuntu 18를 사용하였습니다.
- 클라우드 보안 및 네트워킹 설정에 대한 부분은 다루지 않습니다.
- 운영체제 및 개인네트워크 환경에 따라 정상적으로 설치가 안될 수 있습니다.
1. pip 및 Jupyter 설치
1) PIP 설치
최근에는 기본적으로 유닉스/리눅스 OS계열에서는 Python이 설치되어있기는 하지만, 적어주고 가겠습니다.
sudo apt-get update
sudo apt install python3-pip
sudo pip3 install --upgrade pip
2) 개발 작업공간 및 인증서보관 폴더 생성
mkdir jupyter
mkdir jupyter/cert
mkdir jupyter/contents
cert : 인증서 보관용 폴더
contents : 실제 작업공간
3) 인증서 생성
cd jupyter/cert
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout notebook.key -out notebook.pem
cert 폴더로 이동하여 openssl을 이용한 사설인증서 생성(openssl 생성시 설정은 그냥 빈칸으로 넣고 Enter처도 무관합니다)
4) Jupyter 설치
sudo pip3 install jupyter notebook
주피터 설치 시, 기본설정은 로컬에서만 작동하도록 되어있습니다. 때문에 원격지에서 접속 할 수 있도록 설정을 해줘야합니다.
3. Jupyter 설정
1) Jupyter Server 설정
1.1) 접속 패스워드 설정 (파이썬에서 argon2 방식으로 암호화된 값을 구해 config 파일에 넣어주는 방식입니다.)
Python3
>> from notebook.auth import passwd
>> passwd()
Enter password : (입력)
Verify password : (입력)
'argon2:$argon2id$v=19$m=10240,t=10,p=8$vyRuJXe9zdvrHFqZMe4FMg$gPmyWbmPLWJz7E/m6AoAGg'
>> exit()
위에 마지막줄 '~~~' 부분을 복사해서 config 파일에 넣어줘야합니다.
1.2) config 파일 생성
jupyter notebook --generate-config
jupyter notebook --generate-config : 기본 설정파일 생성(jupyter_notebook_config.py)
1.3) config 파일 설정
sudo vi ~/.jupyter/jupyter_notebook_config.py
파일내용 맨 아랫부분에 아래와 같은 내용을 추가해줍니다.
c = get_config()
c.NotebookApp.password = u'argon2:$argon~~~~~~~~~~~~~' # 위에서 복사한 암호값을 넣어줍니다.
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.certfile = u'/home/ubuntu/jupyter/cert/notebook.pem'
c.NotebookApp.keyfile = u'/home/ubuntu/jupyter/cert/notebook.key'
c.NotebookApp.port = 8888 # 접속용 포트를 입력해주세요.
c.NotebookApp.notebook_dir = u'/home/ubuntu/jupyter/contents'
sudo vi ~/.jupyter/jupyter_notebook_config.py : 생성된 설정파일 수정 (vi가 아닌 편한 에디터를 이용해주세요)
1.4) 외부접속 포트 허용
sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 8888 -m state --state NEW,ESTABLISHED -j ACCEPT
2) 접속 확인
브라우저에 서버의 공인IP와 위에서 설정한 포트IP를 입력 후 접속하여, 설정한 암호로 접속할 수 있습니다.
브라우저 : https://공인IP:8888
꼭 https 를 통해서 접속해야합니다. 접속시, 사설인증서를 사용하였기 때문에, 안전하지 않은 사이트라고 나오지만, 그냥 접속하면됩니다.
맥 OS에서 접속할 경우 해당인증서를 키체인에 등록 후 신뢰할 수 있는 인증서로 등록해주셔야합니다.
Fin