Intro
I have installed multiple distros of Linux in various machines and I like to mess around with my Linux boxes. Since it takes a lot of time to collect and install all the packages I wanted to use in my Linux machine, I will be listing some of the essential things I do and install on my machine for better productivity and user experience.
I will be using an Ubuntu machine for the sake of compatibility, but the processes may differ for other distros.
This comprises of the very basic and necessary packages that I always install on my machine. Some of them include a web browser, web server, database server, etc.
Browser:
For a browser, I am using Google Chrome and I always like to install via apt
because I can easily update the package using a single terminal command and also I am not a fan of snap
.
Copy the following commands to download the signing key for Google Chrome:
sudo wget https://dl-ssl.google.com/linux/linux_signing_key.pub -O /tmp/google.pub
Make a new keyring for Google Chrome:
gpg --no-default-keyring --keyring /etc/apt/keyrings/google-chrome.gpg --import /tmp/google.pub
Add chrome repository to your apt repository list:
echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
Update your repository and then install Google Chrome:
sudo apt update && sudo apt install google-chrome-stable -y
You may find other instructions or tutorials that uses apt-key
to register the signing key to your machine. But since apt-key
is depreciated, you need to use gpg
instead.
Try to avoid depreciated packages or methods as much as possible.
Remember that this is not the only way to install it. You can also install it by downloading the .deb
file from the chrome download page and install it as well; the choice is upto you. I only installed it via apt repository because i hate to re-download the .deb
file everytime I want to update my browser.
Web Server:
You don't need a web server if you are not into development and use Linux for something else. But it does not hurt to install one either. You can choose from a variety of options like Nginx, Apache or OpenLiteSpeed. Nginx is the most versatile among the three; since it can act as a load balancer and a reverse proxy, but that's another story.
We will install Apache web server for the purpose of demonstartion here:
sudo apt install apache2 -y
If you prefer Nginx:
sudo apt install nginx -y
Database Server:
I like to install either mysql
or mariadb
; they are technically the same family, but differs a little bit in a sense. We will install mariadb
here:
sudo apt install mariadb-server -y
If you prefer vanilla MySQL:
sudo apt install mysql-server -y
After the installation finished, we will secure ur installation by setting the root password and them removing anonymous users, test users adn test db. To do that, run the following command:
sudo mysql_secure_installation
This command will start an interactive shell and you need to read the rpompts carefully. If it prompts you to to enter the current root password, just press Enter
it does not have a default password. Set a new root password and remember it. You need to answer yes
in most cases, especially when it prompts you to disallow remote login using root
user. This will prevent most of the cases where your database can be compromised or unwanted access.
Terminal:
Most people don't even bother to install another terminal for their Linux systems. But, in my case, the terminal is where I do most of my work, so I need to use a very good terminal. Ubuntu comes with Gnome Terminal by default, and don't hate it that much, but I feel that KItty is always superior than it. So I always install kitty
terminal on my Linux machine:
sudo apt install kitty -y
Editor (IDE):
Since I mostly use neovim for editing basic sutffs and I don't really do development that much, I hardly use IDEs to say so. But VS Code is the most popular IDE out there, so we will install VS Code. Like the browsers, the installation of VS Code has various options. The first one is via snap
and this applies only to Ubuntu beacuse they love their snap packages, and the other one is via apt
by adding the apt repository to our lists.
Installing via snap:
sudo snap install code --classic
You can also install it using the Software Centre application GUI. Search for code
on the search bar and install it (this is also a snap package, same as installing via the command above.
Installing via apt repository:
Install wget
, apt-transport-https
and gpg
if not already installed:
sudo apt install wget gpg apt-transport-https -y
Download the signing key to the current directory:
(Enter your password if required)
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
Add the keyring for VS Code into your keyring list:
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
Add the signing key to your apt repository list:
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
Remove the signing key you downloaded before:
rm -f packages.microsoft.gpg
Update the repository list and then install VS Code:
sudo apt update && sudo apt install code -y
Like I mentioined earlier, installing via apt is easier because you can install updates with a single command.
Extra Gnome Tools:
- Gnome Tweaks:
sudo apt install gnome-tweaks -y
This tool allows you to configure your GTK themes, Application WIndows, Startup Applications, etc. It is a must-have tool if you like tweaking your system.
- Gnome Shell Extensions:
sudo apt install gnome-shell-extensions -y
In order to be able to use this extension, you also need to install the browser extension called Gnome Shell Integration
in which ever browser you use. This will allow you to install Gnome Shell Extensions directly from your browser.
Visit this link to browse the vast library of their extensions and see which extensions are useful for you. One good example for a useful extension is the clipboard
extension, which shows a clipboard in the system tray and lists the clipboard history for you.
- Stacer:
sudo apt install stacer -y
This tool is a very useful GUI tool, which allows you to manage processes, packages, apt repositories, monitor CPU and RAM performances, etc. It is a very beginner-friendly piece of software which can be used as an alternative to htop
and many other cli tools.
- Timeshift:
sudo apt install timeshift -y
This is a very important backup tool for your linux system. I recommend you install this in every of your Linux system, so that you can backup your whole system either daily, weekly or as per your preference.
I recommend you backup your data into another disk, so that there will be less chance of loss and corruption.
Conclusion
These are the most common tools and packages I install when I freshly install a new Linux distro. Let me know if you have anything to ask or suggest. If you have any other suggested tools, feel free to drop it. Thanks for reading.