15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
31.10.2024
1 +1

Instalación y Configuración de Componentes de Ubuntu: Una Guía Completa

Ubuntu sigue siendo una de las distribuciones Linux más populares del mundo, y por una buena razón. Su flexibilidad, robusto ecosistema de paquetes y fuerte apoyo comunitario la convierten en una plataforma ideal para desarrolladores, administradores de sistemas y empresas por igual. Ya sea que estés configurando una máquina de desarrollo local o aprovisionando un entorno de VPS Hosting en la nube, saber cómo instalar y configurar correctamente los componentes de Ubuntu es una habilidad fundamental que te beneficiará en todos los niveles de tu infraestructura.

Esta guía completa te guía a través de cada paso crítico: actualizar tu sistema, instalar paquetes esenciales, configurar firewalls, configurar servidores de bases de datos, optimizar el rendimiento y mucho más. Al final, tu sistema Ubuntu estará endurecido, eficiente y listo para cargas de trabajo de producción.

Tabla de Contenidos

  1. Actualizar Ubuntu Antes de Instalar Nada
  2. Instalar Componentes Esenciales
  3. Configurar Repositorios de Software
  4. Instalar y Configurar un Firewall con UFW
  5. Instalar y Configurar Servidores de Bases de Datos
  6. Instalar Herramientas y Utilidades Adicionales
  7. Personalizar Configuraciones del Sistema Ubuntu
  8. Configurar Copias de Seguridad Automatizadas
  9. Monitoreo del Sistema y Optimización del Rendimiento
  10. Consejos Finales para un Sistema Ubuntu Listo para Producción

1. Actualizar Ubuntu Antes de Instalar Nada

Antes de tocar un solo paquete, siempre actualiza completamente tu sistema. Esto asegura que estés trabajando con los últimos parches de seguridad, correcciones de errores y mejoras de compatibilidad de software.

sudo apt update && sudo apt upgrade -y

Lo que hace esto:

  • apt update — Actualiza el índice de paquetes locales desde todos los repositorios configurados.
  • apt upgrade -y — Actualiza todos los paquetes instalados a sus versiones más recientes disponibles, confirmando automáticamente los mensajes.

> Consejo Profesional: En un servidor recién aprovisionado, especialmente si estás ejecutando Ubuntu en un Servidor Dedicado, este paso es innegociable. Los paquetes desactualizados son uno de los vectores de seguridad más comunes para brechas.

Después de actualizar, reinicia si el kernel fue actualizado:

sudo reboot

2. Instalar Componentes Esenciales

El poder de Ubuntu radica en su extensibilidad. Las siguientes subsecciones cubren los paquetes más críticos para cualquier implementación seria de Ubuntu.

2.1. Build Essentials

El paquete build-essential instala un conjunto seleccionado de herramientas necesarias para compilar software desde la fuente, incluyendo GCC (GNU Compiler Collection), Make y bibliotecas estándar de C/C++.

sudo apt install build-essential -y

Verifica la instalación:

gcc --version
make --version

Este paquete es un requisito previo para muchas otras herramientas y tiempos de ejecución de lenguaje (por ejemplo, extensiones de Python, gemas de Ruby, módulos nativos de Node.js).

2.2. Git — Sistema de Control de Versiones

Git es la herramienta estándar de la industria para la gestión de código fuente, desarrollo colaborativo y canalizaciones de implementación.

sudo apt install git -y

Después de la instalación, configura tu identidad global:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

Verifica tu configuración:

git config --list

Opcional pero recomendado: Establece el nombre de tu rama predeterminada en main para alinearte con las convenciones modernas:

git config --global init.defaultBranch main

2.3. Herramientas de Red: curl y wget

Estas utilidades son indispensables para descargar archivos, probar APIs y depurar la conectividad de red directamente desde la línea de comandos.

sudo apt install curl wget -y

Ejemplos de uso rápido:

# Download a file with wget
wget https://example.com/file.tar.gz

# Test an API endpoint with curl
curl -I https://example.com

Herramientas de diagnóstico de red adicionales útiles:

sudo apt install net-tools dnsutils traceroute -y
  • net-tools — Proporciona ifconfig, netstat y comandos relacionados.
  • dnsutils — Incluye dig y nslookup para solución de problemas de DNS.
  • traceroute — Rastrea la ruta de red a un host remoto.

2.4. Editores de Texto

Todo administrador de sistemas necesita un editor de texto confiable de línea de comandos. Ubuntu admite varias opciones dependiendo de tu preferencia y flujo de trabajo.

Nano (amigable para principiantes):

sudo apt install nano -y

Vim (potente, altamente configurable):

sudo apt install vim -y

Emacs (rico en características, extensible):

sudo apt install emacs -y

> Recomendación: Para entornos de servidor, Vim es la opción más universalmente disponible y capaz. Invierte tiempo en aprender sus comandos principales — acelerará significativamente tu flujo de trabajo.

2.5. Instalación del Servidor Web

Un servidor web es esencial para alojar sitios web, aplicaciones web y APIs. Las dos opciones dominantes en Ubuntu son Nginx y Apache.

#### Instalar Nginx (Recomendado para Alto Rendimiento)

sudo apt install nginx -y

Inicia y habilita Nginx para que se lance automáticamente al arrancar:

sudo systemctl start nginx
sudo systemctl enable nginx

Verifica que esté ejecutándose:

sudo systemctl status nginx

Prueba tu configuración antes de recargar:

sudo nginx -t

#### Instalar Apache

sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2

Nginx vs. Apache — ¿Cuál Deberías Elegir?

CaracterísticaNginxApache
Rendimiento bajo cargaExcelente (basado en eventos)Bueno (basado en procesos/hilos)
Servicio de archivos estáticosMuy rápidoRápido
Soporte de .htaccessNo
Ecosistema de módulosEn crecimientoExtenso
Uso de memoriaMenorMayor

Para la mayoría de implementaciones modernas, particularmente en entornos de nube con VPS Hosting, Nginx es la opción preferida debido a su manejo superior de conexiones concurrentes y menor consumo de memoria.

3. Configurar Repositorios de Software

La instalación predeterminada de Ubuntu solo habilita los repositorios Main y Restricted. Para acceder a un rango significativamente más amplio de software, deberías habilitar los repositorios Universe y Multiverse.

Método 1: Usando la GUI (Ubuntu de Escritorio)

  1. Abre Software y Actualizaciones desde el menú de aplicaciones.
  2. En la pestaña Software de Ubuntu, marca las casillas para Universe y Multiverse.
  3. Haz clic en Cerrar y recarga la lista de paquetes cuando se te solicite.

Método 2: Usando la Línea de Comandos (Recomendado para Servidores)

sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt update

Descripción General del Repositorio:

RepositorioContenido
MainSoftware de código abierto oficialmente compatible
RestrictedControladores propietarios con soporte oficial
UniverseSoftware de código abierto mantenido por la comunidad
MultiverseSoftware con restricciones de licencia

Agregar PPAs de Terceros

Para software no disponible en repositorios oficiales, puedes agregar Personal Package Archives (PPAs):

sudo add-apt-repository ppa:repository-name/ppa
sudo apt update
sudo apt install package-name

> Nota de Seguridad: Solo agrega PPAs de fuentes confiables y bien conocidas. Los repositorios de terceros pueden introducir software no verificado en tu sistema.

4. Instalar y Configurar un Firewall con UFW

Ubuntu viene con UFW (Uncomplicated Firewall), una interfaz amigable para iptables. Configurar correctamente tu firewall es uno de los pasos de seguridad más importantes para cualquier servidor accesible desde internet.

Habilitar UFW

sudo ufw enable

Permitir Servicios Esenciales

Siempre permite SSH antes de habilitar el firewall para evitar bloquearte a ti mismo:

sudo ufw allow ssh

O especifica el puerto explícitamente:

sudo ufw allow 22/tcp

Permite tráfico HTTP y HTTPS para servidores web:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Permite perfiles de aplicaciones específicas:

sudo ufw allow 'Nginx Full'
# or
sudo ufw allow 'Apache Full'

Verificar Estado del Firewall

sudo ufw status verbose

Comandos Adicionales de UFW

# Deny a specific port
sudo ufw deny 8080/tcp

# Delete a rule
sudo ufw delete allow 8080/tcp

# Reset all rules
sudo ufw reset

# Disable UFW
sudo ufw disable

> Mejor Práctica: Sigue el principio del menor privilegio — solo abre puertos que sean explícitamente requeridos para tus servicios. Cada puerto abierto innecesario es una posible superficie de ataque.

5. Instalar y Configurar Servidores de Bases de Datos

Las bases de datos son la columna vertebral de prácticamente todas las aplicaciones web. Ubuntu admite todos los sistemas de bases de datos relacionales y NoSQL principales a través de sus repositorios de paquetes.

5.1. Instalar MySQL

MySQL es la base de datos relacional de código abierto más ampliamente implementada en el mundo.

sudo apt install mysql-server -y

Después de la instalación, ejecuta el script de endurecimiento de seguridad:

sudo mysql_secure_installation

Este script interactivo:

  • Establece una contraseña raíz (o valida la fortaleza de la contraseña)
  • Elimina usuarios anónimos
  • Desactiva el inicio de sesión remoto de raíz
  • Elimina la base de datos de prueba
  • Recarga las tablas de privilegios

Inicia y habilita MySQL:

sudo systemctl start mysql
sudo systemctl enable mysql

Verifica que el servicio esté ejecutándose:

sudo systemctl status mysql

Conéctate al shell de MySQL:

sudo mysql -u root -p

5.2. Instalar MariaDB (Alternativa Compatible con MySQL)

MariaDB es un fork desarrollado por la comunidad de MySQL con rendimiento mejorado y características adicionales:

sudo apt install mariadb-server mariadb-client -y
sudo mysql_secure_installation
sudo systemctl enable --now mariadb

5.3. Instalar PostgreSQL

PostgreSQL es un poderoso sistema de base de datos objeto-relacional de nivel empresarial conocido por su cumplimiento de estándares y extensibilidad.

sudo apt install postgresql postgresql-contrib -y

Inicia y habilita PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

Cambia al usuario administrativo de PostgreSQL y abre el shell:

sudo -i -u postgres
psql

Crea una nueva base de datos y usuario:

CREATE DATABASE myapp_db;
CREATE USER myapp_user WITH ENCRYPTED PASSWORD 'strong_password';
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;
q

6. Instalar Herramientas y Utilidades Adicionales

Más allá de lo esencial, las siguientes herramientas mejoran dramáticamente tu productividad, visibilidad del sistema y capacidades de implementación.

Docker — Tiempo de Ejecución de Contenedores

Docker te permite empaquetar aplicaciones y sus dependencias en contenedores portátiles, asegurando consistencia en entornos de desarrollo, staging y producción.

sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker

Agrega tu usuario al grupo Docker para ejecutar comandos sin sudo:

sudo usermod -aG docker $USER
newgrp docker

Verifica que Docker esté funcionando:

docker run hello-world

Para implementaciones de producción, considera instalar también Docker Compose:

sudo apt install docker-compose -y

htop — Visor Interactivo de Procesos

htop proporciona una vista en tiempo real, codificada por colores, de procesos del sistema, uso de CPU, consumo de memoria y más, muy superior al comando estándar top.

sudo apt install htop -y
htop

Atajos clave de htop:

  • F6 — Ordena procesos por columna
  • F9 — Mata un proceso
  • F10 — Salir
  • / — Busca un proceso

Tmux — Multiplexor de Terminal

Tmux te permite crear, gestionar y persistir múltiples sesiones de terminal dentro de una única conexión SSH, invaluable para tareas de larga duración en servidores remotos.

sudo apt install tmux -y

Comandos esenciales de Tmux:

# Start a new session
tmux new -s mysession

# Detach from session (keeps it running)
Ctrl+B, then D

# List all sessions
tmux ls

# Reattach to a session
tmux attach -t mysession

Utilidades Adicionales Recomendadas

# fail2ban — Intrusion prevention system
sudo apt install fail2ban -y

# unzip — Extract ZIP archives
sudo apt install unzip -y

# tree — Display directory structure
sudo apt install tree -y

# ncdu — Disk usage analyzer
sudo apt install ncdu -y

# jq — JSON processor for the command line
sudo apt install jq -y

7. Personalizar Configuraciones del Sistema Ubuntu

7.1. Habilitar Actualizaciones de Seguridad Automáticas

Mantener tu sistema parcheado es crítico, especialmente en servidores públicamente accesibles. El paquete unattended-upgrades de Ubuntu automatiza este proceso.

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

Para personalizar el comportamiento, edita el archivo de configuración:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Configuraciones clave a revisar:

  • Unattended-Upgrade::Allowed-Origins — Define qué repositorios activan actualizaciones automáticas.
  • Unattended-Upgrade::Automatic-Reboot — Establece en true para permitir reinicios automáticos después de actualizaciones del kernel.
  • Unattended-Upgrade::Mail — Configura notificaciones por correo electrónico para la actividad de actualización.

7.2. Gestionar Aplicaciones de Inicio (Ubuntu de Escritorio)

Controlar qué aplicaciones se lanzan al iniciar sesión ayuda a reducir el tiempo de arranque y conservar recursos del sistema.

  1. Busca Aplicaciones de Inicio en el menú de aplicaciones de GNOME.
  2. Revisa la lista de programas de inicio habilitados.
  3. Desactiva cualquier aplicación que no necesites al iniciar sesión.
  4. Usa el botón Agregar para registrar nuevos scripts de inicio o aplicaciones.

Para entornos de servidor, gestiona servicios con systemd:

# Disable a service from starting at boot
sudo systemctl disable service-name

# Enable a service at boot
sudo systemctl enable service-name

# List all enabled services
sudo systemctl list-unit-files --state=enabled

7.3. Configurar la Zona Horaria del Sistema

La configuración correcta de la zona horaria es esencial para la precisión de registros, tareas programadas y validación de certificados SSL.

# Check current timezone
timedatectl

# List available timezones
timedatectl list-timezones

# Set timezone
sudo timedatectl set-timezone Europe/London

7.4. Configurar SSH para Acceso Remoto Seguro

Si estás gestionando un servidor remoto, endurecertu configuración de SSH es primordial.

sudo nano /etc/ssh/sshd_config

Configuraciones de seguridad recomendadas:

# Disable root login
PermitRootLogin no

# Disable password authentication (use SSH keys instead)
PasswordAuthentication no

# Change default SSH port (optional but reduces automated scanning)
Port 2222

# Limit login attempts
MaxAuthTries 3

Después de hacer cambios, reinicia SSH:

sudo systemctl restart sshd

> Importante: Siempre prueba tu nueva configuración de SSH en una sesión de terminal separada antes de cerrar tu conexión actual para evitar quedar bloqueado.

8. Configurar Copias de Seguridad Automatizadas

La pérdida de datos es catastrófica. Ya sea que estés ejecutando un proyecto personal o una aplicación crítica para el negocio, las copias de seguridad automatizadas son innegociables.

Usar la Herramienta de Copia de Seguridad Integrada de Ubuntu (Escritorio)

  1. Busca Copias de Seguridad (Déjà Dup) en el menú de aplicaciones.
  2. Configura tu destino de copia de seguridad: unidad externa, recurso compartido de red o almacenamiento en la nube.
  3. Establece un cronograma de copia de seguridad en la pestaña Programación.
  4. Habilita Copia de Seguridad Automática y configura períodos de retención.

Copia de Seguridad de Línea de Comandos con rsync (Recomendado para Servidores)

rsync es el estándar de oro para copias de seguridad de archivos eficientes e incrementales en servidores Linux.

# Basic local backup
rsync -avz /source/directory/ /backup/destination/

# Remote backup over SSH
rsync -avz -e ssh /local/directory/ user@remote-server:/backup/path/

# Exclude specific directories
rsync -avz --exclude='*.log' --exclude='tmp/' /source/ /destination/

Automatizar Copias de Seguridad con Cron

crontab -e

Agrega un trabajo de copia de seguridad diaria a las 2:00 AM:

0 2 * * * rsync -avz /var/www/ /backup/www/ >> /var/log/backup.log 2>&1

Mejores Prácticas de Copia de Seguridad

  • Sigue la regla 3-2-1: 3 copias de datos, en 2 tipos de medios diferentes, con 1 copia fuera del sitio.
  • Prueba regularmente tus copias de seguridad realizando ejercicios de restauración.
  • Encripta datos de copia de seguridad sensibles.
  • Monitorea registros de copia de seguridad para fallos.

9. Monitoreo del Sistema y Optimización del Rendimiento

Herramientas de Monitoreo Integradas

Monitor del Sistema GNOME (Escritorio):

Proporciona una descripción general gráfica del uso de CPU, memoria, I/O de disco y red. Lánzalo desde el menú de aplicaciones o mediante:

gnome-system-monitor

htop (Línea de Comandos):

htop

vmstat — Estadísticas de Memoria Virtual:

vmstat 1 10

iostat — Estadísticas de CPU e I/O:

sudo apt install sysstat -y
iostat -x 1 5

free — Uso de Memoria:

free -h

df — Uso de Espacio en Disco:

df -h

netstat / ss — Conexiones de Red:

ss -tuln

9.1. Configurar Monitoreo del Sistema con Prometheus y Node Exporter

Para entornos de producción, una pila de monitoreo adecuada proporciona datos históricos, alertas y paneles.

# Install Node Exporter for system metrics
wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/
sudo systemctl enable --now node_exporter

10. Optimizar el Rendimiento del Sistema

10.1. Deshabilitar Servicios de Inicio Innecesarios

Identifica y deshabilita servicios que no necesites:

# List all running services
sudo systemctl list-units --type=service --state=running

# Disable a specific service
sudo systemctl disable --now bluetooth.service
sudo systemctl disable --now cups.service

10.2. Configurar y Habilitar Espacio de Intercambio

El espacio de intercambio actúa como memoria de desbordamiento cuando la RAM se agota. En servidores con RAM limitada, el intercambio configurado correctamente puede prevenir bloqueos por falta de memoria.

# Create a 2GB swap file
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Make swap permanent across reboots
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Ajusta la intercambiabilidad (valor más bajo = intercambio menos agresivo):

sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

10.3. Eliminar Paquetes No Utilizados y Limpiar Caché de Paquetes

Con el tiempo, los paquetes huérfanos y las descargas en caché consumen espacio en disco significativo:

# Remove automatically installed packages no longer needed
sudo apt autoremove -y

# Remove cached package files
sudo apt autoclean

# Full clean of the package cache
sudo apt clean

10.4. Optimizar I/O de Disco con el Planificador Deadline

Para SSDs, el planificador none (noop) a menudo proporciona mejor rendimiento:

# Check current scheduler
cat /sys/block/sda/queue/scheduler

# Set scheduler temporarily
echo none | sudo tee /sys/block/sda/queue/scheduler

10.5. Habilitar y Configurar Fail2Ban

Fail2Ban monitorea archivos de registro y bloquea automáticamente direcciones IP que muestran comportamiento malic

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar