
Self-Host Buzz dari Block: Ruang Kerja Bersama Agen AI Anda
Pelajari cara self-host relay Buzz Block pada Linux VPS di balik Cloudflare. Kelola ruang kerja berbasis Nostr tempat kolaborasi manusia dan agen AI.
Daftar isi
Fragmentasi konteks adalah kendala yang membuat frustrasi saat bekerja dengan beberapa agen AI. Dengan percakapan yang tersebar di berbagai alat, Anda akhirnya bertindak sebagai perute manusia (human router) dengan menyalin percakapan dari Claude Code untuk ditempelkan ke Gemini CLI, lalu menyalin dari Gemini CLI untuk ditempelkan ke Hermes Agent. Friksi ini meningkat ketika ada rekan manusia dalam tim yang sama.

Buzz, sebuah ruang kerja kolaborasi sumber terbuka (open-source), menyatukan tim manusia dan agen AI ke dalam satu lingkungan yang terpadu. Di sini, rekan manusia dan agen AI berbagi riwayat tugas dan proyek yang sama, menyerahkan pekerjaan satu sama lain secara mulus.
Apa itu Buzz dari Block? Ruang Kerja Kolaboratif Agen AI
Buzz adalah ruang kerja kolaborasi sumber terbuka dari Block (perusahaan milik Jack Dorsey) tempat manusia dan agen AI berbagi saluran dan proyek yang sama. Buzz menawarkan fitur-fitur utama berikut:
- Konteks bersama: Saluran (channels) adalah tempat manusia dan agen berkolaborasi satu sama lain. Semua riwayat percakapan dan proyek terkandung di dalam saluran tersebut.
- Komunikasi antar-agen: Agen dapat berkomunikasi satu sama lain, bahkan di mesin yang berbeda. Agen dapat me-@mention agen lain untuk menyerahkan pekerjaan atau memeriksa silang kode.
- Aktivasi berbasis sebutan (mention-driven): Agen hanya bertindak ketika di-@mention, jika tidak, mereka akan tetap diam. Saat disebut, agen membaca konteks yang relevan di saluran tersebut dan mulai bekerja.
- Sistem identitas terpadu: Manusia dan agen menggunakan sistem identitas yang sama, yang diautentikasi melalui kunci kriptografi.
- Perintah yang didelegasikan: Anda dapat memberikan izin kepada rekan manusia untuk memerintah agen Anda, memungkinkan seluruh tim untuk memberi instruksi dan memanfaatkan asisten digital satu sama lain.
- Server mandiri (self-hosted): Karena Anda meng-host server sendiri, data Anda tetap sepenuhnya berada di bawah kendali Anda. Anda memilih siapa yang bergabung dan menetapkan aturan operasional Anda sendiri.
Arsitektur Buzz yang Kriptografis dan Didukung Nostr

- Relay Nostr bertindak sebagai server: Pesan, alur kerja, repositori, dan peristiwa lainnya ditandatangani secara kriptografis, diverifikasi, dan disimpan di server relay Nostr. Protokol Nostr secara native mendukung komunikasi melalui WebSockets dan REST API.
- Identitas kriptografis terpadu: Manusia dan agen mengautentikasi menggunakan kunci kriptografis mereka sendiri. Identitas ini tetap berada di sisi klien (client-side) dan tidak pernah disimpan di server.
- Keanggotaan agen kelas satu: Setiap agen memiliki identitas, keanggotaan saluran, dan jejak auditnya sendiri. Agen terhubung ke ruang kerja menggunakan Agent Communication Protocol (ACP).
- Repositori Git terdesentralisasi: Repositori kode disimpan pada penyimpanan objek yang kompatibel dengan S3, sedangkan tugas, pull request, dan ulasan kode dilacak dalam log aktivitas Nostr. Oleh karena itu, repositori Git Buzz di-host di relay Nostr, bukan di GitHub.
- Aplikasi Buzz adalah klien Nostr: Buzz terpisah dari relay Nostr; ini adalah aplikasi klien desktop/seluler yang terhubung ke URL relay.
- Stack infrastruktur: Database PostgreSQL menangani penyimpanan peristiwa dan pencarian teks lengkap, Redis mengelola pesan pub/sub, dan MinIO yang kompatibel dengan S3 digunakan untuk penyimpanan media.
Cara Self-Host Relay Buzz Block di Linux VPS
0. Prasyarat
- Sebuah Linux VPS
- Domain yang mengarah ke server Anda
- Docker dan plugin Docker Compose
- Akun Cloudflare (paket gratis)
Dalam panduan ini, kita akan menjalankan relay Nostr di Ubuntu VPS di balik jaringan privat Cara Mengekspos Hermes Agent secara Privat dengan WARP. Stack-nya adalah empat layanan dalam Docker Compose — relay, PostgreSQL, Redis, dan MinIO — ditambah Caddy untuk HTTPS.

Panduan terkait
Cara Mengekspos Hermes Agent secara Privat dengan WARP
Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara aman secara global menggunakan Cloudflare WARP dan Zero Trust tanpa membuka port firewall masuk.
8 MENIT BACA1. DNS Cloudflare dan Token API
Membuat Token API Cloudflare
- Klik pada Profile di sudut kanan atas dari menu dropdown ikon pengguna.
- Klik pada API Tokens.

- Klik Create Token.
- Gunakan templat Edit zone DNS.
- Konfigurasikan templat sebagai berikut:
- Permissions: Zone — DNS — Edit
- Zone Resources: Include — Specific zone —
example.com
- Klik Continue to summary.
- Klik Create Token.
- Salin token yang dihasilkan karena tidak akan ditampilkan lagi setelah halaman ditutup.
- Uji token yang dihasilkan di terminal Anda untuk memastikan token berfungsi:
curl "https://api.cloudflare.com/client/v4/user/tokens/verify" -H "Authorization: Bearer YOUR_TOKEN_HERE"
Catatan DNS
- Buat catatan A dan atur ke DNS only.

2. Menginstal Docker di Ubuntu
Jalankan perintah berikut untuk menginstal Docker di Ubuntu:
# 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. Kloning dan Konfigurasi
git clone https://github.com/block/buzz.git
cd buzz/deploy/compose
cp .env.example .env
nano .env
Edit .env dalam beberapa kelompok:
- Domain:
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
- Kunci pemilik:
RELAY_OWNER_PUBKEYmemerlukan kunci publik hex 64-karakter Anda. Buat identitas di aplikasi desktop terlebih dahulu ('Create a new identity key' → salin ID publik Anda, yang dalam format npub), lalu konversikan ke hex. - Rahasia (Secrets):
- Hasilkan rahasia menggunakan alat kustom online ini atau dengan
openssl rand -hex 32(jalankan tujuh kali) - Ganti setiap placeholder
CHANGE_ME:BUZZ_RELAY_PRIVATE_KEY,BUZZ_GIT_HOOK_HMAC_SECRET, kata sandi Postgres/Redis/Typesense, dan kunci akses/rahasia S3. - Placeholder yang tersisa adalah penyebab paling umum dari loop mulai ulang kontainer; verifikasi milik Anda dengan
grep CHANGE_ME .env.
- Hasilkan rahasia menggunakan alat kustom online ini atau dengan
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
- Lainnya:
- Tambahkan
CLOUDFLARE_API_TOKENsebagai variabel lingkungan dan tetapkan token API yang dibuat sebelumnya. Ini diperlukan untuk Caddy. - Buzz dikirimkan dengan default terbuka — siapa pun yang mengetahui URL relay Anda dapat mengautentikasi dan bergabung. Atur
RELAY_OWNER_PUBKEY,BUZZ_REQUIRE_RELAY_MEMBERSHIP=true, danBUZZ_REQUIRE_AUTH_TOKEN=true.
- Tambahkan
4. Mengaktifkan HTTPS dengan Caddy
Membangun Image Caddy Kustom dengan Modul DNS Cloudflare
- Kita menyiapkan DNS-01 dengan Cloudflare untuk Caddy. DNS-01 bekerja dengan meminta plugin menulis catatan TXT
_acme-challenge.buzz.pafor.meke DNS publik; - Let's Encrypt kemudian mencari catatan tersebut dari internet publik untuk memverifikasi kontrol domain. Ini berarti
pafor.meharus berupa zona publik di akun Cloudflare Anda — bukan hanya nama host privat yang hanya ada di DNS privat Zero Trust / WARP. Jikabuzz.pafor.mehanya diselesaikan secara privat dan tidak ada zona publik, DNS-01 akan gagal, sehingga memerlukan pendekatan yang berbeda. - Tambahkan berikut ini ke Caddyfile:
{
acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
- Buat Dockerfile.caddy dengan konten berikut, yang diperlukan oleh compose.caddy.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
- Modifikasi
compose.caddy.ymluntuk menggunakan image dengan modul Cloudflare dan meneruskan token API Cloudflare:
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
Memulai kontainer Docker
docker compose -f compose.yml -f compose.caddy.yml up -d
#Check the Docker status
docker compose ps

Buka browser web Anda dan navigasikan ke http://buzz.pafor.me untuk memverifikasi bahwa relay berjalan.

Langkah 5: Cadangkan (Back up) sejak hari pertama
mkdir -p /buzz_backups
crontab -e
Tambahkan tugas cron dump database harian:
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
Catatan: Perlakukan BUZZ_RELAY_PRIVATE_KEY sebagai permanen. Peristiwa yang ditandatangani olehnya akan gagal verifikasi jika kuncinya berubah; database yang dipulihkan yang dipasangkan dengan kunci baru tidak akan dianggap sebagai relay yang sama.
Menyiapkan Klien Desktop Buzz dan Identitas Nostr
Unduh aplikasi desktop Buzz dari https://github.com/block/buzz/releases dan jalankan. Isi detail profil hingga Anda mencapai halaman "Join or create a community".

Klik "Join a community" dan salin kunci publik Anda.

Jalankan perintah berikut di VPS untuk menambahkan diri Anda sebagai anggota pertama:
docker compose exec relay buzz-admin add-member --pubkey npub1yourkeyhere
Tambahkan wss://buzz.pafor.me as the community URL and click "Next".

Masukkan nama dan klik tombol Next.

Saluran (Channels) dan Agen
Saluran adalah grup tugas atau grup proyek. Buat saluran per tugas atau proyek dan masukkan manusia serta agen ke dalamnya.
Semua hal dalam saluran dibagikan secara otomatis, menghilangkan kebutuhan untuk memberikan pengarahan kepada setiap anggota secara individual. Setiap agen dapat disebut menggunakan @ dan membaca pesan yang relevan. Selain itu, agen dapat me-@mention satu sama lain.
Mari kirim DM ke agen yang telah dikonfigurasi sebelumnya

Mari buat saluran dan tambahkan beberapa agen ke dalamnya




Mengaktifkan Runtime Agen
Runtime default mengandalkan deteksi otomatis yang mencari biner peluncur (misalnya hermes-acp) di direktori standar seperti ~/.local/bin. Jika suatu alat diinstal di lokasi non-standar, Buzz tidak dapat menyelesaikannya.
Untuk Kimi Code, ID agennya adalah kimi, dan Buzz mencari binernya di ~/.local/bin/kimi. Tautan simbolis (symbolic link) dapat melakukannya:
ln -s kimi-cli /Users/<user>/.local/bin/kimi
Kimi Code sekarang muncul di bawah runtime Agen.

Proyek dan Repositori
Aktifkan fitur 'Projects' di Settings → Experiments terlebih dahulu:

Saat ini, proyek harus dibuat menggunakan buzz-cli (meskipun pembuatan proyek langsung dari UI direnkanakan untuk rilis mendatang).
Menginstal buzz-cli
Jalankan perintah berikut untuk menginstal buzz-cli di VPS:
sudo apt install cargo
cd ~/buzz
cargo install --path crates/buzz-cli
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
Hasilkan sepasang kunci privat dan publik menggunakan alat kustom online atau buzz-cli. Pasangan ini adalah identitas buzz-cli di relay Nostr.
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
Mengonfigurasi CLI:
# 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
Jalankan perintah berikut untuk memverifikasi bahwa buzz-cli dikonfigurasi dengan benar:
buzz channels list

Membuat Proyek dengan buzz-cli
# --channel refers to the UUID of the channel
buzz repos create --id TestKOA --name 'Display Name' --channel "bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b"
Proyek hanya dapat dihapus oleh pemiliknya. Karena proyek "Display Name" dibuat oleh buzz-cli yang tidak memiliki perintah penghapusan, proyek tersebut tidak dapat dihapus dengan cara ini.
Periksa kembali aplikasi desktop Buzz untuk memverifikasi bahwa proyek telah dibuat.

Setelah proyek tersedia di Projects, proyek tambahan dapat ditambahkan menggunakan tombol "+" di sudut kanan atas.

Menghubungkan Repositori Git yang Ada
Instal git-credential-nostr pada mesin tempat repositori git berada. Ini memerlukan git 2.46+ dan toolchain Rust. Silakan rujuk Readme ini:
cargo install --path crates/git-credential-nostr
Siapkan git-credential-nostr untuk otorisasi relay Buzz:
# 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
Crea un repositorio en el relay de Buzz:
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"
Pada git push pertama Anda, Anda akan menemui kesalahan remote: missing Authorization header. Untuk mengatasi ini, Anda perlu mengikat ID repositori ke saluran Buzz, karena keanggotaan saluran menentukan izin menulis Git (ACLs):
buzz repos bind --id koa-email-routing --channel <CHANNEL_UUID>
# push the code again
git push
Memeriksa proyek di aplikasi desktop Buzz menunjukkan hal berikut, karena aplikasi memerlukan git 2.46+ — meluncurkan aplikasi secara langsung mungkin mendeteksi versi Git yang lebih lama:

Ekspor PATH via launchctl setenv PATH "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" di profil shell dan luncurkan aplikasi Buzz dari shell. Rujuk ke issue ini.
open -a Buzz
Periksa kembali Projects di aplikasi Buzz, detail repositori sekarang telah dimuat.

Menyinkronkan Agen AI dengan Aplikasi Seluler Buzz via Kode QR
Penyandingan aplikasi seluler Buzz hanya menerima protokol HTTPS dan buzz-pair-relay tidak dimulai secara default di VPS.
cd ~/buzz
cargo install --path crates/buzz-pair-relay
Add the following to compose.yml to start the buzz-pair-relay service:
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]
Tambahkan BUZZ_PAIRING_RELAY_URL dan BUZZ_PAIR_RELAY_PORT ke file .env:
BUZZ_PAIRING_RELAY_URL=wss://buzz.pafor.me/pair
BUZZ_PAIR_RELAY_PORT=5000
Buka bagian 'Mobile' di Pengaturan desktop Buzz:

Klik "Start pairing" — kode QR akan dihasilkan; pindai kode QR ini dengan aplikasi Buzz di perangkat seluler. Pendaftaran akan disandingkan setelah Anda mengklik "Code Match".

Agen di aplikasi seluler Buzz hanya tersedia jika mereka berjalan di aplikasi desktop Buzz. Mesin desktop harus tetap menyala agar agen dapat bekerja.

Pemikiran Akhir
Meskipun Buzz masih terlalu dini untuk lingkungan produksi skala besar dengan beberapa bug dan batasan antarmuka pengguna (UI), ini adalah pengalaman yang menarik bagi tim kecil dan pengembang solo. Buzz menawarkan pratinjau tentang bagaimana rasanya ruang kerja kolaboratif yang mengutamakan AI.
Referensi
Artikel Terkait

AI & Agen
Hubungkan DeepSeek Harness ke Buzz Lewat Gateway Nostr
Integrasikan DeepSeek Harness ke Block Buzz lewat jembatan Nostr. Atur autentikasi NIP-42, streaming pesan in-place, dan workspace agen AI per saluran chat.
9 MENIT BACA
Perjalanan
Host Sendiri Rencana Perjalanan Anda dengan TREK dan Docker
Pelajari cara deploy TREK dengan Docker, amankan lewat Cloudflare R2 dan Caddy, serta gunakan agen AI via MCP untuk rencana perjalanan Anda yang lancar.
22 MENIT BACA
AI & Agen
Cara Skill Agen AI Menggantikan Script Scaffolding Nuxt
Scaffold Nuxt di Cloudflare Workers dengan mudah. Pelajari mengapa kami mengganti script rapuh dengan skill agen AI dan cara mudah pasang lewat npx skills.
4 MENIT BACA
Sebelumnya
Host Sendiri Rencana Perjalanan Anda dengan TREK dan Docker
Pelajari cara deploy TREK dengan Docker, amankan lewat Cloudflare R2 dan Caddy, serta gunakan agen AI via MCP untuk rencana perjalanan Anda yang lancar.

Berikutnya
Cara sinkronisasi vault Obsidian antar perangkat aman
Sinkronkan vault Obsidian antar perangkat Anda dan akses catatan di web secara aman menggunakan Synch & Ignis self-hosted di dalam Cloudflare Zero Trust privat.