- Self-hosting gần đây đang trở nên phổ biến như một giải pháp thay thế cho các dịch vụ tập trung lấy thu thập dữ liệu làm trọng tâm
- Dựa trên trải nghiệm vận hành ổn định hơn 1 năm sau khi thử nghiệm nhiều công cụ và ứng dụng khác nhau, bài viết giới thiệu các công cụ hữu ích nhất
- Tổng hợp các bài gợi ý về container runtime, công cụ quản trị nền web, reverse proxy và VPN, cùng các công cụ self-hosting khác
- Đây không phải là bài viết để phân định hơn kém giữa các giải pháp cụ thể, mà nhấn mạnh rằng mỗi vấn đề đều có nhiều cách giải quyết khác nhau
Container runtime
- Ngày nay, container đã trở thành nền tảng mặc định của hosting, còn cách làm truyền thống ngày càng ít gặp hơn
- Đây là một xu hướng rất tích cực với người dùng home server (homelabber), vì container giúp triển khai phần mềm dễ hơn và mang lại hiệu năng hiệu quả hơn máy ảo
- Dù đa số mọi người dùng Docker, bài viết này giới thiệu nhiều runtime thay thế có thể dùng trong môi trường tại nhà
-
Docker
- Container runtime nguyên bản được sử dụng rộng rãi nhất
- Nhờ tài liệu phong phú và cộng đồng lớn, ngay cả khi không quá quen với IT, bạn vẫn có thể sao chép
docker-compose.yml từ GitHub và chạy thử
- Tuy vậy, các thiết lập liên quan đến bảo mật cần được cân nhắc riêng
-
Podman
- Container runtime thế hệ mới được chú ý nhờ kiến trúc rootless và khả năng tương thích Docker CLI
- Vì hoạt động không cần daemon, nó phù hợp với những ai coi trọng bảo mật hoặc muốn học thêm về công nghệ liên quan
- Có thể dùng nguyên hầu hết các lệnh Docker, và cung cấp alias tương thích với lệnh
docker nên việc chuyển đổi khá dễ
- Ban đầu có thể hơi khó tiếp cận, nhưng khi tài liệu và cộng đồng ngày càng phát triển, mức độ tiếp cận cũng đang dần tốt hơn
- Ngoài ra, với Podman Quadlets, bạn còn có thể quản lý container theo kiểu khai báo dựa trên systemd thay cho docker compose
-
Kubernetes
- Với những người dùng home server tò mò và thích thử nghiệm, đây là công cụ nâng cao rất kích thích tinh thần chinh phục
- Là công cụ orchestration có thể quản lý rất nhiều instance một cách gọn gàng, nó mang lại trải nghiệm quản trị ở cấp độ doanh nghiệp
- Tuy nhiên, vì quá nhiều tính năng và rất phức tạp nên với đa số người dùng là hơi quá mức cần thiết
- Trong môi trường gia đình, mục tiêu chính thường là học hỏi, tập trung vào hiểu công nghệ hơn là sử dụng thực tế
Công cụ quản lý container trên nền web
- Một số người thích gom các file compose trên ổ đĩa cục bộ để tự quản lý, nhưng điều đó có bất tiện là mỗi lần đều phải SSH vào server để kiểm tra log
- Thay vào đó, dùng công cụ quản lý container trên nền web sẽ giúp thao tác thuận tiện hơn nhiều
-
Portainer
- Công cụ quản trị web UI ổn định nhất, tương thích với cả Docker, Kubernetes và Podman
- Được dùng rộng rãi từ home server đến môi trường doanh nghiệp, và cũng rất hữu ích để học thông qua thực hành thực tế
- Có bản cộng đồng mã nguồn mở và bản enterprise kèm thêm tính năng (miễn phí 3 license)
- Nhờ giao diện trực quan và nhiều tính năng, đây là lựa chọn rất có lợi cho việc quản lý container
-
Dockge
- Công cụ quản lý Docker Compose trên nền web mới nổi do tác giả Uptime Kuma tạo ra
- Chưa trưởng thành như Portainer, nhưng UI rất đơn giản và trực quan là điểm mạnh nổi bật
- Nhà phát triển phản hồi nhanh trên GitHub Issues và có cập nhật định kỳ
- Phù hợp với người thích công cụ nhẹ và tối giản
Reverse proxy và VPN
- Để truy cập các ứng dụng self-hosting từ bên ngoài, có hai cách chính:
- Mở trực tiếp dịch vụ ra Internet
- Truy cập mạng nội bộ thông qua VPN
- VPN an toàn hơn về mặt bảo mật, nhưng cách mở ra Internet cũng vẫn rất hữu ích nếu được cấu hình cẩn thận
-
Pangolin
- Giải pháp đột phá kết hợp VPN và reverse proxy thành một
- Nó hoạt động gần giống như Cloudflare cho self-hosting
- Chỉ cần cài ingress server trên VPS hoặc môi trường tương tự là có thể kết nối thuận tiện bằng VPN client từ nhiều môi trường khác nhau
- Tích hợp cả CrowdSec và các tính năng SSO cơ bản
- Đây là công cụ ấn tượng đến mức trở thành động lực để tác giả viết bài này, và theo thời gian có thể trở thành lựa chọn thay thế tiêu chuẩn cho các giải pháp hiện có
-
Nginx Proxy Manager (NPM)
- Frontend cho Nginx cho phép cấu hình proxy TCP/UDP/HTTP(S) dễ dàng qua web UI
- Dù được nhiều người dùng, tác giả đánh giá một số tính năng (ví dụ: bảo vệ bằng mật khẩu) là không ổn định
- Dù không để lại ấn tượng tốt ngay lần đầu sử dụng, khi hoạt động thì nó vẫn hoàn thành đúng vai trò của mình
-
Caddy
- Với file cấu hình đơn giản (Caddyfile), nó có thể tự động xử lý từ cấu hình proxy đến cấp chứng chỉ HTTPS
- Vì không có web UI nên không khuyến nghị cho người mới, nhưng với người yêu thích triết lý UNIX thì đây là lựa chọn hàng đầu
- Hỗ trợ Let’s Encrypt mặc định, và ưu điểm là không cần cấu hình quá phức tạp
-
NetBird
- Nếu đã quen với Tailscale, bạn có thể làm quen ngay với giải pháp VPN này
- Tự động thiết lập mạng dựa trên WireGuard, giúp giảm bớt cấu hình phức tạp
- Có thể dùng free tier trên cloud hoặc tự host, nên khá linh hoạt
Công cụ giám sát trạng thái và cảnh báo
-
Uptime Kuma
- Cho phép giám sát trạng thái dịch vụ dễ dàng mà không cần stack nặng như Zabbix hay Grafana
- Chỉ với một lần triển khai là có thể thiết lập cảnh báo qua nhiều kênh khác nhau
- Rất xuất sắc để kiểm tra tính sẵn sàng của hệ thống self-hosting
-
Gotify
- Server thông báo cho phép gửi push notification bằng các yêu cầu HTTP đơn giản
- Có thể nhận thông báo sau khi cài ứng dụng di động, đồng thời tích hợp được với Uptime Kuma và các công cụ khác
- Rất thực tiễn vì có thể dùng cùng nhiều công cụ self-hosting khác nhau
Tài liệu bổ sung để tìm ứng dụng self-hosting
- Đây là tập hợp các nguồn tài liệu hữu ích để tìm nhiều ứng dụng self-hosting khác nhau
-
- Danh sách phần mềm đồ sộ được cung cấp trên GitHub
- Hơi thiếu sắp xếp và cũng có bao gồm một số dự án đã ngừng phát triển
-
- Đây là nguồn tài liệu mà tác giả yêu thích nhất
- Cung cấp newsletter giới thiệu các ứng dụng ngách và thư mục ứng dụng lớn có chức năng sắp xếp
- Là một trang web rất hữu ích
-
- Bộ sưu tập các file Docker Compose có thể chạy ngay
- Một số ứng dụng có thể gặp vấn đề tương thích do cập nhật, nhưng nhìn chung vẫn là nguồn tham khảo tốt
4 bình luận
Tôi đã mua một con
n100trong đợt giảm giá trước trên Ali, cài Proxmox rồi trước mắt đã sao lưu toàn bộ dữ liệu từ máy chủ Oracle ARM đang dùng sang. Ngoài ra tôi cũng đã cài sẵn Xpenology và pfSense, tuy vẫn chưa vận hành nghiêm túc nhưng sắp tới dự định sẽ chuyển sang dùng làm máy chính.Cuối năm ngoái tôi đã đăng ký một dịch vụ VPN đang giảm giá. Tôi dần thấy có dấu hiệu nhiều thay đổi sắp diễn ra ở các dịch vụ lớn, nên đã quyết định sẽ từng bước tự host. Trước mắt chắc sẽ chuyển mật khẩu và dấu trang của trình duyệt sang, rồi thử nghiệm từng chút một.
Docker + Portainer + Cloudflare + Uptime Kuma
Tôi đang dùng như thế này.
Ý kiến trên Hacker News
Thích ý tưởng tự host. Đang vận hành nhiều website nhỏ và dự án nên tài nguyên không phải vấn đề lớn
Đang thiết lập một VPS mới
dnf-automatic, cấu hìnhreboot = when-changedđể tự động hóa cập nhậtLo ngại về sự gia tăng của tự host
Vẫn dự định tiếp tục dùng dokku để host ứng dụng web
Đang quản lý Hashicorp Nomad, Consul và Traefik bằng OpenTofu
Đã thử Portainer nhưng thấy
docker composedễ hơndocker compose pullbằng crontabKhuyên rằng khi tự host thì không nên dùng container mà hãy dùng trình tạo site tĩnh
Đang tự host bằng FreeBSD jails và shell script
Bài viết này tạo động lực để nâng cấp cách host của mình