Skip to content

Instantly share code, notes, and snippets.

@iberi22
Last active September 18, 2025 07:19
Show Gist options
  • Select an option

  • Save iberi22/4f2293eb2f66e79a58a9373c50ce2b55 to your computer and use it in GitHub Desktop.

Select an option

Save iberi22/4f2293eb2f66e79a58a9373c50ce2b55 to your computer and use it in GitHub Desktop.
dev-setup-v1-4android.es
#!/bin/bash
# ==============================================================================
# SCRIPT DE AUTOMATIZACIÓN PARA ENTORNO DE DESARROLLO PROFESIONAL EN TERMUX
# ==============================================================================
#
# Este script configura:
# 1. Base de Termux (con Zsh y Oh My Zsh).
# 2. Ubuntu 22.04 LTS.
# 3. Entorno de Escritorio XFCE4 con Servidor VNC.
# 4. Herramientas de Desarrollo: code-server, NVM (Node.js) y Flutter.
#
# ==============================================================================
# --- Colores para la salida ---
GREEN="\e[1;32m"
YELLOW="\e[1;33m"
CYAN="\e[1;36m"
RESET="\e[0m"
# --- Función para imprimir mensajes ---
info() {
echo -e "${CYAN}[INFO]${RESET} $1"
}
success() {
echo -e "${GREEN}[SUCCESS]${RESET} $1"
}
warning() {
echo -e "${YELLOW}[WARNING]${RESET} $1"
}
# ==============================================================================
# PASO 1: CONFIGURACIÓN INICIAL DE TERMUX
# ==============================================================================
setup_termux() {
info "Iniciando la configuración de Termux..."
info "Solicitando permiso de almacenamiento. Por favor, acéptalo."
termux-setup-storage
sleep 3
info "Actualizando los paquetes base de Termux. Esto puede tardar..."
pkg update -y && pkg upgrade -y
info "Instalando herramientas esenciales: git, curl, wget, proot-distro..."
pkg install git curl wget proot-distro zsh -y
success "Configuración inicial de Termux completada."
}
# ==============================================================================
# PASO 2: INSTALACIÓN DE ZSH Y OH MY ZSH
# ==============================================================================
setup_zsh() {
info "Instalando Oh My Zsh para una mejor experiencia de terminal..."
# El script de Oh My Zsh intentará cambiar el shell por defecto.
# Usamos 'yes' para aceptar automáticamente la instalación si pide confirmación.
yes | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Establecer Zsh como shell por defecto por si el script falla
chsh -s zsh
success "Oh My Zsh instalado y configurado como shell por defecto."
warning "Por favor, reinicia Termux para que los cambios de Zsh surtan efecto antes de continuar."
warning "Ejecuta 'exit' y vuelve a abrir la aplicación."
}
# ==============================================================================
# PASO 3: INSTALACIÓN Y CONFIGURACIÓN DE UBUNTU
# ==============================================================================
setup_ubuntu() {
info "Instalando Ubuntu 22.04 LTS. Esto tomará un tiempo considerable..."
proot-distro install ubuntu
info "Creando script de configuración para el entorno de desarrollo en Ubuntu..."
# Este script se ejecutará DENTRO de Ubuntu
cat <<'EOF' > $HOME/ubuntu-dev-setup.sh
#!/bin/bash
GREEN="\e[1;32m"
CYAN="\e[1;36m"
RESET="\e[0m"
info() {
echo -e "${CYAN}[INFO]${RESET} $1"
}
success() {
echo -e "${GREEN}[SUCCESS]${RESET} $1"
}
info "--- Ejecutando script de configuración dentro de Ubuntu ---"
info "Actualizando paquetes de Ubuntu..."
apt update && apt upgrade -y
info "Instalando dependencias y entorno de escritorio XFCE4 + TigerVNC..."
apt install sudo nano curl wget git xfce4 xfce4-goodies tigervnc-standalone-server dbus-x11 -y
info "Instalando code-server (VS Code)..."
wget https://github.com/coder/code-server/releases/download/v4.16.1/code-server-4.16.1-linux-arm64.tar.gz
tar -xvf code-server-*-linux-arm64.tar.gz
mv code-server-*-linux-arm64 /opt/code-server
rm code-server-*-linux-arm64.tar.gz
info "Instalando NVM (Node Version Manager)..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install --lts
nvm use --lts
nvm alias default 'lts/*'
info "Instalando Flutter SDK..."
apt install -y unzip xz-utils zip libglu1-mesa
git clone https://github.com/flutter/flutter.git -b stable /opt/flutter
echo 'export PATH="$PATH:/opt/flutter/bin"' >> ~/.bashrc
info "Creando script para iniciar el servidor VNC..."
mkdir -p ~/.vnc
echo '#!/bin/bash' > /usr/local/bin/vnc-start
echo 'dbus-launch &' >> /usr/local/bin/vnc-start
echo 'vncserver -localhost no -geometry 1920x1080 -depth 24 :1' >> /usr/local/bin/vnc-start
chmod +x /usr/local/bin/vnc-start
echo '#!/bin/bash' > /usr/local/bin/vnc-stop
echo 'vncserver -kill :1' >> /usr/local/bin/vnc-stop
chmod +x /usr/local/bin/vnc-stop
success "--- Configuración de Ubuntu completada ---"
echo "Para usar el entorno:"
echo "1. Inicia el servidor VNC con: vnc-start"
echo "2. Se te pedirá que crees una contraseña. ¡No la olvides!"
echo "3. Desde la app VNC Viewer, conéctate a: 127.0.0.1:5901"
echo "4. Para detener el servidor, usa: vnc-stop"
EOF
info "Ejecutando el script de configuración dentro de Ubuntu..."
proot-distro login ubuntu -- bash $HOME/ubuntu-dev-setup.sh
success "Entorno de desarrollo en Ubuntu configurado."
}
# ==============================================================================
# MENÚ PRINCIPAL DEL SCRIPT
# ==============================================================================
clear
echo -e "${GREEN}Bienvenido al Asistente de Configuración de Entorno de Desarrollo en Termux.${RESET}"
echo "Este script te guiará para instalar todo lo necesario."
echo "------------------------------------------------------------"
PS3="Por favor, elige una opción: "
options=("Instalar TODO (Recomendado para inicio limpio)" "1. Solo configurar Termux" "2. Solo instalar Zsh y Oh My Zsh" "3. Solo configurar entorno en Ubuntu" "Salir")
select opt in "${options[@]}"
do
case $opt in
"Instalar TODO (Recomendado para inicio limpio)")
setup_termux
setup_zsh
# Esperar a que el usuario reinicie Termux
read -p "Presiona [Enter] después de haber reiniciado Termux para continuar con la instalación de Ubuntu..."
setup_ubuntu
break
;;
"1. Solo configurar Termux")
setup_termux
break
;;
"2. Solo instalar Zsh y Oh My Zsh")
setup_zsh
break
;;
"3. Solo configurar entorno en Ubuntu")
setup_ubuntu
break
;;
"Salir")
break
;;
*) echo "Opción inválida $REPLY";;
esac
done
info "Proceso finalizado."
echo "------------------------------------------------------------"
warning "ACCIÓN MANUAL IMPORTANTE PARA EVITAR CIERRES:"
echo "1. Ve a los Ajustes de tu teléfono -> Aplicaciones -> Termux."
echo "2. Busca la sección de 'Batería' o 'Uso de batería'."
echo "3. Cámbiala a 'Sin restricciones' o 'Permitir actividad en segundo plano'."
echo "Esto es CRUCIAL para que Android no cierre Termux."
success "¡Tu entorno de desarrollo está listo!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment