Dashy và Homer: Bảng điều khiển HomeLab tập trung để quản lý dịch vụ

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Bối cảnh & Lý do: Nhu cầu cấp thiết của người điều hành HomeLab

Một môi trường HomeLab nhanh chóng phát triển thành một tập hợp các dịch vụ đa dạng. Bạn có thể có một máy chủ media đang chạy, một Docker registry lưu trữ image, một giải pháp lưu trữ mạng (NAS) đang hoạt động, và có thể là một trung tâm nhà thông minh kết nối mọi thứ lại với nhau.

Mỗi dịch vụ đều vô giá, nhưng thường đi kèm với giao diện web, địa chỉ IP hoặc cổng riêng. Việc quản lý mê cung hàng ngày này có thể trở thành một công việc vặt thực sự, buộc bạn phải duy trì một danh mục đánh dấu và các địa chỉ IP khó nhớ trong đầu. Điều này làm giảm hiệu quả và tạo ra ma sát không cần thiết.

Trong sáu tháng, cá nhân tôi đã vật lộn với sự phức tạp ngày càng tăng này. Tôi liên tục chuyển đổi các tab trình duyệt, cố gắng nhớ các số cổng cụ thể và ghép nối tình trạng tổng thể của HomeLab từ các nguồn rải rác. Nhu cầu về một cái nhìn thống nhất trở nên rõ ràng.

Tôi khao khát một bảng điều khiển tập trung, nơi mọi dịch vụ thiết yếu chỉ cách một cú nhấp chuột. Một bảng điều khiển như vậy không chỉ cung cấp quyền truy cập nhanh mà còn đưa ra cái nhìn tổng quan tức thì về trạng thái hoạt động của từng dịch vụ. Điều này không chỉ đơn thuần là sự tiện lợi; về cơ bản, nó giúp bạn kiểm soát tốt hơn và có cái nhìn rõ ràng hơn về thiết lập của mình.

Cuộc tìm kiếm của tôi đã đưa tôi đến hai ứng dụng bảng điều khiển tự lưu trữ mã nguồn mở nổi bật: Dashy và Homer. Cả hai đều được thiết kế để tổng hợp các liên kết và thông tin về các dịch vụ của bạn. Việc lựa chọn và triển khai một trong các giải pháp này không chỉ đơn thuần là cài đặt một phần mềm khác.

Đó là một sự thay đổi cơ bản trong cách bạn tương tác với HomeLab của mình. Dựa trên kinh nghiệm thực tế của tôi, việc tạo ra trung tâm chỉ huy tập trung này là một bước quan trọng đối với bất kỳ ai nghiêm túc trong việc quản lý HomeLab. Nó giảm đáng kể gánh nặng nhận thức, đơn giản hóa chẩn đoán và cuối cùng làm cho HomeLab của bạn trở nên thú vị hơn rất nhiều khi vận hành.

Cài đặt: Sắp xếp mọi thứ với Docker Compose

Đối với nhiều người đam mê HomeLab, Docker và Docker Compose đã trở thành phương pháp ưa thích để triển khai ứng dụng. Cách tiếp cận này mang lại sự nhất quán, cô lập và đơn giản hóa việc cập nhật. Thuận tiện thay, cả Dashy và Homer đều hỗ trợ hoàn toàn Docker, giúp quá trình cài đặt của chúng khá đơn giản.

Cài đặt Dashy

Dashy nổi bật với giao diện đẹp mắt và các tùy chọn tùy chỉnh mở rộng, khiến nó trở thành một lựa chọn tuyệt vời cho một bảng điều khiển. Để khởi động và chạy, bạn thường sử dụng tệp docker-compose.yaml. Bắt đầu bằng cách tạo một thư mục mới dành riêng cho Dashy. Sau đó, thêm nội dung sau vào tệp docker-compose.yaml của bạn:

version: '3.8'
services:
  dashy:
    container_name: dashy
    image: lissy93/dashy:latest
    ports:
      - 8080:80
    volumes:
      - ./appdata/dashy/conf.yml:/app/public/conf.yml
    environment:
      - NODE_ENV=production
    restart: unless-stopped

Cấu hình này sẽ expose Dashy trên cổng 8080 của máy chủ của bạn. Volume mount ./appdata/dashy/conf.yml là một thành phần quan trọng. Đây là nơi cấu hình tùy chỉnh của bạn sẽ nằm, đảm bảo cài đặt của bạn vẫn tồn tại ngay cả khi bạn cập nhật hoặc tạo lại container. Sau khi lưu tệp, điều hướng đến thư mục trong terminal của bạn và thực thi lệnh sau:

docker compose up -d

Sau khi container khởi động, Dashy sẽ có thể truy cập được trong trình duyệt của bạn tại http://your-homelab-ip:8080.

Cài đặt Homer

Ngược lại, Homer cung cấp trải nghiệm bảng điều khiển tối giản nhưng cực kỳ hiệu quả. Sự đơn giản và tốc độ của nó thường được người dùng đánh giá cao. Tương tự như Dashy, việc triển khai Homer dễ dàng nhất với một tệp docker-compose.yaml:

version: '3.8'
services:
  homer:
    container_name: homer
    image: b4bz/homer:latest
    ports:
      - 8081:8080
    volumes:
      - ./appdata/homer:/www/assets
    environment:
      - UID=1000
      - GID=1000
    restart: unless-stopped

Tại đây, Homer được cấu hình chạy trên cổng 8081. Volume mount ./appdata/homer:/www/assets là rất quan trọng; đây là nơi Homer sẽ tìm tệp config.yml và bất kỳ tài nguyên tùy chỉnh nào bạn có thể thêm, chẳng hạn như icon. Thiết lập này cho phép cấu hình bên ngoài dễ dàng. Triển khai Homer bằng cách sử dụng lệnh Docker Compose tương tự:

docker compose up -d

Sau đó, bạn có thể truy cập Homer tại http://your-homelab-ip:8081.

Cấu hình: Tùy chỉnh Trung tâm Chỉ huy của bạn

Khi bảng điều khiển bạn chọn đã hoạt động, giá trị thực sự của nó sẽ xuất hiện khi bạn tùy chỉnh nó cho môi trường HomeLab cụ thể của mình. Cả Dashy và Homer đều sử dụng YAML để cấu hình, một tiêu chuẩn tuần tự hóa dữ liệu dễ đọc giúp đơn giản hóa việc tùy chỉnh đáng kể.

Cấu hình Dashy

Tệp cấu hình `conf.yml` của Dashy cung cấp nhiều tùy chọn mở rộng, cho phép cá nhân hóa sâu. Bạn sẽ chủ yếu chỉnh sửa tệp `conf.yml` nằm trong thư mục `./appdata/dashy` đã mount. Nếu tệp này chưa tồn tại, bạn có thể sao chép một ví dụ từ kho lưu trữ GitHub của Dashy hoặc cho phép Dashy tạo một tệp cơ bản trong lần chạy đầu tiên, sau đó bạn có thể sửa đổi nó.

Thông thường, cấu hình Dashy bao gồm việc xác định các phần (sections), đóng vai trò là các danh mục, và sau đó thêm các mục riêng lẻ (các dịch vụ của bạn) vào các phần đó. Mỗi mục có thể bao gồm tên, URL, icon, mô tả và thậm chí cả kiểm tra tình trạng (health checks) tích hợp.

# Trích đoạn conf.yml cho Dashy
appConfig:
  theme: 'material'
  layout: 'auto'
  enable мороsearch: true

pageInfo:
  title: 'Bảng điều khiển HomeLab của tôi'
  description: 'Truy cập tập trung vào tất cả các dịch vụ HomeLab'

sections:
  - name: 'Dịch vụ Media'
    icon: 'FaTv'
    items:
      - title: 'Jellyfin'
        url: 'http://192.168.1.100:8096'
        icon: 'fas fa-tv'
        target: '_blank'
        description: 'Máy chủ media tự host của tôi'
      - title: 'Sonarr'
        url: 'http://192.168.1.100:8989'
        icon: 'fas fa-download'
        target: '_blank'
        description: 'Tự động hóa chương trình TV'
  - name: 'Công cụ Mạng'
    icon: 'FaNetworkWired'
    items:
      - title: 'Pi-hole'
        url: 'http://192.168.1.5'
        icon: 'fab fa-adversal'
        target: '_blank'
        description: 'Chặn quảng cáo toàn mạng'
        statusCheck: true

Sau khi bạn chỉnh sửa `conf.yml`, Dashy thường tự động tải lại nếu volume mount của bạn được thiết lập chính xác. Nếu không, một lệnh `docker compose restart dashy` nhanh chóng sẽ áp dụng các thay đổi của bạn. Để tùy chỉnh nâng cao hơn, hãy tham khảo tài liệu chính thức của Dashy để khám phá các chủ đề khác nhau, icon tùy chỉnh, phương pháp xác thực và widget.

Cấu hình Homer

Tệp `config.yml` của Homer, được tìm thấy trong thư mục `./appdata/homer` đã mount của bạn, cũng đơn giản và thân thiện với người dùng. Nó tập trung vào sự rõ ràng và trình bày trực quan sạch sẽ. Bạn bắt đầu bằng cách định nghĩa tiêu đề và phụ đề cho bảng điều khiển của mình, sau đó cấu trúc các dịch vụ khác nhau thành các nhóm hợp lý.

# Trích đoạn config.yml cho Homer
title: 'HomeLab của tôi'
subtitle: 'Trung tâm Bảng điều khiển'
logo: 'assets/logo.png'

columns:
  - # Cột đầu tiên
    name: 'Năng suất'
    icon: 'fas fa-laptop-code'
    items:
      - name: 'Nextcloud'
        logo: 'assets/nextcloud.png'
        url: 'https://cloud.homelab.local'
        target: '_blank'
      - name: 'Jira'
        logo: 'assets/jira.png'
        url: 'http://jira.homelab.local:8080'
        target: '_blank'

  - # Cột thứ hai
    name: 'Giám sát'
    icon: 'fas fa-chart-line'
    items:
      - name: 'Grafana'
        logo: 'assets/grafana.png'
        url: 'http://grafana.homelab.local'
        target: '_blank'
        subtitle: 'Bảng điều khiển Metrics'
        # Tùy chọn: Thêm icon tùy chỉnh cho trạng thái
        # status: 'http://grafana.homelab.local/api/health'

Homer hỗ trợ trực tiếp các icon Font Awesome thông qua tên lớp của chúng, chẳng hạn như `fas fa-laptop-code`. Bạn cũng có thể bao gồm các logo hình ảnh tùy chỉnh, như `nextcloud.png`, bằng cách đặt chúng trực tiếp vào thư mục `./appdata/homer` của bạn và tham chiếu chúng trong cấu hình. Tương tự như Dashy, hãy lưu các thay đổi `config.yml` của bạn và Homer sẽ tự động nhận chúng, hoặc bạn có thể chạy `docker compose restart homer` để áp dụng chúng.

Xác minh & Giám sát: Đảm bảo thời gian hoạt động và khả năng truy cập

Một bảng điều khiển tập trung chỉ thực sự hiệu quả nếu nó đáng tin cậy và phản ánh chính xác trạng thái thời gian thực của các dịch vụ của bạn. Do đó, việc xác minh và giám sát bảng điều khiển trở thành các bước quan trọng sau khi cấu hình ban đầu.

Kiểm tra quyền truy cập và chức năng

Sau khi hoàn tất thiết lập và cấu hình ban đầu, bước đầu tiên của bạn là chỉ cần điều hướng đến URL của bảng điều khiển. Đối với Dashy, đây có thể là `http://your-homelab-ip:8080`, và đối với Homer, `http://your-homelab-ip:8081`. Khi đã truy cập, hãy kiểm tra những điều sau:

  • Xác nhận rằng tất cả các dịch vụ đã cấu hình của bạn xuất hiện đúng như mong đợi trên bảng điều khiển.
  • Xác minh rằng việc nhấp vào mỗi liên kết sẽ đưa bạn đến dịch vụ chính xác.
  • Đảm bảo mọi icon hoặc chủ đề tùy chỉnh bạn đã áp dụng được hiển thị đúng cách.

Nếu bạn đã cấu hình kiểm tra tình trạng (health checks) cho các dịch vụ của mình (Dashy hỗ trợ điều này nguyên bản), hãy quan sát xem các chỉ báo trạng thái có phản ánh chính xác tình trạng hiện tại của chúng hay không. Một bảng điều khiển được cấu hình đúng cách sẽ nhanh chóng hiển thị nếu một dịch vụ đang gặp sự cố ngừng hoạt động.

Giám sát chủ động

Trong khi bảng điều khiển của bạn cung cấp cái nhìn tổng quan trực quan nhanh chóng, việc giám sát trực tiếp ứng dụng bảng điều khiển cũng là điều khôn ngoan. Việc tích hợp nó vào ngăn xếp giám sát HomeLab hiện có của bạn đảm bảo rằng ‘một cửa sổ duy nhất’ của bạn vẫn hoạt động và có thể truy cập được suốt ngày đêm.

Bạn có thể sử dụng các công cụ cơ bản như curl hoặc wget từ một máy khác trên mạng của bạn để định kỳ kiểm tra xem máy chủ web của bảng điều khiển có đang phản hồi hay không. Ví dụ:

curl -I http://your-homelab-ip:8080

Một phản hồi `HTTP/1.1 200 OK` xác nhận rằng máy chủ web đang hoạt động và chức năng. Đối với các giải pháp giám sát nâng cao hơn, hãy xem xét các tùy chọn sau:

  • UptimeRobot hoặc Healthchecks.io: Các dịch vụ bên ngoài này có thể ping URL của bảng điều khiển của bạn theo các khoảng thời gian đều đặn và gửi cảnh báo nếu nó không thể truy cập được.
  • Prometheus/Grafana: Nếu bạn đã thiết lập các công cụ này, bạn có thể dễ dàng cấu hình một HTTP probe đơn giản để theo dõi khả năng khả dụng và thời gian phản hồi của bảng điều khiển.

Duy trì Bảng điều khiển của bạn

Việc giữ cho bảng điều khiển của bạn được cập nhật là điều cần thiết cho cả bảo mật và để tận dụng các tính năng mới. Vì cả Dashy và Homer đều được triển khai qua Docker, quá trình này tương đối đơn giản:

# Cho Dashy hoặc Homer
docker compose pull
docker compose up -d

Chuỗi lệnh này kéo image mới nhất cho ứng dụng bảng điều khiển của bạn và sau đó tạo lại container. Điều này đảm bảo bạn đang chạy phiên bản mới nhất mà không làm mất cấu hình của mình, nhờ vào các volume mount cố định. Hãy nhớ thường xuyên kiểm tra trang GitHub của dự án để biết các ghi chú phát hành. Điều này sẽ giúp bạn cập nhật thông tin về các bản cập nhật, tính năng mới và bất kỳ thay đổi lớn tiềm ẩn nào có thể cần chú ý.

Sau sáu tháng sử dụng Dashy và Homer, tôi có thể tự tin nói rằng thời gian đầu tư vào việc thiết lập và duy trì các bảng điều khiển này là vô cùng xứng đáng. Nó đã cải thiện đáng kể hiệu quả HomeLab của tôi và mang lại sự an tâm đáng kể. Cái mà trước đây từng là một tập hợp các dịch vụ rời rạc giờ nay cảm thấy giống như một trải nghiệm HomeLab gắn kết, dễ quản lý và thực sự thú vị.

Share: