--- title: "Cómo instalar y asegurar Webmin en Ubuntu 24.04" description: "Instala Webmin desde su repositorio oficial en Ubuntu 24.04, protégelo con UFW y un certificado de Let's Encrypt y limita el acceso al panel a tus IP." category: "Paneles de Control y Gestión" language: es source: https://cubepath.com/es/docs/paneles-de-control-y-gestión/instalacion-y-configuracion-de-webmin updated: 2026-09-25 --- # Cómo instalar y asegurar Webmin en Ubuntu 24.04 Webmin es un panel web de código abierto para administrar servidores Linux: usuarios, paquetes, servicios, cron, firewall y archivos de configuración desde el navegador, con módulos para Apache, Nginx, BIND, Postfix y muchos otros servicios. En este tutorial instalarás Webmin desde su repositorio oficial en Ubuntu 24.04, lo publicarás con un certificado válido de Let's Encrypt y restringirás el acceso para que el panel no quede abierto a todo Internet. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 1 GB de RAM. - Un usuario no root con privilegios `sudo`. Webmin permite iniciar sesión con este usuario. - Un nombre de dominio, que en esta guía aparece como `your_domain`, con un registro DNS A que apunte a la IP pública del servidor. Es necesario para el certificado del paso 5. - La dirección IP pública desde la que administrarás el servidor (`your_ip`), para restringir el acceso en el paso 6. ## Paso 1: Añadir el repositorio oficial de Webmin El proyecto Webmin publica un script que añade su repositorio de paquetes y su clave de firma. Así Webmin se actualiza con `apt` como cualquier otro paquete. Descarga el script: ```bash curl -fsSL -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh ``` Revisa su contenido antes de ejecutarlo como root: ```bash less webmin-setup-repo.sh ``` Ejecútalo. Te pedirá confirmación antes de configurar el repositorio; responde `y`: ```bash sudo sh webmin-setup-repo.sh ``` El script crea el archivo `/etc/apt/sources.list.d/webmin-stable.list` con la clave de firma en `/usr/share/keyrings`. Compruébalo: ```bash cat /etc/apt/sources.list.d/webmin-stable.list ``` ```output deb [signed-by=/usr/share/keyrings/debian-webmin-developers.gpg] https://download.webmin.com/download/newkey/repository stable contrib ``` La ruta exacta de la clave y del repositorio puede variar ligeramente entre versiones del script; lo importante es que incluya `signed-by` y apunte a `download.webmin.com`. ## Paso 2: Instalar Webmin Instala el paquete con sus dependencias recomendadas, que añaden módulos de Perl usados por varias funciones del panel: ```bash sudo apt update sudo apt install --install-recommends webmin ``` Webmin se instala como un servicio de systemd que escucha en el puerto 10000 con HTTPS y un certificado autofirmado. Comprueba que está activo: ```bash sudo systemctl status webmin --no-pager ``` ```output ● webmin.service - Webmin server daemon Loaded: loaded (/usr/lib/systemd/system/webmin.service; enabled; preset: enabled) Active: active (running) since Thu 2026-09-24 10:12:44 UTC; 20s ago ``` Confirma que el puerto está a la escucha: ```bash sudo ss -tlnp | grep 10000 ``` ```output LISTEN 0 4096 0.0.0.0:10000 0.0.0.0:* users:(("miniserv.pl",pid=4821,fd=5)) ``` ## Paso 3: Abrir el puerto en el firewall Permite SSH antes de activar UFW para no perder el acceso, y abre el puerto de Webmin solo para tu IP: ```bash sudo ufw allow OpenSSH sudo ufw allow from your_ip to any port 10000 proto tcp sudo ufw enable ``` Verifica las reglas: ```bash sudo ufw status ``` ```output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 10000/tcp ALLOW your_ip OpenSSH (v6) ALLOW Anywhere (v6) ``` Si tu IP cambia con frecuencia, puedes usar `sudo ufw allow 10000/tcp` de forma temporal, pero no dejes el panel expuesto a todo Internet de forma permanente: es un objetivo habitual de escaneos y ataques de fuerza bruta. ## Paso 4: Iniciar sesión por primera vez Abre en el navegador `https://your_server_ip:10000`. Verás un aviso de certificado no válido, porque de momento Webmin usa uno autofirmado; acepta la excepción para continuar (el paso 5 lo sustituye). Inicia sesión con tu usuario `sudo` y su contraseña. Webmin permite la entrada a root y a los usuarios que pueden ejecutar cualquier comando con `sudo`, y les da acceso completo. Una vez dentro, el panel **Dashboard** muestra el sistema operativo, la carga, la memoria y el uso de disco. Desde el menú lateral tienes, entre otros: - **System > Software Package Updates:** actualizaciones pendientes. - **System > Users and Groups:** usuarios y grupos del sistema. - **System > Bootup and Shutdown:** servicios de systemd. - **System > Scheduled Cron Jobs:** tareas programadas. - **Tools > File Manager** y **Tools > Terminal:** archivos y consola en el navegador. ## Paso 5: Usar un certificado de Let's Encrypt Un certificado válido elimina el aviso del navegador y evita que te acostumbres a aceptar certificados sin comprobarlos. Usarás Certbot en modo `standalone`, que levanta un servidor web temporal en el puerto 80 para validar el dominio. Instala Certbot y abre el puerto 80 para la validación: ```bash sudo apt install certbot sudo ufw allow 80/tcp ``` Solicita el certificado. Sustituye `your_domain` y `your_email`: ```bash sudo certbot certonly --standalone -d your_domain -m your_email --agree-tos --no-eff-email ``` ```output Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem ``` > Nota: si en el servidor ya hay un servidor web ocupando el puerto 80, usa `sudo certbot certonly --webroot -w /var/www/html -d your_domain` en lugar de `--standalone`. Indica a Webmin que use el certificado. Su servidor web interno, `miniserv`, se configura en `/etc/webmin/miniserv.conf`: ```bash sudo nano /etc/webmin/miniserv.conf ``` Busca las líneas `keyfile` y `certfile`, sustitúyelas y añade `extracas` para la cadena intermedia: ```ini keyfile=/etc/letsencrypt/live/your_domain/privkey.pem certfile=/etc/letsencrypt/live/your_domain/cert.pem extracas=/etc/letsencrypt/live/your_domain/chain.pem ``` Reinicia Webmin: ```bash sudo systemctl restart webmin ``` Comprueba desde tu equipo que el certificado es el nuevo: ```bash echo | openssl s_client -connect your_domain:10000 -servername your_domain 2>/dev/null | openssl x509 -noout -issuer -enddate ``` ```output issuer=C = US, O = Let's Encrypt, CN = R11 notAfter=Dec 23 10:20:11 2026 GMT ``` Certbot renueva los certificados automáticamente con el temporizador `certbot.timer`, pero Webmin solo carga el certificado al arrancar. Crea un hook que lo reinicie tras cada renovación: ```bash sudo nano /etc/letsencrypt/renewal-hooks/deploy/restart-webmin.sh ``` ```bash #!/usr/bin/env bash set -euo pipefail systemctl restart webmin ``` Hazlo ejecutable y prueba la renovación en modo simulación: ```bash sudo chmod 755 /etc/letsencrypt/renewal-hooks/deploy/restart-webmin.sh sudo certbot renew --dry-run ``` La salida debe terminar con `Congratulations, all simulated renewals succeeded`. Con `--standalone`, la renovación necesita el puerto 80 accesible, así que mantén abierta la regla de UFW para ese puerto. ## Paso 6: Restringir el acceso dentro de Webmin UFW ya limita el puerto 10000, pero Webmin tiene su propio control de acceso por IP. Configurarlo añade una segunda barrera si alguna vez cambias las reglas del firewall. Edita de nuevo `/etc/webmin/miniserv.conf`: ```bash sudo nano /etc/webmin/miniserv.conf ``` Añade al final una línea `allow` con las IP o redes autorizadas, separadas por espacios. Incluye `127.0.0.1` para no bloquear el acceso local: ```ini allow=127.0.0.1 your_ip ``` Reinicia el servicio: ```bash sudo systemctl restart webmin ``` Desde una IP que no esté en la lista, Webmin responderá con un error de acceso denegado aunque el firewall permita la conexión. Puedes hacer el mismo cambio desde el panel en **Webmin > Webmin Configuration > IP Access Control**. En esa misma sección de configuración, revisa también **Authentication**, donde puedes activar el bloqueo de hosts y usuarios tras varios intentos de inicio de sesión fallidos. ## Paso 7: Mantener Webmin actualizado Como Webmin viene de un repositorio de apt, se actualiza junto con el resto del sistema: ```bash sudo apt update sudo apt upgrade ``` Comprueba la versión instalada: ```bash apt policy webmin ``` Si tienes activadas las actualizaciones automáticas de seguridad con `unattended-upgrades`, ten en cuenta que por defecto solo instalan paquetes de los repositorios de Ubuntu; Webmin se actualizará cuando ejecutes `apt upgrade`. ## Solución de problemas **El navegador no carga el panel.** Comprueba que el servicio está activo (`sudo systemctl status webmin`), que escucha en el puerto 10000 (`sudo ss -tlnp | grep 10000`) y que tu IP actual coincide con la de las reglas de UFW y la línea `allow`. Consulta el registro de errores de Webmin: ```bash sudo tail -n 30 /var/webmin/miniserv.error ``` **Has olvidado la contraseña o no puedes iniciar sesión.** Si el usuario root de Webmin usa autenticación Unix, basta con cambiar la contraseña del sistema. Para restablecer directamente la contraseña de un usuario de Webmin, usa el script incluido: ```bash sudo /usr/share/webmin/changepass.pl /etc/webmin root 'your_new_password' ``` **Webmin no arranca tras cambiar el certificado.** Revisa que las rutas de `keyfile`, `certfile` y `extracas` existen y que el dominio coincide exactamente con el nombre del directorio en `/etc/letsencrypt/live/`. ## Conclusión Webmin está instalado desde su repositorio oficial, sirve el panel con un certificado de Let's Encrypt que se renueva solo y únicamente acepta conexiones desde las IP que has autorizado, tanto en UFW como en su propia configuración. Como siguientes pasos, crea usuarios de Webmin con acceso solo a los módulos que necesiten desde **Webmin > Webmin Users**, programa copias de la configuración con **Webmin > Backup Configuration Files** y revisa periódicamente **Webmin > Webmin Actions Log** para auditar los cambios hechos desde el panel.