1. Deployment
Traffic Tool
  • Traffic Tool Docs
    • Tổng quan
      • Tổng Quan
      • Setup Guide
      • System Architecture
      • Code Structure
      • Logs and Monitoring
      • Environment & Configuration
      • Deployment
        • Local
        • Staging
        • Product
    • Bussiness | Logic
      • 1. Thống kê hàng ngày (Daily Statistics)
      • 2. Thống kê hệ thống (System Statistics)
      • 3. Tìm kiếm tự động (Automated Discovery)
      • 4. Trung tâm Báo cáo (Report Center)
      • 5. Quản lý tài khoản (Account Management)
      • 6. Quản lý Hệ thống (System Management)
      • 7. Quản lý tài khoản Google (Google Account Management)
    • Project
      • ADMIN
        • Tổng quan
        • Hướng dẫn sử dung
          • Đăng Nhập & Xác Thực Hai Bước
          • Thống Kê Hệ Thống
          • Thống Kê Hàng Ngày
          • Tìm Kiếm Tự Động
          • Trung Tâm Báo Cáo
          • Quản Lý Tài Khoản
          • Quản Lý Server
          • Quản Lý Proxy
          • Quản Lý Gói Proxy
          • Quản Lý Nhà Cung Cấp Proxy
          • Quản Lý Backup Proxy
          • Quản Lý Tài Khoản Google
          • User Guide
        • Architecture
          • System Architecture
          • Code Structure
          • Environment & Configuration
          • Logs and Monitoring
        • Deployment
          • Local
          • Staging
          • Production
      • API
        • Tổng quan
        • Architecture
          • Database Schema
          • System Architecture
          • Code Structure
          • Environment & Configuration
          • Logs and Monitoring
        • Deployment
          • Local
          • Staging
          • Production
        • API Interface
          • 🔑 Identity & Session
            • Đăng nhập hệ thống (Login)
            • Đăng ký tài khoản mới (Public)
            • Lấy danh sách người dùng (Phân trang)
            • Admin tạo người dùng mới
            • Lấy thông tin cá nhân hiện tại
            • Khởi tạo bảo mật 2FA
            • Xác thực mã OTP
            • Chi tiết người dùng theo ID
            • Cập nhật thông tin người dùng
            • Xóa tài khoản người dùng
            • Đổi mật khẩu
            • Kiểm tra Cấu hình Thông báo Telegram Toàn hệ thống
            • Bật/Tắt Thông báo Telegram Toàn cục
          • 📁 Campaign Management
            • Danh sách Chiến dịch Toàn cầu
            • Khởi tạo Chiến dịch Mới
            • Chi tiết Chiến dịch
            • Cập nhật Chiến dịch
            • Xóa Chiến dịch
            • Tắt/Mở Chiến dịch (Hàng loạt)
            • Dữ liệu Hình mẫu SEO (Negative SEO)
          • ⚙️ Project Mechanics
            • Danh sách Dự án (Projects List)
            • Khởi tạo Kịch bản Mô phỏng
            • Lấy chi tiết cấu hình Dự án
            • Cập nhật Kịch bản chạy
            • Xóa Dự án
            • Chỉnh sửa Hàng loạt (Bulk)
            • Bật/Tắt Dự án
          • 👤 Profile Management
            • Danh sách Vân tay số (Profiles Data)
            • Tạo Hồ sơ Đơn lẻ (Tạo Vân tay mới)
            • Nhập kho Tài khoản Email (Bulk Import)
            • Chi tiết Session/Cookies
            • Chỉnh sửa Hồ sơ/Ghi chú
            • Xóa Vân tay số và Dữ liệu Local
            • Mở khóa Captcha/Trạng thái Blocked
            • Tra cứu Kho Profile Khả dụng
            • Báo cáo Sức khỏe Kho Tài Khoản
          • 🦾 Worker Interface
            • Đăng ký Khởi tạo Node (Handshake)
            • Nhịp Tim Khảo Sát Tình Trạng (Heartbeat)
            • Nhận Cấu hình Bypass & Hệ thống
            • Kéo (PULL) Nhiệm vụ Traffic SEO
            • Báo cáo Sự cố Node (Crash Report)
          • 📊 Report: Execution
            • Kéo Công việc Báo cáo (Worker Pull)
            • Quản lý Giám sát Nhiệm vụ (Task Dashboard)
            • Bắn Lại Báo Cáo Thất Bại (Manual Retry)
          • 📊 Report: Discovery
            • Danh sách Tên miền Chờ Xử Lý (Discovery Pool)
            • Nhập Mục Tiêu Thủ Công (Manual Insert)
            • Kích hoạt Heuristic Scanner (Cào tự động)
            • Chi tiết Bằng Chứng (Evidence Data)
            • Dán nhãn Vi Phạm / Cập nhật Screenshot
            • Loại Bỏ Mục Tiêu
            • Duyệt Yêu Cầu (Approve to Execution)
          • 📊 Report: Platforms Configuration
            • Truy vấn Danh sách Nền tảng Đối tác (Vendor)
            • Tạo Nền tảng Vendor Báo cáo Mới
            • Bật/Tắt Trang báo cáo theo Loại
            • Cập nhật Metadata Trang
            • Xóa Trang Báo Cáo
            • Lấy Cài đặt LLM cho Vendor cụ thể
            • Cập nhật Cài đặt Tạo mẫu LLM
            • Lấy Cấu hình Schema Biểu mẫu cho Vendor
            • Cập nhật Yêu cầu Trường Biểu mẫu
          • 📊 Report: Email Automation
            • Danh sách SMTP/Mailer Server
            • Thêm kết nối SMTP Mới
            • Nhật ký Nhiệm vụ Gửi Mail (Email Log)
            • Phân tích Tỉ lệ Chuyển đổi (Email Delivery Analytics)
          • 🌐 Global Proxies
            • Danh sách Kho Proxy Phân trang (Proxy Pool)
            • Thêm mới Tuyến IP (Bulk Import)
            • Cập nhật Thông tin máy chủ Proxy
            • Xóa Proxy (Thu hồi tài nguyên)
            • Kích hoạt Xoay vòng (Rotate IP) Cưỡng bức
          • 📈 System Intelligence
            • Báo cáo Luồng Bảo mật Hợp nhất (Colossal Report)
            • Bản Đồ Lưu Lượng GeoIP (Heatmap)
          • 🪝 Webhook Integrations
            • Callback Hoàn tất Gói Lưu lượng SEO (Traffic Node)
            • Callback Thông báo Hoàn tất Bắn Report AI
      • Tool
        • Tổng quan
        • Architecture
          • System Architecture
          • Code Structure
          • Environment & Configuration
          • Logs And Monitoring
          • Database Schema
        • Deployment
          • Local
          • Staging
          • Production
        • API interface
          • Tasks
            • Lấy tasks có phân trang và lọc
            • Xóa tất cả tasks
            • Get all tasks
            • Cập nhật một task
            • Xóa một task theo ID
            • Get all tasks
          • Group task
            • Tạo nhiều task groups
            • Lấy tất cả task groups
            • Xóa tất cả task groups
            • Xóa một task group theo ID
            • Endpoint /api/task-traffics/
            • Test parse proxy string
            • Endpoint /api/task-traffics/
          • Test
            • Mock proxy endpoint cho development
            • Mock profile endpoint cho development
            • Endpoint /api/test
            • Endpoint /api/test/account-stats
            • Endpoint /api/test/session-recommendation
            • Endpoint /api/test/check-browser
            • Endpoint /api/test/clear-browser-sessions
          • Proxies
            • Lấy tất cả proxy records
            • Tạo proxy record mới
            • Xóa tất cả proxies
            • Get all proxies
            • Xóa một proxy theo ID
            • Reset proxy process counter
            • Get all proxies
            • Get all proxies
          • Report Platforms
            • Submit report to multiple platforms
            • Submit report to specific platform
            • Get available platforms
            • Get platform statistics
            • Health check
          • Reports
            • Create a new report
            • Create a new report
            • Get report by ID
            • Get report by ID
            • Get report statistics
            • Get report groups
            • Get report groups
            • Get report group
            • Add report to group
            • Bulk add reports to group
            • Get report group statistics
            • Get analytics data
            • Get platform success rates
            • Get reports by platform
            • Get reports by group
            • Create test reports in bulk
            • Tạo PC report CSV
            • Lấy PC report JSON
            • Lấy report tasks
            • Giám sát report tasks
            • Report tasks đang hoạt động
            • Chi tiết report task
            • Thống kê reports
            • Dữ liệu biểu đồ reports
            • Lấy danh sách report sites
            • Tạo report site
            • Thống kê sites
            • Toggle site enabled/disabled
            • Toggle tất cả sites
            • Toggle sites theo type
            • Cập nhật hàng loạt AI prompts
            • Cập nhật site
            • Xóa site
            • Lấy cấu hình đầy đủ của site
            • Lấy AI prompt của site
            • Cập nhật AI prompt của site
            • Lấy GPT config của site
            • Cập nhật GPT config
            • Lấy response config của site
            • Cập nhật response config
            • Lấy security vendors đang bật
            • Phân tích keywords
            • Top keywords
            • Thống kê analytics
            • PC report dashboard
            • Lấy report domains
            • Thêm report domain
            • Chi tiết report domain
            • Thống kê hàng ngày
            • Cập nhật hàng loạt reports
          • Test Report
            • Test Microsoft report submission
            • Test AdGuard report submission
            • Test Google Ads report submission
            • Test Spamhaus report submission
            • Test ESET report submission
            • Test multi-platform report submission
            • Get available platforms
          • ESET Test
            • Simple test
            • Minimal POST test
            • Generate ESET report content
            • Get sample test data
            • Test form filling
            • Test full form submission
          • Spamhaus Test
            • Simple test
            • Minimal POST test
            • Generate Spamhaus report content
            • Get sample test data
            • Test Spamhaus form filling
            • Test full Spamhaus form submission
          • Report Scheduler
            • Get report scheduler statistics
            • Process ad detection result
            • Submit a scheduled report
            • Start report scheduler
            • Stop report scheduler
            • Get scheduler status
            • Process scheduled reports
            • Test browser session (non-headless)
            • Test report submission (non-headless)
          • Comprehensive Analytics
            • Get comprehensive dashboard analytics
            • Get overview statistics
            • Get brand-wise statistics
            • Get daily statistics
            • Get platform success rates
            • Get account performance
            • Get summary report
          • Search
            • Tạo nhiều search tasks
            • Lấy tổng số search tasks
          • Report Tasks
            • Tạo report tasks cho một domain
            • Tạo report tasks trực tiếp (hỗ trợ profileCountry và domainType rõ ràng)
            • Tạo report tasks cho nhiều domains cùng lúc
            • Tạo email-based report tasks
            • Lấy report task PENDING tiếp theo
            • Cập nhật status của report task
            • Lấy danh sách platforms có sẵn
            • Thống kê report tasks
            • Kích hoạt thực thi thủ công
          • Monitor
            • Thông tin tài nguyên hệ thống
          • System
            • Hello World
            • Health check
            • Đọc file log từ xa
            • Monitor worker status
          • Auth
            • Đăng nhập
            • Đăng ký tài khoản
          • User Management
            • Danh sách users có phân trang
            • Tạo user mới (Admin only)
            • Lấy tất cả users (không phân trang)
            • Lấy thông tin profile của user hiện tại
            • Tạo QR code TOTP cho 2FA
            • Xác thực TOTP để bật 2FA
            • Lấy user theo ID
            • Cập nhật thông tin user
            • Xóa user
            • Đổi mật khẩu user
          • Campaign Management
            • Danh sách campaigns có phân trang
            • Tạo campaign mới
            • Lấy tất cả campaigns
            • Thống kê tổng hợp campaigns
            • Xuất campaigns ra Excel
            • Lấy dữ liệu Negative SEO
            • Xuất dữ liệu Negative SEO ra Excel
            • Xuất Negative SEO theo IDs
            • Lấy dữ liệu Home Traffic
            • Xuất Home Traffic ra Excel
            • Xuất Home Traffic theo IDs
            • Lấy báo cáo campaigns (Public)
            • Lấy tất cả báo cáo campaigns (Public)
            • Lấy chi tiết campaign
            • Cập nhật campaign
            • Xóa campaign
            • Lấy campaigns đã fired theo type
          • Server Management
            • Danh sách servers có phân trang
            • Tạo server mới
            • Lấy tất cả servers
            • Lấy servers từ MongoDB
            • Báo cáo hiệu suất server
            • Thống kê health check
            • Thống kê task monitor
            • Lịch sử lỗi server
            • Thống kê lỗi server
            • Thay đổi trạng thái server
            • Xóa nhiều servers
            • Lấy server theo ID
            • Cập nhật server
            • Xóa server
            • Báo cáo servers (Public)
          • Project Management
            • Lấy tất cả projects
            • Tạo project mới
            • Lấy projects theo campaign
            • Cập nhật dữ liệu traffic
            • Cập nhật nhiều projects
            • Xóa nhiều projects
            • Lấy project theo ID
            • Cập nhật project
            • Cập nhật state của project
            • Cập nhật status của project
            • Tính lại chi tiết project
          • Task Management
            • Worker yêu cầu tasks
            • Reset task creation
          • Proxy Management
            • Danh sách proxies
            • Tạo proxy mới
            • Xóa tất cả proxies
            • Xuất proxies ra Excel
            • Tải template Excel mẫu
            • Tạo nhiều proxies
            • Import proxies từ Excel
            • Import từ tất cả providers
            • Xóa nhiều proxies
            • Lấy proxy theo ID
            • Cập nhật proxy
            • Xóa proxy
            • Toggle trạng thái proxy
          • Backup Proxy
            • Lấy danh sách backup proxies
            • Tạo backup proxy
            • Xóa nhiều backup proxies
            • Import từ Proxifly
            • Chạy health check
            • Lấy backup proxy theo ID
            • Cập nhật backup proxy
            • Xóa backup proxy
            • Test backup proxy
          • Proxy Providers
            • Lấy danh sách proxy providers
            • Tạo proxy provider
            • Xóa nhiều providers
            • Lấy provider theo ID
            • Cập nhật provider
            • Xóa provider
          • Proxy Packages
            • Lấy danh sách proxy packages
            • Tạo proxy package
            • Xóa nhiều packages
            • Lấy package theo ID
            • Cập nhật package
            • Xóa package
          • Profiles
            • Lấy profiles khả dụng (Public)
            • Lấy profile ngẫu nhiên (Public)
            • Danh sách profiles có phân trang
            • Phân tích profiles
            • Health check profiles
            • Tạo profile session
            • Lấy profile session
            • Cập nhật profile session
            • Xóa profile session
            • Đánh dấu profile đã dùng
            • Cập nhật nhiều profiles
            • Tạo nhiều profiles
            • Dọn dẹp sessions hết hạn
            • Dọn dẹp toàn diện
            • Tạo profile mới
            • Lấy profile theo ID
            • Cập nhật profile
            • Xóa profile
            • Thống kê profile
            • Sessions của profile (phân trang)
            • Report tasks của profile
            • Domains đã report bởi profile
            • Tasks theo domain của profile
            • Reset cooldown của profile
            • Test kết nối profile
            • Reset số lần đăng nhập thất bại
            • Ghi nhận đăng nhập thất bại
          • Keywords
            • Danh sách keywords
            • Tạo keyword mới
            • Xuất keywords ra Excel
            • Xác nhận fire keyword
            • Reset tất cả keywords
            • Lấy keyword theo ID
            • Cập nhật keyword
            • Xóa keyword
            • Reset keyword
            • Cập nhật status keyword
            • Kết quả SERP của keyword
          • Dashboard
            • Dữ liệu tổng hợp dashboard
            • Thống kê hệ thống
            • Thống kê traffic theo ID
            • Dữ liệu bảng biểu đồ traffic
            • Xuất báo cáo ra Excel
            • Lấy dữ liệu báo cáo
            • Cập nhật hàng loạt dashboard
            • Tính lại chi tiết projects (Admin only)
          • System Settings
            • Toggle Telegram notifications
            • Trạng thái Telegram notification
          • Activity Logs
            • Lấy activity logs
          • Locations
            • Lấy tất cả locations
            • Tạo location mới
            • Lấy location theo ID
            • Cập nhật location
            • Xóa location
          • Evidence
            • Kiểm tra evidence tồn tại
            • Kiểm tra evidence hàng loạt
            • Lấy evidence mới nhất
          • Files
            • Upload file
            • Download file
          • Server Hourly Reports
            • Lấy server hourly reports
          • Task Logs
            • Lấy task logs
          • Webhooks - Proxy
            • Lấy proxy cho task (Worker webhook)
            • Lấy proxies có thể rotate (Worker webhook)
            • Báo cáo kết quả proxy rotation (Worker webhook)
            • Lấy backup proxy (Worker webhook)
          • Webhooks - Profile
            • Lấy profiles (admin view, webhook)
            • Lấy profile ngẫu nhiên (Worker webhook)
            • Profiles khả dụng (webhook)
            • Lấy profile session (webhook)
            • Tạo profile session (webhook)
            • Đánh dấu profile đã dùng (webhook)
            • Lấy profile tags (webhook)
            • Lấy tất cả profile sessions (webhook)
          • Webhooks - Task
            • Cập nhật kết quả thực thi task (Worker webhook)
          • Webhooks - Search
            • Báo cáo domains đã click (webhook)
            • Lấy clicked domains (webhook)
            • Báo cáo domains (webhook)
            • Third party callback (webhook)
          • Webhooks - Logs
            • Lấy file logs (webhook)
            • Xóa nội dung log (webhook)
            • Kiểm tra IP address (webhook)
          • Webhooks - Keyword
            • Gửi kết quả SERP keyword (webhook)
          • Webhooks - Report
            • Cập nhật trạng thái report task (webhook)
          • Webhooks - CocCoc Token
            • Lấy CocCoc tokens (webhook)
            • Lock CocCoc token (webhook)
            • Unlock CocCoc token (webhook)
    • Schemas
      • LoginRequest
      • UpdateTask
      • WorkerStatus
      • StandardResponse
      • UserResponseDto
      • CreateTaskGroupRequest
      • HealthResponse
      • UserModel
      • CreateProxy
      • ErrorResponse
      • Pagination
      • CreateUserRequest
      • ReportTaskCreation
      • ErrorResponseFull
      • BulkDeleteRequest
      • UpdateUserRequest
      • CreateEmail
      • MessageResponse
      • UserResponse
      • PagingInfo
      • CreateMultipleSearchRequest
      • TrafficType
      • CampaignResponse
      • ProfileModel
      • CreateMultipleReportRequest
      • ServerResponse
      • CreateProfileRequest
      • UpdateReportStatusRequest
      • Task
      • BulkImportProfileReq
      • TestProxyRequest
      • TaskGroup
      • ProxyResponse
      • UpdateProfileRequest
      • CreateTask
      • UpdateTaskBody
      • KeywordResponse
      • CampaignModel
      • CreateSearch
      • TaskPaginatedResponse
      • LocationResponse
      • CreateCampaignRequest
      • ProxyTestResult
      • UpdateCampaignRequest
      • CreateReportTaskBody
      • BulkUpdateCampaignStatusReq
      • CreateEmailReportTaskBody
      • NegativeSeoData
      • BatchReportTaskItem
      • CreateProjectRequest
      • CreateReportTaskResponse
      • UpdateProjectRequest
      • BatchReportTaskResponse
      • ProjectModel
      • BulkUpdateProjectRequest
      • ReportTask
      • WorkerHandshakeRequest
      • UpdateReportTaskStatusBody
      • WorkerHandshakeResponse
      • UpdateReportTaskStatusResponse
      • WorkerHeartbeatPayload
      • PlatformsListResponse
      • WorkerGlobalSettings
      • ReportTaskStatsResponse
      • TaskPullRequest
      • ExecuteReportTaskResponse
      • WorkerFatalLog
      • CreateSearchTask
      • TaskModel
      • Proxy
      • TaskUpdateDto
      • CreateProxyBody
      • ReportTaskModel
      • CreateProxyResponse
      • ReportTaskResult
      • ResetProcessResponse
      • PCReportResponse
      • MonitorResponse
      • ReportSiteItem
      • CreateReportSiteRequest
      • TestProxyResponse
      • GPTConfig
      • TestProfileResponse
      • ResponseConfig
      • ReportDomainsResponse
      • ReportDomainItem
      • AddReportDomainRequest
      • UpdateReportDomainRequest
      • BulkUpdateDashboardRequest
      • ProxyModel
      • CreateProxyRequest
      • UpdateProxyRequest
      • SMTPServerConfig
      • EmailTaskLog
      • GeoLocation
      • CampaignConfigs
      • ProjectAttribute
      • TaskTrafficType
      • ReportTaskItem
      • SummaryStats
      • DailyStats
      • BrandStats
      • ProfileStats
      • FieldConfig
  1. Deployment

Staging

Triển Khai Môi Trường Staging — Tools V2 Worker Engine#

Phiên bản: 2.5.0
Cập nhật lần cuối: 26/03/2026

1. Tổng Quan Môi Trường Staging#

1.1. Mục Đích#

Môi trường Staging là bước kiểm thử cuối cùng trước khi đưa code lên Production. Staging chạy trên server thực với cấu hình gần giống Production, kết nối với Staging API Backend, và xử lý traffic thực từ các chiến dịch test.
Staging khác với Local ở những điểm cốt lõi:
Chạy trên server Linux thực, không phải máy tính cá nhân.
Triển khai hoàn toàn tự động qua GitLab CI/CD khi push lên nhánh staging-v2.
Build diễn ra trực tiếp trên server (on-server build) bằng docker compose up --build.
Chạy hai instance song song (tool-v2-01 và tool-v2-02) trên cùng một server.
Không có hot-reload, không có debugger, không có bun run dev.
Kết nối với Staging API Backend thay vì localhost:33001.

1.2. Thông Tin Server#

Server: 77.37.47.88
SSH Port: 23821
SSH User: Được lưu trong GitLab CI/CD Variable TRAFFIC_DEV_77_37_47_88_USER
SSH Key: Được lưu trong GitLab CI/CD Variable TRAFFIC_DEV_77_37_47_88_KEY (base64 encoded)
Server này dùng chung cho cả Develop và Staging, phân biệt bằng thư mục deploy:
Develop: /home/traffic/project/traffic/dev/
Staging: /home/traffic/project/traffic/stg/

1.3. Hai Instance Song Song#

Staging chạy hai instance Tools V2 độc lập:
tool-v2-01: Instance thứ nhất, thư mục /home/traffic/project/traffic/stg/tool-v2-01/.
tool-v2-02: Instance thứ hai, thư mục /home/traffic/project/traffic/stg/tool-v2-02/.
Mỗi instance có file .env riêng với cấu hình khác nhau (proxy pool, SERVER_ID, port). Điều này cho phép test đồng thời với hai cấu hình khác nhau và phát hiện race conditions.

2. Quy Trình Triển Khai Tự Động#

2.1. Kích Hoạt Pipeline#

Pipeline staging được kích hoạt khi có commit mới vào nhánh staging-v2:
Hoặc tạo Merge Request từ develop-v2 vào staging-v2 trên GitLab và merge.

2.2. Cấu Hình Pipeline#

2.3. Các Bước Thực Thi#

Bước 1 — Xác thực SSH:
SSH key được decode từ base64 và load vào ssh-agent. StrictHostKeyChecking no được set để tránh prompt xác nhận host.
Bước 2 — Cập nhật deploy wrapper (tool-v2-01):
Thư mục tool-v2-01 là wrapper repo chứa docker-compose.yml và .env. Nó có submodule build/tools trỏ đến repo code chính.
Bước 3 — Cập nhật code nguồn (tool-v2-01):
Checkout đúng nhánh staging-v2 trong submodule.
Bước 4 — Build và restart (tool-v2-01):
--build rebuild Docker image từ source code mới. -d chạy detached.
Bước 5 — Lặp lại cho tool-v2-02:
Tương tự bước 2-4 nhưng cho thư mục tool-v2-02.
Bước 6 — Dọn dẹp:
Xóa các Docker images không còn được dùng để giải phóng disk space.

3. Cấu Trúc Thư Mục Trên Server#

3.1. Thư Mục Deploy#

/home/traffic/project/traffic/stg/
├── tool-v2-01/                    ← Instance 01
│   ├── docker-compose.yml         ← Docker Compose config
│   ├── .env                       ← Biến môi trường instance 01
│   └── build/
│       └── tools/                 ← Submodule: source code (nhánh staging-v2)
│           ├── src/
│           ├── package.json
│           ├── tsconfig.json
│           └── ...
└── tool-v2-02/                    ← Instance 02
    ├── docker-compose.yml
    ├── .env                       ← Biến môi trường instance 02
    └── build/
        └── tools/                 ← Submodule: source code (nhánh staging-v2)

3.2. Kiến Trúc Submodule#

Mỗi instance là một repo riêng (wrapper repo) chứa:
docker-compose.yml: Cấu hình Docker Compose cho instance đó.
.env: Biến môi trường riêng của instance.
build/tools/: Git submodule trỏ đến repo code chính tool-v2.git.
Khi deploy, pipeline cập nhật cả wrapper repo (git pull origin) và submodule (git checkout staging-v2 && git pull origin staging-v2).

4. Cấu Hình Môi Trường Staging#

4.1. Khác Biệt So Với Local#

BiếnLocalStaging
NODE_ENVdevelopmentproduction
DEBUGtruefalse
API_HOSThttp://localhost:33001URL Staging API
SERVER_ID"127.0.0.1"IP thực của server
BROWSER_LIMIT_PER_PROCESS1 (forced)Theo cấu hình server
LOG_LEVELdebuginfo
LOG_COLORIZEDtruefalse
DB_MONGO_HOSTlocalhostContainer name trong Docker network

4.2. Cấu Hình .env Staging#

File .env trên server staging (không commit vào Git, được cấu hình thủ công trên server):
# Server
PORT=3005
NODE_ENV=production
DEBUG=false
RUNTIME=bun
SERVER_ID="77.37.47.88-01"   # Instance 01

# Authentication
API_KEY='staging-api-key'
WEBHOOK_API_KEY='staging-webhook-key'
PROXY_API_KEY='staging-proxy-key'
IP_ALLOWED=127.0.0.1,staging-api-ip

# Go API Backend (Staging)
API_HOST=https://traffic-api-staging.tenmien.club

# MongoDB
DB_MONGO_HOST=traffic_tool_mongodb_v2
DB_MONGO_PORT=27017
DB_MONGO_USERNAME=root
DB_MONGO_PASSWORD=staging-mongo-password
DB_MONGO_DATABASE=tool-traffic-tools

# Browser limits
BROWSER_LIMIT_PER_PROCESS=10

# Traffic control
TASK_RETRY_LIMIT=8
PROXY_RETRY_LIMIT=15
ENABLE_GEOLOCATION=true

# Anti-Captcha
CAPTCHA_SOLVING_ENABLED=true
CAPTCHA_FALLBACK_TO_MANUAL=true
ANTICAPTCHA_API_KEY=staging-anticaptcha-key
ANTICAPTCHA_BASE_URL=https://api.anti-captcha.com
ANTICAPTCHA_TIMEOUT=300000
ANTICAPTCHA_RETRY_ATTEMPTS=3

# OpenAI
CHATGPT_API_KEY=sk-proj-staging-openai-key
CHATGPT_MODEL=gpt-4o-mini

# Storage
DIGITAL_OCEAN_BUCKET_NAME=tools-greeting1073
DIGITAL_OCEAN_REGION=sgp1
DIGITAL_OCEAN_ACCESS_KEY_ID=staging-do-key-id
DIGITAL_OCEAN_SECRET_ACCESS_KEY=staging-do-secret
DIGITAL_OCEAN_ENDPOINT=https://sgp1.digitaloceanspaces.com
DIGITAL_OCEAN_CDN_URL=https://tools-greeting1073.sgp1.cdn.digitaloceanspaces.com

# SMTP
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=staging-email@gmail.com
SMTP_PASS=staging-app-password

# Logging
LOG_LEVEL=info
LOG_COLORIZED=false
LOG_WRITE_TO_FILE=true
LOG_WRITE_TO_CONSOLE=true
LOG_TIMESTAMP=true
LOG_FOR_RECORD=true
ENABLE_SCREENSHOTS=true
Instance 02 dùng cấu hình tương tự nhưng SERVER_ID="77.37.47.88-02" và có thể dùng proxy pool khác.

4.3. Biến GitLab CI/CD Cần Thiết#

Các biến sau phải được cấu hình trong GitLab CI/CD Settings → Variables:
BiếnMô tả
TRAFFIC_DEV_77_37_47_88_KEYSSH private key (base64 encoded) để kết nối server 77.37.47.88
TRAFFIC_DEV_77_37_47_88_USERUsername SSH của server
TRAFFIC_DEV_77_37_47_88_IPIP của server: 77.37.47.88
TRAFFIC_DEV_77_37_47_88_PORTSSH port: 23821
Tất cả biến này phải được đánh dấu Protected và Masked trong GitLab.

5. Docker Compose Trên Staging#

5.1. Cấu Trúc docker-compose.yml#

Trên staging, docker-compose.yml trong mỗi instance wrapper repo build trực tiếp từ source code:

5.2. On-Server Build#

Khác với Production (pull image từ ECR), Staging build Docker image trực tiếp trên server:
docker compose up --build -d rebuild image từ Dockerfile mỗi lần deploy.
Source code được copy vào image trong quá trình build.
Không cần AWS ECR hay Bastion Build Server.
Build mất khoảng 3-5 phút mỗi lần deploy.

5.3. Hai Instance Trên Cùng Server#

Hai instance chạy trên cùng server nhưng độc lập:
Mỗi instance có Docker network riêng.
Mỗi instance có MongoDB container riêng.
Mỗi instance có port riêng (3005 và 3006 hoặc cấu hình khác).
Mỗi instance có SERVER_ID riêng để Go API phân biệt.

6. Triển Khai Thủ Công Lên Staging#

6.1. Khi Nào Cần Triển Khai Thủ Công#

Triển khai thủ công cần thiết khi:
Pipeline CI/CD thất bại và cần debug trực tiếp trên server.
Cần cập nhật file .env mà không muốn trigger pipeline.
Cần rollback về commit cũ hơn.
Cần restart container mà không rebuild.

6.2. SSH Vào Server#

6.3. Cập Nhật Code Thủ Công#

6.4. Restart Không Rebuild#

Khi chỉ cần restart container (ví dụ sau khi sửa .env):

6.5. Rollback Về Commit Cũ#


7. Kiểm Tra Sau Khi Deploy#

7.1. Kiểm Tra Container Đang Chạy#

7.2. Kiểm Tra Health#

7.3. Kiểm Tra Trạng Thái#

7.4. Xem Log Khởi Động#

7.5. Kiểm Tra Kết Nối Go API#

Nếu không thấy log này hoặc thấy lỗi kết nối, kiểm tra API_HOST trong .env.

8. Xử Lý Sự Cố Triển Khai#

8.1. Pipeline Thất Bại Do Lỗi SSH#

Kiểm tra biến TRAFFIC_DEV_77_37_47_88_KEY trong GitLab CI/CD Variables:
Biến phải được đánh dấu Protected.
Giá trị phải là SSH private key được encode base64.
Không có ký tự thừa hoặc newline.
Kiểm tra SSH key hợp lệ:

8.2. Docker Build Thất Bại#

Nguyên nhân thường gặp:
Lỗi cài đặt npm packages: Kiểm tra package.json và bun.lock.
Lỗi cài Chrome: Network issue khi download Chrome package.
Lỗi disk đầy: Chạy docker system prune -a để dọn dẹp.

8.3. Container Khởi Động Rồi Tắt Ngay#

Nguyên nhân thường gặp:
File .env thiếu biến bắt buộc.
MongoDB chưa sẵn sàng khi Tools V2 khởi động (race condition).
Lỗi kết nối Go API Backend.
Port đã bị chiếm bởi instance khác.
Giải pháp cho race condition với MongoDB:

8.4. Ổ Cứng Server Đầy#

8.5. Hai Instance Xung Đột Port#

Nếu cả hai instance dùng cùng port, instance thứ hai sẽ không khởi động được:

9. Quản Lý Hai Instance#

9.1. Mục Đích Hai Instance#

Hai instance song song cho phép:
Test với hai cấu hình proxy pool khác nhau cùng lúc.
So sánh performance giữa hai cấu hình.
Phát hiện race conditions khi nhiều workers cùng request tasks từ Go API.
Tăng throughput tổng thể của staging environment.

9.2. Cấu Hình Khác Nhau Giữa Hai Instance#

Instance 01 và 02 thường khác nhau ở:
SERVER_ID: Phải khác nhau để Go API phân biệt.
PORT: Phải khác nhau nếu chạy trên cùng host network.
Proxy configuration: Có thể dùng proxy pool khác nhau.
BROWSER_LIMIT_PER_PROCESS: Có thể điều chỉnh khác nhau để test.

9.3. Kiểm Tra Cả Hai Instance#

9.4. Dừng Một Instance#


10. Quy Trình Kiểm Thử Trên Staging#

10.1. Checklist Trước Khi Merge Lên Staging#

Trước khi merge code lên staging-v2, đảm bảo:
bun run typecheck không có lỗi.
bun run lint không có lỗi.
Code đã được review bởi ít nhất một người khác.
Các tính năng mới đã được test trên local.
Không có breaking changes với Go API Backend.

10.2. Kiểm Tra Sau Khi Deploy Lên Staging#

Sau khi pipeline hoàn thành:
Kiểm tra cả hai containers đang chạy: docker ps.
Kiểm tra health endpoints của cả hai instances.
Xem log để đảm bảo không có lỗi khởi động.
Kiểm tra tasks đang được nhận từ Go API.
Theo dõi trong 15-30 phút để đảm bảo ổn định.

10.3. Kiểm Tra Tính Năng Cụ Thể#

Với mỗi tính năng mới, kiểm tra:
Tạo task trên Admin Dashboard và xem có được thực thi không.
Xem log để đảm bảo flow chạy đúng.
Kiểm tra screenshot bằng chứng trên Admin Dashboard.
Kiểm tra webhook callback về Go API thành công.

10.4. Kiểm Tra Report Tasks#


11. Theo Dõi Staging#

11.1. Xem Log Realtime#

11.2. Đọc Log Files#

11.3. Kiểm Tra System Metrics#

Các ngưỡng cần chú ý trên staging:
ram.used_percent > 80%: Cần giảm BROWSER_LIMIT_PER_PROCESS.
disk.used_percent > 70%: Cần dọn dẹp log và Docker images.
cpu.usage > 85%: Server đang quá tải.

11.4. Kiểm Tra Từ Admin Dashboard#

Sau khi deploy staging, kiểm tra trên Admin Dashboard:
Màn hình Server Management: Cả hai instances phải hiển thị is_active = true.
Màn hình Server Performance: Phải có dữ liệu từ cả hai instances.
Màn hình Task Management: Tasks phải được phân phối cho cả hai instances.

12. Sự Khác Biệt Giữa Staging Và Local#

12.1. Cách Chạy#

Khía cạnhLocalStaging
Khởi độngbun run dev thủ côngTự động qua CI/CD
Hot-reloadCó (--watch)Không
DebuggerCó (--inspect)Không
BuildKhông cần builddocker compose up --build
Số instances12 song song

12.2. Cấu Hình#

Khía cạnhLocalStaging
NODE_ENVdevelopmentproduction
BROWSER_LIMIT_PER_PROCESS1 (forced)Theo cấu hình server
TASK_RETRY_LIMITUnlimited8
LOG_LEVELdebuginfo
API_HOSTlocalhost:33001URL Staging API
MongoDB hostlocalhostContainer name

12.3. Mục Đích#

Khía cạnhLocalStaging
Mục đích chínhPhát triển và debugKiểm thử trước production
Ai dùngDeveloper cá nhânToàn bộ team
Dữ liệuTest data tùy ýGần giống production
UptimeKhông yêu cầuPhải ổn định

13. Nhánh Git Và Quy Trình#

13.1. Nhánh staging-v2#

Nhánh staging-v2 là nhánh ổn định cho staging environment.
Chỉ merge code đã được test kỹ trên local vào staging-v2.
Không commit trực tiếp lên staging-v2 ngoại trừ hotfix khẩn cấp.
Mọi thay đổi phải qua Merge Request với ít nhất một reviewer.

13.2. Luồng Code#

feature/xxx → develop-v2 → staging-v2 → release-v2 → master-v2
feature/xxx: Nhánh tính năng của developer.
develop-v2: Tích hợp các tính năng mới, deploy lên Develop server.
staging-v2: Kiểm thử tổng thể, deploy lên Staging server.
release-v2: Chuẩn bị release, deploy lên Release server.
master-v2: Production, build Docker image và deploy lên Vnetwork.

13.3. Quy Tắc Merge#

Không merge trực tiếp từ feature/xxx lên staging-v2.
Phải merge qua develop-v2 trước.
Staging phải luôn là superset của develop (không có code trên staging mà không có trên develop).

14. Dọn Dẹp Định Kỳ#

14.1. Dọn Dẹp Docker#

14.2. Dọn Dẹp Log Files#

14.3. Dọn Dẹp MongoDB#


15. Checklist Triển Khai Staging#

Trước khi push lên staging-v2:
Code đã pass bun run typecheck không có lỗi.
Code đã pass bun run lint không có lỗi.
Merge Request đã được review và approve.
Không có breaking changes với Staging API Backend.
File .env trên server đã được cập nhật nếu có biến mới.
Sau khi pipeline hoàn thành:
Cả hai containers đang chạy: docker ps.
Health check trả về OK cho cả hai instances.
Log khởi động không có lỗi.
Tasks đang được nhận từ Go API (xem log sau 1-2 phút).
Admin Dashboard hiển thị cả hai instances là active.
Theo dõi ổn định trong 15 phút trước khi kết luận deploy thành công.
Modified at 2026-03-27 02:42:21
Previous
Local
Next
Production
Built with