Cockpit es un panel web ligero para administrar servidores Linux, mantenido por Red Hat y disponible en los repositorios de Ubuntu, Debian y RHEL. A diferencia de otros paneles, no mantiene su propia configuración paralela: trabaja directamente con systemd, journald y las herramientas del sistema, así que lo que cambias en Cockpit es lo mismo que cambiarías por SSH. En este tutorial instalarás Cockpit en Ubuntu 24.04, lo protegerás con un firewall y un certificado de Let's Encrypt y revisarás sus funciones principales.
Requisitos previos
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath.
- Un usuario no root con privilegios
sudoy contraseña. Cockpit usa las cuentas del sistema para iniciar sesión. - La dirección IP pública desde la que lo administrarás (
your_ip). - Para el paso 5, un dominio (
your_domain) con un registro DNS A que apunte al servidor.
Paso 1: Instalar Cockpit
Ubuntu 24.04 incluye Cockpit en sus repositorios, pero el proyecto recomienda instalarlo desde noble-backports, que recibe versiones mucho más recientes. Ese repositorio viene activado por defecto en Ubuntu 24.04, aunque apt no instala nada de él salvo que se lo pidas.
Actualiza el índice e instala Cockpit desde backports:
sudo apt update
. /etc/os-release
sudo apt install -t ${VERSION_CODENAME}-backports cockpit
El paquete cockpit instala también, como recomendados, los módulos de almacenamiento (cockpit-storaged), red (cockpit-networkmanager) y actualizaciones de software (cockpit-packagekit).
Comprueba la versión instalada:
apt policy cockpit | head -3
cockpit:
Installed: 362-1~bpo24.04.1
Candidate: 362-1~bpo24.04.1
Paso 2: Activar el servicio
Cockpit se activa por socket: systemd escucha en el puerto 9090 y solo arranca el servicio cuando alguien se conecta, por lo que no consume recursos mientras nadie lo usa. Habilita el socket:
sudo systemctl enable --now cockpit.socket
Verifica que está escuchando:
sudo systemctl status cockpit.socket --no-pager
● cockpit.socket - Cockpit Web Service Socket
Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; preset: enabled)
Active: active (listening) since Thu 2026-09-24 09:41:07 UTC; 12s ago
Listen: [::]:9090 (Stream)
Paso 3: Permitir el acceso en el firewall
Abre SSH y el puerto 9090 solo para tu IP antes de activar UFW:
sudo ufw allow OpenSSH
sudo ufw allow from your_ip to any port 9090 proto tcp
sudo ufw enable
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
9090/tcp ALLOW your_ip
OpenSSH (v6) ALLOW Anywhere (v6)
Cockpit da acceso a una terminal y a la administración completa del sistema. No lo dejes abierto a todo Internet.
Paso 4: Iniciar sesión
Abre https://your_server_ip:9090 en el navegador. Cockpit genera al instalarse un certificado autofirmado, así que el navegador mostrará un aviso que puedes aceptar por ahora.
Inicia sesión con tu usuario sudo y su contraseña. El usuario root no puede entrar: está incluido en /etc/cockpit/disallowed-users, y es mejor mantenerlo así.
Al entrar, Cockpit está en acceso limitado. Para hacer cambios en el sistema, pulsa el botón Acceso limitado (Limited access si la interfaz está en inglés) de la barra superior y vuelve a escribir tu contraseña. Cockpit usará sudo para las acciones que lo requieran.
Paso 5: Usar un certificado de Let's Encrypt
Cockpit lee sus certificados del directorio /etc/cockpit/ws-certs.d/. Usa el último archivo .crt o .cert en orden alfabético, con una clave privada del mismo nombre y extensión .key. El autofirmado se llama 0-self-signed.cert, así que un archivo con el nombre de tu dominio tendrá prioridad.
Instala Certbot y abre temporalmente el puerto 80 para la validación:
sudo apt install certbot
sudo ufw allow 80/tcp
Obtén el certificado en modo standalone. Sustituye your_domain y your_email:
sudo certbot certonly --standalone -d your_domain -m your_email --agree-tos --no-eff-email
En lugar de copiar los archivos a mano, crea un hook de despliegue que Certbot ejecutará ahora y en cada renovación:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/cockpit.sh
#!/usr/bin/env bash
set -euo pipefail
domain="your_domain"
src="/etc/letsencrypt/live/${domain}"
dst="/etc/cockpit/ws-certs.d"
install -m 644 "${src}/fullchain.pem" "${dst}/${domain}.crt"
install -m 600 "${src}/privkey.pem" "${dst}/${domain}.key"
systemctl try-restart cockpit.service
Hazlo ejecutable y ejecútalo una vez para instalar el certificado actual:
sudo chmod 755 /etc/letsencrypt/renewal-hooks/deploy/cockpit.sh
sudo /etc/letsencrypt/renewal-hooks/deploy/cockpit.sh
Comprueba qué certificado va a usar Cockpit:
sudo /usr/lib/cockpit/cockpit-certificate-ensure --check
Would use certificate /etc/cockpit/ws-certs.d/your_domain.crt
Abre ahora https://your_domain:9090: el navegador ya no mostrará ningún aviso. Prueba que la renovación funciona:
sudo certbot renew --dry-run
Con --standalone la renovación necesita el puerto 80 accesible, así que deja abierta esa regla de UFW.
Paso 6: Ajustar la sesión
La configuración de Cockpit va en /etc/cockpit/cockpit.conf, que no existe hasta que lo creas. Un ajuste útil es cerrar las sesiones inactivas:
sudo nano /etc/cockpit/cockpit.conf
[Session]
IdleTimeout=15
IdleTimeout se expresa en minutos. Reinicia el servicio para aplicarlo:
sudo systemctl restart cockpit.service
Si más adelante publicas Cockpit detrás de un proxy inverso con otro dominio, tendrás que añadir en ese mismo archivo una sección [WebService] con la clave Origins indicando la URL pública, o el navegador no podrá abrir la conexión WebSocket.
Paso 7: Recorrer las funciones principales
Estas son las secciones que más usarás en un servidor:
- Visión general: estado del sistema, uso de CPU y memoria, y acceso a las gráficas de rendimiento.
- Registros: el journal de systemd filtrable por prioridad, servicio y fecha. Es el equivalente gráfico de
journalctl -p err -u nombre_servicio. - Servicios: unidades, sockets y temporizadores de systemd. Desde aquí puedes arrancar, parar, habilitar y ver el log de cada servicio.
- Almacenamiento: discos, particiones, sistemas de archivos, LVM y RAID, además del uso de cada punto de montaje.
- Cuentas: usuarios locales, sus grupos y sus claves SSH autorizadas.
- Terminal: una shell con tu usuario dentro del navegador, útil cuando no tienes un cliente SSH a mano.
Para comprobar que la administración funciona, abre Servicios, busca cron.service y revisa su estado y sus últimas líneas de log.
Añadir la gestión de contenedores Podman
Si ejecutas contenedores con Podman, el módulo cockpit-podman permite ver, arrancar y crear contenedores y descargar imágenes desde el panel:
sudo apt install cockpit-podman
Recarga la página y aparecerá una nueva sección para los contenedores de Podman. Este módulo no gestiona contenedores de Docker.
Solución de problemas
La sección Red no permite editar las interfaces. Ubuntu Server configura la red con netplan y systemd-networkd, mientras que Cockpit solo gestiona interfaces controladas por NetworkManager. Las verás como no gestionadas. Sigue configurando la red con netplan: cambiar el gestor de red de un servidor remoto puede dejarlo sin conexión.
La sección de actualizaciones muestra "Cannot refresh cache whilst offline". Es un efecto del mismo problema: PackageKit consulta a NetworkManager si hay conexión y, al no gestionar ninguna interfaz, cree que el servidor está desconectado. Actualiza el sistema con sudo apt update && sudo apt upgrade por SSH o desde la terminal de Cockpit.
No puedes iniciar sesión. Confirma que el usuario tiene contraseña (los usuarios creados solo con clave SSH no la tienen) y que no aparece en /etc/cockpit/disallowed-users. Los errores de autenticación quedan en el journal:
sudo journalctl -u cockpit.service --since "15 min ago"
Conclusión
Cockpit está instalado desde backports, se activa solo cuando lo usas, sirve un certificado de Let's Encrypt que se renueva automáticamente y solo es accesible desde tu IP. Como siguientes pasos, añade otros servidores desde el selector de hosts para gestionarlos por SSH desde el mismo panel y revisa la sección Registros tras cada cambio importante.
