feat: add golang-dependency-injection skill and update gitignore and workspace metadata
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# GATEWAY AUTH
|
||||||
|
# Token để authenticate vào Gateway WebSocket và Control UI
|
||||||
|
# Dùng chuỗi ngẫu nhiên dài ít nhất 32 ký tự cho production
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
OPENCLAW_GATEWAY_TOKEN=team-token
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# GATEWAY NETWORK
|
||||||
|
# Bind mode: loopback | lan | tailnet | auto | custom
|
||||||
|
# loopback → chỉ localhost (an toàn nhất, không cần port mapping)
|
||||||
|
# lan → bind 0.0.0.0 (cần thiết khi dùng Docker port mapping)
|
||||||
|
# Port WebSocket gateway (mặc định 18789)
|
||||||
|
# Port bridge / node (mặc định 18889)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
OPENCLAW_GATEWAY_BIND=lan
|
||||||
|
OPENCLAW_GATEWAY_PORT=18789
|
||||||
|
OPENCLAW_BRIDGE_PORT=18889
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# CLAUDE / AI SESSION KEYS
|
||||||
|
# Lấy từ https://claude.ai (browser DevTools → cookies / session storage)
|
||||||
|
# Cần ít nhất một trong hai để agent hoạt động
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
CLAUDE_AI_SESSION_KEY=
|
||||||
|
CLAUDE_WEB_SESSION_KEY=
|
||||||
|
CLAUDE_WEB_COOKIE=
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# OPENCLAW — MISC
|
||||||
|
# Cho phép kết nối WebSocket không mã hoá qua private network
|
||||||
|
# Timezone container (VD: Asia/Ho_Chi_Minh)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=
|
||||||
|
OPENCLAW_TZ=Asia/Ho_Chi_Minh
|
||||||
|
|
||||||
@@ -8,6 +8,8 @@
|
|||||||
!.openclaw/credentials/.gitkeep
|
!.openclaw/credentials/.gitkeep
|
||||||
.openclaw/*.bak*
|
.openclaw/*.bak*
|
||||||
.openclaw/*.clobbered*
|
.openclaw/*.clobbered*
|
||||||
|
.openclaw/exec-approvals.json
|
||||||
|
.openclaw/node.json
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# 2. RUNTIME CACHE & TRASH
|
# 2. RUNTIME CACHE & TRASH
|
||||||
|
|||||||
@@ -12,14 +12,148 @@ Hệ thống chạy trên **Docker** với 2 dịch vụ cốt lõi:
|
|||||||
1. **Gateway (`openclaw-gateway`)**: Trái tim xử lý API, Web UI và quản lý các luồng kết nối LLM (Claude, GPT, Gemini).
|
1. **Gateway (`openclaw-gateway`)**: Trái tim xử lý API, Web UI và quản lý các luồng kết nối LLM (Claude, GPT, Gemini).
|
||||||
2. **CLI/Bastion (`openclaw-cli`)**: Trạm điều khiển cho phép kỹ sư truy cập trực tiếp (interactive shell) để điều phối ClawTeam và Superpowers thủ công.
|
2. **CLI/Bastion (`openclaw-cli`)**: Trạm điều khiển cho phép kỹ sư truy cập trực tiếp (interactive shell) để điều phối ClawTeam và Superpowers thủ công.
|
||||||
|
|
||||||
|
Cả hai container dùng chung một image `openclaw-clawteam:latest` được build từ `Dockerfile` của dự án.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🛠️ Hướng dẫn Cài đặt (Installation)
|
## 🛠️ Hướng dẫn Cài đặt (Installation)
|
||||||
|
|
||||||
### 1. Chuẩn bị môi trường
|
### 1. Yêu cầu hệ thống
|
||||||
Yêu cầu hệ thống đã cài đặt:
|
|
||||||
* **Docker** & **Docker Compose v2.x**
|
|
||||||
* Quyền truy cập vào Git nội bộ của công ty.
|
|
||||||
|
|
||||||
### 2. Khởi tạo dự án
|
- **Docker Engine** >= 24.x
|
||||||
|
- **Docker Compose** >= v2.x (`docker compose` — không phải `docker-compose`)
|
||||||
|
- Quyền truy cập vào Git repository nội bộ
|
||||||
|
|
||||||
|
### 2. Clone dự án
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://git.smartgift.io.vn/smartgift/open-claw-team.git open-claw-team
|
||||||
|
cd open-claw-team
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Cấu hình biến môi trường
|
||||||
|
|
||||||
|
Mở và chỉnh sửa file `.env`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
vi .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Các biến quan trọng cần chú ý:
|
||||||
|
|
||||||
|
| Biến | Mặc định | Mô tả |
|
||||||
|
|------|----------|-------|
|
||||||
|
| `OPENCLAW_GATEWAY_TOKEN` | `team-token` | ⚠️ Token xác thực WebSocket & Web UI — **bắt buộc đổi trên production** |
|
||||||
|
| `OPENCLAW_GATEWAY_BIND` | `lan` | Bind mode: `loopback` \| `lan` \| `tailnet`. Dùng `lan` khi chạy Docker |
|
||||||
|
| `OPENCLAW_GATEWAY_PORT` | `18789` | Port WebSocket Gateway |
|
||||||
|
| `OPENCLAW_BRIDGE_PORT` | `18889` | Port Bridge / Node-to-node |
|
||||||
|
| `CLAUDE_AI_SESSION_KEY` | _(trống)_ | Session key từ claude.ai (cần ít nhất 1 key) |
|
||||||
|
| `CLAUDE_WEB_SESSION_KEY` | _(trống)_ | Session key thay thế |
|
||||||
|
| `CLAUDE_WEB_COOKIE` | _(trống)_ | Cookie raw nếu dùng Web API |
|
||||||
|
| `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS` | _(trống)_ | Đặt `1` để cho phép WS không mã hoá trên mạng nội bộ |
|
||||||
|
| `OPENCLAW_TZ` | `Asia/Ho_Chi_Minh` | Timezone container |
|
||||||
|
|
||||||
|
> **Lấy Claude session keys:** Mở https://claude.ai trên trình duyệt → F12 → tab **Application** → **Cookies** hoặc **Session Storage**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🐳 Hướng dẫn Sử dụng Docker
|
||||||
|
|
||||||
|
### Build & Khởi động
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Lần đầu: build image và start toàn bộ stack
|
||||||
|
docker compose up -d --build
|
||||||
|
|
||||||
|
# Các lần sau (đã có image): start nhanh
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### Xem logs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Log riêng Gateway
|
||||||
|
docker compose logs -f openclaw-gateway
|
||||||
|
|
||||||
|
# Log riêng CLI (thường ít output)
|
||||||
|
docker compose logs -f openclaw-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
### Truy cập CLI (Bastion Shell)
|
||||||
|
|
||||||
|
Container `openclaw-cli` là môi trường interactive để thao tác trực tiếp với OpenClaw:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Mở bash shell vào CLI container
|
||||||
|
docker compose exec openclaw-cli bash
|
||||||
|
|
||||||
|
# Chạy lệnh openclaw trực tiếp từ host
|
||||||
|
docker compose exec openclaw-cli openclaw --help
|
||||||
|
docker compose exec openclaw-cli openclaw status
|
||||||
|
|
||||||
|
# Kiểm tra version OpenClaw đang dùng
|
||||||
|
docker compose exec openclaw-cli openclaw --version
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⚙️ Cấu trúc Volumes & Dữ liệu
|
||||||
|
|
||||||
|
| Host Path (mặc định) | Mount trong container | Mục đích |
|
||||||
|
|----------------------|-----------------------|----------|
|
||||||
|
| `./.openclaw` | `/home/node/.openclaw` | Config, credentials OpenClaw |
|
||||||
|
| `./.openclaw/workspace` | `/home/node/.openclaw/workspace` | Workspace làm việc của agents |
|
||||||
|
|
||||||
|
> Thư mục `.openclaw/` được tạo tự động khi gateway khởi động lần đầu. Tất cả cấu hình (token, origins, …) lưu tại đây và **persist qua các lần restart**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Cổng kết nối (Ports)
|
||||||
|
|
||||||
|
| Port | Biến | Mô tả |
|
||||||
|
|------|------|-------|
|
||||||
|
| `18789` | `OPENCLAW_GATEWAY_PORT` | WebSocket Gateway + **Web Control UI** |
|
||||||
|
| `18889` | `OPENCLAW_BRIDGE_PORT` | Bridge / Node-to-node communication |
|
||||||
|
|
||||||
|
Sau khi khởi động, mở trình duyệt:
|
||||||
|
|
||||||
|
```
|
||||||
|
http://localhost:18789
|
||||||
|
```
|
||||||
|
|
||||||
|
Đăng nhập bằng giá trị `OPENCLAW_GATEWAY_TOKEN` trong `.env`.
|
||||||
|
|
||||||
|
|
||||||
|
## 🔧 Troubleshooting
|
||||||
|
|
||||||
|
### Gateway không start — lỗi "non-loopback Control UI"
|
||||||
|
|
||||||
|
Nguyên nhân: `OPENCLAW_GATEWAY_BIND` đang là `loopback`, không tương thích với Docker port mapping.
|
||||||
|
|
||||||
|
**Sửa:**
|
||||||
|
|
||||||
|
```env
|
||||||
|
# .env
|
||||||
|
OPENCLAW_GATEWAY_BIND=lan
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lỗi WebSocket kết nối qua mạng nội bộ
|
||||||
|
|
||||||
|
```env
|
||||||
|
# .env
|
||||||
|
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 Cấu trúc Dự án
|
||||||
|
|
||||||
|
```
|
||||||
|
open-claw-team/
|
||||||
|
├── Dockerfile # Image: Node 24 + OpenClaw + ClawTeam + Superpowers
|
||||||
|
├── docker-compose.yml # 2 services: openclaw-gateway + openclaw-cli
|
||||||
|
├── .env # Biến môi trường (⚠️ KHÔNG commit lên Git)
|
||||||
|
├── .gitignore
|
||||||
|
└── .openclaw/ # Auto-generated — gitignored
|
||||||
|
├── openclaw.json # Config gateway (sau lần setup đầu)
|
||||||
|
└── workspace/ # Workspace của agents
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user