fix: completed and ironed out any kinks relating to the homepage dashboard

This commit is contained in:
2026-05-25 19:47:56 -07:00
parent 676182baea
commit 360f50b2d3
8 changed files with 351 additions and 161 deletions
+2
View File
@@ -18,4 +18,6 @@ gluetun-data/
homepage/* homepage/*
!homepage/*.yaml !homepage/*.yaml
!homepage/*.yml !homepage/*.yml
!homepage/*.css
!homepage/*.js
!homepage/images/ !homepage/images/
+7
View File
@@ -343,6 +343,9 @@ services:
- "HOMEPAGE_VAR_TERMIX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TERMIX_PORT}" - "HOMEPAGE_VAR_TERMIX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TERMIX_PORT}"
extra_hosts: extra_hosts:
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
networks:
staticaddress:
ipv4_address: 172.16.0.1
restart: always restart: always
glances: glances:
@@ -446,6 +449,10 @@ networks:
driver: bridge driver: bridge
termix-net: termix-net:
driver: bridge driver: bridge
staticaddress:
ipam:
config:
- subnet: "172.16.0.0/16"
volumes: volumes:
myspeed: myspeed:
+4 -4
View File
@@ -2,17 +2,17 @@
# For configuration options and examples, please see: # For configuration options and examples, please see:
# https://gethomepage.dev/configs/bookmarks # https://gethomepage.dev/configs/bookmarks
- Bookmarks: - Bookmarks:
- Github: - github/dhaan7/torrent-stack:
- icon: si-github - icon: sh-github
href: https://github.com/dhaan7/torrent-stack href: https://github.com/dhaan7/torrent-stack
description: link to this GitHub repository description: link to this GitHub repository
- Termix: - Termix:
- icon: si-termix - icon: "{{HOMEPAGE_VAR_TERMIX_ADDRESS}}/favicon.ico"
href: "{{HOMEPAGE_VAR_TERMIX_HOST}}" href: "{{HOMEPAGE_VAR_TERMIX_HOST}}"
description: Terminal emulator in your web browser description: Terminal emulator in your web browser
- Monitorix: - Monitorix:
- icon: si-monitorix - icon: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_LOCAL_IPV4}}:4000/monitorix/monitorixico.png"
href: http://{{HOMEPAGE_VAR_SERVER_NAME}}:4000/monitorix href: http://{{HOMEPAGE_VAR_SERVER_NAME}}:4000/monitorix
description: Generate and review system reports description: Generate and review system reports
+4
View File
@@ -0,0 +1,4 @@
img[src*="selfhs"] {
filter: invert(82%) sepia(23%) saturate(1098%) hue-rotate(193deg)
brightness(288%) contrast(88%) !important;
}
View File
+2 -2
View File
@@ -6,5 +6,5 @@
# host: 127.0.0.1 # host: 127.0.0.1
# port: 2375 # port: 2375
# my-docker: my-docker:
# socket: /var/run/docker.sock socket: /var/run/docker.sock
+254 -89
View File
@@ -4,9 +4,8 @@
- "Top": - "Top":
- "io": - "io":
icon: si-docker icon: sh-docker-light
href: "{{HOMEPAGE_VAR_GLANCES_HOST}}" href: "{{HOMEPAGE_VAR_GLANCES_HOST}}"
description: IO Dashboard
widget: widget:
type: customapi type: customapi
url: "{{HOMEPAGE_VAR_GLANCES_ADDRESS}}/api/4/network/interface_name/value/enp2s0" url: "{{HOMEPAGE_VAR_GLANCES_ADDRESS}}/api/4/network/interface_name/value/enp2s0"
@@ -19,9 +18,8 @@
label: Sent. label: Sent.
format: bitrate format: bitrate
- "External Address": - "External Address":
icon: si-globus #icon: si-globus
href: https://api.ipify.org href: https://api.ipify.org
description: WAN IP Address
widget: widget:
type: customapi type: customapi
url: https://api.ipify.org?format=json url: https://api.ipify.org?format=json
@@ -30,216 +28,383 @@
- field: ip - field: ip
label: Address label: Address
- "Tailscale >": - "Tailscale >":
icon: si-tailscale icon: sh-tailscale-light
href: https://login.tailscale.com href: https://login.tailscale.com
description: Mesh VPN Network
widget: widget:
type: tailscale type: tailscale
deviceid: "{{HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY}}" deviceid: "{{HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY}}"
key: "{{HOMEPAGE_VAR_TAILSCALE_KEY}}" key: "{{HOMEPAGE_VAR_TAILSCALE_KEY}}"
fields: [address] fields: [address]
- "Speedtest Results >": - "Speedtest Results >":
icon: si-speedtest icon: sh-speedtest-light
href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}" href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}"
#description: hi
widget: widget:
type: myspeed type: myspeed
url: "{{HOMEPAGE_VAR_MYSPEED_ADDRESS}}" url: "{{HOMEPAGE_VAR_MYSPEED_ADDRESS}}"
fields: [download, upload] fields: [download, upload]
# Non-Torrent-Stack Group
- "non-torrent-stack": - "non-torrent-stack":
- "Windows 11 >": - "Windows 11 >":
icon: si-windows11 icon: sh-microsoft-windows-light
href: http://localhost href: http://localhost
description: Windows 11 Instance server: my-docker
container: windows11
description: Web (Tailscale Required)
- "Windows 10 >": - "Windows 10 >":
icon: si-windows icon: sh-microsoft-windows-light
href: http://localhost href: http://localhost
description: Windows 10 Instance server: my-docker
container: windows10
description: Web (Tailscale Required)
- "TailsOS >": - "TailsOS >":
icon: si-linux icon: sh-linux-light
href: http://localhost href: http://localhost
description: TailsOS Environment server: my-docker
- "Blank": container: qemu
icon: si-containerd description: Web
href: http://localhost - " ":
description: Empty Slot description:
# Torrent-Stack Group
- "Media": - "Media":
- "Plex >":
icon: sh-plex-light
#icon: sh-plex-dark
href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
description: Watch
ping: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_EXTERNAL_IPV4}}:{{HOMEPAGE_VAR_PLEX_PFWD_PORT}}"
siteMonitor: "{{HOMEPAGE_VAR_PLEX_ADDRESS}}"
widget:
type: plex
url: "{{HOMEPAGE_VAR_PLEX_ADDRESS}}"
key: "{{HOMEPAGE_VAR_PLEX_KEY}}"
fields: [albums, movies, tv]
- "Tautulli >": - "Tautulli >":
icon: si-tautulli icon: sh-tautulli-light
href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}" href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}"
description: Plex Monitoring and Statistics description: Monitor
server: my-docker
container: tautulli
siteMonitor: "{{HOMEPAGE_VAR_TAUTULLI_ADDRESS}}"
widget: widget:
type: tautulli type: tautulli
url: "{{HOMEPAGE_VAR_TAUTULLI_ADDRESS}}" url: "{{HOMEPAGE_VAR_TAUTULLI_ADDRESS}}"
key: "{{HOMEPAGE_VAR_TAUTULLI_KEY}}" key: "{{HOMEPAGE_VAR_TAUTULLI_KEY}}"
enableUser: false enableUser: false
expandOneStreamToTwoRows: false expandOneStreamToTwoRows: false
- "Plex >":
icon: si-plex
href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
description: Media Server
widget:
type: plex
url: "{{HOMEPAGE_VAR_PLEX_ADDRESS}}"
key: "{{HOMEPAGE_VAR_PLEX_KEY}}"
fields: [albums, movies, tv]
- "Media_2x2": - "Media_2x2":
- "Seerr >": - "Seerr >":
icon: si-overseerr icon: sh-overseerr-light
href: "{{HOMEPAGE_VAR_SEERR_HOST}}" href: "{{HOMEPAGE_VAR_SEERR_HOST}}"
description: Media Request Management description: Request
server: my-docker
container: seerr
siteMonitor: "{{HOMEPAGE_VAR_SEERR_ADDRESS}}"
widget: widget:
type: seerr type: seerr
url: "{{HOMEPAGE_VAR_SEERR_ADDRESS}}" url: "{{HOMEPAGE_VAR_SEERR_ADDRESS}}"
key: "{{HOMEPAGE_VAR_SEERR_KEY}}" key: "{{HOMEPAGE_VAR_SEERR_KEY}}"
fields: [pending, completed] fields: [completed, pending]
highlight:
pending:
numeric:
- level: warn
when: gt
value: 0
- "Sonarr >": - "Sonarr >":
icon: si-sonarr icon: sh-sonarr-light
href: "{{HOMEPAGE_VAR_SONARR_HOST}}" href: "{{HOMEPAGE_VAR_SONARR_HOST}}"
description: TV Show Torrent Grabber description: TV Shows
server: my-docker
container: sonarr
siteMonitor: "{{HOMEPAGE_VAR_SONARR_ADDRESS}}"
widget: widget:
type: sonarr type: sonarr
url: "{{HOMEPAGE_VAR_SONARR_ADDRESS}}" url: "{{HOMEPAGE_VAR_SONARR_ADDRESS}}"
key: "{{HOMEPAGE_VAR_SONARR_KEY}}" key: "{{HOMEPAGE_VAR_SONARR_KEY}}"
enableQueue: true # optional, defaults to false enableQueue: true # optional, defaults to false
fields: [wanted, queued] fields: [wanted, queued]
highlight:
queued:
numeric:
- level: warn
when: gt
value: 0
- "Radarr >": - "Radarr >":
icon: si-radarr icon: sh-radarr-light
href: "{{HOMEPAGE_VAR_RADARR_HOST}}" href: "{{HOMEPAGE_VAR_RADARR_HOST}}"
description: Movie Torrent Grabber description: Movies
server: my-docker
container: radarr
siteMonitor: "{{HOMEPAGE_VAR_RADARR_ADDRESS}}"
widget: widget:
type: radarr type: radarr
url: "{{HOMEPAGE_VAR_RADARR_ADDRESS}}" url: "{{HOMEPAGE_VAR_RADARR_ADDRESS}}"
key: "{{HOMEPAGE_VAR_RADARR_KEY}}" key: "{{HOMEPAGE_VAR_RADARR_KEY}}"
fields: [wanted, queued] fields: [wanted, queued]
highlight:
queued:
numeric:
- level: warn
when: gt
value: 0
- "Lidarr >": - "Lidarr >":
icon: si-lidarr icon: sh-lidarr-light
href: "{{HOMEPAGE_VAR_LIDARR_HOST}}" href: "{{HOMEPAGE_VAR_LIDARR_HOST}}"
description: Music Torrent Grabber description: Music
server: my-docker
container: lidarr
siteMonitor: "{{HOMEPAGE_VAR_LIDARR_ADDRESS}}"
widget: widget:
type: lidarr type: lidarr
url: "{{HOMEPAGE_VAR_LIDARR_ADDRESS}}" url: "{{HOMEPAGE_VAR_LIDARR_ADDRESS}}"
key: "{{HOMEPAGE_VAR_LIDARR_KEY}}" key: "{{HOMEPAGE_VAR_LIDARR_KEY}}"
fields: [wanted, queued] fields: [wanted, queued]
highlight:
queued:
numeric:
- level: warn
when: gt
value: 0
- "Media_oddballs": - "Media_oddballs":
- "Tdarr >": - "Tdarr >":
icon: si-tdarr icon: sh-tdarr
href: "{{HOMEPAGE_VAR_TDARR_HOST}}" href: "{{HOMEPAGE_VAR_TDARR_HOST}}"
description: Distributed Media Transcoding description: Stage
server: my-docker
container: tdarr
siteMonitor: "{{HOMEPAGE_VAR_TDARR_ADDRESS}}"
widget: widget:
type: tdarr type: tdarr
url: "{{HOMEPAGE_VAR_TDARR_ADDRESS}}" url: "{{HOMEPAGE_VAR_TDARR_ADDRESS}}"
key: "{{HOMEPAGE_VAR_TDARR_KEY}}" key: "{{HOMEPAGE_VAR_TDARR_KEY}}"
- Tdarr Node: highlight:
icon: si-tdarr queue:
href: http://localhost numeric:
description: Transcoding Processing Node - level: warn
- "Minecraft": when: gt
icon: si-minecraft value: 0
href: http://localhost errored:
description: Game Server Instance numeric:
widget: - level: danger
type: minecraft when: gt
url: http://localhost:25565 value: 0
- Tdarr Node Local:
icon: sh-tdarr
description: Transcode
server: my-docker
container: tdarr-node
- Tdarr Node Remote:
icon: sh-tdarr
description: Transcode
siteMonitor: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://192.168.50.6:8266"
- "Network": - "Network":
- "Network_2x2":
- "Gluetun": - "Gluetun":
icon: si-gluetun icon: sh-gluetun-light
href: http://localhost description: VPN
description: VPN Client Container server: my-docker
container: gluetun
#widget: #widget:
# type: gluetun # type: gluetun
# url: ${HOMEPAGE_VAR_WEB_PROTOCOL}://${HOMEPAGE_VAR_LOCAL_IPV4}:8000 # url: ${HOMEPAGE_VAR_WEB_PROTOCOL}://${HOMEPAGE_VAR_LOCAL_IPV4}:8000
- "Port Updater": - "Port Updater":
icon: si-docker icon: sh-docker-light
href: http://localhost description: VPN
description: Automated Docker Image Updates server: my-docker
container: port-updater
- "Network_list":
- "Prowlarr >": - "Prowlarr >":
icon: si-prowlarr icon: sh-prowlarr-light
href: http://localhost:9696 href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}"
description: Indexer Management description: Indexer Management
server: my-docker
container: prowlarr
siteMonitor: "{{HOMEPAGE_VAR_PROWLARR_ADDRESS}}"
widget: widget:
type: prowlarr type: prowlarr
url: "{{HOMEPAGE_VAR_PROWLARR_ADDRESS}}" url: "{{HOMEPAGE_VAR_PROWLARR_ADDRESS}}"
key: "{{HOMEPAGE_VAR_PROWLARR_KEY}}" key: "{{HOMEPAGE_VAR_PROWLARR_KEY}}"
#fields: ["numberOfGrabs"]
highlight:
"numberOfGrabs":
numeric:
- level: warn
when: lte
value: 0
"numberOfQueries":
numeric:
- level: warn
when: lte
value: 0
"numberOfFailGrabs":
numeric:
- level: warn
when: gt
value: 0
"numberOfFailQueries":
numeric:
- level: warn
when: gt
value: 0
- "qBittorrent1 >": - "qBittorrent Active >":
icon: si-qbittorrent icon: sh-qbittorrent-light
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker
container: qbittorrent
siteMonitor: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}"
#description:
widget: widget:
type: customapi type: customapi
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/torrents/info?filter=seeding" url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/torrents/info?filter=seeding"
mappings: mappings:
#- field: #- field:
- label: Active Torrents - label: "Active"
format: integer format: integer
scale: 1 scale: 1
description: highlight:
"Active":
numeric:
- level: danger
when: lte
value: 20
- "qBittorrent2 >": - "qBittorrent Status >":
icon: si-qbittorrent icon: sh-qbittorrent-light
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker
container: qbittorrent
siteMonitor: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}"
widget: widget:
type: customapi type: customapi
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata" url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
mappings: mappings:
- field: server_state.connection_status - field: server_state.connection_status
label: status label: "status"
format: string format: string
- field: server_state.dht_nodes - field: server_state.dht_nodes
label: DHT nodes label: "DHT"
format: integer format: integer
scale: 1 scale: 1
- field: server_state.last_external_address_v4 - field: server_state.last_external_address_v4
label: Address label: "Address"
format: string format: string
highlight:
"status":
string:
- level: warn
when: equals
value: connected
negate: true
"DHT":
#valueOnly: true
numeric:
- level: warn
when: lte
value: 200
- "qBittorrent3 >": - "qBittorrent Stats >":
icon: si-qbittorrent icon: sh-qbittorrent-light
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker
container: qbittorrent
siteMonitor: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}"
widget: widget:
type: customapi type: customapi
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata" url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
mappings: mappings:
- field: server_state.alltime_dl - field: server_state.alltime_dl
label: T. Down label: "T. Down"
format: bytes format: bytes
scale: 0.862 scale: 0.862
- field: server_state.alltime_ul - field: server_state.alltime_ul
label: T. Up label: "T. Up"
format: bytes format: bytes
scale: 0.862 scale: 0.862
- field: server_state.global_ratio - field: server_state.global_ratio
label: Ratio label: "Ratio"
format: integer format: percent
scale: 100 scale: 100
suffix: "%" #suffix: "%"
highlight:
"Ratio":
numeric:
- level: warn
when: lt
value: 100
- level: danger
when: lte
value: 60
- "qBittorrent4 >": - "qBittorrent Session >":
icon: si-qbittorrent icon: sh-qbittorrent-light
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker
container: qbittorrent
siteMonitor: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}"
widget: widget:
type: customapi type: customapi
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata" url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
key: "{{HOMEPAGE_VAR_QBITTORRENT_KEY}}"
mappings: mappings:
- field: server_state.down_info_speed - field: server_state.down_info_speed
label: t. down label: T. Down
format: bytes format: bytes
scale: 0.862 scale: 0.862
- field: server_state.down_info_data - field: server_state.down_info_data
label: down label: Down
format: speed format: bitrate
scale: 0. scale: 0.862
- field: server_state.up_info_speed - field: server_state.up_info_speed
label: t. up label: T. Up
format: bytes format: bytes
scale: 0.862 scale: 0.862
- field: server_state.up_info_data - field: server_state.up_info_data
label: up label: Up
format: speed format: bitrate
scale: 0.862 scale: 0.862
highlight:
"T. Down":
numeric:
- level: good
when: gt
value: 0
"Down":
numeric:
- level: good
when: gt
value: 0
"T. Up":
numeric:
- level: good
when: gt
value: 0
"Up":
numeric:
- level: good
when: gt
value: 0
- "Minecraft":
icon: sh-minecraft-creeper-light
description: Game Server Instance
server: my-docker
container: mc
#siteMonitor: "udp://localhost:25575"
widget:
type: minecraft
url: http://localhost:25565
highlight:
status:
valueOnly: true
string:
- level: good
when: equals
value: "connected"
- level: warn
when: equals
value: "connected"
negate: true
players:
numeric:
- level: warn
when: lte
value: 0
+19 -7
View File
@@ -19,8 +19,8 @@ color: slate
# Behavior # Behavior
target: _blank # opens links in a new tab target: _blank # opens links in a new tab
showStats: true # for docker containers showStats: false # for docker containers
statusStyle: basic # dot, basic #statusStyle: basic # dot, basic
hideErrors: false # change to true once deployed hideErrors: false # change to true once deployed
disableIndexing: true # ask indexers not to index your homepage, incase you port forward disableIndexing: true # ask indexers not to index your homepage, incase you port forward
@@ -38,17 +38,16 @@ headerStyle: boxed #underlined
useEqualHeights: true useEqualHeights: true
layout: layout:
header: true
disableCollapse: true
iconStyle: gradiant
"Top": "Top":
header: true header: false
style: row style: row
columns: 1 columns: 4
"non-torrent-stack": "non-torrent-stack":
header: false
style: row style: row
columns: 4 columns: 4
"Media": "Media":
header: false
style: column style: column
columns: 1 columns: 1
"Media_2x2": "Media_2x2":
@@ -60,5 +59,18 @@ layout:
style: row style: row
columns: 1 columns: 1
"Network": "Network":
header: false
style: column style: column
columns: 1 columns: 1
"Network_list":
header: false
style: row
columns: 1
"Network_2x2":
header: false
style: row
columns: 2
"Bookmarks":
header: false
style: row
columns: 1