Docker-WebApp, die einen echten Minecraft Java-Client (Prism Launcher) in einem Container mit virtuellem Display betreibt und per noVNC im Browser anzeigt. Gedacht, um Accounts AFK an Farmen zu stellen. - Multi-Stage Dockerfile: Vite/Vue-Build + Ubuntu-Runtime (Xvfb, x11vnc, websockify, noVNC, openbox, nginx, Prism Launcher 11.0.3) - Vue 3 + Vite + TypeScript Dashboard (noVNC-iframe, Start/Stop, Status-Anzeige, Schnellstart-Anleitung) - Node-Status-API ohne externe Dependencies (/api/status, /api/mc/*) - docker-compose.yml mit PUID/PGID, konfigurierbarer Auflösung, shm_size - Persistente Accounts/Instanzen in /config (Volume)
109 lines
1.9 KiB
CSS
109 lines
1.9 KiB
CSS
:root {
|
|
--bg: #0f1115;
|
|
--bg-elev: #161a22;
|
|
--bg-elev-2: #1d222d;
|
|
--border: #2a3140;
|
|
--text: #e6e9ef;
|
|
--text-dim: #9aa3b2;
|
|
--accent: #4ea34e;
|
|
--accent-hover: #5cbf5c;
|
|
--danger: #d4564f;
|
|
--warn: #d9a441;
|
|
--radius: 8px;
|
|
--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica,
|
|
Arial, sans-serif;
|
|
--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body,
|
|
#app {
|
|
margin: 0;
|
|
height: 100%;
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
font-family: var(--font);
|
|
font-size: 14px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
button {
|
|
font-family: inherit;
|
|
font-size: 13px;
|
|
padding: 8px 14px;
|
|
border-radius: var(--radius);
|
|
border: 1px solid var(--border);
|
|
background: var(--bg-elev-2);
|
|
color: var(--text);
|
|
cursor: pointer;
|
|
transition: background 0.12s ease, border-color 0.12s ease;
|
|
}
|
|
|
|
button:hover:not(:disabled) {
|
|
background: #262d3c;
|
|
border-color: #3a4253;
|
|
}
|
|
|
|
button:disabled {
|
|
opacity: 0.45;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
button.primary {
|
|
background: var(--accent);
|
|
border-color: var(--accent);
|
|
color: #0f1115;
|
|
font-weight: 600;
|
|
}
|
|
|
|
button.primary:hover:not(:disabled) {
|
|
background: var(--accent-hover);
|
|
border-color: var(--accent-hover);
|
|
}
|
|
|
|
button.danger {
|
|
border-color: var(--danger);
|
|
color: var(--danger);
|
|
}
|
|
|
|
input {
|
|
font-family: inherit;
|
|
font-size: 13px;
|
|
padding: 8px 10px;
|
|
border-radius: var(--radius);
|
|
border: 1px solid var(--border);
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
width: 100%;
|
|
}
|
|
|
|
input:focus {
|
|
outline: none;
|
|
border-color: var(--accent);
|
|
}
|
|
|
|
.dot {
|
|
display: inline-block;
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 50%;
|
|
vertical-align: middle;
|
|
margin-right: 6px;
|
|
}
|
|
|
|
.dot.on {
|
|
background: var(--accent);
|
|
box-shadow: 0 0 6px var(--accent);
|
|
}
|
|
|
|
.dot.off {
|
|
background: var(--text-dim);
|
|
}
|
|
|
|
.dot.warn {
|
|
background: var(--warn);
|
|
}
|