Covers Ubuntu 24.04 LTS and Ubuntu 26.04 LTS. Differences between versions are clearly marked.
When installing Ubuntu, choose Default Selection (just the essentials β web browser and basic utilities).
# Check Ubuntu version
lsb_release -a
sudo dmidecode -s bios-version
# Display hostname and key system info
hostnamectl
# Show disk usage β sorted largest first
du -h -s * | sort -h -r
#If you want to delete everything under ~/.config/Code except User/settings.json, you can use find
find ~/.config/Code -mindepth 1 \
! -path ~/.config/Code/User \
! -path ~/.config/Code/User/settings.json \
-deletesudo apt update
sudo apt upgrade
# combined
sudo apt update -y && sudo apt upgrade -y
# Useful apt helpers
apt search <keyword>
sudo apt --fix-broken install
sudo apt autoremove --purge
sudo apt autopurgesudo apt install nala
# Edit nala config for binary file sizes:
# Set to true for MiB, false for MB
sudo nano /etc/nala/nala.conf
filesize_binary = true
# or this single command
sudo sed -i '/^filesize_binary[[:space:]]*=/c\filesize_binary = true' /etc/nala/nala.confUbuntu 24.04
sudo apt purge ubuntu-report apport apport-gtkUbuntu 26.04
sudo apt purge ubuntu-report apport apport-core-dump-handler apport-gtk# Accessibility tools (~117 MB)
sudo apt purge brltty orca gnome-accessibility-themes fonts-noto-cjk
# Optional language/input/speech packages. Blob errors, safe to ignore (~294 MB)
sudo apt purge speech-dispatcher* libpinyin* ibus* pocketsphinx* espeak* liblouis* hplip*
# Cleanup unused dependencies (~37 MB)
sudo apt autoremove --purgesudo apt purge 'cups*' 'foomatic*' \
printer-driver-brlaser* \
printer-driver-foo2zjs-common* \
printer-driver-ptouch* \
printer-driver-c2esp* \
printer-driver-min12xxw* \
printer-driver-sag-gdi*
sudo apt autoremove --purgeFirst, identify what's installed:
dpkg --list | grep -Ei 'linux-image|linux-headers|linux-tools|linux-modules|linux-hwe'Then purge specific old versions (replace with actual package names):
sudo apt purge package1 package2 package3
sudo apt autopurge
sudo update-grubwget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb# Node.js 22.x LTS (stable)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
# Node.js 24.x LTS (latest)
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo bash -
# Node.js 26.x LTS (latest)
curl -fsSL https://deb.nodesource.com/setup_26.x | sudo bash -
sudo nala install -y nodejssudo npm install -g npm@latest corepack@latest npm-check-updates typescript pnpm@latest yarn vite
# bun will be 350++ MiB
sudo npm install -g bun
sudo npm config set allow-scripts=bun,yarn --location=user
# Check for outdated global packages
sudo npm outdated -g --depth=0
# Update all global packages
sudo npm update -gRecommended for single GitHub accounts. Multiple accounts require additional configuration.
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
git config --global core.editor "code --wait"ls -al ~/.sshIf keys exist, skip to steps 3 and 6.
ssh-keygen -t ed25519 -C "your.email@example.com"eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519cat ~/.ssh/id_ed25519.pubchmod 600 ~/.ssh/id_ed25519Paste the output of step 4 into GitHub β Settings β SSH and GPG keys β New SSH key.
rm ~/.ssh/known_hosts
ssh-keyscan github.com >> ~/.ssh/known_hosts
ssh -T git@github.comsudo bash -c "$(curl -s https://ohmyposh.dev/install.sh)" -- -d /usr/bin
# Move themes to home directory
sudo mv /root/.cache/oh-my-posh/themes/ ~/.oh-my-posh && sudo chown -R "$USER:$USER" ~/.oh-my-posh
# Use the enclosed `.bashrc` β uncomment your preferred theme at the bottom, then refresh:
exec bash# Reset GNOME folders
gsettings reset org.gnome.desktop.app-folders folder-children
# Reset ALL user-configured GNOME settings (destructive β use carefully)
dconf reset -f /
# Export full GNOME settings
dconf dump / > ubuntu2604.conf
# Load full GNOME settings
dconf load / < ubuntu2604.conf
# Export GNOME extension settings only
dconf dump /org/gnome/shell/extensions/ > aa-gnome-exts-settings.conf
# Load GNOME extension settings only
dconf load /org/gnome/shell/extensions/ < aa-gnome-exts-settings.confUnofficial Ubuntu packages maintained by xtradeb. Prefer chromium over ungoogled-chromium since extensions can be installed in it.
sudo add-apt-repository ppa:xtradeb/apps -y
sudo nala update
sudo nala install yt-dlp parabolic calibre ungoogled-chromium chromium# Essential Tools
sudo nala install curl git gnome-calendar gnome-shell-extension-manager gnome-tweaks nautilus-admin gedit gedit-plugins thunar 7zip
# Multimedia Plugins
sudo nala install gstreamer1.0-libav gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly libheif-plugin-libde265 gst-audio-thumbnailer gst-video-thumbnailer
# Optional
sudo nala install adb fastboot foliate file-roller rar unrar synaptic
sudo nala install errands wike wordbooksudo nala install amberol totem vlc loupesudo nala install gapless showtime clapper gnome-video-trimmer vlcsudo nala install build-essential libssl-dev libreadline-dev pkg-configsudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable
sudo nala install qbittorrentPurges snaps, installs flatpaks, restores vanilla GNOME |