This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
+70
View File
@@ -0,0 +1,70 @@
# Store environmental variables here. All variables are optional.
# Lines beginning in '#' are ignored.
# Can be either development, production or test
# NODE_ENV=production
# The port to expose the running application on
# PORT=4000
# If you've proved SSL certs, then can set HTTPS port
# SSL_PORT=4001
# The host that Dashy is running on, domain or IP
# HOST=localhost
# The default base path for serving up static assets
# BASE_URL=./
# Optionally, specify the path of SSL private + public keys
# SSL_PRIV_KEY_PATH=/etc/ssl/certs/dashy-priv.key
# SSL_PUB_KEY_PATH=/etc/ssl/certs/dashy-pub.pem
# If SSL enabled, choose whether or not to redirect http to https
# Defaults to true
# REDIRECT_HTTPS=true
# The path to the user data directory
# USER_DATA_DIR=user-data
# Enable HTTP basic auth to protect your *.yml config files
# ENABLE_HTTP_AUTH=true
# Enable basic HTTP auth to protect your *.yml config files
# BASIC_AUTH_USERNAME
# BASIC_AUTH_PASSWORD
# If you'd like frontend to automatically authenticate when basic auth enabled, set credentials here too
# VUE_APP_BASIC_AUTH_USERNAME
# VUE_APP_BASIC_AUTH_PASSWORD
# Override where the path to the configuration file is, can be a remote URL
# VUE_APP_CONFIG_PATH=/conf.yml
# Usually the same as BASE_URL, but accessible in frontend
# VUE_APP_DOMAIN=https://dashy.to
# Override the page title for the frontend app
# VUE_APP_TITLE=''
# Set the default view to load on startup (can be `minimal`, `workspace` or `home`)
# VUE_APP_STARTING_VIEW=home
# Set the Vue app routing mode (can be 'hash', 'history' or 'abstract')
# VUE_APP_ROUTING_MODE=history
# Should enable SRI for build script and link resources
# INTEGRITY=true
# Computed automatically on build. Indicates if running in container
# IS_DOCKER=true
# Again, set automatically using package.json during build time
# VUE_APP_VERSION=2.0.0
# Directory for conf.yml backups
# BACKUP_DIR=./user-data/config-backups
# Setup any other user defined vars by prepending VUE_APP_ to the var name
# VUE_APP_pihole_ip=http://your.pihole.ip
# VUE_APP_pihole_key=your_pihole_secret_key
+297
View File
@@ -0,0 +1,297 @@
# Need to be stored in the dashy/config directory
pageInfo:
title: Hello, Miker
description: My Homepage of Services
logo: https://i.ibb.co/71WyyzM/little-bot-3.png
appConfig:
statusCheck: false
theme: glass-2
fontAwesomeKey: c94dc2b452
customCss: '.clock p.time { font-size: 3rem !important; }'
layout: vertical
iconSize: small
language: en
sections:
- name: My Public IP Address
widgets:
- type: public-ip
id: 0_1764_publicip
- name: Holidays
widgets:
- type: public-holidays
options:
country: US
holidayType: all
monthsToShow: 4
lang: en
id: 0_829_publicholidays
- name: Date and Time
widgets:
- type: clock
options:
timeZone: America/New_york
format: en-GB
hideDate: false
customCityName: Bealeton, Va.
use12Hour: true
hideSeconds: true
id: 0_396_clock
- name: RackNerd Server
items:
- title: Proxy Service
description: Nginx Proxy Manager
icon: icons/nginx-proxy-manager.png
url: https://proxy.mikeandrebel.com
target: newtab
statusCheck: true
- title: Search Engine
description: MIker's Search Engine
icon: icons/searxng.png
url: https://search.mikeandrebel.com/
target: newtab
statusCheck: true
- title: Portainer
description: Portainer
icon: icons/portainer.png
url: https://port.mikeandrebel.com/#!/home
target: newtab
statusCheck: true
- title: Rack Nerd Control Panel
description: Rack Nerd Control Panel
icon: icons/cloudflare.png
url: https://nerdvm.racknerd.com/login.php
target: newtab
- title: Rack Nerd
description: Rack Nerd
icon: icons/cloudflare.png
url: https://my.racknerd.com/index.php?rp=/login
target: newtab
- title: Mealie
description: Mealie
icon: icons/mealie.png
url: https://meal.mikeandrebel.com/
target: newtab
statusCheck: true
displayData:
sortBy: default
rows: 1
cols: 1
collapsed: true
hideForGuests: false
- name: Home Server 1
items:
- title: JellyFin
description: Jellyfin Movies
icon: icons/jellyfin.png
url: http://192.168.1.151:8096
target: newtab
- title: Local Proxy Server
description: Nginx Proxy Manager
icon: icons/nginx-proxy-manager.png
url: http://192.168.1.151:81/
target: newtab
- title: Portainer
description: Portainer
icon: icons/portainer.png
url: http://192.168.1.151:9000/
target: newtab
- title: Router
description: Orbi System
icon: icons/router.png
url: http://192.168.1.1/
target: newtab
- title: Router
description: Arris System
icon: icons/arris.png
url: http://192.168.0.1/
target: newtab
displayData:
sortBy: default
rows: 1
cols: 1
collapsed: true
hideForGuests: false
- name: Home Server 2 internal
items:
- title: Proxmox
icon: icons/proxmox.png
url: https://192.168.0.171:8006
target: newtab
statusCheck: true
- title: Portatiner
icon: icons/portainer.png
url: https://192.168.0.181:7443
target: newtab
- title: NPM
icon: icons/nginx-proxy-manager.png
url: http://192.168.0.235:81
target: newtab
- title: PiHole
icon: icons/pi-hole.png
url: http://192.168.0.185/admin/
target: newtab
- title: VSCode
icon: icons/vscode.png
url: http://192.168.0.187:8680
target: newtab
- title: Authelia
icon: icons/authelia.png
url: http://192.168.0.181:9091
target: newtab
- title: Dashy
icon: icons/dashy.png
url: http://192.168.0.181:4000
target: newtab
statusCheck: true
displayData:
sortBy: default
rows: 1
cols: 1
collapsed: true
hideForGuests: false
- name: Home Server External
items:
- title: Proxmox
icon: icons/proxmox.png
url: https://pve1.mikemcfetridge.com
target: newtab
statusCheck: true
- title: Potainer
icon: icons/portainer.png
url: https://port.mikemcfetridge.com
target: newtab
statusCheck: true
- title: NPM
icon: icons/nginx-proxy-manager.png
url: https://proxy.mikemcfetridge.com
target: newtab
- title: PiHole
icon: icons/pi-hole.png
url: https://pihole.mikemcfetridge.com
target: newtab
- title: VSCode
icon: icons/vscode.png
url: https://vscode.mikemcfetridge.com
target: newtab
- title: Authelia
icon: icons/authelia.png
url: https://auth.mikemcfetridge.com
target: newtab
- title: Dashy
icon: icons/dashy.png
url: https://dashy.mikemcfetridge.com
target: newtab
displayData:
sortBy: default
rows: 1
cols: 1
collapsed: true
hideForGuests: false
- name: Oracle Server
items:
- title: Hestia Control Panel
description: Hestia Control Panel
icon: icons/hestia.png
url: https://hcp.mcfetridge.us:8083
target: newtab
statusCheck: true
- title: Next Cloud
description: Next Cloud
icon: icons/nextcloud.png
url: https://next.mcfetridge.us
target: newtab
statusCheck: true
- title: Web Mail
description: Web Email
icon: si-reddit
url: https://webmail.mcfetridge.us
target: newtab
statusCheck: true
- title: Family Website
description: Wordpress Website
icon: icons/wordpress.png
url: https://mcfetridge.us/
target: newtab
statusCheck: true
- title: WordPress Admin
description: WordPress Admin
icon: icons/wordpress.png
url: https://mcfetridge.us/wp-admin
target: newtab
statusCheck: true
- title: Webstats
description: Hestia Webstats
icon: icons/hestia.png
url: https://mcfetridge.us/vstats/
target: newtab
statusCheck: true
displayData:
sortBy: default
rows: 1
cols: 1
collapsed: true
hideForGuests: false
- name: Oracle Test Server
items:
- title: Poratiner
description: Poratiner
icon: icons/portainer.png
url: http://
target: newtab
displayData:
sortBy: default
rows: 1
cols: 1
collapsed: true
hideForGuests: false
- name: Bookmarks
items:
- title: Name Cheap
description: Name Cheap
icon: icons/namecheap.png
url: https://www.namecheap.com/
target: newtab
- title: Oracle Cloud
description: Oracle Cloud
icon: icons/oracle-cloud.png
url: https://cloud.oracle.com/compute/instances?region=us-ashburn-1
target: newtab
- title: Send Blue
description: Send Blue STMP
icon: icons/sendinblue.png
url: https://app.brevo.com/
target: newtab
- title: Github
description: Git Hub
icon: icons/github.png
url: https://github.com/mmcfetridge1969
target: newtab
- title: DuckDNS
description: Duck DNS
icon: icons/duckdns.png
url: https://www.duckdns.org
displayData:
collapsed: true
hideForGuests: false
@@ -0,0 +1,56 @@
---
# Welcome to Dashy! To get started, run `docker compose up -d`
# You can configure your container here, by modifying this file
# If you need to download the Icons from GIT. Go to the root directory of Dashy >
# sudo git clone https://github.com/walkxcode/dashboard-icons.git
# This will create a dashboard-icons directory with all the png and svg files.
services:
dashy:
container_name: dashy
# Pull latest image
image: 'lissy93/dashy'
# To build from source, replace 'image: lissy93/dashy' with 'build: .'
# build: .
# You can also use an image with a different tag, or pull from a different r>
# image: ghcr.io/lissy93/dashy or image: lissy93/dashy:3.0.0
# Mapping data to the volume created for this service
volumes:
- /home/miker/docker/dashy/data/config/conf.yml:/app/user-data/conf.yml
- /home/miker/docker/dashy/png:/app/user-data/icons
# Set port that web service will be served on. Keep container port as 8080
# ports:
# - 4000:8080
# Set any environmental variables
environment:
- NODE_ENV=production
# Specify your user ID and group ID. You can find this by running `id -u` an>
- UID=1000 # Update to match your UID
- GID=1000 # Update to match your GID.
# Sets the service to restart always unless it is stopped manually.
restart: unless-stopped
# Configure healthchecks
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- proxy
# Service will be place in the proxy network for NPM security
networks:
proxy:
external: true
+27
View File
@@ -0,0 +1,27 @@
services:
# Dashy - Application Dashboard
dashy:
container_name: dashy
image: lissy93/dashy
security_opt:
- no-new-privileges:true
restart: unless-stopped
profiles: ["apps", "all"]
networks:
- default
ports:
- $DASHY_PORT:8080
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
volumes:
- $DOCKERDIR/appdata/dashy/conf.yml:/app/public/conf.yml
- $DOCKERDIR/appdata/dashy/item-icons:/app/public/item-icons
environment:
- NODE_ENV=production
- UID=$PUID
- GID=$PGID
# DOCKER-LABELS-PLACEHOLDER
+1
View File
@@ -0,0 +1 @@
ADGUARD_PASSWORD=P@ssw0rd
+439
View File
@@ -0,0 +1,439 @@
# icon: si:immich # si for Simple icons https://simpleicons.org/
# icon: sh:immich # sh for selfh.st icons https://selfh.st/icons/
# icon: di:immich # di for Dashboard icons https://github.com/homarr-labs/dashboard-icons
# icon: mdi:camera # mdi for Material Design icons https://pictogrammers.com/library/mdi/
pages:
- name: Home
hide-desktop-navigation: false
center-vertically: true
columns:
- size: small
widgets:
- type: calendar
- type: rss
limit: 10
collapse-after: 3
cache: 3h
feeds:
- url: https://omgubuntu.co.uk/feed
title: OmgUbuntu
limit: 4
- url: https://9to5linux.com/feed/atom
title: 9to5Linux
limit: 4
- type: twitch-channels
channels:
- technotim
- piratesoftware
- size: full
widgets:
- type: group
widgets:
- type: hacker-news
- type: lobsters
- type: search
autofocus: true
search-engine: google
new-tab: true
bangs:
- title: YouTube
shortcut: "!yt"
url: https://www.youtube.com/results?search_query={QUERY}
- title: Github
shortcut: "!gh"
url: https://github.com/search?q={QUERY}&type=repositories
- type: group
widgets:
- type: reddit
subreddit: technology
show-thumbnails: true
- type: reddit
subreddit: selfhosted
show-thumbnails: true
- type: videos
channels:
- UCVls1GmFKf6WlTraIb_IaJg # Distro Tube
- UCjSEJkpGbcZhvo0lr-44X_w # Tech Hut
- UCZNhwA1B5YqiY1nLzmM0ZRg # Christian Lempa
- UCVy16RS5eEDh8anP8j94G2A # DB TEch
- UCwFpzG5MK5Shg_ncAhrgr9g # Awesome Open Source
- UCxQKHvKbmSzGMvUrVtJYnUA # Learn Linux TV
- size: small
widgets:
- type: weather
location: Bealeton, Virginia, United States
units: imperial
hour-format: 12h # alternatively "24h"
- type: custom-api
title: Random Fact
cache: 6h
url: https://uselessfacts.jsph.pl/api/v2/facts/random
template: |
<p class="size-h4 color-paragraph">{{ .JSON.String "text" }}</p>
- type: custom-api
title: Immich stats
cache: 1d
url: http://192.168.2.13:2283/api/server/statistics
headers:
x-api-key: fYDkorU0ik0xOOvfwGiuYtcHWZmggaNYfvHARDTdWo
Accept: application/json
template: |
<div class="flex justify-between text-center">
<div>
<div class="color-highlight size-h3">{{ .JSON.Int "photos" | formatNumber }}</div>
<div class="size-h6">PHOTOS</div>
</div>
<div>
<div class="color-highlight size-h3">{{ .JSON.Int "videos" | formatNumber }}</div>
<div class="size-h6">VIDEOS</div>
</div>
<div>
<div class="color-highlight size-h3">{{ div (.JSON.Int "usage" | toFloat) 1073741824 | toInt | formatNumber }}GB</div>
<div class="size-h6">USAGE</div>
</div>
</div>
- type: releases
show-source-icon: true
repositories:
- go-gitea/gitea
- jellyfin/jellyfin
- glanceapp/glance
- dockerhub:gotify/server
- type: repository
repository: mmcfetridge1969/ansible
pull-requests-limit: 5
issues-limit: 3
commits-limit: 3
- type: repository
repository: ChristianLempa/boilerplates
pull-requests-limit: 5
issues-limit: 3
commits-limit: 3
- name: Monitoring
# Optionally, if you only have a single page you can hide the desktop navigation for a cleaner look
# hide-desktop-navigation: true
columns:
- size: small
widgets:
- type: calendar
- size: full
widgets:
- type: monitor
cache: 1m
title: Services
sites:
- title: Proxmox1
url: https://192.168.2.1:8006
check-url: https://192.168.2.1:8006
allow-insecure: true
icon: di:proxmox
- title: Proxmox2
url: https://192.168.2.2:8006
check-url: https://192.168.2.2:8006
allow-insecure: true
icon: di:proxmox
- title: Jellyfin
url: https://jellyfin.mikemcfetridge.com
check-url: http://192.168.2.16:8096
icon: di:jellyfin
- title: Immich
url: https://immich.mikemcfetridge.com
check-url: http://192.168.2.13:2283/
icon: di:immich
- title: Vaultwarden
url: https://vault.mikemcfetridge.com/
check-url: https://192.168.2.19:8000/
allow-insecure: true
icon: di:vaultwarden-light
- title: NGINX Proxy Manager
url: https://proxy.mikemcfetridge.com/
check-url: http://192.168.2.22:81/
icon: di:nginx-proxy-manager
- title: Wireguard
url: https://wg2.mikemcfetridge.com/
check-url: http://192.168.2.10:10086
icon: di:wireguard
- title: Gitea
url: https://gitea.mikemcfetridge.com/
check-url: http://192.168.2.24:3000/
icon: di:gitea
- title: IT-Tools
url: https://ittools.mikemcfetridge.com/
check-url: http://192.168.2.7:8089/
icon: di:it-tools
- title: Mealie
url: https://mealie.mikemcfetridge.com/
check-url: http://192.168.2.7:9925/
icon: di:mealie
- title: Wallabag
url: https://wall.mikemcfetridge.com
check-url: http://192.168.2.13:8667/
icon: di:wallabag
- title: Pi-Hole
url: http://192.168.2.8/admin
check-url: http://192.168.2.8/admin
icon: di:pi-hole
- title: Immich
url: https://immich.mikemcfetridge.com
check-url: http://192.168.2.13:2283/
icon: di:immich
- title: Searxng
url: https://search.mikemcfetridge.com
check-url: http://192.168.2.23:8888/
icon: di:searxng
- title: Authentik
url: https://authentik.mikemcfetridge.com
check-url: https://192.168.2.7:9443
allow-insecure: true
icon: di:authentik
- title: Portainer-1
url: https://port.mikemcfetridge.com
check-url: https://192.168.2.7:9445
allow-insecure: true
icon: di:portainer
- title: Portainer-2
url: https://192.168.2.13:9445
check-url: https://192.168.2.13:9445
allow-insecure: true
icon: di:portainer
- title: Tianji
url: https://tianji.mikemcfetridge.com/login
check-url: http://192.168.2.7:12345
allow-insecure: true
icon: di:tianji
- title: Technitium DNS
url: http://192.168.2.9:5380/
check-url: http://192.168.2.9:5380/
allow-insecure: true
icon: sh:technitium
- type: monitor
cache: 1m
title: Servarr
sites:
- title: Jellyseerr
url: http://192.168.2.16:5055
check-url: http://192.168.2.16:5055
icon: di:jellyseerr
- title: Homarr
url: https://dashboard.mikemcfetridge.com/
check-url: http://192.168.2.7:7575/
icon: di:homarr
- title: Radarr
url: http://192.168.2.16:7878
check-url: http://192.168.2.16:7878
icon: di:radarr
- title: Sonarr
url: http://192.168.2.16:8989
check-url: http://192.168.2.16:8989
icon: di:sonarr
- title: Lidarr
url: http://192.168.2.16:8686
check-url: http://192.168.2.16:8686
icon: di:lidarr
- title: Bazarr
url: http://192.168.2.16:6767
check-url: http://192.168.2.16:6767
icon: di:bazarr
- title: Prowlarr
url: http://192.168.2.16:9696
check-url: http://192.168.2.16:9696
icon: di:prowlarr
- title: qBittorrent
url: http://192.168.2.16:8118
check-url: http://192.168.2.16:8118
icon: di:qbittorrent
- title: Audio Book Shelf
url: https://audio.mikemcfetridge.com
check-url: http://192.168.2.16:13378
icon: di:audiobookshelf
- size: small
widgets:
- type: rss
limit: 10
collapse-after: 3
cache: 3h
feeds:
- url: https://omgubuntu.co.uk/feed
title: OmgUbuntu
limit: 4
- url: https://9to5linux.com/feed/atom
title: 9to5Linux
limit: 4
- name: Widget testing
# Optionally, if you only have a single page you can hide the desktop navigation for a cleaner look
# hide-desktop-navigation: true
columns:
- size: small
widgets:
- type: calendar
- size: full
widgets:
- type: custom-api
title: Netbird Devices
title-url: https://app.netbird.io/peers
url: https://api.netbird.io/api/peers
headers:
Accept: application/json
Authorization: Token ${nbp_bz2jNZN9MnkMErrBi8jFjrNsweZuY108oYSo}
cache: 10m
template: |
{{ $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;
}
.offline-indicator,
.online-indicator {
width: 8px;
height: 8px;
border-radius: 50%;
display: inline-block;
margin-left: 4px;
vertical-align: middle;
}
.online-indicator {
background-color: var(--color-positive);
}
.offline-indicator {
background-color: var(--color-negative);
}
.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 "" }}
<li>
<div class="flex items-center gap-10">
<div class="device-name-container grow">
<span class="size-h4 block text-truncate color-primary">
{{ .String "hostname" }}
</span>
<div class="indicators-container">
{{ if .Bool "connected" }}
{{ if $enableOnlineIndicator }}
<span class="online-indicator" data-popover-type="text" data-popover-text="Online"></span>
{{ end }}
{{ else }}
{{ $lastSeen := .String "last_seen" | parseTime "rfc3339" }}
<span class="offline-indicator" data-popover-type="text" data-popover-text="Offline - Last seen {{ $lastSeen.Format "Jan 2 3:04pm" }}"></span>
{{ end }}
</div>
</div>
</div>
<div class="device-info-container">
<ul class="list-horizontal-text device-info">
<li>{{ .String "os" }}</li>
<li>{{ .String "city_name" }}, {{ .String "country_code"}}</li>
</ul>
<div class="device-ip">
{{ .String "ip" }}
{{ .String "dns_label"}}
</div>
</div>
</li>
{{ end }}
</ul>
- size: small
widgets:
- type: rss
limit: 10
collapse-after: 3
cache: 3h
feeds:
- url: https://omgubuntu.co.uk/feed
title: OmgUbuntu
limit: 4
- url: https://9to5linux.com/feed/atom
title: 9to5Linux
limit: 4
@@ -0,0 +1,17 @@
services:
glance:
image: glanceapp/glance # Uses the official Glance Docker image.
container_name: glance # Assigns a custom container name for easy management.
volumes:
- /home/miker/dockerapps/glance/config:/app/config # Mounts the glance.yml configuration file.
- /etc/timezone:/etc/timezone:ro # Ensures container timezone sync.
- /etc/localtime:/etc/localtime:ro # Ensures container localtime sync.
ports:
- 8280:8080 # Exposes Glance on port 8280.
restart: unless-stopped # Restarts container unless manually stopped.
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8280"]
interval: 10s
retries: 3
timeout: 10s
start_period: 30s
+4
View File
@@ -0,0 +1,4 @@
PUID=1000
PGID=1000
# TZ for container timezone
TZ=America/New_York
+22
View File
@@ -0,0 +1,22 @@
---
services:
heimdall:
image: lscr.io/linuxserver/heimdall:2.6.1
container_name: heimdall
environment:
PUID: ${PUID} # Reference PUID from .env
PGID: ${PGID} # Reference PGID from .env
env_file:
- .env
volumes:
- ./heimdall/config:/config
ports:
- 8080:80
- 8443:443
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 10s
retries: 3
timeout: 10s
start_period: 30s
+20
View File
@@ -0,0 +1,20 @@
services:
# Heimdall - Application Dashboard
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
security_opt:
- no-new-privileges:true
restart: unless-stopped
profiles: ["apps", "all"]
networks:
- default
ports:
- "$HEIMDALL_PORT:80"
volumes:
- $DOCKERDIR/appdata/heimdall:/config
environment:
PUID: $PUID
PGID: $PGID
TZ: $TZ
# DOCKER-LABELS-PLACEHOLDER
+4
View File
@@ -0,0 +1,4 @@
PUID=1000
PGID=1000
# TZ for container timezone
TZ=America/New_York
@@ -0,0 +1,3 @@
---
@@ -0,0 +1,516 @@
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz@9..40&family=Fira+Code&family=Poppins&family=Source+Code+Pro&family=Work+Sans&display=swap');
.theme-gray {
font-family: 'DM Sans', sans-serif;
/* DRACULA COLORS */
--dracula-background: #282a36;
--dracula-background-dark: #15161d;
--dracula-foreground: #44475a;
--dracula-text: #f8f8f2;
--dracula-slate: #6272a4;
--dracula-cyan: #8be9fd;
--dracula-green: #50fa7ae8;
--dracula-orange: #ffb86c;
--dracula-pink: #ff79c6;
--dracula-purple: #bd93f9;
--dracula-red: #ff5555;
--dracula-yellow: #f1fa8c;
/* Theme preset colors */
--color-50: 249 250 251;
--color-100: 243 244 246;
--color-200: 248 248 242; /* Text Color - use Dracula text color */
--color-300: 209 213 219;
--color-400: 156 163 175;
--color-500: 107 114 128;
--color-600: 75 85 99;
--color-700: 55 65 81;
--color-800: 40 42 54; /* Background color - use Dracula theme color */
--color-900: 21 22 29; /* Dracula specific */
--color-logo-start: 156 163 175;
--color-logo-stop: 55 65 81;
--standard-bg: #44475a8e;
/* INFO WIDGET COLORS */
--info-widgets: var(--dracula-purple);
--resource-bar-bg: var(--standard-bg);
--resource-bar-fg: var(--dracula-green);
--widget-border: var(--dracula-foreground);
/* SERVICES COLORS */
--service-group: var(--dracula-purple);
--service-name: var(--dracula-text);
--service-description: var(--dracula-purple);
--service-block-bg: #232530;
--service-block-text: var(--dracula-pink);
/* BOOKMARKS COLORS */
--bookmark-group: var(--dracula-purple);
--bookmark-icon-bg: #44475a60;
--bookmark-icon: var(--dracula-purple);
--bookmark-name: var(--dracula-text);
/* ALL CARD COLORS */
--card-color: #44475a46;
--card-color-hover: #44475a91;
/* FOOTER COLORS */
--footer-items: var(--dracula-pink);
/* FOOTER COLORS */
--scrollbar-fg: var(--dracula-purple);
--scrollbar-bg: var(--standard-bg);
/*Class color values */
.service-tags .dark\:bg-theme-900\/50 {
background-color: rgb(var(--color-900) / 0.3) !important;
}
/*******************************
* INFORMATION WIDGETS STYLES *
*******************************/
#information-widgets {
border-color: var(--widget-border);
}
#information-widgets * {
color: var(--info-widgets);
}
.resource-usage {
background-color: var(--resource-bar-bg);
}
.resource-usage > div {
background-color: var(--resource-bar-fg);
}
/*******************************
* SERVICES STYLES *
*******************************/
.service-group-icon > div {
background: var(--service-group) !important; /* group label ICON color */
}
.service-group-name {
color: var(--service-group); /* group label NAME color */
}
.services-group > button > svg {
color: var(--service-group); /* group label EXPAND/COLLAPSE ICON color */
}
.service-card {
background-color: var(--card-color);
}
.service-card:hover {
background-color: var(--card-color-hover);
}
.service-name.text-sm {
font-size: 0.95rem;
color: var(--service-name);
}
.service-description.text-xs {
font-size: 0.75rem;
color: var(--service-description);
}
.service img {
border-radius: 25%;
}
.service-block {
background: var(--service-block-bg);
}
.service-block .uppercase {
color: var(--service-block-text);
}
.service-block .font-thin {
color: var(--dracula-text);
}
/*******************************
* BOOKMARK STYLES *
*******************************/
.bookmark-group-name {
color: var(--bookmark-group);
}
.bookmark-icon {
background-color: var(--bookmark-icon-bg) !important;
}
.bookmark-icon > div > div {
background: var(
--bookmark-icon
) !important; /* If using si or md icons, make default purple */
}
.bookmark-name.text-xs {
font-size: 0.85rem;
color: var(--bookmark-name);
}
li.bookmark > a {
background-color: var(--card-color);
}
li.bookmark > a:hover {
background-color: var(--card-color-hover);
}
/*******************************
* CALENDAR STYLES *
*******************************/
#dracula-calendar .flex.justify-between.flex-wrap span {
color: var(--dracula-purple);
}
/*******************************
* FOOTER STYLES *
*******************************/
#footer svg {
color: var(--footer-items);
}
/*******************************
* SCROLLBAR STYLES *
*******************************/
* {
--scrollbar-thumb: var(--scrollbar-fg);
--scrollbar-track: var(--scrollbar-bg);
}
/*******************************
* GLANCES STYLES *
*******************************/
li[id^='glances-'] .recharts-surface > g:nth-of-type(1) path:nth-child(1) {
fill: var(--dracula-green);
fill-opacity: 0.15;
}
li[id^='glances-'] .recharts-surface g:nth-of-type(1) path:nth-child(2) {
stroke: var(--dracula-green);
stroke-opacity: 0.5;
}
li[id^='glances-'] .recharts-surface g:nth-of-type(2) path:nth-child(1) {
fill: var(--dracula-purple);
fill-opacity: 0.15;
}
li[id^='glances-'] .recharts-surface g:nth-of-type(2) path:nth-child(2) {
stroke: var(--dracula-purple);
stroke-opacity: 0.5;
}
li[id^='glances-'] .bottom-3.left-3 {
color: var(--dracula-pink);
}
li[id^='glances-'] .bottom-3.right-3 .opacity-75 {
color: var(--dracula-cyan);
opacity: 1;
font-size: 0.8rem;
}
li[id^='glances-'] .top-3.right-3 .opacity-50 {
color: var(--dracula-cyan);
opacity: 1;
font-size: 0.8rem;
}
li[id^='glances-'] .opacity-50 {
opacity: 0.8;
}
li[id^='glances-'] .flex.items-center.text-xs .text-right {
color: var(--dracula-cyan);
}
li[id^='glances-'] .flex.items-center .opacity-25.w-14.text-right {
color: var(--dracula-purple);
opacity: 0.85;
}
li[id^='glances-']
.bottom-4.right-3.left-3.z-20
.w-3.h-3.mr-1\.5.opacity-50
> div {
background: var(--dracula-green) !important;
opacity: 1;
}
li[id^='glances-'] .bottom-4.right-3.left-3.z-20 .opacity-75.grow {
color: var(--dracula-pink) !important;
opacity: 0.75;
}
/*******************************
* HOMEPAGE PRESETS *
*******************************/
.bg-amber-500 {
background-color: var(--dracula-orange);
}
.bg-black {
background-color: rgb(0 0 0);
}
.bg-blue-500 {
background-color: var(--dracula-cyan);
}
.bg-cyan-500 {
background-color: var(--dracula-cyan);
}
.bg-emerald-500 {
background-color: var(--dracula-green);
}
.bg-fuchsia-500 {
background-color: var(--dracula-pink);
}
.bg-gray-500 {
background-color: var(--dracula-foreground);
}
.bg-green-500 {
background-color: var(--dracula-green);
}
.bg-indigo-500 {
background-color: var(--dracula-purple);
}
.bg-lime-500 {
background-color: var(--dracula-green);
}
.bg-neutral-500 {
background-color: rgb(115 115 115);
}
.bg-orange-400 {
background-color: var(--dracula-orange);
}
.bg-orange-500 {
background-color: var(--dracula-orange);
}
.bg-pink-500 {
background-color: var(--dracula-pink);
}
.bg-purple-500 {
background-color: var(--dracula-purple);
}
.bg-red-500 {
background-color: var(--dracula-red);
}
.bg-rose-100 {
background-color: rgb(255, 205, 205);
}
.bg-rose-500 {
background-color: var(--dracula-red);
}
.bg-rose-900\/80 {
background-color: var(--dracula-red);
}
.bg-sky-500 {
background-color: var(--dracula-cyan);
}
.bg-slate-500 {
background-color: var(--dracula-slate);
}
.bg-stone-500 {
background-color: rgb(120 113 108);
}
.bg-teal-500 {
background-color: rgb(20 184 166);
}
.bg-violet-500 {
background-color: var(--dracula-purple);
}
.bg-white {
background-color: var(--dracula-text);
}
.bg-white\/50 {
background-color: hsla(0, 0%, 100%, 0.5);
}
.bg-yellow-500 {
background-color: var(--dracula-yellow);
}
.bg-zinc-500 {
background-color: rgb(113 113 122);
}
.text-amber-800 {
color: var(--dracula-orange);
}
.text-black {
color: rgb(0 0 0);
}
.text-black\/20 {
color: rgba(0, 0, 0, 0.2);
}
.text-blue-500\/80 {
color: rgba(139, 233, 253, 0.8);
}
.text-emerald-300 {
color: var(--dracula-green);
}
.text-emerald-500\/80 {
color: rgba(80, 250, 123, 0.8);
}
.text-gray-500 {
color: rgb(107 114 128);
}
.text-green-500 {
color: var(--dracula-green);
}
.text-orange-400\/50 {
color: rgba(255, 184, 108, 0.5);
}
.text-red-400 {
color: var(--dracula-red);
}
.text-red-500 {
color: var(--dracula-red);
}
.text-red-500\/40 {
color: rgba(255, 85, 85, 0.4);
}
.text-rose-300 {
color: var(--dracula-red);
}
.text-rose-500 {
color: var(--dracula-red);
}
.text-rose-500\/80 {
color: rgba(255, 85, 85, 0.8);
}
.text-rose-900 {
color: var(--dracula-red);
}
.text-white {
color: var(--dracula-text);
}
}
/* ********************************************************************************************* */
/* CARD COLOURING - DONE VIA "ID:" TAGS IN SERVICES.YAML */
.service-card::before {
content: "";
opacity: 0.40;
position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px; z-index: 0;
}
/* DARK */
#red .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #812020; }
#yellow .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #818120; }
#green .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #208120; }
#cyan .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #208181; }
#blue .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #202081; }
#purple .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #812081; }
#black .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #000000; }
#white .dark\:hover\:bg-white\/10:is(.dark *).service-card::before { background-color: #ffffff; }
/* LIGHT */
#red .hover\:bg-theme-300\/20.service-card::before { background-color: #ff0000; }
#yellow .hover\:bg-theme-300\/20.service-card::before { background-color: #ffff00; }
#green .hover\:bg-theme-300\/20.service-card::before { background-color: #00ff00; }
#cyan .hover\:bg-theme-300\/20.service-card::before { background-color: #00ffff; }
#blue .hover\:bg-theme-300\/20.service-card::before { background-color: #0000ff; }
#purple .hover\:bg-theme-300\/20.service-card::before { background-color: #ff00ff; }
#black .hover\:bg-theme-300\/20.service-card::before { background-color: #ffffff; }
#white .hover\:bg-theme-300\/20.service-card::before { background-color: #000000; }
#orange .hover\:bg-theme-300\/20.service-card::before { background-color: #ffa500; }
#pink .hover\:bg-theme-300\/20.service-card::before { background-color: #ffc0cb; }
#teal .hover\:bg-theme-300\/20.service-card::before { background-color: #008080; }
#magenta .hover\:bg-theme-300\/20.service-card::before { background-color: #ff00ff; }
#lime .hover\:bg-theme-300\/20.service-card::before { background-color: #00ff00; }
#navy .hover\:bg-theme-300\/20.service-card::before { background-color: #000080; }
#maroon .hover\:bg-theme-300\/20.service-card::before { background-color: #800000; }
#olive .hover\:bg-theme-300\/20.service-card::before { background-color: #808000; }
#silver .hover\:bg-theme-300\/20.service-card::before { background-color: #c0c0c0; }
#gray .hover\:bg-theme-300\/20.service-card::before { background-color: #808080; }
#gold .hover\:bg-theme-300\/20.service-card::before { background-color: #ffd700; }
#coral .hover\:bg-theme-300\/20.service-card::before { background-color: #ff7f50; }
#salmon .hover\:bg-theme-300\/20.service-card::before { background-color: #fa8072; }
#indigo .hover\:bg-theme-300\/20.service-card::before { background-color: #4b0082; }
#violet .hover\:bg-theme-300\/20.service-card::before { background-color: #ee82ee; }
#turquoise .hover\:bg-theme-300\/20.service-card::before { background-color: #40e0d0; }
#plum .hover\:bg-theme-300\/20.service-card::before { background-color: #dda0dd; }
#orchid .hover\:bg-theme-300\/20.service-card::before { background-color: #da70d6; }
#tan .hover\:bg-theme-300\/20.service-card::before { background-color: #d2b48c; }
#beige .hover\:bg-theme-300\/20.service-card::before { background-color: #f5f5dc; }
#mint .hover\:bg-theme-300\/20.service-card::before { background-color: #98ff98; }
#lavender .hover\:bg-theme-300\/20.service-card::before { background-color: #e6e6fa; }
#chocolate .hover\:bg-theme-300\/20.service-card::before { background-color: #d2691e; }
#crimson .hover\:bg-theme-300\/20.service-card::before { background-color: #dc143c; }
#khaki .hover\:bg-theme-300\/20.service-card::before { background-color: #f0e68c; }
#aqua .hover\:bg-theme-300\/20.service-card::before { background-color: #00ffff; }
#azure .hover\:bg-theme-300\/20.service-card::before { background-color: #f0ffff; }
#bisque .hover\:bg-theme-300\/20.service-card::before { background-color: #ffe4c4; }
#bronze .hover\:bg-theme-300\/20.service-card::before { background-color: #cd7f32; }
#charcoal .hover\:bg-theme-300\/20.service-card::before { background-color: #36454f; }
#emerald .hover\:bg-theme-300\/20.service-card::before { background-color: #50c878; }
#ivory .hover\:bg-theme-300\/20.service-card::before { background-color: #fffff0; }
#jade .hover\:bg-theme-300\/20.service-card::before { background-color: #00a86b; }
#peach .hover\:bg-theme-300\/20.service-card::before { background-color: #ffe5b4; }
#rose .hover\:bg-theme-300\/20.service-card::before { background-color: #ff007f; }
#ruby .hover\:bg-theme-300\/20.service-card::before { background-color: #e0115f; }
#sapphire .hover\:bg-theme-300\/20.service-card::before { background-color: #0f52ba; }
#sepia .hover\:bg-theme-300\/20.service-card::before { background-color: #704214; }
#steel .hover\:bg-theme-300\/20.service-card::before { background-color: #4682b4; }
#amber .hover\:bg-theme-300\/20.service-card::before { background-color: #ffbf00; }
#cerulean .hover\:bg-theme-300\/20.service-card::before { background-color: #007ba7; }
#periwinkle .hover\:bg-theme-300\/20.service-card::before { background-color: #ccccff; }
#scarlet .hover\:bg-theme-300\/20.service-card::before { background-color: #ff2400; }
#slate .hover\:bg-theme-300\/20.service-card::before { background-color: #708090; }
@@ -0,0 +1,10 @@
---
# For configuration options and examples, please see:
# https://gethomepage.dev/configs/docker/
# my-docker:
# host: 127.0.0.1
# port: 2375
# my-docker:
# socket: /var/run/docker.sock
@@ -0,0 +1,2 @@
---
# sample kubernetes config
@@ -0,0 +1,5 @@
---
# pve:
# url: https://proxmox.host.or.ip:8006
# token: username@pam!Token ID
# secret: secret
@@ -0,0 +1,341 @@
---
######################################### HOME TAB SERVICES ######################################################################
- Infrastructure:
- Proxmox 1:
id: blue
tab: Home
href: https://192.168.2.1:8006
icon: proxmox.png
description: Virtual Server 1
widget:
type: proxmox
url: https://192.168.2.1:8006
username: api@pam!homepage
password: faca2bd5-e6df-4192-85ce-928fccde4623
node: pve
fields: ["vms", "lxc", "resources.cpu", "resources.mem"]
- Proxmox 2:
id: yellow
tab: Home
href: https://192.168.2.2:8006
icon: proxmox.png
description: Virtual Server 2
widget:
type: proxmox
url: https://192.168.2.2:8006
username: api@pam!homepage
password: 1b2fa246-a994-4f93-ab4d-1c91a4aea614
node: pve
fields: ["vms", "lxc", "resources.cpu", "resources.mem"]
- Authentik:
id: red
tab: Home
href: https://auth.mikemcfetridge.com
icon: authentik.png
description: Authentik SSO
widget:
type: authentik
url: https://192.168.2.3:9543
key: NW5ldUK8qDRY91ny67dE6ckWCMXThF9nwj6EZw7pKbS5FzXx5wouAo4sC19n
version: 2
- Dockhand:
id: cyan
tab: Home
href: http://192.168.2.3:3200
icon: dockhand.png
description: Dockhand
widget:
type: dockhand
url: http://192.168.2.3:3200
username: mmcfetridge
password: "!Sucyetat123"
- Applications:
- OwnCloud:
id: purple
tab: Home
icon: owncloud.png
href: https://owncloud.mcfetridge.us
description: File Sync & Share
- Immich:
id: white
tab: Home
href: https://immich.mikemcfetridge.com
icon: immich.png
description: Photos Server
widget:
type: immich
url: http://192.168.2.3:2283
key: "MLbcal27A67J6FZV1PIb3AdMsRf8xZC1uruOLB7js"
fields: ["users", "photos", "storage"]
version: 2
- Trilium:
id: gold
tab: Home
href: http://192.168.2.3:8180
icon: trilium.png
description: Trilium Server
widget:
type: trilium
url: http://192.168.2.3:8180
key: "Z0qLO33tMHgy_c0nq/pZAJMR/8Em5xrwOEJ6EfiyNEWkMurMSnRdVdtM="
- Forgejo:
id: green
tab: Home
href: https://forgejo.mikemcfetridge.com
icon: forgejo.png
description: Forgejo Git & CICD
- MySpeed:
id: lime
tab: Home
icon: myspeed.png
href: http://192.168.2.3:5216
widget:
type: myspeed
url: http://192.168.2.3:5216
password: "!Sucyetat123" # only required if password is set
- mealie:
id: cobalt
tab: Home
icon: mealie.png
href: http://192.168.2.7:9000/
widget:
type: mealie
url: http://192.168.2.7:9000
key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb25nX3Rva2VuIjp0cnVlLCJpZCI6IjVlYzIwNTk2LTEyY2QtNDFkMS05MTc5LWUzOWFkYjk3OWE2MyIsIm5hbWUiOiJob21lcGFnZSIsImludGVncmF0aW9uX2lkIjoiZ2VuZXJpYyIsImV4cCI6MTkzNjU0MzE3N30.C1PWK51JOpmzHwR9zmlvVShWC7sasKv0aO6PS47LQqo
version: 2 # only required if version > 1, defaults to 1
############################################## MEDIA TAB Services ###########################################################
- Media downloader:
- Calendar:
id: gray
tab: Media
name: Calendar
widget:
type: calendar
view: agenda
maxEvents: 6
firstDayInWeek: sunday
integrations:
- type: sonarr
service_group: Media downloader
service_name: Sonarr
- type: radarr
service_group: Media downloader
service_name: Radarr
- Sonarr:
id: crimson
tab: Media
href: http://192.168.2.16:8989
icon: sonarr.png
description: TV Show Service
widget:
type: sonarr
url: http://192.168.2.16:8989
key: 8746f486831545e3b6c9014657ac9c11
fields: ["wanted", "queued", "series"]
- Radarr:
id: lavender
tab: Media
href: http://192.168.2.16:7878
icon: radarr.png
description: Movie Service
widget:
type: radarr
url: http://192.168.2.16:7878
key: ee95503f6fca4cf7b9c8c3f3fc45df39
fields: ["wanted", "missing", "queued", "movies"]
- Qbittorrent:
id: teal
tab: Media
href: http://192.168.2.16:8118
icon: qbittorrent.png
description: Download Client
widget:
type: qbittorrent
url: http://192.168.2.16:8118
username: admin
password: "!Sucyetat123"
- Media Apps:
- Jellyfin:
id: violet
tab: Media
href: http://192.168.2.16:8096
icon: jellyfin.png
description: Movies & TV Shows
widget:
type: jellyfin
url: http://192.168.2.16:8096
key: 617cc65c15da4b3eaac10568c25a8c36
enableBlocks: true
enableNowPlaying: true
- Jellyseerr:
id: aqua
tab: Media
href: http://192.168.2.16:5055
icon: jellyseerr.png
description: Movie/show Database
widget:
type: jellyseerr
url: http://192.168.2.16:5055
key: MTc1NDI2NTczOTQyMDA2ODRjOWY0LWJmZmEtNGE1OC05MzM2LTAwMDM4OWRmYmQ3Yg==
fields: ["pending", "approved", "available"]
- Navidrome:
id: navy
tab: Media
icon: navidrome.png
href: http://192.168.2.16:4533
widget:
type: navidrome
url: http://192.168.2.16:4533
user: mmcfetridge
token: 05dee16046666bb05d98291b9c6e39d3
salt: 50c05a
- AudioBookShelf:
id: beige
tab: Media
href: http://192.168.2.16:13378
icon: audiobookshelf.png
description: Index Server
widget:
type: audiobookshelf
url: http://192.168.2.16:13378
key: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI4MDQ5Y2U4Mi0xZjlmLTRiYTEtOWY3Zi03N2U4YmRiYjg0OGEiLCJ1c2VybmFtZSI6Im1tY2ZldHJpZGdlIiwiaWF0IjoxNzQ4MTk4NzUyfQ.Tey3wxo61euuJEwc2ziE_PukdOUz7pNZKG8SmOdWB-c"
fields: ["podcasts", "books"]
##################################### Network & System TAB Services ##############################################################
- Network:
- Pi-hole:
id: slate
tab: Network
href: http://192.168.2.8/admin/login
icon: pi-hole.png
widget:
type: pihole
url: http://192.168.2.8
version: 6
key: "!Sucyetat123"
fields: ["queries", "blocked", "blocked_percent", "gravity"]
- Technitium:
id: burgundy
tab: Network
href: http://192.168.2.9:5380
icon: technitium.png
description: Technitium DNS Server
widget:
type: technitium
url: http://192.168.2.9:5380
key: 03348d06cd472fbd091d8232b1c13321ff70a8628dad7b0c23dd4512a18fb34b
range: LastDay
fields: ["totalQueries", "totalAuthoritative", "totalCached", "totalServerFailure"]
- Proxy Manager:
id: emerald
tab: Network
href: http://192.168.2.3:81
icon: nginx-proxy-manager.png
description: Nginx Proxy Manager
widget:
type: npm
url: http://192.168.2.3:81
username: mmcfetridg@aol.com
password: "!Sucyetat123"
fields: ["enabled", "disabled", "total"]
- Pangolin:
id: salmon
tab: Network
icon: pangolin.png
href: https://pangolin.mmcfetridge.net
description: External network
widget:
type: pangolin
url: https://api.mmcfetridge.net/v1
key: "2o4g9gak61mig2i.5s5yxu4o2ek7haepzumar2ldl4mmzqpbrcfnpqdf"
org: homelab
- Systems:
- Gluetun:
id: jade
tab: System
href: http://192.168.2.16:8000
icon: gluetun.png
description: Media VPN Server
widget:
type: gluetun
url: http://192.168.2.16:8000
fields: ["public_ip", "region", "country"]
- Public IP:
icon: mdi-web
href: https://whatismyipaddress.com/
widget:
type: customapi
url: https://api.ipify.org?format=json
refreshInterval: 3600000 # Refreshes once an hour (in milliseconds)
method: GET
mappings:
- field: ip
label: WAN IP
format: text
############################################## Bookmark TAB Services #############################################################
- Bookmarks:
- Github:
id: indigo
tab: Bookmarks
abbr: GH
href: https://github.com
icon: github-light.png
description: GitHub
- Linkwarden:
id: charcoal
tab: Bookmarks
href: https://lw.mikemcfetridge.com
icon: linkwarden.png
description: Web Bookmarker
widget:
type: linkwarden
url: http://192.168.2.12:3000
key: "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZLJgig_ol-n3i1tv.vhWCnMSHVd81bdidL85-imXKpxGC0U3mHlvmkQyIJqJvcFRRJVBAasw9C0cmfSXVPq08HT-B-3zUAmftnPRymPHMJCkfo8pv_XBbEPneIFH-n59_dg26.qcXSK2REP3M_Vdgp0aOqcA"
fields: ["links", "collections"]
- Semaphore:
id: cerulean
tab: Bookmarks
icon: semaphore.png
href: http://192.168.2.11:3000
description: CI/CD Automation
- Wg-Easy:
id: rose
tab: Bookmarks
icon: wireguard.png
href: http://192.168.2.3:10086
description: Wireguard VPN
- YouTube:
id: coral
tab: Bookmarks
icon: youtube.png
href: https://youtube.com/
description: Video Platform
@@ -0,0 +1,55 @@
---
title: Miker's Homepage
description: Here is my awesome homepage
background:
image: https://backiee.com/static/wallpapers/1000x563/412861.webp
blur: sm
saturate: 50
brightness: 75
opacity: 75
theme: dark
color: slate
layout:
Infrastructure:
icon: mdi-folder-network
tab: Home
header: true
columns: 3
Applications:
icon: mdi-application
tab: Home
header: true
columns: 3
Media downloader:
icon: mdi-multimedia
tab: Media
header: true
columns: 3
Media Apps:
icon: mdi-movie
tab: Media
header: true
columns: 3
Network:
tab: System
icon: mdi-switch
header: true
columns: 3
Systems:
tab: System
icon: mdi-television
header: true
columns: 3
Bookmarks:
tab: Bookmarks
icon: mdi-baby
style: row
columns: 4
fiveColumns: true
useEqualHeights: true
showStats: true
@@ -0,0 +1,42 @@
# Homepage Widgets Configuration
# Organized by System, Environment, and Search
- logo:
icon: wireguard.svg # optional
- resources:
cpu: true
memory: true
disk: /
cputemp: true
tempmin: 0
tempmax: 100
uptime: true
units: imperial
refresh: 3000
diskUnits: bytes
network: true
- openmeteo:
label: Bealeton
latitude: 38.5718
longitude: -77.7639
timezone: America/New_York
units: imperial
cache: 5
format:
maximumFractionDigits: 1
- datetime:
text_size: sm
format:
dateStyle: short
timeStyle: short
hour12: true
timeZone: 'America/New_York'
- search:
provider: custom
url: http://localhost:8080/search?q=
focus: true
target: _blank
showSearchSuggestions: true
@@ -0,0 +1,44 @@
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
environment:
HOMEPAGE_ALLOWED_HOSTS: "*" # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: ${PUID} # Reference PUID from .env
PGID: ${PGID} # Reference PGID from .env
DOCKER_HOST: tcp://socket-proxy:2375
ports:
- 3000:3000
env_file:
- .env # Link to the .env file
volumes:
- ./config:/app/config # Make sure your local config directory exists
- ./images:/app/public/images
- /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 10s
retries: 3
timeout: 10s
start_period: 30s
dockerproxy:
image: ghcr.io/tecnativa/docker-socket-proxy:latest
container_name: dockerproxy
environment:
- CONTAINERS=1 # Allow access to viewing containers
- SERVICES=1 # Allow access to viewing services (necessary when using Docker Swarm)
- TASKS=1 # Allow access to viewing tasks (necessary when using Docker Swarm)
- POST=0 # Disallow any POST operations (effectively read-only)
ports:
- 127.0.0.1:2375:2375
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Mounted as read-only
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:2375"]
interval: 10s
retries: 3
timeout: 10s
start_period: 30s
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

+5
View File
@@ -0,0 +1,5 @@
HOMARR_PORT=7575
PUID=1000
PGID=1000
# TZ for container timezone
TZ=America/New_York
+30
View File
@@ -0,0 +1,30 @@
services:
# Homarr - Application Dashboard
homarr:
image: ghcr.io/ajnart/homarr:latest
container_name: homarr
security_opt:
- no-new-privileges:true
restart: unless-stopped
env_file:
- .env
networks:
- default
- socket_proxy
ports:
- "$HOMARR_PORT:7575"
volumes:
# - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration
- ./appdata/homarr/configs:/app/data/configs
- ./appdata/homarr/icons:/app/public/icons
- ./appdata/homarr/data:/data
environment:
- DOCKER_HOST
PUID: ${PUID} # Reference PUID from .env
PGID: ${PGID} # # DOCKER-LABELS-PLACEHOLDER
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7575"]
interval: 10s
retries: 3
timeout: 10s
start_period: 30s