Initial commit of Dynacat config, assets, and rules
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# Workspace Agent Rules
|
||||
|
||||
These rules help AI assistants working in this repository understand the project context, infrastructure setup, and how to perform deployments to the hosting server.
|
||||
|
||||
## Infrastructure & Host Info
|
||||
- **Host Server IP:** `192.168.1.35` (Proxmox VE Host, accessed via SSH as `root`)
|
||||
- **Service Container ID (LXC):** `103` (Dynacat Service container)
|
||||
- **Container Application Directory:** `/opt/dynacat`
|
||||
- **Container Config Path:** `/opt/dynacat/config/dynacat.yml`
|
||||
- **Container Assets Path:** `/opt/dynacat/assets/`
|
||||
|
||||
## Deployment & Syncing Commands
|
||||
|
||||
Always run these commands from the local workspace root (`c:\Users\mario\OneDrive\Documents\Antigravity\Dynacat`) when changes are made locally. Do not ask for user permission to run these commands, just run them proactively.
|
||||
|
||||
### 1. Deploy Configuration (`dynacat.yml`)
|
||||
Upload the local configuration file to the Proxmox host `/tmp` directory, push it into the LXC container, and restart the `dynacat` systemd service:
|
||||
```powershell
|
||||
scp config/dynacat.yml root@192.168.1.35:/tmp/dynacat.yml
|
||||
ssh root@192.168.1.35 "pct push 103 /tmp/dynacat.yml /opt/dynacat/config/dynacat.yml; pct exec 103 systemctl restart dynacat"
|
||||
```
|
||||
|
||||
### 2. Deploy Assets (e.g. `news.html`, custom themes, SVGs)
|
||||
When adding or updating assets, use similar scp/push commands (no restart is needed for simple asset/HTML updates):
|
||||
```powershell
|
||||
scp assets/news.html root@192.168.1.35:/tmp/news.html
|
||||
ssh root@192.168.1.35 "pct push 103 /tmp/news.html /opt/dynacat/assets/news.html"
|
||||
```
|
||||
@@ -0,0 +1,87 @@
|
||||
# Dynacat Proxmox Homelab Dashboard Setup
|
||||
|
||||
This directory contains pre-configured files to deploy and customize the **Dynacat** dashboard (a real-time, self-hosted feed and service aggregator) for your homelab.
|
||||
|
||||
## File Structure
|
||||
|
||||
- `config/dynacat.yml`: The main configuration file, styled in a custom dark HSL theme and pre-loaded with all your 14 active homelab services.
|
||||
- `assets/news.html`: A custom, Google-News-style news portal that aggregates your RSS feeds into a visual card grid.
|
||||
- `docker-compose.yml`: A compose template for deploying Dynacat in a Docker environment (such as a Docker-enabled VM or LXC).
|
||||
|
||||
---
|
||||
|
||||
## How to Apply to Your Proxmox Setup
|
||||
|
||||
Choose the installation method that matches how you deployed Dynacat:
|
||||
|
||||
### Option A: If using Proxmox LXC (Helper Script)
|
||||
If you installed Dynacat directly as an LXC container using a Proxmox VE Helper Script (e.g. from Community Scripts / tteck):
|
||||
|
||||
1. **Locate the Target Paths:** Inside the container, Dynacat looks for configuration and assets at:
|
||||
- Config file: `/opt/dynacat/config/dynacat.yml`
|
||||
- Assets folder: `/opt/dynacat/assets/news.html`
|
||||
2. **Transfer the Files:**
|
||||
You can copy the local files to your LXC container using SCP:
|
||||
```bash
|
||||
# Replace <LXC_IP> with the IP address of your Dynacat LXC (e.g. 192.168.1.146)
|
||||
# Copy the configuration file:
|
||||
scp config/dynacat.yml root@<LXC_IP>:/opt/dynacat/config/dynacat.yml
|
||||
|
||||
# Copy the news portal asset file:
|
||||
scp assets/news.html root@<LXC_IP>:/opt/dynacat/assets/news.html
|
||||
```
|
||||
*Alternatively*, you can edit the file directly inside the LXC container's terminal using `nano /opt/dynacat/config/dynacat.yml` and paste the contents of the generated `dynacat.yml`.
|
||||
3. **Apply Changes:**
|
||||
Dynacat supports **live config reloading** and will detect updates automatically upon saving. If you need to manually restart the service, run:
|
||||
```bash
|
||||
systemctl restart dynacat
|
||||
```
|
||||
4. **Set Up API Tokens (Inline Configuration):**
|
||||
Instead of setting systemd environment variables, you can input your API keys directly inside the `dynacat.yml` file on your server (by replacing `"your_grocy_token_here"`, etc.):
|
||||
* Edit the file on your server:
|
||||
```bash
|
||||
nano /opt/dynacat/config/dynacat.yml
|
||||
```
|
||||
* Replace the placeholder string values with your actual API keys/tokens.
|
||||
* Save and close the file. Dynacat will automatically pick up the new configuration!
|
||||
|
||||
---
|
||||
|
||||
### Option B: If using Docker Compose (VM or LXC with Docker)
|
||||
If you are running Dynacat inside a VM or LXC that runs Docker:
|
||||
|
||||
1. Copy both `docker-compose.yml` and the `config/` directory to your target folder on Proxmox.
|
||||
2. Spin up the container:
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
3. Open your browser and navigate to `http://<YOUR_DOCKER_HOST_IP>:8080`.
|
||||
|
||||
---
|
||||
|
||||
## Customization Guide
|
||||
|
||||
### 1. Weather Location
|
||||
Open `config/dynacat.yml` and locate the `weather` widget:
|
||||
```yaml
|
||||
- type: weather
|
||||
location: "La Crosse, Wisconsin" # Set to your location
|
||||
units: imperial # Change to 'metric' for Celsius
|
||||
```
|
||||
|
||||
### 2. Dashboard Icons
|
||||
We have pre-configured icons for your services using two libraries:
|
||||
- **Simple Icons (`si:`)**: High-quality vector icons for popular brands.
|
||||
- **Material Design Icons (`mdi:`)**: General icons (like gamepad, cloud, trash can).
|
||||
|
||||
Example of a custom link with an icon:
|
||||
```yaml
|
||||
- title: Audiobookshelf
|
||||
url: https://books.jonahlahona.com
|
||||
icon: si:audiobookshelf
|
||||
```
|
||||
You can search for more icons on:
|
||||
- Simple Icons: [simpleicons.org](https://simpleicons.org/)
|
||||
- Material Design Icons: [pictogrammers.com/library/mdi/](https://pictogrammers.com/library/mdi/)
|
||||
- Selfh.st Icons: `sh:<icon_name>` (e.g., `sh:immich`)
|
||||
- Dashboard Icons: `di:<icon_name>`
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="27.6 0.18 456.8 511.82"><path d="m416.4 512 68-.8-23.5-414s-45.7-37.7-126.8-45.3c-.4.5 2.8-28.9.8-33.6-1.7-4-32.6-20.2-82.3-17.9v10.5c22.8-.6 46.3 2.4 56.3 7.4 4.7 2.4 5.3 12.8.9 16-4.6 3.3-40.3 1.7-40.3 1.7l-4.2 444.3s79.3-5.8 111.7-26.9c-.6.3 0-70.5 0-70.5l-44.5 9.2-.8-16.8 46.2-7.6 2.5-93.2s8-6.7 16.8-.8c-.3.8 19.2 238.3 19.2 238.3"/><path d="m95.6 512-68-.8 23.5-414s45.7-37.7 126.8-45.3c.4.5-2.8-28.9-.9-33.6 1.7-4 32.6-20.2 82.3-17.9v10.5c-22.8-.6-46.3 2.4-56.3 7.4-4.7 2.4-5.3 12.8-.8 16 4.6 3.3 40.3 1.7 40.3 1.7l4.2 444.3s-79.3-5.8-111.7-26.9c.6.3 0-70.5 0-70.5l44.5 9.2.8-16.8-46.2-7.6-2.5-93.2s-8-6.7-16.8-.8c.3.8-19.2 238.3-19.2 238.3"/></svg>
|
||||
|
After Width: | Height: | Size: 727 B |
@@ -0,0 +1,111 @@
|
||||
/* Override the default-dark theme (the middle option) with Jonahlahona colors */
|
||||
html[data-theme="default-dark"] {
|
||||
--bgh: 0 !important;
|
||||
--bgs: 39% !important;
|
||||
--bgl: 8% !important;
|
||||
|
||||
--color-primary: #5d4646 !important;
|
||||
--color-negative: #cdbcbc !important;
|
||||
--color-positive: hsl(145, 63%, 42%) !important;
|
||||
}
|
||||
|
||||
/* Add custom gradients to the whole dashboard when this theme is active */
|
||||
html[data-theme="default-dark"] body {
|
||||
background: radial-gradient(circle at top left, #281111 0%, #0d0505 100%) !important;
|
||||
color: #cdbcbc !important;
|
||||
}
|
||||
|
||||
/* Card backgrounds */
|
||||
html[data-theme="default-dark"] .box,
|
||||
html[data-theme="default-dark"] .panel,
|
||||
html[data-theme="default-dark"] .card {
|
||||
background: linear-gradient(145deg, #1b0d0d 0%, #0c0505 100%) !important;
|
||||
border-color: #3a2221 !important;
|
||||
}
|
||||
|
||||
/* Update the Theme Picker preview colors to show our custom colors! */
|
||||
.theme-preset[data-key="default-dark"] {
|
||||
--color: #0d0505 !important;
|
||||
}
|
||||
.theme-preset[data-key="default-dark"] .theme-color:nth-child(1) {
|
||||
--color: #5d4646 !important;
|
||||
}
|
||||
.theme-preset[data-key="default-dark"] .theme-color:nth-child(2) {
|
||||
--color: #5d4646 !important;
|
||||
}
|
||||
.theme-preset[data-key="default-dark"] .theme-color:nth-child(3) {
|
||||
--color: #cdbcbc !important;
|
||||
}
|
||||
|
||||
/* ============================================================================
|
||||
UI Spacing & Layout Compaction
|
||||
============================================================================ */
|
||||
:root {
|
||||
--widget-gap: 12px !important;
|
||||
--widget-content-vertical-padding: 8px !important;
|
||||
--widget-content-horizontal-padding: 12px !important;
|
||||
--border-radius: 4px !important;
|
||||
--content-bounds-padding: 10px !important;
|
||||
|
||||
/* Tighter text scale */
|
||||
--font-size-h1: 1.65rem !important;
|
||||
--font-size-h2: 1.55rem !important;
|
||||
--font-size-h3: 1.45rem !important;
|
||||
--font-size-h4: 1.35rem !important;
|
||||
--font-size-base: 1.28rem !important;
|
||||
--font-size-h5: 1.18rem !important;
|
||||
--font-size-h6: 1.08rem !important;
|
||||
}
|
||||
|
||||
/* Compact header and tabs */
|
||||
.header-container {
|
||||
--header-height: 38px !important;
|
||||
--header-items-gap: 1.5rem !important;
|
||||
}
|
||||
|
||||
/* Tighter search input box */
|
||||
.search-input {
|
||||
height: 4.2rem !important;
|
||||
}
|
||||
|
||||
/* Compact spacing between bookmark list items */
|
||||
.bookmarks-group .list > *:not(:first-child) {
|
||||
margin-top: 3px !important;
|
||||
}
|
||||
|
||||
/* Compact bookmark icon sizing and background padding */
|
||||
.bookmarks-icon-container {
|
||||
padding: 0.35rem !important;
|
||||
}
|
||||
.bookmarks-icon {
|
||||
width: 16px !important;
|
||||
height: 16px !important;
|
||||
}
|
||||
|
||||
/* Tighter grid for bookmark groups */
|
||||
.dynamic-columns {
|
||||
gap: 10px 15px !important;
|
||||
}
|
||||
|
||||
/* Tighter margin below card headers */
|
||||
.widget-header {
|
||||
margin-bottom: 0.5rem !important;
|
||||
}
|
||||
|
||||
/* Compact calendar spacing */
|
||||
.calendar-dates {
|
||||
gap: 1px !important;
|
||||
}
|
||||
.calendar-date {
|
||||
padding: 0.2rem 0 !important;
|
||||
}
|
||||
.old-calendar-day {
|
||||
padding: 0.3rem 0 !important;
|
||||
}
|
||||
|
||||
/* Compact server stats block margin */
|
||||
.server-stats {
|
||||
margin-top: 0.25rem !important;
|
||||
gap: 1rem !important;
|
||||
}
|
||||
|
||||
+1210
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,379 @@
|
||||
# ==============================================================================
|
||||
# Dynacat Homelab Dashboard Configuration
|
||||
# ==============================================================================
|
||||
# Place this file at: /opt/dynacat/config/dynacat.yml
|
||||
# ==============================================================================
|
||||
|
||||
server:
|
||||
host: 0.0.0.0
|
||||
port: 8080
|
||||
assets-path: /opt/dynacat/assets
|
||||
db-path: /opt/dynacat/data/dynacat.db
|
||||
|
||||
theme:
|
||||
background-color: 50 1 6
|
||||
primary-color: 24 97 58
|
||||
negative-color: 209 88 54
|
||||
custom-css-file: /assets/jonah-theme.css
|
||||
|
||||
pages:
|
||||
# ============================================================================
|
||||
# PAGE 1: NAVIGATOR & BOOKMARKS (Restructured to 3 columns using split layout)
|
||||
# ============================================================================
|
||||
- name: Home
|
||||
columns:
|
||||
# Column 1: Calendar, Weather, and Wastebin
|
||||
- size: small
|
||||
widgets:
|
||||
- type: calendar
|
||||
first-day-of-week: sunday
|
||||
|
||||
- type: weather
|
||||
location: "La Crosse"
|
||||
units: imperial
|
||||
|
||||
- type: iframe
|
||||
title: "📝 Wastebin Quick Paste"
|
||||
source: "https://scratch.jonahlahona.com"
|
||||
height: 250
|
||||
|
||||
# Column 2: Search and Bookmarks
|
||||
- size: full
|
||||
widgets:
|
||||
- type: search
|
||||
autofocus: true
|
||||
placeholder: Search...
|
||||
search-engine: google
|
||||
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: split-column
|
||||
max-columns: 2
|
||||
widgets:
|
||||
- type: bookmarks
|
||||
groups:
|
||||
- title: 🌐 Core Infrastructure
|
||||
links:
|
||||
- title: Proxmox VE
|
||||
url: https://192.168.1.35:8006
|
||||
icon: si:proxmox
|
||||
same-tab: true
|
||||
- title: NGINX Proxy Manager
|
||||
url: http://192.168.1.44:81
|
||||
icon: si:nginx
|
||||
same-tab: true
|
||||
- title: Home Assistant
|
||||
url: https://6avbbjjhs3egemnj8kibuebv2bo7qr2q.ui.nabu.casa/
|
||||
icon: si:homeassistant
|
||||
same-tab: true
|
||||
- title: Pi-hole
|
||||
url: http://192.168.1.37/admin
|
||||
icon: si:pihole
|
||||
same-tab: true
|
||||
|
||||
- title: 📚 Media & Entertainment
|
||||
links:
|
||||
- title: Audiobookshelf
|
||||
url: https://books.jonahlahona.com
|
||||
icon: si:audiobookshelf
|
||||
same-tab: true
|
||||
- title: RomM (Retro ROMs)
|
||||
url: https://retro.jonahlahona.com
|
||||
icon: mdi:controller-classic
|
||||
same-tab: true
|
||||
- title: Pixelfed
|
||||
url: https://family.jonahlahona.com
|
||||
icon: si:pixelfed
|
||||
same-tab: true
|
||||
- title: Jackett
|
||||
url: http://192.168.1.93:9117
|
||||
icon: /assets/jackett.svg
|
||||
same-tab: true
|
||||
|
||||
- title: 🎮 Gaming
|
||||
links:
|
||||
- title: AMP Game Panel
|
||||
url: https://game.jonahlahona.com
|
||||
icon: mdi:gamepad-variant
|
||||
same-tab: true
|
||||
|
||||
- title: 📁 Files & Storage
|
||||
links:
|
||||
- title: OxiCloud
|
||||
url: https://file.jonahlahona.com
|
||||
icon: mdi:cloud
|
||||
same-tab: true
|
||||
- title: Gitea
|
||||
url: https://git.jonahlahona.com
|
||||
icon: si:gitea
|
||||
same-tab: true
|
||||
|
||||
- type: bookmarks
|
||||
groups:
|
||||
- title: 🛠️ Utilities & Pantry
|
||||
links:
|
||||
- title: Grocy Pantry
|
||||
url: https://pantry.jonahlahona.com
|
||||
icon: mdi:food-apple
|
||||
same-tab: true
|
||||
- title: KaraKeep Notes
|
||||
url: https://keep.jonahlahona.com
|
||||
icon: si:googlekeep
|
||||
same-tab: true
|
||||
- title: Vaultwarden
|
||||
url: https://key.jonahlahona.com
|
||||
icon: si:vaultwarden
|
||||
same-tab: true
|
||||
- title: Zipline Uploads
|
||||
url: https://zip.jonahlahona.com
|
||||
icon: si:sharex
|
||||
same-tab: true
|
||||
- title: Wastebin Paste
|
||||
url: https://scratch.jonahlahona.com
|
||||
icon: mdi:trash-can-outline
|
||||
same-tab: true
|
||||
- title: MyIP
|
||||
url: http://192.168.1.168:11966
|
||||
icon: mdi:ip-network
|
||||
same-tab: true
|
||||
- title: Transmute Converter
|
||||
url: https://convert.jonahlahona.com
|
||||
icon: mdi:swap-horizontal
|
||||
same-tab: true
|
||||
|
||||
- title: 🌐 Web & Social
|
||||
links:
|
||||
- title: YouTube
|
||||
url: https://www.youtube.com
|
||||
icon: si:youtube
|
||||
same-tab: true
|
||||
- title: Reddit
|
||||
url: https://www.reddit.com
|
||||
icon: si:reddit
|
||||
same-tab: true
|
||||
- title: Twitter / X
|
||||
url: https://x.com
|
||||
icon: si:x
|
||||
same-tab: true
|
||||
- title: Gmail
|
||||
url: https://mail.google.com
|
||||
icon: si:gmail
|
||||
same-tab: true
|
||||
- title: Google Keep
|
||||
url: https://keep.google.com
|
||||
icon: si:googlekeep
|
||||
same-tab: true
|
||||
- title: Google Gemini
|
||||
url: https://gemini.google.com
|
||||
icon: si:googlegemini
|
||||
same-tab: true
|
||||
- title: Humble Bundle
|
||||
url: https://www.humblebundle.com
|
||||
icon: si:humblebundle
|
||||
same-tab: true
|
||||
- title: Mega.nz
|
||||
url: https://mega.nz
|
||||
icon: si:mega
|
||||
same-tab: true
|
||||
- title: Associated Bank
|
||||
url: https://www.associatedbank.com
|
||||
icon: mdi:bank
|
||||
same-tab: true
|
||||
|
||||
# Column 3: Information Feeds
|
||||
- size: small
|
||||
widgets:
|
||||
# - type: iframe
|
||||
# title: "⚙️ LXC Container Controls"
|
||||
# source: "https://6avbbjjhs3egemnj8kibuebv2bo7qr2q.ui.nabu.casa/lovelace-lxc/default_view?kiosk"
|
||||
# height: 280
|
||||
|
||||
- type: rss
|
||||
title: Tech News
|
||||
limit: 10
|
||||
animate: true
|
||||
feeds:
|
||||
- url: https://selfh.st/rss/
|
||||
title: Selfh.st
|
||||
- url: https://www.howtogeek.com/feed/news/
|
||||
title: How-To Geek
|
||||
- url: https://www.xda-developers.com/feed/news/
|
||||
title: XDA Developers
|
||||
- url: https://www.makeuseof.com/feed/category/news/
|
||||
title: MakeUseOf
|
||||
- url: https://hackaday.com/blog/feed/
|
||||
title: Hackaday
|
||||
|
||||
|
||||
- type: rss
|
||||
title: World & US News
|
||||
limit: 12
|
||||
animate: true
|
||||
feeds:
|
||||
- url: https://feeds.bbci.co.uk/news/world/rss.xml
|
||||
title: BBC World News
|
||||
- url: https://feeds.npr.org/1001/rss.xml
|
||||
title: NPR News
|
||||
- url: https://feeds.reuters.com/reuters/topNews
|
||||
title: Reuters
|
||||
- url: https://feeds.npr.org/1014/rss.xml
|
||||
title: NPR Politics
|
||||
- url: https://thehill.com/rss/syndicator/19109
|
||||
title: The Hill
|
||||
|
||||
# ============================================================================
|
||||
# PAGE 2: APPLICATION ANALYTICS & MONITORING
|
||||
# ============================================================================
|
||||
- name: Status & Analytics
|
||||
columns:
|
||||
# Left Column: Storage & Pantry Stats
|
||||
- size: small
|
||||
widgets:
|
||||
# Grocy API Stats
|
||||
- type: custom-api
|
||||
title: "🛒 Grocy Pantry Overview"
|
||||
url: "https://pantry.jonahlahona.com/api/chores"
|
||||
cache: 5m
|
||||
headers:
|
||||
GROCY-API-KEY: "your_grocy_token_here"
|
||||
template: |
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="flex justify-between">
|
||||
<span class="color-subdue">Chores Configured:</span>
|
||||
<span class="weight-semibold">{{ len .JSON }}</span>
|
||||
</div>
|
||||
<div class="color-subdue text-sm">
|
||||
Generate tokens in Grocy under Settings ➔ Manage API keys.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
# Zipline API Stats
|
||||
- type: custom-api
|
||||
title: "📁 Zipline Upload Stats"
|
||||
url: "https://zip.jonahlahona.com/api/user/statistics"
|
||||
cache: 10m
|
||||
headers:
|
||||
authorization: "your_zipline_token_here"
|
||||
template: |
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="flex justify-between">
|
||||
<span class="color-subdue">Total Uploads:</span>
|
||||
<span class="weight-semibold">{{ .JSON.Int "uploads" }}</span>
|
||||
</div>
|
||||
<div class="flex justify-between">
|
||||
<span class="color-subdue">Storage Used:</span>
|
||||
<span class="weight-semibold">{{ .JSON.String "size" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
# Middle Column: Active Media & Game Servers
|
||||
- size: full
|
||||
widgets:
|
||||
# Audiobookshelf API Stats
|
||||
- type: custom-api
|
||||
title: "📚 Audiobookshelf Sessions"
|
||||
url: "https://books.jonahlahona.com/api/activity"
|
||||
cache: 30s
|
||||
headers:
|
||||
Authorization: "Bearer your_audiobookshelf_token_here"
|
||||
template: |
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="weight-semibold text-sm">Active Listening Stream:</div>
|
||||
<ul class="list">
|
||||
{{ range .JSON.Array "activities" }}
|
||||
<li class="flex justify-between items-center py-1">
|
||||
<span>{{ .String "description" }}</span>
|
||||
<span class="color-subdue text-xs">{{ .String "time" }}</span>
|
||||
</li>
|
||||
{{ else }}
|
||||
<li class="color-subdue py-1 text-center">No active listeners</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
# AMP Game Server Monitor
|
||||
- type: custom-api
|
||||
title: "🎮 AMP Game Servers"
|
||||
url: "https://game.jonahlahona.com/api/Core/GetAPISpec"
|
||||
cache: 1m
|
||||
template: |
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="flex justify-between">
|
||||
<span class="color-subdue">Status:</span>
|
||||
<span class="color-green weight-semibold">Online</span>
|
||||
</div>
|
||||
<div class="flex justify-between">
|
||||
<span class="color-subdue">Active Instances:</span>
|
||||
<span>Configured via AMP Console</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
# Right Column: Server Stats, Retro Gaming & Proxmox Health
|
||||
- size: small
|
||||
widgets:
|
||||
- type: server-stats
|
||||
servers:
|
||||
- type: local
|
||||
name: Dynacat LXC
|
||||
|
||||
# RomM API Stats
|
||||
- type: custom-api
|
||||
title: "🕹️ RomM Library Metrics"
|
||||
url: "https://retro.jonahlahona.com/api/v1/games/stats"
|
||||
cache: 10m
|
||||
headers:
|
||||
Authorization: "Bearer your_romm_token_here"
|
||||
template: |
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="flex justify-between">
|
||||
<span class="color-subdue">Total Games:</span>
|
||||
<span class="weight-semibold">{{ .JSON.Int "total" }}</span>
|
||||
</div>
|
||||
<div class="flex justify-between">
|
||||
<span class="color-subdue">Platforms:</span>
|
||||
<span>{{ .JSON.Int "platforms" }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
# # Home Assistant - Proxmox LXC Health Check
|
||||
# - type: custom-api
|
||||
# title: "🔌 Proxmox LXC Memory"
|
||||
# url: "https://6avbbjjhs3egemnj8kibuebv2bo7qr2q.ui.nabu.casa/api/states/sensor.proxmox_lxc_audiobookshelf_memory_usage"
|
||||
# cache: 1m
|
||||
# headers:
|
||||
# Authorization: "Bearer your_home_assistant_token_here"
|
||||
# template: |
|
||||
# <div class="flex flex-col gap-2">
|
||||
# <div class="flex justify-between">
|
||||
# <span class="color-subdue">Audiobookshelf Memory:</span>
|
||||
# <span class="weight-semibold">{{ .JSON.String "state" }}%</span>
|
||||
# </div>
|
||||
# <div class="color-subdue text-xs">
|
||||
# Uses Home Assistant variables.
|
||||
# </div>
|
||||
# </div>
|
||||
|
||||
# Pi-hole Ad-blocking Stats
|
||||
- type: dns-stats
|
||||
title: "🛡️ Pi-hole Stats"
|
||||
service: pihole
|
||||
url: "http://192.168.1.37"
|
||||
token: "your_pihole_token_here"
|
||||
|
||||
# ============================================================================
|
||||
# PAGE 3: PORTAL NEWS
|
||||
# ============================================================================
|
||||
- name: News
|
||||
columns:
|
||||
- size: full
|
||||
widgets:
|
||||
- type: iframe
|
||||
title: "📰 Tech News Portal"
|
||||
source: "/assets/news.html?v=10"
|
||||
height: 720
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
dynacat:
|
||||
image: panonim/dynacat:latest
|
||||
container_name: dynacat
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- GROCY_API_TOKEN=${GROCY_API_TOKEN}
|
||||
- ZIPLINE_API_TOKEN=${ZIPLINE_API_TOKEN}
|
||||
- AUDIOBOOKSHELF_API_TOKEN=${AUDIOBOOKSHELF_API_TOKEN}
|
||||
- ROMM_API_TOKEN=${ROMM_API_TOKEN}
|
||||
- HA_LONG_LIVED_TOKEN=${HA_LONG_LIVED_TOKEN}
|
||||
volumes:
|
||||
- ./config:/app/config:rw
|
||||
- ./assets:/app/assets:rw
|
||||
Reference in New Issue
Block a user