Triển khai JupyterLab trên Máy chủ Đám mây để làm việc từ xa

JupyterLab là một môi trường phát triển tương tác dựa trên trình duyệt, được thiết kế để phục vụ các tác vụ liên quan đến sổ ghi chép (notebook), mã nguồn và dữ liệu. Nó cung cấp một giao diện linh hoạt, mạnh mẽ, hỗ trợ nhiều ngôn ngữ lập trình và tích hợp sâu rộng với hệ sinh thái khoa học dữ liệu Python.

Giới thiệu về JupyterLab

JupyterLab mang đến một trải nghiệm phát triển tích hợp (IDE) độc đáo thông qua trình duyệt web của bạn. Đây không chỉ là một công cụ viết code Python mà còn là một nền tảng mạnh mẽ để trình bày, phân tích dữ liệu và chia sẻ công việc khoa học. Với khả năng xem trước Markdown, hỗ trợ nhiều định dạng tệp, tích hợp đa ngôn ngữ và vô số tiện ích mở rộng như GitHub, Google Drive hay Git, JupyterLab đã nhanh chóng trở thành lựa chọn hàng đầu cho các nhà khoa học dữ liệu và lập trình viên.

Mục tiêu của hướng dẫn này là thiết lập một máy chủ JupyterLab từ xa trên nền tảng đám mây, cho phép bạn truy cập và làm việc với mã, dữ liệu của mình mọi lúc mọi nơi chỉ với một trình duyệt web, mà không cần cài đặt Python hay các thư viện phức tạp trên máy tính cá nhân.

Chuẩn bị Máy chủ Đám mây (ECS)

Đầu tiên, bạn cần một máy chủ đám mây (Elastic Compute Service - ECS) từ một nhà cung cấp dịch vụ như AWS, Google Cloud, Azure hoặc các nhà cung cấp nội địa. Trong ví dụ này, chúng ta sẽ sử dụng hệ điều hành Ubuntu 20.04 LTS (hoặc phiên bản mới hơn) cho máy chủ. Sau khi tạo và khởi động instance, hãy ghi nhớ địa chỉ IP công cộng và mật khẩu tài khoản root (hoặc tài khoản người dùng đã tạo). Nếu không có yêu cầu đặc biệt, bạn có thể thực hiện các bước tiếp theo với tài khoản root.

Đăng nhập và Cài đặt Phần mềm Cần thiết

Sử dụng SSH để kết nối đến máy chủ đám mây của bạn. Thay thế your_public_ip bằng địa chỉ IP công cộng của máy chủ:

ssh root@your_public_ip

Cập nhật Hệ thống và Cài đặt Công cụ Cơ bản

Trước khi cài đặt JupyterLab, hãy đảm bảo hệ thống của bạn được cập nhật và các công cụ cơ bản sẵn sàng:

sudo apt update
sudo apt upgrade -y
sudo apt install -y software-properties-common build-essential curl git

software-properties-common giúp quản lý các kho phần mềm PPA, và build-essential cung cấp các công cụ cần thiết để biên dịch một số gói Python.

Quản lý PIP và Python

JupyterLab thường hoạt động tốt nhất với Python 3. Hãy cài đặt pip (trình quản lý gói của Python) cho Python 3:

sudo apt install -y python3-pip python3-dev
sudo pip3 install --upgrade pip

Cấu hình Kho gói PIP (tùy chọn)

Để tăng tốc độ tải các gói Python, bạn có thể cấu hình sử dụng các kho gói proxy trong nước. Tạo hoặc chỉnh sửa tệp cấu hình ~/.config/pip/pip.conf (hoặc ~/.pip/pip.conf):

mkdir -p ~/.config/pip/
nano ~/.config/pip/pip.conf

Thêm nội dung sau vào tệp:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

Bạn có thể thay thế https://pypi.tuna.tsinghua.edu.cn/simple bằng một kho gói khác gần bạn hơn, ví dụ: Douban, USTC, hoặc Alibaba Cloud.

Cài đặt Yarn và Node.js

JupyterLab sử dụng Node.js và Yarn để quản lý các tiện ích mở rộng frontend. Để đảm bảo có một phiên bản Node.js phù hợp (phiên bản LTS được khuyến nghị), bạn nên cài đặt từ kho của NodeSource:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

Tiếp theo, cài đặt Yarn:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install -y yarn

Kiểm tra các phiên bản đã cài đặt:

node -v
npm -v
yarn -v

Cài đặt Các Thư viện Python Cơ bản (tùy chọn)

Để hỗ trợ các tác vụ khoa học dữ liệu, bạn nên cài đặt các thư viện phổ biến như NumPy, Pandas, Matplotlib và SciPy:

sudo pip3 install ipykernel numpy pandas matplotlib scipy

Cài đặt và Cấu hình JupyterLab

Cài đặt JupyterLab

Sử dụng pip3 để cài đặt JupyterLab:

sudo pip3 install jupyterlab

Tạo Mật khẩu Băm

Để thiết lập mật khẩu cho giao diện web của JupyterLab, bạn cần tạo một giá trị băm (hash) cho mật khẩu của mình. Chạy lệnh sau và nhập mật khẩu bạn muốn sử dụng hai lần:

python3 -c "from jupyter_server.auth.security import passwd; print(passwd())"

Kết quả trả về sẽ là một chuỗi băm bắt đầu bằng 'sha1:...'. Hãy ghi lại chuỗi này.

Tạo và Chỉnh sửa Tệp Cấu hình JupyterLab

Đầu tiên, tạo một tệp cấu hình mặc định cho JupyterLab:

jupyter lab --generate-config

Lệnh này sẽ hiển thị đường dẫn đến tệp cấu hình, thường là ~/.jupyter/jupyter_lab_config.py. Mở tệp này bằng một trình soạn thảo văn bản như nano:

nano ~/.jupyter/jupyter_lab_config.py

Tìm và chỉnh sửa các dòng sau trong tệp cấu hình của bạn (bỏ dấu # nếu có và thay đổi giá trị). Lưu ý rằng các biến cấu hình có thể là c.NotebookApp hoặc c.ServerApp tùy thuộc vào phiên bản JupyterLab của bạn. Các phiên bản mới hơn sử dụng c.ServerApp:

c.ServerApp.allow_root = True          # Cho phép chạy JupyterLab với quyền root (cẩn trọng khi sử dụng trong môi trường sản xuất)
c.ServerApp.ip = '0.0.0.0'              # Cho phép truy cập từ mọi địa chỉ IP
c.ServerApp.notebook_dir = '/opt/jupyter_data' # Đặt thư mục làm việc gốc cho JupyterLab. Hãy tạo thư mục này: `mkdir -p /opt/jupyter_data`
c.ServerApp.open_browser = False        # Không tự động mở trình duyệt khi khởi chạy trên máy chủ
c.ServerApp.password = 'sha1:...'       # Thay thế bằng chuỗi băm mật khẩu bạn đã tạo
c.ServerApp.port = 8888                 # Đặt cổng truy cập, ví dụ 8888

Lưu lại tệp cấu hình.

Kiểm tra phiên bản JupyterLab và xây dựng các thành phần frontend (nếu cần, quá trình này có thể mất một chút thời gian):

jupyter lab --version
jupyter lab build

Cấu hình Nhóm Bảo mật (Security Group)

Đây là một bước quan trọng. Bạn cần cấu hình tường lửa của máy chủ đám mây (thường gọi là Security Group hoặc Network Access Control List) để cho phép lưu lượng truy cập đến cổng mà bạn đã cấu hình cho JupyterLab (ví dụ: 8888). Truy cập bảng điều khiển của nhà cung cấp dịch vụ đám mây của bạn và thêm một quy tắc inbound (vào) cho cổng 8888 (hoặc cổng bạn chọn) từ các địa chỉ IP mong muốn (thường là 0.0.0.0/0 để truy cập từ mọi nơi, nhưng bạn có thể hạn chế nó để tăng cường bảo mật).

Truy cập JupyterLab từ xa

Sau khi đã hoàn tất cấu hình, bạn có thể khởi chạy JupyterLab trên máy chủ. Để JupyterLab tiếp tục chạy ngay cả khi bạn đóng phiên SSH, hãy sử dụng nohup&:

nohup jupyter lab --allow-root &

Lúc này, bạn có thể mở trình duyệt web trên máy tính cá nhân và truy cập vào địa chỉ http://your_public_ip:8888. Lần đầu tiên truy cập có thể hơi chậm. Nhập mật khẩu bạn đã thiết lập để đăng nhập.

Quản lý Tiện ích mở rộng (Extensions)

JupyterLab có một hệ sinh thái tiện ích mở rộng phong phú. Bạn có thể xem danh sách các tiện ích đã cài đặt:

jupyter labextension list

Để cài đặt một tiện ích, ví dụ như tiện ích hỗ trợ xem trước HTML:

jupyter labextension install @mflevine/jupyterlab_html

Để gỡ bỏ một tiện ích:

jupyter labextension uninstall @mflevine/jupyterlab_html

Cập nhật tất cả các tiện ích:

jupyter labextension update --all

Cài đặt Tiện ích GitHub (Ví dụ)

Để tích hợp GitHub, bạn cần tạo một Personal Access Token từ tài khoản GitHub của mình. Sau khi có token, cài đặt tiện ích:

jupyter labextension install @jupyterlab/github

Sau đó, thêm token vào tệp cấu hình JupyterLab (~/.jupyter/jupyter_lab_config.py):

c.GitHubConfig.access_token = '<YOUR_ACCESS_TOKEN>'

Quản lý Kernels Python

JupyterLab cho phép bạn sử dụng nhiều kernel khác nhau cho các ngôn ngữ lập trình hoặc môi trường Python khác nhau. Để JupyterLab nhận diện kernel Python 3, hãy cài đặt ipykernel:

sudo pip3 install ipykernel
python3 -m ipykernel install --user --name=python3_env --display-name="Python 3 (Môi trường của tôi)"

Xem danh sách các kernel đã cài đặt:

jupyter kernelspec list

Để xóa một kernel không cần thiết:

jupyter kernelspec remove <kernel_name>

Cấu hình Tên miền và HTTPS (Tùy chọn)

Đối với các trường hợp sử dụng chuyên nghiệp hoặc khi bạn muốn truy cập qua một tên miền dễ nhớ và bảo mật hơn, bạn có thể cấu hình Nginx làm reverse proxy và thiết lập chứng chỉ SSL/TLS (HTTPS). Điều này bao gồm:

  • Đăng ký một tên miền và trỏ nó đến địa chỉ IP công cộng của máy chủ.
  • Cài đặt Nginx trên máy chủ.
  • Cấu hình Nginx để chuyển tiếp các yêu cầu từ tên miền của bạn đến cổng JupyterLab (ví dụ: 8888).
  • Sử dụng Certbot (Let's Encrypt) để tự động hóa việc cấp phát và gia hạn chứng chỉ SSL/TLS.

Mặc dù việc này cung cấp thêm bảo mật và sự tiện lợi, nhưng nó không bắt buộc đối với việc sử dụng cá nhân.

Thẻ: JupyterLab python Cloud Server linux Ubuntu

Đăng vào ngày 13 tháng 9 lúc 07:51