aipackage/cezen-portal/admin.html
2026-06-30 10:51:41 +05:30

622 lines
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin Guide — Nexus One AI Portal</title>
<link rel="stylesheet" href="style.css?v=4">
</head>
<body data-role="admin">
<header class="topnav">
<a href="index.html" class="brand">Nexus One <span>AI</span></a>
<nav>
<a href="index.html">Home</a>
<a href="quickstart.html">Quick Start</a>
<a href="prompts.html">Prompt Library</a>
<a href="usecases.html">Use Cases</a>
<span class="nav-sep"></span>
<div class="nav-dropdown">
<button class="nav-drop-btn">Help ▾</button>
<div class="nav-drop-menu">
<span class="nav-drop-cat">LEARN /</span>
<a href="quickstart.html">Quick Start</a>
<a href="models.html">Models</a>
<span class="nav-drop-cat">SUPPORT /</span>
<a href="troubleshooting.html">Troubleshoot</a>
<a href="faq.html">FAQ</a>
<span class="nav-drop-cat">MORE /</span>
<a href="glossary.html">Glossary</a>
<a href="whats-new.html">What's New</a>
</div>
</div>
<div class="nav-dropdown">
<button class="nav-drop-btn active">Admin ▾</button>
<div class="nav-drop-menu nav-drop-menu-wide">
<span class="nav-drop-cat">DOCS /</span>
<a href="security.html">Security & Privacy</a>
<a href="admin.html" class="active">Admin Guide</a>
<span class="nav-drop-cat">MONITOR /</span>
<a href="dashboard.html">Dashboard</a>
<a href="analytics.html">Usage Analytics</a>
<a href="audit.html">Audit Log</a>
<a href="feedback.html">Feedback &amp; Ratings</a>
<span class="nav-drop-cat">MANAGE /</span>
<a href="users.html">Users</a>
<a href="teams.html">Teams</a>
<a href="models-admin.html">Model Manager</a>
<a href="training.html">Training</a>
<a href="knowledge.html">Knowledge Base</a>
<span class="nav-drop-cat">TOOLS /</span>
<a href="apikeys.html">API Keys</a>
<a href="benchmark.html">Benchmarking</a>
<a href="model-compare.html">Model Compare</a>
<a href="api-playground.html">API Playground</a>
<a href="guardrails.html">Guardrails</a>
<a href="rag-quality.html">RAG Quality</a>
<a href="router.html">Model Router</a>
<a href="connectors.html">Connectors</a>
<span class="nav-drop-cat">SYSTEM /</span>
<a href="appliance.html">Appliance Ops</a>
<a href="console.html">Console</a>
<a href="settings.html">Settings</a>
</div>
</div>
<div class="nav-dropdown">
<button class="nav-drop-btn">AI Tools ▾</button>
<div class="nav-drop-menu">
<span class="nav-drop-cat">INTELLIGENCE /</span>
<a href="documents.html">Document Intelligence</a>
<a href="chat-multi.html">Multimodal Chat</a>
<a href="prompt-studio.html">Prompt Studio</a>
<a href="meeting.html">Meeting Assistant</a>
<span class="nav-drop-cat">AUTOMATION /</span>
<a href="agents.html">Agent Builder</a>
<a href="schedules.html">Scheduled Jobs</a>
<a href="workflows.html">Workflow Automation</a>
<span class="nav-drop-cat">QUALITY /</span>
<a href="evals.html">AI Eval Suite</a>
<a href="chatrooms.html">Chat Rooms</a>
</div>
</div>
</nav>
<a href="notifications.html" style="position:relative">🔔</a>
<span class="badge" data-brand="tier">Basic Tier</span>
<div id="nav-org-logo" class="nav-org-logo"></div>
</header>
<div class="page-hero">
<div class="label">Admin Guide</div>
<h1>System Administration Reference</h1>
<p>For the person managing the Nexus One AI server. Commands to restart services, manage users, add models, check health, and pull logs — all in one place.</p>
</div>
<div class="content">
<div class="notice" style="margin-bottom:32px">
🔐 <strong>This page is for system administrators only.</strong> All commands below require SSH access to the server. If you're an end user looking for help, visit <a href="troubleshooting.html">Troubleshooting</a> or <a href="faq.html">FAQ</a> instead.
</div>
<!-- QUICK REFERENCE -->
<div class="section-title">Quick reference — most common admin tasks</div>
<div class="adm-quick-grid">
<div class="adm-quick-card">
<div class="adm-quick-title">Restart all services</div>
<div class="adm-cmd" id="cmd-restart-all">sudo systemctl restart ollama open-webui chromadb jupyter</div>
<button class="adm-copy" onclick="copyCmd('cmd-restart-all', this)">Copy</button>
</div>
<div class="adm-quick-card">
<div class="adm-quick-title">Check all service status</div>
<div class="adm-cmd" id="cmd-status-all">sudo systemctl status ollama open-webui chromadb jupyter</div>
<button class="adm-copy" onclick="copyCmd('cmd-status-all', this)">Copy</button>
</div>
<div class="adm-quick-card">
<div class="adm-quick-title">Check disk space</div>
<div class="adm-cmd" id="cmd-disk">df -h /</div>
<button class="adm-copy" onclick="copyCmd('cmd-disk', this)">Copy</button>
</div>
<div class="adm-quick-card">
<div class="adm-quick-title">Check GPU status</div>
<div class="adm-cmd" id="cmd-gpu">nvidia-smi</div>
<button class="adm-copy" onclick="copyCmd('cmd-gpu', this)">Copy</button>
</div>
<div class="adm-quick-card">
<div class="adm-quick-title">List installed models</div>
<div class="adm-cmd" id="cmd-models">ollama list</div>
<button class="adm-copy" onclick="copyCmd('cmd-models', this)">Copy</button>
</div>
<div class="adm-quick-card">
<div class="adm-quick-title">View live system logs</div>
<div class="adm-cmd" id="cmd-logs">sudo journalctl -f -u ollama -u open-webui</div>
<button class="adm-copy" onclick="copyCmd('cmd-logs', this)">Copy</button>
</div>
</div>
<!-- SERVICE MANAGEMENT -->
<div class="section-title" id="services">Service management</div>
<p style="color:var(--med);font-size:14px;margin-bottom:20px">All Nexus One AI services run as systemd units. Replace <code style="background:#F1F5F9;padding:2px 6px;border-radius:4px">SERVICE</code> below with: <code style="background:#F1F5F9;padding:2px 6px;border-radius:4px">ollama</code>, <code style="background:#F1F5F9;padding:2px 6px;border-radius:4px">open-webui</code>, <code style="background:#F1F5F9;padding:2px 6px;border-radius:4px">chromadb</code>, or <code style="background:#F1F5F9;padding:2px 6px;border-radius:4px">jupyter</code>.</p>
<div class="adm-section">
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Start a service</div>
<div class="adm-row-desc">Use when a service is stopped and needs to be brought up.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-start">sudo systemctl start SERVICE</div>
<button class="adm-copy" onclick="copyCmd('cmd-start', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Stop a service</div>
<div class="adm-row-desc">Gracefully stops the service. Active users will be disconnected.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-stop">sudo systemctl stop SERVICE</div>
<button class="adm-copy" onclick="copyCmd('cmd-stop', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Restart a service</div>
<div class="adm-row-desc">Stop then start. Use when a service is misbehaving or after a config change.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-restart">sudo systemctl restart SERVICE</div>
<button class="adm-copy" onclick="copyCmd('cmd-restart', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Check service status</div>
<div class="adm-row-desc">Shows whether the service is running, the last few log lines, and any errors.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-status">sudo systemctl status SERVICE</div>
<button class="adm-copy" onclick="copyCmd('cmd-status', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Enable auto-start on boot</div>
<div class="adm-row-desc">Ensures the service starts automatically if the server is rebooted.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-enable">sudo systemctl enable SERVICE</div>
<button class="adm-copy" onclick="copyCmd('cmd-enable', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Restart all Cezen services</div>
<div class="adm-row-desc">Restart everything at once. Useful after a server update or if multiple services are unresponsive.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-restart-all2">sudo systemctl restart ollama open-webui chromadb jupyter</div>
<button class="adm-copy" onclick="copyCmd('cmd-restart-all2', this)">Copy</button>
</div>
</div>
</div>
<!-- SERVICE PORTS -->
<div class="section-title">Service ports and endpoints</div>
<div class="adm-ports-wrap">
<table class="sec-compare">
<thead>
<tr>
<th>Service</th>
<th>Port</th>
<th>URL</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Open WebUI</strong></td>
<td>3000</td>
<td>http://ai.local:3001</td>
<td>Main user-facing chat interface</td>
</tr>
<tr>
<td><strong>Ollama API</strong></td>
<td>11434</td>
<td>http://ai.local:11434</td>
<td>Model inference API — do not expose externally</td>
</tr>
<tr>
<td><strong>ChromaDB</strong></td>
<td>8000</td>
<td>http://ai.local:8000</td>
<td>Vector database API — do not expose externally</td>
</tr>
<tr>
<td><strong>Jupyter</strong></td>
<td>8888</td>
<td>http://ai.local:8888</td>
<td>Notebook server — restrict to developer users only</td>
</tr>
<tr>
<td><strong>FastAPI</strong></td>
<td>8080</td>
<td>http://ai.local:8080</td>
<td>Custom API layer — if deployed</td>
</tr>
</tbody>
</table>
</div>
<!-- MODEL MANAGEMENT -->
<div class="section-title" id="models">Model management</div>
<div class="adm-section">
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">List installed models</div>
<div class="adm-row-desc">Shows all models currently available on the system with their sizes.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-list">ollama list</div>
<button class="adm-copy" onclick="copyCmd('cmd-list', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Pull (install) a new model</div>
<div class="adm-row-desc">Downloads and installs a model. Examples: <code>llama3.1:8b</code>, <code>mistral:7b</code>, <code>gemma2:9b</code>. Requires the model files to be available on your network or internet (if connected).</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-pull">ollama pull MODEL_NAME</div>
<button class="adm-copy" onclick="copyCmd('cmd-pull', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Remove a model</div>
<div class="adm-row-desc">Deletes a model from disk to free up space. Make sure no users are actively using it.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-rm">ollama rm MODEL_NAME</div>
<button class="adm-copy" onclick="copyCmd('cmd-rm', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Show model info</div>
<div class="adm-row-desc">Displays the model's parameters, context length, and configuration.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-show">ollama show MODEL_NAME</div>
<button class="adm-copy" onclick="copyCmd('cmd-show', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Check what's currently loaded in GPU</div>
<div class="adm-row-desc">Shows running Ollama processes and their VRAM usage.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-ps">ollama ps</div>
<button class="adm-copy" onclick="copyCmd('cmd-ps', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Model storage location</div>
<div class="adm-row-desc">All model files are stored here. Monitor this directory for disk usage.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-modelpath">ls -lh /usr/share/ollama/.ollama/models/</div>
<button class="adm-copy" onclick="copyCmd('cmd-modelpath', this)">Copy</button>
</div>
</div>
</div>
<!-- USER MANAGEMENT -->
<div class="section-title" id="users">User management (Open WebUI)</div>
<p style="color:var(--med);font-size:14px;margin-bottom:20px">User accounts are managed through the Open WebUI admin panel at <a href="http://ai.local:3001/admin/users" target="_blank" style="color:var(--teal)">http://ai.local:3001/admin/users</a>. Log in with your admin account and use the panel for most user tasks. The commands below are for bulk operations or when the UI is unavailable.</p>
<div class="adm-section">
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Open user admin panel</div>
<div class="adm-row-desc">The primary way to create, disable, and manage user accounts. Open this URL in a browser while connected to the internal network.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-adminurl">http://ai.local:3001/admin/users</div>
<button class="adm-copy" onclick="copyCmd('cmd-adminurl', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Open WebUI database location</div>
<div class="adm-row-desc">User data is stored in a SQLite database at this path. Back this up regularly.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-dbpath">/opt/open-webui/data/webui.db</div>
<button class="adm-copy" onclick="copyCmd('cmd-dbpath', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Back up Nexus One AI data</div>
<div class="adm-row-desc">Creates a local archive of Cezen data, settings, audit logs, and uploaded working files.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-backup">sudo bash /opt/cezen/scripts/cezen-backup.sh backup</div>
<button class="adm-copy" onclick="copyCmd('cmd-backup', this)">Copy</button>
</div>
</div>
</div>
<!-- HEALTH & MONITORING -->
<div class="section-title" id="health">System health &amp; monitoring</div>
<div class="adm-section">
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">GPU status snapshot</div>
<div class="adm-row-desc">Shows GPU utilisation, VRAM used/free, temperature, and power draw for all GPUs.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-nvidiasmi">nvidia-smi</div>
<button class="adm-copy" onclick="copyCmd('cmd-nvidiasmi', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Live GPU monitor</div>
<div class="adm-row-desc">Refreshes every second. Good for watching GPU load while a model is running. Press Ctrl+C to exit.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-watch">watch -n1 nvidia-smi</div>
<button class="adm-copy" onclick="copyCmd('cmd-watch', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Full GPU health diagnostic</div>
<div class="adm-row-desc">Runs DCGM's built-in diagnostic suite. Takes ~2 minutes. Red results indicate hardware issues to escalate.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-dcgm">dcgmi diag -r 1</div>
<button class="adm-copy" onclick="copyCmd('cmd-dcgm', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Disk space usage</div>
<div class="adm-row-desc">Check overall disk space. Watch /: models, databases, and logs all grow over time.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-df">df -h</div>
<button class="adm-copy" onclick="copyCmd('cmd-df', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Find what's using the most disk space</div>
<div class="adm-row-desc">Shows the 10 largest directories under /opt — useful when disk space runs low.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-du">sudo du -sh /opt/* | sort -rh | head -10</div>
<button class="adm-copy" onclick="copyCmd('cmd-du', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">CPU and memory overview</div>
<div class="adm-row-desc">Live system resource usage — CPU load, RAM, swap. Press Q to exit.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-htop">htop</div>
<button class="adm-copy" onclick="copyCmd('cmd-htop', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Check server uptime</div>
<div class="adm-row-desc">Shows how long the server has been running and current load averages.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-uptime">uptime</div>
<button class="adm-copy" onclick="copyCmd('cmd-uptime', this)">Copy</button>
</div>
</div>
</div>
<!-- LOGS -->
<div class="section-title" id="logs">Log access</div>
<div class="adm-section">
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Live logs — all Cezen services</div>
<div class="adm-row-desc">Streams live log output from Ollama and Open WebUI together. Useful for diagnosing live issues. Press Ctrl+C to exit.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-liveall">sudo journalctl -f -u ollama -u open-webui</div>
<button class="adm-copy" onclick="copyCmd('cmd-liveall', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Last 100 lines — Ollama</div>
<div class="adm-row-desc">Recent Ollama log output. Check here first when models aren't loading or inference is failing.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-ollamalog">sudo journalctl -u ollama -n 100 --no-pager</div>
<button class="adm-copy" onclick="copyCmd('cmd-ollamalog', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Last 100 lines — Open WebUI</div>
<div class="adm-row-desc">Recent Open WebUI log output. Check here when users can't log in or the interface is not loading.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-webuilog">sudo journalctl -u open-webui -n 100 --no-pager</div>
<button class="adm-copy" onclick="copyCmd('cmd-webuilog', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Logs since last boot</div>
<div class="adm-row-desc">All logs from the current boot session — useful after a server restart to check everything came up cleanly.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-bootlog">sudo journalctl -b -u ollama -u open-webui -u chromadb -u jupyter</div>
<button class="adm-copy" onclick="copyCmd('cmd-bootlog', this)">Copy</button>
</div>
</div>
<div class="adm-row">
<div class="adm-row-label">
<div class="adm-row-title">Search logs for errors</div>
<div class="adm-row-desc">Filters log output to show only error-level entries — faster than reading everything.</div>
</div>
<div class="adm-row-right">
<div class="adm-cmd" id="cmd-errors">sudo journalctl -u ollama -u open-webui -p err --no-pager</div>
<button class="adm-copy" onclick="copyCmd('cmd-errors', this)">Copy</button>
</div>
</div>
</div>
<!-- COMMON PROCEDURES -->
<div class="section-title">Common procedures</div>
<div class="adm-procedure">
<div class="adm-proc-title">
<span class="adm-proc-icon">🔄</span>
Safe server reboot
</div>
<div class="adm-proc-body">
<p>Before rebooting, notify users and allow active sessions to finish. All systemd services with <code>enabled</code> status will restart automatically on boot.</p>
<ol class="adm-proc-steps">
<li>Notify users that the system will restart in 10 minutes</li>
<li>Wait for active model requests to complete: <span class="adm-inline-cmd" id="proc-1">watch ollama ps</span> <button class="adm-copy-sm" onclick="copyCmd('proc-1',this)">Copy</button></li>
<li>Reboot the server: <span class="adm-inline-cmd" id="proc-2">sudo reboot</span> <button class="adm-copy-sm" onclick="copyCmd('proc-2',this)">Copy</button></li>
<li>After reboot, verify all services are running: <span class="adm-inline-cmd" id="proc-3">sudo systemctl status ollama open-webui chromadb jupyter</span> <button class="adm-copy-sm" onclick="copyCmd('proc-3',this)">Copy</button></li>
<li>Open <a href="http://ai.local:3001" target="_blank">http://ai.local:3001</a> and confirm the chat interface loads</li>
</ol>
</div>
</div>
<div class="adm-procedure">
<div class="adm-proc-title">
<span class="adm-proc-icon">🧠</span>
Adding a new AI model
</div>
<div class="adm-proc-body">
<p>Models are added via the Ollama CLI. On an air-gapped system, copy the model file to the server first.</p>
<ol class="adm-proc-steps">
<li>Check available disk space: <span class="adm-inline-cmd" id="proc-4">df -h /</span> <button class="adm-copy-sm" onclick="copyCmd('proc-4',this)">Copy</button> — ensure at least 2× the model size is free</li>
<li>Pull the model (if internet-connected): <span class="adm-inline-cmd" id="proc-5">ollama pull llama3.1:8b</span> <button class="adm-copy-sm" onclick="copyCmd('proc-5',this)">Copy</button></li>
<li>For air-gapped install, copy the GGUF file then: <span class="adm-inline-cmd" id="proc-6">ollama create mymodel -f /path/to/Modelfile</span> <button class="adm-copy-sm" onclick="copyCmd('proc-6',this)">Copy</button></li>
<li>Verify it appears: <span class="adm-inline-cmd" id="proc-7">ollama list</span> <button class="adm-copy-sm" onclick="copyCmd('proc-7',this)">Copy</button></li>
<li>Test it loads: <span class="adm-inline-cmd" id="proc-8">ollama run MODEL_NAME "Hello"</span> <button class="adm-copy-sm" onclick="copyCmd('proc-8',this)">Copy</button></li>
<li>The model will appear automatically in Open WebUI's model selector — no restart needed</li>
</ol>
</div>
</div>
<div class="adm-procedure">
<div class="adm-proc-title">
<span class="adm-proc-icon">🗑️</span>
Freeing up disk space
</div>
<div class="adm-proc-body">
<p>Disk space is most commonly consumed by model files, ChromaDB data, and Jupyter notebooks. Check each before deleting anything.</p>
<ol class="adm-proc-steps">
<li>Find what's using the most space: <span class="adm-inline-cmd" id="proc-9">sudo du -sh /opt/* | sort -rh | head -10</span> <button class="adm-copy-sm" onclick="copyCmd('proc-9',this)">Copy</button></li>
<li>List models with sizes: <span class="adm-inline-cmd" id="proc-10">ollama list</span> <button class="adm-copy-sm" onclick="copyCmd('proc-10',this)">Copy</button></li>
<li>Remove unused models (confirm with users first): <span class="adm-inline-cmd" id="proc-11">ollama rm MODEL_NAME</span> <button class="adm-copy-sm" onclick="copyCmd('proc-11',this)">Copy</button></li>
<li>Clear old journal logs (keeps last 7 days): <span class="adm-inline-cmd" id="proc-12">sudo journalctl --vacuum-time=7d</span> <button class="adm-copy-sm" onclick="copyCmd('proc-12',this)">Copy</button></li>
<li>Verify space recovered: <span class="adm-inline-cmd" id="proc-13">df -h /</span> <button class="adm-copy-sm" onclick="copyCmd('proc-13',this)">Copy</button></li>
</ol>
</div>
</div>
<div class="adm-procedure">
<div class="adm-proc-title">
<span class="adm-proc-icon">🔑</span>
Resetting an admin password (Open WebUI)
</div>
<div class="adm-proc-body">
<p>If the admin password is lost, reset it via the Open WebUI CLI while the service is stopped.</p>
<ol class="adm-proc-steps">
<li>Stop Open WebUI: <span class="adm-inline-cmd" id="proc-14">sudo systemctl stop open-webui</span> <button class="adm-copy-sm" onclick="copyCmd('proc-14',this)">Copy</button></li>
<li>Run the reset command: <span class="adm-inline-cmd" id="proc-15">sudo open-webui reset-admin-password --email admin@example.com --password newpassword</span> <button class="adm-copy-sm" onclick="copyCmd('proc-15',this)">Copy</button></li>
<li>Restart Open WebUI: <span class="adm-inline-cmd" id="proc-16">sudo systemctl start open-webui</span> <button class="adm-copy-sm" onclick="copyCmd('proc-16',this)">Copy</button></li>
<li>Log in with the new password and immediately change it to something secure</li>
</ol>
</div>
</div>
<!-- ESCALATION -->
<div class="sec-contact" style="margin-top:48px">
<div class="sec-contact-icon">📞</div>
<h3>Need Cezen support?</h3>
<p>For hardware issues, system-level failures, or anything beyond this guide, contact Cezen. Include: the service name, the error from <code style="color:#0F766E">journalctl</code>, and the output of <code style="color:#0F766E">nvidia-smi</code> and <code style="color:#0F766E">df -h</code>.</p>
<a href="mailto:support@cezentech.com" class="btn-primary" style="display:inline-block;margin-top:16px;text-decoration:none">Email Cezen Support</a>
</div>
</div>
<footer>
<p>Nexus One AI &nbsp;·&nbsp; Powered by Cezen &nbsp;·&nbsp; Basic Tier</p>
<p>Questions? <a href="mailto:support@cezentech.com">support@cezentech.com</a> &nbsp;·&nbsp; <a href="https://cezentech.com" target="_blank">cezentech.com</a></p>
</footer>
<script>
function copyCmd(id, btn) {
const text = document.getElementById(id).textContent.trim();
navigator.clipboard.writeText(text).then(() => {
const orig = btn.textContent;
btn.textContent = '✓';
btn.classList.add('copied');
setTimeout(() => { btn.textContent = orig; btn.classList.remove('copied'); }, 2000);
});
}
</script>
<script src="auth.js"></script>
<script src="branding.js"></script>
</body>
</html>