Initial commit: Socktop WebTerm with k3s deployment
- Multi-architecture Docker image (ARM64 + AMD64) - Kubernetes manifests for 3-replica deployment - Traefik ingress configuration - NGINX Proxy Manager integration - ConfigMap-based configuration - Automated build and deployment scripts - Session monitoring tools
This commit is contained in:
+175
-46
@@ -1,53 +1,182 @@
|
||||
<!doctype html>
|
||||
<!--
|
||||
Copyright (c) 2019 Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
-->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" href="{{ static_path }}/xterm/dist/xterm.css" />
|
||||
<script src="{{ static_path }}/xterm/dist/xterm.js"></script>
|
||||
<script src="{{ static_path }}/xterm/dist/addons/attach/attach.js"></script>
|
||||
<script src="{{ static_path }}/xterm/dist/addons/terminado/terminado.js"></script>
|
||||
<script src="{{ static_path }}/xterm/dist/addons/fit/fit.js"></script>
|
||||
<script src="{{ static_path }}/xterm/dist/addons/search/search.js"></script>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
html, body, #terminal {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="terminal"></div>
|
||||
<script>
|
||||
Terminal.applyAddon(terminado);
|
||||
Terminal.applyAddon(fit);
|
||||
Terminal.applyAddon(search);
|
||||
<!-- SEO Meta Tags -->
|
||||
<title>socktop - A TUI-first Remote System Monitor</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="socktop is a beautiful, TUI-first remote system monitor built with Rust. Monitor your Linux systems in real-time with an elegant terminal interface featuring the Catppuccin Frappe theme."
|
||||
/>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="system monitor, TUI, terminal, Rust, Linux, remote monitoring, socktop, system metrics, server monitoring, Catppuccin"
|
||||
/>
|
||||
<meta name="author" content="Jason Witty" />
|
||||
|
||||
var term = new Terminal();
|
||||
var protocol = (location.protocol === 'https:') ? 'wss://' : 'ws://';
|
||||
var socketURL = protocol + location.hostname + ((location.port) ? (':' + location.port) : '') + "{{ websocket_path }}";
|
||||
var sock = new WebSocket(socketURL);
|
||||
<!-- Open Graph / Social Media Meta Tags -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="socktop - A TUI-first Remote System Monitor"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Beautiful, TUI-first remote system monitor built with Rust. Monitor your Linux systems in real-time."
|
||||
/>
|
||||
<meta
|
||||
property="og:url"
|
||||
content="https://jasonwitty.github.io/socktop/"
|
||||
/>
|
||||
<meta property="og:site_name" content="socktop" />
|
||||
|
||||
sock.addEventListener('open', function() {
|
||||
term.terminadoAttach(sock);
|
||||
term.fit();
|
||||
});
|
||||
<!-- Twitter Card Meta Tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content="socktop - A TUI-first Remote System Monitor"
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Beautiful, TUI-first remote system monitor built with Rust"
|
||||
/>
|
||||
|
||||
sock.addEventListener('close', function() {
|
||||
term.writeln("");
|
||||
term.writeln("Connection closed.");
|
||||
term.terminadoDetach(sock);
|
||||
});
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/png" href="/static/favicon.png" />
|
||||
<link rel="shortcut icon" type="image/png" href="/static/favicon.png" />
|
||||
|
||||
term.open(document.getElementById('terminal'));
|
||||
window.onresize = function() {term.fit();};
|
||||
</script>
|
||||
</body>
|
||||
<!-- External Stylesheets -->
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ static_path }}/@xterm/xterm/css/xterm.css"
|
||||
/>
|
||||
<link rel="stylesheet" href="/static/styles.css" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
|
||||
/>
|
||||
|
||||
<!-- Preload critical resources -->
|
||||
<link rel="preload" href="/static/styles.css" as="style" />
|
||||
<link rel="preload" href="/static/terminal.js" as="script" />
|
||||
|
||||
<!-- DNS Prefetch for external resources -->
|
||||
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com" />
|
||||
|
||||
<!-- Theme Color -->
|
||||
<meta name="theme-color" content="#303446" />
|
||||
</head>
|
||||
<body>
|
||||
<!-- Hero Section -->
|
||||
<section class="hero-section">
|
||||
<h1 class="hero-title">socktop</h1>
|
||||
<p class="hero-tagline">A TUI-first remote system monitor.</p>
|
||||
|
||||
<!-- Links Section -->
|
||||
<div class="links-section">
|
||||
<a
|
||||
href="https://github.com/jasonwitty/socktop"
|
||||
class="link-button github"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
aria-label="View socktop on GitHub"
|
||||
>
|
||||
<i class="fab fa-github" aria-hidden="true"></i>
|
||||
<span>GitHub</span>
|
||||
</a>
|
||||
<a
|
||||
href="https://crates.io/crates/socktop"
|
||||
class="link-button crate"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
aria-label="View TUI crate on crates.io"
|
||||
>
|
||||
<i class="fas fa-cube" aria-hidden="true"></i>
|
||||
<span>TUI Crate</span>
|
||||
</a>
|
||||
<a
|
||||
href="https://crates.io/crates/socktop-agent"
|
||||
class="link-button crate"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
aria-label="View Agent crate on crates.io"
|
||||
>
|
||||
<i class="fas fa-cube" aria-hidden="true"></i>
|
||||
<span>Agent Crate</span>
|
||||
</a>
|
||||
<a
|
||||
href="https://jasonwitty.github.io/socktop/"
|
||||
class="link-button apt"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
aria-label="Visit APT repository"
|
||||
>
|
||||
<i class="fas fa-box" aria-hidden="true"></i>
|
||||
<span>APT Repository</span>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Terminal Window -->
|
||||
<div class="terminal-wrapper">
|
||||
<div class="terminal-window">
|
||||
<div class="terminal-titlebar">
|
||||
<div class="terminal-controls">
|
||||
<div
|
||||
class="terminal-button close"
|
||||
role="button"
|
||||
aria-label="Close"
|
||||
></div>
|
||||
<div
|
||||
class="terminal-button minimize"
|
||||
role="button"
|
||||
aria-label="Minimize"
|
||||
></div>
|
||||
<div
|
||||
class="terminal-button maximize"
|
||||
role="button"
|
||||
aria-label="Maximize"
|
||||
></div>
|
||||
</div>
|
||||
<div class="terminal-title">socktop@demo ~ zsh</div>
|
||||
</div>
|
||||
<div id="terminal" role="region" aria-label="Terminal"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="site-footer">
|
||||
<p>
|
||||
Built with
|
||||
<a
|
||||
href="https://xtermjs.org/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>xterm.js</a
|
||||
>
|
||||
and ❤️ | Theme:
|
||||
<a
|
||||
href="https://github.com/catppuccin/catppuccin"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>Catppuccin Frappe</a
|
||||
>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
<!-- External Scripts -->
|
||||
<script src="{{ static_path }}/@xterm/xterm/lib/xterm.js"></script>
|
||||
<script src="{{ static_path }}/@xterm/addon-fit/lib/addon-fit.js"></script>
|
||||
<script src="{{ static_path }}/terminado-addon.js"></script>
|
||||
|
||||
<!-- Pass websocket path to JavaScript -->
|
||||
<script>
|
||||
window.WEBSOCKET_PATH = "{{ websocket_path }}";
|
||||
</script>
|
||||
|
||||
<!-- Initialize Terminal -->
|
||||
<script src="/static/terminal.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user