You are currently viewing GPTibo: self-host cả shop bán hàng số, admin và backend Go chỉ trong một repo

GPTibo: self-host cả shop bán hàng số, admin và backend Go chỉ trong một repo

Một repo vừa lên GitHub hôm 13/10 và đã có 817 sao sau khoảng một ngày. Tên nó là GPTibo, mô tả ngắn gọn: “Self-hosted GPTibo storefront, admin and Go backend, sanitized MIT source”. Nghe thì giống mấy dự án shop clone, nhưng đọc README kỹ thì thấy phạm vi nó rộng hơn tôi tưởng.

Đây là mã nguồn của một site bán hàng số đã dừng vận hành, được làm sạch dữ liệu nhạy cảm rồi mở theo MIT. Không phải demo, không phải boilerplate. Nó là cái shop thật, chỉ là đã bị gỡ merchant, key, tài khoản và dữ liệu sản xuất ra khỏi source.

Repo này làm gì, giải quyết vấn đề gì

GPTibo gộp nhiều thứ lẽ ra phải chạy trên ba bốn hệ thống riêng vào một chỗ: trang bán hàng cho người dùng cuối, trang quản trị, và một “代理工作台” (partner workbench, tức bảng điều khiển cho đại lý hoặc cộng tác viên bán lại). Toàn bộ nằm trong một repo, một lần deploy.

Cụ thể ở phía người mua: hiển thị sản phẩm và gói, đặt hàng, theo dõi trạng thái thanh toán, tra cứu đơn, gửi yêu cầu hậu mãi. Giao diện có hai ngôn ngữ (Trung và Anh) và hai theme sáng tối.

Phía admin: đặt giá, quản lý đơn và khách, xử lý hoàn tiền, quản lý đại lý, cấu hình đối soát và thông báo.

Phía partner: mỗi đại lý có shop riêng, brand riêng, có thể gắn tên miền riêng, tự quản lý sản phẩm, xem thống kê đơn và quản lý đại lý cấp dưới. Đây là phần khá hiếm trong mấy dự án mã nguồn mở cùng loại. Muốn làm mô hình cộng tác viên phân phối thì gần như phải tự viết từ đầu, còn ở đây có sẵn.

Vấn đề nó giải quyết khá thực tế: nếu bạn đang bán key, tài khoản, license hay bất kỳ thứ gì giao ngay sau khi thanh toán, bạn thường phải ghép một CMS với một payment gateway, một hệ thống email, một dashboard đại lý, và tự viết phần callback cộng trừ tồn kho. GPTibo gom những mảnh đó lại, kèm migration database, Docker Compose, test tự động và GitHub Actions chạy sẵn.

Vì sao nó đang hot

817 sao trong khoảng một ngày với repo không có topic nào là con số đáng để nhìn. Repo tạo ngày 13/10, cập nhật 14/10, tức là mới tinh. Phần lớn sao đến từ việc nó là source của một site đã chết, dân tò mò muốn xem bên trong một shop hàng số thật được viết thế nào.

Điểm khác biệt nằm ở chỗ nó cho bạn hai lựa chọn backend. Một bản Go dùng Gin với PostgreSQL, chạy API và worker thành hai process riêng. Một bản Cloudflare Workers với D1, deploy gần như không cần server. Cùng một frontend React 19 + TypeScript + Vite + Tailwind phục vụ cả hai. Ai muốn tự vận hành thì chọn Go, ai muốn chi phí gần bằng không và không muốn quản VPS thì chọn Workers. Cách chia này khá thực dụng, không phải kiểu “hỗ trợ mọi thứ” cho có.

Cũng phải nói rõ: repo không kèm merchant, không kèm key, không kèm adapter thật của bên thứ ba. Payment và nhà cung cấp được thay bằng adapter ẩn danh với tên chung chung như gatewaya, gatewayb, recharge, account_supplier, delivery_supplier, xgift. Tức là bạn phải tự map với dịch vụ của mình. Điều này vừa là lý do nó được mở, vừa là lý do nhiều người vào xem rồi đóng tab: không cắm là chạy được ngay.

Cài thử nhanh

Yêu cầu chung: Node.js 24, npm, Git, Python 3. Clone và cài dependency trước:

git clone https://github.com/CoolkHz/gptibo.git
cd gptibo
npm ci

Sau đó chọn một trong hai backend.

Cách 1: Go + PostgreSQL. Chạy ở thư mục gốc repo:

cd services/storefront
python3 scripts/init-secrets.py
cp .env.example .env
docker compose config --quiet
docker compose build api
docker compose up -d --wait postgres
docker compose --profile maintenance run --rm maintenance migrate
docker compose --profile maintenance run --rm maintenance grant-runtime
docker compose up -d --wait api worker

Mở terminal khác, từ gốc repo, chạy frontend:

npx vite --config services/storefront/vite.config.ts

Vào http://127.0.0.1:5175. Vite sẽ proxy /api sang Go API ở cổng 8093. Máy Windows thì dùng scripts/init-secrets.ps1 thay cho script Python.

Cách 2: Cloudflare Workers + D1. Cũng từ gốc repo:

cp .dev.vars.example .dev.vars
npx wrangler d1 migrations apply gptibo-local --local
npm run preview:worker

Worker chạy ở http://127.0.0.1:8787. Nếu cần hot reload frontend, mở terminal khác chạy npm run dev và vào http://127.0.0.1:5173.

Ba trang chính: / cho shop, /admin cho quản trị, /partner cho đại lý. Lưu ý là không có tài khoản admin mặc định nào đăng nhập được. Muốn vào admin phải tự cấu hình identity, TOTP và dịch vụ email xác thực. Ví dụ sản phẩm và giá trong repo chỉ để demo.

Ai nên dùng, dùng trong trường hợp nào

Hợp nhất với người đang vận hành shop bán key hoặc tài khoản số quy mô nhỏ đến vừa, đã có sẵn nhà cung cấp và cổng thanh toán, chỉ thiếu phần mềm. Bạn cắm adapter vào, chạy migrate, thế là có storefront, admin và bảng đại lý.

Cũng hợp với ai muốn dựng mô hình cộng tác viên bán hàng: mỗi partner có shop riêng, tên miền riêng, tự set giá hoặc nhận giá từ cấp trên. Viết phần này từ đầu tốn không ít thời gian, còn ở đây nó đã có route và UI.

Không hợp với người muốn “clone rồi bán luôn trong 5 phút”. Bạn sẽ phải đọc .env.integrations.example, hiểu format callback, map sản phẩm, ký request với gateway. Không có adapter thật thì hệ thống chạy nhưng không giao dịch được.

So sánh ngắn

Tôi không chắc có dự án mã nguồn mở nào cùng phân khúc với đúng bộ tính năng này, nên không đặt lên bàn cân với hàng thương mại kiểu Shopify hay WooCommerce. Khác biệt cơ bản: Shopify giải quyết thanh toán và fulfillment hộ bạn, GPTibo thì đưa code cho bạn tự lo phần đó. Đổi lại bạn kiểm soát được toàn bộ luồng đơn, dữ liệu khách và logic đại lý, thứ mà mấy nền tảng SaaS không cho chạm vào.

Về mặt kỹ thuật, việc có sẵn bản Cloudflare Workers là điểm cộng so với các shop self-host truyền thống vốn bắt buộc phải có VPS và Postgres. Chạy trên D1 nghĩa là gần như không có hóa đơn hạ tầng cố định, đổi lại bạn bị ràng vào hệ sinh thái Cloudflare.

Ưu, nhược và mấy chỗ cần để ý

Ưu điểm rõ nhất: code thật của một site đã vận hành, có test, có CI, có security scan bằng Gitleaks, có migration và Docker Compose. MIT license, dùng thương mại thoải mái miễn giữ copyright. Frontend React 19 + TypeScript, backend Go, ai quen stack này đọc không mất nhiều thời gian.

Nhược điểm thì cũng rõ. Đây là bản “sanitized”, migration đã ẩn danh nên không tương thích với database production cũ, README ghi thẳng phải cài trên database mới. Adapter đều là tên giả, muốn chạy thật phải tự viết hoặc tự map. Tài liệu phần lớn bằng tiếng Trung, dù README có bản tiếng Anh. Và repo mới một ngày tuổi, chưa ai biết maintainer có tiếp tục merge PR hay không.

Còn một điểm khá quan trọng: README nói bản công khai chỉ có adapter phía storefront, “不包含独立供货平台及供应商执行系统”, tức là không kèm hệ thống cung ứng độc lập và hệ thống thực thi phía nhà cung cấp. Nếu bạn hình dung ra một nền tảng bán hàng số hoàn chỉnh từ đầu đến cuối thì thiếu mảnh đó. Phần bạn nhận được là mặt tiền và phần xử lý đơn, không phải toàn bộ chuỗi cung ứng.

Cuối cùng, đừng deploy lên production rồi test bằng tiền thật ngay. Test tự động trong repo không kết nối payment hay supplier thật, nên luồng giao dịch đầy đủ bạn phải tự kiểm trong môi trường của mình trước.

Nếu bạn đang cần một nền móng để tự dựng shop hàng số có đại lý, 817 sao trong một ngày là tín hiệu đủ để bỏ ra một buổi tối đọc code. Còn nếu chỉ muốn bán vài chục đơn mỗi tháng, có lẽ không đáng công mổ xẻ cả một hệ thống. Repo ở đây: CoolkHz/gptibo.

Đăng ngày 18/10/2026
Giang Na
Về tác giả: Giang Na
Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.

Giang Na

Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.