{"id":1507,"date":"2025-11-27T09:18:45","date_gmt":"2025-11-27T08:18:45","guid":{"rendered":"https:\/\/germanmallo.com\/?p=1507"},"modified":"2026-10-05T08:15:40","modified_gmt":"2026-10-05T06:15:40","slug":"script-configuracion-ubuntu","status":"publish","type":"post","link":"https:\/\/germanmallo.com\/en\/script-configuracion-ubuntu\/","title":{"rendered":"Mi script para configurar Ubuntu autom\u00e1ticamente (Python, Web e IA)."},"content":{"rendered":"<h2 id=\"la-barrera-invisible-de-linux\">La barrera invisible de Linux<\/h2>\n<p>Seamos honestos. Muchos desarrolladores siguen en Windows o Mac no porque no les guste Linux, sino por <strong>pereza<\/strong>.<\/p>\n<p>Sabes que Linux es superior para gestionar servidores, contenedores y entornos de desarrollo. Pero tambi\u00e9n recuerdas la \u00faltima vez que instalaste una \u00abdistro\u00bb limpia: horas buscando comandos, repositorios que dan error, configurando llaves GPG para Docker y pele\u00e1ndote para que el entorno de Python no explote.<\/p>\n<p>La <strong>fricci\u00f3n inicial<\/strong> es alt\u00edsima.<\/p>\n<p>Como recientemente he migrado todos mis equipos (port\u00e1til y sobremesa) a Ubuntu para unificar mi flujo de trabajo, decid\u00ed que no iba a perder ni un minuto m\u00e1s repitiendo comandos.<\/p>\n<p>He creado un <strong>script <code>.sh<\/code> automatizado<\/strong> que hace todo el trabajo sucio. T\u00fa solo tienes que descargarlo, ejecutarlo e irte a por un caf\u00e9.<\/p>\n<h2 id=\"-qu-instala-este-script-y-por-qu-\">\u00bfQu\u00e9 instala este script y por qu\u00e9?<\/h2>\n<p>No me gusta instalar \u00abbasura\u00bb. Este script est\u00e1 dise\u00f1ado para un perfil <strong>Full Stack, Data Scientist o Ingeniero de IA<\/strong>. Si te dedicas a programar y construir productos, esto es lo que necesitas y la raz\u00f3n de por qu\u00e9 lo he incluido:<\/p>\n<h3 id=\"1-el-n-cleo-del-sistema-essentials-\">1. El N\u00facleo del Sistema (Essentials)<\/h3>\n<p>Lo primero que hace el script es actualizar el sistema y a\u00f1adir herramientas como <code>curl<\/code>, <code>git<\/code> y <code>zsh<\/code>.<\/p>\n<ul>\n<li><strong>\u00bfPor qu\u00e9?<\/strong> Porque la terminal por defecto es aburrida y poco funcional, y sin Git no somos nadie. Tambi\u00e9n instala las <code>build-essential<\/code>, necesarias para compilar ciertas librer\u00edas de Python m\u00e1s adelante.<\/li>\n<\/ul>\n<h3 id=\"2-entorno-data-science-ia-python-docker-\">2. Entorno Data Science &amp; IA (Python + Docker)<\/h3>\n<p>Aqu\u00ed es donde mucha gente se atasca. El script instala Python 3, <code>pip<\/code> y entornos virtuales. Pero la joya de la corona es <strong>Docker<\/strong>.<\/p>\n<ul>\n<li><strong>El problema:<\/strong> Instalar Docker en Ubuntu manualmente requiere a\u00f1adir repositorios oficiales, claves de seguridad y configuraciones de usuario. Es tedioso y propenso a errores.<\/li>\n<li><strong>La soluci\u00f3n:<\/strong> El script automatiza todo el proceso oficial de Docker, te a\u00f1ade al grupo de usuarios (para no tener que usar <code>sudo<\/code> siempre) y lo deja listo para desplegar contenedores o entrenar modelos.<\/li>\n<\/ul>\n<h3 id=\"3-full-stack-moderno-node-js-bien-hecho-\">3. Full Stack Moderno (Node.js bien hecho)<\/h3>\n<p>Si instalas Node.js con el comando por defecto de Ubuntu (<code>apt install nodejs<\/code>), obtendr\u00e1s una versi\u00f3n de hace dos a\u00f1os. <strong>Error de novato.<\/strong><\/p>\n<ul>\n<li><strong>Mi soluci\u00f3n:<\/strong> El script instala <strong>NVM (Node Version Manager)<\/strong> y descarga autom\u00e1ticamente la \u00faltima versi\u00f3n LTS (Long Term Support). Esto te permite cambiar de versi\u00f3n de Node seg\u00fan el proyecto en el que trabajes sin romper nada.<\/li>\n<\/ul>\n<h3 id=\"4-bases-de-datos-postgresql-redis-dbeaver-\">4. Bases de Datos (PostgreSQL + Redis + DBeaver)<\/h3>\n<p>Un backend sin datos no sirve de nada.<\/p>\n<ul>\n<li><strong>PostgreSQL &amp; Redis:<\/strong> Se instalan y configuran como servicios en segundo plano.<\/li>\n<li><strong>DBeaver:<\/strong> He incluido la instalaci\u00f3n de este cliente SQL universal. Es visual, potente y te ahorra tener que hacer consultas <code>SELECT<\/code> desde la terminal pura y dura.<\/li>\n<\/ul>\n<h3 id=\"5-vida-real-spotify-discord-thunderbird-\">5. \u00abVida Real\u00bb (Spotify, Discord, Thunderbird)<\/h3>\n<p>Porque no somos robots. Programar en silencio es triste y necesitamos comunicarnos. El script tambi\u00e9n descarga e instala las versiones oficiales de Spotify, Discord y un gestor de correo decente.<\/p>\n<h2 id=\"descarga-el-script\">Descarga el Script<\/h2>\n<p>Olv\u00eddate de copiar y pegar l\u00edneas de c\u00f3digo. Descarga el archivo, gu\u00e1rdalo en tu carpeta personal y listo.<\/p>\n<p><a href=\"https:\/\/germanmallo.com\/wp-content\/uploads\/2025\/11\/setup_germanmallo.zip\"><strong>\ud83d\udce5 Descargar Script de Instalaci\u00f3n (.zip)<\/strong><\/a><\/p>\n<h3 id=\"-c-mo-se-usa-\">\u00bfC\u00f3mo se usa?<\/h3>\n<p>Una vez descargado el archivo <code>setup_germanmallo.sh<\/code>, solo tienes que abrir tu terminal en la carpeta donde est\u00e9 el archivo y escribir estas dos l\u00edneas:<\/p>\n<ol>\n<li><strong>Dar permisos de ejecuci\u00f3n:<\/strong> (Solo necesitas hacerlo una vez)\n<pre><code class=\"lang-bash\"><span class=\"hljs-selector-tag\">chmod<\/span> +<span class=\"hljs-selector-tag\">x<\/span> <span class=\"hljs-selector-tag\">setup_germanmallo<\/span><span class=\"hljs-selector-class\">.sh<\/span>\n<\/code><\/pre>\n<\/li>\n<li><strong>Ejecutar:<\/strong>\n<pre><code class=\"lang-bash\">.\/setup_germanmallo.<span class=\"hljs-keyword\">sh<\/span>\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>El sistema te pedir\u00e1 tu contrase\u00f1a una vez al principio y el resto es autom\u00e1tico. Ver\u00e1s pasar l\u00edneas de texto matrix-style mientras tu equipo se transforma en una m\u00e1quina de productividad.<\/p>\n<h2 id=\"conclusi-n\">Conclusi\u00f3n<\/h2>\n<p>La tecnolog\u00eda (y Linux en particular) debe trabajar para nosotros, no al rev\u00e9s. Automatizar el \u00absetup\u00bb inicial elimina esa barrera mental de cambiar de ordenador o formatear.<\/p>\n<p>Ahora ya no tienes excusa para no probar ese entorno Linux. Tienes la infraestructura lista en 5 minutos. Lo que construyas con ella ya depende de ti.<\/p>\n<hr \/>\n<p><strong>\u00bfEchas en falta alguna herramienta esencial en tu d\u00eda a d\u00eda? Cu\u00e9ntamelo en los comentarios y actualizo el script para la comunidad.<\/strong><\/p>","protected":false},"excerpt":{"rendered":"<p>La barrera invisible de Linux Seamos honestos. Muchos desarrolladores siguen en Windows o Mac no porque no les guste Linux, sino por pereza. Sabes que Linux es superior para gestionar servidores, contenedores y entornos de desarrollo. Pero tambi\u00e9n recuerdas la \u00faltima vez que instalaste una \u00abdistro\u00bb limpia: horas buscando comandos, repositorios que dan error, configurando [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[79],"tags":[92,218,149,150],"class_list":["post-1507","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatizacion","tag-automatizacion","tag-herramientas-de-desarrollo","tag-linux","tag-ubuntu"],"acf":[],"_links":{"self":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/1507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/comments?post=1507"}],"version-history":[{"count":1,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/1507\/revisions"}],"predecessor-version":[{"id":4965,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/1507\/revisions\/4965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/media\/1509"}],"wp:attachment":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/media?parent=1507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/categories?post=1507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/tags?post=1507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}