{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "gpuType": "T4" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "markdown-1" }, "source": [ "# LPR Server on Google Colab\n", "Notebook này dùng để chạy Backend Server của dự án LPR miễn phí với GPU T4. Sau khi chạy, bạn sẽ nhận được một đường link Public URL để cấu hình cho Client trên Render." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "code-1" }, "outputs": [], "source": [ "!git clone https://github.com/DusTran0804/VLM-Finetuned.git\n", "%cd VLM-Finetuned\n", "!pip install -r requirements.txt\n", "!npm install -g localtunnel" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "code-2" }, "outputs": [], "source": [ "import subprocess\n", "import time\n", "import urllib.request\n", "\n", "# Khởi động FastAPI server ở chế độ nền\n", "subprocess.Popen([\"uvicorn\", \"server:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\"])\n", "print(\"⏳ Đang khởi động Server...\")\n", "time.sleep(5)\n", "\n", "# Khởi động localtunnel để lấy URL\n", "!nohup lt --port 8000 > lt.log 2>&1 &\n", "time.sleep(3)\n", "\n", "# Lấy IP để xác minh bảo mật của localtunnel\n", "ip = urllib.request.urlopen('https://ipv4.icanhazip.com').read().decode('utf8').strip(\"\\n\")\n", "\n", "print(\"\\n\" + \"=\"*50)\n", "print(f\"🔑 MẬT KHẨU IP CỦA BẠN LÀ: {ip}\")\n", "print(\"=\"*50 + \"\\n\")\n", "print(\"🌐 ĐƯỜNG LINK PUBLIC URL CỦA BẠN LÀ:\")\n", "!cat lt.log\n", "print(\"\\n👉 HƯỚNG DẪN:\")\n", "print(\"1. Bấm vào link trên.\")\n", "print(\"2. Dán Mật khẩu IP vào ô 'Endpoint IP' và bấm Submit.\")\n", "print(\"3. Copy cái link đó và dán vào biến API_URL trên phần cài đặt Environment của lpr-client trên Render.\")" ] } ] }