Compare commits

...

14 Commits

Author SHA1 Message Date
myron 791a64c683 Add Microsoft 365 admin center link to Vanguard Technology card 2026-07-27 11:56:26 -05:00
myron c69ee10156 Merge branch 'main' of https://github.com/myronblair/web-dashboard 2026-07-26 23:54:41 -05:00
myron 7bdf12a05c Add copyright notice 2026-07-26 23:54:14 -05:00
myron 9dd90f1274 Replace stale MediaStack repo link with kino-app (StreamHoard) 2026-07-26 16:07:34 -05:00
myron 11b8e4d939 Remove Jellyfin link - replaced by StreamHoard 2026-07-23 22:34:55 -05:00
myron 33ff8ce4b4 Point media stack links at consolidated StreamHoard host, add Portainer 2026-07-23 22:27:35 -05:00
myron 55cc3bbc26 Add StreamHoard media server link 2026-07-23 20:25:59 -05:00
myron d3fc0d2d09 Slightly reduce line-item title size 2026-07-21 18:59:26 -05:00
myron 1ec0f1edfc Make card section titles bolder and brighter to stand out 2026-07-21 18:57:19 -05:00
myron a9c48e08eb Make dashboard grid full page width 2026-07-21 18:49:42 -05:00
myron 72e1e43a24 Switch dashboard grid to masonry-style columns for adjustable card heights 2026-07-21 18:45:20 -05:00
myron d6a1d93b4b Home Assistant external link: use web.orbishosting.com instead of hoa.orbishosting.com 2026-07-12 16:28:34 -05:00
myron 8bd13f5caf Fix Home Assistant external link: http not https, add port 8123 2026-07-12 16:21:31 -05:00
Claude 5242cd8867 Add Install Commands card: copy-to-clipboard JARVIS agent + FusionPBX installer one-liners
Both are plain text buttons (not links) so they never navigate/click through, just copy to clipboard. JARVIS command intentionally omits the registration key (site is password-protected, but kept the same interactive-prompt pattern used for the public install scripts anyway) -- it prompts for the key when run.
2026-07-08 15:31:20 -05:00
2 changed files with 81 additions and 20 deletions
+1
View File
@@ -0,0 +1 @@
Property of TomTom Enterprises.
+80 -20
View File
@@ -54,11 +54,9 @@
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1.25rem;
max-width: 1400px;
margin: 0 auto;
columns: 320px;
column-gap: 1.25rem;
width: 100%;
}
.card {
@@ -67,6 +65,8 @@
border-radius: var(--radius);
overflow: hidden;
transition: border-color 0.2s, transform 0.2s;
break-inside: avoid;
margin-bottom: 1.25rem;
}
.card:hover { border-color: var(--accent); transform: translateY(-2px); }
@@ -89,11 +89,11 @@
flex-shrink: 0;
}
.card-header h2 {
font-size: 0.8rem;
font-weight: 600;
font-size: 1rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
color: var(--muted);
color: var(--text);
}
.links { padding: 0.5rem 0; }
@@ -115,7 +115,7 @@
border-radius: 50%;
flex-shrink: 0;
}
.link-item .name { flex: 1; font-weight: 500; }
.link-item .name { flex: 1; font-weight: 500; font-size: 0.85rem; }
.link-item .sub {
font-size: 0.75rem;
color: var(--muted);
@@ -128,6 +128,32 @@
}
.link-item:hover .arrow { opacity: 1; }
.copy-item {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.6rem 1rem;
color: var(--text);
font-size: 0.9rem;
transition: background 0.15s;
cursor: pointer;
border: none;
background: none;
width: 100%;
text-align: left;
font-family: inherit;
}
.copy-item:hover { background: var(--surface2); }
.copy-item .name { font-size: 0.85rem; }
.copy-item .copy-icon {
color: var(--muted);
font-size: 0.7rem;
opacity: 0;
transition: opacity 0.15s;
flex-shrink: 0;
}
.copy-item:hover .copy-icon { opacity: 1; }
.dot-blue { background: var(--accent); }
.dot-purple { background: var(--accent2); }
.dot-green { background: var(--green); }
@@ -155,7 +181,7 @@
@media (max-width: 600px) {
body { padding: 1rem; }
.grid { grid-template-columns: 1fr; }
.grid { columns: 1; }
}
</style>
</head>
@@ -220,6 +246,22 @@
</div>
</div>
<!-- INSTALL COMMANDS (copy to clipboard, not clickable links) -->
<div class="card">
<div class="card-header">
<div class="icon icon-cyan">📋</div>
<h2>Install Commands</h2>
</div>
<div class="links">
<button type="button" class="copy-item" onclick="copyCmd(this, 'curl -sSL http://jarvis.orbishosting.com/agent/install.sh | bash -s -- $(hostname) linux')">
<span class="dot dot-orange"></span><span class="name">JARVIS Agent</span><span class="sub">Linux install one-liner &mdash; prompts for registration key, run as root</span><span class="copy-icon">copy</span>
</button>
<button type="button" class="copy-item" onclick="copyCmd(this, 'apt update &amp;&amp; apt install -y git &amp;&amp; git clone https://github.com/fusionpbx/fusionpbx-install.sh.git &amp;&amp; cd fusionpbx-install.sh/debian &amp;&amp; ./install.sh')">
<span class="dot dot-purple"></span><span class="name">FusionPBX Full Installer</span><span class="sub">Official latest-version install script &mdash; Debian 12, run as root</span><span class="copy-icon">copy</span>
</button>
</div>
</div>
<!-- BACKUP STATUS -->
<div class="card">
<div class="card-header">
@@ -253,7 +295,7 @@
<h2>Home Automation</h2>
</div>
<div class="links">
<a class="link-item" href="https://hoa.orbishosting.com" target="_blank">
<a class="link-item" href="http://web.orbishosting.com:8123" target="_blank">
<span class="dot dot-green"></span><span class="name">Home Assistant</span><span class="sub">hoa.orbishosting.com</span><span class="arrow"></span>
</a>
<a class="link-item" href="http://10.48.200.18:8581" target="_blank">
@@ -272,20 +314,23 @@
<h2>Media</h2>
</div>
<div class="links">
<a class="link-item" href="http://10.48.200.33:8096" target="_blank">
<span class="dot dot-purple"></span><span class="name">Jellyfin</span><span class="sub">Media server</span><span class="arrow"></span>
<a class="link-item" href="http://10.48.200.104:8080" target="_blank">
<span class="dot dot-red"></span><span class="name">StreamHoard</span><span class="sub">Netflix-style server</span><span class="arrow"></span>
</a>
<a class="link-item" href="http://10.48.200.35:8989" target="_blank">
<a class="link-item" href="http://10.48.200.104:8989" target="_blank">
<span class="dot dot-blue"></span><span class="name">Sonarr</span><span class="sub">TV shows</span><span class="arrow"></span>
</a>
<a class="link-item" href="http://10.48.200.35:7878" target="_blank">
<a class="link-item" href="http://10.48.200.104:7878" target="_blank">
<span class="dot dot-yellow"></span><span class="name">Radarr</span><span class="sub">Movies</span><span class="arrow"></span>
</a>
<a class="link-item" href="http://10.48.200.35:9696" target="_blank">
<a class="link-item" href="http://10.48.200.104:9696" target="_blank">
<span class="dot dot-orange"></span><span class="name">Prowlarr</span><span class="sub">Indexers</span><span class="arrow"></span>
</a>
<a class="link-item" href="http://10.48.200.35:8080" target="_blank">
<span class="dot dot-green"></span><span class="name">qBittorrent</span><span class="sub">Downloads</span><span class="arrow"></span>
<a class="link-item" href="http://10.48.200.104:8082" target="_blank">
<span class="dot dot-green"></span><span class="name">qBittorrent</span><span class="sub">Downloads (VPN'd)</span><span class="arrow"></span>
</a>
<a class="link-item" href="https://10.48.200.104:9443" target="_blank">
<span class="dot dot-cyan"></span><span class="name">Portainer</span><span class="sub">Docker container manager</span><span class="arrow"></span>
</a>
</div>
</div>
@@ -440,8 +485,8 @@
<a class="link-item" href="https://github.com/myronblair/infra" target="_blank">
<span class="dot dot-gray"></span><span class="name">Infra</span><span class="sub">myronblair/infra</span><span class="arrow"></span>
</a>
<a class="link-item" href="https://github.com/myronblair/mediastack" target="_blank">
<span class="dot dot-gray"></span><span class="name">MediaStack</span><span class="sub">myronblair/mediastack</span><span class="arrow"></span>
<a class="link-item" href="https://github.com/myronblair/kino-app" target="_blank">
<span class="dot dot-gray"></span><span class="name">StreamHoard</span><span class="sub">myronblair/kino-app</span><span class="arrow"></span>
</a>
<a class="link-item" href="https://github.com/myronblair/do-server-config" target="_blank">
<span class="dot dot-gray"></span><span class="name">DO Server Config</span><span class="sub">myronblair/do-server-config</span><span class="arrow"></span>
@@ -646,6 +691,9 @@
<a class="link-item" href="https://portal.office.com" target="_blank">
<span class="dot dot-blue"></span><span class="name">365 Portal</span><span class="sub">portal.office.com</span><span class="arrow"></span>
</a>
<a class="link-item" href="https://admin.microsoft.com/" target="_blank">
<span class="dot dot-blue"></span><span class="name">M365 Admin Center</span><span class="sub">admin.microsoft.com</span><span class="arrow"></span>
</a>
<a class="link-item" href="https://docs.vanguardtc.com" target="_blank">
<span class="dot dot-purple"></span><span class="name">Docs Dashboard</span><span class="sub">docs.vanguardtc.com</span><span class="arrow"></span>
</a>
@@ -701,6 +749,18 @@
}
tick(); setInterval(tick, 1000);
// ── Install Commands card: copy-to-clipboard, never auto-navigates ──
function copyCmd(btn, text) {
navigator.clipboard.writeText(text).then(() => {
const iconEl = btn.querySelector('.copy-icon');
const prev = iconEl.textContent;
iconEl.textContent = 'copied!';
iconEl.style.opacity = '1';
setTimeout(() => { iconEl.textContent = prev; iconEl.style.opacity = ''; }, 1500);
});
}
// ── Backup Status card — reads daily-refreshed JSON from MSP360 collector ──
async function loadBackupStatus() {
const el = document.getElementById('backup-status-list');