Ubuntu Fresh Install Setup: Essential Developer Environment Guide
Complete Ubuntu fresh install setup guide covering Java, Node.js, Docker installation, security configuration, and development environment optimization for developers and programmers.
Setting up Ubuntu after a fresh installation requires installing essential development software and configuring your programming environment. This comprehensive Ubuntu setup guide covers everything from system cleanup and security configuration to Java, Node.js, Docker installation, helping you create a productive Ubuntu development workstation optimized for modern software development.
Table of Contents
- Ubuntu Version Compatibility
- System Cleanup & Updates
- Essential Software Installation
- Download Essential Applications
- Development Environment Setup
- Security & SSH Configuration
- System Optimization
- System Customization
- DevOps & Container Tools
- Troubleshooting & Common Issues
- Alternative Package Managers
- Performance & Security
- FAQ & Best Practices
- Next Steps
- Official Ubuntu Documentation
- Conclusion
Ubuntu Version Compatibility
Ubuntu Version | LTS | Support Until | Tested | Release Info |
---|---|---|---|---|
22.04 LTS | ✅ | April 2027 | ✅ | Release Notes |
20.04 LTS | ✅ | April 2025 | ✅ | Release Notes |
18.04 LTS | ✅ | April 2023 | ⚠️ | Release Notes |
Verify Your Version:
1
2
lsb_release -a # Check current Ubuntu version
cat /etc/os-release # Alternative method
For latest Ubuntu releases and support information, visit Ubuntu Releases
Ubuntu Release Lifecycle
Ubuntu follows a predictable release schedule with two types of releases:
LTS (Long Term Support) Releases:
- Released every 2 years in April (even years: 20.04, 22.04, 24.04)
- 5 years of free security and maintenance updates
- 10 years of Extended Security Maintenance (ESM) for Ubuntu Pro subscribers
- Recommended for production environments and enterprise use
- More stable with fewer feature changes
Interim Releases:
- Released every 6 months (April and October)
- 9 months of support until the next interim release
- Latest features and software versions
- Suitable for desktop users wanting cutting-edge features
Release Schedule Pattern:
1
20.04 LTS → 20.10 → 21.04 → 21.10 → 22.04 LTS → 22.10 → 23.04 → 23.10 → 24.04 LTS
Upgrade Paths:
- LTS to LTS: Direct upgrade path (20.04 → 22.04 → 24.04)
- Interim releases: Must upgrade through each version sequentially
- Mixed: Can upgrade from LTS to interim, but not recommended for servers
Learn More:
- Ubuntu Release Cycle - Official release information
- Ubuntu Pro - Extended security maintenance and enterprise support
1. System Cleanup & Updates
Snap Package Management (Choose Your Preference)
Snap Package History: Ubuntu introduced Snap package management with Ubuntu 16.04 LTS (Xenial Xerus) in April 2016.
2024 Update: Snap packages are now widely adopted and perform much better than in early releases. However, you can still choose your preferred package management approach:
Option A: Keep Snap Packages (Recommended for most users)
1
2
3
4
5
6
# Update existing snaps
sudo snap refresh
# Popular development tools available as Snaps:
# - VS Code, Discord, Slack, Docker
# - Firefox (default in Ubuntu 22.04+)
Option B: Remove Snap Packages (For traditional APT preference)
1
2
3
4
5
6
7
8
9
10
# Check installed snap packages
snap list
# Remove snap packages
sudo snap remove --purge <package-name>
# Remove snap system (optional)
sudo rm -rf /var/cache/snapd/
sudo apt autoremove --purge snapd gnome-software-plugin-snap
sudo rm -fr ~/snap
Note: Some applications like Firefox and Chromium are only available as Snap packages in recent Ubuntu versions.
System Updates
1
2
3
4
5
# Update package lists and upgrade system
sudo apt update && sudo apt dist-upgrade
# Remove unnecessary packages
sudo apt autoremove
Remove Unwanted Applications
1
2
# Remove Thunderbird mail client (if not needed)
sudo apt purge thunderbird*
2. Essential Software Installation
Multimedia Support
Install codecs and media players for complete multimedia support:
1
2
3
4
5
6
7
8
# Install restricted extras (codecs, fonts, Flash)
sudo apt install ubuntu-restricted-extras
# Install VLC media player
sudo apt install vlc
# Install FFmpeg for video processing
sudo apt install ffmpeg
Archive Utilities
1
2
# Support for RAR, 7-Zip, and other archive formats
sudo apt install rar unrar p7zip-full p7zip-rar
System Tools
1
2
3
4
5
6
7
8
9
10
11
# GNOME Tweaks for advanced customization
sudo apt install gnome-tweaks
# Git version control
sudo apt install git
# Terminal multiplexer
sudo apt install tmux
# Advanced terminal tools
sudo apt install htop tree curl wget
Terminal Enhancement (Optional)
Zsh Shell with Oh My Zsh:
Prerequisites: Install Zsh first (required by Oh My Zsh)
- Visit Installing ZSH for detailed instructions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Step 1: Install Zsh shell (required)
sudo apt update
sudo apt install zsh
# Verify Zsh installation
zsh --version
# Step 2: Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Step 3: Change default shell to Zsh (optional)
chsh -s $(which zsh)
# Step 4: Configure themes and plugins (edit ~/.zshrc)
# ZSH_THEME="robbyrussell" # Default
# ZSH_THEME="agnoster" # Popular choice
# plugins=(git docker kubectl python)
Note: Ubuntu uses bash by default. Zsh must be installed before Oh My Zsh installation. This is optional for users who prefer advanced shell features.
3. Download Essential Applications
Web Browsers & Communication
- Google Chrome - Popular web browser
- Skype - Video calling
- Zoom - Video conferencing
Development Tools
- Visual Studio Code - Code editor
- JetBrains Toolbox - PyCharm & IntelliJ IDEA
- Eclipse IDE - Java development
- Oracle Java JDK - Java Development Kit
Cloud Storage & Productivity
Database Tools
- MySQL Workbench - MySQL database management
- DBeaver - Universal database client
- TablePlus - Modern database client (Linux version)
- pgAdmin - PostgreSQL administration
4. Development Environment Setup
Java Development Kit
Choose from multiple OpenJDK distributions for Ubuntu development:
OpenJDK Options (LTS Recommended)
Distribution | Provider | Ubuntu Installation |
---|---|---|
Eclipse Adoptium | Eclipse Foundation | sudo apt install temurin-11-jdk |
Amazon Corretto | Amazon Web Services | Download .deb package |
Azul Zulu | Azul Systems | Download .deb package |
Microsoft Build of OpenJDK | Microsoft | Download .deb package |
Red Hat OpenJDK | Red Hat | sudo apt install openjdk-11-jdk |
Oracle Java JDK | Oracle Corporation | Manual installation |
Method 1: Ubuntu Repository (Recommended)
1
2
3
4
5
6
7
8
9
# Install OpenJDK from Ubuntu repositories
sudo apt update
sudo apt install openjdk-11-jdk # Java 11 LTS
# or
sudo apt install openjdk-17-jdk # Java 17 LTS
# Verify installation
java -version
javac -version
Method 2: Eclipse Adoptium (Temurin)
1
2
3
4
5
6
7
8
9
# Add Adoptium repository
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add -
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
# Install Temurin JDK
sudo apt update
sudo apt install temurin-11-jdk # Java 11 LTS
# or
sudo apt install temurin-17-jdk # Java 17 LTS
Method 3: Manual Installation (Oracle JDK)
Download Oracle JDK:
- Visit Oracle Java Downloads
- Accept the license agreement
- Download the Linux x64 tar.gz file (e.g.,
jdk-17_linux-x64_bin.tar.gz
)
Installation Steps:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Create JVM directory
sudo mkdir -p /usr/lib/jvm/
# Extract Oracle JDK (replace with your downloaded version)
sudo tar -xzf jdk-17_linux-x64_bin.tar.gz -C /usr/lib/jvm/
# Rename for easier management (optional)
sudo mv /usr/lib/jvm/jdk-17.0.* /usr/lib/jvm/oracle-jdk-17
# Set as default Java (if multiple versions installed)
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-jdk-17/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle-jdk-17/bin/javac 1
# Verify installation
java -version
Note: Oracle JDK requires accepting the license agreement and may require an Oracle account for download. For most development work, OpenJDK alternatives are recommended.
Configure Java Environment
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Find Java installation path
sudo update-alternatives --config java
# Set JAVA_HOME (add to ~/.bashrc)
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc
# For manual installation, use:
# echo 'export JAVA_HOME=/usr/lib/jvm/jdk-11.0.12' >> ~/.bashrc
# Reload configuration
source ~/.bashrc
# Verify Java environment
echo $JAVA_HOME
java -version
javac -version
Manage Multiple Java Versions
1
2
3
4
5
6
7
# List installed Java versions
sudo update-alternatives --config java
sudo update-alternatives --config javac
# Switch between Java versions
sudo update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac
Go Programming Language
Download Go:
- Visit Go Downloads
- Download the Linux version (e.g.,
go1.21.5.linux-amd64.tar.gz
)
Installation Steps:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Remove any previous Go installation
sudo rm -rf /usr/local/go
# Extract Go to /usr/local
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
# Add Go to PATH (add to ~/.bashrc)
echo 'export GOROOT=/usr/local/go' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> ~/.bashrc
# Reload configuration
source ~/.bashrc
# Verify installation
go version
Alternative: Install via APT (Ubuntu repository)
1
2
3
4
5
6
# Install Go from Ubuntu repositories (may be older version)
sudo apt update
sudo apt install golang-go
# Verify installation
go version
Build Tools
Gradle Build Tool:
Method 1: Ubuntu Repository (Recommended)
1
2
3
4
5
6
# Install Gradle from Ubuntu repositories
sudo apt update
sudo apt install gradle
# Verify installation
gradle -v
Method 2: Manual Installation
- Visit Gradle Releases
- Download the Binary-only distribution (e.g.,
gradle-8.5-bin.zip
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Create Gradle directory
sudo mkdir /opt/gradle
# Extract Gradle
sudo unzip -d /opt/gradle gradle-8.5-bin.zip
# Add to PATH
echo 'export PATH=$PATH:/opt/gradle/gradle-8.5/bin' >> ~/.bashrc
# Reload configuration
source ~/.bashrc
# Verify installation
gradle -v
Method 3: SDKMAN (Version Management)
1
2
3
# Install via SDKMAN (if installed)
sdk install gradle 8.5
sdk use gradle 8.5
Maven Build Tool:
Method 1: Ubuntu Repository (Recommended)
1
2
3
4
5
6
# Install Maven from Ubuntu repositories
sudo apt update
sudo apt install maven
# Verify installation
mvn -version
Method 2: Manual Installation
- Visit Maven Downloads
- Download the Binary tar.gz archive (e.g.,
apache-maven-3.9.6-bin.tar.gz
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Download Maven (or download manually from website)
wget https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
# Extract Maven to /opt
sudo tar -xzf apache-maven-3.9.6-bin.tar.gz -C /opt/
# Configure Maven environment
echo 'export M2_HOME=/opt/apache-maven-3.9.6' >> ~/.bashrc
echo 'export PATH=$PATH:$M2_HOME/bin' >> ~/.bashrc
# Reload configuration
source ~/.bashrc
# Verify installation
mvn -version
Method 3: SDKMAN (Version Management)
1
2
3
# Install via SDKMAN (if installed)
sdk install maven 3.9.6
sdk use maven 3.9.6
Node.js & JavaScript Development
Method 1: Ubuntu Repository
1
2
3
4
5
6
7
# Install Node.js from Ubuntu repositories
sudo apt update
sudo apt install nodejs npm
# Verify installation
node --version
npm --version
Method 2: NodeSource Repository (Latest LTS)
- Visit Node.js Downloads for latest versions
1
2
3
4
5
6
7
8
9
# Add NodeSource repository for latest LTS
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
# Install Node.js
sudo apt-get install -y nodejs
# Verify installation
node --version
npm --version
Method 3: Node Version Manager (NVM)
1
2
3
4
5
6
7
8
9
10
11
12
# Install NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Reload shell configuration
source ~/.bashrc
# Install latest LTS Node.js
nvm install --lts
nvm use --lts
# Set default version
nvm alias default node
Apply Environment Changes
1
2
3
4
5
6
7
8
9
# Reload bash configuration
source ~/.bashrc
# Verify installations
java -version
go version
gradle -v
mvn -v
node --version
5. Security & SSH Configuration
SSH Setup
1
2
3
4
5
6
7
8
9
# Install SSH client and server
sudo apt install openssh-client openssh-server
# Generate SSH key pair
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Enable SSH access (optional)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Git Configuration
1
2
3
4
5
6
# Set global Git configuration
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
# Set default branch name
git config --global init.defaultBranch main
GitHub Authentication:
- Create Personal Access Token
- Use token instead of password for Git operations
- Configure Git Credential Manager for secure token storage
6. System Optimization
Increase File Descriptor Limits
For development work that requires many open files:
1
2
3
4
5
6
7
8
9
10
11
# Check current limits
ulimit -a
# Temporary increase for current session
ulimit -n 200000
# Permanent configuration
sudo nano /etc/security/limits.conf
# Add these lines:
# * soft nofile 65536
# * hard nofile 200000
R Programming Environment
Method 1: Ubuntu Repository (Recommended)
1
2
3
4
5
6
7
8
9
10
# Install R and essential dependencies
sudo apt update
sudo apt install r-base r-base-dev
# Install additional development libraries
sudo apt install libcurl4-openssl-dev libssl-dev libxml2-dev
sudo apt install libmariadbclient-dev build-essential
# Install essential R packages
R -e "install.packages(c('devtools', 'rmarkdown', 'tidyverse'), repos='https://cran.rstudio.com/')"
Method 2: Latest R from CRAN Repository
- Visit R for Ubuntu for latest instructions
1
2
3
4
5
6
7
8
9
# Add CRAN repository key
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
# Add CRAN repository (replace 'jammy' with your Ubuntu codename)
echo "deb https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/" | sudo tee -a /etc/apt/sources.list.d/cran-r.list
# Update and install latest R
sudo apt update
sudo apt install r-base r-base-dev
Install RStudio (Optional)
- Visit RStudio Downloads
- Download the Ubuntu .deb package
1
2
3
4
5
# Install RStudio (replace with downloaded version)
sudo dpkg -i rstudio-2023.12.1-402-amd64.deb
# Fix dependencies if needed
sudo apt-get install -f
Markdown Editor (Optional)
Typora Markdown Editor:
- Visit Typora Downloads
- Choose your preferred installation method
Method 1: Repository Installation (Recommended)
1
2
3
4
5
6
7
# Add Typora's repository and key
wget -qO - https://typora.io/linux/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/typora.asc
echo 'deb https://typora.io/linux ./' | sudo tee /etc/apt/sources.list.d/typora.list
# Update and install Typora
sudo apt update
sudo apt install typora
Method 2: Direct Download (.deb package)
1
2
3
4
5
6
7
8
# Download latest Typora .deb package
wget https://typora.io/linux/typora_linux_amd64.deb
# Install Typora
sudo dpkg -i typora_linux_amd64.deb
# Fix dependencies if needed
sudo apt-get install -f
Method 3: Flatpak (Universal)
1
2
3
4
5
# Install via Flatpak
flatpak install flathub io.typora.Typora
# Run Typora
flatpak run io.typora.Typora
Alternative Markdown Editors:
- Ghostwriter - Distraction-free markdown editor
- Zettlr - Academic writing and note-taking
- Obsidian - Knowledge management and note-taking
7. System Customization
Desktop Environment
- Enable Night Light: Settings → Display → Night Light
- Set Default Applications: Settings → Default Applications
- Online Accounts: Settings → Online Accounts (Ubuntu One, Google, etc.)
- Dock Customization: Add frequently used applications
Check Init System
1
2
3
# Verify which init system is running
ps --no-headers -o comm 1
# Output: systemd (modern) or init (legacy)
8. DevOps & Container Tools
Docker Installation
Method 1: Official Docker Repository (Recommended)
- Visit Docker for Ubuntu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Add Docker's official GPG key
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Add user to docker group (optional)
sudo usermod -aG docker $USER
# Verify installation
sudo docker run hello-world
Method 2: Ubuntu Repository (Older version)
1
2
3
4
5
6
7
# Install Docker from Ubuntu repositories
sudo apt update
sudo apt install docker.io docker-compose
# Start and enable Docker service
sudo systemctl start docker
sudo systemctl enable docker
Kubernetes Tools
1
2
3
4
5
6
7
8
9
# Install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Install Helm
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
Cloud CLI Tools
AWS CLI:
1
2
3
4
5
6
7
# Install AWS CLI v2
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# Verify installation
aws --version
Google Cloud CLI:
1
2
3
4
5
6
# Add Google Cloud SDK repository
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
# Install Google Cloud CLI
sudo apt-get update && sudo apt-get install google-cloud-cli
Troubleshooting & Common Issues
Package Management Issues
Package Installation Fails:
1
2
3
4
5
6
7
# Fix broken packages
sudo apt update
sudo apt --fix-broken install
# Clear package cache if needed
sudo apt clean
sudo apt autoclean
Repository Issues:
1
2
3
4
5
# Reset repository sources
sudo apt update --fix-missing
# Refresh GPG keys
sudo apt-key update
Development Environment Issues
Environment Variables Not Working:
1
2
3
4
5
6
7
# Check current environment
echo $JAVA_HOME
echo $PATH
# Reload configuration
source ~/.bashrc
# or restart terminal
Java Version Conflicts:
1
2
3
4
5
# Check installed Java versions
sudo update-alternatives --config java
# Set specific Java version
sudo update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java
Network & SSH Issues
SSH Connection Issues:
1
2
3
4
5
6
7
# Check SSH service status
sudo systemctl status ssh
sudo systemctl enable ssh
sudo systemctl start ssh
# Check SSH configuration
sudo nano /etc/ssh/sshd_config
Network Configuration:
1
2
3
4
5
# Reset network settings
sudo systemctl restart NetworkManager
# Check network status
nmcli device status
Alternative Tools & Package Managers
Package Management Alternatives (2024)
Universal Package Formats:
- Snap Store: Ubuntu’s universal packages (improved performance since 2021)
- Flatpak: Sandboxed applications with Flathub store
- AppImage: Portable, no-installation-required applications
Traditional Package Managers:
- APT: Ubuntu’s native package manager (fastest, most compatible)
- Homebrew: Popular macOS package manager, now supports Linux
Installation Examples:
1
2
3
4
5
6
7
8
9
10
11
# Snap (if kept)
sudo snap install code discord
# Flatpak setup
sudo apt install flatpak
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub com.visualstudio.code
# Homebrew for Linux
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install --cask visual-studio-code
Development Environment Managers
- SDKMAN: SDK version management for Java, Scala, Kotlin, Maven, Gradle
- asdf: Multi-language version manager
- Docker: Containerized development environments
SDKMAN Installation for Java Management:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Install SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# Install Java versions
sdk install java 11.0.19-tem # Eclipse Temurin Java 11
sdk install java 17.0.7-tem # Eclipse Temurin Java 17
# Install build tools
sdk install maven 3.9.4
sdk install gradle 8.3
# Switch Java versions
sdk use java 11.0.19-tem
sdk use java 17.0.7-tem
# Set default version
sdk default java 17.0.7-tem
Performance & Security
Performance Optimization
System Performance Metrics:
- Boot time: ~45s → ~35s (after cleanup)
- Memory usage: ~1.2GB → ~800MB (post-optimization)
- Available storage: +2GB (after removing unnecessary packages)
- Package installation: 20% faster with apt vs snap
Performance may vary based on hardware specifications and installed applications.
Performance Monitoring Commands:
1
2
3
4
5
6
# System resource monitoring
htop # Interactive process viewer
top # Process monitor
free -h # Memory usage
df -h # Disk usage
iostat # I/O statistics
Security Best Practices
⚠️ Essential Security Configuration:
Firewall Setup:
1
2
3
4
5
6
7
# Enable UFW firewall
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow SSH (if needed)
sudo ufw allow ssh
System Updates:
1
2
3
# Enable automatic security updates
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Security Checklist:
- ✅ Use strong SSH keys (RSA 4096-bit minimum)
- ✅ Enable UFW firewall with restrictive rules
- ✅ Regular security updates via
apt update && apt upgrade
- ✅ Verify package signatures before installation
- ✅ Review Ubuntu Security Notices regularly
- ✅ Use encrypted home directory for sensitive data
Security Resources:
- Ubuntu Security Guide - Official security documentation
- SSH Key Guide - SSH security best practices
- UFW Documentation - Firewall configuration
- Ubuntu CVE Tracker - Vulnerability database
FAQ & Best Practices
Frequently Asked Questions
Q: Should I remove Snap packages in 2024?
A: Not recommended for most users. Snap packages have significantly improved since 2021 and are now the default for many Ubuntu applications (Firefox, Chromium). They offer better security through sandboxing and automatic updates. Only remove if you specifically need APT-only workflows. See Snap vs APT comparison.
Q: Which Java version should I install for Ubuntu development?
A: Java 11 LTS or Java 17 LTS for most development work. Java 11 has broader compatibility with legacy projects, while Java 17 offers modern features and performance improvements. For new projects, choose Java 17 LTS. Check Oracle Java support roadmap for long-term support details.
Q: Should I use OpenJDK or Oracle JDK on Ubuntu?
A: OpenJDK is recommended for most developers. It’s free, open-source, and functionally equivalent to Oracle JDK. Eclipse Adoptium (Temurin) and Ubuntu’s OpenJDK packages are excellent choices. Use Oracle JDK only if you need commercial support or specific Oracle features.
Q: Is this Ubuntu setup guide suitable for servers?
A: Partially. Skip GUI applications and desktop customization sections. Focus on development tools, security configuration, and system optimization. Refer to Ubuntu Server Guide for server-specific setup.
Q: How often should I update my Ubuntu system?
A: Weekly for security updates, monthly for full system updates. Enable automatic updates for critical security patches. Use sudo apt update && sudo apt upgrade
for manual updates.
Q: What’s the difference between Ubuntu LTS and regular releases?
A: LTS (Long Term Support) releases are supported for 5 years and recommended for production use. Regular releases have 9 months of support and include the latest features. Choose LTS for stability, regular releases for cutting-edge features.
Quick Reference Commands
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# System Information
lsb_release -a # Ubuntu version
uname -r # Kernel version
free -h # Memory usage
df -h # Disk usage
uptime # System uptime
# Package Management
apt list --installed # List installed packages
apt search <package> # Search packages
sudo apt autoremove # Remove unused packages
apt show <package> # Package information
# Process Management
ps aux # Running processes
killall <process> # Kill process by name
sudo systemctl status <service> # Service status
Best Practices for Ubuntu Development
Development Workflow:
- Use version managers (SDKMAN for Java, NVM for Node.js) for easy version switching
- Separate development environments using Docker containers or virtual environments
- Regular backups of configuration files (
~/.bashrc
,~/.ssh/
, project files) - Document your setup for team consistency and future reference
System Maintenance:
- Weekly: Security updates (
sudo apt update && sudo apt upgrade
) - Monthly: Full system cleanup (
sudo apt autoremove && sudo apt autoclean
) - Quarterly: Review installed packages and remove unused software
- Annually: Consider LTS upgrade path planning
Next Steps
After completing this setup:
- Install IDE Extensions: Configure VS Code, IntelliJ plugins
- Set Up Databases: MySQL, PostgreSQL, MongoDB
- Configure Firewall:
sudo ufw enable
- Install Docker: For containerized development
- Set Up Backup: Configure automatic backups
Official Ubuntu Documentation
Essential References
- Ubuntu Desktop Guide - Official desktop documentation
- Ubuntu Installation Guide - Step-by-step installation
- Ubuntu Package Management - APT package manager guide
- Ubuntu Community Help - Community-driven documentation
Development Resources
- Ubuntu for Developers - Development tools and workflows
- Snap Store - Universal Linux packages
- Launchpad - Ubuntu development platform
- Ubuntu Packages Search - Find and verify packages
Security & Support
- Ubuntu Security Notices - Latest security updates
- Ubuntu Forums - Community support
- Ask Ubuntu - Q&A platform
Conclusion
This comprehensive Ubuntu fresh install setup guide provides everything needed for creating a productive development environment. From essential software installation to security configuration, you now have a complete roadmap for setting up Ubuntu after a fresh installation.
Key Takeaways:
- Start with system updates and choose your preferred package management approach
- Install essential multimedia support for complete Ubuntu functionality
- Configure development environment with proper PATH variables and tools
- Prioritize security with SSH keys and firewall configuration
- Optimize system performance for better resource utilization
Related Ubuntu Resources:
- Linux Troubleshooting Commands Guide - Essential commands for Ubuntu system administration
- Complete Git Workflows Guide - Version control setup for your Ubuntu development environment
This setup provides a solid foundation for Ubuntu development and daily use. Customize further based on your specific needs and workflow preferences.
Ready to get started? Follow this guide step-by-step to transform your fresh Ubuntu installation into a powerful development workstation! 🚀