Files
Dashboard/config.js
2025-12-27 03:34:59 +00:00

107 lines
6.6 KiB
JavaScript

/**
* Dashboard Configuration
*
* Edit this file to customize your dashboard!
* Add, remove, or modify services as needed.
*/
const DASHBOARD_CONFIG = {
// Dashboard branding
title: "Home Dashboard",
subtitle: "Your self-hosted services at a glance",
// Status check settings
enableStatusCheck: true, // Set to false to disable status checking
statusCheckInterval: 60000, // How often to check status (in milliseconds)
statusTimeout: 5000, // Timeout for status checks (in milliseconds)
// Quick Links - appear as buttons at the top
quickLinks: [
{ name: "Router", url: "http://192.168.1.1", icon: "🌐" },
{ name: "Speed Test", url: "https://fast.com", icon: "⚡" },
{ name: "GitHub", url: "https://github.com/kiyreload27", icon: "💻" }
],
// Your services - organize by category!
// Categories: media, network, storage, automation, security, monitoring, development, other
services: [
// === MEDIA ===
{
name: "Plex",
description: "Stream your personal media library anywhere",
url: "http://192.168.1.196:32400/web",
icon: "plex",
color: "orange",
category: "media"
},
{
name: "Jellyfin",
description: "Free software media system - Plex alternative",
url: "http://localhost:8096",
icon: "jellyfin",
color: "purple",
category: "media"
},
// === NETWORK ===
// === STORAGE ===
{
name: "TrueNAS",
description: "Self-hosted cloud storage and Application Server",
url: "http://192.168.1.196",
icon: "trueNAS",
color: "blue",
category: "storage"
},
// === MONITORING ===
{
name: "Portainer",
description: "Docker container management and monitoring",
url: "http://localhost:9000",
icon: "portainer",
color: "cyan",
category: "monitoring"
}
]
};
/**
* Service Icons (SVG)
* Add custom icons for your services here
*/
const SERVICE_ICONS = {
plex: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M11.643 0H4.68l7.679 12L4.68 24h6.963L19.32 12 11.643 0z"/></svg>`,
pihole: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/></svg>`,
jellyfin: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 2.182a9.818 9.818 0 110 19.636 9.818 9.818 0 010-19.636zm0 3.273a6.545 6.545 0 100 13.09 6.545 6.545 0 000-13.09zm0 2.181a4.364 4.364 0 110 8.728 4.364 4.364 0 010-8.728z"/></svg>`,
sonarr: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-2-5.5l6-4.5-6-4.5v9z"/></svg>`,
radarr: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z"/></svg>`,
homeassistant: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12.002 0a1.5 1.5 0 0 0-1.041.426L.453 10.29a.75.75 0 0 0 .5 1.312h1.545V21.75A2.252 2.252 0 0 0 4.75 24h14.5a2.252 2.252 0 0 0 2.252-2.25V11.602h1.545a.75.75 0 0 0 .5-1.312L13.04.426A1.5 1.5 0 0 0 12.002 0zm-.002 4.406l6.375 5.814v11.28H5.627V10.22L12 4.406zm0 4.669a3.375 3.375 0 1 0 0 6.75 3.375 3.375 0 0 0 0-6.75z"/></svg>`,
portainer: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12.504 0c-.155 0-.31.005-.465.015A10.488 10.488 0 002.09 9.053a10.49 10.49 0 00-.504 3.2c0 5.799 4.701 10.5 10.5 10.5s10.5-4.701 10.5-10.5S18.303 0 12.504 0zm0 2.004a8.496 8.496 0 018.496 8.496 8.496 8.496 0 01-8.496 8.496 8.496 8.496 0 01-8.496-8.496 8.496 8.496 0 018.496-8.496zM8.25 7.5v9h1.5V12h4.5v4.5h1.5v-9h-1.5V10.5h-4.5V7.5z"/></svg>`,
nextcloud: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12.018 6.537c-2.5 0-4.6 1.712-5.241 4.015-.56-.341-1.21-.534-1.9-.534-2.009 0-3.638 1.629-3.638 3.638s1.629 3.638 3.638 3.638c.54 0 1.054-.119 1.517-.329.74 1.468 2.272 2.48 4.037 2.48 1.684 0 3.158-.923 3.943-2.287.694.267 1.456.414 2.257.414 3.439 0 6.228-2.789 6.228-6.228s-2.789-6.228-6.228-6.228c-.91 0-1.774.195-2.553.546-.78-1.636-2.444-2.765-4.36-2.765-1.873 0-3.503 1.07-4.313 2.632a5.19 5.19 0 0 1 1.613-.355z"/></svg>`,
grafana: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M22.5 12c0 5.799-4.701 10.5-10.5 10.5S1.5 17.799 1.5 12 6.201 1.5 12 1.5 22.5 6.201 22.5 12zm-2.437-2.062l-.007-.058a.58.58 0 0 0-.574-.505h-.031c-.188 0-.35.094-.451.234a7.44 7.44 0 0 0-.78-.558l.004-.023a.58.58 0 0 0-.574-.505c-.32 0-.58.26-.58.58 0 .03.006.056.01.084a7.547 7.547 0 0 0-4.08-1.187c-4.125 0-7.5 3.375-7.5 7.5s3.375 7.5 7.5 7.5 7.5-3.375 7.5-7.5c0-.878-.155-1.72-.434-2.505h-.003z"/></svg>`,
transmission: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-6v-4l3.5 2-3.5 2z"/></svg>`,
vpn: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>`,
nginx: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 0L1.605 6v12L12 24l10.395-6V6L12 0zm0 2.311l8.211 4.742v9.494L12 21.289l-8.211-4.742V7.053L12 2.311zm0 3.936L7.342 9.165v5.67L12 17.753l4.658-2.918v-5.67L12 6.247z"/></svg>`,
trueNAS: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2L2 7v10l10 5 10-5V7L12 2zm0 2.18l6.9 3.45L12 11.08 5.1 7.63 12 4.18zM4 8.82l7 3.5v7.36l-7-3.5V8.82zm9 10.86v-7.36l7-3.5v7.36l-7 3.5z"/></svg>`,
unraid: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 4.5a7.5 7.5 0 1 1 0 15 7.5 7.5 0 0 1 0-15z"/></svg>`,
proxmox: `<svg viewBox="0 0 24 24" fill="currentColor"><path d="M2 3h8v8H2V3zm12 0h8v8h-8V3zM2 13h8v8H2v-8zm12 0h8v8h-8v-8z"/></svg>`,
default: `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M9 9h6v6H9z"/></svg>`
};