---
title: "Tự host Buzz của Block: Không gian cộng tác giữa người và AI"
description: "Tìm hiểu cách tự host Block's Buzz trên VPS Linux phía sau Cloudflare. Vận hành không gian làm việc Nostr bảo mật giúp con người và AI cộng tác hiệu quả."
canonical_url: "https://techvoyage.dev/vi/article/self-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues"
last_updated: "2026-10-20T09:53:51.142Z"
---

Sự phân mảnh ngữ cảnh là một trở ngại vô cùng khó chịu khi làm việc với nhiều tác nhân AI (AI agent). Với các cuộc hội thoại ngữ cảnh nằm rải rác trên nhiều công cụ khác nhau, cuối cùng bạn phải tự đóng vai trò là một bộ định tuyến thủ công bằng cách sao chép hội thoại từ Claude Code để dán vào Gemini CLI, rồi lại sao chép từ Gemini CLI dán vào Hermes Agent. Trở ngại này còn tăng lên gấp bội khi có thêm các đồng nghiệp là con người trong cùng một nhóm.

![Giao diện người dùng của không gian làm việc cộng tác Buzz hiển thị các kênh trò chuyện và tác nhân AI đang hoạt động](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-workspace-interface.webp)

**Buzz**, một không gian làm việc cộng tác nguồn mở, kết nối các nhóm làm việc giữa con người và tác nhân AI vào cùng một môi trường thống nhất. Tại đây, đồng nghiệp và các tác nhân AI chia sẻ chung một lịch sử nhiệm vụ và dự án, chuyển giao công việc cho nhau một cách vô cùng liền mạch.

## Block's Buzz là gì? Không gian làm việc cộng tác cùng AI Agent

Buzz là một không gian làm việc cộng tác nguồn mở từ Block (công ty của Jack Dorsey), nơi con người và các tác nhân AI cùng chia sẻ chung các kênh và dự án. Buzz cung cấp các tính năng nổi bật sau:

- **Ngữ cảnh chia sẻ:** Các kênh là nơi con người và tác nhân AI cộng tác với nhau. Tất cả lịch sử trò chuyện và dự án đều được lưu trữ đầy đủ trong kênh.
- **Giao tiếp giữa tác nhân với tác nhân:** Các tác nhân AI có thể giao tiếp trực tiếp với nhau, ngay cả trên các thiết bị khác nhau. Một tác nhân có thể @-mention một tác nhân khác để bàn giao công việc hoặc đối chiếu chéo mã nguồn.
- **Kích hoạt bằng lượt nhắc (mention-driven):** Các tác nhân AI chỉ hoạt động khi được @-mention, nếu không sẽ luôn ở trạng thái tĩnh. Khi được nhắc đến, tác nhân sẽ đọc ngữ cảnh liên quan trong kênh và bắt đầu xử lý.
- **Hệ thống danh tính thống nhất:** Con người và tác nhân AI sử dụng chung một hệ thống danh tính, được xác thực thông qua các khóa mật mã (cryptographic keys).
- **Ủy quyền ra lệnh:** Bạn có thể cấp quyền cho các đồng nghiệp là con người để điều khiển tác nhân của mình, cho phép cả nhóm cùng giao việc và tận dụng các trợ lý kỹ thuật số của nhau.
- **Máy chủ tự lưu trữ (self-hosted):** Vì tự vận hành máy chủ, dữ liệu của bạn hoàn toàn nằm dưới quyền kiểm soát của riêng bạn. Bạn có thể chọn ai được tham gia và tự định nghĩa các quy tắc hoạt động.

## Kiến trúc mật mã dựa trên giao thức Nostr của Buzz

![Sơ đồ kiến trúc mật mã dựa trên giao thức Nostr của không gian làm việc cộng tác Buzz](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-nostr-cryptographic-architecture.webp)

- **Nostr relay đóng vai trò là máy chủ:** Các tin nhắn, quy trình làm việc, kho lưu trữ và các sự kiện khác được ký bằng mật mã, xác thực và lưu trữ trên một máy chủ Nostr relay. Giao thức Nostr hỗ trợ giao tiếp qua WebSockets và REST API một cách tự nhiên.
- **Danh tính mật mã thống nhất:** Cả con người và tác nhân AI đều xác thực bằng khóa mật mã riêng của mình. Danh tính này nằm hoàn toàn ở phía máy khách (client-side) và không bao giờ lưu trữ trên máy chủ.
- **Thành viên tác nhân hạng nhất:** Mỗi tác nhân sở hữu danh tính riêng, quyền thành viên kênh và nhật ký kiểm tra (audit trail). Tác nhân kết nối với không gian làm việc thông qua Giao thức Giao tiếp Tác nhân (ACP).
- **Kho lưu trữ Git phi tập trung:** Kho lưu trữ mã nguồn được lưu trên bộ nhớ đối tượng tương thích với S3, trong khi các tác vụ, pull request và đánh giá mã (code review) được theo dõi trong nhật ký sự kiện của Nostr. Do đó, kho lưu trữ Git của Buzz được lưu trữ trực tiếp trên Nostr relay chứ không phải GitHub.
- **Ứng dụng Buzz là một Nostr client:** Buzz độc lập với Nostr relay; đây là ứng dụng khách trên máy tính/điện thoại kết nối đến URL của relay.
- **Cấu trúc hạ tầng:** Cơ sở dữ liệu PostgreSQL xử lý lưu trữ sự kiện và tìm kiếm toàn văn, Redis quản lý hệ thống tin nhắn pub/sub, và MinIO tương thích S3 được dùng làm bộ nhớ lưu trữ tệp đa phương tiện.

## Cách tự host Block's Buzz Relay trên máy chủ Linux VPS

### 0. Điều kiện tiên quyết

- Một máy chủ Linux VPS
- Tên miền đã trỏ về địa chỉ IP máy chủ của bạn
- Docker và Docker Compose plugin
- Tài khoản Cloudflare (gói dịch vụ miễn phí)

Trong hướng dẫn này, chúng ta sẽ chạy Nostr relay trên VPS Ubuntu phía sau một mạng riêng tư của [Cách hiển thị riêng tư Hermes Agent với Cloudflare WARP](/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp). Cấu trúc hệ thống gồm bốn dịch vụ trong Docker Compose — relay, PostgreSQL, Redis và MinIO — kết hợp với Caddy để hỗ trợ HTTPS.

<article-card description="Tìm hiểu cách hiển thị và truy cập an toàn tác nhân Hermes của bạn trên toàn cầu bằng Cloudflare WARP và Zero Trust mà không cần mở cổng tường lửa đến." image="https://inimages.techvoyage.dev/articles/Exposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP/VI-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp" image-alt="Hiển thị an toàn tác nhân Hermes cho mạng riêng bằng Cloudflare Zero Trust và đường hầm WARP" label="Hướng dẫn liên quan" min-read="8" title="Cách hiển thị riêng tư Hermes Agent với Cloudflare WARP" to="/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp">



</article-card>

### 1. Cloudflare DNS và API Token

#### Tạo Cloudflare API Token

1. Nhấp vào biểu tượng người dùng ở góc trên cùng bên phải và chọn mục **Profile**.
2. Nhấp vào mục **API Tokens**.

![Trang hồ sơ người dùng Cloudflare hiển thị menu tạo API Tokens](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/cloudflare-profile-api-tokens.webp)

1. Nhấp vào nút **Create Token**.
2. Chọn sử dụng mẫu **Edit zone DNS**.
3. Cấu hình các thông số cho mẫu như sau:

  - **Permissions**: Zone — DNS — Edit
  - **Zone Resources**: Include — Specific zone — `example.com`
4. Nhấp chọn **Continue to summary**.
5. Nhấp chọn **Create Token**.
6. Hãy sao chép chuỗi mã thông báo vừa được tạo, vì nó sẽ không hiển thị lại sau khi bạn đóng trang này.
7. Kiểm tra xem mã thông báo vừa tạo có hoạt động hay không bằng terminal:

```bash
curl "https://api.cloudflare.com/client/v4/user/tokens/verify" -H "Authorization: Bearer YOUR_TOKEN_HERE"
```

#### Bản ghi DNS

- Tạo một bản ghi A mới và thiết lập ở trạng thái **DNS only**.

![Cấu hình bản ghi DNS A cho tên miền Buzz trong bảng điều khiển Cloudflare với trạng thái proxy là DNS only](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/cloudflare-dns-a-record-configuration.webp)

### 2. Cài đặt Docker trên Ubuntu

Chạy các lệnh sau trực tiếp trên Ubuntu để thực hiện cài đặt Docker:

```bash
# Add Docker's official GPG key and set up the Docker repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Add the official Docker repository
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Update package list
sudo apt update

# Install Docker Engine, Docker Community Edition, and containerd runtime
sudo apt install docker-ce docker-ce-cli containerd.io -y

# Start automatically when the system boots
sudo systemctl enable docker

# Verify docker is installed
docker --version

sudo apt install -y docker-compose-plugin

# Verify the compose plugin is installed
docker compose version
```

### 3. Tải mã nguồn (Clone) và cấu hình

```bash
git clone https://github.com/block/buzz.git

cd buzz/deploy/compose
cp .env.example .env
nano .env
```

Chỉnh sửa tệp cấu hình `.env` theo từng nhóm thông số:

- **Cấu hình Domain:**

```text
BUZZ_DOMAIN=buzz.pafor.me
RELAY_URL=wss://buzz.pafor.me
BUZZ_PAIRING_RELAY_URL=wss://buzz.pafor.me/pair
BUZZ_MEDIA_BASE_URL=https://buzz.pafor.me/media
BUZZ_MEDIA_SERVER_DOMAIN=buzz.pafor.me
BUZZ_CORS_ORIGINS=https://buzz.pafor.me
```

- **Khóa chủ sở hữu:** `RELAY_OWNER_PUBKEY` yêu cầu khóa công khai dạng hex dài 64 ký tự của bạn. Hãy tạo một danh tính mới trong ứng dụng máy tính trước ('Create a new identity key' → sao chép mã công khai của bạn, có định dạng npub), sau đó chuyển đổi nó sang dạng hex.
- **Khóa bí mật (Secrets):**
  - Tạo các khóa bí mật bằng cách sử dụng [công cụ trực tuyến](/vi/tools/secret-key-hex) này hoặc chạy lệnh `openssl rand -hex 32` (thực hiện bảy lần).
  - Thay thế mọi chỗ trống `CHANGE_ME`: `BUZZ_RELAY_PRIVATE_KEY`, `BUZZ_GIT_HOOK_HMAC_SECRET`, mật khẩu Postgres/Redis/Typesense, cũng như khóa truy cập/bí mật của S3.
  - Việc quên thay đổi các placeholder này là nguyên nhân phổ biến nhất khiến container bị lặp lại quá trình khởi động; hãy kiểm tra lại bằng lệnh `grep CHANGE_ME .env`.

```text
BUZZ_RELAY_PRIVATE_KEY=CHANGE_ME_64_HEX_PRIVATE_KEY
    BUZZ_GIT_HOOK_HMAC_SECRET=CHANGE_ME_RANDOM_64_HEX
    POSTGRES_PASSWORD=CHANGE_ME_RANDOM_PASSWORD
    REDIS_PASSWORD=CHANGE_ME_RANDOM_PASSWORD
    TYPESENSE_API_KEY=CHANGE_ME_RANDOM_API_KEY
    BUZZ_S3_ACCESS_KEY=CHANGE_ME_RANDOM_ACCESS_KEY
    BUZZ_S3_SECRET_KEY=CHANGE_ME_RANDOM_SECRET_KEY
```

- **Cấu hình khác:**
  - Thêm biến môi trường `CLOUDFLARE_API_TOKEN` và gán giá trị API token đã tạo ở bước trước. Việc này là bắt buộc đối với Caddy.
  - Buzz mặc định mở quyền tự do tham gia — bất kỳ ai biết URL relay của bạn đều có thể xác thực và kết nối. Hãy thiết lập `RELAY_OWNER_PUBKEY`, `BUZZ_REQUIRE_RELAY_MEMBERSHIP=true`, và `BUZZ_REQUIRE_AUTH_TOKEN=true` để tăng tính bảo mật.

### 4. Kích hoạt HTTPS với Caddy

#### Xây dựng hình ảnh Caddy tùy chỉnh kèm theo mô-đun DNS Cloudflare

- Chúng ta thiết lập DNS-01 của Cloudflare cho Caddy. Phương thức DNS-01 hoạt động bằng cách yêu cầu plugin viết một bản ghi TXT `_acme-challenge.buzz.pafor.me` lên **DNS công khai**;
- Sau đó Let's Encrypt sẽ truy vấn bản ghi này từ internet để xác minh quyền sở hữu tên miền của bạn. Điều này nghĩa là `pafor.me` phải là một vùng (zone) công khai trong tài khoản Cloudflare của bạn — không thể chỉ là một hostname nội bộ chỉ tồn tại trong DNS riêng tư của Zero Trust / WARP. Nếu `buzz.pafor.me` chỉ được phân giải nội bộ và không có vùng công khai, DNS-01 sẽ lỗi và đòi hỏi phương pháp xác thực khác.
- Thêm cấu hình sau vào tệp Caddyfile:

```yml
{
  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
```

- Tạo một tệp Dockerfile.caddy với nội dung sau, tệp này được yêu cầu bởi compose.caddy.yml:

```yml
FROM caddy:2-builder AS builder

RUN xcaddy build \
    --with github.com/caddy-dns/cloudflare

FROM caddy:2-alpine

COPY --from=builder /usr/bin/caddy /usr/bin/caddy
```

- Chỉnh sửa `compose.caddy.yml` để sử dụng image với mô-đun Cloudflare và gán API token của Cloudflare:

```yml
services:
  relay:
    ports: !reset []

  caddy:
    build:
      context: .
      dockerfile: Dockerfile.caddy
    image: buzz-caddy:cloudflare
    depends_on:
      relay:
        condition: service_healthy
    environment:
      BUZZ_DOMAIN: ${BUZZ_DOMAIN:?set BUZZ_DOMAIN}
      CLOUDFLARE_API_TOKEN: ${CLOUDFLARE_API_TOKEN:?set CLOUDFLARE_API_TOKEN}
    ports:
      - "${CADDY_HTTP_PORT:-80}:80"
      - "${CADDY_HTTPS_PORT:-443}:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - buzz-caddy-data:/data
      - buzz-caddy-config:/config
    restart: unless-stopped
    networks:
      - buzz-net

volumes:
  buzz-caddy-data:
    labels:
      com.buzz.volume: caddy-data
  buzz-caddy-config:
    labels:
      com.buzz.volume: caddy-config
```

#### Khởi động các Docker container

```bash
docker compose -f compose.yml -f compose.caddy.yml up -d

#Check the Docker status
docker compose ps
```

![Cửa sổ terminal hiển thị các container đang chạy cho dịch vụ Buzz qua lệnh docker compose ps](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/docker-compose-ps-status-terminal.webp)Mở trình duyệt web của bạn và truy cập `http://buzz.pafor.me` để kiểm tra xem relay đã hoạt động bình thường chưa.

![Xác minh trên trình duyệt hiển thị phản hồi thành công từ Block's Buzz relay tự lưu trữ](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-relay-running-browser-verification.webp)### Bước 5: Thiết lập sao lưu tự động ngay từ ngày đầu

```bash
mkdir -p /buzz_backups
crontab -e
```

Cài đặt cron job sao lưu cơ sở dữ liệu hàng đêm:

```text
0 3 * * * cd /home/<user>/buzz/deploy/compose && docker compose exec -T postgres pg_dump -U buzz buzz > /buzz_backups/buzz-$(date +\%Y\%m\%d).sql
```

Lưu ý: Hãy coi `BUZZ_RELAY_PRIVATE_KEY` là vĩnh viễn. Các sự kiện được ký bằng khóa này sẽ bị lỗi xác thực nếu khóa bị thay đổi; một cơ sở dữ liệu được khôi phục nhưng kết hợp với một khóa mới tạo sẽ không được công nhận là cùng một relay.

## Thiết lập Buzz Desktop Client và Danh tính Nostr

Tải ứng dụng khách Buzz cho máy tính từ [https://github.com/block/buzz/releases](https://github.com/block/buzz/releases) và cài đặt. Điền thông tin hồ sơ cho đến khi bạn tới màn hình "Join or create a community".

![Màn hình thiết lập ban đầu của Buzz Desktop Client để tham gia hoặc tạo cộng đồng](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-setup-community.webp)

Nhấp vào "Join a community" và sao chép khóa công khai của bạn.

![Ứng dụng khách Buzz hiển thị danh tính khóa công khai trước khi tham gia cộng đồng](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-join-community-public-key.webp)

Chạy lệnh sau trên **VPS** để tự thêm mình làm thành viên đầu tiên:

```bash
docker compose exec relay buzz-admin add-member --pubkey npub1yourkeyhere
```

Nhập `wss://buzz.pafor.me` vào mục URL cộng đồng và nhấn "Next".

![Nhập URL relay cộng đồng tự lưu trữ vào ứng dụng Buzz trên máy tính](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-input-community-url.webp)

Nhập tên hiển thị và nhấn nút Next.

![Màn hình cấu hình hồ sơ trong ứng dụng Buzz để nhập tên hiển thị](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-profile-name-input.webp)

### Kênh (Channels) và Tác nhân

Kênh là các nhóm nhiệm vụ hoặc nhóm dự án. Hãy tạo một kênh riêng cho từng nhiệm vụ oder dự án và mời mọi người cùng các AI agent tham gia.

Mọi thông tin trong kênh được chia sẻ hoàn toàn tự động, loại bỏ việc phải giải thích lại yêu cầu cho từng thành viên một. Mỗi tác nhân AI có thể được gọi tên bằng ký tự @ và sẽ đọc các tin nhắn liên quan để xử lý. Ngoài ra, các tác nhân AI cũng có thể @ nhắc đến nhau.

Hãy thử gửi tin nhắn trực tiếp (DM) cho một tác nhân AI đã cấu hình sẵn

![Gửi tin nhắn trực tiếp cho tác nhân AI trong ứng dụng khách Buzz trên máy tính](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-dm-agent.webp)

Hãy thử tạo một kênh mới và thêm một số tác nhân AI vào kênh

![Tạo kênh nhiệm vụ hoặc dự án mới trong ứng dụng Buzz trên máy tính](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-create-channel-dialog.webp)

![Thêm thành viên con người và tác nhân AI vào kênh vừa tạo](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-add-agents-to-channel.webp)

![Chế độ xem kênh hoạt động hiển thị lịch sử trò chuyện tổng hợp và nhiệm vụ dự án](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-channel-view.webp)

![Xem chi tiết các tác nhân AI đang hoạt động được tích hợp vào kênh dự án cộng tác](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-channel-active-agents.webp)### Kích hoạt môi trường chạy (Runtimes) của tác nhân

Môi trường chạy mặc định dựa trên cơ chế tự phát hiện tệp chạy nhị phân (chẳng hạn như `hermes-acp`) trong các thư mục chuẩn như `~/.local/bin`. Nếu một công cụ được cài đặt ở một vị trí khác chuẩn, Buzz sẽ không thể tìm thấy nó.

Đối với Kimi Code, mã định danh tác nhân là kimi, và Buzz sẽ tìm kiếm tệp nhị phân tại `~/.local/bin/kimi`. Tạo một liên kết tượng trưng (symbolic link) sẽ giải quyết được vấn đề:

```text
ln -s kimi-cli /Users/<user>/.local/bin/kimi
```

Giờ đây, Kimi Code sẽ xuất hiện trong danh sách Runtimes của tác nhân.

![Cài đặt ứng dụng Buzz hiển thị các runtimes của tác nhân AI đã cấu hình bao gồm Kimi](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-settings-agent-runtimes-list.webp)

### Dự án và Kho lưu trữ

Kích hoạt tính năng '**Projects**' trong Settings → Experiments trước tiên:

![Kích hoạt tính năng thử nghiệm Projects trong tab cài đặt của Buzz](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-settings-experiments-projects.webp)

Hiện tại, dự án phải được tạo thông qua công cụ `buzz-cli` (tuy nhiên tính năng tạo dự án trực tiếp trên giao diện người dùng đang được lên kế hoạch cho phiên bản tiếp theo).

#### Cài đặt buzz-cli

Chạy các lệnh sau để cài đặt `buzz-cli` trên máy chủ **VPS**:

```bash
sudo apt install cargo
cd ~/buzz
cargo install --path crates/buzz-cli
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
```

Tạo một cặp khóa riêng tư và khóa công khai bằng công cụ trực tuyến hoặc thông qua `buzz-cli`. Cặp khóa này là danh tính đại diện của `buzz-cli` trên Nostr relay.

```bash
docker run --rm --entrypoint /usr/local/bin/buzz-admin ghcr.io/block/buzz:main generate-key

# Use the generated Public Key
docker compose exec relay buzz-admin add-member --pubkey generated_Public_key
```

Cấu hình giao diện dòng lệnh (CLI):

```bash
# Copy the Secret key as the BUZZ_PRIVATE_KEY
echo 'export BUZZ_PRIVATE_KEY="nsec1..."'  >> /home/<user>/.bashrc

echo 'export BUZZ_RELAY_URL="wss://buzz.pafor.me"'  >> /home/<user>/.bashrc
```

Chạy lệnh sau để xác minh rằng `buzz-cli` đã được cấu hình chính xác:

```bash
buzz channels list
```

![Thực thi lệnh terminal xác minh cấu hình buzz-cli bằng cách liệt kê các kênh đang hoạt động](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-cli-channels-list-terminal.webp)

#### Tạo một dự án bằng buzz-cli

```bash
# --channel refers to the UUID of the channel
buzz repos create --id TestKOA --name 'Display Name' --channel "bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b"
```

Một dự án chỉ có thể xóa bởi chủ sở hữu. Do dự án "Display Name" được tạo bằng `buzz-cli` (vốn chưa hỗ trợ lệnh xóa), nó sẽ không thể xóa theo cách này.

Mở lại ứng dụng Buzz trên máy tính để kiểm tra xem dự án đã được tạo thành công hay chưa.

![Chế độ xem dự án trên ứng dụng Buzz máy tính xác nhận việc tạo dự án thành công](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-project-view.webp)

Khi dự án xuất hiện trong phần Projects, bạn có thể dễ dàng thêm nhiều dự án khác bằng cách nhấn nút "+" ở góc trên bên phải.

![Thêm dự án nhà phát triển mới bằng biểu tượng dấu cộng trong ứng dụng khách Buzz](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-add-project-button.webp)

#### Đưa vào các kho lưu trữ Git hiện có

Cài đặt `git-credential-nostr` trên thiết bị chứa các kho Git của bạn. Công cụ này yêu cầu **git phiên bản 2.46 trở lên** và bộ công cụ Rust. Hãy tham khảo tài liệu hướng dẫn [Readme](https://github.com/block/buzz/tree/main/crates/git-credential-nostr) này:

```bash
cargo install --path crates/git-credential-nostr
```

Siết chặt cơ chế bảo mật bằng cách cấu hình `git-credential-nostr` để cấp quyền truy cập qua Buzz relay:

```bash
# 1. Register the helper and enable per-path credentials.
git config --global credential.helper nostr
git config --global credential.useHttpPath true

# 2. Store your nsec in a key file (must be 0600). Replace "nsec1..." with your private key
mkdir -p ~/.nostr
echo "nsec1..." > ~/.nostr/key && chmod 600 ~/.nostr/key
git config --global nostr.keyfile ~/.nostr/key
```

Tạo một kho lưu trữ mới trên Buzz relay:

```text
buzz repos create --id koa-email-routing --name "KOA Email Routing" --clone "https://buzz.pafor.me/git/<pub_key>/koa-email-routing" --nostr-relay "wss://buzz.pafor.me"
```

Trong lần `git push` đầu tiên, bạn sẽ gặp lỗi `remote: missing Authorization header`. Để giải quyết lỗi này, bạn cần liên kết ID kho lưu trữ với một kênh của Buzz, vì quyền ghi Git (ACL) được quản lý dựa trên danh sách thành viên của kênh:

```bash
buzz repos bind --id koa-email-routing --channel <CHANNEL_UUID>

# push the code again
git push
```

Khi kiểm tra dự án trên ứng dụng Buzz máy tính, bạn có thể thấy lỗi hiển thị do ứng dụng yêu cầu **git 2.46 trở lên** — việc khởi chạy trực tiếp ứng dụng đôi khi nhận diện sai phiên bản Git cũ hơn hệ thống:

![Ứng dụng khách Buzz hiển thị lỗi tải Git do phiên bản Git cục bộ cũ dưới 2.46](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-git-version-error.webp)

Hãy xuất biến PATH bằng lệnh `launchctl setenv PATH "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"` trong cấu hình shell của bạn và khởi động ứng dụng Buzz trực tiếp từ terminal. Tham khảo [lỗi này](https://github.com/block/buzz/issues/5348) để biết thêm chi tiết.

```bash
open -a Buzz
```

Kiểm tra lại mục Projects trên ứng dụng Buzz, thông tin chi tiết của kho lưu trữ hiện đã được tải lên đầy đủ.

![Giao diện Buzz máy tính với thông tin chi tiết về kho lưu trữ Git và nhật ký commit đã tải thành công](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-repository-details-loaded.webp)

## Đồng bộ hóa các tác nhân AI với ứng dụng di động Buzz bằng mã QR

Việc ghép đôi với ứng dụng di động Buzz yêu cầu giao thức HTTPS bảo mật và dịch vụ `buzz-pair-relay` mặc định sẽ không khởi chạy trên VPS.

```bash
cd ~/buzz
cargo install --path crates/buzz-pair-relay
```

Thêm khối cấu hình sau vào tệp `compose.yml` để kích hoạt dịch vụ `buzz-pair-relay`:

```yml
pair:
    image: ${BUZZ_IMAGE:-ghcr.io/block/buzz:main}
    entrypoint: ["/usr/local/bin/buzz-pair-relay"]
    environment:
      BUZZ_PAIR_RELAY_BIND_ADDR: 0.0.0.0:5000
    ports:
      - "${BUZZ_PAIR_RELAY_PORT:-5000}:5000"
    restart: unless-stopped
    networks:
      [buzz-net]
```

Thêm `BUZZ_PAIRING_RELAY_URL` và `BUZZ_PAIR_RELAY_PORT` vào tệp cấu hình `.env`:

```text
BUZZ_PAIRING_RELAY_URL=wss://buzz.pafor.me/pair
BUZZ_PAIR_RELAY_PORT=5000
```

Truy cập mục '**Mobile**' trong phần cài đặt của Buzz desktop:

![Hộp thoại cài đặt trong ứng dụng Buzz hiển thị tab cấu hình thiết bị di động](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-settings-mobile-tab.webp)

Nhấp vào "Start pairing" — một mã QR sẽ hiển thị; hãy dùng ứng dụng Buzz trên điện thoại để quét mã này. Quá trình ghép đôi hoàn tất sau khi bạn nhấn "Code Match".

![Tạo mã QR ghép đôi an toàn trên ứng dụng máy tính để đồng bộ hóa di động Buzz](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-desktop-client-pairing-qr-code.webp)

Các tác nhân AI trên ứng dụng di động Buzz chỉ có thể sử dụng nếu chúng đang chạy đồng thời trên ứng dụng Buzz máy tính. Thiết bị máy tính của bạn phải luôn hoạt động để các tác nhân AI có thể xử lý yêu cầu.

![Giao diện ứng dụng di động Buzz hiển thị các tác nhân AI đồng hành hoạt động đã đồng bộ](https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/buzz-mobile-app-active-agents.webp)

## Lời kết

Mặc dù Buzz vẫn còn quá sớm để áp dụng vào các môi trường sản xuất quy mô lớn do tồn tại một số lỗi và giới hạn về giao diện, đây thực sự là một trải nghiệm đột phá cho các đội nhóm nhỏ và các nhà phát triển độc lập. Nó mở ra một tầm nhìn chân thực về không gian làm việc ưu tiên AI và mang tính cộng tác cao trong tương lai.

## Tài liệu tham khảo

- [Buzz releases](https://github.com/block/buzz)
- [Introducing Buzz](https://block.xyz/inside/introducing-buzz-where-humans-and-agents-work-together)
- [What is buzz](https://www.hostinger.com/tutorials/what-is-buzz)
- [How to self-host Buzz (Miget)](https://miget.com/blog/how-to-self-host-buzz)
