Vận hành một home lab là một trong những cách thú vị nhất để bạn có thể khám phá công nghệ và quản lý cuộc sống số của mình. Theo thời gian, mình nhận ra rằng Docker containers giúp triển khai, cập nhật và duy trì nhiều dịch vụ thiết yếu một cách đơn giản. Chúng tiết kiệm thời gian, giảm độ phức tạp và cho phép tôi thử nghiệm mà không lo lắng về việc phá hỏng bất cứ điều gì. Dưới đây là bảy Docker containers mà tôi coi là hoàn toàn cần thiết cho home lab của mình.

Uptime Kuma giúp nắm bắt tình hình

Giám sát đáng tin cậy cho tất cả dịch vụ của tôi

Uptime Kuma - A Fancy Self-Hosted Monitoring Tool

Một trong những containers đầu tiên tôi thiết lập là Uptime Kuma, và giờ đây tôi dựa vào nó mỗi ngày. Công cụ giám sát dịch vụ nhẹ này cung cấp cho tôi cái nhìn tức thì về việc liệu các trang web và dịch vụ tự host của tôi có hoạt động hay không. Giao diện web sạch sẽ của nó hiển thị bảng điều khiển trạng thái và biểu đồ cho mọi thứ tôi giám sát. Nó cũng gửi cảnh báo cho tôi khi có sự cố để tôi có thể giải quyết ngay lập tức. Tôi sử dụng nó để giám sát cả các trang web bên ngoài và dịch vụ nội bộ trên mạng của mình.

Cài đặt Uptime Kuma trong Docker rất dễ dàng, và tôi nhanh chóng thêm các bộ giám sát cho blog, máy chủ media và các công cụ nội bộ của mình. Tôi đánh giá cao sự linh hoạt của nó. Nó hỗ trợ kiểm tra HTTP đơn giản, kiểm tra cổng TCP, kiểm tra ping và nhiều hơn nữa. Tôi thậm chí có thể giám sát các dịch vụ đằng sau VPN hoặc proxy ngược, điều này rất hữu ích khi thử nghiệm các cấu hình khác nhau.

Theo thời gian, tôi đã hình thành thói quen kiểm tra bảng điều khiển Uptime Kuma mỗi sáng. Nó mang lại sự yên tâm khi biết rằng tất cả các dịch vụ quan trọng của tôi đang hoạt động như mong đợi. Nếu có sự cố, tôi thường biết về nó trong vòng vài giây nhờ vào các cảnh báo. Container này là một điều không thể thiếu nếu bạn chạy bất kỳ dịch vụ tự host nào và quan tâm đến việc giữ cho chúng khả dụng.

Portainer giúp quản lý containers dễ dàng

Giao diện thân thiện cho quản lý Docker

Kubernetes and Docker Container Management Software

Khi tôi mới bắt đầu sử dụng Docker, tôi làm mọi thứ từ dòng lệnh. Mặc dù cách đó vẫn hiệu quả, nhưng không phải lúc nào cũng thuận tiện nhất để quản lý containers và mạng. Đó là lúc Portainer tạo ra sự khác biệt lớn trong home lab của tôi. Nó cung cấp giao diện web dễ sử dụng để xem, tạo và quản lý containers chỉ với vài cú nhấp chuột.

Cài đặt Portainer rất đơn giản. Tôi chạy nó dưới dạng một container và nó kết nối với socket Docker của tôi. Từ đó, tôi có thể xem tất cả các dịch vụ đang chạy, xem log, và quản lý volumes và networks. Nó cũng cho phép tôi triển khai nhanh chóng các stack mới bằng cách sử dụng các mẫu đơn giản hoặc file compose, điều này tiết kiệm rất nhiều thời gian trong quá trình cài đặt và thử nghiệm.

Portainer giúp tôi phát hiện vấn đề sớm. Nếu tôi thấy một container tiêu thụ quá nhiều bộ nhớ hoặc gặp sự cố, tôi có thể khắc phục trực tiếp từ giao diện. Nó cũng tiện lợi khi thử nghiệm các dịch vụ mới, vì tôi có thể dễ dàng bật tắt containers mà không cần nhớ các cờ dòng lệnh. Đối với bất kỳ ai quản lý hơn một vài containers, Portainer thực sự là một điều không thể thiếu.

Pi-hole chặn quảng cáo và theo dõi không mong muốn

Chặn quảng cáo trên toàn mạng chỉ với một container

pihole dashboard example

Tôi đã sử dụng Pi-hole trong vài năm và không thể tưởng tượng mạng của mình thiếu nó. Container này hoạt động như một máy chủ DNS cục bộ, lọc các domain quảng cáo và các trang theo dõi đã biết. Kết quả là trải nghiệm duyệt web nhanh hơn, sạch hơn trên tất cả các thiết bị của tôi. Nó cũng cải thiện quyền riêng tư, khi ít domain bên thứ ba được truy vấn hơn.

Triển khai Pi-hole trong Docker giúp nó cách ly và cập nhật dễ dàng. Tôi đã ánh xạ cấu hình của nó vào một volume cố định để các cài đặt của tôi tồn tại qua các lần cập nhật container. Tôi cũng kết hợp nó với một máy chủ DNS nhẹ ở phía trên, giữ cho thời gian phản hồi thấp và cải thiện độ tin cậy. Quá trình cài đặt chỉ mất khoảng 15 phút từ đầu đến cuối.

Một trong những tính năng yêu thích của tôi về Pi-hole là nhật ký truy vấn chi tiết của nó. Tôi có thể thấy các domain nào bị chặn và điều chỉnh danh sách chặn của mình nếu có gì đó hợp pháp bị chặn. Thật sự thỏa mãn khi nhìn thấy số lượng yêu cầu bị chặn tăng dần theo thời gian. Nếu bạn quan tâm đến quyền riêng tư và trải nghiệm web tốt hơn, container này nên có trong lab của bạn.

Grafana trực quan hóa toàn bộ dữ liệu trong lab của tôi

Bảng điều khiển đẹp mắt cho giám sát và phân tích

Gallery Image

Grafana đã trở thành một trong những công cụ yêu thích của tôi vì nó cho phép tôi biến dữ liệu thô thành các bảng điều khiển trực quan hữu ích. Dù tôi muốn theo dõi hiệu suất hệ thống, lưu lượng mạng hay sử dụng ứng dụng, Grafana giúp tạo ra các hình ảnh mạnh mẽ một cách dễ dàng. Tôi kết hợp nó với InfluxDB và Prometheus để thu thập và lưu trữ các chỉ số. Sự kết hợp này hoạt động tuyệt vời trong môi trường home lab.

Chạy Grafana trong Docker có nghĩa là việc thiết lập và cập nhật nhanh chóng và đơn giản. Tôi gắn một volume cố định cho cấu hình và bảng điều khiển của nó, vì vậy tôi không bao giờ mất công việc của mình. Giao diện web mượt mà và phản hồi nhanh, và có nhiều plugin sẵn có để mở rộng khả năng của Grafana. Tôi cũng đánh giá cao cách nó dễ dàng tích hợp với các công cụ khác, như Node-RED và Home Assistant.

Có một bảng điều khiển Grafana trên màn hình lab của tôi đã trở thành thói quen hàng ngày. Tôi có thể nhìn lướt qua tải CPU, sử dụng bộ nhớ và tốc độ mạng trong vài giây. Nó cũng hỗ trợ khắc phục sự cố, khi các xu hướng trở nên rõ ràng theo thời gian. Grafana mang lại cho home lab của tôi một mức độ quan sát chuyên nghiệp mà tôi không muốn thiếu.

Vaultwarden quản lý mật khẩu của tôi một cách an toàn

Quản lý mật khẩu tự host dễ dàng

How to Install Vaultwarden Password Manager with Docker

Quản lý mật khẩu là một phần quan trọng của bảo mật số. Thay vì dựa vào dịch vụ của bên thứ ba, tôi chạy Vaultwarden trong Docker. Vaultwarden là một triển khai nhẹ của API Bitwarden, cho phép tôi sử dụng các ứng dụng Bitwarden chính thức trong khi vẫn giữ quyền kiểm soát hoàn toàn dữ liệu của mình. Thiết lập này phù hợp với sở thích tự host các dịch vụ nhạy cảm.

Triển khai Vaultwarden rất đơn giản. Tôi sử dụng một proxy ngược để phục vụ nó qua HTTPS, và tôi lưu trữ cơ sở dữ liệu của nó trên bộ nhớ cố định. Tôi cũng sao lưu thường xuyên để đảm bảo không bao giờ mất kho mật khẩu của mình. Với Vaultwarden, tôi không còn lo lắng về việc mật khẩu của mình có bị lộ trên đám mây hay không. Nó mang lại sự yên tâm khi biết mọi thứ đều dưới sự kiểm soát của tôi.

Sử dụng giải pháp tự host cũng cho phép tôi điều chỉnh dịch vụ theo nhu cầu cụ thể của mình. Tôi có thể đặt các chính sách truy cập nghiêm ngặt, giám sát các lần đăng nhập và thậm chí tích hợp nó với VPN của mạng nhà. Container này mang lại sự linh hoạt mà không dịch vụ thương mại nào có thể sánh kịp. Đối với bất kỳ ai coi trọng cả bảo mật và quyền riêng tư, Vaultwarden là một lựa chọn tuyệt vời.

Jellyfin phục vụ toàn bộ nội dung media của tôi

Một máy chủ media miễn phí và mở hoạt động tuyệt vời

Jellyfin for Fire TV - App on Amazon Appstore

Đối với việc stream media, tôi chạy Jellyfin dưới dạng một Docker container. Nó cho phép tôi tổ chức và truy cập toàn bộ thư viện phim, chương trình truyền hình và âm nhạc trên tất cả các thiết bị của mình. Tôi yêu thích rằng Jellyfin hoàn toàn mã nguồn mở, không có phí bản quyền hay tính năng cao cấp bị khóa sau một bức tường phí. Dự án được duy trì tốt và có cộng đồng mạnh mẽ.

Cài đặt Jellyfin trong Docker đơn giản. Tôi gắn các thư mục media của mình vào container và cấu hình một cơ sở dữ liệu cố định cho thư viện của nó. Khi đã chạy, Jellyfin cung cấp giao diện web mượt mà và ứng dụng cho hầu như mọi nền tảng. Việc stream mượt mà và đáng tin cậy, ngay cả trên phần cứng cũ hơn. Tôi cũng chạy nó cùng với một proxy ngược để truy cập từ xa an toàn.

Một tính năng tôi đánh giá cao là các tùy chọn transcoding linh hoạt của Jellyfin. Nó có thể điều chỉnh luồng video cho các thiết bị và điều kiện mạng khác nhau. Tôi cũng thích hỗ trợ metadata phong phú của nó, làm cho thư viện media của tôi trông đẹp mắt. Nếu bạn thích có máy chủ streaming cá nhân của riêng mình, Jellyfin nên có trong home lab của bạn.

WireGuard cung cấp truy cập từ xa an toàn

Truy cập VPN nhanh và an toàn vào mạng của tôi

Docker] Dựng VPN server WireGuard trên Docker - Viblo

Khi tôi cần truy cập từ xa vào mạng của mình, WireGuard là lựa chọn hàng đầu. Nó cung cấp kết nối VPN nhanh chóng và bảo mật, cho phép tôi truy cập an toàn vào các dịch vụ trong home lab của mình từ bất kỳ đâu. Cài đặt WireGuard trong Docker rất dễ dàng và tôi có thể quản lý cấu hình của nó một cách linh hoạt. Với WireGuard, tôi luôn cảm thấy an toàn khi truy cập vào mạng của mình, dù ở bất kỳ đâu.

Để truy cập mạng gia đình từ xa, tôi sử dụng một container WireGuard. WireGuard là một giải pháp VPN hiện đại, nhanh chóng, an toàn và dễ cấu hình. Chạy nó trong Docker giúp thiết lập của tôi đơn giản và di động. Nó cũng tích hợp tốt với các cài đặt mạng và tường lửa hiện có của tôi.

Tôi đã cấu hình WireGuard với một nhóm nhỏ các thiết bị kết nối, bao gồm điện thoại và máy tính xách tay của mình. Các tệp cấu hình rất dễ hiểu và kết nối rất ổn định. Tôi sử dụng WireGuard để truy cập an toàn vào các dịch vụ như Vaultwarden và Grafana khi tôi không có ở nhà. Nó hoạt động tốt hơn đáng kể so với các tùy chọn VPN cũ hơn như OpenVPN.

Hiệu suất của WireGuard rất xuất sắc. Nó sử dụng mã hóa hiệu quả và duy trì độ trễ thấp, điều này rất quan trọng khi phát trực tuyến hoặc quản lý thiết bị từ xa. Có container này trong home lab của tôi giúp tôi tự tin rằng mình có thể kết nối an toàn với mạng bất cứ khi nào cần. Đây là một phần không thể thiếu trong bộ công cụ của home lab.

Các container phù hợp giúp mọi thứ hoạt động trơn tru

Việc xây dựng home lab của tôi là một hành trình thử nghiệm và khám phá. Trong quá trình đó, bảy container Docker này đã chứng tỏ giá trị của chúng nhiều lần. Chúng giúp tôi quản lý dịch vụ, bảo vệ quyền riêng tư và tự động hóa cuộc sống số. Nếu bạn đang xây dựng hoặc mở rộng một home lab, tôi rất khuyến khích thử các container này. Chúng có thể trở thành một phần thiết yếu trong thiết lập của bạn.