Dotfiles/setup/modules/optional-Modules/apps/cockpit.sh

61 lines
3.0 KiB
Bash

#!/bin/bash
# ============================================================
# cockpit.sh — Cockpit web-based server management UI
# ============================================================
# Installs Cockpit, a browser-based administration interface
# that provides real-time system monitoring, journal viewing,
# storage management, and more — all accessible at
# https://localhost:9090.
#
# Packages installed:
# cockpit — core web UI and API layer
# cockpit-pcp — Performance Co-Pilot integration
# (enables historical metrics charts)
# pcp — Performance Co-Pilot daemon (required by cockpit-pcp)
# cockpit-machines — virtual machine management via libvirt
# cockpit-podman — container management via Podman API
# cockpit-navigator — file browser add-on for Cockpit
#
# The core and pcp packages come from the official Arch repos;
# the plugin packages (machines, podman, navigator) are
# AUR-only.
#
# This is an optional module because Cockpit is primarily
# useful on servers or development machines; it is not needed
# on a standard desktop.
# ============================================================
set -euo pipefail
# Load shared logging helpers from the dotfiles lib
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
# ── Core Cockpit packages (official repos) ────────────────────────────────────
# cockpit : the main web server component and administration framework
# cockpit-pcp : bridge between Cockpit and PCP; enables the metrics history page
# pcp : Performance Co-Pilot — collects and archives system performance
# data (CPU, memory, disk I/O, etc.) that cockpit-pcp then displays
log "Installing Cockpit (core + official plugins)..."
sudo pacman -S --noconfirm --needed \
cockpit \
cockpit-pcp \
pcp
# ── Cockpit plugin extensions (AUR) ──────────────────────────────────────────
# cockpit-machines : manage QEMU/KVM virtual machines directly from the web UI
# cockpit-podman : manage rootless and rootful Podman containers
# cockpit-navigator : graphical file manager widget inside Cockpit
log "Installing Cockpit AUR plugins (machines, podman, navigator)..."
yay -S --answerdiff None --answerclean All --noconfirm \
cockpit-machines \
cockpit-podman \
cockpit-navigator
# ── Enable Cockpit socket activation ─────────────────────────────────────────
# Cockpit uses systemd socket activation: the cockpit.socket unit listens on
# port 9090 and starts cockpit.service only when an incoming connection arrives.
# This is more efficient than keeping the full web server running at all times.
log "Enabling Cockpit socket..."
sudo systemctl enable cockpit.socket
log "Cockpit enabled. Web UI available at https://localhost:9090"