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 versionNế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 ~/homepageTạ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-stoppedChạy:
docker compose up -dMở trình duyệt:
http://IP_SERVER:3000Ví dụ:
http://192.168.1.10:3000Nế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.yamlVí 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 restartKế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.sockSau đó 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: portainerNế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
Gõ http://192.168.1.10:3000 hơi thô. Bạn có thể dùng:
http://dashboard.localHoặc:
https://home.example.comCách đơn giản trong mạng nội bộ:
– Dùng Pi-hole/AdGuard Home tạo DNS record.
– dashboard.lan → 192.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/configNâng cấp image:
cd ~/homepage
docker compose pull
docker compose up -dXem log khi lỗi:
docker logs homepageKhô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 homepageThườ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.
Bình luận (0)
Chưa có bình luận. Hãy là người đầu tiên!