feat(dashboard): deploy open-source Homepage (3002) and Glance (3003) connected to live telemetry
This commit is contained in:
1 parent
33d188cad9
commit
d2c5448565
9 files changed
+346
-1
No files matched your search
@@ -0,0 +1,122 @@
|
|||||||
|
theme:
|
||||||
|
background-color: 240 10 4
|
||||||
|
primary-color: 210 90 65
|
||||||
|
contrast-multiplier: 1.2
|
||||||
|
|
||||||
|
pages:
|
||||||
|
- name: HomeLab 中控台
|
||||||
|
columns:
|
||||||
|
- size: small
|
||||||
|
widgets:
|
||||||
|
- type: clock
|
||||||
|
hour-format: 24h
|
||||||
|
timezones:
|
||||||
|
- timezone: Asia/Shanghai
|
||||||
|
label: 中国标准时间
|
||||||
|
- timezone: Asia/Singapore
|
||||||
|
label: 新加坡节点
|
||||||
|
|
||||||
|
- type: weather
|
||||||
|
location: Hangzhou, China
|
||||||
|
units: metric
|
||||||
|
hour-format: 24h
|
||||||
|
|
||||||
|
- type: docker-containers
|
||||||
|
title: OrbStack 运行容器
|
||||||
|
|
||||||
|
- size: full
|
||||||
|
widgets:
|
||||||
|
- type: search
|
||||||
|
search-engine: google
|
||||||
|
autofocus: false
|
||||||
|
|
||||||
|
- type: monitor
|
||||||
|
cache: 10s
|
||||||
|
title: 全屋核心服务矩阵 (点击直达)
|
||||||
|
sites:
|
||||||
|
- title: AGY 云端工作台 (24h Web 终端)
|
||||||
|
url: https://agy.961504.xyz
|
||||||
|
check-url: http://host.docker.internal:7681
|
||||||
|
icon: si:gnometerminal
|
||||||
|
- title: 极空间 Z4 私有云 (20TB 存储)
|
||||||
|
url: https://z4.home.961504.xyz:10443
|
||||||
|
check-url: http://host.docker.internal:3004/api/telemetry
|
||||||
|
icon: si:synology
|
||||||
|
- title: Vaultwarden 密码保险箱
|
||||||
|
url: https://vw.961504.xyz
|
||||||
|
check-url: http://host.docker.internal:8222
|
||||||
|
icon: si:bitwarden
|
||||||
|
- title: Mihomo 路由分流面板
|
||||||
|
url: https://clash.home.961504.xyz:10443/ui/
|
||||||
|
check-url: http://host.docker.internal:3004/api/telemetry
|
||||||
|
icon: si:cloudflare
|
||||||
|
- title: 小米主路由器后台
|
||||||
|
url: https://router.home.961504.xyz:10443
|
||||||
|
check-url: http://host.docker.internal:3004/api/telemetry
|
||||||
|
icon: si:xiaomi
|
||||||
|
- title: Uptime Kuma 外部哨兵
|
||||||
|
url: https://status.961504.xyz
|
||||||
|
check-url: https://status.961504.xyz
|
||||||
|
icon: si:uptimekuma
|
||||||
|
|
||||||
|
- type: custom-api
|
||||||
|
title: 全屋硬件与 AI 专线实时状态
|
||||||
|
cache: 3s
|
||||||
|
url: http://host.docker.internal:3004/api/telemetry
|
||||||
|
template: |
|
||||||
|
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;">
|
||||||
|
<div style="padding: 14px; border-radius: 10px; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);">
|
||||||
|
<div class="size-h4 color-primary">🖥️ M6 Mac mini</div>
|
||||||
|
<div class="size-h6 color-subdue" style="margin-top:4px;">IP: {{ .JSON.String "mini.ip" }} · UP {{ .JSON.String "mini.uptime" }}</div>
|
||||||
|
<div style="margin-top: 10px; font-size: 13px;">
|
||||||
|
<div>CPU 负载: <span class="color-highlight">{{ .JSON.Float "mini.cpu_pct" }}%</span></div>
|
||||||
|
<div>统一内存: <span class="color-highlight">{{ .JSON.Float "mini.mem_used_gb" }} / 24 GB ({{ .JSON.Float "mini.mem_pct" }}%)</span></div>
|
||||||
|
<div>NVMe 闪存: <span class="color-highlight">{{ .JSON.Float "mini.disk_used_gb" }} / {{ .JSON.Float "mini.disk_total_gb" }} GB</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 14px; border-radius: 10px; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);">
|
||||||
|
<div class="size-h4 color-primary">💾 极空间 Z4 (20TB)</div>
|
||||||
|
<div class="size-h6 color-subdue" style="margin-top:4px;">IP: {{ .JSON.String "nas.ip" }} · SMB 已挂载 ~/nas</div>
|
||||||
|
<div style="margin-top: 10px; font-size: 13px;">
|
||||||
|
<div>剩余可用: <span class="color-positive">{{ .JSON.Float "nas.free_tb" }} TB</span></div>
|
||||||
|
<div>已用空间: <span class="color-highlight">{{ .JSON.Float "nas.used_tb" }} TB ({{ .JSON.Float "nas.pct" }}%)</span></div>
|
||||||
|
<div>最近灾备: <span class="color-highlight">{{ .JSON.String "nas.latest_backup" }}</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="padding: 14px; border-radius: 10px; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);">
|
||||||
|
<div class="size-h4 color-primary">🛡️ AI 狮城专线 & 家宽</div>
|
||||||
|
<div class="size-h6 color-subdue" style="margin-top:4px;">{{ .JSON.String "network.ai_policy" }}</div>
|
||||||
|
<div style="margin-top: 10px; font-size: 13px;">
|
||||||
|
<div>AI 锁定出口: <span class="color-positive">{{ .JSON.String "network.sg_egress_ip" }}</span></div>
|
||||||
|
<div>狮城延迟: <span class="color-highlight">{{ .JSON.Int "network.sg_delay_ms" }} ms ({{ .JSON.String "network.sg_node" }})</span></div>
|
||||||
|
<div>家里联通公网: <span class="color-highlight">{{ .JSON.String "network.home_wan_ip" }}</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
- type: bookmarks
|
||||||
|
groups:
|
||||||
|
- title: 443 免端口直达 (全网通用)
|
||||||
|
links:
|
||||||
|
- title: AGY 云端工作台
|
||||||
|
url: https://agy.961504.xyz
|
||||||
|
- title: Vaultwarden 密码库
|
||||||
|
url: https://vw.961504.xyz
|
||||||
|
- title: Uptime Kuma 监控
|
||||||
|
url: https://status.961504.xyz
|
||||||
|
- title: 10443 家宽公网直连
|
||||||
|
links:
|
||||||
|
- title: 极空间 Z4
|
||||||
|
url: https://z4.home.961504.xyz:10443
|
||||||
|
- title: AGY 工作台 (10443)
|
||||||
|
url: https://agy.home.961504.xyz:10443
|
||||||
|
- title: Mihomo 面板
|
||||||
|
url: https://clash.home.961504.xyz:10443/ui/
|
||||||
|
- title: 局域网原生极速 (192.168.31.x)
|
||||||
|
links:
|
||||||
|
- title: AGY 终端 (7681)
|
||||||
|
url: http://192.168.31.164:7681
|
||||||
|
- title: 极空间 (5055)
|
||||||
|
url: http://192.168.31.185:5055
|
||||||
|
- title: 小米路由器 (31.1)
|
||||||
|
url: http://192.168.31.1
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
services:
|
||||||
|
glance:
|
||||||
|
image: glanceapp/glance:latest
|
||||||
|
container_name: glance
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "3003:8080"
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
environment:
|
||||||
|
- TZ=Asia/Shanghai
|
||||||
|
volumes:
|
||||||
|
- ./config:/app/config
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
- 开发与终端快捷入口:
|
||||||
|
- AGY 免端口直达 (443):
|
||||||
|
- abbr: AGY
|
||||||
|
href: https://agy.961504.xyz
|
||||||
|
- AGY 家宽直连 (10443):
|
||||||
|
- abbr: 10443
|
||||||
|
href: https://agy.home.961504.xyz:10443
|
||||||
|
- AGY 局域网直连:
|
||||||
|
- abbr: LAN
|
||||||
|
href: http://192.168.31.164:7681
|
||||||
|
|
||||||
|
- 存储与密码库备用入口:
|
||||||
|
- 极空间局域网直连:
|
||||||
|
- abbr: Z4
|
||||||
|
href: http://192.168.31.185:5055
|
||||||
|
- Vaultwarden 家宽直连:
|
||||||
|
- abbr: VW
|
||||||
|
href: https://vw.home.961504.xyz:10443
|
||||||
|
- Vaultwarden 管理后台:
|
||||||
|
- abbr: ADM
|
||||||
|
href: https://vw.961504.xyz/admin
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
my-docker:
|
||||||
|
socket: /var/run/docker.sock
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
---
|
||||||
|
- 全屋硬件与专线实时遥测:
|
||||||
|
- Apple M6 Mac mini:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/apple.png
|
||||||
|
href: https://agy.961504.xyz
|
||||||
|
description: 192.168.31.164 · 12核 M6 / 24GB / 512GB
|
||||||
|
siteMonitor: http://host.docker.internal:3004/api/telemetry
|
||||||
|
widget:
|
||||||
|
type: customapi
|
||||||
|
url: http://host.docker.internal:3004/api/telemetry
|
||||||
|
refreshInterval: 3000
|
||||||
|
mappings:
|
||||||
|
- field:
|
||||||
|
mini: cpu_pct
|
||||||
|
label: CPU 负载
|
||||||
|
format: percent
|
||||||
|
- field:
|
||||||
|
mini: mem_used_gb
|
||||||
|
label: 已用内存 (24GB)
|
||||||
|
format: float
|
||||||
|
suffix: " GB"
|
||||||
|
- field:
|
||||||
|
mini: disk_pct
|
||||||
|
label: SSD 占用
|
||||||
|
format: percent
|
||||||
|
- field:
|
||||||
|
mini: uptime
|
||||||
|
label: 运行时长
|
||||||
|
format: text
|
||||||
|
|
||||||
|
- 极空间 Z4 存储池 (20TB):
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/synology-drive.png
|
||||||
|
href: https://z4.home.961504.xyz:10443
|
||||||
|
description: 192.168.31.185 · SMB 已挂载至 ~/nas
|
||||||
|
siteMonitor: http://192.168.31.185:5055
|
||||||
|
widget:
|
||||||
|
type: customapi
|
||||||
|
url: http://host.docker.internal:3004/api/telemetry
|
||||||
|
refreshInterval: 5000
|
||||||
|
mappings:
|
||||||
|
- field:
|
||||||
|
nas: free_tb
|
||||||
|
label: 剩余可用
|
||||||
|
format: float
|
||||||
|
suffix: " TB"
|
||||||
|
- field:
|
||||||
|
nas: used_tb
|
||||||
|
label: 已用空间
|
||||||
|
format: float
|
||||||
|
suffix: " TB"
|
||||||
|
- field:
|
||||||
|
nas: pct
|
||||||
|
label: 使用率
|
||||||
|
format: percent
|
||||||
|
- field:
|
||||||
|
nas: latest_backup
|
||||||
|
label: 最近灾备
|
||||||
|
format: text
|
||||||
|
|
||||||
|
- 狮城 AI 专线 & 家宽网关:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/tailscale.png
|
||||||
|
href: https://clash.home.961504.xyz:10443/ui/
|
||||||
|
description: AGY 锁定新加坡 Azure (104.43.105.243)
|
||||||
|
siteMonitor: http://192.168.31.1:9999
|
||||||
|
widget:
|
||||||
|
type: customapi
|
||||||
|
url: http://host.docker.internal:3004/api/telemetry
|
||||||
|
refreshInterval: 5000
|
||||||
|
mappings:
|
||||||
|
- field:
|
||||||
|
network: ai_policy
|
||||||
|
label: AI 路由策略
|
||||||
|
format: text
|
||||||
|
- field:
|
||||||
|
network: sg_egress_ip
|
||||||
|
label: 锁定出口 IP
|
||||||
|
format: text
|
||||||
|
- field:
|
||||||
|
network: sg_delay_ms
|
||||||
|
label: 狮城延迟
|
||||||
|
format: number
|
||||||
|
suffix: " ms"
|
||||||
|
- field:
|
||||||
|
network: home_wan_ip
|
||||||
|
label: 家宽公网 IP
|
||||||
|
format: text
|
||||||
|
|
||||||
|
- 核心工作台与私有云:
|
||||||
|
- AGY 云端工作台:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/iterm2.png
|
||||||
|
href: https://agy.961504.xyz
|
||||||
|
description: 24h 常驻 Web 终端 (ttyd + tmux · 关窗不断连)
|
||||||
|
siteMonitor: http://host.docker.internal:7681
|
||||||
|
|
||||||
|
- 极空间 Z4 私有云:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/plex.png
|
||||||
|
href: https://z4.home.961504.xyz:10443
|
||||||
|
description: 20TB 极影视蓝光影院 / 手机相册备份 / 文件管理
|
||||||
|
siteMonitor: http://192.168.31.185:5055
|
||||||
|
|
||||||
|
- Vaultwarden 密码库:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/vaultwarden.png
|
||||||
|
href: https://vw.961504.xyz
|
||||||
|
description: Bitwarden 自托管私人密码保险箱 (每日自动备份至极空间)
|
||||||
|
server: my-docker
|
||||||
|
container: vaultwarden
|
||||||
|
|
||||||
|
- 网络路由与外部哨兵:
|
||||||
|
- Mihomo 路由分流面板:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/clash.png
|
||||||
|
href: https://clash.home.961504.xyz:10443/ui/
|
||||||
|
description: 小米路由器 ShellCrash 透明网关控制台
|
||||||
|
siteMonitor: http://192.168.31.1:9999
|
||||||
|
widget:
|
||||||
|
type: clash
|
||||||
|
url: http://192.168.31.1:9999
|
||||||
|
|
||||||
|
- 小米主路由器后台:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/openwrt.png
|
||||||
|
href: https://router.home.961504.xyz:10443
|
||||||
|
description: 192.168.31.1 · PPPoE 拨号 / DHCP / 端口转发
|
||||||
|
siteMonitor: http://192.168.31.1
|
||||||
|
|
||||||
|
- Uptime Kuma 外部哨兵:
|
||||||
|
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/uptime-kuma.png
|
||||||
|
href: https://status.961504.xyz
|
||||||
|
description: 新加坡 Azure 24h 外部断网监控哨兵
|
||||||
|
siteMonitor: https://status.961504.xyz
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
title: HomeLab
|
||||||
|
favicon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/apple.png
|
||||||
|
theme: dark
|
||||||
|
color: zinc
|
||||||
|
headerStyle: clean
|
||||||
|
statusStyle: dot
|
||||||
|
hideVersion: true
|
||||||
|
useEqualHeights: true
|
||||||
|
|
||||||
|
layout:
|
||||||
|
全屋硬件与专线实时遥测:
|
||||||
|
style: row
|
||||||
|
columns: 3
|
||||||
|
核心工作台与私有云:
|
||||||
|
style: row
|
||||||
|
columns: 3
|
||||||
|
网络路由与外部哨兵:
|
||||||
|
style: row
|
||||||
|
columns: 3
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
- datetime:
|
||||||
|
text_size: xl
|
||||||
|
format:
|
||||||
|
dateStyle: medium
|
||||||
|
timeStyle: short
|
||||||
|
hourCycle: h23
|
||||||
|
|
||||||
|
- openmeteo:
|
||||||
|
label: 实时天气
|
||||||
|
latitude: 30.2741
|
||||||
|
longitude: 120.1551
|
||||||
|
timezone: Asia/Shanghai
|
||||||
|
units: metric
|
||||||
|
cache: 5
|
||||||
|
|
||||||
|
- search:
|
||||||
|
provider: google
|
||||||
|
focus: false
|
||||||
|
showSearchSuggestions: true
|
||||||
|
target: _blank
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
services:
|
||||||
|
homepage:
|
||||||
|
image: ghcr.io/gethomepage/homepage:latest
|
||||||
|
container_name: homepage
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "3002:3000"
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
environment:
|
||||||
|
- HOMEPAGE_ALLOWED_HOSTS=*
|
||||||
|
- TZ=Asia/Shanghai
|
||||||
|
volumes:
|
||||||
|
- ./config:/app/config
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
@@ -15,7 +15,7 @@ from concurrent.futures import ThreadPoolExecutor
|
|||||||
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
|
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
PORT = int(os.environ.get("PORT", "3002"))
|
PORT = int(os.environ.get("PORT", "3004"))
|
||||||
BASE_DIR = Path(__file__).resolve().parent
|
BASE_DIR = Path(__file__).resolve().parent
|
||||||
INDEX_FILE = BASE_DIR / "index.html"
|
INDEX_FILE = BASE_DIR / "index.html"
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user