From 3b4f2728d15102885ec74e4355cda63f421e9ef4 Mon Sep 17 00:00:00 2001 From: Lucas Conrad Date: Sun, 7 Jun 2026 21:42:44 +0200 Subject: [PATCH] feat: track homepage configurations via gitops --- docker/data/homepage/custom.css | 94 ++++++++++++++++++++++++ docker/data/homepage/services.yaml | 112 +++++++++++++++++++++++++++++ docker/data/homepage/widgets.yaml | 7 ++ site.yml | 11 +++ 4 files changed, 224 insertions(+) create mode 100644 docker/data/homepage/custom.css create mode 100644 docker/data/homepage/services.yaml create mode 100644 docker/data/homepage/widgets.yaml diff --git a/docker/data/homepage/custom.css b/docker/data/homepage/custom.css new file mode 100644 index 0000000..c8cddee --- /dev/null +++ b/docker/data/homepage/custom.css @@ -0,0 +1,94 @@ +/* --- Root Containers & Background Pattern --- */ +html, body, #__next, main { + background-color: #050510 !important; + background-image: + linear-gradient(rgba(0, 243, 255, 0.03) 1px, transparent 1px), + linear-gradient(90deg, rgba(0, 243, 255, 0.03) 1px, transparent 1px) !important; + background-size: 30px 30px !important; + color: #e0eaff !important; + font-family: 'Consolas', 'Monaco', monospace !important; +} + +/* --- Force Card Backgrounds and Preflight Border Bypass --- */ +.group { + background-color: rgba(10, 5, 20, 0.85) !important; + border-style: solid !important; + border-width: 1px !important; + border-color: #4d0099 !important; + border-left-width: 4px !important; + border-left-color: #b026ff !important; + box-shadow: 0 0 10px rgba(176, 38, 255, 0.3), inset 0 0 15px rgba(176, 38, 255, 0.1) !important; + backdrop-filter: blur(5px) !important; + border-radius: 4px !important; + transition: all 0.2s ease !important; +} + +.group:hover { + background-color: rgba(15, 10, 35, 0.95) !important; + border-color: #00f3ff !important; + border-left-color: #00f3ff !important; + box-shadow: 0 0 20px rgba(0, 243, 255, 0.6), inset 0 0 10px rgba(0, 243, 255, 0.2) !important; + transform: translateY(-2px) !important; +} + +/* --- Correct Category Header Colors (Cyan) --- */ +h2 { + color: #00f3ff !important; + text-shadow: 0 0 8px rgba(0, 243, 255, 0.5) !important; + text-transform: uppercase !important; + letter-spacing: 3px !important; + font-weight: 900 !important; +} + +/* --- Correct Service Title Colors --- */ +.group .truncate, .group div.font-medium, .group .text-sm.font-medium { + color: #e0eaff !important; + text-transform: uppercase !important; + letter-spacing: 2px !important; + text-shadow: 0 0 4px rgba(224, 234, 255, 0.3) !important; + transition: all 0.2s ease !important; +} + +/* --- Service Title Hover Colors (Cyan) --- */ +.group:hover .truncate, .group:hover div.font-medium, .group:hover .text-sm.font-medium { + color: #00f3ff !important; + text-shadow: 0 0 8px rgba(0, 243, 255, 0.6) !important; +} + +/* --- Subtitles, API Stats, and Descriptions --- */ +.text-xs, p { + color: #b026ff !important; + font-family: 'Consolas', 'Monaco', monospace !important; + text-transform: uppercase !important; + letter-spacing: 1px !important; +} + +/* --- Ping & Metric Highlights --- */ +.text-green-500, .dark\:text-green-500 { + color: #00f3ff !important; + text-shadow: 0 0 6px rgba(0, 243, 255, 0.6) !important; +} + +.text-red-500, .dark\:text-red-500 { + color: #ff003c !important; + text-shadow: 0 0 6px rgba(255, 0, 60, 0.6) !important; +} + +/* --- Icons --- */ +.group img, .group svg { + filter: drop-shadow(0 0 6px rgba(176, 38, 255, 0.7)) !important; + transition: all 0.2s ease !important; +} + +.group:hover img, .group:hover svg { + filter: drop-shadow(0 0 8px rgba(0, 243, 255, 0.9)) !important; +} + +/* --- Top Resource Bar --- */ +header { + border-bottom-style: dashed !important; + border-bottom-width: 1px !important; + border-bottom-color: #b026ff !important; + padding-bottom: 1rem !important; + box-shadow: 0 4px 10px -4px rgba(176, 38, 255, 0.3) !important; +} diff --git a/docker/data/homepage/services.yaml b/docker/data/homepage/services.yaml new file mode 100644 index 0000000..5eaac75 --- /dev/null +++ b/docker/data/homepage/services.yaml @@ -0,0 +1,112 @@ +--- +- Media Stack: + - Jellyfin: + icon: jellyfin.png + href: http://jellyfin.kotori-waifu + description: Media Server + ping: http://10.0.10.68:8096 + widget: + type: jellyfin + url: http://10.0.10.68:8096 + key: d2c89d58582848ee8060b7c8efb3f737 + + - Jellyseerr: + icon: jellyseerr.png + href: http://jellyseer.kotori-waifu + description: Media Requests + ping: http://10.0.10.68:5055 + widget: + type: jellyseerr + url: http://10.0.10.68:5055 + key: MTc2NjM1MjE3MzMxMmI2MDAzZWE2LTA5NzgtNGM1MC1hNzhiLTZkN2Q2Nzk5OTBmMA== + + - Komga: + icon: komga.png + href: http://goon.kotori-waifu + description: Anime Tiddies + ping: http://10.0.10.68:25600 + + - Immich: + icon: immich.png + href: http://immich.kotori-waifu + description: Images goes brrr + ping: http://10.0.10.68:2283 + +- Automation: + - Radarr: + icon: radarr.png + href: http://radarr.kotori-waifu + description: Movie Management + ping: http://10.0.10.68:7878 + widget: + type: radarr + url: http://10.0.10.68:7878 + key: 9c6c8a8ef92d4ae0a6ee34199eba11b1 + + - Sonarr: + icon: sonarr.png + href: http://sonarr.kotori-waifu + description: TV Management + ping: http://10.0.10.68:8989 + widget: + type: sonarr + url: http://10.0.10.68:8989 + key: 6de4f7c23caf44179f4b2579e45bedde + + - Prowlarr: + icon: prowlarr.png + href: http://prowlarr.kotori-waifu + description: Indexer Manager + ping: http://10.0.10.68:9696 + widget: + type: prowlarr + url: http://10.0.10.68:9696 + key: c857220020274408b1786836f8eeba6c + + - qBittorrent: + icon: qbittorrent.png + href: http://torrent.kotori-waifu + description: Download Client + ping: http://10.0.10.68:8080 + widget: + type: qbittorrent + url: http://10.0.10.68:8080 + username: admin + password: "#Kotowaifu13" + +- Infrastructure: + - Firewall: + icon: opnsense.png + href: http://firewall.kotori-waifu + description: Gateway + ping: http://10.0.0.1:80 + + - NAS: + icon: truenas.png + href: http://kotorinas.kotori-waifu + description: Storage Array + ping: http://10.0.10.69:80 + + - BookStack: + icon: bookstack.png + href: http://bookstack.kotori-waifu + description: Knowledge Base + ping: http://10.0.10.68:6875 + + - Grafana: + icon: grafana.png + href: http://grafana.kotori-waifu + description: Telemetry Visualization + ping: http://10.0.10.68:3001 + + - Mealie: + icon: mealie.png + href: http://mealie.kotori-waifu + description: Meal Planning + ping: http://10.0.10.68:9925 + + - Code: + icon: code.png + href: http://code.kotori-waifu + description: Code + ping: http://10.0.10.68:8443 diff --git a/docker/data/homepage/widgets.yaml b/docker/data/homepage/widgets.yaml new file mode 100644 index 0000000..c52c6a9 --- /dev/null +++ b/docker/data/homepage/widgets.yaml @@ -0,0 +1,7 @@ +--- +- resources: + cpu: true + memory: true + disk: + - /app/config + - /mnt/nas diff --git a/site.yml b/site.yml index 0509cd0..49a9742 100644 --- a/site.yml +++ b/site.yml @@ -14,6 +14,17 @@ - "--exclude=.git" - "--exclude=.gitignore" + - name: Sync GitOps data to target machine + ansible.posix.synchronize: + src: "{{ playbook_dir }}/docker/data/" + dest: /opt/homelab/data/ + archive: yes + delete: no + recursive: yes + rsync_opts: + - "--exclude=.git" + - "--exclude=.gitignore" + - name: Identify all docker-compose stack directories ansible.builtin.find: paths: /opt/homelab/stacks