Refactor: Improve and Document All Modules and Readme.md (#3)

* docs: update and improve Readme.md in Spanish

Restore the comprehensive Spanish version of the `Readme.md` and add a new section with instructions for installing the Meslo font, which is required for the `oh-my-posh` theme to render correctly.

The new section is located in the "Troubleshooting" area and provides the necessary command (`oh-my-posh font install meslo`) to ensure a correct setup.

The rest of the document has been reviewed to ensure it is complete and accurately reflects the script's functionality.

* refactor: improve and document all modules and Readme.md

This is a major refactoring and documentation effort that touches every module in the project.

- **Exhaustive In-Code Documentation:** Every module script in the `modules/` directory has been updated with detailed comments. This includes header descriptions, explanations for each function, and justifications for complex logic. This greatly improves the maintainability and readability of the code.

- **Code Robustness and Optimization:** Several modules have been refactored to be more robust and efficient. This includes:
  - Optimizing package installations by grouping them into a single `pacman` command.
  - Improving dependency checks.
  - Standardizing the use of helper functions from `common.sh`.
  - Making network operations more resilient.

- **Comprehensive `Readme.md` Update:** The main `Readme.md` has been rewritten to be a complete and professional guide to the project. It now includes:
  - A clear and detailed description of each module.
  - Information on what each module installs and how it works.
  - Instructions for installing the required Nerd Font for `oh-my-posh`.
  - An updated structure that is easier to navigate.

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Marco Gallegos <marco.gallegos@outlook.com>
This commit is contained in:
google-labs-jules[bot]
2025-11-18 23:18:20 -06:00
committed by GitHub
parent a2fbb1166b
commit eabfe0cbaf
13 changed files with 820 additions and 1089 deletions

View File

@@ -2,70 +2,96 @@
# ===============================================================
# docker.sh - Configuración de Docker y Portainer
# ===============================================================
#
# Este módulo se encarga de la instalación y configuración de Docker
# y, opcionalmente, de Portainer, una interfaz web para gestionar
# contenedores.
#
# Funciones principales:
# - Instala Docker y Docker Compose desde los repositorios oficiales.
# - Habilita e inicia los servicios de Docker.
# - Agrega el usuario actual al grupo `docker` para permitir la
# ejecución de comandos de Docker sin `sudo`.
# - Ofrece la opción de instalar Portainer.
#
# ===============================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/common.sh"
# ---------------------------------------------------------------
# install_docker()
# ---------------------------------------------------------------
# Orquesta la instalación y configuración de Docker y Portainer.
# ---------------------------------------------------------------
install_docker() {
log_step "Configuración de Docker y Portainer"
# Instalar Docker
# --- 1. Instalación de Docker ---
log_info "Instalando Docker y Docker Compose..."
sudo pacman -S --noconfirm --needed \
docker docker-compose || {
log_error "Error al instalar Docker"
if ! sudo pacman -S --noconfirm --needed docker docker-compose; then
log_error "No se pudo instalar Docker. Abortando."
return 1
}
# Habilitar y iniciar Docker
log_info "Habilitando servicio de Docker..."
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
sudo systemctl start docker.service
# Agregar usuario al grupo docker (si no está ya)
if ! groups "$USER" | grep -q docker; then
log_info "Agregando usuario al grupo docker..."
sudo usermod -aG docker "$USER"
log_warning "Necesitarás cerrar sesión y volver a iniciar para usar Docker sin sudo"
fi
# --- 2. Configuración del Servicio de Docker ---
log_info "Habilitando e iniciando los servicios de Docker..."
# Habilita los servicios para que se inicien automáticamente con el sistema.
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
# Inicia los servicios en la sesión actual.
sudo systemctl start docker.service
# --- 3. Configuración de Permisos de Usuario ---
# Agrega el usuario actual al grupo `docker` para evitar tener que usar `sudo`.
if ! groups "$USER" | grep -q docker; then
log_info "Agregando al usuario '$USER' al grupo 'docker'..."
if ! sudo usermod -aG docker "$USER"; then
log_error "No se pudo agregar el usuario al grupo 'docker'."
# No es un error fatal, así que solo se muestra una advertencia.
else
log_warning "Para que los cambios de grupo surtan efecto, debes cerrar sesión y volver a iniciarla."
fi
fi
# --- 4. Instalación Opcional de Portainer ---
echo ""
read -p "¿Deseas instalar Portainer (interfaz web para Docker)? [S/n]: " confirm_portainer
if [[ ! "${confirm_portainer}" =~ ^[Nn]$ ]]; then
log_info "Configurando Portainer..."
log_info "Instalando Portainer..."
# Verificar si Portainer ya está corriendo
# Comprueba si el contenedor de Portainer ya existe para evitar errores.
if sudo docker ps -a --format '{{.Names}}' | grep -q "^portainer$"; then
log_info "Portainer ya existe. Reiniciando contenedor..."
sudo docker stop portainer 2>/dev/null || true
sudo docker rm portainer 2>/dev/null || true
log_info "El contenedor de Portainer ya existe. Se detendrá y eliminará para volver a crearlo."
sudo docker stop portainer >/dev/null 2>&1 || true
sudo docker rm portainer >/dev/null 2>&1 || true
fi
# Crear volumen y contenedor de Portainer
sudo docker volume create portainer_data 2>/dev/null || true
# Crea un volumen de Docker para persistir los datos de Portainer.
sudo docker volume create portainer_data >/dev/null 2>&1 || true
# Ejecuta el contenedor de Portainer.
if sudo docker run -d -p 8000:8000 -p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest; then
log_success "Portainer instalado y ejecutándose"
log_info "Accede a Portainer en: https://localhost:9443"
log_success "Portainer se ha instalado y está corriendo."
log_info "Puedes acceder a la interfaz web en: https://localhost:9443"
else
log_error "Error al instalar Portainer"
# No retornamos error, Docker ya está instalado.
log_error "No se pudo instalar Portainer."
# No se devuelve un error aquí porque la instalación de Docker fue exitosa.
fi
else
log_info "Se omitió la instalación de Portainer."
fi
log_success "Configuración de Docker completada."
log_success "La configuración de Docker ha finalizado."
return 0
}
# Ejecutar si se llama directamente
# Ejecutar si se llama directamente al script.
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
install_docker "$@"
fi