Cosas que hago después de instalar Debian 13 (Trixie)

Cada vez que hago una instalación limpia de Debian termino repitiendo los mismos pasos: actualizar el sistema, meter mis herramientas de siempre, dejar listos los lenguajes con los que trabajo (PHP, Python, Node, Go…) y armar un entorno de desarrollo completo con bases de datos, Docker y compañía.

Este post es esa checklist, para no tener que andar buscando comandos sueltos cada vez que formateo.

Actualizar el sistema

Lo primero, siempre:

sudo apt update && sudo apt upgrade

Herramientas base

sudo apt install curl git zip fish curl wget

Navegadores

Google Chrome (sitio web)

cd ~ && wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && sudo dpkg -i google-chrome-stable_current_amd64.deb && sudo rm -r google-chrome-stable_current_amd64.deb

Brave (sitio web)

curl -fsS https://dl.brave.com/install.sh | sh

Microsoft Edge (sitio web)

curl -fSsL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft-edge.gpg > /dev/null
echo 'deb [signed-by=/usr/share/keyrings/microsoft-edge.gpg] https://packages.microsoft.com/repos/edge stable main' | sudo tee /etc/apt/sources.list.d/microsoft-edge.list
sudo apt update && sudo apt install microsoft-edge-stable

Editores de código

Sublime Text (sitio web)

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/sublimehq-archive.gpg > /dev/null &&
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list &&
sudo apt-get update && sudo apt-get install sublime-text

VS Code (sitio web)

cd ~ && wget -O vscode.deb 'https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64' && sudo dpkg -i vscode.deb && sudo rm -r vscode.deb

Zed

Zed es un editor de código nativo, muy rápido, con colaboración en tiempo real e IA integrada. Se instala con su script oficial:

curl -f https://zed.dev/install.sh | sh

Requiere un driver Vulkan 1.3 (GPU). Para desinstalarlo más adelante:

zed --uninstall

JetBrains Toolbox (ver última versión)

Según la documentación oficial, Toolbox se autoactualiza, así que conviene extraerlo en un directorio donde tu usuario tenga permisos de escritura (no en /opt con sudo, o luego no podrá actualizarse solo):

mkdir -p ~/Applications
wget -c https://download-cdn.jetbrains.com/toolbox/jetbrains-toolbox-3.2.0.65851.tar.gz && tar -xzf jetbrains-toolbox-*.tar.gz -C ~/Applications && rm -r jetbrains-toolbox-*.tar.gz && ~/Applications/jetbrains-toolbox-*/bin/jetbrains-toolbox

Lenguajes y entornos de desarrollo

PHP (sitio web)

sudo apt install php php-mysql php-xml php-mbstring php-gd php-zip php-curl php-gmp php-imagick php-bcmath
php -v

Composer y Laravel (Composer · Laravel)

cd ~ && curl -sS https://getcomposer.org/installer -o composer-setup.php && sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer && sudo rm -r composer-setup.php

composer global require laravel/installer

Agrega el bin global de Composer al PATH en ~/.bashrc:

export PATH="~/.config/composer/vendor/bin:$PATH"

Python (ver última versión)

wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
tar -xf Python-3.9.1.tgz
cd Python-3.9.1
./configure --enable-optimizations
make -j 2
sudo make altinstall
python3 --version

Node.js (vía nvm) (última versión de nvm · versiones de Node)

# Instalar nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# En lugar de reiniciar la shell
\. "$HOME/.nvm/nvm.sh"

# Instalar Node.js
nvm install 24

# Verificar versiones
node -v
npm -v

Yarn / Angular / NestJS (Yarn · Angular · NestJS)

sudo npm install -g yarn
yarn --version

sudo npm install -g @angular/cli
sudo npm install -g @nestjs/cli

Go (ver última versión)

wget https://go.dev/dl/go1.25.7.linux-amd64.tar.gz && sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.25.7.linux-amd64.tar.gz && sudo rm -r go1.25.7.linux-amd64.tar.gz

Agrega Go al PATH en ~/.bashrc:

export PATH=$PATH:/usr/local/go/bin

Recarga el perfil y verifica:

source $HOME/.profile
go version

Ruby (sitio web)

sudo apt-get install ruby-full
ruby -v

.NET (ver última versión)

wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0
sudo apt-get update && sudo apt-get install -y aspnetcore-runtime-8.0
dotnet --version

Nota (Trixie): en Debian 13 este paquete puede fallar con un error del estilo “Signing key on BC528686… is not bound … SHA1 is not considered secure since 2026-02-01”. Es porque packages-microsoft-prod.deb instala una copia vieja de la llave de Microsoft cuya auto-firma usa SHA-1, y la política de verificación de Trixie (sqv/sequoia) ya no la acepta. La llave en sí sigue siendo válida, solo hay que refrescar el keyring con una copia más nueva (con auto-firma en SHA-256):

curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor --yes -o /usr/share/keyrings/microsoft-prod.gpg
sudo apt-get update

Java (ver última versión)

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb && sudo dpkg -i jdk-21_linux-x64_bin.deb && sudo rm -r jdk-21_linux-x64_bin.deb
java -version

Flutter (ver última versión)

cd ~ && sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev
wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.38.0-stable.tar.xz
tar xvf ~/flutter_linux_*-stable.tar.xz
sudo mv flutter /opt/flutter
sudo rm -r flutter_linux_*-stable.tar.xz

Agrega Flutter y Dart al PATH en ~/.bashrc:

export PATH="$PATH:/opt/flutter/bin"

export FLUTTER_HOME=/opt/flutter
export DART_HOME=$FLUTTER_HOME/bin

Recarga el perfil y valida la instalación:

source $HOME/.profile
flutter doctor -v

Servidor web y bases de datos

Apache (sitio web)

sudo apt install apache2

MariaDB / MySQL (sitio web)

sudo apt install mariadb-server
sudo mariadb-secure-installation

Crea un usuario administrador:

sudo mariadb
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'tu-password-segura';
GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost';
FLUSH PRIVILEGES;
EXIT;
sudo systemctl status mariadb

PostgreSQL (sitio web)

sudo apt install postgresql-client postgresql -y
sudo systemctl start postgresql
sudo -u postgres psql
create user admin with encrypted password 'tu-password-segura';
ALTER USER admin WITH SUPERUSER;

MongoDB (ver última versión)

sudo apt-get install gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian trixie/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl status mongod

Redis (sitio web)

sudo apt install redis-server -y
sudo systemctl status redis-server

Docker (sitio web)

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo systemctl status docker

Agrega tu usuario al grupo docker para no depender de sudo:

sudo usermod -aG docker ${USER}
su - ${USER}
groups

Herramientas de productividad

Postman (sitio web)

tar -C /tmp/ -xzf <(curl -L https://dl.pstmn.io/download/latest/linux64) && sudo mv /tmp/Postman /opt/
sudo tee -a /usr/share/applications/postman.desktop << END
[Desktop Entry]
Encoding=UTF-8
Name=Postman
Exec=/opt/Postman/Postman
Icon=/opt/Postman/app/resources/app/assets/icon.png
Terminal=false
Type=Application
Categories=Development;
END

GitHub Desktop (ver última versión)

cd ~
wget https://github.com/shiftkey/desktop/releases/download/release-3.1.1-linux1/GitHubDesktop-linux-3.1.1-linux1.deb
sudo dpkg -i GitHubDesktop-linux-*.deb
sudo rm -r GitHubDesktop-linux-*.deb

Terminator (sitio web)

sudo apt-get install terminator

ffmpeg (sitio web)

sudo apt install ffmpeg
ffmpeg -version

Extras

GIMP (sitio web)

sudo apt install gimp

Spotify (sitio web)

Spotify rota su llave de firmado de vez en cuando (la anterior expiró en febrero de 2025), así que conviene usar signed-by en vez de meter la llave al keyring global de confianza:

sudo mkdir -p /etc/apt/keyrings
curl -sS https://download.spotify.com/debian/pubkey_5384CE82BA52C83A.gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/spotify.gpg
echo "deb [signed-by=/etc/apt/keyrings/spotify.gpg] https://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list
sudo apt-get update && sudo apt-get install spotify-client

Synapse (launcher) (sitio web)

sudo apt install synapse

Ollama (sitio web)

curl -fsSL https://ollama.com/install.sh | sh
ollama serve
ollama -v

LM Studio

LM Studio es una app de escritorio para correr modelos de lenguaje (LLMs) localmente, con una interfaz gráfica tipo chat y un servidor local compatible con la API de OpenAI. En Linux se distribuye como AppImage:

cd ~ && wget -O LM-Studio.AppImage https://lmstudio.ai/download/latest/linux/x64
chmod +x LM-Studio.AppImage
./LM-Studio.AppImage

Si solo necesitas el daemon en modo headless (sin interfaz gráfica, útil para un servidor), hay un script de instalación:

curl -fsSL https://lmstudio.ai/install.sh | bash

Steam (sitio web)

wget https://repo.steampowered.com/steam/archive/precise/steam_latest.deb
sudo dpkg -i steam_latest.deb
sudo rm -r steam_latest.deb

Minecraft (sitio web)

cd ~
wget https://launcher.mojang.com/download/Minecraft.deb
sudo dpkg -i Minecraft.deb
sudo rm -r Minecraft.deb

Desinstalar herramientas

Si en algún momento quiero quitar algo de lo anterior, aquí quedan los comandos inversos, agrupados igual que las secciones de instalación.

Herramientas base

sudo apt remove curl git zip fish wget

Navegadores

# Chrome
sudo apt remove google-chrome-stable

# Brave
sudo apt remove brave-browser

# Microsoft Edge
sudo apt remove microsoft-edge-stable
sudo rm /etc/apt/sources.list.d/microsoft-edge.list /usr/share/keyrings/microsoft-edge.gpg

Editores de código

# Sublime Text
sudo apt remove sublime-text
sudo rm /etc/apt/sources.list.d/sublime-text.list /etc/apt/trusted.gpg.d/sublimehq-archive.gpg

# VS Code
sudo apt remove code

# Zed
zed --uninstall

# JetBrains Toolbox (se instaló a mano, no vía apt)
rm -rf ~/Applications/jetbrains-toolbox-*
rm -rf ~/.local/share/JetBrains ~/.config/JetBrains ~/.cache/JetBrains
rm -f ~/.local/share/applications/jetbrains-toolbox.desktop

Lenguajes y entornos de desarrollo

# PHP
sudo apt remove php php-mysql php-xml php-mbstring php-gd php-zip php-curl php-gmp php-imagick php-bcmath

# Composer y Laravel
composer global remove laravel/installer
sudo rm /usr/local/bin/composer

# Python (compilado desde código fuente con altinstall)
sudo rm -f /usr/local/bin/python3.9
sudo rm -rf /usr/local/lib/python3.9
sudo rm -f /usr/local/lib/libpython3.9*

# Node.js (vía nvm)
nvm uninstall 24
# o para quitar nvm por completo:
rm -rf "$HOME/.nvm"

# Yarn / Angular / NestJS
sudo npm uninstall -g yarn @angular/cli @nestjs/cli

# Go
sudo rm -rf /usr/local/go
# y elimina la línea de PATH que agregaste en ~/.bashrc

# Ruby
sudo apt remove ruby-full

# .NET
sudo apt remove dotnet-sdk-8.0 aspnetcore-runtime-8.0

# Java
sudo apt remove jdk-21

# Flutter
sudo rm -rf /opt/flutter
# y elimina las líneas de PATH/FLUTTER_HOME/DART_HOME que agregaste en ~/.bashrc

Servidor web y bases de datos

# Apache
sudo apt remove apache2

# MariaDB
sudo apt remove mariadb-server
# para borrar también los datos:
sudo rm -rf /var/lib/mysql

# PostgreSQL
sudo apt remove postgresql postgresql-client
# para borrar también los datos:
sudo rm -rf /var/lib/postgresql

# MongoDB
sudo apt remove mongodb-org
sudo rm /etc/apt/sources.list.d/mongodb-org-8.0.list /usr/share/keyrings/mongodb-server-8.0.gpg
# para borrar también los datos:
sudo rm -rf /var/lib/mongodb

# Redis
sudo apt remove redis-server

Docker

sudo apt remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg
# para borrar también imágenes, contenedores y volúmenes:
sudo rm -rf /var/lib/docker

Herramientas de productividad

# Postman
sudo rm -rf /opt/Postman
sudo rm /usr/share/applications/postman.desktop

# GitHub Desktop
sudo apt remove github-desktop

# Terminator
sudo apt remove terminator

# ffmpeg
sudo apt remove ffmpeg

Extras

# GIMP
sudo apt remove gimp

# Spotify
sudo apt remove spotify-client
sudo rm /etc/apt/sources.list.d/spotify.list /etc/apt/keyrings/spotify.gpg

# Synapse
sudo apt remove synapse

# Ollama
sudo systemctl stop ollama
sudo rm -f /usr/local/bin/ollama
sudo rm -rf /usr/share/ollama
sudo userdel ollama

# LM Studio (AppImage)
rm -f ~/LM-Studio.AppImage

# Steam
sudo apt remove steam-launcher

# Minecraft
sudo dpkg -r minecraft-launcher

Después de desinstalar paquetes vía apt, conviene limpiar dependencias huérfanas:

sudo apt autoremove

Resultado

Con esto tengo listo, en cuestión de minutos, un Debian 13 con:

  • Sistema actualizado y herramientas base
  • Navegadores y editores de código (Sublime, VS Code, Zed, JetBrains)
  • Entornos de PHP, Node/TypeScript, Python, Go, Ruby, .NET, Java y Flutter
  • Apache, MariaDB, PostgreSQL, MongoDB y Redis
  • Docker listo para levantar contenedores
  • El resto de apps que uso a diario (Postman, GitHub Desktop, Spotify, Ollama, LM Studio, etc.)

A partir de aquí ya puedo empezar a configurar el entorno de desarrollo remoto (SSH + Tailscale) que documenté en el post anterior.


¿Tienes dudas sobre algún paso? Déjalo en los comentarios.

Leave a Reply

Your email address will not be published. Required fields are marked *