Chia sẻ với mọi người về cách mình setup homelab để self-host các công cụ, cái này thì anh em DevOps rất cần thiết để vọc vạch cho lên trình rồi. Đây không phải là hướng dẫn cơ bản mà là những gì mình tìm hiểu rồi đang sử dụng.

1. Phần cứng
Yêu cầu cơ bản: ổn định, yên tĩnh, tiêu thụ ít điện.
- Raspberry Pi:
- Ưu điểm: Tiết kiệm điện, nhỏ gọn.
- Nhược điểm: Hiệu năng thấp, không hợp cho database hay transcoding. Cần lưu ý các vấn đề tương thích của kiến trúc
arm64.
- Intel NUC / Mini PC:
- Ưu điểm: Toàn diện nhất, hiệu năng tốt, tiết kiệm điện, ổn định.
- Nhược điểm: Chi phí đầu tư cao.
- Máy bộ cũ (ThinkCentre, OptiPlex):
- Ưu điểm: Giá rẻ, price/performance tốt.
- Nhược điểm: Tốn điện hơn, quạt ồn hơn.
Note: Nên ưu tiên dùng SSD thay vì HDD cho OS và các ứng dụng để có tốc độ phản hồi tốt hơn.
2. Cấu hình Mạng
- Static IP: Cần set IP tĩnh trong LAN cho server để các dịch vụ không bị mất kết nối sau khi router reboot (cái này thì anh em mới học rất hay quên và dễ gặp lỗi không SSH được vào server do IP bị thay đổi).
- Port Forwarding: Mở các port cần thiết ra ngoài.
80/443cho web.22cho SSH (nên đổi sang port khác).- Các port khác theo yêu cầu của service.
- Khuyến nghị: Tắt UPnP trên router.
- External Access: Để truy cập từ xa an toàn, không nên public IP trực tiếp.
- Tailscale: Giải pháp VPN mesh, cài đặt đơn giản, ổn định. Mình đang dùng chính.
- Cloudflare Tunnel: Tốt cho việc public các dịch vụ web, có sẵn SSL.
3. Stack cơ bản
Nguyên tắc: Mọi dữ liệu quan trọng phải có backup, dưới đây là các công cụ cần thiết mọi người có thể tham khảo (thường muốn học cách sử dụng công cụ thì cài nhanh bằng docker cũng ổn):
- Docker + Docker Compose:
Nếu mọi người đang muốn học và làm container, giúp việc triển khai và quản lý ứng dụng đơn giản hơn, tránh xung đột thư viện.
sudo apt install docker.io docker-compose -y - Portainer:
Giao diện web để quản lý Docker. Giúp theo dõi, restart, deploy container mà không cần dùng CLI.
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer-ce - Watchtower:
Tự động pull phiên bản image mới nhất và restart lại container. Giúp hệ thống luôn được cập nhật các bản vá lỗi.
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower - Uptime Kuma:
Công cụ monitoring uptime cho các service. Gửi thông báo qua Telegram/Discord/Email khi có dịch vụ bị down. Rất hữu ích.
docker run -d -p 3001:3001 louislam/uptime-kuma - Backup:
Cần có chiến lược backup tự động cho các file cấu hình và volume của Docker.
- Công cụ:
duplicati(GUI),restic(CLI), hoặcrsyncscript. - Lưu ý: Nên có ít nhất một bản backup được lưu ở một thiết bị vật lý khác.
- Công cụ:
4. Các ứng dụng đang chạy
Đây là danh sách các service mình đã dùng và sàng lọc qua thời gian.
-
Notes & Docs:
- Logseq/Joplin: Giải pháp ghi chú dùng Markdown, dữ liệu nằm hoàn toàn ở local. Sync giữa các thiết bị qua Syncthing.
-
Media & Streaming:
- Jellyfin: Server media, mã nguồn mở, thay thế Plex. Hỗ trợ hardware acceleration tốt trên Intel iGPU.
- Navidrome: Server stream nhạc, tương thích với các app Subsonic.
- qBittorrent + WebUI: Chạy ổn định trong container.
-
Dev & Automation:
- Gitlab: Công cụ mà thực tế các doanh nghiệp dùng.
- n8n: Công cụ tự động hóa workflow, thay thế Zapier.
- Outline: Wiki nội bộ, giao diện đẹp, dùng Markdown.
-
Web Tools:
- Whoogle: Frontend cho Google search để tránh tracking.
- Linkding: Bookmark manager, thay thế Pocket.
- RSSHub + FreshRSS: Tạo và quản lý RSS feed.
-
Các ứng dụng đã loại bỏ:
- Self-host email (Mailcow/Mailu): Mình không khuyến khích thằng này lắm. Yêu cầu kiến thức sâu về DKIM, SPF, reverse DNS, nếu không mail sẽ vào spam của Gmail. Rủi ro cao, tốn thời gian quản lý.
- Nextcloud: Quá cồng kềnh và chậm cho nhu cầu cá nhân mình không thích dùng. Syncthing đáp ứng tốt hơn cho việc đồng bộ file.
- HomeAssistant: Chỉ hữu ích nếu bạn đầu tư vào hệ sinh thái smarthome.
- Vaultwarden (Bitwarden): Tốt, nhưng đã quay về 1Password vì trải nghiệm auto-fill trên mobile tốt hơn.
5. Bảo mật
Các bước cơ bản để hardening hệ thống.
- Hạn chế public port: Không mở port trực tiếp ra internet. Ưu tiên dùng VPN (Tailscale) hoặc Tunnel (Cloudflare).
- Firewall: Cấu hình
UFWhoặciptablestheo nguyên tắc “deny all, allow specific”. - Fail2Ban: Tự động block các IP có hành vi brute-force đặc biệt là SSH.
- Luôn có xác thực: Mọi service public đều phải có password. Nếu service không hỗ trợ, đặt nó sau một reverse proxy có basic auth.
- SSL/TLS: Mọi traffic web phải được mã hóa.
Let's Encryptlà lựa chọn tiêu chuẩn. Caddy server có thể tự động hóa hoàn toàn việc này. - Backup: Nhắc lại lần nữa, đây cũng là một lớp bảo mật. Dữ liệu phải được backup định kỳ và tự động.
Về cơ bản thì nếu được mọi người rất nên có một hạ tầng homelab riêng để build mọi thứ như thật. Và lúc đó sẽ ra nhiều vấn đề rồi troubleshooting thành công sẽ lên trình hơn, chắc chắn rồi bỏ tiền ra thì sẽ trân trọng hơn để chăm lab =)))





