# Glance Dashboard for Kisfenyo # Namespace: glance-system # Domain: kisfenyo.dooplex.hu # Version: v0.8.4 # # Features: # - Custom background image # - Custom logo # - Weather widget (Budapest) # - YouTube subscriptions # - RSS feeds # - To-do list # - iFrames for Cal.com, Google Calendar, Outline # - Bookmarks/Links to all apps # - Calendar widget # # Authentik Integration: # 1. Create Application: "Glance Home" # 2. Create Provider: Proxy Provider with external host https://kisfenyo.dooplex.hu # 3. Create Outpost: glance-outpost # 4. Update auth-url annotation with actual outpost service name --- apiVersion: v1 kind: ConfigMap metadata: name: glance-config-kisfenyo namespace: glance-system labels: app.kubernetes.io/name: glance-kisfenyo app.kubernetes.io/instance: glance-kisfenyo data: glance.yml: | # Glance Configuration # Documentation: https://github.com/glanceapp/glance/blob/main/docs/configuration.md server: host: 0.0.0.0 port: 8080 assets-path: /app/config/assets branding: logo-url: https://web.dooplex.hu/static/DooPlex_logo_3.png favicon-url: https://web.dooplex.hu/static/DooPlex_favicon_3.png app-name: "Kisfenyo's Home" app-icon-url: https://web.dooplex.hu/static/DooPlex_favicon_3.png app-background-color: "#132b66" hide-footer: true theme: disable-picker: true background-color: 210 35 12 # Was: 280 30 15 (purple → blue) primary-color: 200 70 60 # Was: 280 60 70 (purple → cyan-blue) positive-color: 150 55 50 # Was: 120 50 50 (green → teal-green, matches better) negative-color: 0 70 60 # Unchanged (red) contrast-multiplier: 1.2 # Unchanged text-saturation-multiplier: 0.8 # Unchanged custom-css-file: /assets/custom.css pages: # ==================== HOME PAGE ==================== - name: Home slug: home width: wide columns: # ---------- LEFT COLUMN ---------- - size: small widgets: # Glance Custom API Widget - System Stats from Prometheus # Add this widget to your glance.yml configuration under a column's widgets section # # Prometheus URL: http://prometheus.mon-system.svc.cluster.local:9090 # # This widget displays: # - Hostname & Uptime # - CPU usage % and Temperature # - Memory usage % # - Disk usage for all mount points with progress bars # - Fan speeds # # Note: Make sure your Glance version is v0.8.0+ for all template functions - type: custom-api title: DooPlex Server cache: 30s url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_uname_info subrequests: uptime_days: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: floor((time() - node_boot_time_seconds) / 86400) uptime_hours: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: floor((time() - node_boot_time_seconds) % 86400 / 3600) cpu: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) memory: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 cpu_temp: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_hwmon_temp_celsius{instance="dooplex",chip="platform_coretemp_0",sensor="temp1"} fans: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: fan_speed_rpm{instance="dooplex"} disk_root: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 * (1 - node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) disk_root_used: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) / 1073741824 disk_root_total: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_filesystem_size_bytes{mountpoint="/"} / 1073741824 disk_ssd2: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 * (1 - node_filesystem_avail_bytes{mountpoint="/mnt/ssd_2"} / node_filesystem_size_bytes{mountpoint="/mnt/ssd_2"}) disk_ssd2_used: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (node_filesystem_size_bytes{mountpoint="/mnt/ssd_2"} - node_filesystem_avail_bytes{mountpoint="/mnt/ssd_2"}) / 1073741824 disk_ssd2_total: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_filesystem_size_bytes{mountpoint="/mnt/ssd_2"} / 1073741824 disk_hdd1: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 * (1 - node_filesystem_avail_bytes{mountpoint="/mnt/1_hdd"} / node_filesystem_size_bytes{mountpoint="/mnt/1_hdd"}) disk_hdd1_used: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (node_filesystem_size_bytes{mountpoint="/mnt/1_hdd"} - node_filesystem_avail_bytes{mountpoint="/mnt/1_hdd"}) / 1099511627776 disk_hdd1_total: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_filesystem_size_bytes{mountpoint="/mnt/1_hdd"} / 1099511627776 disk_hdd2: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 * (1 - node_filesystem_avail_bytes{mountpoint="/mnt/2_hdd"} / node_filesystem_size_bytes{mountpoint="/mnt/2_hdd"}) disk_hdd2_used: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (node_filesystem_size_bytes{mountpoint="/mnt/2_hdd"} - node_filesystem_avail_bytes{mountpoint="/mnt/2_hdd"}) / 1099511627776 disk_hdd2_total: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_filesystem_size_bytes{mountpoint="/mnt/2_hdd"} / 1099511627776 disk_hdd3: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 * (1 - node_filesystem_avail_bytes{mountpoint="/mnt/3_hdd"} / node_filesystem_size_bytes{mountpoint="/mnt/3_hdd"}) disk_hdd3_used: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (node_filesystem_size_bytes{mountpoint="/mnt/3_hdd"} - node_filesystem_avail_bytes{mountpoint="/mnt/3_hdd"}) / 1099511627776 disk_hdd3_total: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_filesystem_size_bytes{mountpoint="/mnt/3_hdd"} / 1099511627776 disk_hdd4: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 * (1 - node_filesystem_avail_bytes{mountpoint="/mnt/4_hdd"} / node_filesystem_size_bytes{mountpoint="/mnt/4_hdd"}) disk_hdd4_used: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (node_filesystem_size_bytes{mountpoint="/mnt/4_hdd"} - node_filesystem_avail_bytes{mountpoint="/mnt/4_hdd"}) / 1099511627776 disk_hdd4_total: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_filesystem_size_bytes{mountpoint="/mnt/4_hdd"} / 1099511627776 disk_hdd5: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: 100 * (1 - node_filesystem_avail_bytes{mountpoint="/mnt/5_hdd"} / node_filesystem_size_bytes{mountpoint="/mnt/5_hdd"}) disk_hdd5_used: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: (node_filesystem_size_bytes{mountpoint="/mnt/5_hdd"} - node_filesystem_avail_bytes{mountpoint="/mnt/5_hdd"}) / 1099511627776 disk_hdd5_total: url: ${PROMETHEUS_URL}/api/v1/query parameters: query: node_filesystem_size_bytes{mountpoint="/mnt/5_hdd"} / 1099511627776 template: | {{ $hostname := .JSON.String "data.result.0.metric.nodename" }} {{ $uptimeDays := (.Subrequest "uptime_days").JSON.Float "data.result.0.value.1" }} {{ $uptimeHours := (.Subrequest "uptime_hours").JSON.Float "data.result.0.value.1" }} {{ $cpu := (.Subrequest "cpu").JSON.Float "data.result.0.value.1" }} {{ $mem := (.Subrequest "memory").JSON.Float "data.result.0.value.1" }} {{ $temp := (.Subrequest "cpu_temp").JSON.Float "data.result.0.value.1" }} {{ $fans := (.Subrequest "fans").JSON.Array "data.result" }}
Error reading response
{{ else if eq (len (.JSON.Array "publicGroupList")) 0 }}No monitors found
{{ else }}