Cómo preparar un entorno Linux para desarrollo: guía práctica para dejar tu sistema listo para programar de verdad
Introducción
Instalar Linux es solo el principio. Tener un sistema encendido no significa todavía tener un entorno de desarrollo cómodo, ordenado y realmente útil para trabajar todos los días.
De hecho, aquí es donde mucha gente se queda a medias.
Instalan Ubuntu o la distribución que les gusta, abren la terminal, ponen dos o tres herramientas, clonan un repositorio y ya sienten que “más o menos está listo”. El problema es que, cuando llega el trabajo real,
empiezan a aparecer pequeñas fricciones por todas partes:
- faltan paquetes básicos
- la terminal no está cómoda
- Git no está configurado
- PHP o Node no están bien instalados
- MySQL no está listo
- el editor no está fino
- no hay estructura clara de proyectos
- faltan alias, utilidades y herramientas de debugging
- hay problemas de permisos
- cada proyecto acaba montado distinto
Y al final eso se nota. No solo en productividad, también en orden mental.
Preparar un entorno Linux para desarrollo no consiste en instalar absolutamente todo lo que existe. Consiste en montar una base sólida, limpia y práctica para trabajar mejor. Una base que te permita abrir el equipo, entrar a tu terminal y sentir que tienes un sistema preparado para construir, probar, depurar y desplegar con comodidad.
Este post está pensado justo para eso.
Aquí vamos a recorrer cómo dejar Linux listo para desarrollar de verdad, con una visión práctica y realista. Hablaremos de actualización del sistema, terminal, estructura de trabajo, utilidades esenciales, Git, SSH, editores, runtimes, bases de datos, contenedores, navegador, depuración, seguridad básica y algunos hábitos que hacen una diferencia enorme cuando empiezas a trabajar en serio.
Da igual si vas a desarrollar con:
- PHP
- MySQL
- JavaScript
- TypeScript
- Node
- Python
- Bash
- APIs
- herramientas internas
- automatización
- proyectos personales
- un blog
- un panel
- una Raspberry Pi
- o incluso un stack mixto
La idea aquí es darte una base de entorno Linux realmente útil y profesional, sin humo y sin instalar cosas por moda.
Qué significa realmente tener un entorno Linux listo para desarrollo
Un entorno de desarrollo no es solo “tener un editor”.
Es el conjunto de herramientas, configuraciones y hábitos que hacen que trabajar en tu sistema sea más cómodo, más rápido y más consistente.
Un entorno bien preparado debería ayudarte a:
- abrir proyectos rápido
- trabajar cómodo en terminal
- usar Git sin fricciones
- tener tus runtimes listos
- instalar dependencias sin dolor
- probar servicios locales
- conectarte por SSH cuando haga falta
- levantar bases de datos
- depurar con más claridad
- automatizar tareas repetitivas
- mantener cierto orden entre proyectos
Dicho de otra manera: no se trata solo de programar, sino de preparar el terreno para que programar fluya mucho mejor.
Primer paso: actualizar el sistema antes de empezar a montar cosas
Parece obvio, pero conviene decirlo. Antes de instalar herramientas de desarrollo, actualiza el sistema.
En entornos basados en Debian o Ubuntu, lo normal sería:
sudo apt update sudo apt upgrade
Esto ayuda a:
- tener paquetes al día
- evitar bugs conocidos
- reducir problemas de compatibilidad
- arrancar desde una base más limpia
Si acabas de instalar la distribución, este paso es casi obligado. No conviene empezar a meter herramientas encima de un sistema desactualizado.
También es buen momento para comprobar si necesitas drivers, codecs o algún ajuste básico de hardware si trabajas en un equipo de escritorio o portátil.
Instala herramientas básicas del sistema que vas a usar constantemente
Antes de pensar en stacks concretos, conviene montar una base de utilidades generales.
Muchas veces, estas herramientas son más importantes en el día a día que el lenguaje principal del proyecto.
Algunas muy útiles suelen ser:
curlwgetgithtoptreeunzipzipbuild-essentialca-certificatessoftware-properties-commongnupglsb-release
Un ejemplo típico en Ubuntu podría ser:
sudo apt install -y curl wget git htop tree unzip zip build-essential ca-certificates software-properties-common gnupg lsb-release
Esto no significa que esa lista sea sagrada, pero sí te deja una base muy cómoda para trabajar.
Por qué importan estas herramientas
curlte ayuda a probar APIs, endpoints y descargaswgetes útil para descargas desde terminalgites imprescindiblehtopte ayuda a vigilar procesostreemejora la visualización de directoriosunzipyzipresuelven tareas frecuentesbuild-essentialayuda cuando ciertas dependencias necesitan compilarse
Son pequeñas piezas que suman mucho.
Organiza tu espacio de trabajo desde el principio
Uno de los mejores hábitos que puedes tener es decidir desde temprano cómo vas a organizar tus proyectos.
No dejes que cada repositorio acabe en cualquier rincón del sistema.
Una estructura simple y útil puede ser algo como:
- un directorio general para proyectos
- subcarpetas por tipo o cliente
- una zona para scripts personales
- una zona para pruebas o laboratorios
Por ejemplo:
mkdir -p ~/Projects mkdir -p ~/Projects/clientes mkdir -p ~/Projects/personal mkdir -p ~/Projects/labs mkdir -p ~/scripts
Esto parece pequeño, pero mejora mucho el orden.
Cuando todo vive disperso entre Descargas, Escritorio y rutas aleatorias, el entorno se vuelve caótico más rápido de lo que parece.
Configura bien tu terminal: va a ser una de tus herramientas principales
Si vas a desarrollar en Linux, la terminal no es algo opcional ni decorativo. Va a formar parte de tu flujo de trabajo diario.
Por eso merece la pena dejarla cómoda.
Hay tres niveles aquí:
- shell
- prompt
- configuración de uso
Elegir entre Bash o Zsh
Bash sigue siendo una base excelente y está en todas partes. Muchísima gente trabaja toda su carrera con Bash sin problema.
Zsh también es muy popular por su experiencia más amigable, sobre todo si te interesa:
- autocompletado más rico
- mejor experiencia de prompt
- plugins
- personalización más cómoda
No hace falta caer en una guerra religiosa.
Si estás empezando, Bash está bien. Si quieres una experiencia algo más rica, Zsh puede gustarte mucho.
Ajusta tu archivo de configuración de shell
Si usas Bash, mirarás tu .bashrc.
Si usas Zsh, tu .zshrc.
Ahí puedes ir añadiendo cosas como:
- alias
- variables de entorno
- funciones pequeñas
- mejoras de prompt
- paths personalizados
Por ejemplo, alias útiles:
alias ll='ls -lah' alias gs='git status' alias gp='git pull' alias ..='cd ..' alias ...='cd ../..'
Esto no es imprescindible, pero sí hace la terminal mucho más agradable.
Añade alias que realmente uses, no una colección infinita
Un error común es copiar 80 alias de internet y luego no usar ni la mitad.
Mejor pocos, buenos y tuyos.
Ejemplos útiles para desarrollo:
llpara listar con detallegsparagit statusgaparagit addgcparagit commitartisanophpunitsi usas Laravel o PHP a menudo- alias para ir rápido a tus carpetas de proyectos
Por ejemplo:
alias cdp='cd ~/Projects' alias cdlabs='cd ~/Projects/labs'
Ese tipo de detalles te ahorra muchísimo tiempo a largo plazo.
Deja el prompt claro y útil
Tu prompt debería ayudarte a ver cosas como:
- usuario
- equipo
- ruta actual
- rama Git si aplica
No hace falta convertirlo en una nave espacial RGB.
Lo importante es que sea claro y útil.
Si trabajas con muchos repositorios, ver la rama Git en el prompt ayuda mucho a evitar errores.
Configura Git bien desde el principio
Git no es opcional en un entorno moderno de desarrollo. Aunque trabajes solo, te conviene muchísimo tenerlo bien configurado.
Configuración básica inicial
Normalmente querrás definir:
- nombre
- correo
- editor por defecto
Ejemplo:
git config --global user.name "Tu Nombre" git config --global user.email "tu@email.com" git config --global core.editor "nano"
O si usas VS Code:
git config --global core.editor "code --wait"
Configuraciones muy útiles
Puedes añadir también cosas como:
git config --global init.defaultBranch main git config --global pull.rebase false
No son obligatorias, pero ayudan a dejar Git más alineado con flujos modernos.
Prepara tus claves SSH para Git y servidores
Esto es muy importante si vas a trabajar con:
- GitHub
- GitLab
- VPS
- servidores propios
- despliegues remotos
Generar una clave SSH te evita depender siempre de contraseña y mejora mucho el flujo.
Ejemplo:
ssh-keygen
Luego podrás usar esa clave para:
- autenticarte en servidores
- conectarte a proveedores Git
- firmar o acceder a repositorios privados si hace falta
Conviene guardar bien:
- tu clave privada protegida
- tu clave pública lista para copiar al servicio que la necesite
Esto es una base muy seria para un entorno Linux profesional.
Elige y configura bien tu editor o IDE
Aquí no hay una verdad única, pero sí conviene decidir tu herramienta principal y dejarla bien montada.
Opción muy habitual: Visual Studio Code
Si usas VS Code, conviene dejarlo listo con:
- extensiones del lenguaje que más uses
- Git integrado
- linting
- formateo automático
- tema legible
- terminal integrada cómoda
Por ejemplo, según tu stack, podrías necesitar:
- PHP Intelephense
- Prettier
- ESLint
- extensiones de Docker
- Python
- GitLens
- MySQL o SQL tools
- Markdown tools
La clave es no instalar 200 extensiones “por si acaso”.
Instala las que realmente mejoran tu flujo.
Otras opciones válidas
- Neovim o Vim si te gusta un enfoque más terminal
- JetBrains si tu stack y flujo lo justifican
- Sublime Text si quieres algo ligero
- incluso micro o nano para cosas puntuales
Pero normalmente conviene tener un editor principal bien afinado.
Instala el stack que sí vas a usar, no veinte stacks a la vez
Este es un punto importante. Mucha gente al preparar Linux para desarrollo instala:
- PHP
- Node
- Python
- Ruby
- Go
- Java
- Docker
- tres gestores de bases de datos
- cuatro versiones de todo
y termina con un sistema confuso, inflado y difícil de mantener.
Mejor decide tu base principal.
Como tú trabajas mucho con backend, PHP, MySQL, Linux, automatización y herramientas internas, un entorno muy sensato podría priorizar:
- PHP
- Composer
- MySQL o MariaDB
- Node y npm si te hace falta para frontend o tooling
- Git
- Docker opcional según tu flujo
- alguna utilidad de testing y APIs
Preparar PHP correctamente
Si PHP forma parte de tu stack, no basta con instalar “php” y ya.
Conviene pensar en:
- versión adecuada
- CLI
- extensiones necesarias
- Composer
- integración con tu editor
- posibles múltiples versiones si haces mantenimiento de varios proyectos
Instalar PHP CLI y módulos comunes
En Ubuntu, una base razonable puede incluir:
php-cliphp-mysqlphp-mbstringphp-xmlphp-curlphp-zipphp-intl
Dependiendo del proyecto, también podrías necesitar:
php-gdphp-bcmathphp-soapphp-imagick
Comprobar que está bien instalado
php -v
Y para ver módulos:
php -m
Eso ayuda mucho cuando algo no funciona y no sabes si falta una extensión.
Instala Composer si trabajas con PHP moderno
Composer es básico para la gestión de dependencias en PHP.
Con él podrás:
- instalar librerías
- gestionar paquetes
- levantar proyectos existentes
- seguir flujos modernos de desarrollo
Una vez instalado, comprueba:
composer --version
Conviene que Composer esté accesible desde terminal y bien integrado en tu entorno.
Preparar MySQL o MariaDB para desarrollo
Si vas a trabajar con bases de datos localmente, conviene dejar un motor instalado y probado.
Qué necesitas mínimo
- servidor MySQL o MariaDB
- cliente de línea de comandos
- usuario con permisos razonables
- alguna base de pruebas
Comprobar servicio
Por ejemplo:
systemctl status mysql
o el servicio equivalente si usas MariaDB.
Crear una base o usuario de pruebas
Conviene que tu entorno local tenga:
- una base de datos sandbox
- usuarios pensados para desarrollo
- no depender siempre de root para todo
Esto te ayuda a reproducir mejor entornos reales.
Node.js y npm: aunque no seas frontend puro, seguramente los usarás
Incluso si tu stack principal no es JavaScript, hoy muchas herramientas dependen de Node:
- bundlers
- herramientas de frontend
- Vite
- scripts de build
- utilidades varias
- extensiones y pipelines
Tener Node bien instalado evita muchos dolores de cabeza.
Comprueba instalación
node -v npm -v
Y si trabajas con varios proyectos distintos, puede interesarte más adelante usar un gestor de versiones como nvm.
Eso ayuda mucho cuando una app pide una versión y otra pide otra distinta.
Python: aunque no sea tu stack principal, suele ser útil
Python aparece bastante en:
- automatización
- scripts auxiliares
- herramientas del sistema
- proyectos rápidos
- pequeños pipelines
Por eso no está de más tenerlo listo.
Comprueba:
python3 --version pip3 --version
No hace falta convertir Python en protagonista, pero sí tenerlo disponible puede ayudarte mucho.
Instala herramientas para trabajar con APIs
Si haces backend, integración o pruebas, conviene tener herramientas cómodas para APIs.
curl
Ya lo mencionamos antes, pero merece insistir:
curl es básico.
Postman o Insomnia
Si prefieres entorno gráfico, alguna de estas herramientas puede venirte muy bien para:
- probar endpoints
- guardar colecciones
- revisar cabeceras
- hacer pruebas rápidas de autenticación
No es obligatorio, pero sí muy útil.
Docker: úsalo si encaja con tu flujo, no por moda
Docker puede ser muy útil para:
- levantar servicios aislados
- reproducir entornos
- montar stacks rápidos
- probar versiones diferentes
- trabajar en equipos con consistencia
Pero no es obligatorio para todo el mundo ni para todo proyecto.
Cuándo sí compensa
- trabajas con varios servicios
- necesitas reproducibilidad
- compartes entorno con otros
- haces despliegues o pruebas más profesionales
- quieres aislar dependencias
Cuándo no hace falta correr
- tus proyectos son pequeños
- tu flujo actual local es simple y estable
- todavía estás consolidando tu stack principal
Si lo usas, conviene aprenderlo bien y no convertirlo en otra capa de caos.
Ten una estrategia clara para archivos .env y variables de entorno
Muchos proyectos modernos dependen de variables de entorno.
Eso significa que tu entorno Linux debe manejar con cierta claridad cosas como:
- credenciales
- hosts
- puertos
- claves de APIs
- modos debug
- rutas especiales
Conviene:
- no hardcodear credenciales en scripts
- usar
.envcuando el proyecto lo necesite - no subir archivos sensibles al repositorio
- entender cómo exportar variables en shell si hace falta
Esto mejora mucho la higiene del entorno de desarrollo.
Instala y usa herramientas de búsqueda y navegación que mejoren tu flujo
Cuando trabajas mucho con terminal, algunas utilidades hacen una diferencia enorme.
Por ejemplo:
grepfindripgrepsi quieres búsquedas más cómodas y rápidasfzfsi te gusta búsqueda interactivabatcomo alternativa más amable acatncdupara explorar uso de disco
No necesitas todo desde el primer día, pero algunas de estas herramientas te dan mucha agilidad.
Ajusta el navegador para desarrollo, no solo para navegar
Tu navegador también forma parte del entorno de desarrollo.
Conviene tener claro:
- cuál vas a usar para pruebas
- cómo abrir DevTools rápido
- si usarás varios perfiles
- si necesitas extensiones concretas
Por ejemplo, puede ser útil tener:
- un perfil para desarrollo
- otro para uso personal
- extensiones mínimas y útiles
- limpieza de caché controlada cuando haga falta
Esto parece menor, pero ayuda bastante cuando haces debugging web.
Prepara una base mínima de debugging
Si desarrollas de verdad, no todo será escribir código. También tendrás que depurar.
Tu entorno debería ayudarte a:
- ver logs fácilmente
- seguir procesos
- leer errores
- revisar puertos
- probar servicios
- entender qué consume recursos
Herramientas y hábitos útiles:
tail -fpara logsjournalctlpara servicioshtoppara procesosss -tulpnpara puertoscurlpara endpointsphp -So servidores locales si aplican- logs claros en tus proyectos
Un entorno de desarrollo serio no solo te ayuda a construir, también a entender qué falla.
Piensa en permisos y propiedad de archivos desde el principio
Especialmente si trabajas con:
- PHP
- servidores locales
- contenedores
- scripts
- proyectos clonados
- carpetas compartidas
Los permisos pueden volverse una molestia si no tienes una base sana.
Buenas ideas:
- no trabajar todo como root
- revisar propietarios de proyectos
- entender cuándo hace falta
chmody cuándo no - no abrir permisos de forma absurda solo “para que funcione”
Es preferible entender el problema a resolver que tirar un 777 y seguir adelante.
Ten una carpeta de scripts personales
Esto aporta muchísimo valor con el tiempo.
Puedes guardar scripts para:
- levantar proyectos
- hacer backups rápidos
- reiniciar entornos
- limpiar caches
- abrir carpetas
- consultar IP
- comprobar servicios
- automatizar pequeñas rutinas
Por ejemplo:
mkdir -p ~/scripts
Y luego añadir esa ruta a tu PATH si te interesa.
Eso convierte pequeñas soluciones personales en parte real de tu entorno.
Usa cron o aliases solo cuando aporten valor real
No hace falta automatizar todo ni crear alias para todo comando existente.
Pero sí conviene detectar tareas repetitivas que merecen simplificarse.
Por ejemplo:
- levantar una app con varios pasos
- actualizar dependencias de forma recurrente
- revisar logs concretos
- abrir tus proyectos habituales
Un entorno bueno no es el que tiene más automatización, sino el que elimina fricciones reales.
Crea una base mínima de seguridad incluso en local
Aunque sea tu máquina de desarrollo, sigue siendo buena idea mantener ciertos hábitos:
- actualizaciones
- SSH seguro si usas acceso remoto
- no dejar credenciales por todos lados
- proteger tus claves privadas
- no subir
.envo secretos al repo - usar firewall si el contexto lo justifica
- tener cierto orden en servicios expuestos
Esto es especialmente importante si desarrollas también en equipos que salen de casa, comparten red o hacen pruebas remotas.
Si trabajas con varios proyectos, piensa en consistencia
Uno de los problemas clásicos en desarrollo es que cada proyecto se monta distinto:
- uno usa PHP 8.1
- otro PHP 8.2
- uno con MySQL local
- otro con Docker
- uno con variables distintas
- otro sin documentación mínima
Cuanta más consistencia puedas mantener, mejor.
Por ejemplo:
- misma estructura de carpetas
- misma estrategia de
.env - mismos atajos básicos
- misma forma de iniciar servicios
- mismos estándares de logs o scripts
Esto reduce mucho el desgaste mental.
Documenta tu propio entorno
Esto casi nadie lo hace al principio, pero ayuda muchísimo.
No hace falta escribir un tratado. Basta con guardar algo como:
- qué herramientas principales instalaste
- qué versiones usas
- dónde viven tus proyectos
- alias importantes
- rutas útiles
- puertos frecuentes
- cómo levantas tus stacks
- qué dependencias usas más
Cuando cambias de equipo o reinstalas, esto te ahorra horas.
Ejemplo de setup razonable para un backend developer con Linux
Si pienso en un setup muy sensato para alguien que hace backend, PHP, MySQL, Linux y automatización, me imagino algo así:
- sistema actualizado
- terminal cómoda con Bash o Zsh
- alias básicos útiles
- Git configurado con SSH
- VS Code bien montado
- PHP CLI + extensiones necesarias
- Composer
- MySQL o MariaDB local
- Node y npm por tooling
- Python disponible
- curl, htop, tree, unzip, build-essential
- carpeta
~/Projects - carpeta
~/scripts - logs y debugging básicos claros
- navegador listo para pruebas
- backups o al menos estrategia de respaldo mínima de tus proyectos y configuraciones
Eso ya deja un entorno muy funcional.
Errores comunes al preparar Linux para desarrollo
1. Instalar demasiadas cosas “por si acaso”
Terminas con un entorno inflado y confuso.
2. No organizar proyectos desde el principio
Luego todo vive desperdigado.
3. Dejar Git sin configurar bien
Y perder tiempo en cada commit o conexión.
4. No preparar SSH
Y depender siempre de contraseñas o flujos incómodos.
5. No ajustar la terminal
Y trabajar con una experiencia más torpe de lo necesario.
6. Usar root para resolver problemas de permisos
Mala costumbre que luego trae más caos.
7. No documentar nada
Y tener que reconstruir el entorno desde cero mentalmente cada vez.
8. Querer montar el “setup perfecto” antes de empezar
Mejor un entorno bueno y útil hoy que un supuesto entorno ideal que nunca terminas.
Una estrategia inteligente: empieza simple, mejora con uso real
Este punto es importante.
No necesitas dejar tu entorno “perfecto” en un solo día.
De hecho, muchas de las mejores mejoras aparecen después de usar el sistema:
- detectas qué repites mucho
- qué alias te faltan
- qué scripts te ahorrarían tiempo
- qué extensión sí aporta y cuál sobra
- qué stack realmente usas
- qué herramientas nunca tocas
Por eso, una buena estrategia es:
- montar una base sólida
- trabajar de verdad
- refinar a partir del uso real
Eso suele dar mejores resultados que copiar un setup enorme de otra persona.
Conclusión:
Preparar un entorno Linux para desarrollo no se trata de instalar veinte herramientas y presumir setup. Se trata de construir un sistema que te ayude a trabajar mejor.
Un buen entorno de desarrollo en Linux debería darte:
- orden
- comodidad
- velocidad
- consistencia
- capacidad de depuración
- herramientas adecuadas para tu stack
- menos fricción en lo cotidiano
Si cuidas la terminal, Git, SSH, tus runtimes, tu editor, tus utilidades básicas y una estructura sensata de trabajo, Linux se convierte en una plataforma de desarrollo potentísima.
Y lo mejor es que no hace falta montarlo todo de golpe. Basta con empezar bien y mejorar con intención.