Tag: Ubuntu

Comments

December 7, 2025

Como Instalar servidor & agente Zabbix en Ubuntu 24.04

Instalación del Servidor y Agente Zabbix en Ubuntu 24.04

En este tutorial, te guiaré a través de los pasos necesarios para instalar el servidor Zabbix y el agente en Ubuntu 24.04. Zabbix es una solución de monitoreo de código abierto que permite supervisar el estado de varios servicios de red, servidores y hardware de red.

Prerequisitos

Antes de comenzar, asegúrate de tener acceso a una máquina con Ubuntu 24.04 y privilegios de superusuario.

Actualiza tu sistema

sudo apt update
sudo apt upgrade -y

Paso 1: Instalación del Servidor Zabbix

  1. Agregar el repositorio de Zabbix

    Primero, necesitas agregar el repositorio oficial de Zabbix a tu sistema:


    wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-2+ubuntu24.04_all.deb
    sudo dpkg -i zabbix-release_6.0-2+ubuntu24.04_all.deb
    sudo apt update

  2. Instalar el servidor Zabbix y la base de datos

    A continuación, instala el servidor Zabbix, la interfaz web y el servidor de base de datos (MySQL o PostgreSQL):


    sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent

  3. Configurar la base de datos

    A continuación, crea la base de datos y el usuario para Zabbix:


    sudo mysql -uroot -p

    Dentro del cliente MySQL, ejecuta los siguientes comandos:


    CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
    CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'tu_contraseña';
    GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;

  4. Importar el esquema de la base de datos de Zabbix

    Importa las tablas predeterminadas:


    zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

  5. Configurar el servidor Zabbix

    Edita el archivo de configuración de Zabbix:


    sudo nano /etc/zabbix/zabbix_server.conf

    Asegúrate de ajustar las siguientes líneas:


    DBPassword=tu_contraseña

  6. Iniciar los servicios de Zabbix

    Finalmente, habilita e inicia el servidor Zabbix y el agente:


    sudo systemctl restart zabbix-server zabbix-agent apache2
    sudo systemctl enable zabbix-server zabbix-agent apache2

Paso 2: Instalación del Agente Zabbix

  1. Configurar el agente Zabbix

    Edita el archivo de configuración del agente Zabbix:


    sudo nano /etc/zabbix/zabbix_agentd.conf

    Modifica la siguiente línea para igualar la dirección del servidor Zabbix:


    Server=<IP_DEL_SERVIDOR_ZABBIX>

  2. Iniciar el agente Zabbix

    Habilita y reinicia el agente:


    sudo systemctl restart zabbix-agent
    sudo systemctl enable zabbix-agent

Paso 3: Configurar la Interfaz Web de Zabbix

  1. Acceder a la interfaz web

    Abre tu navegador y dirígete a la dirección:


    http://<IP_DEL_SERVIDOR_ZABBIX>/zabbix

    Sigue las instrucciones en pantalla para completar la configuración de la interfaz web.

Conclusión

Ahora tienes un servidor Zabbix y un agente funcionando en Ubuntu 24.04. Asegúrate de ajustar cualquier configuración adicional que necesites y comienza a monitorear tus servicios de forma eficiente.

Stephen Dove
Comments

December 7, 2025

Como Instalar Maldet & ClamAV en Ubuntu 24.04

Cómo Instalar Maldet y ClamAV en Ubuntu 24.04

La instalación de Maldet (Linux Malware Detect) y ClamAV en Ubuntu 24.04 puede ayudar a proteger tu servidor de malware y virus. A continuación, te presento un tutorial paso a paso para realizar esta instalación.

Paso 1: Actualizar el Sistema

Antes de comenzar, es recomendable asegurarte de que tu sistema esté completamente actualizado. Abre la terminal y ejecuta los siguientes comandos:

sudo apt update
sudo apt upgrade -y

Paso 2: Instalar ClamAV

ClamAV es un antivirus de código abierto “para Linux”. Para instalarlo, ejecuta:

sudo apt install clamav clamtk -y

Paso 2.1: Actualizar la Base de Datos de ClamAV

Una vez instalado ClamAV, debes actualizar su base de datos. Puedes hacerlo con el siguiente comando:

sudo freshclam

Paso 3: Instalar Maldet

Para instalar Maldet, primero necesitas descargarlo. Ejecuta los siguientes comandos en la terminal:

cd /usr/local/src
sudo wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
sudo tar -xvzf maldetect-current.tar.gz
cd maldetect-*
sudo ./install.sh

Paso 4: Configurar Maldet

Una vez instalado, es recomendable configurar Maldet. Abre su archivo de configuración:

sudo nano /usr/local/maldetect/conf.maldet

En este archivo, puedes ajustar varias configuraciones, como notificaciones por correo electrónico y programación de análisis. Asegúrate de guardar los cambios antes de salir del editor.

Paso 5: Ejecutar un Escaneo

Para ejecutar un escaneo con Maldet, puedes usar el siguiente comando:

sudo maldet --scan-all /

Este comando escaneará todo tu sistema en busca de malware.

Paso 6: Revisar los Resultados

Después de que el escaneo haya finalizado, revisa los resultados con:

sudo maldet --report

Paso 7: Actualizar Maldet

Para asegurarte de que Maldet se mantenga actualizado, puedes usar el siguiente comando:

sudo maldet --update

Conclusión

Siguiendo estos pasos, habrás instalado y configurado Maldet y ClamAV en Ubuntu 24.04. Es recomendable realizar escaneos periódicos para mantener tu servidor protegido de amenazas.

Stephen Dove
Comments

December 7, 2025

Como Instalar Lynis en Ubuntu 24.04

Guía para Instalar Lynis en Ubuntu 24.04

Lynis es una herramienta de auditoría de seguridad para sistemas basados en Unix. A continuación, te mostramos cómo instalarla en Ubuntu 24.04.

Paso 1: Actualizar el Sistema

Antes de instalar cualquier nuevo software, es importante asegurarse de que el sistema esté actualizado. Abre la terminal y ejecuta:

sudo apt update && sudo apt upgrade -y

Paso 2: Instalar Dependencias Necesarias

Lynis puede requerir algunas dependencias. Instálalas utilizando el siguiente comando:

sudo apt install git -y

Paso 3: Descargar Lynis

Descarga el repositorio de Lynis directamente desde GitHub. Ejecuta los siguientes comandos:

cd /opt
sudo git clone https://github.com/CISOfy/lynis.git

Paso 4: Ejecutar Lynis

Una vez descargado Lynis, puedes ejecutar la auditoría con el siguiente comando:

sudo /opt/lynis/lynis audit system

Paso 5: Revisar los Resultados

Después de ejecutar Lynis, revisa los resultados que se mostrarán en la consola. Lynis te proporcionará un informe detallado sobre la seguridad de tu sistema y recomendaciones para mejorarla.

Paso 6: Actualizar Lynis

Es recomendable mantener Lynis actualizado. Para ello, dirígete al directorio de Lynis y ejecuta el siguiente comando para obtener la última versión:

cd /opt/lynis
sudo git pull

Conclusión

Con estos pasos, Lynis estará instalado y funcionando en tu sistema Ubuntu 24.04. Realiza auditorías periódicas para mantener la seguridad de tu sistema.

Stephen Dove
Comments

May 3, 2025

Cómo instalar y configurar LXD en Ubuntu 20.04

Introducción

Un contenedor Linux es un conjunto de procesos independiente del resto del sistema. Para el usuario final, un contenedor Linux funciona como una máquina virtual, pero es mucho más ligero. No tiene la sobrecarga de ejecutar un kernel Linux adicional y los contenedores no requieren compatibilidad con la virtualización de hardware de CPU. Esto significa que puede crear más contenedores que máquinas virtuales en el mismo servidor.

Imagina que tienes un servidor que debe ejecutar varios sitios web para tus clientes. Por un lado, cada sitio web podría ser un bloque de host/servidor virtual de la misma instancia del servidor web Apache o Nginx. Por otro lado, al usar máquinas virtuales, crearías una máquina virtual anidada independiente para cada sitio web. Los contenedores Linux se encuentran entre los hosts virtuales y las máquinas virtuales.

LXD te permite crear y administrar estos contenedores. LXD proporciona un servicio de hipervisor para gestionar todo el ciclo de vida de los contenedores. En este tutorial, configurarás LXD y lo usarás para ejecutar Nginx en un contenedor. Después, dirigirás el tráfico de internet al contenedor para que una página web de ejemplo sea accesible.

Prerrequisitos

Para completar este tutorial, necesitarás lo siguiente:

  • Un servidor con Ubuntu 20.04 . Para configurar un servidor, incluyendo un usuario sudo no root y un firewall, puede crear un Droplet de IsnHosting con Ubuntu 20.04 y luego seguir nuestra Guía de configuración inicial del servidor . Anote la dirección IP pública de su servidor. Más adelante la llamaremos your_server_ip.
  • Al menos 5 GB de almacenamiento en bloque. Para configurarlo, puede seguir la Guía rápida de volúmenes de almacenamiento en bloque de IsnHosting. En la configuración del almacenamiento en bloque, seleccione Manually Format & Mount[para permitir que LXD lo prepare según sea necesario]. Esto se utilizará para almacenar todos los datos relacionados con los contenedores.

Nota: A partir de Ubuntu 20.04, LXD está disponible oficialmente como paquete snap. Este nuevo formato de paquete ofrece varias ventajas. Un paquete snap se puede instalar en cualquier distribución de Linux compatible con este tipo de paquetes . Se recomienda usar un servidor con al menos 2 GB de RAM al ejecutar el paquete snap de LXD. La siguiente tabla resume las características del paquete snap de LXD:

Característicapaquete instantáneo
versiones LXD disponibles2.0, 3.0, 4.0, 4.x
requisitos de memoriaModerado, para el servicio SnapD . Servidor recomendado con 2 GB de RAM.
Consideraciones de actualizaciónPuede aplazar la actualización de LXD hasta 60 días
Capacidad de actualizar desde otro formato de paquetePuede actualizar de deb a snap.

Sigue el resto de este tutorial para usar LXD desde el paquete snap en Ubuntu 20.04. Si, por el contrario, quieres usar el paquete deb de LXD, consulta nuestro tutorial ” Cómo instalar y usar LXD en Ubuntu 18.04″ .

Paso 1: Preparación del entorno para LXD

Antes de configurar y ejecutar LXD, deberá preparar el entorno de su servidor. Esto implica agregar el usuario sudo al lxdgrupo y configurar el backend de almacenamiento.

Cómo agregar su cuenta no root al lxdgrupo Unix

Al configurar su cuenta no root, agréguela al lxdgrupo con el siguiente comando. El addusercomando toma como argumentos la cuenta de usuario y el grupo Unix para agregar la cuenta de usuario al grupo Unix existente:

sudo adduser sammy lxd

Ahora aplica la nueva membresía:

su sammy

Introduzca su contraseña y presione ENTER.

Por último, confirma que tu usuario ahora está agregado al lxdgrupo:

id -nG

Recibirás un resultado como este:

sammy sudo lxd

Ahora está listo para continuar configurando LXD.

Preparación del backend de almacenamiento

Para comenzar, configurará el backend de almacenamiento.

El sistema de almacenamiento recomendado para LXD en Ubuntu es el sistema de archivos ZFS. ZFS también funciona muy bien con el almacenamiento en bloque de IsnHosting . Para habilitar la compatibilidad con ZFS en LXD, primero actualice la lista de paquetes y luego instale el zfsutils-linuxpaquete auxiliar:

sudo apt update
sudo apt install -y zfsutils-linux

Estamos casi listos para ejecutar el script de inicialización de LXD.

Antes de hacerlo, debe identificar y tomar nota del nombre del dispositivo para su almacenamiento en bloque.

Para ello, utilice lspara comprobar el /dev/disk/by-id/directorio:

ls -l /dev/disk/by-id/

En este ejemplo específico, la ruta completa del nombre del dispositivo es /dev/disk/by-id/scsi-0DO_Volume_volume-fra1-0:

Outputtotal 0
lrwxrwxrwx 1 root root  9 Sep  16 20:30 scsi-0DO_Volume_volume-fra1-0 -> ../../sda

Anote la ruta completa del archivo de su dispositivo de almacenamiento. La usará en el siguiente paso al configurar LXD.

Paso 2: Inicialización y configuración de LXD

LXD está disponible como paquete snap en Ubuntu 20.04. Viene preinstalado, pero debes configurarlo.

Primero, verifique que el paquete snap de LXD esté instalado. El comando snap listmuestra los paquetes snap instalados:

snap list

Ubuntu 20.04 preinstala LXD 4.0.3 y está siguiendo el 4.0/stablecanal. LXD 4.0 tiene soporte durante cinco años (hasta 2025). Solo recibirá actualizaciones de seguridad:

Output of the "snap list" command — Listing the installed snap packagesName    Version   Rev    Tracking       Publisher   Notes
core18  20200724  1885   latest/stable  canonical✓  base
lxd     4.0.3     16922  4.0/stable/…   canonical✓  -
snapd   2.45.3.1  8790   latest/stable  canonical✓  snapd

Para obtener más información sobre el paquete snap instalado en LXD, ejecute snap info lxd. Podrá ver las versiones disponibles, incluyendo la fecha de la última actualización.

Ahora configurarás LXD.

Configuración de opciones de almacenamiento para LXD

Inicie el proceso de inicialización de LXD utilizando el sudo lxd initcomando:

sudo lxd init

Primero, el programa le preguntará si desea habilitar la agrupación en clústeres de LXD. Para este tutorial, presione ENTERpara aceptar el valor predeterminado noo escriba noy luego presione ENTER. La agrupación en clústeres de LXD es un tema avanzado que permite alta disponibilidad para su configuración de LXD y requiere al menos tres servidores LXD ejecutándose en un clúster:

OutputWould you like to use LXD clustering? (yes/no) [default=no]: no

Las siguientes seis indicaciones abordan el pool de almacenamiento. Proporcione las siguientes respuestas:

  • Presione ENTERpara configurar un nuevo grupo de almacenamiento.
  • Presione ENTERpara aceptar el nombre del grupo de almacenamiento predeterminado.
  • Presione ENTERpara aceptar el zfsbackend de almacenamiento predeterminado.
  • Presione ENTERpara crear un nuevo grupo ZFS.
  • Escriba yespara utilizar un dispositivo de bloque existente.
  • Por último, escriba la ruta completa al nombre del dispositivo de almacenamiento en bloque (esto es lo que registró anteriormente. Debería ser algo como: )./dev/disk/by-id/device_name

Sus respuestas se verán así:

OutputDo you want to configure a new storage pool? (yes/no) [default=yes]: yes
Name of the new storage pool [default=default]: default
Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]: zfs
Create a new ZFS pool? (yes/no) [default=yes]: yes
Would you like to use an existing block device? (yes/no) [default=no]: yes
Path to the existing block device: /dev/disk/by-id/scsi-0DO_Volume_volume-fra1-01

Ya has configurado el backend de almacenamiento para LXD. Siguiendo con initel script de LXD, configurarás algunas opciones de red.

Configuración de opciones de red para LXD

LXD ahora pregunta si desea conectarse a un servidor MAAS (Metal As A Server). MAAS es un software que hace que un servidor físico parezca una máquina virtual y se gestione como tal.

Estamos ejecutando LXD en modo independiente, por lo tanto, acepte el valor predeterminado y responda no:

OutputWould you like to connect to a MAAS server? (yes/no) [default=no]: no

Se le pedirá que configure un puente de red para los contenedores LXD. Esto habilita las siguientes funciones:

  • Cada contenedor obtiene automáticamente una dirección IP privada.
  • Cada contenedor puede comunicarse con los demás a través de la red privada.
  • Cada contenedor puede iniciar conexiones a Internet.
  • De forma predeterminada, cada contenedor permanece inaccesible desde internet; no es posible iniciar una conexión desde internet y acceder a un contenedor a menos que se habilite explícitamente. Aprenderá a permitir el acceso a un contenedor específico en el siguiente paso.

Cuando se le solicite crear un nuevo puente de red local, elija yes:

OutputWould you like to create a new local network bridge? (yes/no) [default=yes]: yes

Luego acepta el nombre predeterminado lxdbr0:

OutputWhat should the new bridge be called? [default=lxdbr0]: lxdbr0

Acepte la selección automatizada del rango de direcciones IP privadas para el puente:

OutputWhat IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto

Finalmente, LXD plantea las siguientes preguntas diversas:

Cuando se le pregunte si desea administrar LXD a través de la red, presione ENTERo responda no:

OutputWould you like LXD to be available over the network? (yes/no) [default=no]: no

Cuando se le pregunte si desea actualizar automáticamente las imágenes de contenedores obsoletos, presione ENTERo responda yes:

OutputWould you like stale cached images to be updated automatically? (yes/no) [default=yes] yes

Cuando se le pregunte si desea ver y conservar la configuración YAML que acaba de crear, responda yessi así lo desea. De lo contrario, presione ENTERo responda no:

OutputWould you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: no

Se ejecutará un script en segundo plano. Es normal que no se reciba ninguna salida.

Ya has configurado tus opciones de red y almacenamiento para LXD. A continuación, crearás tu primer contenedor LXD.

Paso 2: Creación y configuración de un contenedor LXD

Ahora que ha configurado LXD correctamente, está listo para crear y administrar su primer contenedor. En LXD, los contenedores se administran mediante el comando lxcseguido de una acción, como list, launch, y .startstopdelete

Utilice lxc listpara ver los contenedores instalados disponibles:

lxc list

Dado que esta es la primera vez que el lxccomando se comunica con el hipervisor LXD, muestra información sobre cómo iniciar un contenedor. Finalmente, el comando muestra una lista vacía de contenedores. Esto es normal, ya que aún no hemos creado ninguno.

Output of the "lxd list" commandTo start your first container, try: lxc launch ubuntu:18.04
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+

Ahora cree un contenedor que ejecute Nginx. Para ello, primero use el lxc launchcomando para crear e iniciar un contenedor de Ubuntu 18.04 llamado webserver.

Crea el webservercontenedor. ” 18.04in” ubuntu:18.04es un acceso directo para Ubuntu 18.04. ubuntu:Es el identificador del repositorio preconfigurado de imágenes LXD. También puedes usar ubuntu:bionic:

lxc launch ubuntu:20.04 webserver

Nota : Puede encontrar la lista completa de imágenes de Ubuntu disponibles ejecutando [<sub> lxc image list ubuntu:y</sub> otras distribuciones de Linux ejecutando [<sub>y</sub>] lxc image list images:. Tanto [<sub> ubuntu:y</sub> images:son repositorios de imágenes de contenedor. Para cada imagen de contenedor, puede obtener más información con el comando [<sub>y</sub>] lxc image info ubuntu:20.04.

Como es la primera vez que crea un contenedor, este comando descarga la imagen del contenedor de internet y la almacena en caché. Verá este resultado una vez que el nuevo contenedor termine de descargarse:

OutputCreating webserver
Starting webserver

Con el webservercontenedor iniciado, use el lxc listcomando para mostrar información sobre él. Hemos añadido ` --columns ns4para` para mostrar solo las columnas de name`,` statey IPv4`dirección`. El comando predeterminado lxc listmuestra tres columnas más: la dirección IPv6, si el contenedor es persistente o efímero, y si hay instantáneas disponibles para cada contenedor.

lxc list --columns ns4

La salida muestra una tabla con el nombre de cada contenedor, su estado actual, su dirección IP y su tipo:

Output+-----------+---------+------------------------------------+
|   NAME    |  STATE  |        IPV4                        |
+-----------+---------+------------------------------------+
| webserver | RUNNING | your_webserver_container_ip (eth0) |
+-----------+---------+------------------------------------+

El servidor DHCP de LXD proporciona esta dirección IP y, en la mayoría de los casos, se mantendrá igual incluso al reiniciar el servidor. Sin embargo, en los siguientes pasos, creará iptablesreglas para reenviar conexiones desde internet al contenedor. Por lo tanto, debe indicarle al servidor DHCP de LXD que siempre asigne la misma dirección IP al contenedor.

El siguiente conjunto de comandos configurará el contenedor para obtener una asignación de IP estática. Primero, anulará la configuración de red del eth0dispositivo heredada del perfil LXD predeterminado. Esto le permite establecer una dirección IP estática, lo que garantiza la correcta comunicación del tráfico web hacia y desde el contenedor.

Específicamente, lxc config devicees un comando que configconfigura un dispositivo device. La primera línea contiene la subacción overridepara anular el dispositivo eth0del contenedor webserver. La segunda línea contiene la subacción para configurar el ipv4.addresscampo del eth0dispositivo del webservercontenedor con la dirección IP proporcionada inicialmente por el servidor DHCP.

Ejecute el primer configcomando:

lxc config device override webserver eth0

Recibirás un resultado como este:

OutputDevice eth0 overridden for webserver

Ahora configure la IP estática:

lxc config device set webserver eth0 ipv4.address your_webserver_container_ip

Si el comando es exitoso, no recibirá ninguna salida.

Reiniciar el contenedor:

lxc restart webserver

Ahora verifique el estado del contenedor:

lxc list

Deberías ver que el contenedor es RUNNINGy la IPV4dirección es tu dirección estática.

Está listo para instalar y configurar Nginx dentro del contenedor.

Paso 3: Configuración de Nginx dentro de un contenedor LXD

En este paso te conectarás al webservercontenedor y configurarás el servidor web.

Conéctese al contenedor con lxc shellel comando, que toma el nombre del contenedor e inicia un shell dentro del contenedor:

lxc shell webserver

Una vez dentro del contenedor, el indicador de shell se verá así:

[environment second]  

Este shell, incluso si es un shell raíz, está limitado al contenedor. Todo lo que se ejecuta en él permanece en el contenedor y no puede escapar al servidor host.

Nota: Al introducir un shell en un contenedor, es posible que vea una advertencia como mesg: ttyname failed: No such device. Este mensaje se genera cuando el shell del contenedor intenta ejecutar el comando mesgdesde el archivo de configuración /root/.profile. Puede ignorarlo sin problema. Para evitarlo, puede eliminar el comando mesg n || truede /root/.profile.

Una vez dentro de su contenedor, actualice la lista de paquetes e instale Nginx:

apt update
apt install nginx

Con Nginx instalado, ahora editará la página web predeterminada de Nginx. En concreto, añadirá dos líneas de texto para que quede claro que este sitio está alojado en el webservercontenedor.

Usando nanosu editor preferido, abra el archivo /var/www/html/index.nginx-debian.html:

nano /var/www/html/index.nginx-debian.html

Añade las dos frases resaltadas al archivo:

/var/www/html/index.nginx-debian.html<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx on LXD container webserver!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...

Editó el archivo en dos partes y agregó específicamente el texto on LXD container webserver. Guarde el archivo y salga del editor de texto.

Ahora cierre la sesión del contenedor:

logout

Una vez que aparezca el mensaje predeterminado del servidor, use [nombre del servidor] curlpara comprobar que el servidor web del contenedor funciona correctamente. Para ello, necesitará la dirección IP del contenedor web, que obtuvo con el lxc listcomando anterior.

Utilice curlpara probar su servidor web:

curl http://your_webserver_container_ip

Recibirá la página de bienvenida HTML predeterminada de Nginx. Tenga en cuenta que incluye sus modificaciones:

Output<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx on LXD container webserver!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...

El servidor web funciona, pero solo se puede acceder a él desde el host usando la IP privada. En el siguiente paso, enrutará las solicitudes externas a este contenedor para que todo el mundo pueda acceder a su sitio web a través de internet.

Paso 4: Reenvío de conexiones entrantes al contenedor Nginx mediante LXD

Ahora que ha configurado Nginx, es hora de conectar el contenedor del servidor web a internet. Para comenzar, debe configurar el servidor para que reenvíe 80al webservercontenedor cualquier conexión que reciba en el puerto. Para ello, creará una iptablesregla para reenviar las conexiones de red. Puede obtener más información sobre IPTables en nuestros tutoriales ” Cómo funciona el firewall de IPtables” y “Fundamentos de IPtables: Reglas y comandos comunes del firewall” .

Este iptablescomando requiere dos direcciones IP: la dirección IP pública del servidor ( your_server_ip) y la dirección IP privada del webservercontenedor ( your_webserver_container_ip), que puede obtener mediante el lxc listcomando .

Ejecute este comando para crear una nueva regla de IPtables:

PORT=80 PUBLIC_IP=your_server_ip CONTAINER_IP=your_container_ip IFACE=eth0  sudo -E bash -c 'iptables -t nat -I PREROUTING -i $IFACE -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "forward to the Nginx container"'

Estudiemos ese comando:

  • -t natespecifica que estamos usando la nattabla para la traducción de direcciones.
  • -I PREROUTINGespecifica que estamos agregando la regla a la cadena PREROUTING.
  • -i $IFACEespecifica la interfaz eth0, que es la interfaz de red pública predeterminada en el host para Droplets.
  • -p TCPdice que estamos usando el protocolo TCP.
  • -d $PUBLIC_IPEspecifica la dirección IP de destino para la regla.
  • --dport $PORT: especifica el puerto de destino (por ejemplo 80).
  • -j DNATdice que queremos realizar un salto a Destino NAT (DNAT).
  • --to-destination $CONTAINER_IP:$PORT dice que queremos que la solicitud vaya a la dirección IP del contenedor específico y al puerto de destino.

Nota: Puede reutilizar este comando para configurar reglas de reenvío. Restablezca las variables , y PORTal PUBLIC_IPprincipio de la línea. Simplemente cambie los valores resaltados.CONTAINER_IPIFACE

Ahora enumera tus reglas de IPTables:

sudo iptables -t nat -L PREROUTING

Verás un resultado como este:

[secondary_label Output] 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             your_server_ip       tcp dpt:http /* forward to this container */ to:your_container_ip:80
...

Ahora prueba que el servidor web sea accesible desde Internet.

Utilice el curlcomando desde su máquina local para probar las conexiones:

curl --verbose  'http://your_server_ip'

Verás los encabezados seguidos del contenido de la página web que creaste en el contenedor:

Output*   Trying your_server_ip...
* Connected to your_server_ip (your_server_ip) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.47.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.10.0 (Ubuntu)
...
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
    body {
...

Esto confirma que las solicitudes van al contenedor.

Por último, guardará la regla de firewall para que se vuelva a aplicar después de reiniciar.

Para ello, primero instale el iptables-persistentpaquete:

sudo apt install iptables-persistent

Al instalar el paquete, la aplicación le solicitará que guarde las reglas de firewall actuales. Acepte y guarde todas las reglas.

Al reiniciar el equipo, se cargará la regla del firewall. Además, el servicio Nginx del contenedor LXD se reiniciará automáticamente.

Has configurado LXD correctamente. En el paso final, aprenderás a detener y destruir el servicio.

Paso 5: Detención y retirada de contenedores mediante LXD

Puedes decidir que quieres desactivar el contenedor y eliminarlo. En este paso, lo detendrás y lo eliminarás.

Primero, detenga el contenedor:

lxc stop webserver

Utilice el lxc listcomando para verificar el estado:

lxc list

Verás que el estado del contenedor dice STOPPED:

Output+-----------+---------+------+------+------------+-----------+
|   NAME    |  STATE  | IPV4 | IPV6 |    TYPE    | SNAPSHOTS |
+-----------+---------+------+------+------------+-----------+
| webserver | STOPPED |      |      | PERSISTENT | 0         |
+-----------+---------+------+------+------------+-----------+

Para retirar el contenedor, utilice lxc delete:

lxc delete webserver

Al ejecutarlo lxc listnuevamente se muestra que no hay ningún contenedor ejecutándose:

lxc list

El comando generará el siguiente resultado:

+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+

Utilice el lxc helpcomando para ver opciones adicionales.

Para eliminar la regla de firewall que enruta el tráfico al contenedor, primero ubique la regla en la lista de reglas con este comando, que asocia un número de línea con cada regla:

sudo iptables -t nat -L PREROUTING --line-numbers

Verás tu regla, precedida por un número de línea, de la siguiente manera:

OutputChain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    DNAT       tcp  --  anywhere             your_server_ip      tcp dpt:http /* forward to the Nginx container */ to:your_container_ip

Utilice ese número de línea para eliminar la regla:

sudo iptables -t nat -D PREROUTING 1

Enumere nuevamente las reglas para garantizar la eliminación:

sudo iptables -t nat -L PREROUTING --line-numbers

Se elimina la regla:

OutputChain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination

Ahora guarde los cambios para que la regla no vuelva a aparecer cuando reinicie su servidor:

sudo netfilter-persistent save

Ahora puedes crear otro contenedor con tu propia configuración y agregar una nueva regla de firewall para reenviarle tráfico.

Conclusión

En este tutorial, instalaste y configuraste LXD. Luego, creaste un sitio web con Nginx, ejecutándose dentro de un contenedor LXD, y lo publicaste mediante IPtables.

Desde aquí, puedes configurar más sitios web, cada uno confinado en su propio contenedor, y usar un proxy inverso para dirigir el tráfico al contenedor correspondiente. El tutorial ” Cómo alojar varios sitios web con Nginx y HAProxy usando LXD en Ubuntu 16.04″ te guía en esta configuración.

Consulte la documentación de referencia de LXD para obtener más información sobre cómo utilizar LXD.

Para practicar con LXD, puedes probar LXD en línea y seguir el tutorial basado en la web.

Para obtener asistencia al usuario sobre LXD, visita el foro de discusión de LXD .

Stephen Dove
Comments

May 2, 2025

Cómo administrar paquetes en Ubuntu y Debian con Apt-Get y Apt-Cache

Introducción

Apt es una interfaz de línea de comandos para el sistema de empaquetado dpkg y es la forma preferida de gestionar software desde la línea de comandos en muchas distribuciones. Es el principal sistema de gestión de paquetes en Debian y distribuciones Linux basadas en Debian, como Ubuntu.

Mientras que una herramienta llamada “dpkg” constituye la capa de empaquetado subyacente, aptproporciona apt-cacheinterfaces intuitivas e implementa la gestión de dependencias. Esto permite a los usuarios gestionar grandes cantidades de software de forma eficiente y sencilla.

En esta guía, analizaremos el uso básico de apty apt-cachecómo pueden administrar su software. Practicaremos en un servidor en la nube Ubuntu 22.04, pero los mismos pasos y técnicas se aplican a cualquier otra distribución basada en Ubuntu o Debian.

Cómo actualizar la base de datos de paquetes con Apt

Apt opera con una base de datos de software conocido y disponible. Realiza instalaciones, búsquedas de paquetes y muchas otras operaciones consultando esta base de datos.

Por eso, antes de comenzar cualquier operación de empaquetado con apt, debemos asegurarnos de que nuestra copia local de la base de datos esté actualizada.

Actualice la base de datos local con apt update. Apt requiere privilegios administrativos para la mayoría de las operaciones:

sudo apt update

Verá una lista de los servidores de los que estamos recuperando información. Después de esto, su base de datos debería estar actualizada.

Cómo actualizar los paquetes instalados con Apt

Puede actualizar los paquetes de su sistema usando apt upgrade. Se le solicitará que confirme las actualizaciones y reinicie los servicios del sistema actualizados.

sudo apt upgrade

Cómo instalar nuevos paquetes con Apt

Si conoce el nombre de un paquete que necesita instalar, puede instalarlo usando apt install:

sudo apt install package1 package2 …

Puedes ver que es posible instalar varios paquetes a la vez, lo que es útil para adquirir todo el software necesario para un proyecto en un solo paso.

Apt instala no sólo el software solicitado, sino también cualquier software necesario para instalarlo o ejecutarlo.

Puedes instalar un programa llamado slescribiendo:

sudo apt install sl

Después de eso, podrás ejecutarlo slen la línea de comandos.

Cómo eliminar un paquete con Apt

Para eliminar un paquete de su sistema, ejecute apt remove:

sudo apt remove package_name

Este comando elimina el paquete, pero conserva los archivos de configuración por si lo vuelve a instalar más adelante. De esta forma, la configuración se mantendrá intacta, aunque el programa no esté instalado.

Si necesita limpiar los archivos de configuración y el programa, utilice apt purge:

sudo apt purge package_name

Esto desinstala el paquete y elimina cualquier archivo de configuración asociado con el paquete.

Para eliminar cualquier paquete que se instaló automáticamente para dar soporte a otro programa y que ya no sea necesario, escriba el siguiente comando:

sudo apt autoremove

También puede especificar un nombre de paquete después del autoremovecomando para desinstalar un paquete y sus dependencias.

Banderas de opciones comunes de Apt

Hay varias opciones adicionales que se pueden especificar mediante indicadores. Repasaremos algunas de las más comunes.

Para hacer un “ensayo” de un procedimiento para tener una idea de lo que hará una acción, puede pasar la -sbandera para “simular”:

sudo apt install -s htop

OutputReading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  lm-sensors
The following NEW packages will be installed:
  htop
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Inst htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])
Conf htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])

En lugar de acciones reales, puede ver una sección Insty Confque especifica dónde se instalaría y configuraría el paquete si se eliminara el “-s”.

Si no desea que se le solicite que confirme sus opciones, también puede pasar la -ybandera para asumir automáticamente “sí” a las preguntas.

sudo apt remove -y htop

Si desea descargar un paquete, pero no instalarlo, puede ejecutar el siguiente comando:

sudo apt install -d packagename

Los archivos se conservarán en formato /var/cache/apt/archives.

Si desea suprimir la salida, puede pasar la -qqbandera al comando:

sudo apt remove -qq packagename

Cómo encontrar un paquete con Apt-Cache

La herramienta de empaquetado apt es en realidad un conjunto de herramientas complementarias relacionadas que se utilizan para administrar el software del sistema.

Mientras aptse utiliza para actualizar, instalar y eliminar paquetes, apt-cachese utiliza para consultar la base de datos de paquetes para obtener información sobre los paquetes.

Puede usar apt-cache searchpara buscar un paquete que se ajuste a sus necesidades. Tenga en cuenta que apt-cache no suele requerir privilegios de administrador:

apt-cache search what_you_are_looking_for

Por ejemplo, para encontrar htopuna versión mejorada del topmonitor del sistema, puede utilizar:

apt-cache search htop

Outputhtop - interactive processes viewer
aha - ANSI color to HTML converter
bashtop - Resource monitor that shows usage and stats
bpytop - Resource monitor that shows usage and stats
btop - Modern and colorful command line resource monitor that shows usage and stats
libauthen-oath-perl - Perl module for OATH One Time Passwords
pftools - build and search protein and DNA generalized profiles

También puedes buscar términos más genéricos. En este ejemplo, buscaremos software de conversión de MP3:

apt-cache search mp3 convert

Outputabcde - A Better CD Encoder
cue2toc - converts CUE files to cdrdao's TOC format
dir2ogg - audio file converter into ogg-vorbis format
easytag - GTK+ editor for audio file tags
ebook2cw - convert ebooks to Morse MP3s/OGGs
ebook2cwgui - GUI for ebook2cw
ffcvt - ffmpeg convert wrapper tool
. . .

Cómo ver la información del paquete con Apt-Cache

Para ver información sobre un paquete, incluida una descripción extendida, utilice la siguiente sintaxis:

apt-cache show package_name

Esto también proporcionará el tamaño de la descarga y las dependencias necesarias para el paquete.

Para ver si un paquete está instalado y verificar a qué repositorio pertenece, puede utilizar apt-cache policy:

apt-cache policy package_name

Conclusión

Ahora debería saber lo suficiente sobre apt-get y apt-cache para administrar la mayor parte del software en su servidor.

Si bien a veces es necesario ir más allá de estas herramientas y del software disponible en los repositorios, la mayoría de las operaciones de software pueden gestionarse mediante estas herramientas.

A continuación, podrá leer sobre la gestión de paquetes de Ubuntu y Debian en detalle.

Stephen Dove
Comments

April 18, 2025

Cómo instalar Docker en Ubuntu: guía paso a paso

Introducción

Docker es una aplicación que simplifica la gestión de procesos de aplicaciones en contenedores . Los contenedores permiten ejecutar aplicaciones en procesos con recursos aislados. Son similares a las máquinas virtuales, pero son más portátiles, consumen menos recursos y dependen más del sistema operativo host.

Para obtener una introducción detallada a los diferentes componentes de un contenedor Docker, consulte El ecosistema de Docker: una introducción a los componentes comunes .

En este tutorial, instalarás y usarás Docker Community Edition (CE) en Ubuntu. Instalarás Docker, trabajarás con contenedores e imágenes, y subirás una imagen a un repositorio de Docker. Además, aprenderás a iniciar, detener y eliminar contenedores, así como a confirmar los cambios de un contenedor en una nueva imagen de Docker. Este tutorial también explica cómo instalar Docker con compatibilidad con GPU, errores comunes y cómo solucionarlos, y las mejores prácticas de seguridad.

Implemente directamente desde GitHub en minutos.

Prerrequisitos

Para seguir este tutorial, necesitarás lo siguiente:

  • Un servidor Ubuntu configurado siguiendo la guía de configuración inicial del servidor Ubuntu , incluido un usuario sudono root y un firewall.
  • Una cuenta en Docker Hub si desea crear sus propias imágenes y enviarlas a Docker Hub, como se muestra en los pasos 7 y 8.

Paso 1: Instalación de Docker

El paquete de instalación de Docker disponible en el repositorio oficial de Ubuntu podría no ser la última versión. Para asegurarnos de obtener la última versión, instalaremos Docker desde el repositorio oficial. Para ello, añadiremos una nueva fuente de paquete, añadiremos la clave GPG de Docker para garantizar que las descargas sean válidas y, a continuación, instalaremos el paquete.

Primero, actualice su lista existente de paquetes:

sudo apt update

A continuación, instale algunos paquetes de requisitos previos que permitan aptutilizar paquetes a través de HTTPS:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Luego, agregue la clave GPG del repositorio oficial de Docker a su sistema:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Agregue el repositorio de Docker a las fuentes de APT:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Actualice nuevamente su lista existente de paquetes para que se reconozca la adición:

sudo apt update

Asegúrate de que estás a punto de instalar desde el repositorio de Docker en lugar del repositorio predeterminado de Ubuntu:

apt-cache policy docker-ce

Verá un resultado como este, aunque el número de versión de Docker puede ser diferente: Salida de la política apt-cache docker-ce

docker-ce:
  Installed: (none)
  Candidate: 5:20.10.14~3-0~ubuntu-jammy
  Version table:
     5:20.10.14~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.13~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

Tenga en cuenta que docker-ceno está instalado, pero el candidato para la instalación es del repositorio Docker para Ubuntu.

Por último, instala Docker:

sudo apt install docker-ce

Docker ya debería estar instalado, el demonio iniciado y el proceso habilitado para iniciarse al arrancar. Compruebe que se esté ejecutando:

sudo systemctl status docker

La salida debería ser similar a la siguiente, mostrando que el servicio está activo y en ejecución:

Output● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-01 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 7854 (dockerd)
      Tasks: 7
     Memory: 38.3M
        CPU: 340ms
     CGroup: /system.slice/docker.service
             └─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Al instalar Docker ahora, no solo obtendrá el servicio Docker (daemon), sino también la utilidad de línea de comandos o el cliente Docker. Más adelante en este tutorial, dockerveremos cómo usar el comando.docker

Paso 2: Ejecutar el comando Docker sin sudo (opcional)

De forma predeterminada, el dockercomando solo puede ser ejecutado por el usuario root o por un usuario del grupo Docker , que se crea automáticamente durante la instalación de Docker. Si intenta ejecutar el dockercomando sin prefijarlo con sudoo sin pertenecer al grupo Docker , obtendrá un resultado como este:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Si desea evitar escribir sudocada vez que ejecuta el dockercomando, agregue su nombre de usuario al dockergrupo:

sudo usermod -aG docker ${USER}

Para aplicar la nueva membresía del grupo, cierre la sesión del servidor y vuelva a iniciarla, o escriba lo siguiente:

su - ${USER}

Se le pedirá que ingrese su contraseña de usuario para continuar.

Confirme que su usuario ahora está agregado al grupo Docker escribiendo:

groups
Outputsammy sudo docker

Si necesita agregar un usuario al dockergrupo con el que no ha iniciado sesión, declare ese nombre de usuario explícitamente usando:

sudo usermod -aG docker username

El resto de este artículo asume que está ejecutando el dockercomando como usuario del grupo Docker . Si no lo hace, anteponga “<nombre del usuario>” a los comandos sudo.

Exploremos el dockercomando a continuación.

Paso 3: Uso del comando Docker

Usar dockerconsiste en pasarle una cadena de opciones y comandos seguidos de argumentos. La sintaxis es la siguiente:

docker [option] [command] [arguments]

Para ver todos los subcomandos disponibles, escriba:

docker

A partir de la versión de Docker20.10.14La lista completa de subcomandos disponibles incluye:

Output  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Para ver las opciones disponibles para un comando específico, escriba:

docker docker-subcommand --help

Para ver información de todo el sistema sobre Docker, utilice:

docker info

Exploremos algunos de estos comandos. Empezaremos trabajando con imágenes.

Paso 4: Trabajar con imágenes de Docker

Los contenedores Docker se crean a partir de imágenes de Docker. Por defecto, Docker obtiene estas imágenes de Docker Hub , un registro de Docker gestionado por Docker, la empresa responsable del proyecto Docker. Cualquiera puede alojar sus imágenes de Docker en Docker Hub, por lo que la mayoría de las aplicaciones y distribuciones de Linux que necesite tendrán imágenes alojadas allí.

Para comprobar si puede acceder y descargar imágenes desde Docker Hub, escriba:

docker run hello-world

La salida indicará que Docker funciona correctamente:

OutputUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

...

Inicialmente, Docker no pudo encontrar la hello-worldimagen localmente, por lo que la descargó de Docker Hub, el repositorio predeterminado. Una vez descargada, Docker creó un contenedor a partir de ella y la aplicación dentro del contenedor se ejecutó, mostrando el mensaje.

Puedes buscar imágenes disponibles en Docker Hub usando el dockercomando con el searchsubcomando. Por ejemplo, para buscar la imagen de Ubuntu, escribe:

docker search ubuntu

El script rastreará Docker Hub y devolverá una lista de todas las imágenes cuyo nombre coincida con la cadena de búsqueda. En este caso, el resultado será similar a este:

OutputNAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   14048     [OK]
websphere-liberty                WebSphere Liberty multi-architecture images …   283       [OK]
ubuntu-upstart                   DEPRECATED, as is Upstart (find other proces…   112       [OK]
neurodebian                      NeuroDebian provides neuroscience research s…   88        [OK]
open-liberty                     Open Liberty multi-architecture images based…   51        [OK]
...

En la columna OFICIAL , OK indica una imagen creada y respaldada por la empresa responsable del proyecto. Una vez identificada la imagen que desea usar, puede descargarla a su computadora con el pullsubcomando.

Ejecute el siguiente comando para descargar la ubuntuimagen oficial a su computadora:

docker pull ubuntu

Verá el siguiente resultado:

OutputUsing default tag: latest
latest: Pulling from library/ubuntu
e0b25ef51634: Pull complete
Digest: sha256:9101220a875cee98b016668342c489ff0674f247f6ca20dfc91b91c0f28581ae
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Tras descargar una imagen, puede ejecutar un contenedor con ella mediante el runsubcomando. Como vio en el hello-worldejemplo, si no se ha descargado una imagen al dockerejecutar el runsubcomando, el cliente Docker primero la descargará y luego ejecutará un contenedor con ella.

Para ver las imágenes que se han descargado en tu ordenador, escribe:

docker images

El resultado será similar al siguiente:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              1d622ef86b13        3 weeks ago         73.9MB
hello-world         latest              bf756fb1ae65        4 months ago        13.3kB

Como verá más adelante en este tutorial, las imágenes que utiliza para ejecutar contenedores se pueden modificar y usar para generar nuevas imágenes, que luego pueden cargarse ( el término técnico es “push “) en Docker Hub u otros registros de Docker.

Veamos cómo ejecutar contenedores con más detalle.

Paso 5: Ejecución de un contenedor Docker

El hello-worldcontenedor que ejecutaste en el paso anterior es un ejemplo de un contenedor que se ejecuta y finaliza tras emitir un mensaje de prueba. Los contenedores pueden ser mucho más útiles y pueden ser interactivos. Al fin y al cabo, son similares a las máquinas virtuales, solo que consumen menos recursos.

A modo de ejemplo, ejecutemos un contenedor con la imagen más reciente de Ubuntu. La combinación de las opciones -i y -t proporciona acceso interactivo al contenedor a través del shell:

docker run -it ubuntu

El símbolo del sistema debería cambiar para reflejar el hecho de que ahora está trabajando dentro del contenedor y debería adoptar este formato:

Outputroot@d9b100f2f636:/#

Anote el ID del contenedor en el símbolo del sistema. En este ejemplo, es d9b100f2f636. Necesitará ese ID más adelante para identificar el contenedor cuando desee eliminarlo.

Ahora puedes ejecutar cualquier comando dentro del contenedor. Por ejemplo, actualicemos la base de datos de paquetes dentro del contenedor. No necesitas prefijar ningún comando con sudo, ya que estás operando dentro del contenedor como usuario root :

apt update

Luego, instala cualquier aplicación. Instalemos Node.js:

apt install nodejs

Esto instala Node.js en el contenedor desde el repositorio oficial de Ubuntu. Al finalizar la instalación, verifique que Node.js esté instalado:

node -v

Verás el número de versión mostrado en tu terminal:

Outputv12.22.9

Cualquier cambio que realice dentro del contenedor sólo se aplicará a ese contenedor.

Para salir del contenedor, escriba exiten el aviso.

A continuación veamos cómo administrar los contenedores en nuestro sistema.

Paso 6: Administrar contenedores Docker

Después de usar Docker durante un tiempo, tendrás muchos contenedores activos (en ejecución) e inactivos en tu equipo. Para ver los activos , usa:

docker ps

Verá un resultado similar al siguiente:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED

En este tutorial, iniciaste dos contenedores: uno desde la hello-worldimagen y otro desde la ubuntuimagen. Ambos contenedores ya no se ejecutan, pero aún existen en tu sistema.

Para ver todos los contenedores (activos e inactivos), ejecute docker psel -ainterruptor:

docker ps -a

Verá un resultado similar a este:

OutputCONTAINER ID   IMAGE         COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu        "bash"     About a minute ago   Exited (0) 7 seconds ago             dazzling_taussig
587000e49d53   hello-world   "/hello"   5 minutes ago        Exited (0) 5 minutes ago             adoring_kowalevski

Para ver el último contenedor que ha creado, pásele el -linterruptor:

docker ps -l
OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                     PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    3 minutes ago   Exited (0) 2 minutes ago             dazzling_taussig

Para iniciar un contenedor detenido, utilice docker start, seguido del ID o el nombre del contenedor. Iniciemos el contenedor basado en Ubuntu con el ID de 1c08a7a0d0e4:

docker start 1c08a7a0d0e4

El contenedor se iniciará y podrás usar docker pspara ver su estado:

OutputCONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
1c08a7a0d0e4   ubuntu    "bash"    6 minutes ago   Up 8 seconds             dazzling_taussig

Para detener un contenedor en ejecución, use docker stop, seguido del ID o nombre del contenedor. En esta ocasión, usaremos el nombre que Docker le asignó al contenedor, que es dazzling_taussig:

docker stop dazzling_taussig

Una vez que haya decidido que ya no necesita un contenedor, elimínelo con el docker rmcomando, usando nuevamente el ID o el nombre del contenedor. Use el docker ps -acomando para encontrar el ID o el nombre del contenedor asociado a la hello-worldimagen y elimínelo.

docker rm adoring_kowalevski

Puedes crear un nuevo contenedor y asignarle un nombre con el --namemodificador. También puedes usarlo --rmpara crear un contenedor que se elimine automáticamente al detenerse. Consulta el docker run helpcomando para obtener más información sobre estas y otras opciones.

Los contenedores se pueden convertir en imágenes que puedes usar para crear nuevos contenedores. Veamos cómo funciona.

Paso 7: Confirmar cambios en un contenedor a una imagen de Docker

Al iniciar una imagen de Docker, puedes crear, modificar y eliminar archivos igual que con una máquina virtual. Los cambios que realices solo se aplicarán a ese contenedor. Puedes iniciarlo y detenerlo, pero una vez que lo destruyas con el docker rmcomando, los cambios se perderán definitivamente.

Esta sección le muestra cómo guardar el estado de un contenedor como una nueva imagen de Docker.

Tras instalar Node.js en el contenedor de Ubuntu, tendrás un contenedor que se ejecuta a partir de una imagen, pero este contenedor es diferente de la imagen que usaste para crearlo. Sin embargo, podrías reutilizar este contenedor de Node.js como base para nuevas imágenes más adelante.

Luego, confirme los cambios en una nueva instancia de imagen de Docker usando el siguiente comando.

docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

El parámetro -m se utiliza para el mensaje de confirmación que te ayuda a ti y a otros a saber qué cambios realizaste, mientras que -a se usa para especificar el autor. container_idEs el que anotaste anteriormente en el tutorial al iniciar la sesión interactiva de Docker. A menos que hayas creado repositorios adicionales en Docker Hub, repositorysuele ser tu nombre de usuario de Docker Hub.

Por ejemplo, para el usuario sammy , con el ID de contenedor de d9b100f2f636, el comando sería:

docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

Al confirmar una imagen, esta se guarda localmente en tu ordenador. Más adelante en este tutorial, aprenderás a subir una imagen a un registro de Docker como Docker Hub para que otros usuarios puedan acceder a ella.

Al enumerar nuevamente las imágenes de Docker, se mostrará la nueva imagen, así como la antigua de la que se derivó:

docker images

Verás un resultado como este:

OutputREPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs   latest              7c1f35226ca6        7 seconds ago       179MB
...

En este ejemplo, ubuntu-nodejsse muestra la nueva imagen, derivada de la ubuntuimagen existente de Docker Hub. La diferencia de tamaño refleja los cambios realizados. En este ejemplo, el cambio fue la instalación de NodeJS. Así, la próxima vez que necesite ejecutar un contenedor en Ubuntu con NodeJS preinstalado, podrá usar la nueva imagen.

También puedes crear imágenes desde un archivo Dockerfile, lo que te permite automatizar la instalación de software en una nueva imagen. Sin embargo, esto queda fuera del alcance de este tutorial.

Ahora compartamos la nueva imagen con otros para que puedan crear contenedores a partir de ella.

Paso 8: Enviar imágenes de Docker a un repositorio de Docker

El siguiente paso lógico tras crear una imagen a partir de una existente es compartirla con algunos amigos, con todo el mundo en Docker Hub o en otro registro de Docker al que tengas acceso. Para subir una imagen a Docker Hub o a cualquier otro registro de Docker, debes tener una cuenta allí.

Para enviar su imagen, primero inicie sesión en Docker Hub.

docker login -u docker-registry-username

Se te pedirá que te autentiques con tu contraseña de Docker Hub. Si la especificaste correctamente, la autenticación debería ser correcta.

Nota: Si el nombre de usuario del registro de Docker es diferente del nombre de usuario local que usó para crear la imagen, deberá etiquetarla con el nombre de usuario del registro. Para el ejemplo del paso anterior, escriba:

docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

Luego puedes enviar tu propia imagen usando:

docker push docker-registry-username/docker-image-name

Para enviar la ubuntu-nodejsimagen al repositorio sammy , el comando sería:

docker push sammy/ubuntu-nodejs

El proceso puede tardar algún tiempo en completarse mientras se cargan las imágenes, pero una vez completado, el resultado se verá así:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Pushed
5f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7f18b442972b: Pushed
3ce512daaf78: Pushed
7aae4540b42d: Pushed

...


Después de enviar una imagen a un registro, debería aparecer en el panel de su cuenta, como se muestra en la imagen a continuación.

Nueva lista de imágenes de Docker en Docker Hub

Si un intento de inserción da como resultado un error de este tipo, es probable que no haya iniciado sesión:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Inicia sesión con docker loginy repite el intento de envío. Luego, verifica que exista en la página del repositorio de Docker Hub.

Ahora puedes usarla para extraer la imagen a una nueva máquina y usarla para ejecutar un nuevo contenedor.docker pull sammy/ubuntu-nodejs

Instalación de Docker con soporte para GPU

Para instalar Docker con compatibilidad con GPU, deberá seguir un proceso ligeramente diferente al de la instalación estándar. Esto se debe a que la compatibilidad con GPU requiere controladores y configuraciones adicionales para que Docker pueda utilizar los recursos de la GPU. Estos son los pasos para instalar Docker con compatibilidad con GPU:

  • Asegúrese de que su sistema tenga una GPU NVIDIA compatible.
  • Instala el controlador NVIDIA para tu GPU. Puedes encontrar las instrucciones de instalación en el sitio web de NVIDIA .
  • Instale el nvidia-docker2paquete, que proporciona las herramientas necesarias para que Docker interactúe con la GPU NVIDIA.

Pasos de instalación

  • Agregue el repositorio Docker de NVIDIA:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  • Actualice su lista de paquetes e instale el nvidia-docker2paquete:
sudo apt update && sudo apt install nvidia-docker2
  • Reinicie el servicio Docker para aplicar los cambios:
sudo service docker restart
  • Verifique que el entorno de ejecución de NVIDIA esté disponible:
sudo docker info | grep Runtime

Esto debería mostrar el tiempo de ejecución de NVIDIA como un tiempo de ejecución disponible.

Uso de la compatibilidad con GPU

Para usar la compatibilidad con GPU con tus contenedores Docker, deberás especificar el --gpusindicador al ejecutar el contenedor. Por ejemplo:

sudo docker run --gpus all nvidia/cuda:10.2-base nvidia-smi

Este comando ejecuta un contenedor con la imagen NVIDIA CUDA y ejecuta el nvidia-smicomando para verificar la compatibilidad con la GPU.

Para obtener más información sobre la instalación y el uso de Docker con soporte de GPU, consulte los siguientes recursos:

Si sigue estos pasos y utiliza los recursos proporcionados, podrá instalar y utilizar con éxito Docker con soporte de GPU en su sistema.

Configuración de las mejores prácticas de seguridad de Docker

La seguridad de Docker Engine es crucial para garantizar que sus contenedores y el sistema host estén protegidos contra posibles vulnerabilidades. A continuación, se indican algunas prácticas recomendadas:

  • Utilice el principio de mínimo privilegio : asegúrese de que sus contenedores se ejecuten con los mínimos privilegios necesarios para realizar sus tareas.
  • Utilice un usuario que no sea root : ejecute sus contenedores como un usuario que no sea root para limitar la superficie de ataque en caso de una violación.
  • Mantenga su versión de Docker actualizada : actualice periódicamente su versión de Docker para asegurarse de tener los últimos parches de seguridad.
  • Usar Docker Content Trust : habilite Docker Content Trust para garantizar la integridad de las imágenes que extrae de Docker Hub.
  • Limitar la exposición de la red : exponga únicamente los puertos necesarios a la red para minimizar la superficie de ataque.

Uso de Docker Compose

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Permite definir los servicios que componen la aplicación y cómo interactúan entre sí. Estas son algunas ventajas de usar Docker Compose:

  • Implementación simplificada de aplicaciones : Docker Compose simplifica el proceso de implementación de aplicaciones multicontenedor.
  • Gestión sencilla de servicios : Docker Compose le permite iniciar, detener y escalar sus servicios fácilmente.
  • Control de versiones : los archivos de Docker Compose pueden controlarse por versiones, lo que facilita el seguimiento de los cambios en la configuración de su aplicación.

Eliminación de paquetes de Docker

Eliminar paquetes de Docker es esencial para mantener el sistema y garantizar que tenga instaladas las últimas versiones de Docker. A continuación, se indican algunos pasos a seguir:

  • Enumerar todos los paquetes Docker instalados : utilice el comando dpkg -l | grep dockerpara enumerar todos los paquetes Docker instalados.
  • Eliminar el paquete Docker : utilice el comando sudo apt remove docker-cepara eliminar el paquete Docker.
  • Eliminar dependencias de Docker : use el comando sudo apt autoremovepara eliminar cualquier dependencia que ya no sea necesaria.
  • Actualice su lista de paquetes : use el comando sudo apt updatepara actualizar su lista de paquetes después de eliminar los paquetes de Docker.

Las imágenes, contenedores, volúmenes o archivos de configuración personalizados de su host no se eliminan automáticamente. Para eliminar todas las imágenes, contenedores y volúmenes:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Eliminar lista de fuentes y llaveros:

sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

Errores comunes y depuración

El demonio Docker no se inicia

Si el demonio de Docker no se inicia, puede deberse a varias razones, como problemas de configuración, conflictos con otros servicios o limitaciones de recursos del sistema. Para solucionar este problema, puede que vea mensajes de error como:

OutputFailed to start Docker Application Container Engine.

o

Outputdocker.service: Main process exited, code=exited, status=1/FAILURE

Para resolver este problema:

  1. Compruebe el estado del servicio Docker:sudo systemctl status docker
  2. Revise los registros de Docker para detectar errores:sudo journalctl -u docker
  3. Asegúrese de que el servicio Docker esté habilitado para iniciarse en el arranque:sudo systemctl enable docker
  4. Reinicie el servicio Docker:sudo systemctl restart docker

Errores de permisos al ejecutar comandos de Docker

Los errores de permisos ocurren cuando el usuario que ejecuta comandos de Docker no tiene suficientes privilegios. Para solucionar este problema, puede observar mensajes de error como:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Para resolver este problema:

  1. Asegúrese de que el usuario sea parte del dockergrupo:sudo usermod -aG docker ${USER}
  2. Cierre sesión y vuelva a iniciarla para aplicar los cambios de membresía del grupo
  3. Alternativamente, utilice sudoantes de ejecutar los comandos de Docker:sudo docker <command>

Si sigue estos pasos, debería poder resolver errores comunes relacionados con el demonio Docker que no se inicia y errores de permisos al ejecutar comandos Docker.

Preguntas frecuentes

¿Cómo instalo Docker en Ubuntu 22.04?

Para instalar Docker en Ubuntu , siga estos pasos:

  1. Actualice su lista de paquetes:sudo apt update
  2. Instalar los paquetes necesarios:sudo apt install apt-transport-https ca-certificates curl software-properties-common
  3. Agregue la clave GPG de Docker:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. Agregue el repositorio de Docker:echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. Actualice su lista de paquetes nuevamente:sudo apt update
  6. Instalar Docker:sudo apt install docker-ce

¿Cómo verifico que Docker esté instalado en Ubuntu?

Para verificar que Docker esté instalado en Ubuntu, ejecute el siguiente comando:sudo systemctl status docker

Este comando le mostrará el estado del servicio Docker. Si Docker está instalado y en ejecución, debería ver un resultado que indique que el servicio está activo y en ejecución. A continuación, se muestra un ejemplo de lo que podría ver:

Output● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2025-04-08 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 7854 (dockerd)
      Tasks: 7
     Memory: 38.3M
        CPU: 340ms
     CGroup: /system.slice/docker.service
             └─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

¿Cómo ejecuto Docker sin sudo?

Para ejecutar Docker sin usar sudo, debes agregar tu usuario al dockergrupo. Así es como se hace:

  1. Añade tu usuario al dockergrupo:sudo usermod -aG docker ${USER}
  2. Cierre sesión y vuelva a iniciarla para aplicar los cambios.

Después de agregar su usuario al dockergrupo, debería poder ejecutar comandos de Docker sin usar sudo.

¿Cómo desinstalo Docker de Ubuntu?

Para desinstalar Docker de Ubuntu , siga estos pasos:

  1. Detener el servicio Docker:sudo systemctl stop docker
  2. Eliminar paquetes de Docker:sudo apt purge docker-ce
  3. Eliminar dependencias de Docker:sudo apt autoremove
  4. Eliminar el repositorio de Docker:sudo rm /etc/apt/sources.list.d/docker.list

Conclusión

En este tutorial, instalaste Docker, trabajaste con imágenes y contenedores, y subiste una imagen modificada a Docker Hub. Ahora que conoces los conceptos básicos, explora. Para configuraciones de Docker más avanzadas, considera los siguientes tutoriales:

Stephen Dove
Comments

March 25, 2025

Cómo agregar espacio de intercambio en Ubuntu 22.04

Introducción

Una forma de evitar errores de memoria insuficiente en las aplicaciones es añadir espacio de intercambio al servidor. En esta guía, explicaremos cómo añadir un archivo de intercambio a un servidor Ubuntu 22.04.

¿Qué es Swap?

El espacio de intercambio (swap) es una porción del almacenamiento del disco duro que el sistema operativo reserva para almacenar temporalmente los datos que ya no puede almacenar en la RAM. Esto permite aumentar la cantidad de información que el servidor puede almacenar en su memoria de trabajo, con algunas salvedades. El espacio de intercambio del disco duro se utiliza principalmente cuando ya no hay suficiente espacio en la RAM para almacenar los datos de las aplicaciones en uso.

La información escrita en el disco será significativamente más lenta que la almacenada en la RAM, pero el sistema operativo preferirá mantener los datos de las aplicaciones en ejecución en memoria y usar la memoria de intercambio (swap) para los datos más antiguos. En general, tener espacio de intercambio como respaldo cuando la RAM del sistema se agote puede ser una buena protección contra excepciones de falta de memoria en sistemas con almacenamiento no SSD disponible.

Paso 1: Verificación del sistema para obtener información de intercambio

Antes de comenzar, podemos comprobar si el sistema ya tiene espacio de intercambio disponible. Es posible tener varios archivos o particiones de intercambio, pero generalmente uno debería ser suficiente.

Podemos ver si el sistema tiene algún swap configurado escribiendo:

sudo swapon --show

Si no obtiene ningún resultado, significa que su sistema no tiene espacio de intercambio disponible actualmente.

Puedes verificar que no haya ningún intercambio activo usando la freeutilidad:

free -h

Output              total        used        free      shared  buff/cache   available
Mem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714Mi
Swap:            0B          0B          0B

Como puede ver en la fila Swap de la salida, no hay ningún swap activo en el sistema.

Paso 2: Verificar el espacio disponible en la partición del disco duro

Antes de crear nuestro archivo de intercambio, comprobaremos el uso actual del disco para asegurarnos de que tengamos suficiente espacio. Para ello, introduzca:

df -h

OutputFilesystem      Size  Used Avail Use% Mounted on
udev            474M     0  474M   0% /dev
tmpfs            99M  932K   98M   1% /run
/dev/vda1        25G  1.4G   23G   7% /
tmpfs           491M     0  491M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           491M     0  491M   0% /sys/fs/cgroup
/dev/vda15      105M  3.9M  101M   4% /boot/efi
/dev/loop0       55M   55M     0 100% /snap/core18/1705
/dev/loop1       69M   69M     0 100% /snap/lxd/14804
/dev/loop2       28M   28M     0 100% /snap/snapd/7264
tmpfs            99M     0   99M   0% /run/user/1000

En este caso, el dispositivo /en la Mounted oncolumna es nuestro disco. Tenemos mucho espacio disponible (solo se utilizan 1,4 GB). Tu uso probablemente será diferente.

Aunque existen diversas opiniones sobre el tamaño adecuado del espacio de intercambio, en realidad depende de tus preferencias personales y de los requisitos de tu aplicación. Generalmente, un buen punto de partida es una cantidad igual o el doble de la RAM de tu sistema. Otra regla general es que cualquier cantidad superior a 4 GB de espacio de intercambio probablemente sea innecesaria si solo la usas como RAM de reserva.

Paso 3: Creación de un archivo de intercambio

Ahora que conocemos el espacio disponible en el disco duro, podemos crear un archivo de intercambio en nuestro sistema de archivos. Asignaremos un archivo del tamaño que queramos llamar en nuestro directorio swapfileraíz ( )./

La mejor manera de crear un archivo de intercambio es con el fallocateprograma. Este comando crea instantáneamente un archivo del tamaño especificado.

Dado que el servidor de nuestro ejemplo tiene 1 GB de RAM, crearemos un archivo de 1 GB en esta guía. Ajústelo según las necesidades de su servidor:

sudo fallocate -l 1G /swapfile

Podemos verificar que se reservó la cantidad correcta de espacio escribiendo:

ls -lh /swapfile

-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Nuestro archivo ha sido creado con la cantidad correcta de espacio reservado.

Paso 4 – Habilitación del archivo de intercambio

Ahora que tenemos disponible un archivo del tamaño correcto, necesitamos convertirlo en espacio de intercambio.

Primero, necesitamos restringir los permisos del archivo para que solo los usuarios con privilegios de root puedan leer su contenido. Esto impide que los usuarios normales accedan al archivo, lo que tendría importantes consecuencias para la seguridad.

Haga que el archivo sólo sea accesible para root escribiendo:

sudo chmod 600 /swapfile

Verifique el cambio de permisos escribiendo:

ls -lh /swapfile

Output-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Como puede ver, solo el usuario root tiene habilitadas las funciones de lectura y escritura.

Ahora podemos marcar el archivo como espacio de intercambio escribiendo:

sudo mkswap /swapfile

OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Luego de marcar el archivo, podemos habilitar el archivo de intercambio, permitiendo que nuestro sistema comience a usarlo:

sudo swapon /swapfile

Verifique que el intercambio esté disponible escribiendo:

sudo swapon --show

OutputNAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

Podemos verificar freenuevamente la salida de la utilidad para corroborar nuestros hallazgos:

free -h

Output              total        used        free      shared  buff/cache   available
Mem:          981Mi       123Mi       644Mi       0.0Ki       213Mi       714Mi
Swap:         1.0Gi          0B       1.0Gi

Nuestro intercambio se ha configurado correctamente y nuestro sistema operativo comenzará a usarlo según sea necesario.

Paso 5 – Hacer que el archivo de intercambio sea permanente

Nuestros cambios recientes han habilitado el archivo de intercambio para la sesión actual. Sin embargo, si reiniciamos, el servidor no conservará la configuración de intercambio automáticamente. Podemos cambiar esto añadiendo el archivo de intercambio a nuestro /etc/fstabarchivo.

Haga una copia de seguridad del /etc/fstabarchivo en caso de que algo salga mal:

sudo cp /etc/fstab /etc/fstab.bak

Agregue la información del archivo de intercambio al final de su /etc/fstabarchivo escribiendo:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

A continuación revisaremos algunas configuraciones que podemos actualizar para ajustar nuestro espacio de intercambio.

Paso 6 – Ajuste de la configuración de intercambio

Hay algunas opciones que puedes configurar y que tendrán un impacto en el rendimiento de tu sistema al trabajar con intercambio.

Ajuste de la propiedad de swappiness

Este swappinessparámetro configura la frecuencia con la que el sistema intercambia datos de la RAM al espacio de intercambio. Este valor, entre 0 y 100, representa un porcentaje.

Con valores cercanos a cero, el kernel no intercambiará datos con el disco a menos que sea absolutamente necesario. Recuerde que las interacciones con el archivo de intercambio son costosas, ya que tardan mucho más que las interacciones con la RAM y pueden causar una reducción significativa del rendimiento. Indicarle al sistema que no dependa demasiado del archivo de intercambio generalmente lo hará más rápido.

Los valores cercanos a 100 intentarán almacenar más datos en la memoria de intercambio para liberar más espacio de RAM. Dependiendo del perfil de memoria de sus aplicaciones o del uso que le dé al servidor, esto podría ser mejor en algunos casos.

Podemos ver el valor de swappiness actual escribiendo:

cat /proc/sys/vm/swappiness

Output60

Para una computadora de escritorio, un valor de swappiness de 60 no es un mal valor. Para un servidor, conviene acercarlo a 0.

Podemos establecer el swappiness a un valor diferente usando el sysctlcomando.

Por ejemplo, para establecer el swappiness a 10, podríamos escribir:

sudo sysctl vm.swappiness=10

Outputvm.swappiness = 10

Esta configuración se mantendrá hasta el próximo reinicio. Podemos configurar este valor automáticamente al reiniciar añadiendo la siguiente línea a nuestro /etc/sysctl.confarchivo:

sudo nano /etc/sysctl.conf

En la parte inferior puedes agregar: /etc/sysctl.conf

vm.swappiness=10

Guarde y cierre el archivo cuando haya terminado.

Ajuste de la configuración de presión de caché

Otro valor relacionado que podrías querer modificar es el vfs_cache_pressure. Esta configuración configura con qué frecuencia el sistema almacenará en caché la información de inodos y entradas de entrada sobre otros datos.

Básicamente, se trata de datos de acceso al sistema de archivos. Su consulta suele ser muy costosa y se solicita con mucha frecuencia, por lo que es excelente almacenarlos en caché. Puede ver el valor actual consultando procde nuevo el sistema de archivos:

cat /proc/sys/vm/vfs_cache_pressure

Output100

Con la configuración actual, nuestro sistema elimina la información de inodos de la caché demasiado rápido. Podemos configurarlo con un valor más conservador, como 50, escribiendo:

sudo sysctl vm.vfs_cache_pressure=50

Outputvm.vfs_cache_pressure = 50

Nuevamente, esto solo es válido para nuestra sesión actual. Podemos cambiarlo añadiéndolo a nuestro archivo de configuración, como hicimos con la configuración de intercambio:

sudo nano /etc/sysctl.conf

En la parte inferior, agregue la línea que especifica su nuevo valor: /etc/sysctl.conf

vm.vfs_cache_pressure=50

Guarde y cierre el archivo cuando haya terminado.

Conclusión

Seguir los pasos de esta guía le dará un respiro en casos que, de otro modo, provocarían excepciones de memoria insuficiente. El espacio de intercambio puede ser increíblemente útil para evitar algunos de estos problemas comunes.

Si se encuentra con errores OOM (sin memoria) o descubre que su sistema no puede utilizar las aplicaciones que necesita, la mejor solución es optimizar las configuraciones de sus aplicaciones o actualizar su servidor.

Stephen Dove
Comments

March 22, 2025

Cómo instalar una interfaz gráfica de usuario en un servidor Ubuntu: guía paso a paso

Introduccion

Ubuntu Server está diseñado principalmente para funcionar sin interfaz gráfica, lo que lo hace ligero y optimizado para su uso en servidores. Sin embargo, en ciertas situaciones, una GUI puede simplificar la administración del sistema, especialmente para usuarios que no están familiarizados con la línea de comandos. En este tutorial, te guiaré en el proceso de instalación de una GUI en Ubuntu Server .

Prerrequisitos

Antes de continuar con la instalación, asegúrese de tener lo siguiente:

  1. El último servidor Ubuntu instalado .
  2. Una cuenta de usuario con sudo privilegios .
  3. Una conexión a Internet activa.

Instalación de una interfaz gráfica de usuario (GUI) en el servidor Ubuntu

Paso 1: Actualice su sistema

Antes de instalar cualquier software, es fundamental asegurarse de que su sistema esté actualizado. Ejecute los siguientes comandos para actualizar las listas de paquetes y actualizar los paquetes obsoletos:

sudo apt update
sudo apt upgrade -y

Esto garantiza que tenga instalados los últimos parches de seguridad y actualizaciones del sistema.

Paso 2: Elige un entorno de escritorio

Ubuntu ofrece diversos entornos de escritorio que se adaptan a diferentes necesidades y preferencias de rendimiento. Estos son algunos de los más populares:

  • GNOME: el entorno de escritorio predeterminado para Ubuntu Desktop.
  • Xfce (Xubuntu): ligero y eficiente en el uso de recursos.
  • LXDE (Lubuntu): Extremadamente liviano, ideal para hardware de bajas especificaciones.
  • KDE (Kubuntu): un entorno rico en características que podría utilizar más recursos.

En este tutorial, nos centraremos en la instalación de GNOME y Xfce, pero puedes elegir cualquiera de los otros reemplazando el nombre del paquete en los siguientes pasos.

Paso 3: Instalar el entorno de escritorio

Instalación de GNOME

Si prefiere la experiencia completa del escritorio Ubuntu, puede instalar el entorno de escritorio GNOME. Ejecute el siguiente comando:

sudo apt install ubuntu-desktop -y

Esto instalará el escritorio GNOME completo, junto con todas sus aplicaciones asociadas, que pueden consumir muchos recursos.

Instalación de Xfce

Si necesitas una opción más ligera, Xfce es una excelente opción. Para instalarlo, ejecuta:

sudo apt install xubuntu-core -y

Esto instala el entorno de escritorio Xfce sin aplicaciones innecesarias, lo que lo convierte en una opción más minimalista y eficiente para los servidores.

Instalación de otros escritorios

Puede instalar otros entornos de escritorio como LXDE o KDE ejecutando:

# For LXDE
sudo apt install lubuntu-core -y


# For KDE Plasma
sudo apt install kubuntu-desktop -y

Paso 4: Instalar un administrador de pantalla

Un administrador de pantalla se encarga de iniciar el entorno de escritorio. Ubuntu usa GDM (Administrador de Pantalla de GNOME) por defecto, pero puedes instalar otros como LightDM para una opción más ligera, especialmente si usas Xfce o LXDE.

Para instalar LightDM, ejecute:

sudo apt install lightdm -y

Durante la instalación, se le pedirá que seleccione un administrador de pantalla predeterminado. Si no está seguro, LightDM es una buena opción, especialmente para entornos ligeros como Xfce.

Paso 5: Habilite la GUI para que se inicie automáticamente

Una vez completada la instalación, deberá configurar su sistema para que inicie la GUI automáticamente.

Primero, verifique el objetivo predeterminado del sistema, que determina qué servicios se inician cuando se inicia el sistema:

systemctl get-default

Por defecto, debería devolver multi-user.target, que corresponde al modo no gráfico. Para cambiar al modo gráfico, ejecute:

sudo systemctl set-default graphical.target

Ahora, su servidor se iniciará en la interfaz gráfica automáticamente en el próximo inicio.

Paso 6: Reiniciar el sistema

Una vez que haya instalado el entorno de escritorio y lo haya configurado para que se inicie automáticamente, reinicie su sistema para aplicar los cambios:

sudo reboot

Después de reiniciar, debería aparecer la pantalla de inicio de sesión del entorno de escritorio que instaló (GNOME, Xfce, etc.).

Paso 7: Conectarse a la GUI (opcional)

Si administra su servidor de forma remota, puede usar una conexión de escritorio remoto para acceder a la interfaz gráfica de usuario. Estas son algunas opciones populares:

Consola en la nube : Tu proveedor de nube probablemente ya cuente con una función de consola que te permite conectarte a tu servidor. Si usas servidores Cherry , selecciona tu máquina virtual en el portal del cliente y haz clic en Consolepara acceder a la consola de tu servidor.

Luego puede iniciar sesión a través de la GUI y acceder a su escritorio:

VNC : Una opción popular para conexiones de escritorio remoto. Para instalar un servidor VNC, ejecute:

sudo apt install tightvncserver -y

RDP (Protocolo de Escritorio Remoto) : RDP es un protocolo de Microsoft para conexiones remotas, compatible con Ubuntu. Para instalar un servidor RDP, ejecute:

sudo apt install xrdp -y

Después de instalar su servidor de escritorio remoto preferido, configúrelo según sus necesidades y conéctese usando su máquina local.

Es posible que necesite configurar su firewall para permitir el acceso a su servidor VNC o RDP.

Paso 8: Administrar la GUI

Si alguna vez desea volver a un entorno no gráfico, puede cambiar el objetivo predeterminado a multi-user.target:

sudo systemctl set-default multi-user.target

Esto garantizará que su servidor arranque en la interfaz

de línea de comandos (CLI) de manera predeterminada.

#Conclusión

En este tutorial, explicamos cómo instalar una interfaz gráfica de usuario (GUI) en Ubuntu Server. Esto simplifica las tareas para quienes prefieren una interfaz gráfica. Ya sea que elija GNOME, con sus numerosas funciones, o Xfce, un sistema ligero, ahora sabe cómo instalar, configurar y administrar una GUI en su servidor. Tenga en cuenta que usar una GUI consume más recursos del sistema y puede afectar el rendimiento, especialmente en servidores de producción.

Stephen Dove
Comments

March 21, 2025

Cómo instalar Drupal en un servidor Ubuntu 14.04 con Apache

Introducción

Drupal es un popular sistema de gestión de contenido (CMS) utilizado para gestionar algunos de los blogs y sitios web más grandes de internet. Gracias a la estabilidad de su base, la adaptabilidad de la plataforma y su activa comunidad, Drupal sigue siendo una opción popular tras más de una década en el mercado.

En esta guía, explicaremos cómo instalar Drupal en un servidor Ubuntu 14.04. Usaremos Apache para nuestro sitio, ya que es la configuración recomendada por el equipo de Drupal.

Prerrequisitos

Antes de comenzar con esta guía, necesitará un servidor Ubuntu 14.04 con una configuración básica completa. Siga nuestra guía de configuración inicial del servidor Ubuntu 14.04 para configurar un usuario no root con privilegios de sudo.

También necesitará tener Apache, PHP y MySQL configurados en su servidor. Puede aprender a configurarlos siguiendo nuestra guía sobre cómo instalar LAMP en Ubuntu 14.04 .

Una vez que haya cumplido con los requisitos anteriores, continúe con esta guía.

Antes de obtener los archivos de Drupal e instalarlos en nuestro directorio web, debemos preparar nuestro sistema. Si bien Apache, PHP y MySQL ya están instalados, necesitamos realizar algunos cambios adicionales y ajustes en cada uno para nuestra instalación.

Configurar un usuario y una base de datos MySQL para Drupal

Lo primero que haremos es configurar un usuario y una base de datos MySQL para nuestra instalación de Drupal. Es importante configurar un usuario y una base de datos dedicados por razones de seguridad.

Para comenzar, inicie sesión en MySQL:

mysql -u root -p

Se le solicitará la contraseña del usuario root de MySQL que configuró durante la instalación de ese software.

Una vez autenticado, accederá a un mensaje de MySQL. Primero, cree una base de datos para su instalación de Drupal. drupalPara simplificar, la llamaremos:

CREATE DATABASE drupal;

A continuación, debe crear un usuario que Drupal pueda usar para conectarse a la base de datos. En esta guía, lo llamaremos usuario drupaluser. Seleccione una contraseña segura para reemplazar la del bloque a continuación:

CREATE USER drupaluser@localhost IDENTIFIED BY 'password';

Ahora tenemos una base de datos y un usuario, pero este aún no tiene permiso para realizar ninguna acción en la base de datos. Podemos solucionarlo otorgándole permisos. Drupal necesita diversos permisos para funcionar correctamente. A continuación, se muestra una buena selección que permitirá que el software funcione sin exponer nuestra base de datos innecesariamente:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES ON drupal.* TO drupaluser@localhost;

Su usuario ya tiene permiso para administrar la base de datos que creamos. Para implementar estos cambios ahora mismo, necesitamos vaciar la información de privilegios al disco:

FLUSH PRIVILEGES;

Ahora, podemos salir de nuestra sesión interactiva MySQL:

exit

Serás redirigido nuevamente a tu bashsesión.

Instalar módulos PHP y ajustar la configuración

A continuación, instalaremos algunos módulos PHP necesarios para la aplicación Drupal. Por suerte, se encuentran en los repositorios predeterminados de Ubuntu.

Actualice su caché de paquetes local e instálelos escribiendo:

sudo apt-get update
sudo apt-get install php5-gd php5-curl libssh2-php

También realizaremos algunos pequeños ajustes en nuestro archivo de configuración de PHP. Estos son recomendados por los desarrolladores de Drupal. Abra el archivo de configuración de Apache PHP con privilegios de sudo en su editor de texto:

sudo nano /etc/php5/apache2/php.ini

Busque la expose_phpdirectiva y la allow_url_fopendirectiva y configúrelas ambas en “Desactivado”:

. . .
expose_php = Off
. . .
allow_url_fopen = Off
. . .

Guarde y cierre el archivo cuando haya terminado.

Habilitar la funcionalidad de reescritura y archivos .htaccess en Apache

A continuación, debemos analizar Apache. Primero, queremos habilitar la función de reescritura. Esto permitirá que nuestro sitio Drupal modifique las URL a cadenas de texto legibles.

Los mod_rewritemódulos de Apache ya están instalados por defecto. Sin embargo, no están habilitados. Podemos activarlos escribiendo:

sudo a2enmod rewrite

Esto habilitará el módulo la próxima vez que se reinicie Apache. Antes de reiniciar Apache, debemos ajustar la configuración de nuestro host virtual para permitir el uso de un .htaccessarchivo. Este archivo contendrá las reglas de reescritura y se incluye por defecto en la instalación de Drupal.

Abra ahora el archivo virtualhost predeterminado:

sudo nano /etc/apache2/sites-enabled/000-default.conf

Dentro del bloque “VirtualHost”, agregue un bloque de directorio que apunte a la raíz de nuestra web. Dentro de este bloque, establezca la AllowOverridedirectiva en “All”. También puede agregar una ServerNamedirectiva que apunte a su nombre de dominio y modificarla ServerAdminpara que refleje una dirección de correo electrónico válida:

<VirtualHost *:80>
    . . .
    ServerName  example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        AllowOverride All
    </Directory>
    . . .
</VirtualHost>

Guarde y cierre el archivo cuando haya terminado.

Ahora solo necesitamos reiniciar el servidor web para implementar nuestros cambios en Apache y PHP:

sudo service apache2 restart

Instalar los archivos de Drupal

Ahora que nuestro sistema está listo, podemos instalar Drupal en nuestra raíz web.

De hecho, primero descomprimiremos los archivos en nuestro directorio personal y luego los copiaremos a la ubicación correspondiente. Esto nos dará acceso inmediato a los archivos originales en caso de que algo salga mal o se eliminen accidentalmente posteriormente.

Vaya a la página de descarga de Drupal y consulte la última versión en la sección “Versiones recomendadas”. Haga clic derecho en el tar.gzenlace de la versión que le interese y seleccione “Copiar dirección del enlace” o cualquier opción similar que ofrezca su navegador.

De vuelta en su servidor, cambie a su directorio de inicio y use wgetel enlace que copió para descargar el archivo del proyecto:

cd ~
wget http://ftp.drupal.org/files/projects/drupal-7.32.tar.gz

Es probable que el enlace tenga un número de versión diferente al final. Una vez descargado el archivo, extraiga el directorio de la aplicación escribiendo:

tar xzvf drupal*

Ahora, acceda a la estructura de directorios recién extraída y use la rsyncutilidad para copiar de forma segura todos los archivos al directorio raíz web de su servidor. En este comando, usamos el punto para especificar el directorio actual. Esto es necesario para copiar algunos archivos ocultos que necesitamos:

cd drupal*
sudo rsync -avz . /var/www/html

Ahora tienes la versión original de los archivos en un directorio dentro de tu carpeta de inicio por si necesitas consultarlos. Nos trasladaremos al directorio raíz web para personalizar nuestra instalación:

cd /var/www/html

Ajuste de los archivos de Drupal para mayor seguridad y facilidad de instalación

El script de instalación web requiere que realicemos algunos cambios en nuestro directorio de Drupal para completar el proceso correctamente. Debemos solucionar esto con antelación para no tener que alternar entre el navegador web y la línea de comandos.

Primero, necesitamos crear un nuevo directorio bajo el subárbol sites/defaultllamado files:

mkdir /var/www/html/sites/default/files

A continuación, debemos copiar el archivo de configuración predeterminada al nombre de archivo que Drupal utiliza para la configuración activa:

cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.php

Este archivo de configuración activo requiere temporalmente permisos adicionales durante la instalación. Necesitamos otorgar permisos de escritura al propietario del grupo por el momento (próximamente asignaremos el propietario del grupo al usuario web). Lo eliminaremos una vez que la instalación se complete correctamente:

chmod 664 /var/www/html/sites/default/settings.php

A continuación, necesitamos asignar la propiedad de grupo de nuestros archivos al usuario web, que en Ubuntu es www-data. Queremos otorgarle a toda la instalación de Drupal estas propiedades de propiedad:

sudo chown -R :www-data /var/www/html/*

Su servidor ahora está configurado adecuadamente para ejecutar el script de instalación basado en web.

Complete el procedimiento de instalación basado en la web

El resto de la instalación se realizará en su navegador web. Abra el navegador y navegue hasta el nombre de dominio o la dirección IP de su servidor:

http://server_domain_or_IP

Verá la página inicial del procedimiento de instalación de Drupal:

Drupal elige perfil

A menos que tenga alguna razón para no hacerlo, seleccione la instalación “Estándar” y haga clic en “Guardar y continuar”. Haga clic en los siguientes botones de continuar hasta llegar a la página de configuración de la base de datos. Complete los datos que utilizó al configurar la base de datos y el usuario.

Para esta guía, utilizamos una base de datos llamada drupal, un usuario de base de datos llamado drupalusery una contraseña de password. Debería haber seleccionado una contraseña diferente durante la creación del usuario. Haga clic en “Guardar y continuar” de nuevo cuando haya completado los datos de su base de datos:

Configuración de la base de datos de Drupal

Nota : Al hacer clic en “Guardar y continuar”, es posible que se le redirija a la misma página de configuración de la base de datos. Si esto ocurre, simplemente actualice la página. La base de datos se configurará y el perfil se instalará.

Verá un cuadro de información en la parte superior de la página que le indica que ahora puede cambiar los permisos del archivo de configuración. Lo haremos en breve. Por ahora, necesita configurar información básica sobre su sitio. Complete los campos con los valores adecuados para su sitio:

Sitio de configuración de Drupal

Haga clic en el botón “Guardar y continuar” por última vez para completar la instalación. Ahora puede visitar su sitio web accediendo a su nombre de dominio:

Instalación completa de Drupal

Ha completado exitosamente la instalación de Drupal.

Sin embargo, aún necesitamos revertir los permisos de nuestro archivo de configuración para que usuarios no autorizados no puedan realizar cambios. En su servidor, restrinja el acceso de escritura al archivo escribiendo:

chmod 644 /var/www/html/sites/default/settings.php

Esto debería bloquear futuros cambios en el archivo de configuración.

Solución de problemas

Si la etapa final de la instalación de Drupal no se completa, revise sus registros de errores:

sudo tail /var/log/apache2/error.log

Si ves un error como este:

[Wed Nov 12 13:40:10.566144 2014] [:error] [pid 7178] [client 108.29.37.206:55238] PHP Fatal error:  Call to undefined function field_attach_load() in /var/www/html/includes/entity.inc on line 316, referer: http://12.34.56.78/install.php?profile=standard&locale=en
sh: 1: /usr/sbin/sendmail: not found

Esto indica que la instalación no se completó correctamente. Existen varias causas y soluciones para este error, documentadas por Drupal:

https://www.drupal.org/node/481758

Algunas de las soluciones más probables incluyen editar el /etc/php5/apache2/php.iniarchivo para generar el max_execution_time:

sudo nano /etc/php5/apache2/php.ini

Archivo:

max_execution_time = 300

También puedes probar la instalación en un navegador distinto a Chrome, como Safari. La configuración de cookies del navegador puede interferir con la instalación.

De todas formas, una vez que implementes la solución, tendrás que eliminar la base de datos y /var/www/html/sites/default/settings.phpel archivo de Drupal existentes, reemplazarlos con copias predeterminadas y reiniciar la instalación. Si tienes datos o configuraciones que deban conservarse, haz copias de seguridad.

Para hacer esto, puede iniciar sesión en MySQL y DROP DATABASE drupal;luego seguir nuevamente la sección de base de datos anterior para crear la base de datos y otorgarle los privilegios.

También puedes ejecutarlo cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.phpde nuevo para reemplazar el archivo de configuración. Asegúrate de ejecutar el chmod 664 /var/www/html/sites/default/settings.phpcomando para restablecer los permisos correctos.

Luego visite su dirección IP nuevamente, posiblemente en un navegador diferente, e intente la instalación final nuevamente.

Conclusión

Ahora tienes una base sólida para crear tu sitio Drupal. Drupal es increíblemente flexible, lo que te permite personalizar la apariencia y la funcionalidad del sitio según tus necesidades y las de tus usuarios.

Para obtener ideas sobre cómo seguir, visita nuestra página de etiquetas de Drupal , donde encontrarás tutoriales que te ayudarán en tu proceso. También encontrarás una sección de preguntas y respuestas para obtener ayuda o contribuir a la comunidad.

Stephen Dove
Comments

March 21, 2025

Cómo instalar WordPress en Ubuntu

Cómo instalar WordPress en Ubuntu

En este artículo, nos centraremos en cómo instalar WordPress en Ubuntu 18.04. WordPress es una plataforma de gestión de contenido gratuita y de código abierto basada en PHP y MySQL. Es el sistema de gestión de blogs y contenido líder a nivel mundial, con una cuota de mercado superior al 60%, eclipsando a competidores como Joomla y Drupal. WordPress se lanzó por primera vez el 27 de mayo de 2003 y, hasta la fecha, ¡funciona con más de 60 millones de sitios web! Su potencia y popularidad han alcanzado tal nivel que algunas grandes marcas y empresas han alojado sus sitios en la plataforma. Entre ellas se encuentran Sony Music, Katy Perry, New York Post y TED.

¿Por qué es tan popular WordPress? Analicemos brevemente algunos de los factores que han contribuido al enorme éxito de la plataforma.

Facilidad de uso

WordPress incluye un panel de control sencillo, intuitivo y fácil de usar. No requiere conocimientos de lenguajes de programación web como PHP, HTML5 y CSS3, y puedes crear un sitio web con solo unos clics. Además, la plataforma incluye plantillas, widgets y plugins gratuitos para ayudarte a empezar con tu blog o sitio web.

Rentabilidad

WordPress te ahorra muchísimo dinero a los desarrolladores para desarrollar tu sitio web. Solo tienes que obtener un tema gratuito de WordPress o comprar uno e instalarlo. Una vez instalado, tienes la libertad de implementar las funciones que prefieras y personalizar una gran variedad sin necesidad de programar mucho. Además, diseñar tu sitio web lleva mucho menos tiempo que programar desde cero.

Los sitios de WordPress son responsivos

La plataforma WordPress es intrínsecamente responsiva, por lo que no tendrás que preocuparte por si tus sitios se adaptan a múltiples dispositivos. ¡Esta ventaja también contribuye a que tu sitio tenga un mejor posicionamiento SEO en Google!

WordPress está preparado para SEO

WordPress está desarrollado con un código bien estructurado, limpio y consistente. Esto facilita la indexación de tu blog o sitio web por parte de Google y otros motores de búsqueda, lo que mejora tu posicionamiento. Además, puedes decidir qué páginas tienen mejor posicionamiento o usar plugins de SEO como el popular plugin de Yoast, que mejora el posicionamiento de tu sitio web en Google.

Fácil de instalar y actualizar.

Instalar WordPress en Ubuntu o cualquier otro sistema operativo es muy fácil. Existen numerosos scripts de código abierto que incluso automatizan este proceso. Muchas empresas de hosting ofrecen una función de instalación de WordPress con un solo clic para que puedas empezar a usarlo enseguida.

Instalar WordPress en Ubuntu

Antes de comenzar, actualicemos el sistema. Inicie sesión como usuario root y actualice el sistema para actualizar los repositorios.

apt update && apt upgrade

Salida Actualizar y mejorar el sistema Ubuntu

A continuación, instalaremos la pila LAMP para que WordPress funcione. LAMP es la abreviatura de Linux, Apache, MySQL y PHP.

Paso 1: Instalar Apache

Comencemos por instalar Apache. Para ello, ejecute el siguiente comando.

apt install apache2

Salida Instalar Apache2

Para confirmar que Apache está instalado en su sistema, ejecute el siguiente comando.

systemctl status apache2

Salida Cómo comprobar el estado de Apache2

Para verificar más, abra su navegador y vaya a la dirección IP de su servidor.

https://ip-address

Producción Página predeterminada del servidor web Apache

Paso 2: Instalar MySQL

A continuación, instalaremos el motor de base de datos MariaDB para alojar nuestros archivos de WordPress. MariaDB es una bifurcación de código abierto de MySQL y la mayoría de las empresas de hosting lo utilizan en lugar de MySQL.

apt install mariadb-server mariadb-client

Salida Instalar MySQL Mariadb Server Mariadb Client Ahora aseguremos nuestro motor de base de datos MariaDB y prohibamos el inicio de sesión root remoto.

$ mysql_secure_installation

El primer paso le pedirá que cambie la contraseña de root para iniciar sesión en la base de datos. Puede cambiarla u omitirla si está seguro de que su contraseña es segura. Para omitir el cambio, escriba n. Cambiar la contraseña rootPor seguridad, se le pedirá que elimine los usuarios anónimos. Escriba Y. Eliminar usuarios anónimosA continuación, desactive el inicio de sesión remoto de root para evitar que los hackers accedan a su base de datos. Sin embargo, para realizar pruebas, puede permitir el inicio de sesión remoto si está configurando un servidor virtual. Prohibir el inicio de sesión root de forma remota

A continuación, elimine la base de datos de prueba. Eliminar la base de datos de pruebaFinalmente, vuelva a cargar la base de datos para que los cambios surtan efecto.Recargar tabla de privilegios

Paso 3: Instalar PHP

Por último, instalaremos PHP como el último componente de la pila LAMP.

apt install php php-mysql

Salida Instalar PHP Para confirmar que PHP está instalado, se creó un info.phparchivo en /var/www/html/la ruta

vim /var/www/html/info.php

Añade las siguientes líneas:

<?php
phpinfo();
?>

Guardar y salir. Abra su navegador y añada /info.phpla URL del servidor.

https://ip-address/info.php

Producción Página web de información de PHP

Paso 4: Crear una base de datos de WordPress

Ahora es el momento de iniciar sesión en nuestra base de datos MariaDB como root y crear una base de datos para alojar nuestros datos de WordPress.

$ mysql -u root -p

Salida Inicio de sesión raíz de MySQL

Cree una base de datos para nuestra instalación de WordPress.

CREATE DATABASE wordpress_db;

Salida Crear una base de datos de WordPress

A continuación, crea un usuario de base de datos para nuestra configuración de WordPress.

CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'password';

Salida Crear un usuario para la base de datos de WordPress

Otorgar privilegios al usuario A continuación, otorgue al usuario permisos para acceder a la base de datos

GRANT ALL ON wordpress_db.* TO 'wp_user'@'localhost' IDENTIFIED BY 'password';

Salida Otorgar privilegios a usuarios de WordPress en bases de datos de WordPress Genial, ahora puedes salir de la base de datos.

FLUSH PRIVILEGES;

Exit;

Paso 5: Instalar WordPress CMS

Vaya a su directorio temporal y descargue el último archivo de WordPress

cd /tmp && wget https://wordpress.org/latest.tar.gz

Salida Descargar WordPress A continuación, descomprima el archivo tar, lo que generará una carpeta llamada “wordpress”.

tar -xvf latest.tar.gz

Salida Descomprimir el archivo tar de WordPress Copiar la carpeta de wordpress a /var/www/html/la ruta.

cp -R wordpress /var/www/html/

Ejecute el siguiente comando para cambiar la propiedad del directorio ‘wordpress’.

chown -R www-data:www-data /var/www/html/wordpress/

Cambiar los permisos de archivo de la carpeta de WordPress.

chmod -R 755 /var/www/html/wordpress/

Crear directorio ‘cargas’.

$ mkdir /var/www/html/wordpress/wp-content/uploads

Por último, cambie los permisos del directorio ‘uploads’.

chown -R www-data:www-data /var/www/html/wordpress/wp-content/uploads/

Abre tu navegador y ve a la URL del servidor. En mi caso es…

https://server-ip/wordpress

Se le presentará un asistente de WordPress y una lista de credenciales necesarias para configurarlo correctamente. instalar wordpress en ubuntuComplete el formulario como se muestra con las credenciales especificadas al crear la base de datos de WordPress en MariaDB. Omita el host de la base de datos y el prefijo de la tabla y haga clic en el botón “Enviar”. instalar wordpress en ubuntuSi todos los datos son correctos, podrá continuar. Ejecute la instalación. Muy bien Sparky, ejecuta la instalaciónComplete los datos adicionales necesarios, como el título del sitio, el nombre de usuario y la contraseña, y guárdelos en un lugar seguro para que no los olvide. Asegúrese de usar una contraseña segura. Bienvenidos Se necesita más informaciónDesplácese hacia abajo y haga clic en “Instalar WordPress”. Si todo ha ido bien, recibirá una notificación de “Instalación correcta”, como se muestra.

Instalación exitosa de WordPress
Éxito

Haz clic en el botón “Iniciar sesión” para acceder a la página de inicio de sesión de tu nueva instalación de WordPress. Iniciar sesión en WordPressIntroduce tus credenciales de inicio de sesión y pulsa “Iniciar sesión”. panel de control de WordPress¡Listo! Ya está el panel de control de WordPress, donde puedes crear tu primer blog o sitio web. ¡Enhorabuena por haber llegado hasta aquí! Ahora puedes descubrir las distintas funciones, plugins y temas, y empezar a configurar tu primer blog o sitio web.

Stephen Dove