first commit
This commit is contained in:
commit
64d070411f
BIN
config/.glance.yml.swp
Normal file
BIN
config/.glance.yml.swp
Normal file
Binary file not shown.
245
config/glance.yml
Normal file
245
config/glance.yml
Normal file
@ -0,0 +1,245 @@
|
||||
pages:
|
||||
- name: Home
|
||||
width: slim
|
||||
hide-desktop-navigation: true
|
||||
center-vertically: true
|
||||
head-widgets:
|
||||
- type: search
|
||||
search-engine: duckduckgo
|
||||
bangs:
|
||||
- title: YouTube
|
||||
shortcut: "!yt"
|
||||
url: https://www.youtube.com/results?search_query={QUERY}
|
||||
|
||||
columns:
|
||||
# - size: small
|
||||
# widgets:
|
||||
# - type: calendar
|
||||
# first-day-of-week: monday
|
||||
#
|
||||
#
|
||||
# - type: weather
|
||||
# location: Dubai, United Arab Emirates
|
||||
# units: metric # alternatively "imperial"
|
||||
# hour-format: 12h # alternatively "24h"
|
||||
#
|
||||
# - type: twitch-channels
|
||||
# channels:
|
||||
# - hasanabi
|
||||
# - f1nn5ter
|
||||
# - ickystreams
|
||||
# - EJ_SA
|
||||
|
||||
|
||||
- size: full
|
||||
widgets:
|
||||
|
||||
|
||||
|
||||
- type: monitor
|
||||
cache: 1m
|
||||
title: Services Monitor
|
||||
sites:
|
||||
- title: Jellyfin
|
||||
url: https://jellyfin.grokkingstuff.org
|
||||
icon: /assets/jellyfin-logo.png
|
||||
- title: Gitea
|
||||
url: https://gitea.grokkingstuff.org
|
||||
icon: /assets/gitea-logo.png
|
||||
- title: Immich
|
||||
url: https://immich.yourdomain.com
|
||||
icon: /assets/immich-logo.png
|
||||
- title: AdGuard Home
|
||||
url: https://adguard.yourdomain.com
|
||||
icon: /assets/adguard-logo.png
|
||||
- title: Vaultwarden
|
||||
url: https://vault.yourdomain.com
|
||||
icon: /assets/vaultwarden-logo.png
|
||||
|
||||
|
||||
- type: custom-api
|
||||
title: Tailscale Devices
|
||||
title-url: https://login.tailscale.com/admin/machines
|
||||
url: https://api.tailscale.com/api/v2/tailnet/-/devices
|
||||
headers:
|
||||
Authorization: Bearer tskey-api-k8dNQqtLD721CNTRL-moEnDQk5SjK5RVGH8tW5gKyadpquiS8pe
|
||||
cache: 10m
|
||||
template: |
|
||||
{{/* User Variables */}}
|
||||
{{/* Set to true if you'd like an indicator for online devices */}}
|
||||
{{ $enableOnlineIndicator := false }}
|
||||
|
||||
<style>
|
||||
.device-info-container {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
height: 1.5em;
|
||||
}
|
||||
|
||||
.device-info {
|
||||
display: flex;
|
||||
transition: transform 0.2s ease, opacity 0.2s ease;
|
||||
}
|
||||
|
||||
.device-ip {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
transform: translateY(-100%);
|
||||
opacity: 0;
|
||||
transition: transform 0.2s ease, opacity 0.2s ease;
|
||||
}
|
||||
|
||||
.device-info-container:hover .device-info {
|
||||
transform: translateY(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.device-info-container:hover .device-ip {
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.update-indicator {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background-color: var(--color-primary);
|
||||
display: inline-block;
|
||||
margin-left: 4px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.offline-indicator {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background-color: var(--color-negative);
|
||||
display: inline-block;
|
||||
margin-left: 4px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.online-indicator {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background-color: var(--color-positive);
|
||||
display: inline-block;
|
||||
margin-left: 4px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.device-name-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.indicators-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
</style>
|
||||
<ul class="list list-gap-10 collapsible-container" data-collapse-after="4">
|
||||
{{ range .JSON.Array "devices" }}
|
||||
<li>
|
||||
<div class="flex items-center gap-10">
|
||||
<div class="device-name-container grow">
|
||||
<span class="size-h4 block text-truncate color-primary">
|
||||
{{ findMatch "^([^.]+)" (.String "name") }}
|
||||
</span>
|
||||
<div class="indicators-container">
|
||||
{{ if (.Bool "updateAvailable") }}
|
||||
<span class="update-indicator" data-popover-type="text" data-popover-text="Update Available"></span>
|
||||
{{ end }}
|
||||
|
||||
{{ $lastSeen := .String "lastSeen" | parseTime "rfc3339" }}
|
||||
{{ if not ($lastSeen.After (offsetNow "-10s")) }}
|
||||
{{ $lastSeenTimezoned := $lastSeen.In now.Location }}
|
||||
<span class="offline-indicator" data-popover-type="text"
|
||||
data-popover-text="Offline - Last seen {{ $lastSeenTimezoned.Format " Jan 2 3:04pm" }}"></span>
|
||||
{{ else if $enableOnlineIndicator }}
|
||||
<span class="online-indicator" data-popover-type="text" data-popover-text="Online"></span>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="device-info-container">
|
||||
<ul class="list-horizontal-text device-info">
|
||||
<li>{{ .String "os" }}</li>
|
||||
<li>{{ .String "user" }}</li>
|
||||
</ul>
|
||||
<div class="device-ip">
|
||||
{{ .String "addresses.0"}}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
# - type: group
|
||||
# widgets:
|
||||
# - type: hacker-news
|
||||
# - type: lobsters
|
||||
|
||||
# - type: videos
|
||||
# channels:
|
||||
# - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips
|
||||
# - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling
|
||||
# - UCsBjURrPoezykLs9EqgamOA # Fireship
|
||||
# - UCBJycsmduvYEL83R_U4JriQ # Marques Brownlee
|
||||
# - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium
|
||||
|
||||
|
||||
# - size: small
|
||||
# widgets:
|
||||
#
|
||||
# - type: markets
|
||||
# markets:
|
||||
# - symbol: SPY
|
||||
# name: S&P 500
|
||||
# - symbol: BTC-USD
|
||||
# name: Bitcoin
|
||||
# - symbol: NVDA
|
||||
# name: NVIDIA
|
||||
# - symbol: AAPL
|
||||
# name: Apple
|
||||
# - symbol: MSFT
|
||||
# name: Microsoft
|
||||
#
|
||||
# - type: releases
|
||||
# cache: 1d
|
||||
# # Without authentication the Github API allows for up to 60 requests per hour. You can create a
|
||||
# # read-only token from your Github account settings and use it here to increase the limit.
|
||||
# # token: ...
|
||||
# repositories:
|
||||
# - glanceapp/glance
|
||||
# - go-gitea/gitea
|
||||
# - immich-app/immich
|
||||
# - syncthing/syncthing
|
||||
|
||||
|
||||
theme:
|
||||
light: true
|
||||
background-color: 220 23 95
|
||||
contrast-multiplier: 1.0
|
||||
primary-color: 220 91 54
|
||||
positive-color: 109 58 40
|
||||
negative-color: 347 87 44
|
||||
|
||||
# Add more pages here:
|
||||
# - name: Your page name
|
||||
# columns:
|
||||
# - size: small
|
||||
# widgets:
|
||||
# # Add widgets here
|
||||
|
||||
# - size: full
|
||||
# widgets:
|
||||
# # Add widgets here
|
||||
|
||||
# - size: small
|
||||
# widgets:
|
||||
# # Add widgets here
|
13
docker-compose.yml
Normal file
13
docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
||||
services:
|
||||
glance:
|
||||
container_name: glance
|
||||
image: glanceapp/glance
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
- ./assets:/app/assets
|
||||
# Optionally, also mount docker socket if you want to use the docker containers widget
|
||||
# - /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
ports:
|
||||
- 9080:8080
|
||||
#env_file: .env
|
Loading…
x
Reference in New Issue
Block a user