Vibe Companion và Cloudflare Tunnel trên Raspberry Pi

⚠️ ĐÃ NGỪNG DÙNG (deprecated) — 2026-08-03. Chủ hệ thống xác nhận không còn dùng Vibe Companion trên Pi nữa và không có kế hoạch dựng lại. Tài liệu này giữ lại làm tư liệu lịch sử, không phải hướng dẫn nên làm theo. Xem phần “Trạng thái hiện tại” bên dưới.

Tóm tắt

Hướng dẫn từng bước cài Vibe Companion (giao diện web cho Claude Code CLI) trên Raspberry Pi (10.0.0.22) chạy như systemd service, rồi expose ra Internet qua tên miền companion.nguyenbinhson.com bằng Cloudflare Tunnel (pi-companion, ID 4b6f77e3-...) — không cần mở cổng nào trên router. Lớp bảo mật cuối là Cloudflare Access, yêu cầu xác thực email OTP trước khi vào ứng dụng.

Điểm chính

  • Companion chạy bằng bunx the-vibe-companion, đóng gói thành systemd service (companion.service) lắng nghe localhost:3456, không expose trực tiếp ra ngoài.
  • Cloudflare Tunnel (cloudflared) chạy trên Pi, kết nối outbound tới Cloudflare, tạo CNAME companion.nguyenbinhson.com → <tunnel-id>.cfargotunnel.com.
  • File cấu hình tunnel phải đặt tại /etc/cloudflared/ (không phải ~/.cloudflared/) vì cloudflared service install chạy dưới quyền root và không đọc được home directory của user thường.
  • Cloudflare Access tạo policy “Only me” cho phép đúng 1 email cá nhân, xác thực bằng mã OTP gửi qua email trước khi truy cập app.
  • Kiến trúc bảo mật: router không mở cổng cho Companion (chỉ WireGuard UDP 51820 vẫn mở port-forward), IP nhà ẩn sau proxy Cloudflare, Companion chỉ bind localhost.
  • Cloudflare Tunnel free tier: không giới hạn băng thông, tối đa 50 user Access.

Khái niệm

Người liên quan

Trạng thái hiện tại (xác minh qua SSH 2026-08-03)

Setup mô tả trong tài liệu này không còn tồn tại và sẽ không được dựng lại — chủ hệ thống đã quyết định ngừng dùng Companion trên Pi. Kết quả kiểm tra trực tiếp:

  • Không có systemd unit tên companion (cả ở tầng hệ thống lẫn tầng user), không có tiến trình nào đang chạy.
  • Không có the-companion, the-vibe-companion, bun hay bunx trên máy — runtime Bun cũng không còn được cài.
  • Cổng 3456 không có gì lắng nghe.
  • cloudflared có chạy, nhưng là một tunnel khác (bdcd1edd-…, không phải pi-companion 4b6f77e3-… trong tài liệu này). Ingress hiện tại chỉ gồm SSH (homelab.nguyenbinhson.com) và AdGuard DoH (dns.nguyenbinhson.com/dns-query) — xem ssh-vao-pi-qua-cloudflare-tunnel-va-accessdns-over-https-cho-adguard-qua-cloudflare-tunnel.
  • Tên miền companion.nguyenbinhson.com không còn phân giải — bản ghi DNS đã bị gỡ.

Lưu ý: lần kiểm tra trước (2026-07-23) kết luận “không tìm thấy cloudflared”. Điều đó không còn đúng — cloudflared đã được cài lại sau đó cho mục đích SSH và DoH, chỉ riêng phần Companion là bỏ hẳn.

Còn giữ được gì từ tài liệu này

Dù Companion bỏ đi, mấy điểm sau vẫn đúng và vẫn đang được áp dụng cho các dịch vụ khác trên Pi:

  • Config cloudflared phải đặt tại /etc/cloudflared/ chứ không phải ~/.cloudflared/.
  • Mô hình bảo mật “dịch vụ chỉ bind localhost + Cloudflare Tunnel + Cloudflare Access policy Only me” — vẫn là khuôn mẫu dùng cho SSH-over-Tunnel hiện tại.

Câu hỏi mở

  • Companion + Tunnel đã được dựng lại trên hệ thống mới của Pi hay chưa? Đã khép lại (2026-08-03): không, và sẽ không dựng lại. Xem phần “Trạng thái hiện tại”.