This is a practical 101 checklist for turning a fresh Ubuntu install into a useful daily workstation.
It is not a perfect dotfiles repo or a minimal Linux manifesto. The goal is simpler: get the machine updated, predictable, synced, backed up, and comfortable enough for daily work.
The Short Version
| Area | Good Default |
|---|---|
| System updates | Update packages first, then reboot if the kernel changed |
| Drivers | Check Additional Drivers before debugging display, Wi-Fi, or GPU issues |
| Package sources | Use APT for system packages, Flatpak for desktop apps, official .deb or AppImage builds when needed |
| Browsers | Keep Firefox as a baseline, then add Helium or Zen Browser if they fit your workflow |
| Sync | Use the official Nextcloud Desktop client for a Nextcloud server; use Syncthing for peer-to-peer folders |
| Editor | Try Gram if you want a modern open-source code editor; keep a terminal editor installed too |
| Terminal | Use Ghostty for the terminal window, tmux for durable sessions, and Herdr for agent-heavy terminal work |
| Backups | Configure file backups before you customize everything |
| Security | Enable the firewall, use a password manager, set up SSH keys, and avoid random install scripts |
First Hour Checklist
Start with updates and the boring tools you will need repeatedly:
sudo apt update
sudo apt upgrade
sudo apt install \
ca-certificates \
curl \
git \
gnupg \
build-essential \
unzip \
p7zip-full \
htop \
btop \
tree \
ripgrep \
fd-find \
jq \
fzf \
direnv \
tmux \
flatpak \
gnome-software-plugin-flatpak \
ufw
If this is a laptop or desktop you sit in front of, enable the firewall:
sudo ufw enable
sudo ufw status
If this is a remote machine that you access over SSH, allow SSH before enabling the firewall:
sudo ufw allow OpenSSH
sudo ufw enable
Then check firmware and drivers:
- open Software & Updates
- check Additional Drivers
- apply proprietary GPU or Wi-Fi drivers only when they match your hardware
- reboot after kernel, driver, or firmware changes
Package Sources
Use different install paths for different kinds of software:
| Source | Use It For | Notes |
|---|---|---|
| APT | Core system tools, libraries, CLI utilities | Best default for packages that integrate with the OS |
| Flatpak / Flathub | Desktop applications | Good isolation and usually fresher desktop builds |
Official .deb |
Vendor-supported desktop apps | Prefer the upstream package over random mirrors |
| AppImage | Portable apps and one-off tools | Easy to try, but use AppImageLauncher if you want desktop menu integration |
| Homebrew / mise / language managers | Developer tools with fast release cycles | Useful, but avoid mixing them blindly with system packages |
The rule of thumb: install operating-system parts with the operating-system package manager, and install fast-moving user apps from the project’s official path.
If Flatpak is not already configured, add Flathub:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Then restart the graphical software center or reboot once so desktop app listings refresh cleanly.
For AppImages, consider AppImageLauncher instead of manually keeping random .AppImage files in Downloads.
It is useful when you want:
- AppImages moved into one predictable applications folder
- desktop menu integration
- easier launch behavior for apps that do not ship a
.debor Flatpak
Useful link:
Browsers
Keep Firefox installed even if it is not your main browser. It gives you a stable baseline for debugging websites, extensions, and login problems.
Then add one or two alternate browsers, not five.
Helium
Helium is a privacy-first Chromium-based browser that aims to remove the noisy parts of the modern browser experience.
It is useful when you want:
- Chromium compatibility without making Chrome your daily browser
- default ad and tracker blocking
- a cleaner browser UI
- official Linux packages instead of hand-rolled builds
Useful links:
Zen Browser
Zen Browser is another good candidate when you want a calmer daily browser rather than a stock browser profile with dozens of extensions.
It is useful when you want:
- a modern desktop browser available on Linux
- Flathub-friendly installation on Linux
- a browser profile dedicated to writing, research, or logged-in work
- separation from your default Firefox or Chromium profile
Useful links:
File Sync
For a normal Nextcloud setup, start with the official Nextcloud Desktop client.
Use it when you want:
- automatic file sync between your laptop and a Nextcloud server
- selective sync for large folders
- desktop notifications for sync conflicts
- a normal tray app that family members or coworkers can understand
Useful links:
If you do not need a server and just want peer-to-peer folder sync between machines, also look at Syncthing.
Useful link:
Security And Privacy Apps
Two desktop apps are worth configuring early because they affect the rest of your setup.
Bitwarden
Bitwarden is a good default password manager for a Linux desktop because it gives you browser extensions, desktop apps, mobile apps, and a self-hostable server path if you want one later.
Use it when you want:
- one place for passwords, recovery codes, and secure notes
- browser autofill without saving passwords in each browser profile
- separate personal, work, and shared vaults
- an easier path to using unique passwords everywhere
Useful links:
Proton VPN
Proton VPN is useful when you want a normal desktop VPN client for travel, public Wi-Fi, or separating everyday browsing from your home IP address.
Use it when you want:
- a Linux VPN client from a privacy-focused provider
- quick protection on airport, hotel, cafe, or coworking Wi-Fi
- a separate network profile for casual browsing
- VPN support without hand-maintaining raw WireGuard or OpenVPN configs
Useful links:
Code Editor
Install at least one graphical editor and one terminal editor.
For the graphical editor, Gram is worth testing if you want a modern open-source code editor with Linux builds.
Useful links:
For the terminal fallback:
sudo apt install vim nano
That fallback matters when your graphical session breaks, you SSH into the machine, or you need to edit a config file before the desktop tools are ready.
Terminal Stack
A practical terminal setup has three layers:
| Layer | Tool | Role |
|---|---|---|
| Terminal emulator | Ghostty | The native terminal window you interact with |
| Session multiplexer | tmux | Durable panes, windows, detach, and reattach |
| Agent workspace | Herdr | Persistent terminal workspaces for coding agents |
Ghostty
Ghostty is a fast native terminal emulator with Linux support.
Use it when you want a polished terminal window without building your workflow around a browser tab.
Useful links:
tmux
tmux is still the baseline for durable terminal sessions.
Use it when you want:
- several shells inside one terminal
- long-running commands that survive a closed terminal window
- SSH-friendly detach and reattach
- repeatable panes for logs, tests, servers, and editors
Start a session:
tmux new -s work
Detach with Ctrl-b, then d.
Reattach later:
tmux attach -t work
Useful link:
Herdr
Herdr makes more sense once you run coding agents or many supervised terminal tasks.
Use it when you want:
- persistent terminal panes around tools like Codex, Claude Code, OpenCode, or similar agents
- visible agent status across panes
- a terminal-native workspace instead of a web dashboard
- a control layer that can sit next to tmux-style workflows
Useful links:
Shell Quality of Life
These tools are small, but they compound quickly:
| Tool | Why Install It |
|---|---|
ripgrep |
Fast text search across projects |
fd-find |
Faster file finding than classic find for common interactive use |
jq |
JSON filtering in scripts and API debugging |
btop |
Process and resource monitoring |
tree |
Quick folder structure previews |
fzf |
Fuzzy selection for shell history, files, and scripts |
direnv |
Per-project environment variables |
On Ubuntu, some command names differ from upstream:
fd-findusually installs the command asfdfindbatmay install asbatcatif you add it later
Backups Before Customization
Do this before spending hours tuning the desktop.
For normal user files:
- use Backups / Deja Dup for a simple desktop backup
- point it at an external disk, NAS, or cloud-backed folder
- test restore at least once
For system snapshots:
- consider Timeshift if you want OS-level restore points
- keep snapshots on a separate disk if possible
- do not confuse snapshots with real backups
For developer work:
- push important repositories to Git remotes
- keep dotfiles in a private Git repository if they contain machine-specific settings
- never commit tokens,
.envsecrets, SSH private keys, or browser profiles
SSH And Git Basics
Generate a modern SSH key:
ssh-keygen -t ed25519 -C "[email protected]"
Start the agent and add the key:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Configure Git identity:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main
Use separate SSH keys for personal, work, and server automation contexts when possible.
Suggested Install Order
Use this order if you want a low-friction setup:
- Update Ubuntu and reboot.
- Check Additional Drivers.
- Install essential CLI packages.
- Enable the firewall.
- Configure backups.
- Install your browser set: Firefox baseline, then Helium or Zen Browser.
- Configure Bitwarden and Proton VPN.
- Install Nextcloud Desktop or Syncthing.
- Install Gram and terminal fallback editors.
- Install Ghostty.
- Configure tmux.
- Add Herdr only if you actually run agent-heavy terminal workflows.
- Create SSH keys and configure Git.
- Export or document the final app list.
Comments