Hello anh em,
Mình đang đang dùng hệ automation nội bộ, combo gồm: OpenClaw, n8n, một mớ MCP server, và Cloudflare Tunnel để public 1 vài app ra ngoài internet.
Lúc đầu mọi thứ rất vui, cho đến khi cái đống Secrets (API Key, Token) bắt đầu nhiều lên.
Nào là key OpenAI, token Telegram, mật khẩu SMTP gửi mail, token tunnel, cookie đăng nhập web... Ban đầu mình cứ ném hết vào file .env cho tiện. Nhưng càng làm thì cái file .env nó càng nhiều lên, bắt đầu khó xem và quản lý:
- Copy sang máy khác là lệch tên, chạy không được.
- Muốn đổi key thì phải đi sửa từng chỗ, bực nhất cái này.
- Sợ nhất là lỡ tay paste nhầm cái
.envlên nhóm chat hay GitHub là xác định toang.
Sau nghĩ lại thì thấy OpenClaw có cái skill 1Password nên định dùng, nhưng mà nó mất phí subscription, cũng rẻ thôi đâu đó $2.99/tháng. Nhưng mình cũng đang self-hosting một bài ứng dụng nên sẵn đấy tìm 1 phiên bản open-source để dùng. Và mình quyết định dựng Vaultwarden (bản self-hosted siêu nhẹ của Bitwarden) để làm cái kho tổng quản lý đám key này. Dưới đây là lý do tại sao và cách mình dùng nó.
1. Vaultwarden là gì và tại sao lại hợp?
Nói đơn giản, Vaultwarden là một cái server giữ mật khẩu (password manager) mà anh em tự host được, viết bằng Rust nên ăn cực ít RAM.
Với anh em làm automation, "mật khẩu" không chỉ là user/pass. Nó là tất cả những thứ nhạy cảm:
- API Key (OpenAI, Anthropic...).
- URL của mấy con MCP server (thường có token dính trong URL).
- Token bot Telegram/Discord.
- Hay là Cookie/Session của trình duyệt để agent đỡ phải login lại.
Thay vì rải rác mỗi nơi một tí, giờ mình gom tất cả về một mối: Single Source of Truth.
Hướng dẫn self-hosted Vaultwarden: Hướng dẫn cài đặt Vaultwarden trên Ubuntu
2. Dùng Vaultwarden sướng ở chỗ nào?
Bớt cái tật tiện tay
Cái chết của ae là sự tiện lợi. Tiện tay gửi key qua Zalo, tiện tay note vào file text... Dùng Vaultwarden ép mình vào khuôn khổ: cần key thì mở Vault copy, hạn chế tối đa việc key lộ ra ngoài.
Quản lý ngăn nắp
Trước mình dùng n8n thì hay lưu API key các nền tảng và note của Apple, nhưng mà test nhiều công cụ giờ nó dài mấy trang toàn là API key.
Nên dù là dùng cá nhân, mình vẫn chia key theo từng nhóm để dễ quản lý:
- Nhóm Social: Key Facebook, X, Telegram.
- Nhóm Automation: Key n8n, webhook.
- Nhóm Infra: SSH key, token server, Cloudflare.
Nhìn vào là biết key nào thuộc về đâu, không còn cảnh một file .env gánh cả thế giới.
Đổi key (Rotate) không lo chết chùm
Khi nghi ngờ lộ key, mình chỉ cần đổi trong Vaultwarden, rồi chạy script update lại cho các service là xong. Không phải mò mẫm xem "cái key này đang nằm ở những file nào".
Agent không cần nhớ password
Với mấy con agent cần login web (như X hay LinkedIn), mình không lưu password cứng trong code. Mình lưu session/cookie, hoặc lưu key mã hóa state trong Vault. Agent khởi động lên, lấy key giải mã session rồi chạy tiếp. An toàn hơn nhiều.
3. Điểm trừ và lưu ý, ae nên đọc cái này
Dĩ nhiên không có gì hoàn hảo:
-
Nó không tự điền vào
.envcho anh em đâu: Vaultwarden chỉ là chỗ lưu. Để agent chạy được, anh em vẫn cần một bước "lấy key từ Vault bỏ vào.env". Cách mình làm: Code một cái script nhỏ, mỗi lần deploy hoặc update service thì nó tự kéo key từ Vault về, ghi vào
.envrồichmod 600để chỉ owner mới đọc được.Sập Vault là sập tất:
Gom trứng vào một giỏ thì phải giữ cái giỏ cho kỹ. Vault mà down là hệ thống không lấy được key mới.Giải pháp: Luôn có backup định kỳ. Và với các service quan trọng,
.envđóng vai trò là cache. Vault chết thì service vẫn chạy bằng.envcũ được.Bảo mật phải làm tới nơi:
Đã self-host cái kho lưu toàn đồ nhạy cảm thì hãy bật HTTPS, cài 2FA, và đừng public nó ra internet vô tội vạ.
4. Tóm lại là khi nào nên dùng?
- Nếu anh em chỉ có 1 con server, 2-3 cái API key: Thôi, dùng
.envcho lẹ. - Nếu anh em bắt đầu có: OpenClaw + n8n + chục cái MCP + server ở nhà + VPS: Thì triển khai Vaultwarden ngay và luôn đi.
Nó không giúp AI của anh em thông minh hơn, nhưng nó giúp anh em ngủ ngon hơn vì biết đống key của mình đang nằm gọn gàng một chỗ, không bay lung tung trên mạng.
Chúc anh em quản lý đám agent hiệu quả và không bao giờ bị lộ key!
Top comments (0)