refactor: homepage, as well as additional services such as pihole, portainer, scrutiny, torrents-csv. caddy has been partially set up

This commit is contained in:
2026-07-08 17:44:10 -07:00
parent a42fdfd2db
commit ad48cb8bc1
10 changed files with 350 additions and 236 deletions
+5
View File
@@ -13,6 +13,11 @@ sonarr/
tautulli/ tautulli/
tdarr/ tdarr/
gluetun-data/ gluetun-data/
caddy/*
!Caddyfile
influxdb/
config/
conf/
etc* etc*
!odysseus/.* !odysseus/.*
+21
View File
@@ -0,0 +1,21 @@
# --- TAUTULLI ---
tautulli.shaan-server {
tls internal
reverse_proxy tautulli:8181
}
# --- HOMEPAGE ---
shaan-server {
tls internal
reverse_proxy homepage:3000
}
# --- PORTAINER ---
portainer.shaan-server {
tls internal
reverse_proxy https://portainer:9443 {
transport http {
tls_insecure_skip_verify
}
}
}
+97 -56
View File
@@ -24,8 +24,6 @@ services:
- DNS_UPSTREAM_RESOLVER_TYPE=doh # DNS over TLS is an extra layer of security so your isp can not look at what you're doing through your DNS requests, even if your using a vpn (very vague, I don't know how this syustem works with a vpn). - DNS_UPSTREAM_RESOLVER_TYPE=doh # DNS over TLS is an extra layer of security so your isp can not look at what you're doing through your DNS requests, even if your using a vpn (very vague, I don't know how this syustem works with a vpn).
ports: # YOU MUST SPECIFY A PORT PER SERVICE ROUTED THROUGH GLUETUN! ports: # YOU MUST SPECIFY A PORT PER SERVICE ROUTED THROUGH GLUETUN!
- 8888:8000/tcp # gluetun control server, i dont think you should change this - 8888:8000/tcp # gluetun control server, i dont think you should change this
- 6881:6881 # Default port for qbit
- 6881:6881/udp # Default port for qbit, if udp > tcp
- ${QBITTORRENT_PORT}:${QBITTORRENT_PORT} # qBittorrent Web UI - ${QBITTORRENT_PORT}:${QBITTORRENT_PORT} # qBittorrent Web UI
- ${PROWLARR_PORT}:${PROWLARR_PORT} # Prowlarr - ${PROWLARR_PORT}:${PROWLARR_PORT} # Prowlarr
- ${SONARR_PORT}:${SONARR_PORT} # Sonarr - ${SONARR_PORT}:${SONARR_PORT} # Sonarr
@@ -243,6 +241,8 @@ services:
- TZ=${TIMEZONE} - TZ=${TIMEZONE}
ports: ports:
- ${TAUTULLI_PORT}:${TAUTULLI_PORT} - ${TAUTULLI_PORT}:${TAUTULLI_PORT}
networks:
- caddy_net
restart: always restart: always
tdarr: tdarr:
@@ -250,6 +250,7 @@ services:
image: haveagitgat/tdarr:latest image: haveagitgat/tdarr:latest
networks: networks:
- tdarr-net - tdarr-net
- caddy_net
ports: ports:
- ${TDARR_PORT}:${TDARR_PORT} # WebUI - ${TDARR_PORT}:${TDARR_PORT} # WebUI
- ${TDARR_NODE_PORT}:${TDARR_NODE_PORT} # local tdarr-node - ${TDARR_NODE_PORT}:${TDARR_NODE_PORT} # local tdarr-node
@@ -268,6 +269,13 @@ services:
# dont put temp files onto a HARD DISK DRIVE! > - ${DISK1}/tdarr-temp:/temp # dont put temp files onto a HARD DISK DRIVE! > - ${DISK1}/tdarr-temp:/temp
devices: devices:
- /dev/dri:/dev/dri # Intel UHD Graphics 710 - /dev/dri:/dev/dri # Intel UHD Graphics 710
labels:
caddy: tdarr.shaan-server.cc
caddy.reverse_proxy: "{{upstreams 3000}}"
caddy.reverse_proxy.transport: "http"
caddy.reverse_proxy.transport.tls: ""
caddy.reverse_proxy.transport.tls_insecure_skip_verify: ""
caddy.tls: internal
restart: always restart: always
tdarr-node: tdarr-node:
@@ -306,7 +314,8 @@ services:
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
environment: environment:
- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},100.76.249.110:${HOMEPAGE_PORT},${SERVER_NAME}.tail:${HOMEPAGE_PORT},${EXTERNAL_IPV4}:${HOMEPAGE_PORT},${WEB_NAME}:${HOMEPAGE_PORT},${WEB_NAME},172.17.0.1:${HOMEPAGE_PORT}" # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts #- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},100.76.249.110:${HOMEPAGE_PORT},${SERVER_NAME}.tail:${HOMEPAGE_PORT},${EXTERNAL_IPV4}:${HOMEPAGE_PORT},${WEB_NAME}:${HOMEPAGE_PORT},${WEB_NAME},172.17.0.1:${HOMEPAGE_PORT},${SERVER_NAME}:80,${SERVER_NAME}:443,shaan-server:443" # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
- "HOMEPAGE_ALLOWED_HOSTS=*"
- "HOMEPAGE_VAR_DISK1=${DISK1}" - "HOMEPAGE_VAR_DISK1=${DISK1}"
- "HOMEPAGE_VAR_DISK2=${DISK2}" - "HOMEPAGE_VAR_DISK2=${DISK2}"
- "HOMEPAGE_VAR_DISK3=${DISK3}" - "HOMEPAGE_VAR_DISK3=${DISK3}"
@@ -336,6 +345,7 @@ services:
- "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}" - "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}"
- "HOMEPAGE_VAR_MYSPEED_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${MYSPEED_PORT}" - "HOMEPAGE_VAR_MYSPEED_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${MYSPEED_PORT}"
- "HOMEPAGE_VAR_TERMIX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${TERMIX_PORT}" - "HOMEPAGE_VAR_TERMIX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${TERMIX_PORT}"
- "HOMEPAGE_VAR_ODYSSEUS_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${ODYSSEUS_PORT}"
- "HOMEPAGE_VAR_PLEX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PLEX_PORT}" - "HOMEPAGE_VAR_PLEX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PLEX_PORT}"
- "HOMEPAGE_VAR_QBITTORRENT_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${QBITTORRENT_PORT}" - "HOMEPAGE_VAR_QBITTORRENT_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${QBITTORRENT_PORT}"
- "HOMEPAGE_VAR_PROWLARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PROWLARR_PORT}" - "HOMEPAGE_VAR_PROWLARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PROWLARR_PORT}"
@@ -349,12 +359,12 @@ services:
- "HOMEPAGE_VAR_SEERR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SEERR_PORT}" - "HOMEPAGE_VAR_SEERR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SEERR_PORT}"
- "HOMEPAGE_VAR_MYSPEED_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${MYSPEED_PORT}" - "HOMEPAGE_VAR_MYSPEED_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${MYSPEED_PORT}"
- "HOMEPAGE_VAR_TERMIX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TERMIX_PORT}" - "HOMEPAGE_VAR_TERMIX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TERMIX_PORT}"
- "HOMEPAGE_VAR_ODYSSEUS_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${ODYSSEUS_PORT}"
- TZ=${TIMEZONE} - TZ=${TIMEZONE}
extra_hosts: extra_hosts:
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
#networks: networks:
# staticaddress: - caddy_net
# ipv4_address: 172.200.0.2
restart: always restart: always
glances: glances:
@@ -463,32 +473,37 @@ services:
- termix-net - termix-net
restart: unless-stopped restart: unless-stopped
# pihole: pihole:
# container_name: pihole container_name: pihole
# image: pihole/pihole:latest image: pihole/pihole:latest
# network_mode: "host" network_mode: "host"
# ports: ports:
# - "53:53/tcp" - "53:53/tcp"
# - "53:53/udp" - "53:53/udp"
# - "67:67/udp" - "67:67/udp"
# - "80:80/tcp" - "6060:6060/tcp"
# environment: environment:
# TZ: "America/Los_Angeles" TZ: "America/Los_Angeles"
# #WEBPASSWORD: "password123" WEBPASSWORD: "password123"
# volumes: FTLCONF_misc_etc_dnsmasq_d: "true"
# - "./etc-pihole:/etc/pihole" volumes:
# - "./etc-dnsmasq.d:/etc/dnsmasq.d" - "./etc-pihole:/etc/pihole"
# - /etc/localtime:/etc/localtime:ro - "./etc-dnsmasq.d:/etc/dnsmasq.d"
# - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro
# cap_add: - /etc/timezone:/etc/timezone:ro
# - NET_ADMIN cap_add:
# restart: unless-stopped - NET_ADMIN
restart: unless-stopped
labels:
caddy: pihole.shaan-server.cc
caddy.reverse_proxy: "192.168.50.2:6060"
caddy.tls: internal
cloudflared: cloudflared:
container_name: cloudflared-tunnel container_name: cloudflared-tunnel
image: cloudflare/cloudflared:latest image: cloudflare/cloudflared:latest
restart: always restart: always
command: tunnel --no-autoupdate run --token eyJhIjoiMjUyZjQ3MWZkMzE2ZTg5NjI2ZjEzYzI1YzYwMTJiYzciLCJ0IjoiNWFhMDJlNmEtNDE2Ni00YTJkLTk1YzktMGFmMGY3MjM3YjIzIiwicyI6Ik5tWmhOR1V6WVRZdE5HRXdOaTAwT1RjekxXSTFPV1V0T0RrMU1UWTRabVl4WkRZeCJ9 command: tunnel --no-autoupdate run --token ${CLOUDFLARED_KEY}
torrents-csv: torrents-csv:
image: dessalines/torrents-csv-server:latest image: dessalines/torrents-csv-server:latest
@@ -505,7 +520,6 @@ services:
db: db:
image: pgautoupgrade/pgautoupgrade:17-alpine image: pgautoupgrade/pgautoupgrade:17-alpine
restart: unless-stopped
shm_size: 1gb shm_size: 1gb
volumes: volumes:
- ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh - ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
@@ -519,48 +533,75 @@ services:
POSTGRES_PASSWORD: password POSTGRES_PASSWORD: password
POSTGRES_USER: postgres POSTGRES_USER: postgres
TIMEZONE: ${TIMEZONE} TIMEZONE: ${TIMEZONE}
restart: unless-stopped
# caddy: portainer:
# build: container_name: portainer
# context: . image: portainer/portainer-ce:lts
# dockerfile_inline: | restart: always
# FROM caddy:2.11-builder AS builder volumes:
# RUN xcaddy build --with github.com/caddyserver/nginx-adapter --with github.com/caddy-dns/cloudflare - /var/run/docker.sock:/var/run/docker.sock
# FROM caddy:2.11-builder - portainer_data:/data
# COPY --from=builder /usr/bin/caddy /usr/bin/caddy ports:
# container_name: caddy - 9443:9443
# restart: unless-stopped networks:
# ports: - caddy_net
# - "80:80"
# - "443:443" caddy:
# - "443:443/udp" image: caddy:latest
# environment: restart: unless-stopped
# - CLOUDFLARE_API_TOKEN=eyJhIjoiMjUyZjQ3MWZkMzE2ZTg5NjI2ZjEzYzI1YzYwMTJiYzciLCJ0IjoiNWFhMDJlNmEtNDE2Ni00YTJkLTk1YzktMGFmMGY3MjM3YjIzIiwicyI6Ik5tWmhOR1V6WVRZdE5HRXdOaTAwT1RjekxXSTFPV1V0T0RrMU1UWTRabVl4WkRZeCJ9 container_name: caddy
# volumes: ports:
# - ./conf:/etc/caddy - 80:80
# - ./site:/srv - 443:443
# - caddy_data:/data volumes:
# - caddy_config:/config - /var/run/docker.sock:/var/run/docker.sock
# networks: - /home/shaan/torrent-stack/caddy/Caddyfile:/etc/caddy/Caddyfile
# - server-mesh - /home/shaan/torrent-stack/caddy/site:/srv
- /home/shaan/torrent-stack/caddy/caddy_data:/data
- /home/shaan/torrent-stack/caddy/caddy_config:/config
networks:
- caddy_net
scrutiny:
restart: unless-stopped
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:nightly-omnibus
cap_add:
- SYS_RAWIO
ports:
- "${SCRUTINY_PORT:-54321}:8080" # webapp
- "${SCRUTINY_ADMIN_PORT:-12345}:8086" # influxDB admin
volumes:
- /run/udev:/run/udev:ro
- ./config:/opt/scrutiny/config
- ./influxdb:/opt/scrutiny/influxdb
devices:
- "/dev/nvme0n1"
- "/dev/sda"
- "/dev/sdb"
networks: networks:
caddy_net:
external: true
tdarr-net: tdarr-net:
driver: bridge driver: bridge
termix-net: termix-net:
driver: bridge driver: bridge
server-mesh:
external: true
staticaddress: staticaddress:
ipam: ipam:
config: config:
- subnet: "172.200.0.0/16" - subnet: "172.200.0.0/16"
default:
name: portainer_network
volumes: volumes:
# open-webui: caddy_data:
# caddy_data: external: true
# caddy_config: caddy_config:
myspeed: myspeed:
external: true # docker compose will fail creating myspeed if the volume hasn't been manually created, which we have done. unless you deleted it... external: true # docker compose will fail creating myspeed if the volume hasn't been manually created, which we have done. unless you deleted it...
termix-data: termix-data:
driver: local driver: local
portainer_data:
name: portainer_data
-1
View File
@@ -1 +0,0 @@
respond "Hello World"
+50 -33
View File
@@ -2,53 +2,70 @@
# For configuration options and examples, please see: # For configuration options and examples, please see:
# https://gethomepage.dev/configs/bookmarks # https://gethomepage.dev/configs/bookmarks
- "Icons": - "Apps":
- "Plex": - "Plex":
- icon: si-plex-#EBAF00 - icon: si-plex-#EBAF00
href: {{HOMEPAGE_VAR_PLEX_HOST}} href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
- "LibreChat": - "Odysseus":
- icon: si-ollama-#FFFFFF - icon: http://shaan-server:7001/static/icons/icon-192.png
href: http://shaan-server:7001 href: https://shaan-server.cc
- "Sonarr": - "Sonarr":
- icon: si-sonarr-#2596BE - icon: sh-sonarr
href: {{HOMEPAGE_VAR_SONARR_HOST}} href: "{{HOMEPAGE_VAR_SONARR_HOST}}"
- "Radarr": - "Radarr":
- icon: si-radarr-#FFCB3D - icon: sh-radarr
href: {{HOMEPAGE_VAR_RADARR_HOST}} href: "{{HOMEPAGE_VAR_RADARR_HOST}}"
- "Lidarr": - "Lidarr":
- icon: si-youtubemusic-#499848 - icon: sh-lidarr
href: {{HOMEPAGE_VAR_LIDARR_HOST}} href: "{{HOMEPAGE_VAR_LIDARR_HOST}}"
- "Tautulli": - "Tautulli":
- icon: sh-tautulli-light - icon: sh-tautulli
href: {{HOMEPAGE_VAR_TAUTULLI_HOST}} href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}"
- "Tdarr": - "Tdarr":
- icon: sh-tdarr - icon: sh-tdarr
href: {{HOMEPAGE_VAR_TDARR_HOST}} href: "{{HOMEPAGE_VAR_TDARR_HOST}}"
- "qBittorrent": - "qBittorrent":
- icon: si-qbittorrent-#2F67BA - icon: sh-qbittorrent
href: http://shaan-server:2161 href: http://shaan-server:2161
- "Seerr": - "Seerr":
- icon: sh-seerr-light - icon: sh-seerr
href: {{HOMEPAGE_VAR_SEERR_HOST}} href: "{{HOMEPAGE_VAR_SEERR_HOST}}"
- "Prowlarr": - "Prowlarr":
- icon: sh-prowlarr-light - icon: sh-prowlarr
href: {{HOMEPAGE_VAR_PROWLARR_HOST}} href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}"
- "pihole": - "Portainer":
- icon: si-pihole-#96060C - icon: sh-portainer-light
href: http://shaan-server/admin href: https://shaan-server:9443
- "Pi-Hole":
- icon: sh-pi-hole
href: http://shaan-server:6060/admin
- "Router Gateway":
- icon: "http://192.168.50.1/images/favicon.png"
href: http://192.168.50.1
- "llama.cpp":
- icon: sh-llama-cpp
href: http://192.168.50.6:5078
- "Tailscale":
- icon: sh-tailscale-light
href: https://login.tailscale.com
- "Speedtest":
- icon: sh-speedtest-light
href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}"
- "Scrutiny":
- icon: sh-scrutiny-light
href: http://shaan-server:54321
- Bookmarks: - Bookmarks:
- github/dhaan7/torrent-stack: - github/dhaan7/torrent-stack:
- icon: sh-github - icon: sh-github-light
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: "{{HOMEPAGE_VAR_TERMIX_ADDRESS}}/favicon.ico"
- 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: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_LOCAL_IPV4}}:4000/monitorix/monitorixico.png"
- 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
@@ -1,4 +0,0 @@
img[src*="selfhs"] {
filter: invert(82%) sepia(23%) saturate(1098%) hue-rotate(193deg)
brightness(288%) contrast(88%) !important;
}
+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;
}
+132 -89
View File
@@ -4,8 +4,10 @@
- "Top": - "Top":
- "Cloudflared Tunnel": - "Cloudflared Tunnel":
icon: sh-cloudflare-light icon: sh-cloudflare
href: "https://dash.cloudflare.com/" href: "https://dash.cloudflare.com/"
server: my-docker
container: cloudflared-tunnel
description: description:
widget: widget:
type: cloudflared type: cloudflared
@@ -15,6 +17,7 @@
- "External Address": - "External Address":
icon: si-globus icon: si-globus
href: https://api.ipify.org href: https://api.ipify.org
siteMonitor: https://api.ipify.org
widget: widget:
type: customapi type: customapi
url: https://api.ipify.org?format=json url: https://api.ipify.org?format=json
@@ -25,6 +28,7 @@
- "Tailscale >": - "Tailscale >":
icon: sh-tailscale-light icon: sh-tailscale-light
href: https://login.tailscale.com href: https://login.tailscale.com
siteMonitor: https://tailscale.com
widget: widget:
type: tailscale type: tailscale
deviceid: "{{HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY}}" deviceid: "{{HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY}}"
@@ -33,31 +37,50 @@
- "Speedtest Results >": - "Speedtest Results >":
icon: sh-speedtest-light icon: sh-speedtest-light
href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}" href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}"
server: my-docker
container: MySpeed
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":
- "Odysseus":
icon: sh-ollama-light
href: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_SERVER_NAME}}:7001"
siteMonitor: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_SERVER_NAME}}:7001"
description: Local AI Models
- "llama.cpp (shaan-pc)":
icon: sh-llama-cpp-light
href: "http://192.168.50.6:5078/v1/health"
siteMonitor: http://192.168.50.6:5078
description: 42GB VRAM + 32GB RAM
- "Pi-Hole Adblocker":
icon: sh-pi-hole-light
href: "http://192.168.50.2/admin"
description: Configure Device DNS to '192.168.50.2'
server: my-docker
container: pihole
# api token with `Account.Cloudflare Tunnel:Read` https://dash.cloudflare.com/profile/api-tokens
- "Media": - "Media":
- "Media_1":
- "llama.cpp (shaan-pc)":
icon: sh-llama-cpp
href: "http://192.168.50.6:5078"
siteMonitor: http://192.168.50.6:5078/v1/health
description: 42GB VRAM + 32GB RAM
- "Odysseus":
icon: sh-ollama
href: "{{HOMEPAGE_VAR_ODYSSEUS_HOST}}"
siteMonitor: "{{HOMEPAGE_VAR_ODYSSEUS_HOST}}"
description: Local AI Models
- "Gluetun":
icon: sh-gluetun
description: VPN
server: my-docker
container: gluetun
#widget:
# type: gluetun
# url: ${HOMEPAGE_VAR_WEB_PROTOCOL}://${HOMEPAGE_VAR_LOCAL_IPV4}:8000
- "Port Updater":
icon: sh-docker
description: VPN
server: my-docker
container: port-updater
- "Termix":
icon: "{{HOMEPAGE_VAR_TERMIX_ADDRESS}}/favicon.ico"
href: "{{HOMEPAGE_VAR_TERMIX_HOST}}"
description: Web Terminal
server: my-docker
container: termix
- "Monitorix":
icon: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_LOCAL_IPV4}}:4000/monitorix/monitorixico.png"
href: http://{{HOMEPAGE_VAR_SERVER_NAME}}:4000/monitorix
description: View System Reports
- "Media_2":
- "Plex >": - "Plex >":
icon: sh-plex-light icon: sh-plex
#icon: sh-plex-dark #icon: sh-plex-dark
href: "{{HOMEPAGE_VAR_PLEX_HOST}}" href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
description: Watch description: Watch
@@ -68,7 +91,7 @@
key: "{{HOMEPAGE_VAR_PLEX_KEY}}" key: "{{HOMEPAGE_VAR_PLEX_KEY}}"
fields: [albums, movies, tv] fields: [albums, movies, tv]
- "Tautulli >": - "Tautulli >":
icon: sh-tautulli-light icon: sh-tautulli
href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}" href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}"
description: Monitor description: Monitor
server: my-docker server: my-docker
@@ -79,9 +102,8 @@
key: "{{HOMEPAGE_VAR_TAUTULLI_KEY}}" key: "{{HOMEPAGE_VAR_TAUTULLI_KEY}}"
enableUser: false enableUser: false
expandOneStreamToTwoRows: false expandOneStreamToTwoRows: false
- "Media_2x2":
- "Sonarr >": - "Sonarr >":
icon: sh-sonarr-light icon: sh-sonarr
href: "{{HOMEPAGE_VAR_SONARR_HOST}}" href: "{{HOMEPAGE_VAR_SONARR_HOST}}"
description: TV Shows description: TV Shows
server: my-docker server: my-docker
@@ -98,8 +120,22 @@
- level: warn - level: warn
when: gt when: gt
value: 0 value: 0
- Upcoming TV Episodes:
icon: sh-sonarr
widget:
type: calendar
firstDayInWeek: sunday # optional - defaults to monday
view: agenda # optional - possible values monthly, agenda
maxEvents: 2 # optional - defaults to 10
showTime: true # optional - show time for event happening today - defaults to false
timezone: America/Los_Angeles
integrations: # optional
- type: sonarr
service_name: "Sonarr >"
baseUrl: "{{HOMEPAGE_VAR_SONARR_HOST}}"
unmonitored: true
- "Radarr >": - "Radarr >":
icon: sh-radarr-light icon: sh-radarr
href: "{{HOMEPAGE_VAR_RADARR_HOST}}" href: "{{HOMEPAGE_VAR_RADARR_HOST}}"
description: Movies description: Movies
server: my-docker server: my-docker
@@ -115,22 +151,8 @@
- level: warn - level: warn
when: gt when: gt
value: 0 value: 0
- Upcoming TV Episodes:
icon: sh-sonarr-light
widget:
type: calendar
firstDayInWeek: sunday # optional - defaults to monday
view: agenda # optional - possible values monthly, agenda
maxEvents: 2 # optional - defaults to 10
showTime: true # optional - show time for event happening today - defaults to false
timezone: America/Los_Angeles
integrations: # optional
- type: sonarr
service_name: "Sonarr >"
baseUrl: "{{HOMEPAGE_VAR_SONARR_HOST}}"
unmonitored: true
- Upcoming Movies: - Upcoming Movies:
icon: sh-radarr-light icon: sh-radarr
widget: widget:
type: calendar type: calendar
firstDayInWeek: sunday # optional - defaults to monday firstDayInWeek: sunday # optional - defaults to monday
@@ -144,7 +166,7 @@
baseUrl: "{{HOMEPAGE_VAR_RADARR_HOST}}" baseUrl: "{{HOMEPAGE_VAR_RADARR_HOST}}"
unmonitored: true unmonitored: true
- "Lidarr >": - "Lidarr >":
icon: sh-lidarr-light icon: sh-lidarr
href: "{{HOMEPAGE_VAR_LIDARR_HOST}}" href: "{{HOMEPAGE_VAR_LIDARR_HOST}}"
description: Music description: Music
server: my-docker server: my-docker
@@ -161,7 +183,7 @@
when: gt when: gt
value: 0 value: 0
- "Seerr >": - "Seerr >":
icon: sh-overseerr-light icon: sh-overseerr
href: "{{HOMEPAGE_VAR_SEERR_HOST}}" href: "{{HOMEPAGE_VAR_SEERR_HOST}}"
description: Request description: Request
server: my-docker server: my-docker
@@ -177,8 +199,11 @@
- level: warn - level: warn
when: gt when: gt
value: 0 value: 0
- "Media_Bottom": - "Media_Bottom":
- "Tdarr Node (Intel Graphics UHD 710)":
icon: sh-tdarr
server: my-docker
container: tdarr-node
- "Tdarr >": - "Tdarr >":
icon: sh-tdarr icon: sh-tdarr
href: "{{HOMEPAGE_VAR_TDARR_HOST}}" href: "{{HOMEPAGE_VAR_TDARR_HOST}}"
@@ -200,30 +225,38 @@
- level: danger - level: danger
when: gt when: gt
value: 0 value: 0
- "Media_Tdarr_Nodes": # - "Media_Tdarr_Nodes":
- "Intel UHD 710": # - "Intel UHD 710":
icon: sh-tdarr # icon: sh-tdarr
server: my-docker # server: my-docker
container: tdarr-node # container: tdarr-node
- "Network": - "Network":
- "Network_2x2": - "Network_1":
- "Gluetun": - "Portainer":
icon: sh-gluetun-light icon: sh-portainer-light
description: VPN href: https://shaan-server:9443
description: Manage Docker Containers
server: my-docker server: my-docker
container: gluetun container: portainer
#widget: widget:
# type: gluetun type: portainer
# url: ${HOMEPAGE_VAR_WEB_PROTOCOL}://${HOMEPAGE_VAR_LOCAL_IPV4}:8000 url: https://shaan-server:9443
env: 3
- "Port Updater": key: ptr_dR3wQa568otBJzfZz5FET+IQKXee7K6O+VO301iY6x4=
icon: sh-docker-light - "Pi-Hole Adblocker":
description: VPN icon: sh-pi-hole
href: "http://192.168.50.2/admin"
description: Configure Device DNS to '192.168.50.2'
server: my-docker server: my-docker
container: port-updater container: pihole
- "Network_list": widget:
type: pihole
url: http://shaan-server:6060
version: 6 # required if running v6 or higher, defaults to 5
key: password # optional, in v6 can be your password or app password
- "Network_qbit":
- "Prowlarr >": - "Prowlarr >":
icon: sh-prowlarr-light icon: sh-prowlarr
href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}" href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}"
description: Indexer Management description: Indexer Management
server: my-docker server: my-docker
@@ -256,7 +289,7 @@
value: 0 value: 0
- "qBittorrent Active >": - "qBittorrent Active >":
icon: sh-qbittorrent-light icon: sh-qbittorrent
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker server: my-docker
container: qbittorrent container: qbittorrent
@@ -278,7 +311,7 @@
value: 20 value: 20
- "qBittorrent Status >": - "qBittorrent Status >":
icon: sh-qbittorrent-light icon: sh-qbittorrent
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker server: my-docker
container: qbittorrent container: qbittorrent
@@ -314,7 +347,7 @@
value: 200 value: 200
- "qBittorrent Stats >": - "qBittorrent Stats >":
icon: sh-qbittorrent-light icon: sh-qbittorrent
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker server: my-docker
container: qbittorrent container: qbittorrent
@@ -346,7 +379,7 @@
value: 60 value: 60
- "qBittorrent Session >": - "qBittorrent Session >":
icon: sh-qbittorrent-light icon: sh-qbittorrent
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}" href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
server: my-docker server: my-docker
container: qbittorrent container: qbittorrent
@@ -392,28 +425,38 @@
- level: good - level: good
when: gt when: gt
value: 0 value: 0
- "Minecraft": # - "Minecraft":
icon: sh-minecraft-creeper-light # icon: sh-minecraft-creeper
description: Game Server Instance # 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
- "Network_2":
- "Scrutiny":
icon: sh-scrutiny
href: http://192.168.50.2:54321 #"{{HOMEPAGE_VAR_SCRUTINY_ADDRESS}}""
description: Disk "S.M.A.R.T." Stats
server: my-docker server: my-docker
container: mc container: scrutiny
#siteMonitor: "udp://localhost:25575"
widget: widget:
type: minecraft type: scrutiny
url: http://localhost:25565 url: http://192.168.50.2:54321 #"{{HOMEPAGE_VAR_SCRUTINY_ADDRESS}}"
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
+17 -16
View File
@@ -40,27 +40,27 @@ headerStyle: boxed #underlined
useEqualHeights: true useEqualHeights: true
layout: layout:
"Icons": "Apps":
tab: Icons tab: Apps
iconsOnly: true iconsOnly: false
header: false header: true
iconStyle: gradient iconStyle: gradient
"Top": "Top":
tab: All tab: All
header: false header: false
style: row style: row
columns: 4 columns: 4
"non-torrent-stack":
tab: All
header: false
style: row
columns: 4
"Media": "Media":
tab: All tab: All
header: false header: false
style: column style: column
columns: 1 columns: 1
"Media_2x2": "Media_1":
tab: All
header: false
style: row
columns: 3
"Media_2":
tab: All tab: All
header: false header: false
style: row style: row
@@ -70,21 +70,22 @@ layout:
header: false header: false
style: row style: row
columns: 1 columns: 1
"Media_Tdarr_Nodes":
header: false
style: row
columns: 2
"Network": "Network":
tab: All tab: All
header: false header: false
style: column style: column
columns: 1 columns: 1
"Network_list": "Network_1":
tab: All
header: false
style: row
columns: 2
"Network_qbit":
tab: All tab: All
header: false header: false
style: row style: row
columns: 1 columns: 1
"Network_2x2": "Network_2":
tab: All tab: All
header: false header: false
style: row style: row
+3 -16
View File
@@ -1,26 +1,13 @@
#!/bin/bash #!/bin/bash
# --- SYSTEM STARTUP LOGGING ---
echo "==========================================" >> /home/shaan/startup.log
echo "Starting local AI and Media stacks: $(date)" >> /home/shaan/startup.log
echo "==========================================" >> /home/shaan/startup.log
# 1. Wait 15 seconds to ensure Docker daemon and network layers are completely awake
sleep 15 sleep 15
# 2. Launch your Primary Stack (Homarr, Radarr, Sonarr, qBit, Cloudflared)
echo "Spinning up Primary Media Stack..." >> /home/shaan/torrent-stack/startup.log
cd /home/shaan/torrent-stack || exit cd /home/shaan/torrent-stack || exit
docker compose up -d gluetun & sleep 90 >> /home/shaan/torrent-stack/startup.log 2>&1 docker compose up -d gluetun & sleep 90
docker compose up -d docker compose up -d
# 3. Small buffer to allow the primary network to mesh
sleep 5 sleep 5
# 4. Launch Odysseus
echo "Spinning up Odysseus Stack..." >> /home/shaan/torrent-stack/startup.log
cd /home/shaan/torrent-stack/odysseus || exit cd /home/shaan/torrent-stack/odysseus || exit
git pull . dev git pull . dev
docker compose up -d >> /home/shaan/torrent-stack/startup.log 2>&1 docker compose pull
docker compose up -d
echo "All services initiated successfully at $(date)" >> /home/shaan/torrent-stack/startup.log