Homelab bảo mật hơn: bộ app self-hosted kèm reverse proxy, SSO, 2FA, firewall
Homelab rất hấp dẫn: dữ liệu nằm trong tay bạn, dịch vụ chạy theo ý bạn, không lệ thuộc cloud. Nhưng càng mở nhiều app ra Internet, rủi ro càng tăng: mật khẩu yếu, dịch vụ lỗi thời, port lộ, bot quét 24/7, cấu hình sai → bị chiếm quyền.
Tin tốt: homelab không cần “enterprise-grade” mới an toàn. Chỉ cần thiết kế đúng lớp: reverse proxy → SSO → 2FA → firewall → backup → giám sát. Bài này đề xuất một mô hình thực tế, dễ triển khai, phù hợp server tại nhà/VPS mini/NAS.
Kiến trúc tổng quan
Mô hình khuyến nghị:
– Router/firewall: chặn mặc định, chỉ mở port cần thiết.
– Reverse proxy: Caddy / Traefik / Nginx Proxy Manager.
– SSO/Identity Provider: Authentik / Authelia / Keycloak.
– 2FA: TOTP, WebAuthn/passkey nếu được.
– App self-hosted: Nextcloud, Vaultwarden, Gitea, Jellyfin, Uptime Kuma…
– VPN tùy chọn: WireGuard/Tailscale/Headscale cho app nhạy cảm.
– Logging/monitoring: Uptime Kuma, Prometheus/Grafana, CrowdSec/Fail2ban.
– Backup: restic/borg + backup ngoài máy.
Luồng truy cập lý tưởng:
Internet → Firewall → Reverse proxy HTTPS → SSO/2FA → App nội bộ
App không trực tiếp expose port. Reverse proxy là cửa chính. SSO kiểm tra danh tính. Firewall giới hạn bề mặt tấn công.
Chọn bộ app self-hosted hợp lý
Không nên cài quá nhiều ngay từ đầu. Mỗi app = thêm rủi ro, thêm update, thêm backup. Bắt đầu bằng nhóm lõi:
Nhóm hạ tầng
– Caddy: reverse proxy đơn giản, tự cấp TLS.
– Traefik: mạnh với Docker labels, phù hợp nhiều container.
– Nginx Proxy Manager: GUI dễ dùng, hợp người mới.
– Authentik: SSO hiện đại, đẹp, hỗ trợ OAuth2/OIDC, SAML, proxy auth.
– Authelia: nhẹ, phổ biến, mạnh với forward auth.
– Vaultwarden: password manager tự host, rất hữu ích nhưng cực kỳ nhạy cảm.
– Uptime Kuma: giám sát uptime, cảnh báo Telegram/Email/Discord.
– Watchtower/Renovate: hỗ trợ update container, dùng cẩn thận.
Nhóm dữ liệu/cá nhân
– Nextcloud: file, calendar, contact.
– Immich: ảnh, video cá nhân.
– Paperless-ngx: quản lý tài liệu scan.
– Syncthing: đồng bộ file P2P.
– Jellyfin: media server.
Nhóm dev/nội bộ
– Gitea/Forgejo: Git server.
– Woodpecker CI: CI nhẹ.
– Miniflux/FreshRSS: RSS reader.
– Linkding/Wallabag: bookmark/read-it-later.
Ưu tiên app có:
– image Docker chính thức/maintained
– update đều
– hỗ trợ proxy headers
– hỗ trợ OIDC/OAuth2
– backup dễ
– không bắt buộc chạy privileged
Reverse proxy: cổng vào duy nhất
Reverse proxy giúp:
– gom nhiều app sau 1 IP
– cấp HTTPS tự động
– route theo domain: nextcloud.example.com, git.example.com
– thêm security headers
– chặn truy cập trực tiếp app backend
– tích hợp SSO/forward auth
Caddy: lựa chọn tối giản
Ví dụ:
nextcloud.example.com {
reverse_proxy nextcloud:80
}
vault.example.com {
reverse_proxy vaultwarden:80
}
Caddy tự lấy chứng chỉ Let’s Encrypt. Ít config. Rất hợp homelab.
Traefik: hợp Docker
Traefik đọc Docker labels → app tự đăng ký route. Mạnh, động, hợp nhiều container. Nhưng phức tạp hơn Caddy.
Nginx Proxy Manager: GUI tiện
Nếu chưa quen config file, NPM giúp tạo host qua giao diện. Tuy nhiên nên backup DB/config kỹ.
Nguyên tắc reverse proxy
– Chỉ expose reverse proxy ra Internet: 80/443.
– App backend chỉ nằm trong Docker network nội bộ.
– Bật HTTPS bắt buộc.
– Thêm security headers:
– Strict-Transport-Security
– X-Frame-Options
– X-Content-Type-Options
– Referrer-Policy
– Không expose dashboard proxy nếu không cần.
– Dashboard quản trị → chỉ qua VPN/SSO.
SSO: một cửa đăng nhập
SSO giúp giảm tình trạng mỗi app một mật khẩu. Người dùng đăng nhập một lần qua Identity Provider, app nhận danh tính qua OIDC/SAML/proxy auth.
Authentik
Phù hợp homelab hiện đại:
– UI tốt
– hỗ trợ OIDC/OAuth2/SAML/LDAP
– có proxy provider cho app không hỗ trợ SSO
– policy linh hoạt
– hỗ trợ MFA/WebAuthn
Dùng Authentik cho:
– Gitea qua OIDC
– Grafana qua OAuth
– Nextcloud qua OIDC app
– Jellyfin có plugin/OIDC tùy cấu hình
– app cũ qua forward auth/proxy auth
Authelia
Nhẹ, cấu hình YAML, thường dùng với Traefik/Nginx. Rất tốt cho mô hình:
User → Reverse proxy → Authelia check → App
Authelia hợp nếu cần:
– bảo vệ app không có login
– policy theo domain/path
– 2FA TOTP/WebAuthn
– LDAP/file user backend
Keycloak
Mạnh, chuẩn enterprise, nhưng nặng hơn. Dùng nếu cần federation/phân quyền phức tạp.
Lưu ý SSO
– Không phải app nào cũng hợp SSO.
– Với app cực nhạy cảm như Vaultwarden: cân nhắc không đặt sau proxy auth phá luồng client, thay vào đó dùng 2FA native + giới hạn IP/VPN.
– Tài khoản admin IdP phải có mật khẩu mạnh + 2FA.
– Có tài khoản break-glass offline, lưu an toàn.
2FA: bắt buộc cho tài khoản quan trọng
Mật khẩu bị lộ là chuyện thường. 2FA giảm thiểu thiệt hại.
Nên dùng
– TOTP: Aegis, 2FAS, Bitwarden Authenticator.
– WebAuthn/passkey/security key: YubiKey, SoloKey, passkey thiết bị.
– Backup codes: in/ghi ra nơi an toàn.
Không nên phụ thuộc
– SMS OTP: dễ bị SIM swap.
– Email OTP duy nhất: nếu email bị chiếm → mất tất cả.
Chính sách gợi ý
– Admin: bắt buộc WebAuthn hoặc TOTP.
– User thường: TOTP tối thiểu.
– App nhạy cảm: 2FA native nếu có.
– SSH: dùng key, tắt password login.
– Root login SSH: tắt.
SSH hardening cơ bản:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes