---
name: tdshift-paas
description: Hướng dẫn sử dụng TDShift PaaS (portal tại https://app.tdshift.info) - nền tảng tự host để tạo tài khoản, tạo project PostgreSQL / Odoo / WordPress / Docker Compose và deploy bằng Docker Compose sau Traefik. Dùng khi người dùng muốn tạo hoặc quản lý project trên TDShift, deploy Docker Compose hoặc image từ GitLab CI/CD, cấu hình biến môi trường, registry, domain riêng, backup/restore, xoá project, hoặc gọi TDShift Agent API.
---

# TDShift PaaS

Portal: `https://app.tdshift.info` · Skill này: `https://app.tdshift.info/skill`

TDShift PaaS là một mini PaaS tự host. Mỗi người dùng đăng ký tài khoản, tạo tối đa 20 project (mặc định), mỗi project chạy thành một Docker Compose stack riêng. Chỉ web service của project được nối vào gateway Traefik chung; database và service phụ nằm trong mạng nội bộ của project.

## Khái niệm cần biết

| Khái niệm | Ý nghĩa |
|---|---|
| Project | Một ứng dụng của người dùng. Có tên hiển thị (1–60 ký tự) và loại. |
| Mã project (tenant) | Dạng `project-xxxxxxxxxx` (10 ký tự hex) do hệ thống sinh. Dùng để xác nhận xoá/restore và làm hostname mặc định. Không tự đặt. |
| UUID | ID công khai của project trong URL (`/projects/<uuid>`) và trong Agent API. Không dùng ID số nội bộ. |
| Loại project | `postgres` (PostgreSQL 17 + pgAdmin) hoặc `compose` (Docker Compose stack). Chọn Odoo hoặc WordPress sẽ tạo project `compose` với Compose preset tương ứng. |
| Trạng thái | `unconfigured` (chưa chọn loại) · `creating` (đang khởi tạo) · `ready` (sẵn sàng thao tác) · `updating` (đang deploy) · `error` · `deleting` · `delete_error`. Chỉ thao tác cấu hình khi `ready`. |
| Địa chỉ project | Chế độ local: `https://<mã project>.localhost:5050`. Chế độ server: `https://<mã project>.<PROJECT_BASE_DOMAIN>`. Luôn lấy địa chỉ hiển thị trên trang project. |

## Cách AI tương tác với hệ thống

1. **Agent API (máy gọi trực tiếp):** dùng Personal API Token dạng Bearer. Người dùng tự tạo token ở trang **Tài khoản** `https://app.tdshift.info/account` → **API Token cho AI** → **＋ Tạo token** ([tai-khoan](https://app.tdshift.info/skill/tai-khoan.md)). Hỗ trợ: liệt kê, tạo project Compose, đọc project, lưu bản nháp Compose, đổi image, cập nhật biến môi trường, registry, đọc cấu hình và deploy. Xem [agent-api](https://app.tdshift.info/skill/agent-api.md).
2. **Giao diện web (người dùng bấm):** mọi việc còn lại (log, domain, backup, xoá...). AI hướng dẫn người dùng từng bước với đúng tên nút trong các skill con, hoặc tự thao tác nếu có công cụ trình duyệt và người dùng đã đăng nhập.

## Quy tắc bắt buộc cho AI

- Không tự đoán UUID, mã project, URL, token, image, branch, service, port. Lấy từ API, từ trang project hoặc hỏi người dùng.
- Không in, không lưu vào file, log, Git, URL hay lịch sử chat các secret: mật khẩu, API token, deploy token, registry token, webhook secret.
- Chỉ báo "đã chạy" khi thấy bằng chứng: trạng thái `ready` không kèm lỗi và danh sách service đang chạy trên trang project (hoặc người dùng mở được website).
- Xoá project, restore backup, đổi/gỡ domain, tắt token là thao tác phá huỷ hoặc khó đảo ngược: chỉ làm khi người dùng yêu cầu rõ ràng.
- Gặp lỗi 409 (project bận) thì chờ và đọc lại trạng thái; không gửi lặp request tạo project.
- Ứng dụng của người dùng chạy bằng **image riêng** build từ repo của họ, không dùng image chung (`nginx`, `node`, `odoo`...) thay cho code của họ. Xem [build-image-rieng](https://app.tdshift.info/skill/build-image-rieng.md).
- Chỉ gọi deploy khi người dùng muốn chạy ứng dụng.

## Skill con

| Việc cần làm | Skill |
|---|---|
| Đăng ký, đăng nhập, lấy / thu hồi Personal API Token (trang Tài khoản) | [tai-khoan](https://app.tdshift.info/skill/tai-khoan.md) |
| Tạo project và chọn loại | [tao-project](https://app.tdshift.info/skill/tao-project.md) |
| Deploy Docker Compose: template, biến môi trường, registry riêng, logs | [deploy-compose](https://app.tdshift.info/skill/deploy-compose.md) |
| Dùng project PostgreSQL + pgAdmin | [postgres](https://app.tdshift.info/skill/postgres.md) |
| Gắn domain riêng, mở PostgreSQL qua TCP/TLS | [domain-rieng](https://app.tdshift.info/skill/domain-rieng.md) |
| Sao lưu và khôi phục dữ liệu | [backup-restore](https://app.tdshift.info/skill/backup-restore.md) |
| Xoá vĩnh viễn project | [xoa-project](https://app.tdshift.info/skill/xoa-project.md) |
| Build image riêng (Dockerfile, GitLab CI) và tự điền cấu hình qua API để PaaS pull và chạy | [build-image-rieng](https://app.tdshift.info/skill/build-image-rieng.md) |
| GitLab CI/CD: build image, Deployment API, webhook | [ci-cd-gitlab](https://app.tdshift.info/skill/ci-cd-gitlab.md) |
| Tham chiếu đầy đủ Agent API | [agent-api](https://app.tdshift.info/skill/agent-api.md) |
| Quản trị hệ thống (chỉ admin) | [quan-tri](https://app.tdshift.info/skill/quan-tri.md) |

Quy trình thường gặp: **tai-khoan → tao-project → deploy-compose → (domain-rieng) → (backup-restore)**.
AI tự làm hết bằng API: **tai-khoan (lấy token) → build-image-rieng → agent-api**.

Nếu đọc skill này từ file trên máy thay vì URL, các skill con là file cùng tên trong cùng thư mục.
