A comprehensive collection of bash scripts for setting up Ubuntu development environments with security tools, productivity applications, and system configurations. These scripts are designed for reliable execution at scale across Ubuntu-based Linux distributions.
- 🔧 Automated Setup: Complete system configuration with a single command
- 🛡️ Security First: Built-in security tools, firewall configuration, and safe installation practices
- ⚡ Optimized Performance: Batch installations and smart caching for faster execution
- 🔄 Idempotent: Safe to run multiple times without issues
- 📝 Comprehensive Logging: Detailed progress tracking and error reporting
- 🎯 Modular Design: Run individual components or the complete setup
- Ubuntu 20.04+ or Ubuntu-based distribution
- Internet connection
- Sudo privileges
- Clone the repository
git clone https://github.com/garretpatten/ubuntu-setup-scripts
cd ubuntu-setup-scripts
- Update submodules (for dotfiles)
git submodule update --init --remote --recursive src/dotfiles/
- Make scripts executable
chmod +x src/scripts/*.sh
- Run the complete setup
./src/scripts/master.sh
You can also run individual setup scripts:
# Install only development tools
./src/scripts/dev.sh
# Install only security tools
./src/scripts/security.sh
# Install only media applications
./src/scripts/media.sh
- Removes unused default directories (Music, Public, Templates)
- Creates organized project structure (Projects, Hacking, Scripts, Tools)
- Sets up development workspace with proper permissions
- Package Managers: Flatpak with Flathub repository
- Essential Tools: bat, curl, eza, fastfetch, fd-find, git, htop, jq, ripgrep, vim, wget
- Languages: Node.js (LTS), Python 3, NVM
- Frameworks: Vue.js CLI
- Tools: Docker, GitHub CLI, Neovim, Postman, Semgrep, Shellcheck, Sourcegraph CLI
- Configuration: Git setup, Neovim/Vim configurations
- Browsers: Brave Browser
- Media Players: VLC, Spotify
- Codecs: Ubuntu restricted extras, FFmpeg, GStreamer plugins
- Office Suite: LibreOffice with modern themes
- Communication: Zoom, Discord, Slack, Thunderbird
- Note-taking: Notion, Obsidian
- Utilities: Balena Etcher, Flameshot, KeePassXC, Redshift
- Authentication: 1Password (desktop + CLI)
- Defense: ClamAV antivirus, UFW firewall, OpenVPN
- VPN: ProtonVPN with system tray integration
- Communication: Signal Messenger
- Penetration Testing: Nmap, OWASP ZAP, ExifTool
- Resources: PayloadsAllTheThings, SecLists repositories
- Shells: Zsh with autosuggestions and syntax highlighting
- Terminal: Alacritty with themes, Tmux multiplexer
- Fonts: Fira Code, Font Awesome, Powerline fonts
- Prompt: Oh My Posh theme engine
The scripts automatically configure:
- Git: User information and performance settings
- Firewall: UFW with secure defaults (deny incoming, allow outgoing)
- Docker: Service enablement and user group management
- Shell: Zsh as default with custom configurations
- Terminal: Alacritty, Tmux, and shell plugin setup
- Security: Automatic updates and timezone configuration
After installation, check:
- Error Log:
setup_errors.log
- Centralized error tracking - Summary Report:
setup_summary.txt
- Installation status overview - Console Output: Real-time progress with color-coded messages
- Restart Required: Log out and back in for shell and group changes
- Docker: User added to docker group (logout required for effect)
- Firewall: UFW enabled with SSH access allowed
- Manual Setup: Some applications (like 1Password, ProtonVPN) may require additional configuration
Script fails with permission errors:
# Ensure scripts are executable
chmod +x src/scripts/*.sh
Package installation fails:
# Update package lists manually
sudo apt update
# Then re-run the script
Docker commands require sudo:
# Log out and back in, or run:
newgrp docker
Shell doesn't change to Zsh:
# Manually change shell
chsh -s $(which zsh)
# Then log out and back in
- Check
setup_errors.log
for detailed error information - Review
setup_summary.txt
for installation status - Ensure you're running on a supported Ubuntu version (20.04+)
- Verify internet connection for package downloads
- Hash verification for all downloaded packages
- GPG key verification for third-party repositories
- Automatic firewall configuration with secure defaults
- Safe temporary file handling with automatic cleanup
- Principle of least privilege for directory permissions
For questions, bug reports, or feature requests, please open an issue on this repository or contact the maintainer directly.
This project is licensed under the MIT License.