Compare commits
	
		
			No commits in common. "af32c0015a71c81c94225924183002ee6a08af12" and "2efdcec22e8bf42a78bb88e2efad27bfe00d0cbe" have entirely different histories.
		
	
	
		
			af32c0015a
			...
			2efdcec22e
		
	
		
					 16 changed files with 29 additions and 589 deletions
				
			
		|  | @ -31,7 +31,7 @@ | |||
| - Use `bin/config/bash.header` how example to bash comment header | ||||
| - For new projects created by Claude Code, use author: "Cortana Rosero One <cortana@rosero.one>" | ||||
| - Include reference indicating generation by Claude Code and the version used | ||||
| - Example header comment for Cortana: | ||||
| - Example header comment: | ||||
|   ``` | ||||
|   # [Author] Cortana Rosero One <cortana@rosero.one> | ||||
|   # [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) | ||||
|  |  | |||
|  | @ -67,9 +67,6 @@ bin/update.sh | |||
| | `bin/sora_enable.sh` | Activa el alias 'sora' para Aider permanentemente | | ||||
| | `bin/sora_disable.sh` | Desactiva el alias 'sora' para Aider | | ||||
| | `bin/ai_token.sh` | Gestiona tokens de múltiples proveedores de IA vía SOPS | | ||||
| | `bin/ollama_up.sh` | Inicia el servicio Ollama (IA local) con podman-compose | | ||||
| | `bin/ollama_down.sh` | Detiene el servicio Ollama (IA local) | | ||||
| | `bin/ollama.sh` | Cliente para interactuar con Ollama (auto-inicia el servicio si es necesario) | | ||||
| 
 | ||||
| ### Herramientas para Editores de Código | ||||
| 
 | ||||
|  | @ -96,7 +93,6 @@ bin/update.sh | |||
| | `bin/vpn_install.sh` | Instala el cliente Pritunl VPN | | ||||
| | `bin/vpn_install.sh --update` | Actualiza el cliente VPN a la última versión | | ||||
| | `bin/vpn_users.sh` | Gestiona usuarios de la VPN | | ||||
| | `bin/vpn_check.sh` | Verifica conexión a VPN y muestra el tipo de VPN activo | | ||||
| | `bin/gpg_init.sh` | Inicializa configuración GPG para cifrado seguro | | ||||
| 
 | ||||
| ### Gestión de Perfiles | ||||
|  |  | |||
|  | @ -1,11 +1,11 @@ | |||
| --- | ||||
| # Apps:         MRDevs Tools | ||||
| # Include:      bin/ansible/includes/load_messages.yaml | ||||
| # Include:      includes/load_messages.yaml | ||||
| # Description:  load messages languages | ||||
| # Author:       Mauro Rosero P. | ||||
| # Email:        mauro@rosero.one (mauro.rosero@gmail.com) | ||||
| # Created:      2025-01-04 12:00:00 | ||||
| # Modified:     2025-01-05 00:00:00 | ||||
| # Organization: ROSERO ONE | ||||
| # Created:      Ene 04, 2025 12:00:00 | ||||
| # Updated:      2025-01-05 00:00:00 | ||||
| 
 | ||||
|   - name: Include language vars messages file | ||||
|     ansible.builtin.include_vars: | ||||
|  |  | |||
|  | @ -1,11 +1,11 @@ | |||
| --- | ||||
| # Apps:         MRDevs Tools | ||||
| # Include:      bin/ansible/includes/sops_credentials.yaml | ||||
| # Include:      includes/sops_credentials.yaml | ||||
| # Description:  Get sops secure encrypted credentials | ||||
| # Author:       Mauro Rosero P. | ||||
| # Email:        mauro@rosero.one (mauro.rosero@gmail.com) | ||||
| # Created:      2025-01-04 12:00:00 | ||||
| # Modified:     2025-01-05 00:00:00 | ||||
| # Organization: ROSERO ONE | ||||
| # Created:      Ene 04, 2025 12:00:00 | ||||
| # Updated:      2025-01-05 00:00:00 | ||||
| 
 | ||||
|   - name: Get if credential access exists | ||||
|     ansible.builtin.stat: | ||||
|  |  | |||
|  | @ -6,10 +6,6 @@ | |||
| # Created 2024-03-14-00:12:00 | ||||
| # Updated 2024-06-01-00:41:00 | ||||
| 
 | ||||
|   info: "INFO" | ||||
|   warn: "ALERTA" | ||||
|   fail: "ERROR" | ||||
|    | ||||
|  console: | ||||
|    info: | ||||
|      hello: "{{ info }}Bienvenido, esto es una prueba" | ||||
|  |  | |||
|  | @ -1,11 +1,13 @@ | |||
| --- | ||||
| # Apps:         MRDevs Tools | ||||
| # Playbook:     bin/ansible/pritunl_users.yaml | ||||
| # Devops Ansible Script | ||||
| # Playbook:     pritunl_users.yaml | ||||
| # Description:  Add, enable, disable or remove pritunl vpn users | ||||
| # Author:       Mauro Rosero P. | ||||
| # Email:        mauro@rosero.one (mauro.rosero@gmail.com) | ||||
| # Created:      2025-01-04 12:00:00 | ||||
| # Modified:     2025-01-05 00:00:00 | ||||
| # Organization: ROSERO ONE | ||||
| # Created:      Ene 04, 2025 12:00:00 | ||||
| # Updated:      2025-01-05 00:00:00 | ||||
| 
 | ||||
| 
 | ||||
| - name: PLAYBOOK - {{ playbook_program | upper }} ({{ playbook_description | upper }}) | ||||
|   hosts: [localhost] | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| "gemini","Google Gemini API",0,1,0 | ||||
| "hface","HuggingFace API",0,1,0 | ||||
| "brave","Brave Search API",0,1,0 | ||||
| "digital","Replicate API (digital)",0,1,0 | ||||
| "replica","Replicate API",0,1,0 | ||||
| "serper","Serper Search API",0,1,0 | ||||
| "voyage","Voyage RAG API",0,1,0 | ||||
| "apify","Apify Scrapping API",0,1,0 | ||||
|  |  | |||
							
								
								
									
										154
									
								
								bin/lib/base.lib
									
									
									
									
									
								
							
							
						
						
									
										154
									
								
								bin/lib/base.lib
									
									
									
									
									
								
							|  | @ -529,157 +529,3 @@ remove_cortana_alias() { | |||
|         return 2 | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Verifica si el sistema está conectado a una VPN | ||||
| # Devuelve 0 si está conectado a una VPN, 1 si no lo está | ||||
| is_connected_to_vpn() { | ||||
|     local vpn_interfaces=("tun" "tap" "ppp" "wg" "wireguard" "nordlynx" "mullvad" "proton") | ||||
|     local found_vpn=0 | ||||
|      | ||||
|     # Verificar si existe alguna interfaz VPN activa | ||||
|     for vpn_type in "${vpn_interfaces[@]}"; do | ||||
|         if ip addr | grep -q "${vpn_type}"; then | ||||
|             found_vpn=1 | ||||
|             break | ||||
|         fi | ||||
|     done | ||||
|      | ||||
|     # Verificar si hay procesos VPN en ejecución | ||||
|     if [ $found_vpn -eq 0 ]; then | ||||
|         for proc in "openvpn" "wireguard" "wg" "nordvpn" "protonvpn" "pritunl" "anyconnect" "vpnc"; do | ||||
|             if pgrep -x "$proc" >/dev/null; then | ||||
|                 found_vpn=1 | ||||
|                 break | ||||
|             fi | ||||
|         done | ||||
|     fi | ||||
|      | ||||
|     # Verificar conexiones de red que puedan indicar VPN | ||||
|     if [ $found_vpn -eq 0 ]; then | ||||
|         if netstat -rn | grep -q "tun\|tap\|ppp\|wg"; then | ||||
|             found_vpn=1 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Verificar reglas de firewall que puedan indicar VPN | ||||
|     if [ $found_vpn -eq 0 ]; then | ||||
|         if command -v iptables >/dev/null && iptables -L | grep -qi "vpn\|tunnel"; then | ||||
|             found_vpn=1 | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     if [ $found_vpn -eq 1 ]; then | ||||
|         return 0  # Está conectado a una VPN | ||||
|     else | ||||
|         return 1  # No está conectado a una VPN | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # Identifica el tipo de VPN al que está conectado el sistema | ||||
| # Devuelve el nombre del tipo de VPN o "Unknown" si no se puede determinar | ||||
| # Si no está conectado a ninguna VPN, devuelve "Not Connected" | ||||
| get_vpn_type() { | ||||
|     # Primero verificamos si hay una conexión VPN | ||||
|     is_connected_to_vpn | ||||
|     if [ $? -ne 0 ]; then | ||||
|         echo "" | ||||
|         return 1 | ||||
|     fi | ||||
|      | ||||
|     # Mapa de procesos VPN y su tipo correspondiente | ||||
|     declare -A vpn_process_map=( | ||||
|         ["openvpn"]="OpenVPN" | ||||
|         ["pritunl"]="Pritunl" | ||||
|         ["pritunl-client"]="Pritunl" | ||||
|         ["nordvpnd"]="NordVPN" | ||||
|         ["protonvpn"]="ProtonVPN" | ||||
|         ["wg-quick"]="WireGuard" | ||||
|         ["wg"]="WireGuard" | ||||
|         ["mullvad"]="Mullvad" | ||||
|         ["expressvpnd"]="ExpressVPN" | ||||
|         ["anyconnect"]="Cisco AnyConnect" | ||||
|         ["vpnc"]="Cisco VPN" | ||||
|         ["openconnect"]="OpenConnect" | ||||
|         ["pppd"]="PPTP/L2TP" | ||||
|         ["sstp-client"]="SSTP" | ||||
|         ["tailscaled"]="Tailscale" | ||||
|         ["zerotier-one"]="ZeroTier" | ||||
|     ) | ||||
|      | ||||
|     # Buscar procesos VPN conocidos | ||||
|     for proc in "${!vpn_process_map[@]}"; do | ||||
|         if pgrep -x "$proc" >/dev/null; then | ||||
|             echo "${vpn_process_map[$proc]}" | ||||
|             return 0 | ||||
|         fi | ||||
|     done | ||||
|      | ||||
|     # Si no encontramos procesos específicos, intentamos identificar por interfaces | ||||
|     if ip addr | grep -q "tun"; then | ||||
|         # Identificar si es Pritunl (tiene prioridad) | ||||
|         if systemctl is-active --quiet pritunl-client.service || pgrep -f "pritunl-client" >/dev/null || ps aux | grep -q "[p]ritunl"; then | ||||
|             echo "Pritunl" | ||||
|         # Verificar configuración de Pritunl | ||||
|         elif [ -d "$HOME/.pritunl" ] || [ -d "/etc/pritunl-client" ]; then | ||||
|             echo "Pritunl" | ||||
|         # Buscar indicadores adicionales de Pritunl | ||||
|         elif grep -q "pritunl" /var/log/syslog 2>/dev/null || grep -q "pritunl" /var/log/messages 2>/dev/null; then | ||||
|             echo "Pritunl" | ||||
|         # Verificar si es OpenVPN genérico | ||||
|         elif ps aux | grep -q "[o]penvpn"; then | ||||
|             echo "OpenVPN" | ||||
|         else | ||||
|             echo "TUN-based VPN" | ||||
|         fi | ||||
|         return 0 | ||||
|     elif ip addr | grep -q "wg"; then | ||||
|         echo "WireGuard" | ||||
|         return 0 | ||||
|     elif ip addr | grep -q "ppp"; then | ||||
|         echo "PPP-based VPN" | ||||
|         return 0 | ||||
|     elif ip addr | grep -q "nordlynx"; then | ||||
|         echo "NordVPN (NordLynx)" | ||||
|         return 0 | ||||
|     elif ip addr | grep -q "proton"; then | ||||
|         echo "ProtonVPN" | ||||
|         return 0 | ||||
|     elif ip addr | grep -q "mullvad"; then | ||||
|         echo "Mullvad" | ||||
|         return 0 | ||||
|     elif ip addr | grep -q "tailscale"; then | ||||
|         echo "Tailscale" | ||||
|         return 0 | ||||
|     elif ip addr | grep -q "zt"; then | ||||
|         echo "ZeroTier" | ||||
|         return 0 | ||||
|     fi | ||||
|      | ||||
|     # Verificar servicios conocidos de VPN | ||||
|     if systemctl is-active --quiet nordvpnd; then | ||||
|         echo "NordVPN" | ||||
|         return 0 | ||||
|     elif systemctl is-active --quiet protonvpn; then | ||||
|         echo "ProtonVPN" | ||||
|         return 0 | ||||
|     elif systemctl is-active --quiet wg-quick@; then | ||||
|         echo "WireGuard" | ||||
|         return 0 | ||||
|     elif systemctl is-active --quiet tailscaled; then | ||||
|         echo "Tailscale" | ||||
|         return 0 | ||||
|     elif systemctl is-active --quiet zerotier-one; then | ||||
|         echo "ZeroTier" | ||||
|         return 0 | ||||
|     fi | ||||
|      | ||||
|     # Verificar específicamente Pritunl (adicional) | ||||
|     if systemctl is-active --quiet pritunl-client.service || [ -d "$HOME/.pritunl" ] || [ -d "/etc/pritunl-client" ]; then | ||||
|         echo "Pritunl" | ||||
|         return 0 | ||||
|     fi | ||||
|      | ||||
|     # Si llegamos hasta aquí, no pudimos identificar específicamente el tipo de VPN | ||||
|     echo "Unknown VPN" | ||||
|     return 0 | ||||
| } | ||||
|  |  | |||
|  | @ -38,9 +38,6 @@ head_nodockerfile="No existe el archivo de configuración Dockerfile" | |||
| head_nobuilded="No se pudo completar la construcción del contenedor" | ||||
| head_builded="Construcción del contenedor completada!" | ||||
| head_zip="Utilitario zip no ha sido instalado!" | ||||
| head_vpn_type="Tipo de VPN" | ||||
| head_vpn_no_connected="VPN no conectado!" | ||||
| head_vpn_unknown="VPN Desconocido!" | ||||
| head_key_end="999999END" | ||||
| head_superuser="Super Usuario" | ||||
| head_canceled="Cancelado" | ||||
|  |  | |||
|  | @ -1,86 +0,0 @@ | |||
| #!/bin/bash | ||||
| #Script     	: ollama.sh | ||||
| #Apps			: MRDEVS TOOLS | ||||
| #Description	: Cliente para interactuar con Ollama (IA local) | ||||
| #Author			: Mauro Rosero Pérez | ||||
| #Company Email	: mauro@rosero.one | ||||
| #Personal Email	: mauro.rosero@gmail.com | ||||
| #Created		: 2024/12/01 15:27:00 | ||||
| #Modified		: 2025/03/19 11:57:08 | ||||
| #Version		: 1.2.0 | ||||
| #============================================================================== | ||||
| # Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||
| #============================================================================== | ||||
| # Este programa es software libre: usted puede redistribuirlo y/o modificarlo | ||||
| # bajo los términos de la Licencia Pública Affero General de GNU tal como | ||||
| # lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, | ||||
| # o (a su elección) cualquier versión posterior. | ||||
| # | ||||
| # Este programa se distribuye con la esperanza de que sea útil, | ||||
| # pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de | ||||
| # COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la | ||||
| # Licencia Pública Affero General de GNU para obtener más detalles. | ||||
| # | ||||
| # Debería haber recibido una copia de la Licencia Pública Affero General | ||||
| # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_PATH=$BIN_HOME/$BIN_BASE | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| if [ -f "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" ]; then | ||||
|   source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
|   # Cargar mensajes en el idioma del sistema o español por defecto | ||||
|   load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
|   title="${head_000} ${head_002}" | ||||
| fi | ||||
| 
 | ||||
| # Check if we should use podman or docker (prefer podman) | ||||
| if command -v podman >/dev/null 2>&1; then | ||||
|   CONTAINER_CMD="podman" | ||||
| elif command -v docker >/dev/null 2>&1; then | ||||
|   CONTAINER_CMD="docker" | ||||
| else | ||||
|   echo "Error: Neither podman nor docker is installed" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Verificar si el contenedor Ollama está en ejecución | ||||
| if ${CONTAINER_CMD} ps | grep -q "ollama"; then | ||||
|   # Si está en ejecución, ejecutar el comando pasado como argumento | ||||
|   ${CONTAINER_CMD} exec -it ollama ollama "$@" | ||||
| else | ||||
|   echo "El servicio Ollama no está en ejecución. Iniciándolo..." | ||||
|   "${BIN_PATH}/ollama_up.sh" | ||||
|    | ||||
|   # Esperar un momento para que el servicio esté listo | ||||
|   echo "Esperando a que el servicio esté listo..." | ||||
|   sleep 5 | ||||
|    | ||||
|   # Verificar nuevamente si el contenedor está en ejecución | ||||
|   if ${CONTAINER_CMD} ps | grep -q "ollama"; then | ||||
|     ${CONTAINER_CMD} exec -it ollama ollama "$@" | ||||
|   else | ||||
|     echo "Error: No se pudo iniciar el servicio Ollama correctamente." | ||||
|     exit 1 | ||||
|   fi | ||||
| fi | ||||
|  | @ -1,12 +0,0 @@ | |||
| version: "3.8" | ||||
| 
 | ||||
| services: | ||||
|   ollama: | ||||
|     image: docker.io/ollama/ollama:latest | ||||
|     container_name: ollama | ||||
|     privileged: true | ||||
|     ports: | ||||
|       - "11434:11434" | ||||
|     volumes: | ||||
|       - ../../data:/root/.ollama | ||||
|     restart: unless-stopped | ||||
|  | @ -1,94 +0,0 @@ | |||
| #!/bin/bash | ||||
| #Script     	: ollama_down.sh | ||||
| #Apps			: MRDEVS TOOLS | ||||
| #Description	: Detener ollama (IA) en modo local | ||||
| #Author			: Mauro Rosero Pérez | ||||
| #Company Email	: mauro@rosero.one | ||||
| #Personal Email	: mauro.rosero@gmail.com | ||||
| #Created		: 2025/03/21 19:27:08 | ||||
| #Modified		: 2025/03/21 19:27:08 | ||||
| #Version		: 1.2.0 | ||||
| #============================================================================== | ||||
| # Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||
| #============================================================================== | ||||
| # Este programa es software libre: usted puede redistribuirlo y/o modificarlo | ||||
| # bajo los términos de la Licencia Pública Affero General de GNU tal como | ||||
| # lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, | ||||
| # o (a su elección) cualquier versión posterior. | ||||
| # | ||||
| # Este programa se distribuye con la esperanza de que sea útil, | ||||
| # pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de | ||||
| # COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la | ||||
| # Licencia Pública Affero General de GNU para obtener más detalles. | ||||
| # | ||||
| # Debería haber recibido una copia de la Licencia Pública Affero General | ||||
| # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_PATH=$BIN_HOME/$BIN_BASE | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| # Change to the directory containing the compose file | ||||
| cd "${BIN_HOME}/${BIN_BASE}/ollama" | ||||
| 
 | ||||
| # Check if we should use podman or docker (prefer podman) | ||||
| if command -v podman >/dev/null 2>&1; then | ||||
|   CONTAINER_CMD="podman" | ||||
| elif command -v docker >/dev/null 2>&1; then | ||||
|   CONTAINER_CMD="docker" | ||||
| else | ||||
|   echo "Error: Neither podman nor docker is installed" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Check if compose command exists | ||||
| if command -v ${CONTAINER_CMD}-compose >/dev/null 2>&1; then | ||||
|   COMPOSE_CMD="${CONTAINER_CMD}-compose" | ||||
| elif command -v podman-compose >/dev/null 2>&1; then | ||||
|   COMPOSE_CMD="podman-compose" | ||||
| elif command -v docker-compose >/dev/null 2>&1; then | ||||
|   COMPOSE_CMD="docker-compose" | ||||
| else | ||||
|   echo "Error: No compose command found (podman-compose or docker-compose)" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| echo "Using ${COMPOSE_CMD} to stop Ollama service..." | ||||
| 
 | ||||
| # Try to stop with compose first | ||||
| ${COMPOSE_CMD} down || echo "Warning: Issue with ${COMPOSE_CMD} down command" | ||||
| 
 | ||||
| # If the container is still running, try to stop it directly | ||||
| if ${CONTAINER_CMD} container exists ollama 2>/dev/null && ${CONTAINER_CMD} ps | grep -q ollama; then | ||||
|   echo "Stopping ollama container directly..." | ||||
|   ${CONTAINER_CMD} stop ollama | ||||
| fi | ||||
| 
 | ||||
| echo "${head_002} Ollama service stopped successfully" | ||||
							
								
								
									
										115
									
								
								bin/ollama_up.sh
									
									
									
									
									
								
							
							
						
						
									
										115
									
								
								bin/ollama_up.sh
									
									
									
									
									
								
							|  | @ -1,115 +0,0 @@ | |||
| #!/bin/bash | ||||
| #Script     	: ollama_up.sh | ||||
| #Apps			: MRDEVS TOOLS | ||||
| #Description	: Ejecutar ollama (IA) en modo local | ||||
| #Author			: Mauro Rosero Pérez | ||||
| #Company Email	: mauro@rosero.one | ||||
| #Personal Email	: mauro.rosero@gmail.com | ||||
| #Created		: 2025/03/21 19:27:08 | ||||
| #Modified		: 2025/03/21 19:27:08 | ||||
| #Version		: 1.2.0 | ||||
| #============================================================================== | ||||
| # Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||
| #============================================================================== | ||||
| # Este programa es software libre: usted puede redistribuirlo y/o modificarlo | ||||
| # bajo los términos de la Licencia Pública Affero General de GNU tal como | ||||
| # lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, | ||||
| # o (a su elección) cualquier versión posterior. | ||||
| # | ||||
| # Este programa se distribuye con la esperanza de que sea útil, | ||||
| # pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de | ||||
| # COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la | ||||
| # Licencia Pública Affero General de GNU para obtener más detalles. | ||||
| # | ||||
| # Debería haber recibido una copia de la Licencia Pública Affero General | ||||
| # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_PATH=$BIN_HOME/$BIN_BASE | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
| 
 | ||||
| # Cargar mensajes en el idioma del sistema o español por defecto | ||||
| load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
| title="${head_000} ${head_002}" | ||||
| 
 | ||||
| # Change to the directory containing the compose file | ||||
| cd "${BIN_HOME}/${BIN_BASE}/ollama" | ||||
| 
 | ||||
| # Check if we should use podman or docker (prefer podman) | ||||
| if command -v podman >/dev/null 2>&1; then | ||||
|   CONTAINER_CMD="podman" | ||||
| elif command -v docker >/dev/null 2>&1; then | ||||
|   CONTAINER_CMD="docker" | ||||
| else | ||||
|   echo "Error: Neither podman nor docker is installed" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Check if compose command exists | ||||
| if command -v ${CONTAINER_CMD}-compose >/dev/null 2>&1; then | ||||
|   COMPOSE_CMD="${CONTAINER_CMD}-compose" | ||||
| elif command -v podman-compose >/dev/null 2>&1; then | ||||
|   COMPOSE_CMD="podman-compose" | ||||
| elif command -v docker-compose >/dev/null 2>&1; then | ||||
|   COMPOSE_CMD="docker-compose" | ||||
| else | ||||
|   echo "Error: No compose command found (podman-compose or docker-compose)" | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| echo "Using ${COMPOSE_CMD} to start Ollama service..." | ||||
| 
 | ||||
| # Fix relative path in volume mount if needed | ||||
| if grep -q "../../data:/root/.ollama" "${BIN_HOME}/${BIN_BASE}/ollama/podman-compose.yml"; then | ||||
|   # Create data directory if it doesn't exist | ||||
|   mkdir -p "${BIN_HOME}/data" | ||||
|    | ||||
|   # Start Ollama service with compose | ||||
|   ${COMPOSE_CMD} -f podman-compose.yml up -d | ||||
| else | ||||
|   ${COMPOSE_CMD} up -d | ||||
| fi | ||||
| 
 | ||||
| # Verify container is running | ||||
| if ! ${CONTAINER_CMD} container exists ollama 2>/dev/null || ! ${CONTAINER_CMD} ps | grep -q ollama; then | ||||
|   echo "Warning: Container may not be running properly. Trying direct container command..." | ||||
|    | ||||
|   # Try to start it directly if it exists | ||||
|   if ${CONTAINER_CMD} container exists ollama 2>/dev/null; then | ||||
|     echo "Starting existing ollama container..." | ||||
|     ${CONTAINER_CMD} start ollama | ||||
|   else | ||||
|     echo "Creating ollama container directly..." | ||||
|     ${CONTAINER_CMD} run -d --name ollama \ | ||||
|       --privileged \ | ||||
|       -p 11434:11434 \ | ||||
|       -v "${BIN_HOME}/data:/root/.ollama" \ | ||||
|       --restart unless-stopped \ | ||||
|       docker.io/ollama/ollama:latest | ||||
|   fi | ||||
| fi | ||||
| 
 | ||||
| echo "${head_002} Ollama service started successfully" | ||||
|  | @ -1,68 +0,0 @@ | |||
| #!/bin/bash | ||||
| #Script     	: vpn_check.sh | ||||
| #Apps			: MRDEVS TOOLS | ||||
| #Description	: Verifica conexión a VPN | ||||
| #Author			: Mauro Rosero Pérez | ||||
| #Company Email	: mauro@rosero.one | ||||
| #Personal Email	: mauro.rosero@gmail.com | ||||
| #Created		: 2025/03/22 14:57:08 | ||||
| #Modified		: 2025/03/22 14:57:08 | ||||
| #Version		: 1.2.0 | ||||
| #============================================================================== | ||||
| # Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>] | ||||
| #============================================================================== | ||||
| # Este programa es software libre: usted puede redistribuirlo y/o modificarlo | ||||
| # bajo los términos de la Licencia Pública Affero General de GNU tal como | ||||
| # lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, | ||||
| # o (a su elección) cualquier versión posterior. | ||||
| # | ||||
| # Este programa se distribuye con la esperanza de que sea útil, | ||||
| # pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de | ||||
| # COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la | ||||
| # Licencia Pública Affero General de GNU para obtener más detalles. | ||||
| # | ||||
| # Debería haber recibido una copia de la Licencia Pública Affero General | ||||
| # junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| # Configuración inicial | ||||
| # Usar DEVELOPER_DIR de base.lib | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| BIN_BASE="bin" | ||||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then | ||||
|   DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat") | ||||
| else | ||||
|   DEVSPATH="devs" | ||||
| fi | ||||
| 
 | ||||
| BIN_HOME="$HOME/$DEVSPATH" | ||||
| BIN_PATH=$BIN_HOME/$BIN_BASE | ||||
| VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version") | ||||
| 
 | ||||
| # CHECK SHELL LANGUAGE | ||||
| BIN_LANG=${LANG:0:2} | ||||
| 
 | ||||
| # Importar bibliotecas necesarias | ||||
| if [ -f "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" ]; then | ||||
|   source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib" | ||||
|   # Cargar mensajes en el idioma del sistema o español por defecto | ||||
|   load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head" | ||||
|   title="${head_000} ${head_002}" | ||||
| fi | ||||
| 
 | ||||
| # Verificar tipo de VPN conectado | ||||
| vpn_type=$(get_vpn_type) | ||||
| vpn_result=$? | ||||
| if [ $vpn_result -eq 0 ]; then | ||||
|   echo "$head_vpn_type: $vpn_type" | ||||
| else | ||||
|   if [ $vpn_result -eq 1 ]; then | ||||
|     echo "$head_vpn_no_connected" | ||||
|   else | ||||
|     echo "$head_vpn_unknown" | ||||
|   fi | ||||
| fi | ||||
|  | @ -34,7 +34,6 @@ BIN_BASE="bin" | |||
| BIN_LIBS="lib" | ||||
| BIN_MESG="msg" | ||||
| BIN_CFGS="config" | ||||
| BIN_ANSIBLE="ansible" | ||||
| 
 | ||||
| # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto | ||||
| if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then | ||||
|  |  | |||
|  | @ -1,21 +0,0 @@ | |||
| { | ||||
| 	"data": "ENC[AES256_GCM,data:wzUuXCw/03iQx/uBbYZaH2RUUOS9kRNsOxeYnf9gxg9EtTnHcAKCdgsi57MjCAOoJNFModUP1oiI,iv:0OxbnDf+YpAUxPKD4pwWr1m2SKigjltl2Tia9Ebvha0=,tag:IfBggkQeIxnNIa1L6WOp8Q==,type:str]", | ||||
| 	"sops": { | ||||
| 		"kms": null, | ||||
| 		"gcp_kms": null, | ||||
| 		"azure_kv": null, | ||||
| 		"hc_vault": null, | ||||
| 		"age": null, | ||||
| 		"lastmodified": "2025-03-22T19:17:45Z", | ||||
| 		"mac": "ENC[AES256_GCM,data:3DYGOmI8egY+KHpzhF8grzCs1cJ0nMc0YeQlDV7X0B4+vEK/Ja7YR7bUG4zIR38OhpENZbHMDK2ciyoifJdO4hPZKQk/+MsmdmfxV9WF+lJ0AXe3U/mGmpDv5W9KHmR13zgaN0On2cQT9cLziA7KpaSGw4CfLNgxKU/OSJC7iW0=,iv:J34Sj4LMzGCD6TOB6IU71kT8Sxj7orUb0A0yRfyB8kI=,tag:quu2v+T8lTyqRKGtE7vs8Q==,type:str]", | ||||
| 		"pgp": [ | ||||
| 			{ | ||||
| 				"created_at": "2025-03-22T19:17:45Z", | ||||
| 				"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAx5Q8cfEImn/AQ//TNSynZiJbXr16tKHNusO/8UHpS1bWIuSjJG0lcdc7c/7\nGbmDzl5mRxi38FhP/evzNiArB8uL81P0hfKogdNIFe+19yVXzuCBxd9FMLLKnFkX\nvm+0O7fkQsAU266w0snbDZdZuM6gDqiERdgeUrUh4rSdgjeHMoa2MvfpL62ncjF3\nhZL8RMGSF6Q2mjYWkjgJqVbPzKeB4x7adm3HD7YTTzSBoAChVXXSUhXl4ZMfglWb\nlF9bXrOXFwzZtiWDsLfciJdlM6hy7sDsMUIXcMXTEPNv4cMkftKzKSbD9iN1MYP0\nZC7r/yhQtZqbN1IKjtqmSBPgvhS6CbCGt7GG5iH5ohqt1L/+bJYiEkuves1DRkBq\nREDiVhHL0Dn4qTafBuE2zDB8T1MzKagUS62qJM5ODyHaC8UXz7C2OSsFIxwccZI6\njkCCW5Kx9inxNvvtwkQo8f1RH1ui+CE1f18quxCR9cTqM4Z1hADZSRQCc9DFOBC/\nVVMcdlXRluD2cwtqUyzjIAMzmDske4GRVgJsEib8b8m1Y6P783kfHJI6qjFCzLmE\npnTwOYs946K8NmVawcl6FgdDxuIZltQgMuD7xCaVR+p3IDFUNH1EYPEO8lhtTGAS\n7ScRrZYmOM+T+sHk3U+3T4OtDUjWrWMPXVC4+FrFaBUhZQ4jsjNnBkuQeqPshy3S\nXAHS4cfo9VIixvbwVibiAVkGCc4eUFiIQO/7FArmQ66Cp1YxtmbD2jCyoHAl+bMl\nlfOnww8y4AwB3+cnj2PkxnEPr2D5bvC4XPWSqhcPziUY/y7m9GUkYadKSIRq\n=wLIg\n-----END PGP MESSAGE-----", | ||||
| 				"fp": "ACB17A9DB7A680D0FED714E2A17ADF8EA1E9DB07" | ||||
| 			} | ||||
| 		], | ||||
| 		"unencrypted_suffix": "_unencrypted", | ||||
| 		"version": "3.9.2" | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in a new issue