Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ Custom API widgets are much easier to setup and usually only require a copy-past
* [Proxmox VE stats](widgets/proxmox-ve-stats-by-ralphocdol/README.md) by @ralphocdol - show the number of nodes, LXCs, VMs and Storage of your Proxmox Virtual Environment server
* [Random Bible Verse](widgets/random-bible-verse-by-pypp/README.md) by @pypp - show a random bible verse
* [Random fact](widgets/random-fact-by-svilenmarkov/README.md) by @svilenmarkov - show a random fact
* [Self-hosted App Links](widgets/self-hosted-links-by-drshajul/README.md) by @drshajul - External and Internal links to your self-hosted apps.
* [Slack Status](widgets/slack-status-by-cartwatson/README.md) by @cartwatson - show slack status from api
* [Speedtest tracker](widgets/speedtest-tracker-by-not-first/README.md) by @not-first - show the latest internet speed information from speedtest tracker
* [Spotify Now Playing](widgets/spotify-now-playing-by-needsadjustment/README.md) by @needsadjustment - show the currently playing Spotify song
Expand Down
53 changes: 53 additions & 0 deletions widgets/self-hosted-links-by-drshajul/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Self-hosted Apps

External and local links to your self-hosted apps. Theme is consistant with inbuild `Docker Containers` widget.

<img src="preview.png">

```yaml
- type: custom-api
title: My Apps
hide-header: false
css-class: "widget-type-self-hosted"
cache: 1h
url: http://${MY_GLANCE_URL}/assets/self-hosted-apps.json
template: |
<style>
.widget-type-self-hosted li {
margin-top: var(--list-half-gap);
border-top: 1px solid var(--color-separator);
padding-top: var(--list-half-gap);
}
</style>
<ul class="dynamic-columns list-gap-15 list-with-separator">
{{ range .JSON.Array "links" }}
<li class="flex items-center gap-20">
<div class="shrink-0">
<img class="docker-container-icon" src="{{ .String "icon" }}" alt="" loading="lazy">
</div>
<div class="min-width-0 grow">
<a href='{{ .String "external_link" }}' class="color-highlight size-title-dynamic block text-truncate" target="_blank" rel="noreferrer" title="{{ .String "hostname" }}">{{ .String "hostname" }}</a>
{{ if (.String "service") }}
<div class="flex items-center gap-10" style="margin-bottom: 5px">
<div class="text-left">
<img src="assets/img/link-down-right.png" style="width: auto; height: 20px; margin-left: 0px; margin-top: -4px;">
</div>
<div class="size-h6 flex-1 text-left">
<a href='{{ .String "service" }}' target="_blank" rel="noreferrer">{{ .String "service" }}</a>
</div>
</div>
{{ end}}
</div>
</li>
{{ end }}
</ul>
```

## Environment variables
`MY_GLANCE_URL` - the URL your glance instance

## Assets
Modify and upload to your glance `assets` folder.

1. Sample <a href="self-hosted-apps.json">self-hosted-apps.json</a> file.
2. <a href="link-down-right.png"><img src="link-down-right.png" />img/link-down-right.png</a> file
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions widgets/self-hosted-links-by-drshajul/self-hosted-apps.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"links": [
{
"service": "http://local-ip-address:8090",
"external_link": "http://tailscale-ip-address:8090",
"hostname": "beszel",
"icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/beszel.svg"
},
{
"service": "http://local-ip-address:8123",
"external_link": "https://homeassistant.example.com",
"hostname": "homeassistant",
"icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/home-assistant.svg"
},
{
"service": "http://local-ip-address:2283",
"external_link": "https://photos.example.com",
"hostname": "immich photos",
"icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/immich.svg"
},
{
"service": "https://local-ip-address:443",
"external_link": "https://tailscale-ip-address:443",
"hostname": "adguard",
"icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/adguard-home.svg"
},
{
"service": "http://local-ip-address:8384",
"external_link": "http://tailscale-ip-address:8384",
"hostname": "syncthing",
"icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/syncthing.svg"
},
{
"service": "https://local-ip-address:51515",
"external_link": "https://tailscale-ip-address:51515",
"hostname": "kopia backup",
"icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/kopia.svg"
}
]
}