Skip to content

๐Ÿง Automated post-installation script for Ubuntu. Configure, harden, and optimize your system in one command.

License

Notifications You must be signed in to change notification settings

franckferman/ubuntu-post-install

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Contributors Forks Stargazers Issues License

๐Ÿง ubuntu-post-install

Automated post-installation script for Ubuntu.
Configure, harden, and optimize your system in one command.

๐Ÿ“œ Table of Contents

Click to collapse/expand
  1. ๐Ÿ“– About
  2. ๐Ÿ› ๏ธ Installation
  3. ๐ŸŽฎ Usage
  4. ๐Ÿค Contributing
  5. ๐ŸŒ  Star Evolution
  6. ๐Ÿ“œ License
  7. ๐Ÿ“ž Contact

๐Ÿ“– About

This is a post-installation automation script for Ubuntu, designed to apply my complete system setup in one shot โ€” from hardening to theming, including essential software, configurations, and privacy fixes.

โš™๏ธ Note: This script is still under active development โ€” far from a final version. Many features and improvements are still to come. Use it as a solid starting point, but expect updates and expansions.

Originally developed on Ubuntu 23.10 (Mantic Minotaur), but also tested and running smoothly on Ubuntu 24.04 (Noble Numbat).

Since it relies on standard tools and GNOME GSettings, it should work on other Ubuntu or GNOME-based distributions โ€” though official support and validation is currently for Ubuntu 23.10.

โš ๏ธ If you use this script on other versions, feel free to report issues or submit corrections via pull requests.

๐Ÿ’ก Main goal

  • โš™๏ธ Fast, secure, and reproducible setup โ€” focused on privacy, performance, minimalism.
  • ๐ŸŒ‘ Dark-themed, optimized GNOME desktop experience.
  • ๐Ÿ” System hardening for personal/pro use: USBGuard, disable unused services, clean legacy tools.
  • ๐Ÿ› ๏ธ Full environment automation:
    • ZSH + Oh My Zsh + Powerlevel10k.
    • Essential plugins and aliases.
    • GNOME and terminal customizations.

โžก๏ธ A fully optimized, secured, and ready-to-use Ubuntu system โ€” with zero manual intervention.

Because I'm detail-oriented (some might say perfectionist, I prefer carefully crafted), everything must be set exactly as I want: Appearance, privacy, usability, security, and performance.

I built this script to ensure a reproducible, optimized, and efficient system, every time.

๐Ÿ“ฆ Features

  • ๐Ÿ“ฆ System & Security Setup
    • โœ… System update & upgrade (apt update, full-upgrade, dist-upgrade, autoclean, autoremove)
    • โœ… Firewall (UFW) activation & configuration
  • ๐Ÿ“ฆ System Configuration (GNOME & Ubuntu Desktop)
    • โœ… Theme configuration (Dark mode, GTK theme preference)
    • โœ… Desktop appearance settings (background, color scheme)
    • โœ… Dash-to-Dock and icons behavior (position, size, mode)
    • โœ… Privacy settings (disable telemetry, connectivity checks, location, file history, trash auto-clean)
    • โœ… Screen lock & idle settings (delay, lock-on-idle)
    • โœ… Sound settings (mute system sound and input by default)
    • โœ… Power & performance optimization
      • Power profile to "performance"
      • Disable sleep after timeout
      • Set idle dimming and timeout behaviors
    • โœ… Battery percentage display & night light activation
    • โœ… Keyboard layout settings (add French AZERTY with fallback US)
    • โœ… Calendar and clock enhancements (date, weekday, week numbers)
    • โœ… File manager (Nautilus) settings
      • Hidden files visible
      • "Delete permanently" and "Create Link" in context menu
      • Tree view, recursive search, thumbnails always
    • โœ… GNOME Terminal customization
      • Colors, theme, transparency, profile renaming to "root"
    • โœ… GNOME Shell favorites setup (default apps pinned to dock)
    • โœ… Text Editor (Gedit/Builder-like) settings
      • Line numbers, right margin, dark theme, disable spellcheck, wrapping, grid, highlight current line
  • ๐Ÿ“ฆ System Hardening & Security
    • โœ… Disable root account (lock password)
    • โœ… Install USBGuard (for USB device control)
    • โœ… Disable unused services (NFS, FTP, SMTP, etc.)
    • โœ… Remove dangerous or obsolete packages (telnet, rsh, ldap-utils, etc.)
  • ๐Ÿ“ฆ Application Installation
    • โœ… APT software installation (list of essential tools: Nala, Vim, Zulucrypt, KeePassXC, RSSGuard, Python3, Zsh, etc.)
    • โœ… Snap apps installation (Obsidian, XMind, LSD)
    • โœ… Mullvad VPN installation via URL (.deb package)
    • โœ… Refresh snap packages
  • ๐Ÿ“ฆ Firefox Configuration
    • โœ… Full cleanup of Firefox profiles
    • โœ… Creation of a root profile
    • โœ… Automatic launch/close of Firefox to initialize
    • โœ… Copying custom user.js config from local file or remote (possible improvement)
  • ๐Ÿ“ฆ Dev & CLI Tools Configuration
    • โœ… SpaceVim installation for Vim/Neovim as IDE
    • โœ… Nerd Fonts installation (monospace fonts for terminal and editor)
    • โœ… Oh-My-Zsh installation (for advanced Zsh management)
    • โœ… Zsh customization:
      • Powerlevel10k theme installation and activation
      • Plugins installation (autosuggestions, syntax-highlighting, completions)
      • Shell switching to zsh and back (smart detection)
      • Add advanced Zsh plugins (via update_zsh_plugins):
        • git, docker, emoji, taskwarrior, kubectl, aws, terraform, etc.
    • โœ… Add custom aliases (via update_zsh_aliases): lots of productivity/pen-testing/daily-use aliases
    • โœ… Copy .p10k.zsh if exists (Powerlevel10k config)

Disclaimer: Developed and officially tested on Ubuntu 23.10 (Mantic Minotaur). Also successfully tested on Ubuntu 24.04 (Noble Numbat). Compatibility with other versions is possible but not guaranteed or officially supported.

(๐Ÿ”ผ Back to top)

๐Ÿš€ Installation

๐Ÿ“ฅ Direct Download from GitHub

  1. Go to GitHub repo.
  2. Click <> Code โ†’ Download ZIP.
  3. Extract the archive to your desired location.

(๐Ÿ”ผ Back to top)

๐ŸŽฎ Usage

Make sure the script is executable:

chmod +x ubuntu-post-install.sh

Then run it directly:

./ubuntu-post-install.sh

โš ๏ธ Note: The script must be run with a user that has sudo rights. It will request administrator privileges automatically at start.

(๐Ÿ”ผ Back to top)

๐Ÿค Contributing

We truly appreciate and welcome community involvement. Your contributions, feedback, and suggestions play a crucial role in improving the project for everyone. If you're interested in contributing or have ideas for enhancements, please feel free to open an issue or submit a pull request on our GitHub repository. Every contribution, no matter how big or small, is highly valued and greatly appreciated!

(๐Ÿ”ผ Back to top)

๐ŸŒ  Star Evolution

Explore the star history of this project and see how it has evolved over time:

Star History Chart

Your support is greatly appreciated. We're grateful for every star! Your backing fuels our passion. โœจ

(๐Ÿ”ผ Back to top)

๐Ÿ“š License

This project is licensed under the GNU Affero General Public License, Version 3.0. For more details, please refer to the LICENSE file in the repository: Read the license on GitHub

(๐Ÿ”ผ Back to top)

๐Ÿ“ž Contact

ProtonMail LinkedIn Twitter

(๐Ÿ”ผ Back to top)