Post

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.

Ubuntu Fresh Install Setup: Essential Developer Environment Guide

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

Ubuntu VersionLTSSupport UntilTestedRelease Info
22.04 LTSApril 2027Release Notes
20.04 LTSApril 2025Release Notes
18.04 LTSApril 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:


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)

  1. 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

Development Tools

Cloud Storage & Productivity

Database Tools


4. Development Environment Setup

Java Development Kit

Choose from multiple OpenJDK distributions for Ubuntu development:

DistributionProviderUbuntu Installation
Eclipse AdoptiumEclipse Foundationsudo apt install temurin-11-jdk
Amazon CorrettoAmazon Web ServicesDownload .deb package
Azul ZuluAzul SystemsDownload .deb package
Microsoft Build of OpenJDKMicrosoftDownload .deb package
Red Hat OpenJDKRed Hatsudo apt install openjdk-11-jdk
Oracle Java JDKOracle CorporationManual installation
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:

  1. Visit Oracle Java Downloads
  2. Accept the license agreement
  3. 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:

  1. Visit Go Downloads
  2. 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

  1. Visit Gradle Releases
  2. 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

  1. Visit Maven Downloads
  2. 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)

  1. 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:

  1. Create Personal Access Token
  2. Use token instead of password for Git operations
  3. 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

  1. 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)

  1. Visit RStudio Downloads
  2. 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:

  1. Visit Typora Downloads
  2. 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

  1. Enable Night Light: Settings → Display → Night Light
  2. Set Default Applications: Settings → Default Applications
  3. Online Accounts: Settings → Online Accounts (Ubuntu One, Google, etc.)
  4. 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)

  1. 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:


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:

  1. Use version managers (SDKMAN for Java, NVM for Node.js) for easy version switching
  2. Separate development environments using Docker containers or virtual environments
  3. Regular backups of configuration files (~/.bashrc, ~/.ssh/, project files)
  4. 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:

  1. Install IDE Extensions: Configure VS Code, IntelliJ plugins
  2. Set Up Databases: MySQL, PostgreSQL, MongoDB
  3. Configure Firewall: sudo ufw enable
  4. Install Docker: For containerized development
  5. Set Up Backup: Configure automatic backups

Official Ubuntu Documentation

Essential References

Development Resources

Security & Support


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

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! 🚀

This post is licensed under CC BY 4.0 by the author.