Capek harus setup ulang tools setiap install Ubuntu baru? Skrip ini bisa jadi sahabat terbaikmu.
Sebagai seorang developer, kita semua tahu betapa menyebalkannya proses setup awal setiap kali menginstall ulang sistem. Harus install package satu per satu, tambah repository, konfigurasi ulang… dan ulang lagi. Nah, di sinilah ubuntu_dev_setup.sh
hadir sebagai penyelamat.
Skrip ini dirancang untuk pengguna Ubuntu 24.04 Desktop dan ditulis dengan semangat membantu developer menyiapkan lingkungan kerja secara otomatis dan konsisten. Mulai dari basic tools seperti Git dan curl, hingga aplikasi grafis seperti VS Code atau Google Chrome—semuanya bisa disiapkan dalam satu kali jalan.
Apa yang Dilakukan Skrip Ini?
- Pembaruan sistem otomatis
- Instalasi paket penting:
git
,curl
,build-essential
,python3
, dan lainnya - Instalasi aplikasi populer: seperti Google Chrome, Visual Studio Code, PostgreSQL, dan lainnya
- Penambahan repository dan validasi eksistensinya agar tidak duplikat
Kenapa Skrip Ini Berguna?
- Hemat waktu: Proses setup bisa makan waktu berjam-jam. Skrip ini menyelesaikannya dalam hitungan menit.
- Konsisten: Tidak perlu lagi takut lupa install sesuatu. Semua sudah dirangkum.
- Mudah digunakan: Jalankan satu baris perintah, duduk santai, dan biarkan skrip bekerja.
Cara Menggunakan
Unduh skripnya dan pastikan sudah di-make executable:
chmod +x ubuntu_dev_setup.sh
Jalankan dengan hak akses root:
sudo ./ubuntu_dev_setup.sh
Source Code
#!/bin/bash # Ubuntu 24.04 Desktop Developer Setup Script # This script installs essential development tools and applications # By: Victor P Limbong set -e # Exit on any error # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Function to print colored output print_status() { echo -e "${GREEN}[INFO]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Function to check if command exists command_exists() { command -v "$1" >/dev/null 2>&1 } # Function to add repository if not exists add_repository() { if ! grep -q "$1" /etc/apt/sources.list /etc/apt/sources.list.d/* 2>/dev/null; then echo "$1" | sudo tee -a /etc/apt/sources.list.d/additional.list return 0 else return 1 fi } print_status "Starting Ubuntu 24.04 Developer Setup..." # Enable additional repositories print_status "Enabling additional repositories (universe and multiverse)..." sudo add-apt-repository universe -y sudo add-apt-repository multiverse -y sudo apt update # Update system print_status "Updating system packages..." sudo apt update && sudo apt upgrade -y # Install basic dependencies print_status "Installing basic dependencies..." sudo apt install -y \ curl \ wget \ build-essential \ ca-certificates \ apt-transport-https \ software-properties-common \ gnupg \ lsb-release \ unzip \ tar \ gzip \ gcc \ g++ \ checkinstall # Install UFW Firewall print_status "Installing and configuring UFW firewall..." sudo apt install -y ufw sudo ufw --force enable sudo ufw default deny incoming sudo ufw default allow outgoing # Install unattended-upgrades for automatic security updates print_status "Installing unattended-upgrades..." sudo apt install -y unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades # Install Git print_status "Installing Git..." sudo apt install -y git # Install Python print_status "Installing Python..." sudo apt install -y python3 python3-pip python3-venv python3-dev # Install Node.js (using NodeSource repository for latest) print_status "Installing Node.js..." curl -fsSL https://deb.nodesource.com/setup_23.x | sudo -E bash - sudo apt install -y nodejs # Install Java (OpenJDK 21 - latest LTS) print_status "Installing OpenJDK 21..." sudo apt install -y openjdk-21-jdk openjdk-21-jre default-jdk # Install Qt6 C++ Development Tools print_status "Installing Qt6 C++ Development Tools..." sudo apt install -y \ qt6-base-dev \ qt6-base-dev-tools \ qt6-declarative-dev \ qt6-declarative-dev-tools \ qt6-tools-dev \ qt6-tools-dev-tools \ qt6-multimedia-dev \ qt6-connectivity-dev \ qt6-sensors-dev \ qt6-positioning-dev \ qt6-webengine-dev \ qt6-charts-dev \ qt6-serialport-dev \ qt6-svg-dev \ qt6-image-formats-plugins \ qt6-wayland-dev \ qt6-l10n-tools \ libqt6opengl6-dev \ libqt6sql6-sqlite \ libqt6sql6-mysql \ libqt6sql6-psql \ qml6-module-qtquick \ qml6-module-qtquick-controls \ qml6-module-qtquick-layouts \ qml6-module-qtquick-window \ qml6-module-qtquick-dialogs \ qtcreator \ qtcreator-dev \ qtcreator-doc \ cmake \ ninja-build \ pkg-config \ libgl1-mesa-dev \ libglu1-mesa-dev \ libxkbcommon-dev \ libxcb-xinerama0-dev \ libxcb-cursor-dev \ libxcb-util1-dev \ libxrandr-dev \ libxss-dev \ libxcomposite-dev \ libxdamage-dev \ libfontconfig1-dev \ libxext-dev \ libxfixes-dev \ libxi-dev \ libxrender-dev \ libxcb1-dev \ libxcb-glx0-dev \ libxcb-keysyms1-dev \ libxcb-image0-dev \ libxcb-shm0-dev \ libxcb-icccm4-dev \ libxcb-sync-dev \ libxcb-xfixes0-dev \ libxcb-shape0-dev \ libxcb-randr0-dev \ libxcb-render-util0-dev \ libxcb-xkb-dev \ libxkbcommon-x11-dev print_status "Qt6 C++ development environment installed successfully!" print_status "Qt Creator IDE and all essential Qt6 modules are now available." # Install Go (Golang) print_status "Installing Go (Golang)..." wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz -P /tmp sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf /tmp/go1.23.4.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc echo 'export GOPATH=$HOME/go' >> ~/.bashrc echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin print_status "Go installed successfully!" # Install Google Chrome print_status "Installing Google Chrome..." wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list sudo apt update sudo apt install -y google-chrome-stable # Install Visual Studio Code print_status "Installing Visual Studio Code..." wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list sudo apt update sudo apt install -y code # Install .NET 9.0 print_status "Installing .NET 9.0..." wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb sudo apt update sudo apt install -y dotnet-sdk-9.0 # Install SQL Server 2022 print_status "Installing SQL Server 2022..." wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)" sudo apt update sudo apt install -y mssql-server print_warning "Remember to run 'sudo /opt/mssql/bin/mssql-conf setup' to configure SQL Server" # Install SQL Server Command-Line Tools print_status "Installing SQL Server Command-Line Tools..." curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt update sudo apt install -y mssql-tools18 unixodbc-dev echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc export PATH="$PATH:/opt/mssql-tools18/bin" print_status "SQL Server tools (sqlcmd, bcp) installed successfully!" # Install PostgreSQL print_status "Installing PostgreSQL..." sudo apt install -y postgresql postgresql-contrib postgresql-client # Install Flatpak print_status "Installing Flatpak..." sudo apt install -y flatpak gnome-software-plugin-flatpak sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # Install Snap packages print_status "Installing Snap packages..." sudo snap install keepassxc sudo snap install libreoffice sudo snap install vlc sudo snap install obsidian --classic sudo snap install flutter --classic # Install Rust print_status "Installing Rust..." curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source ~/.cargo/env # Install Homebrew print_status "Installing Homebrew..." /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" # Install Omakub (Ubuntu setup tool) print_status "Installing Omakub..." wget -qO- https://omakub.org/install | bash || print_warning "Omakub installation failed or not available" # Install other apt packages print_status "Installing additional tools..." sudo apt install -y \ nmap \ flameshot \ terminator # Install JetBrains Toolbox print_status "Installing JetBrains Toolbox..." JB_TMP_DIR="/tmp" JB_INSTALL_DIR="$HOME/.local/share/JetBrains/Toolbox" JB_SYMLINK_DIR="$HOME/.local/bin" sudo apt-get install -y libfuse2 libxi6 libxrender1 libxtst6 mesa-utils libfontconfig libgtk-3-bin JB_ARCHIVE_URL=$(curl -s 'https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release' | grep -Po '"linux":.*?[^\\]",' | awk -F ':' '{print $3,":"$4}'| sed 's/[", ]//g') JB_ARCHIVE_FILENAME=$(basename "$JB_ARCHIVE_URL") rm "$JB_TMP_DIR/$JB_ARCHIVE_FILENAME" 2>/dev/null || true wget -q --show-progress -cO "$JB_TMP_DIR/$JB_ARCHIVE_FILENAME" "$JB_ARCHIVE_URL" mkdir -p "$JB_INSTALL_DIR" rm "$JB_INSTALL_DIR/jetbrains-toolbox" 2>/dev/null || true tar -xzf "$JB_TMP_DIR/$JB_ARCHIVE_FILENAME" -C "$JB_INSTALL_DIR" --strip-components=1 rm "$JB_TMP_DIR/$JB_ARCHIVE_FILENAME" chmod +x "$JB_INSTALL_DIR/bin/jetbrains-toolbox" mkdir -p $JB_SYMLINK_DIR rm "$JB_SYMLINK_DIR/jetbrains-toolbox" 2>/dev/null || true ln -s "$JB_INSTALL_DIR/bin/jetbrains-toolbox" "$JB_SYMLINK_DIR/jetbrains-toolbox" print_warning "JetBrains Toolbox installed. Run 'jetbrains-toolbox' to launch it." # Install GitKraken print_status "Installing GitKraken..." wget -O /tmp/gitkraken.deb "https://release.gitkraken.com/linux/gitkraken-amd64.deb" sudo dpkg -i /tmp/gitkraken.deb || sudo apt install -f -y # Install ProtonVPN print_status "Installing ProtonVPN..." wget -O /tmp/protonvpn.deb "https://repo.protonvpn.com/debian/dists/stable/main/binary-all/protonvpn-stable-release_1.0.8_all.deb" sudo dpkg -i /tmp/protonvpn.deb sudo apt update sudo apt install -y proton-vpn-gnome-desktop # Clean up print_status "Cleaning up temporary files..." rm -f /tmp/*.deb /tmp/*.tar.gz /tmp/*.zip /tmp/*.AppImage /tmp/go*.tar.gz packages-microsoft-prod.deb # Configure Git (optional) print_status "Git configuration (optional)..." read -p "Do you want to configure Git now? (y/n): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then read -p "Enter your Git username: " git_username read -p "Enter your Git email: " git_email git config --global user.name "$git_username" git config --global user.email "$git_email" print_status "Git configured successfully!" fi # Final system update print_status "Performing final system update..." sudo apt update && sudo apt upgrade -y sudo apt autoremove -y sudo apt autoclean print_status "Installation completed successfully!" print_warning "Please note the following:" echo "1. Run 'sudo /opt/mssql/bin/mssql-conf setup' to configure SQL Server" echo "2. Restart your terminal or run 'source ~/.bashrc' to use Homebrew, SQL Server tools, and Go" echo "3. Some applications may require a system restart to work properly" echo "4. JetBrains Toolbox can be launched with 'jetbrains-toolbox'" echo "5. Configure PostgreSQL with 'sudo -u postgres psql'" echo "6. Install Android Studio from JetBrains Toolbox" echo "7. Flutter may need additional setup - run 'flutter doctor' to check" echo "8. SQL Server tools (sqlcmd, bcp) are available after restarting terminal" echo "9. Qt Creator IDE is available and ready for Qt6 C++ development" echo "10. Qt6 tools: qmake6, cmake, and all Qt6 modules are installed" echo "11. Change default shell to Zsh with: chsh -s \$(which zsh)" echo "12. Go is installed - check with 'go version' after restarting terminal" echo "13. Unattended-upgrades is configured for automatic security updates" echo "14. System info tools: neofetch, fastfetch, and htop are available" print_status "Setup script completed!"