Self-hosted Dashboard: Cài Đặt Dễ, Tùy Biến Đẹp Cho Newbie

P P T P Chung

Self-hosted dashboard cho người mới: Từ cài đặt đến tùy biến giao diện

Bạn có nhiều dịch vụ tự host: Jellyfin, Pi-hole, Home Assistant, Portainer, Nextcloud, Uptime Kuma… Mỗi lần dùng → phải nhớ IP, port, đường dẫn, tài khoản. Sau vài tuần → tab bookmark lộn xộn, quản lý khó, trải nghiệm kém.

Self-hosted dashboard giải quyết đúng điểm đau đó: một trang trung tâm hiển thị toàn bộ dịch vụ nội bộ, trạng thái, link nhanh, widget, search, icon, theme. Với người mới, dashboard không chỉ “đẹp” mà còn giúp hiểu hệ thống homelab rõ hơn.

Bài viết này hướng dẫn từ chọn dashboard, cài đặt bằng Docker, cấu hình dịch vụ, bảo mật cơ bản, đến tùy biến giao diện.


Self-hosted dashboard là gì?

Self-hosted dashboard = trang web chạy trên máy chủ riêng, NAS, VPS, mini PC, Raspberry Pi. Nó gom các app/dịch vụ vào một giao diện duy nhất.

Ví dụ:

http://192.168.1.10:8096 → Jellyfin – http://192.168.1.10:3000 → Grafana – http://192.168.1.10:9000 → Portainer – http://192.168.1.10:81 → Nginx Proxy Manager

Dashboard → biến thành các card rõ ràng: Media, Network, Monitoring, Storage, Automation.

Lợi ích chính:

Một cửa truy cập → đỡ nhớ URL. – Giao diện trực quan → dễ dùng cho cả gia đình/team. – Theo dõi trạng thái → biết service sống/chết. – Tùy biến mạnh → icon, màu, layout, widget. – Tăng tính chuyên nghiệp cho homelab.


Nên chọn dashboard nào?

Có nhiều lựa chọn. Người mới nên ưu tiên dễ cài, tài liệu tốt, Docker-friendly.

1. Homepage

Homepage hiện rất phổ biến. Giao diện đẹp, cấu hình bằng YAML, hỗ trợ widget cho Docker, Pi-hole, Sonarr, Radarr, Proxmox, Portainer, Kubernetes…

Phù hợp nếu bạn muốn:

– Dashboard hiện đại. – Widget nhiều. – Cấu hình rõ ràng. – Tích hợp Docker tốt.

Trang dự án: https://gethomepage.dev/

2. Homarr

Homarr thân thiện hơn với người mới. Có giao diện kéo-thả, chỉnh nhanh qua web UI.

Phù hợp nếu bạn muốn:

– Ít sửa file config. – Giao diện đẹp sẵn. – Dễ thêm app bằng form.

Trang dự án: https://homarr.dev/

3. Dashy

Dashy giàu tính năng, hỗ trợ nhiều kiểu layout, search, auth, backup config.

Phù hợp nếu bạn thích:

– Tùy biến sâu. – Nhiều template. – Giao diện có thể chỉnh rất mạnh.

Trang dự án: https://dashy.to/

Trong bài này dùng Homepage vì nhẹ, đẹp, cấu trúc rõ, hợp homelab lâu dài.


Chuẩn bị trước khi cài

Bạn cần:

– Máy chạy Linux/NAS/VPS/Raspberry Pi. – Docker + Docker Compose. – IP tĩnh nội bộ cho server, ví dụ 192.168.1.10. – Biết các dịch vụ đang chạy: tên, URL, port. – Editor như VS Code, nano, vim.

Kiểm tra Docker:

docker --version
docker compose version

Nếu chưa có Docker, cài trên Ubuntu/Debian:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

Đăng xuất/đăng nhập lại → quyền Docker có hiệu lực.


Cài Homepage bằng Docker Compose

Tạo thư mục:

mkdir -p ~/homepage/config
cd ~/homepage

Tạo file docker-compose.yml:

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    ports:
      - 3000:3000
    volumes:
      - ./config:/app/config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped

Chạy:

docker compose up -d

Mở trình duyệt:

http://IP_SERVER:3000

Ví dụ:

http://192.168.1.10:3000

Nếu thấy dashboard mặc định → thành công.


Hiểu cấu trúc cấu hình Homepage

Trong ~/homepage/config, bạn sẽ thấy/cần tạo các file YAML chính:

settings.yaml → cấu hình chung. – services.yaml → danh sách app/service. – bookmarks.yaml → bookmark ngoài. – widgets.yaml → widget hệ thống/search/thông tin. – docker.yaml → kết nối Docker. – kubernetes.yaml → nếu dùng Kubernetes.

Homepage dùng YAML. Lưu ý: thụt lề rất quan trọng. Sai indent → dashboard lỗi.


Thêm dịch vụ đầu tiên

Mở file:

nano ~/homepage/config/services.yaml

Ví dụ cấu hình cơ bản:

- Media:
    - Jellyfin:
        href: http://192.168.1.10:8096
        description: Media server
        icon: jellyfin.png

- Network: - Pi-hole: href: http://192.168.1.10/admin description: DNS ad blocker icon: pi-hole.png

- Management: - Portainer: href: http://192.168.1.10:9000 description: Docker management icon: portainer.png

Lưu file. Restart container:

docker compose restart

Kết quả → dashboard có nhóm Media, Network, Management.


Thêm widget trạng thái Docker

Vì đã mount Docker socket ở compose, Homepage có thể đọc container.

Tạo/sửa docker.yaml:

local:
  socket: /var/run/docker.sock

Sau đó trong services.yaml, gắn container vào service:

- Management:
    - Portainer:
        href: http://192.168.1.10:9000
        description: Docker management
        icon: portainer.png
        server: local
        container: portainer

Nếu tên container đúng → Homepage hiển thị trạng thái. Container chết → card báo lỗi.

Lưu ý bảo mật: Mount /var/run/docker.sock cho container có rủi ro. Chỉ dùng với app tin cậy, không public dashboard trực tiếp ra Internet nếu chưa có auth/proxy bảo vệ.

Tùy biến giao diện cơ bản

Mở settings.yaml:

title: Homelab Dashboard
theme: dark
color: slate
language: vi
target: _blank
layout:
  Media:
    style: row
    columns: 3
  Network:
    style: row
    columns: 3
  Management:
    style: row
    columns: 3

Ý nghĩa:

title → tên dashboard. – theme: dark → giao diện tối. – color: slate → bảng màu. – language: vi → ngôn ngữ. – target: _blank → mở link tab mới. – layout → điều chỉnh nhóm/card.

Bạn có thể thử các màu khác như zinc, neutral, stone, gray, red, orange, yellow, green, blue, purple.


Tổ chức dashboard cho dễ dùng

Dashboard tốt không phải càng nhiều card càng hay. Nguyên tắc: nhìn 5 giây hiểu ngay.

Gợi ý nhóm:

Media

– Jellyfin – Plex – Audiobookshelf – Navidrome – Sonarr – Radarr – Bazarr

Network

– Pi-hole – AdGuard Home – Nginx Proxy Manager – UniFi Controller – WireGuard – Tailscale

Monitoring

– Uptime Kuma – Grafana – Prometheus – Netdata – Glances

Storage

– Nextcloud – Syncthing – File Browser – TrueNAS – MinIO

Management

– Portainer – Proxmox – Cockpit – Watchtower – Dozzle

Mẹo: nhóm theo mục đích, không nhóm theo “cài trước/cài sau”. Người dùng cần tìm nhanh, không cần biết lịch sử triển khai.


Thêm bookmark hữu ích

Sửa bookmarks.yaml:

- Documentation:
    - Docker Docs:
        - abbr: DD
          href: https://docs.docker.com/
    - Homepage Docs:
        - abbr: HP
          href: https://gethomepage.dev/
    - LinuxServer.io:
        - abbr: LS
          href: https://www.linuxserver.io/

Bookmark giúp gom tài liệu hay dùng. Đặc biệt hữu ích khi bạn đang học self-host.


Đưa dashboard về tên miền đẹp

http://192.168.1.10:3000 hơi thô. Bạn có thể dùng:

http://dashboard.local

Hoặc:

https://home.example.com

Cách đơn giản trong mạng nội bộ:

– Dùng Pi-hole/AdGuard Home tạo DNS record. – dashboard.lan192.168.1.10. – Dùng Nginx Proxy Manager reverse proxy tới homepage:3000.

Nếu dùng HTTPS nội bộ, có thể dùng DNS challenge với Let’s Encrypt hoặc certificate nội bộ. Nếu public ra Internet, bắt buộc có auth, HTTPS, firewall, cập nhật đều.


Bảo mật tối thiểu

Dashboard thường chứa link tới admin panel. Đừng xem nhẹ.

Checklist:

Không public trực tiếp nếu chưa cần. – Dùng VPN: WireGuard/Tailscale → truy cập từ xa an toàn hơn. – Bật auth ở reverse proxy nếu dashboard không có auth riêng. – Dùng HTTPS. – Không để API key/token lộ trong repo public. – Sao lưu thư mục config. – Cập nhật image định kỳ. – Hạn chế mount Docker socket nếu không cần.

Một lỗi phổ biến: mở dashboard ra Internet rồi link tới Portainer, Proxmox, router. Sai cấu hình → lộ bề mặt tấn công lớn.


Sao lưu, nâng cấp, khôi phục

Sao lưu:

tar -czf homepage-config-backup.tar.gz ~/homepage/config

Nâng cấp image:

cd ~/homepage
docker compose pull
docker compose up -d

Xem log khi lỗi:

docker logs homepage

Khôi phục: copy lại thư mục config, chạy lại compose. Vì cấu hình nằm trong file YAML → di chuyển server rất dễ.


Lỗi thường gặp

Dashboard trắng hoặc không load

Kiểm tra container:

docker ps
docker logs homepage

Thường do port trùng, image lỗi, config sai.

YAML lỗi

Nguyên nhân phổ biến:

– Sai thụt lề. – Dùng tab thay space. – Thiếu dấu :. – Copy icon/href sai vị trí.

Cách xử lý: revert file gần nhất, sửa từng phần nhỏ.

Widget không hiện

Kiểm tra:

– Tên container đúng chưa. – docker.yaml đúng chưa. – Docker socket đã mount chưa. – Container có đang chạy không.


Kết luận thực tế

Self-hosted dashboard là bước nâng cấp nhỏ nhưng tác động lớn. Nó biến homelab từ “mớ dịch vụ rời rạc” thành một hệ thống có tổ chức, dễ dùng, dễ quan sát. Với người mới, Homepage là lựa chọn cân bằng: cài nhanh, nhẹ, đẹp, tùy biến tốt.

Lộ trình nên đi:

1. Cài Docker + Homepage. 2. Thêm 5–10 dịch vụ quan trọng. 3. Chia nhóm rõ ràng. 4. Tùy biến theme/layout. 5. Thêm widget trạng thái. 6. Đặt tên miền nội bộ. 7. Bảo mật bằng VPN/reverse proxy/auth. 8. Sao lưu config.

Đừng cố làm hoàn hảo ngay. Dashboard tốt nhất là dashboard bạn dùng mỗi ngày, cập nhật dần, phản ánh đúng hệ thống thật. Bắt đầu nhỏ → thêm dần → tối ưu sau.

Tác giả

P T P

Chia sẻ

Bài viết liên quan

Bình luận (0)

Email của bạn sẽ không được hiển thị công khai.

Chưa có bình luận. Hãy là người đầu tiên!