Language Selection

English French German Italian Portuguese Spanish


Syndicate content FOSS Linux
Enhance your Linux experience.
Updated: 2 hours 5 min ago

How to install Flutter on Linux

Monday 3rd of August 2020 05:49:06 PM

Do you want to install Flutter and start creating awesome Android and iOS applications? Then you have come to the right place. Here is a comprehensive tutorial on how to install Flutter on Linux. If you are new to Flutter, don’t worry, we got that covered too as we shall go in-depth understanding of Flutter and what it brings to the table.

What is Flutter?

Flutter is a UI toolkit from Google that can help you create beautifully-designed, natively-compiled applications for the web, desktop, and mobile (both Android and iOS).

The best part of Flutter is that it uses a single codebase. As such, with the same effort, you will be able to develop apps for multiple platforms, Android as well as iOS.

Install and Configure Flutter on Linux

For the sake of this tutorial, we will be focusing on installing Flutter to help us create Android applications. To do this, we first need to download and install Flutter on our Linux PC. Once that’s done, we will need to install an editor. In this case, we will be installing Android Studio to create our Android apps. Also, we are using Ubuntu 20.04 (Focal Fossa) for this guide. If you are on any other distro, the installation process should be similar, with minor distro-specific differences.

So without further ado, let’s get started:

Download and Install the Flutter SDK

Before you download and install the Flutter SDK, make sure your Linux PC meets the minimum system requirements:

  • Operating system: Linux (64-bit)
  • Disk Space: 600 MB (excluding the disk space required by the IDE/tools)

If your system checks out with the minimum system requirement, you can get started with installing Flutter. There are two ways to do this.

Installing Flutter using the Snap Store

This is a more comfortable option. If you have Snap Store enabled, all you have to do is enter the following command in your terminal and Flutter will be installed on your system:

$ sudo snap install flutter --classic

To learn more about snap packages and how to enable it on your Linux PC, read this guide.

Let’s say you don’t have snapd, or for some reason, you can’t use it. In that case, you will need to install the Flutter SDK manually. Here is a comprehensive step-by-step guide to help you out with the process.

Note: Flutter uses Google Analytics to anonymously collect and report feature usage statistics as well as bash crash reports. By downloading the Flutter SDK, you automatically agree to Google Terms of Service.

Installing Flutter SDK manually, without Snap Store Step 1: Download the Flutter Installation Bundle.

You need to head on over to their official website and download this installation bundle, as shown in the image below. The button in the below picture is only for your reference. It’s not clickable!

Download Flutter Installation Bundle Step 2: Extract the archive file.

After downloading the archive file, you will need to extract it to your desired location. Using the following command, we have extracted it to our Documents folder.

$ cd ~/Documents $ tar xf ~/Downloads/flutter_linux_v1.17.5-stable.tar.xz Extracting Flutter Step 3: Update Path to add the Flutter SDK

To do this, you will need to open the rc file for your shell. Since our system and most other Linux distros use Bash shell by default, we will be editing $HOME/ .bashrc. To do this, open your terminal and enter the following command:

$ cd /home/{current-user} gedit .bashrc

Note: replace {current-user} with the actual user name.

This is going to open up the following file for editing.

Update PATH for Flutter SDK

Caution: Be careful about making any accidental changes to the file as it contains all your system configurations.

Just scroll down to the bottom of the file and add the PATH as shown in the image:

export PATH="$PATH:{Path-To-Flutter-Git-Directory}/flutter/bin"

Note: Replace {Path-To-Flutter-Git-Directory} with the actual path. Since our Flutter SDK is located in /home/Documents, we have entered this line (119), as shown in the above image: export PATH=”$PATH:/home/Documents/flutter/bin.”

After entering the PATH, Save and Close the file. After that, Close the terminal.

Step 4: Check If Everything is Working Properly

Next, you will need to open a new terminal and check to see if the updated path to the Flutter SDK is showing. To do this, enter the following command:

$ echo $PATH

Next, enter the following command to see if Flutter is working correctly:

flutter doctor Running Flutter Doctor Command

As you can see, the PATH has been successfully updated and is showing in the echo command. The Flutter Doctor command is also running properly. However, there are still some issues that need to be resolved:

Flutter Doctor Issues Found

To run and develop Android applications, we need to have Android Studio installed on our system, which is what the messaging is referring to. That being said, it’s time to install Android Studio on your Linux PC.

Download and Install Android Studio

Similar to before, you first need to check whether your system supports the minimum requirements for Android Studio.

  • Operating System: Linux (64-bit), capable of running 32-bit apps
  • Memory: Minimum 3 GB of RAM and an extra 1 GB for Android Emulator
  • Disk Space: 4 GB (including 500 MB for the IDE and 1.5 GB for Android SDK and emulator system image)
  • Display: 1280 x 800 screen resolution

Once you make sure your system checks out for the minimum requirements, it is time to download and install Android Studio on your system.

Step 1: Download Android Studio

You will need to head over to the Android Studio download page and download it by hitting the big green button, as shown in the image.

Download Android Studio Step 2: Extract it

After the download finishes, extract it to your directed location. For the sake of this tutorial, we have extracted it straight onto the home directory.

Extract the Android Studio Package Step 3: Execute

Next, open your terminal, go to the android-studio/bin/ directory, and execute the file. To do this, enter the following command:

$ cd android-studio/bin $ ./

Note: The command cd android-studio/bin only works because we have extracted it on the home directory. If you have extracted it elsewhere, adjust your directory path accordingly.

Launching Android Studio

As you can see from the image, after executing the command, a pop-up prompt will appear, asking whether you want to import any previous Android Studio settings or not. After selecting your preferred option, click on OK, and the installation process will commence.

Note: The Android Studio installation process will force you to download the latest Android SDK, so you have to download that.

Step 4: Android Studio Setup Wizard

Android Studio comes with a dedicated setup wizard to help you install the application properly.

Android Studio Setup Wizard

Just follow the given steps, and Android Studio will begin to install on your system.

Android Studio Installation Process Step 5: Launch Android Studio

Once the installation process is completed, Android Studio will automatically launch.

Android Studio Successfully installed

Click on ‘Start a new Android Studio Project’ to create a sample Android project and see if everything is working correctly.

Step 6: Create a Desktop Entry

If you want to set up a desktop entry for Android Studio, all you need to do is click on Tools > Create Desktop Entry, as shown in the image below.

Creating Desktop Entry for Android Studio

You should be able to open Android Studio directly from the launcher as well as pin it to your Favorites.

Step 7: Install the Flutter Plugin

All that’s remaining is to install the Flutter plugin in Android Studio. To do this, navigate to File > Settings > Plugin. Next, search for Flutter in the provided search field.

Installing Flutter Plugin

Install it, and you are ready to start developing apps with Flutter using Android Studio on Linux.

Wrapping Up

So this was our comprehensive guide on how to install Flutter on Linux. As you can see, installing Flutter is a pretty simple and straightforward process, albeit a long one. The best less-error-prone approach would be to install it via the Snap Store instead of taking the manual route, as it involves editing .bashrc, which can cause problems if you are not careful.

That being said, if you do come across any errors or issues during the installation process, don’t hesitate to let us know down in the comments below. Our community of readers and we will try our best to solve your issue asap.

Updating MX Linux: Command-line & All You Need to Know

Sunday 2nd of August 2020 03:05:33 PM

MX Linux is a popular Linux distribution based on Debian stable. Hence as Debian shifts from one Stable release to the next, so does MX Linux come out with a new version based on the latest Debian release. Also, just like Debian, each MX release is supported for 4 – 5 years. From a technical standpoint, you don’t need to update to the latest MX version as soon as it’s out.

However, if your version of MX Linux has reached end-of-life support, or if you want to try out the latest MX release, then you have come to the right place. Here we have put together a comprehensive guide on how to update your MX Linux system. But first, let’s get a more in-depth understanding of the MX Linux release cycle.

Understanding The MX Linux Release Cycle

MX Linux has three kinds of releases:

1. Annual Release

First, you have the official version which comes out once a year, typically during the year-end. The current Official release of MX Linux is MX-19, which came out on October 21, 2019, and is based on Debian 10 (released on July 6, 2019). Note that the release number – ’19’ of MX-19 comes from the year of release. Since the first version of MX Linux came out in 2014, it was called MX-14. There are no prior versions like MX-1 or MX-2.

2. Point Releases

Secondly, you have the point releases. These releases don’t follow a particular schedule and deliver new version updates as required. At the time of writing, the current point release for MX Linux is MX 19.2, which came out on June 1, 2020. The point releases are done when a significant software change like kernel upgrades or vulnerability fixes are required.

3. Snapshot Releases

And finally, we have snapshot releases. These come out monthly and are designed to update all your software. The primary purpose of snapshot releases is to keep all your software and packages up to date so you can avoid lengthy downloads later.

MX Linux’s Semi-Rolling Release model

What does do it mean that MX-Linux follows a semi-Rolling Release Model? Conventionally, Linux distros follow two major release models – Fixed and Rolling.

Fixed Release

Under the fixed release model, the Linux Distro only receives security updates on a timely basis. Other things, such as new software packages and software updates, are held back and only released as a bundle with the latest version of the Distro, after a fixed period.

Rolling Release

In the case of a rolling release model, the Linux Distro receives updates in all areas of the operating systems as soon as they are available. This includes updates for everything, starting from the applications, desktop environment, and even the Linux Kernel.

Now, MX-Linux is often called a Semi-Rolling release because it has traits of both rolling and fixed release models. Similar to Fixed releases, the official version-updates happen every year. But at the same time, you get frequent updates for software packages and dependencies, just like with Rolling release Distros. However, according to the MX Linux forum, the developers don’t identify MX Linux as a Rolling Distro.

How to Update MX Linux

Now that you have a good enough understanding of the different MX Linux releases let’s talk about how you can update your MX Linux system to the latest version.

Updating to a New Official Release

MX Linux completely changes its base from one official release to the next. For example, MX-18 runs on Debian 9 (Stretch) whereas, MX-19 runs on Debian 10 (Buster) and also switches to the new Xfce 4.14. Because of all these changes, there is no dedicated update/upgrade option from one official release to the next one. If you want to update from MX-18 to MX-19, you will need to perform a clean install of MX-19 over the existing version.

However, even though you are performing a clean installation over your previous OS, it doesn’t necessarily mean that you will lose all your previous settings and configurations.

When installing MX Linux, you have the option to preserve data in the /home directory of the previous MX Linux version (if any) that was installed. You will find this setting under the custom disk setup option of the MX Linux Installer.

Preserve data in /home directory

Now, the programs that were installed on MX-18 stored all their settings and customization files under the /home directory. Since the installer is preserving this data, you will find almost everything intact, even after a clean install to MX-19.

Another thing to point out is that the clean install of MX-19 might not have all the programs you had on MX-18. But even still, all the settings and configuration files of those uninstalled programs are always on your /home directory. All you need to do is reinstall those programs, and they behave similarly as they did before the clean installation. This is where Aptik can be beneficial. It is essentially a tool that can help you backup/restore your favorite PPAs and Apps in Ubuntu and other Debian-based OSes.

Here is a comprehensive guide to show you how to use Aptik and reinstall all your old applications on your newly upgraded MX Linux system.

Updating to a New Point Release

Updating from one point release to the next is pretty straightforward and will take place automatically through the standard upgrade process. That being said, there are two ways to update your MX Linux system to the next point release. You can either use the GUI or update it using the command-line in the terminal. For the sake of this tutorial, we will be showing you both methods. So, without further ado, let’s get started:

Updating MX Linux Using Command-Line in the Terminal

Before starting, let’s check the version of MX Linux installed on our system. To do this, type in the following command in your terminal.

$ inxi -F

This should create a similar output, as shown in the image below.

MX Linux version in the terminal

As you can see, we are running on MX-19 Patito Feo that was released back on October 21, 2019. It’s time to update our system to the latest version. To do this, enter the following command in the terminal:

$ sudo apt-get dist-upgrade

This is going to start installing all the newest versions of all the packages installed on the system. It should also intelligently handle all the dependencies that are changing with new versions of the packages.

While updating all the packages and dependencies, you will get the following message on the terminal, asking whether you want to install the updated version shipped by your package distributor.

MX Linux version

Type in ‘Y’ and wait until the process is over. And voila! You have successfully upgraded from MX-19 to MX-19.2.

Updating MX Linux Using GUI

Updating MX Linux using GUI is much more straightforward and as simple as pressing a button. But first, open MX Welcome to check the version of your MX Linux that you are running.

MX Welcome screen

As you can see, we are running MX-19 Patito Feo. Now, it’s time to update it to MX-19.2. To do this, go to MX Updater, as shown in the image below.

MX Updater tool

This is going to open the MX Updater, which will look like this:

The MX Updater tool

As you can see, you get a display showing all the packages and dependencies that are going to get installed on your system. Furthermore, there are two checkboxes. The first one is asking you whether you want the updater to automatically answer ‘yes’ to all the prompts during the upgrade. You should keep this unchecked if you want to know and control what packages and dependencies are getting installed on your system. However, if you are not interested in these details, then you can “check” it. It will make the update process much faster, and you won’t have to monitor everything actively.

Once you have checked everything, click on the upgrade button with the green box. This is going to start updating your MX-19 to the latest version. Similar to before, you will get a prompt in the installer asking you whether you want to install the updated version shipped by your package distributor. Type ‘Y’ for yes, as before, and wait for the installation to finish.

Once done, recheck MX Welcome, and you should see your system updated to the latest version, i.e., MX-19.2.

Successfully updated to MX-19.2 Wrapping Up

So this was our full comprehensive guide on everything you need to know to update your MX Linux PC. I hope you found this useful and that it has helped you to upgrade from your older MX Linux system to the latest MX-19.2. Do let us know if you still have some confusion or stumbled into any issues during the update process. We would be happy to clear out any of your problems, and our discourse might even help out other readers with their questions and issues.

How to install Microsoft TrueType Fonts on Fedora

Friday 31st of July 2020 07:12:48 PM

When it comes to typography, Microsoft True Type fonts have entirely dominated the market. Although we have more than a thousand fonts available, the extensive use of the Windows operating system has altogether led to the increase in popularity of Microsoft True Type fonts.

These fonts are not only visually appealing but also aesthetically pleasing. Some of them like the “Times New Roman (Bold, Italic, Bold Italic)” are recommended in most documents and many writing formats like APA, MLA, Harvard, etc. and regarded as standard fonts. Microsoft True Type fonts are also in most webpages, and you can find this declared in the style sheets.

The Microsoft True Type font package includes:

  • Andale Mono
  • Arial Black
  • Arial (Bold, Italic, Bold Italic)
  • Comic Sans MS (Bold)
  • Georgia (Bold, Italic, Bold Italic)
  • Impact
  • Times New Roman (Bold, Italic, Bold Italic)
  • Trebuchet (Bold, Italic, Bold Italic)
  • Verdana (Bold, Italic, Bold Italic)
  • Webdings
Installing Microsoft TrueType Fonts on Fedora

Luckily for Linux users, you can install and use Microsoft True fonts on your Linux systems. This article will show you three methods on how you can install Microsoft True fonts on Fedora.

Method 1: Use the Classic Installer

Launch your Terminal and switch to the root user by typing the command below. It will prompt you for the admin password.

sudo su Root User

Execute the commands below.

sudo dnf install curl cabextract xorg-x11-font-utils fontconfig Microsoft True Fonts sudo rpm -i Microsoft True Fonts

That’s it! We now have Microsoft True fonts installed in our Fedora system.

Method 2: Copy Fonts from a Windows Installation.

Another universal way to install Microsoft True fonts in Linux systems is to copy the fonts from a Windows installation. You don’t need an internet connection, only a partition holding a windows system.

Navigate to the Local disk C, which holds your Windows files. It might be different depending on your installation path. Look for a folder with the name “Windows”. Open the “Fonts” folder and copy the contents.

Tip: You can access the “Fonts” folder and clicking at the address bar at the top and type the path: “C:\Windows\Fonts.”

Window Fonts

Navigate to the home directory in your Fedora system. Paste the copied fonts in the “.fonts” folder. If this folder is not present, create it. Also, note the dot [.] at the beginning of the folder name. That shows it is a hidden folder.

Fedora Fonts Folder Method 3: Copy and Install fonts from a Windows 10 ISO

Another method to have Microsoft True fonts on your Fedora system is copying them from a Windows ISO file. It is quite technical than the other two, but also interesting if you love getting savvy with the Terminal.

First, we will need a Windows 10 ISO file. If you don’t have one, navigate to Microsoft’s official website and download it. Select your edition and click confirm. Ensure you don’t select the “Update” version.

Download Windows

You will be prompted to put your Language of choice. Select “English,” even though the choice of Language doesn’t seem to have an impact on the fonts.

Download Windows 10 ISO

Once you have downloaded the ISO file, we now need to extract it. We will use p7zip for this process. To download p7zip in Fedora, run the commands below:

sudo dnf install snapd sudo ln -s /var/lib/snapd/snap /snap sudo snap install p7zip-desktop P7zip-desktop

Launch the Terminal and navigate to the directory where you have downloaded Windows 10 ISO file. Now run the command below to extract various Windows files, including the fonts folder.

7z e 'Windows 10 64-bit.ISO' sources/install.wim

Remember to replace ‘Windows 10 64-bit.ISO‘ with the name of your ISO file.

Extract Files

Once the process is complete, we now need to extract the fonts from the “install.wim” archive. Run the command below in the Terminal.

7z e install.wim 1/Windows/{Fonts/"*".{ttf,ttc},System32/Licenses/neutral/"*"/"*"/license.rtf} -ofonts/ Extract Fonts

By running the ‘ls‘ command, you should see the fonts folder below.

Extract fonts

To install the fonts, move the extracted ‘fonts‘ folder to the home directory ‘.fonts.‘ directory. You can do this graphically through Copy and Paste or by running the simple command below.

mv fonts ~/.fonts

To update your system applications with these newly installed fonts, we need to update the installation’s fonts cache. Run the command below.

fc-cache -f

To test these newly fonts, open your Libre Office program, and you will find your newly-installed fonts among the default fonts that come preinstalled. That’s it! Let us know which method works best for you. If you also have any additional information or comment, feel free to share with our readers below.

Install and Configure Redmine on CentOS 7

Thursday 30th of July 2020 06:51:00 PM

Redmine is an open-source free to use web-based tool for project management and issue tracking. Built on top of the Ruby on Rails framework, it offers a cross-platform and cross-database solution that comes with support for multiple projects, wikis, forums, calendars, email notification, and much more.

Here is a detailed guide on how to install and configure Redmine on CentOS 7 server.


First of all, you need a domain name pointed at your public server IP. For this tutorial, we will be referring to Also, you will need to be logged in as a user with sudo privileges.

Other than this, you will also need a database backend. In our case, we will be using MariaDB. However, you can also use Microsoft SQL Server, SQLite 3, and PostgreSQL, as Redmine supports all of them.

Finally, you will need a Ruby application server for which we will be using Passenger with Nginx. In case you don’t have any of these installed on your system, there is no need to worry. We will also show you how to install and configure them as well.

Preparing Your System Before Installing Redmine

As we discussed, there are several things you need on your CentOS system before you can install and run Redmine. In case you don’t have them installed, here is a step by step walkthrough showing you how to set things up.

Note: It goes without saying that if you already have a database backend or a Ruby application server installed, then you can skip those steps and move to the next one.

Step 1: Installing the Necessary Packages

Before installing Redmine, you need to prepare your system by installing the necessary Redmine and Ruby packages from the source.

To do this, type in the following commands in your terminal:

$ sudo yum install curl gpg gcc gcc-c++ make patch autoconf automake bison libffi-devel libtool $ sudo yum install readline-devel sqlite-devel zlib-devel openssl-develh readline glibc-headers glibc-devel $ sudo yum install mariadb-devel zlib libyaml-devel bzip2 iconv-devel ImageMagick ImageMagick-devel

Once that’s done, it’s time to create a MySQL database.

Step 2: Install MariaDB on CentOS 7

You are free to use any database backend you like. However, for this tutorial, since we will be using MariaDB/MySQL, here is a quick tutorial showing you how to install it on your system.

Since MariaDB version 5.5 is provided with the CentOS repository, we will be installing that solely because of convenience. It is not the latest version, but it is exceptionally stable, and you shouldn’t run into any issues. 

Type in the following command in your terminal to install the MariaDB packages:

$ sudo yum install mariadb-server

Once it completes installing, type in the following command to enable it to start during system boot-up.

$ sudo systemctl start mariadb $ sudo systemctl enable mariadb

Next, check whether the installation was successful or not by entering the following command:

$ sudo systemctl status mariadb

The output should tell you that the service is active and running. Once that is taken care of, run the following script to perform several security-related tasks to make sure everything is working correctly and as intended.

$ sudo mysql_secure_installation

This is going to bring up the following prompts:

Do you want to set up the root user password? Do you want to remove anonymous user accounts? Do you want to restrict root user access to the local machine? Do you want to remove the test database?

Answer with Y (yes) to all these questions.

And voila, you have successfully installed MariaDB on your CentOS system. Now its time to move on to the next step.

Step 3: Create a MySQL Database

With MariaDB installed on your CentOS system, follow these steps to create a MySQL Database. First, you will need to login to your MySQL shell. To do this, enter the following command in the terminal:

$ sudo mysql

Next, you will need to create a new database. To do this, enter the following command from inside your MySQL shell:


Once that’s done, you will need to create a MySQL user account and provide it access to the newly created database. This is done using the following command:

mysql> GRANT ALL ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'EnterPasswordHere';

Replace EnterPasswordHere with a strong password of your choice.

You have successfully created a MySQL database. Now exit the shell using the following command and move on to the next step:

mysql> EXIT; Step 4: Install Passenger and Nginx

Passenger is a web-application server designed for Ruby, Node.js, and Python. It is super-fast, lightweight and can be integrated with Apache and Nginx. For this tutorial, we will be installing the Passenger module for Nginx.

To do this, we will first need to install some necessary packages, including the EPEL repository. To do this, enter the following command in your terminal:

$ sudo yum install epel-release yum-utils pygpgme $ sudo yum-config-manager --enable epel

Next, you will need to enable the Phusionpassenger repository. This can be done using this command:

$ sudo yum-config-manager --add-repo

Finally, update the packages list and install both Nginx and Passenger using this command:

$ sudo yum install nginx passenger passenger-devel Step 5: Create a New System User

We are almost done setting up everything to install Redmine. The next thing we need to do is creating a new system user and group that will run the Redmine instance. We first create a new user by entering the following command in the terminal:

$ sudo useradd -m -U -r -d /opt/redmine redmine

For the sake of simplicity, we have kept the user name as redmine; however, you are free to use any user name you like.

Next, add the ngnix user to the new user group using this command:

$ sudo usermod -a -G redmine nginx

And finally, change the /opt/redmine directory permissions such that it can be accessible by Nginx. To do this, enter this command:

$ sudo chmod 750 /opt/redmine Step 6: Install Ruby

And now, for the final step to getting everything ready, we will need to install Ruby on our CentOS system.

Now, the tricky part is that the Ruby version that comes with the CentOS repository is outdated and isn’t supported by Redmine. This is why we will need to install it by using RVM.

First, switch to the Redmine user by typing the following command:

$ sudo su - redmine

You will need to import the GPG key using this command:

$ gpg --keyserver hkp:// --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Once that’s done, install RVM with this command:

$ curl -sSL | bash -s stable

Now, to use RVM, you will need to source the RVM file using this command:

$ source /opt/redmine/.rvm/scripts/rvm

Finally, it’s time to install Ruby on our system. To do this, enter the following command in your terminal.

$ rvm install 2.7 $ rvm --default use 2.7

Note: Here, 2.7 refers to Ruby version 2.7, which is the latest version of Ruby at the time of writing. If there is an updated version of Ruby when you are reading this, then download it instead. You can always use version 2.7 as long as Redmine supports it.

And that’s it! You have successfully configured your CentOS system, and it is now ready to install Redmine.

Install Redmine on CentOS 7

When installing Redmine, you should always check the Redmine Download Page to see the latest version and download that. For the sake of this tutorial, we will be installing Redmine version 4.1.1 since it is the current stable release at the time of writing.

Now with that out of the way, here is a step-by-step guide on installing Redmine 4.1.1 on CentOS 7.

Step 1: Download Redmine

Before getting started, make sure that you are running all the commands by logging in as the Redmine user.

Once you have done that, download the Redmine archive on to your system. You can do that using the following curl command:

$ curl -L -o redmine.tar.gz

After downloading the archive, extract it using the following command:

$ tar -xvf redmine.tar.gz Step 2: Configure the Redmine Database

Next, you will need to configure the Redmine database. Start by copying the Redmine example database configuration file using the following command:

$ cp /opt/redmine/redmine-4.1.1/config/database.yml.example /opt/redmine/redmine-4.1.1/config/database.yml

Next, open the file using the text editor of your choice. We will be using nano editor.

nano /opt/redmine/redmine-4.1.1/config/database.yml

Now, search under the production section and enter the previously created MySQL database information, including username and password, as shown below.

production: adapter: mysql2 database: redmine host: localhost username: redmine password: "EnterPasswordHere" encoding: utf8

Replace EnterPasswordHere with a strong password of your choice.

Once done, save and exit the file to move on to the next step.

Step 3: Install Ruby Dependencies

Next, you will need to install all the ruby dependencies and bundler.

To do this, head on over to the redmine-4.1.1 directory, open the terminal, and enter the following commands:

$ cd ~/redmine-4.1.1 $ gem install bundler --no-rdoc --no-ri $ bundle install --without development test postgresql sqlite Step 4: Generating Keys and Migrating Database

Enter the following commands in your terminal to generate keys and migrate the database:

$ bundle exec rake generate_secret_token $ RAILS_ENV=production bundle exec rake db:migrate Step 5: Configure Nginx

Now, before we can access Redmine, you will need to set up Nginx. To do this, first switch back to your sudo user by entering the following command:

$ exit

Now, open the text editor and create the Nginx server block file. To do this, enter the following command:

$ sudo nano /etc/nginx/conf.d/

Next, copy and paste the following content inside the file:

Note: Remember to switch with your Redmine domain.

passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby; passenger_instance_registry_dir /var/run/passenger-instreg; server { listen 80; server_name; root /opt/redmine/redmine-4.1.1/public; # log files access_log /var/log/nginx/; error_log /var/log/nginx/; passenger_enabled on; passenger_min_instances 1; client_max_body_size 10m; }

Once that’s done, run a test to make sure there are no system errors by entering the following command:

$ sudo nginx -t

A clean output with no errors should look like this:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Once you get the green light, you can restart the Nginx server by entering this command:

sudo systemctl restart nginx Step 6: Encrypt Nginx with SSL

You will need to configure Nginx with an SSL certification. In case your domain isn’t already protected by a trusted SSL certificate, you can generate a free one using Let’s Encrypt.

Once you have the certificate in hand, you will again need to edit the Nginx configuration file. To do this, first, you need to open it in your text editor using the following command:

$ sudo nano /etc/nginx/conf.d/

Now edit the file, as shown below:

passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /opt/redmine/.rvm/gems/default/wrappers/ruby; passenger_instance_registry_dir /var/run/passenger-instreg; # Redirect HTTP -> HTTPS server { listen 80; server_name; include snippets/letsencrypt.conf; return 301$request_uri; } # Redirect WWW -> NON WWW server { listen 443 ssl http2; server_name; ssl_certificate /etc/letsencrypt/live/; ssl_certificate_key /etc/letsencrypt/live/; ssl_trusted_certificate /etc/letsencrypt/live/; include snippets/ssl.conf; return 301$request_uri; } server { listen 443 ssl http2; server_name; root /opt/redmine/redmine-4.1.1/public; # SSL parameters ssl_certificate /etc/letsencrypt/live/; ssl_certificate_key /etc/letsencrypt/live/; ssl_trusted_certificate /etc/letsencrypt/live/; include snippets/ssl.conf; include snippets/letsencrypt.conf; # log files access_log /var/log/nginx/; error_log /var/log/nginx/; passenger_enabled on; passenger_min_instances 1; client_max_body_size 10m; }

Note: Remember to switch with your Redmine domain.

And that’s it! You are now ready to access Redmine.

Accessing Redmine

You have now successfully installed and configured Redmine on CentOS. It’s finally time to access it and see if everything is working correctly.

To access Redmine, first, you need to open your browser and type in your domain. If the installation was successful, you should see the following screen asking you for your username and password.

Accessing Redmine

By default, the login credentials are as follows:

Username: admin Password: admin

After logging in for the first time, you will be prompted by the system to change your password to a more secure one.

change Redmine password

After changing your password, you will be redirected to your main user account page from where you can start using Redmine.

The 6 Best Free phpMyAdmin Themes (and How to install)

Wednesday 29th of July 2020 02:37:33 PM

In case you are not aware, phpMyAdmin is one of the most popular free and open-source tools for the administration of MySQL and MariaDB. It supports a wide range of database operations like managing your indexes, tables, columns, relations, and so on. You also get the option to execute any SQL statement as well directly.

To help you manage all of these settings and options, phpMyAdmin gives you access to an intuitive web interface. And while in terms of functionality, it gives you an extremely user-friendly layout, in terms of design, it might feel a bit outdated and boring.

This is where phpMyAdmin themes come into the picture. Since version 2.6.0, users had the option to install a custom theme to change the color scheme and font style. All the navigation options and overall usability of the tool is left intact, which means changing themes won’t affect your workflow.

We have put together a list of the six best free phpMyAdmin themes that are free for download and use. You will also find a detailed guide on how to install these themes and try them yourself.

6 Best Free phpMyAdmin Themes

Before we highlight the six best free phpMyAdmin themes, it is worth noting that you should only install a theme that is compatible with your phpMyAdmin version.

Installing an incompatible version might cause viewing issues, which can be a big problem when managing your database. This is why we have included which phpMyAdmin versions each theme is compatible with so you don’t run into any sort of issue while using it.

CAUTIONDon’t Download phpMyAdmin Themes from Unknown Sources

It is important to note that most phpMyAdmin themes contain PHP code, and thus, it is important only to download them from trusted servers. The phpMyAdmin team has checked all the themes we have listed here.

With all the disclaimers out of the way, here are our picks for the six best free phpMyAdmin Themes.

1. Fallen phpMyAdmin Theme Fallen phpMyAdmin theme

The Fallen gives you a super clean UI for your phpMyAdmin that makes everything look more sophisticated and organized. The icons used here are also really high quality and bring more character to the admin dashboard.

Download Links

For phpMyAdmin versions 4.8 & 4.9

For phpMyAdmin version 4.7

For phpMyAdmin version 4.6

2. Metro phpMyAdmin Theme Metro phpMyadmin Theme

The Metro theme, as the name suggests, is inspired by the metro design style reminiscent of Windows 8. The font style, icons, and the squarish design style with the use of squared corners will make you feel like you are using a Microsoft product.

You also get multiple color schemes that give you some more customization potential.

Download Links

For phpMyAdmin versions 4.8 & 4.9

For phpMyAdmin version 4.7

For phpMyAdmin version 4.6

For phpMyAdmin version 4.5

For phpMyAdmin version 4.4

For phpMyAdmin version 3.5

3. MHN phpMyAdmin Theme MHN phpMyAdmin Theme

The MHN theme brings the modern flat design style to your phpMyAdmin dashboard. It also follows a minimalistic design philosophy, so you don’t have to worry about flashy graphical styles distracting you from your work.

Design-wise, everything looks clean and straightforward. You can even argue that the theme helps make things more organized, which can also help you boost your productivity.

Download Links

For phpMyAdmin versions 4.8 & 4.9

For phpMyAdmin version 4.7

For phpMyAdmin version 4.6

4. PMaterial phpMyAdmin Theme PMaterial phpMyAdmin Theme

As you can guess by the name, with PMaterial, you are getting a faithful adoption of the material design style for your phpMyAdmin interface. It turns all individual sections into cards, which can help you compartmentalize different parts of your dashboard.

Overall, it gives you a clean and modern looking UI that feels simple and refreshing to use.

Download Links

For phpMyAdmin version 4.7

For phpMyAdmin version 4.6

5. DarkBlue_Orange phpMyAdmin Theme Darkblue_orange phpMyAdmin Theme

DarkBlue_Orange, as the name suggests, uses two colors to decorate your phpMyAdmin dashboard – dark blue or purple, and orange. As a result, the contrasting colors just pop out on your face.

It’s a fresh looking design if you are a fan of flashy colors and want to go a full-180 from the boring greyish dashboards.

Download Links

For phpMyAdmin version 3.4

#6.  Paradice phpMyAdmin Theme Paradice phpMyAdmin Theme

The first version of Paradice was released way back in 2015, and you can see that with its design style. If you try hard enough, you might know that it somewhat resembles the Windows 7 Aero theme.

As such, if you want a design style that reminds you of the good old days, then this is an excellent option to try out.

Download Links

For phpMyAdmin version 3.4

For phpMyAdmin versions 3.0 – 3.3

What Next?

Ever since 2015, all the phpMyAdmin releases are cryptographically signed by their releasing developer. As such, it is a good security practice to always check if the signature matches your downloaded archive. Here is the official document containing the verification instructions to help you out.

How to Install phpMyAdmin Themes?

Once you have picked a custom theme you want to try out, it is time to install it for the phpMyAdmin interface. Here is a step-by-step guide to walk you through the installations process.

So without further ado, let’s get started:

Step 1: Check the phpMyAdmin Version

As we discussed earlier, to avoid version compatibility issues, you need to make sure that you are installing a theme that works with your phpMyAdmin version.

Now to check which version of phpMyAdmin you are running, go to your homepage and check the bottom right corner of the screen. You should see the version information displayed over there. Our server is running on phpMyAdmin version 4.9. For the sake of this tutorial, we will be using the Fallen theme, which is compatible with this version.

Step 2: Download a Version Appropriate Theme

You can use the provided links to download a compatible version. Or, you can visit the official phpMyAdmin website where they have listed all the themes along with their version compatibility.

Downloading Fallen custom phpMyAdmin theme

You can also download the theme archive file from this link as well. Clicking on the link will download the archive file on our system from where we move on to the next step.

Step 3: Install and Enable the Custom Theme

To install the theme, all you have to do is extract the content of the zip file into the themes directory of the phpMyAdmin installation.

Depending on the installation path for phpMyAdmin, the location of the themes directory might vary. However, for basic installations on Linux based OS, you should find it located here:


After extracting the contents of the zip file inside the themes directory, it will automatically add a new theme into your phpMyAdmin themes collection. You should be able to see it immediately by heading over to the phpMyAdmin Theme Selector.

Installing phpMyAdmin theme

Just select the Fallen theme – or whichever theme you have chosen to install, and you are good to go. A fresh new UI will be applied to your phpMyAdmin.


That’s all about how to download and install a new phpMyAdmin theme on your Linux server. I hope you liked this tutorial and equally enjoying the refreshed look of the dash! Do you have any cool customization ideas relevant to the topic in the discussion that you want to share with our readers? Feel free to use the comment section below.

Top 10 Cheap Linux Laptops [2020 Edition]

Tuesday 28th of July 2020 07:19:59 PM

One of the most beautiful things about Linux is that it can deliver fluid performance even on low-tier hardware. You don’t need 16GB of RAM or a quad-core processor just to browse the web. In fact, Ubuntu – one of the most popular Linux Distro can run perfectly well with a simple 2GHz dual-core system racking no more than 4GB of RAM and just needs a minimum of 25GB storage space.

This opens up a whole new world for budget computing. By using Linux, you can get way more performance out on a low-spec system giving you a better bang-for-buck performance. With this in mind, we have put together a list of going over the best cheap laptops for Linux.

Top 10 Budget Linux Laptops

To keep the list diverse and useful for everybody, we have included laptops that fall between the $200 to $1000 price bracket. This makes sure there is something for everybody.

Also, only some of the systems discussed here come with Linux pre-installed. Since most manufacturers prefer to ship with Windows, you might need to install Linux manually or set up a dual-boot configuration. We will tell you which laptops come with Linux out of the box and which don’t.

So with that being said, here is our list of the ten best cheap Linux laptops.

1. Pine64 PineBook Pro Pinebook Pro

Starting off our list, we have a fully functional laptop at just $199 – say hello to the Pine64 Pinebook Pro. Despite the price, the laptop is well built and looks good with its premium magnesium alloy chassis. Whereas in terms of performance, it can go toe-to-toe with many of the popular midrange Chromebooks.

Note: There is an even cheaper version, simply known as the Pinebook. You can get that at just $99. However, on the performance front, it is very lacking and won’t be able to keep up with your day to day activities, which is why we went with its bigger brother.

Quick Specs:
  • Display: 14.1″ IPS LCD with 1920 x 1080 FHD resolution
  • CPU: Rockchip RL3399 – A Dual-Core ARM CPU clocked at 1.8GHz
  • GPU: Mali T860 MP4
  • Storage: 64GB of eMMC. Supports PCIe x4 to m.2 NVMe SSD slots but requires an optional adapter.
  • Battery: 10000mAH Li-Po
  • OS: KDE Neon Linux Desktop out of the box. Supports other flavors of Linux as well as Android
  • Price: $199
2. HP Chromebook 14A G5 HP Chromebook 14A G5

Next up, we have the HP Chromebook 14A G5. There are a lot of variations for the 14-inch HP Chromebooks, but this one provides the most bang for the buck. Powered by AMD’s A-4 series of processors along with AMD Radeon R4 graphics, the device offers excellent day-to-day performance.

Needless to say, the laptop ships with Chrome OS. But, to use as a Linux laptop, you will need to install Linux onto it manually. Thankfully, the hardware is more than capable of running almost all flavors of Linux without any issue.

Quick Specs:
  • Display: 14 Inch IPS WLED with 1366 x 768 HD+ resolution
  • CPU: The Dual-Core AMD A4-9120C APU with 1.6GHz base clock speed and 2.4 GHz max boost speed
  • GPU: Built-in Radeon R4 Graphics
  • RAM: 4 GB DDR4-1866 SDRAM
  • Storage: 32 GB eMMC
  • Battery: 47.36 WH Li-ion
  • OS: Chrome OS, all Linux Distros
  • Price: $249
3. Acer Aspire 1 Acer Aspire 1

With the Acer Aspire 1, we finally list the first Windows laptop on the list. For the price, the laptop brings in pretty decent internals. It ships with Intel Celeron Processor that still isn’t powerful enough to run full-fledged Windows; the manufacturers ship it with Windows 10 Home in S Mode.

But that is not a problem if you are running any Linux OS. The hardware is more than adequate in giving you a smooth day to day experience while using the laptop with a light-weight Linux distro installed.

Quick Specs:
  • Display: 14″ LED-Backlit with 1920 x 1080 FHD display
  • CPU: Intel Celeron N4000 Dual-Core Processor
  • GPU: Integrated Intel UHD Graphics 600
  • RAM: 4GB DDR4
  • Storage: 64GB eMMC
  • Battery: 2-cell Li-ion Battery – 4810 mAh
  • OS: Windows 10 Home. Option to install any Linux Distro. You shouldn’t consider dual-booting because of the limited storage space.
  • Price: $349
4. HP Chromebook X360 HP Chromebook X360

If you are looking for some style to go with your budget laptop, then the HP Chromebook X360 is your pick. It comes with a Ceramic body and a touch screen display, which makes the laptop a delight to use. You also get access to a 360-degree hinge, which allows you to fold the laptop in various positions like tent-mode, presentation-mode, or just lay flat on the table. The internal hardware, however, is on par with the Acer Aspire 1 we discussed earlier.

Quick Specs:
  • Display: 14-Inch 1366 x 768 HD+ Touchscreen display
  • CPU: Intel Celeron N4000 Dual-Core Processor
  • GPU: Integrated Intel UHD Graphics 600
  • RAM: 4GB DDR4
  • Storage: 32GB eMMC
  • Battery: 60 Wh Li-ion
  • OS: Chrome OS. Option to install any Linux Distro – preferably Ubuntu as it comes with support for touchscreen displays.
  • Price: $379
5. Lenovo Flex 5 15 Lenovo Flex 5 15

If you think the spec sheet on the HP Chromebook X360 was a bit disappointing, then you can go for the Lenovo Flex 5 15. It is $200 more expensive, but you are upgrading to the latest generation of Intel i3 processor along with 4GB of RAM, 128GB of SSD storage. This configuration allows it to run full-fledged Windows. However, we still don’t recommend dual-booting the system without at least 250GB of storage.

Quick Specs:
  • Display: 15-inch IPS touchscreen with 1920 x 1080 FHD resolution
  • CPU: Dual-Core Intel i3-1005G1 Processor with clock speeds up to 3.4GHz
  • GPU: Integrated Intel UHD Graphics
  • Storage: 128GB PCIe SSD
  • Battery: 52.5 Wh Li-ion
  • OS: Windows 10 Home. Option to install any Linux Distro you like.
  • Price: $579.99
6. Entroware Orion 14 Entroware Orion 14

Entroware is a popular Laptop Manufacturer that specializes in manufacturing stylish Linux based ultrabooks. This holds for Orion 14, where you get a slim laptop boasting an aluminum chassis and a sleek design that can put its competitions to shame.

Other than this, you get access to a powerful variant of the Intel i3 processor along with 8GB of RAM and 240GB of SSD storage. Performance-wise, you will see a significant boost over the Lenovo Flex.

Quick Specs:
  • Display: 14-Inch Matte IPS LED with 1920 x 1080 FHD resolution
  • CPU: The Dual-Core Intel i3-10110U Processor with ClockSpeeds up to 4.1 GHz
  • GPU: Integrated Intel UHD Graphics
  • RAM: 8GB DDR4
  • Storage: 240GB SSD
  • Battery: 36 Wh Li-ion
  • OS: Comes with Ubuntu 20.04 LTS Pre-Installed
  • Price: $620 before taxes
7. Asus Vivobook S15 S512 Asus Vivobook S15 S512

As we climb up in price and enter the $700 price bracket, we have the Asus Vivobook S15 S512. At this price point, this Windows laptop offers the best run-for-money, both in terms of design and performance.

Sporting an Intel Core i5 processor and a discrete graphics card, the S15 S512 is a powerhouse that will breeze through most productivity workloads – albeit, we won’t recommend 4K video editing.

Quick Specs:
  • Display: 15.6-Inch with 1920 x 1080 FHD display
  • CPU: Intel Core i5-8265U CPU clocked at up to 3.9GHz
  • GPU: NVIDIA GeForce MX250
  • RAM: 8GB DDR4
  • Storage: 256GB NVMe SSD
  • Battery: 37 Wh Li-ion
  • OS: Windows 10 Home
  • Price: $749
8. System76 Galago Pro System76 Galago Pro

System76 is by far one of the most popular OEM in the world when it comes to manufacturing Linux based laptops and offers some of the best PCs in the market. The Galago Pro is one of their low-to-mid-tier models that will hook you up with a latest-gen Intel Core i5 processor, 8GB of RAM, and 250GB of SSD storage.

In direct comparison to the Asus Vivobook, yes, you are losing access to the dedicated graphics card and paying $100 more. But this is easily compensated with the top-notch manufacturing quality you are getting with the laptop.

Quick Specs:
  • Display: 14.1″ Matte IPS display with 1920 x 1080 FHD Resolution
  • CPU: The Quad-Core Intel i5-10210U clocked at 4.2 GHz
  • GPU: Integrated Intel UHD Graphics
  • RAM: 8GB of LPDDR4
  • Storage: 250GB M.2 SSD
  • Battery: 35.3 Wh Li-ion
  • OS: Comes with Pop!_OS 20.04 LTS pre-installed
  • Price: $849
9. Penguin J3 GNU/Linux Laptop Penguin J3 GNU/Linux Laptop

ThinkPenguin is another well known Linux Laptop Manufacturer, and here we have their Penguin J3 GNU/Linux Laptop. The best thing about them is that you get tons of options to customize the laptop to fit your requirements. This includes control over the hardware as well as dedicated support to help you set up or even troubleshoot the system.

Quick Specs:
  • Display: 14-Inch LED LCD with 1920 x 1080 FHD resolution
  • CPU: The Quad-Core Intel i5-10210U clocked at up to 4.2GHz
  • GPU: Integrated Intel UHD Graphics
  • RAM: 8GB of LPDDR4
  • Storage: 250GB SSD
  • Battery: 36 Wh Li-ion
  • OS: Comes with Linux Mint 20.04 LTS
  • Price: $899
10. Entroware Hubris 17 Entroware Hubris 17

For the final entry in our list of the best cheap Linux laptops, we have yet another computer from Entroware – the Hubris 17. Now granted, a $1000 price tag is pushing it when talking about budget laptops. However, when you consider the specifications, it offers excellent value for money.

For starters, you are getting a beautiful 17″ display giving you ample screen real-estate to manage all your work. Whereas under the hood, the system is powered by an Intel Core i7 processor which, when used with power-efficient OS like Ubuntu, ensures stellar performance.

Quick Specs:
  • Display: 17.3-inch Matte IPS LED with 1920 x 1080 FHD resolution
  • CPU: The 6-Core Intel i7-9750H clocked at up to 4.5GHz
  • GPU: Intel® UHD Graphics
  • RAM: 8GB DDR4
  • Storage: 240GB SSD
  • Battery: 48 WH Li-ion
  • OS: Comes with Ubuntu 20.04 LTS pre-installed
  • Price: $1020
Wrapping Up

So these were our picks for the best budget laptops for Linux. We hope you found the read useful and that it helped you in your search for the best Linux laptops. As you can see, we have kept the list as diverse as possible by including laptops from different price points covering various features and functionalities.

So let us know which laptop you are planning on getting for installing Linux. Also, if you have some other favorite budget laptop that we left out from the list, then don’t forget to share it in the comments section. It will help us improve the scope of this post, and also provide your fellow readers with some more options.

A Beginner’s Guide to Vim Text Editor

Monday 27th of July 2020 03:42:18 PM

Vim is one of the most popular and celebrated text editors in the history of Linux. For those of you who don’t know, Vim is a command-line based text editor that has been around for a very long time. People who use Vim often swear by it, and there are justifiable reasons as to why Vim is such a legendary editor. First, a little introduction:


The name ‘Vim’ is a combination of the words ‘Vi Improved.’ Vi was a text editor in the original Unix system. Vim is known to be one of the most reliable text editors, and while it was originally written for Amiga, it has been made cross-platform to every operating system. Some distinct and well-implemented features of Vim are:

Keyboard Shortcuts

This is the unique feature of Vim. There are a lot of keyboard shortcuts for almost everything that you would have to do, and it makes your productivity go to a uniquely higher level. Since Vim is command-line based, there is no involvement of a mouse, and getting familiar with the key bindings is the essence of Vim. We will discuss some of these shortcuts is much more detail later on.


Thanks to its so many years of existence, the Vim user community has developed a lot of plugins for it to make the workflow even smoother. Plugins are intended to make the work more comfortable, no matter what language you are working with. For example, I was recently working on a LaTeX document, and using the Vim-LaTeX plugin helped a lot. Vim has a plethora of plugins for many different purposes. Might be a fancy tree-structured file browser, or some more productivity hacks.


Vim has been the editor of the preference of a lot of users for long years. Due to this, Vim has support for almost every language that you could think of. The highlighting and indentation of most common languages are built-in. It is an editor that was built in the ’80s, so I need not say that it performs well no matter what hardware you have, or on what device you are, as long as it supports Vim.

VIM Installation and Everything You Need to Know

There is a chance that your system may not have Vim installed. To check, enter:

vim --version

If you see information about Vim in the terminal, you have it on your system.

Vim Version information

If you don’t, you can install it with the following commands:

Ubuntu/Debian and their derivatives sudo apt install vim Fedora sudo dnf install vim Usage

Now, to explain how to use Vim, we are going to work through a text file that we need to create. Along the way, I will tell you how to get various things done so that we can learn how to work with Vim efficiently. An important thing to remember is that everything is done through the terminal. Whatever I mention here, I probably mean to do it in the terminal. Off we go, then.

Creating/Opening a file

The first part of a text file is opening/creating it. For creating a file, all you have to do is go to the location where you want the data to be and enter this command.

vim <Filename>

If a file with the same name already exists, it will be opened. This means that you can open files in the same way. There is one more way of opening a file. First, just open Vim in the terminal:


Now, enter:

:e <Filename>

As you start typing, you will notice that whatever you are writing starts to appear on the bottom of the window. What you just wrote is a command! Almost all the commands that don’t have to do with a specific character, word, or line begin with the ‘:’ character.

We have successfully opened a file. Let’s go on to write something in it.

Starting Writing

After opening the file, if you start typing in random characters, you will notice that they are not getting written. Why is that? The reason is that you are still in what is called the ‘Normal’ mode. Vim starts in this mode by default. In the Normal mode, you can enter various commands to the file. You can still navigate through the data, however. To start writing, just press the I key. This will make Vim go into the Insert mode. You will see that it is in insert mode, as a string of “– INSERT –” will appear at the bottom of the window. Now you can start typing away. This is important to note:

To exit NORMAL mode and enter INSERT mode, press I.
To exit INSERT mode and enter NORMAL mode, press ESC.

Insert Mode Reference Methods

The following tasks that are writing and editing text require the knowledge of reference to the text. You have to know how to select the text that you desire to change. There are four of them:


Apply from the position of the cursor to the end of the current word.


Apply from the location of the cursor to the beginning of the next word.


Apply from the position of the cursor to the beginning of the line.


Apply from the position of the cursor to the end of the line.

You can also apply this to multiple words/lines. For example, if you want to implement something till the end of two words, type in 2e. These methods will have different applications combined with other commands, as we will see later.


Vim has numerous ways of navigation. These majorly are:

  • Arrow keys: These will help you go around the file in obvious fashion (towards the directions the keys are pointing).
  • Vim traditionally uses H, J, K, and L for navigation, instead of the arrow keys. The sequence is:
    • H: Left
    • J: Down
    • K: UP
    • L: Right
  • From any given position in a line of the file, the reference methods mentioned above will work. For example, if you press 0 from any point, the cursor will move to the beginning of the line. Similarly, $ will bring you to the end of the line, e to the end of the current word and w to the beginning of the next word.
  • Pressing Shift+G brings you to the end of the file while pressing GG brings you to the beginning of the file.
  • You can also move to a specific line in Vim. In Normal mode, just enter the line number, and press Shift+G. For example, if I want to go to line 17, I have to type in 17 and then press Shift+G.

These were some basic navigation methods in Vim.

Text Insertion

The text insertion is nothing much to explain after you have entered the Insert mode, but here are a few tricks that you will find it useful.

If you are at a line and want to append to it (as in continue writing at the end of the line), just press Shift+A from any position in that line, and the cursor will be moved there in Insert mode.

Suppose you want to write in a new line just below the line that you are in, press O at any position in the current line. If you’re going to write in a new line just above the current line, press Shift+O from any position. In both cases, you will be taken to a new line in Insert mode.

Text Replacement

The next useful thing in Vim is the commands to replace text. Here, we are also going to use the reference methods that we talked about. The basic command is:

  • To replace one character, move the cursor to that character and press r. Whatever character you type next will replace that character.
  • To replace text from the cursor position to the end of the word that you are on, press ce. Start typing in the required text after that.
  • To replace text from the cursor position to the end of the line, press c$.
  • To replace text, the cursor position to the end of the line, press c0.
  • There is also a “Replace Mode”. From the position you want to begin in, press Shift+R and all the text that you type in after that will replace whatever text is next, as far as you type. Replace Mode

You can also use cw if you want to replace the gap after the word as well, but one gap or not doesn’t make much of a difference.

Text Deletion

Now that you have had a basic understanding of the usage of reference methods, text deletion commands are going to be a piece of cake. Alright:

  • For simple one character deletion, go to that character and press x.
  • To delete from the cursor position to the end of the word that you are in, press de.
  • To delete from the cursor position to the end of the line, press d$.
  • To delete from the cursor position to the beginning of the line, press d0.
  • To delete the whole line from any position in the line, press dd.

Just a reminder, if you want to delete two words at once, as mentioned earlier, you can use d2w. Okay, this is a milestone; you are through the basic editing part. Now we move on to the more advanced things.


Text selection can be done pretty quickly. Go to the position you want to start selecting from and press the V key. As you move the cursor using the navigation keys, the content will be selected.

After selecting the text, you can do anything with it. For example, if you want to delete it, just press d after the required selection. To start replacing the text, press c after selecting the required text.

Selected Text

There is also one more exciting thing you can do with selected text in Vim, which is exporting it to an external new file. After selecting the text, press the ‘:’ key, and you will see a prompt like this:


After this, the command to export this to a new file will make the prompt look like:

;'<,'>w [Filename] [enter example] Yank

To ‘yank’ means to copy text. To yank text, first, select text using v as mentioned before, and then press y to yank it.


The put command is sort of like the paste command but has more extensive usage. It can not only be used to paste yanked text but also put in the last deleted text. For example, if you just deleted a word with de, go to a location and press p, and you will see that text appear there.

As for yanked text, after selecting and copying the required text, go to the desired location, and press p to paste it there.


To search for text in Vim, press / and type in what you want to search. After pressing enter, you will see the search results. The command, therefore, looks like this:

/[Search Term]

To move to the next search result, press the N key and to move to the previous result, press Shift+N.


Substitution commands have various options. The first part of it includes only making changes in the active line. The basic command to replace the first instant of the word looks like:

:s/[Old word]/[New word]

For example, if I want to replace the first instance of Ubuntu with Fedora in this line, the command would be:


If you’re going to replace all the instances of the word from the active line, enter the command:

:s/[Old Word]/[New Word]/g

If you want to replace a word’s all instances in the whole file, the command is:

:%s/[Old Word]/[New Word]/g

You can also get a prompt to replace the word at its every instance:

:%s/[Old Word]/[New Word]/gc Replacing Text File Status

To get basic file and location status in Vim, press Ctrl+G. The information that you will get is:

  • Filename
  • Written [Modified] if the file has been modified in some way
  • The line that you are in, with the total number of lines.
  • The location of your cursor in the form of percentage compared to the content of the whole file.
  • Column number
Vim Status External Commands

That’s right; you can run Bash commands from Vim. Doing this is fairly simple:


This comes in particularly useful if you want to check whether a file already exists or not, or if you want to create a new file and open it from within Vim. Example:

:!ls Running ls in Vim Undo/Redo

Any of the things that you just learned doing can be undone with the simple strike of the U key. To return the line that you are into its original state, press Shift+U.

For redo, press Ctrl+R.


Finally, there are multiple ways to exit/save your file.

  • If you want just to save the file and not exit it, enter this command: :w

    And press enter.

  • If you want to exit without saving: :q!
  • If you want to save and exit: :wq

So, you see, exiting Vim is not as difficult as people make you believe.


Vim is a handy editor, which frankly, is just a step away from being a full operating system. As you have seen, it has many useful commands and shortcuts that will make you a peak in productivity in most of the cases. Due to such features, it has become the editor of choice for many people spanning across a significant number of use cases. Sure, it takes some getting used to, but it is impressive once you get the hang of it. To get a more interactive tutorial, consider running the vimtutor command. We hope this article helped. Cheers!

Snap vs. Flatpak vs. AppImage: Know The Differences, Which is Better

Monday 27th of July 2020 04:41:10 AM

In recent years, three different distribution independent package formats have become more prevalent in the Linux systems. These new package formats are Snap, Flatpak, and App image. And there are few others who chose an entirely different route. Linux distributions like Endless OS and Fedora entirely depend on independent package formats to run applications.

Package managers enable developers to package, distribute, install, and maintain applications in Linux systems. Distribution independent package managers are different from the traditional package managers like ‘.deb’ and ‘.rpm.’ which are platform dependent.

Distribution independent package formats vs. Traditional package formats

Unlike traditional package formats, distribution independent package formats bundle applications with all the dependencies to install and run the app as a single package. Therefore, any software distributed by these package formats will run on any Linux system, which has supported the framework for that particular package format.

With traditional package managers, we have applications built for a specific platform, and users will need to install the required dependencies for the package to run on the system. That might seem to be a significant drawback in traditional package managers, but there is also an issue to note for the distribution dependent package managers.

When a developer makes use of distribution independent package managers to distribute his work, he has the full responsibility of ensuring the dependencies are up to date with the latest security measures. If ignored, the package will pose a security threat to the system. On the contrary, traditional software packages are maintained by the Linux distribution developers, ensuring that dependencies are updated with the latest security updates.

Snap vs. Flakpak vs. AppImage

In this article, we shall explore three distribution independent package formats – Snap, Flatpak, and AppImage, know their differences and summarize a few key findings.

1. Snap

Snap is a distribution independent package format developed by Canonical and first released in 2014. It was initially developed for Ubuntu but has been adopted by other Linux distributions like Arch, Linux Mint, CentOS, Gentoo, and Fedora, and also included support for the Snap framework.

The main aim behind this package format development was to come up with a single unified format for software packages to run in a wide range of devices. That includes IoT (IoT), embedded devices running Ubuntu Core (a minimalistic version of Ubuntu), and computer systems that ran some Ubuntu version.

Snap also offers an online app store – Snapcraft, where users can find and install the software packages. It creates a large pool where users can find all available a snap package. Snapcraft is itself controlled and maintained by the Canonical team.


Other than app users, Snapcraft provides application developers with guidelines on publishing Snap packages. Additionally, Snapcraft comes with both open and proprietary software.

2. Flatpak

Like Snap, Flatpak is another distribution independent package format aimed to simplify overall app distribution and usage in Linux systems. Previously known as xdg-app, the framework was based on the concept of running applications in a secure virtual sandbox without requiring root privileges or posing a security threat to the system.

Flatpak was officially released in 2015 with a reliable backup from Red Hat, Endless Computers, and Collabora. It targeted primarily three Desktop Environments. That is FreeDesktop, KDE, and GNOME. The Linux distributions currently having this framework are arch Linux, Debian, Fedora, Mageia, Solus, and Ubuntu.

The Flatpak framework itself is developed in C programming and released under the LGPL license. The lead developer is Alexander Larsson – a Red Hat employee.

Like Snapcraft for Snap, Flatpak also has the Flathub app store where users can find and install all Flatpak packages. Initially, Flathub only allowed open-source publishing applications on the website but has recently approved the publishing of proprietary apps.

Additionally, unlike Snap, where we have a single repository controlled by Canonical to install and update software packages, Flatpak supports the use of multiple repos. The one significant disadvantage with this package is the lack of support for Servers.

3. AppImage

AppImage is another widespread distribution independent package format first released in 2004 with the name Kik. Regarded as a portable package format, this follows the “One app = one file” concept. That means, it is a regular independent file containing a single app and everything it needs to work. To run the application, the user only needs to make it executable and double-click on it to start.

Users can find the packages on the AppImage website. Another feature to note is that it does not use repositories to install package updates like Snap and Flatpak. Instead, the AppImage package comes with additional information on how to install updates. Packages without this update information can be updated with a tool like AppImageUpdate.

The table below gives a detailed summary of the key differences between Snap, Flatpak, and AppImage. Although most of the features are self-explanatory, we have elaborated some of them below the comparison table.

FeaturesSnapFlatpakAppImage Permission Controls Toggles (GUI and CLI) like in Android devicesYesYesNo Sandboxing SupportYesYesYes Sandboxing MandatoryYesYesNo App PortabilityYesYes No Native Theme SupportYes (with caveats)Yes (with caveats)Yes (with caveats) Support for Bundled LibrariesYesYesYes Fully Contained Single Executable Support . Like an exe file for Windows systemsNoNoYes Online App StoreYesYesYes Multi-version Parallel Apps SupportYesYesYes Automatic UpdatesYesYesYes(with caveats) Support for Chrome OS (through Crostini containers)YesYesYes App SizeCan vary but higher than AppImageCan vary but higher than AppImageLowest Number of Applications Available in the App StoreHighestLowestSomewhere in between Plugins for Desktop App Store SoftwareYesYesNo Permission Controls

Most applications need to access different system features to run smoothly. Luckily some of these package formats provide users with a simple way to control some of these permissions.

Snap provides both a graphical and a command-line interface for user-controlled permissions. You can use the Ubuntu Software to manage permissions of applications with Snap.

Leafpad permissions

From the above image, you can see the different permission for Leafpad. You can either enable or disable each permission by clicking on the toggle button.

To access permissions of a snap application via command-line run the command-line below:

snap connections leafpad

Replace ‘leafpad’ with your snap name.

Snap CLI permissions

To see all the installed snap applications, run the command below:

snap list Snap List

To grant network permission to Leafpad snap, execute the command below:

snap connect leafpad:network

To revoke network permission, execute the command below:

snap disconnect leafpad:network Snap CLI permissions

Flatpak also provides users with a permission control interface. You can use GNOME Software to manage Flatpak apps permissions graphically.

To see all permissions in a Flatpak app, run the command below:

flatpak info --show-permissions com.spotify.Client

Be sure to replace ‘com.spotify.Client’ with the name of your Flatpak app.

To view all Flatpak applications installed in your system, run the command below:

flatpak list

AppImage doesn’t provide user permission controls as of now. However, developers have hinted that this feature may be implemented in the future.


Sandboxing is the process where an application runs in an environment (a sandbox/container/filesystem/archive) fully isolated from the host system. Any interaction with the system is done through APIs and user permissions. Snap, Flatpak, and AppImage offer support for Sandboxed environments.

A Sandboxed application enhances overall system security compared to an app with full system access. A good example would be android applications. They run in a sandboxed environment and have access to the system only via user permissions.

Native Theme Support

Both Snap, Flatpak, and AppImage package formats support the native look and feel for GTK and QT applications, though with some limitations. For example, Snap and Flatpak require the system themes packaged in their specific formats. If you are running third party themes and icon packs, you might not get the correct system theme, cursor, and app icons. Even though this has improved over time, there is still some notable difference from apps installed from the official package manager of distribution.

App Portability

An AppImage application is similar to the Windows system single executable’ .exe.’ file. An AppImage contains one app with everything it needs to work. To run the application, the user only needs to make it executable and double-click on it to start.

That is not the case with Snap and Flatpak applications. However, they can be made portable by packaging the app itself, and the child repositories it depends on. This whole process is not as easy as AppImage and requires running multiple Terminal commands.


Each of the three distribution independent package formats discussed above has its advantage and disadvantages. I think there are still some improvements by each of them to make any of them the main package format for Linux distributions. Luckily, all these package formats can co-exist. You don’t have to stick to a particular package format when you can enjoy software from different package formats.

How to install DEB packages on Ubuntu & Linux Mint

Friday 24th of July 2020 03:40:36 AM

If you found a software setup file ending with the format (.deb) then this means the file is a Debian package that is designed especially for Debian based machines. If you are a newbie to Linux this may seem a little bit annoying because you may need some extra steps to install those Debian packages. But do not worry we are here to help you do so.

Installing DEB packages on Ubuntu and Linux Mint

During this tutorial, we are going to show you step by step how to install a Debian package on Ubuntu. We shall discuss two basic methods:

  • Installing Debian Packages via Command-Line (Terminal)
  • Installing Debian Packages via Graphical User Interface (Software Center Application and GDebi Application)

But before we start our guide let’s first ensure that you have an updated Ubuntu system using the following two commands:

sudo apt update sudo apt upgrade Method I: Installing the Debian Packages via Command-line

In the command line method, we are going to use the terminal to install a Debian package. Basically, you can use the terminal using one of the two methods:

  • via dpkg command
  • via GDebi command

In general, if you are using the dpkg command  you can use the following command format:

sudo dpkg -i "path_to_Debian_Package"

Where you need to replace the “path_to_Debian_Package” with the path of your Debian package. Therefore, for example, to install ASC Music Debian package you would use a command like the below one:

sudo dpkg -i Downloads/asc-music_1.3-4_all.deb dpkg Command GDebi

Our second command-line method is to use the GDebi command. In case you have not installed the GDebi on your system then use the following command to install it:

sudo apt install gdebi Install Gdebi Package

Next, let’s use the GDebi command to install a Debian package by using the following command:

sudo gdebi Downloads/asc-music_1.3-4_all.deb GDebi Command

When the installation completes successfully you should get a message like the below one:

Asc Music Package Installed Method 2: Installing Debian Packages via Graphical User Interface

The easiest method to install a Debian package is to use the graphical user interface way. Again, you can choose between one of the two methods:

  1. Using Software Center
  2. Using GDebi Application
Installing the Debian Package using Software Center

During this method, we will be using the default Software Center that comes with Ubuntu. Luckily, there are not many steps, you just double-click on the package you need to install. Then install it via Software Center application. Let’s have a closer look at the steps as following:

Step 1. Check the Debian package in your Downloads directory.

Asc Music Debian Package

Double click on the Debian package.

Step 2. As you can notice the Software Center will open. Now you can press the Install button to start the installation.

Install Asc Music Debian Package Using Software Installer

Step 3. You may be required to provide the sudo password for authentication. As you can see, the installation of the Debian package is in progress.

Installation Progress

When the installation completes successfully you can get a screen like the below one with a Remove button instead. The Remove button can be used to uninstall the Debian package from your system.

Asc Installed

Now you should have installed the Debian package successfully.

Installing Debian Package Using GDebi Application

In the second graphical method, we can use the GDebi application. In this method, you should have the GDebi package installed. If it is not installed then you can use the following command to install it:

sudo apt install gdebi

Now let’s use the GDebi application.

Step 1. First, move to the directory where the Debian package is located. Then right-click on the Debian package and choose “Open with Another Application”.

Context Menu

Step 2. From the recommended applications menu choose the GDebi Package Installer. Then click the “Select” button.

GDebi Package Installer

Step 3. The GDebi application will open and load the Debian package.

Asc Music Package Loading in GDebi

Step 4. After the Debian package loads, you can click the Install Package to start the installation.

Asc Music Package Installed

Step 5. As you can notice, the installation bar at the below of the GDebi installer.

Asc Music Package Installed

Step 6. After the installation finishes successfully you should get a message like the below one.

Asc Music Package Installed Successfully Via GDebi

Congratulations, you have just learned multiple methods for installation the Debian package on your Ubuntu Linux system. The tutorial should work on Ubuntu-based Linux distributions including Linux Mint, elementary OS, Pop!_OS, and more.

The 6 Best Network Scanners for Linux

Wednesday 22nd of July 2020 11:37:58 PM

Computer Networks facilitate the sharing of information and resources between multiple nodes linked together. It is regarded as the backbone of telecommunication in the field of technology.

The other crucial term under networks is Computer Network security. It refers to the set of rules and configurations adopted to prevent and monitor network misuse, data modification (integrity), and denial of network access and resources.

Having understood these two terms, now we can look at Network Scanning. Network scanning mainly deals with security in computer networks. It is a procedure used to identify nodes on a network, services offered by different devices, identify network security systems in place, the operating systems, protect networks from attacks, and check the overall network health.

Best Network Scanners for Linux

In this post, we have handpicked the six best Network Scanners for Linux systems. When choosing a network scanning tool, a network administrator must understand the scanning capabilities of a particular utility and the functional areas it covers.

1. Nessus Nessus Dashboard

At the top of our list is Nessus. It is a popular tool used by network administrators to scan for issues in a network. Initially, Nessus was distributed as a freeware utility. That quickly changed with time; currently, it’s available as a commercial utility. However, there is still a free package of Nessus that only comes with limited features and capabilities.

Nessus comes in 3 packages, each having different capabilities. They include Nessus Home, Nessus Professional, and Nessus Manager or Nessus Cloud. Nessus has been designed to make the whole process of networking, scanning simple and straightforward.

Key Features
  • Support for a wide range of systems, including cloud, OT (Operational Technology) devices, and traditional IT assets
  • It is available with 70,000 plugins offering various vulnerability scanning services on a network.
  • It offers support for network inventory with the available advanced features, e.g., automated scans, multiple network scans, and asset discovery.
  • Offers accurate visibility into a network
  • Support for both IPv4 and Ipv6 network scans.
  • It offers support for automated scheduling of scans and analysis.
  • Generate customized reports and notifications

Download Nessus

2. Nikto Nikto

Nikto is an open-source web server scanner distributed under the General Public Licence (GPL). Nikto analyses and performs rapid tests on web servers for up to 7000, potentially malicious applications and files. It also checks for outdated server versions and checks for server configurations objects like HTTP options, index files, etc.

Key Features
  • It provides HTTP proxy support.
  • Nikto supports report generation in several file formats, including XML, HTML, NBE, or CSV.
  • Offers support scanning for multiple servers and ports via input file, which can include Nmap output.
  • Enhances security by authenticating hosts with Basic and NTLM.
  • Enables users to tune scans and include/exclude various vulnerability checks.
  • Nikto provides a platform for report customization.

Download Nikto

3. OpenVAS OpenVAS

OpenVAS is a free and open-source network security scanning utility distributed under the General Public Licence (GPL). Regarded as a vulnerability assessment tool, OpenVAS scans a network for connected servers, firewalls while listening for any configuration errors in the services running on these devices.

It comes with a unique feature that enables the assessment of solutions and reveals the false negatives and false positives. For any false positive, OpenVAS provides a report of why a particular vulnerability was flagged.

The tool supports three types of scans. They include a Full Scan, Web Server Scan, and WordPress Scan.

A full scan tests the network and all connected devices like servers and web applications for any vulnerabilities. A web server scan is used to test networks for any web servers and web application vulnerabilities. The WordPress scan, like the name suggests, examines a system for WordPress and web server vulnerabilities.

Key Features
  • OpenVAS is an excellent vulnerability scanning utility with solution management.
  • Provision of reports for risk assessments and mitigation.
  • Support for intelligent custom scans.

Download OpenVAS

4. Angry IP scanner Angry IP Scanner

Angry IP scanner is a free and open-source network scanning tool used to perform IP addresses and Port scans. Every single scan provides information about nodes on the network like hostnames, MAC addresses, NetBIOS information, frequently used IP ranges, web servers presence, etc.

To speed up the network scanning process, Angry IP Scanner implements a multi-threaded approach with each thread scanning a different range of IP addresses. You can save the results in various file formats like CSV, TXT, and XML.

Key Features
  • It supports the scanning of rapid IP addresses and ports.
  • Implements multi-threaded scanning.
  • Support for several file formats – CSV, TXT and XML.

Download Angry IP Scanner

5. Nmap Nmap

Nmap is another popular tool available for both Network administrators and penetration testers. As the name suggests, Network Mapper (NMAP) maps a network and checks for vulnerabilities. It identifies nodes on a network, available hosts and services offered, discover open and closed ports, etc. The Nmap Scripting Engine helps in detecting network security issues and configuration errors.

Nmap is available as a Command-line (CLI) utility but has a GUI client known as Zenmap. Nmap can be used on small networks, scanning a single host and vast networks with thousands of nodes and subnets.

Key Features
  • Ease of use
  • Nmap Serves as a network inventory and mapping utility.
  • Support for port scanning and auditing.

Download Nmap

6. Qualys FreeScan Qualys Freescan

Qualys Freescan is a free and open-source network scanning utility that helps businesses streamline their security and compliance solutions. It scans the network for URLs, IP addresses, and local servers for vulnerabilities.

It performs three primary checks on a network;

  • Vulnerability checks: Tests a network for malware attacks and SSL issues.
  • OWASP: Checks for security issues in web applications.
  • SCAP checks: (Security Content Automation Protocol) checks computer configurations against security contents, i.e., SCAP.
Key Features
  • Qualys performs detailed network vulnerability checks.
  • Support for web application auditing.
  • Qualys responds to threats in realtime.
  • It supports only up to 10 free scans.

Download Qualys Freescan


Every network has its weakness in terms of bugs, loopholes, and even misconfigurations. All these can lure an attacker into exploiting the vulnerabilities. Network monitoring is, therefore, a critical activity that every network administrator should carry out from time to time to prevent intrusions. Network scanning tools make such a task much more comfortable and straightforward.

As an administrator, you will need to make a tough decision on which tool is best for your network. I would suggest you go for a utility that provides advanced exploit detections, comprehensive port scanning, and web vulnerability assessments.

In this article, we have looked at some of the best Linux network scanning tools, and luckily, most of them are freeware. Go through each of them and pick one which is best suited for your network.

Linux tmp Directory: Everything You Need to Know

Monday 20th of July 2020 02:18:53 PM

Are you looking to expand your knowledge base on how temporary files are handled in Linux? Well, to help you out, here is a quick and comprehensive read on everything you need to know about the Linux /tmp directory.

What is the Linux /tmp Directory?

The /tmp directory in Linux based systems contains necessary files that are temporarily required by the system as well as other software and applications running on the machine.

tmp directory on Pop!_OS (example)

For example, when you are writing a document, all the content inside that document is saved as a temporary file inside the /tmp directory. After you have saved it, it gets stored in your preferred location, and the temporary file gets removed once you exit the document.

What is the difference between the /tmp directory and the /var/tmp Directory?

Both /tmp and /var/tmp are used by programs as well as the system itself to store data temporarily. However, the key difference is for how long the data is stored inside these filesystems. The data retention period for /var/tmp is much more extended than that of the /tmp directory.

By default, all the files and data that gets stored in /var/tmp live for up to 30 days. Whereas in /tmp, the data gets automatically deleted after ten days.

Furthermore, any temporary files that are stored in the /tmp directory get removed immediately on system reboot. As such, the /var/tmp directory is used by programs to store data that needs to be preserved between reboots temporarily.

Can the Linux /tmp directory fill up?

The files and data that are stored inside the /tmp directory are only a few KB in size. It is doubtful, albeit possible, for the /tmp directory to fill up.

For an average system, there needs to be millions of temporary files stored in the /tmp directory to fill it up. This shouldn’t be something you should worry about if you run a single-user system that gets frequently shut down, as the rebooting system removes all the stored files in the /tmp directory.

However, if you are a system admin running a server that rarely gets rebooted and hosts thousands of users, then the /tmp directory filling up is a practical problem.

With more temporary files piling up in the directory, it is going to slowly eat up all the storage space, which is terrible news for the overall system health.

How to delete the files stored inside the /tmp directory?

Unless you know what you are doing, it isn’t recommended that you go around deleting the files inside the /tmp directory. These are important and required by the software running on your system. Removing them can potentially cause a system crash. Since the files and data stored in the /tmp directory get automatically deleted upon system reboot, it isn’t something you need to worry about actively.

However, as discussed earlier, for servers that run for months on end, it is necessary to clean up the temporary files from time to time before it floods the /tmp directory. To do this, we encourage you to take a more systematic approach instead of just deleting all the /tmp files by the bunch.

Here we have put together a detailed read on how to properly manage the Linux /tmp directory to help out system admins.

The correct way to delete Temporary Files and Manage the Linux /tmp directory

There are two things you need to consider when trying to manage the Linux /tmp directory. First, you need to know how to determine which files to remove from the /tmp directory, as randomly deleting the files will disrupt users’ activities.

Secondly, you need a way to automate the /tmp directory clean up process as it is going to be impossible to search and routinely delete the temporary files manually.

Considering these two points, the perfect solution would be periodically deploying user file housekeeping scripts using crontab. For example, let’s suppose that you want to routinely delete all user files stored in the /tmp directory that has not been used for the last three days.

Well, you can put this to action by first informing the users on your server about your new temporary file deletion policy, so that they can modify their usage activities accordingly. Next, you will need to write a script that will help you find all these files.

Here is an example that you can try:

find /tmp -type f \( ! -user root \) -atime +3

The above script will find all the /tmp files that haven’t been accessed in the last three days but will exclude all the files owned by the root user. To delete all these files, you will just to do a slight edit to the above script:

find /tmp -type f \( ! -user root \) -atime +3 -delete

To run this script periodically, you will need to copy the above text in a file and make it executable. For this tutorial, we will be creating the file

Script for deleting /tmp files

Next, we will set up a crontab command that will execute the script every 6 hours. To do this, first enter the following command in the terminal:

$ crontab -e

This is going to open the crontab file in the editor. Next, you will need to copy and paste the given command in the editor and then save & exit.

0**/6** /opt/scripts/ Creating a /tmp file deletion crontab

This is going to run the script in /opt/scripts/, every 6 hours, so you don’t have to worry about the /tmp directory getting flooded and eating up your system storage.

Of course, you are free to program the crontab to execute the script in any periodic interval you want. Here is an in-depth guide on how to create a crontab command to help you out.

I accidentally deleted the /tmp directory. Now what?

In the course of manually deleting the /tmp files, some users accidentally end up deleting the /tmp directory itself. Mess ups like this can and do happen. However, you can quickly restore the deleted /tmp directory using the discussed method.

All you need to do is enter the following commands in your terminal:

$ sudo mkdir /tmp $ sudo chmod 1777 /tmp

The first line creates a new /tmp directory. The second line gives all users (owner, group, and other) access and permission to read, write, and run files in the /tmp directory.

Next, you can enter this command to check all the permissions of the /tmp directory to make sure all your users will be able to use it.

$ ls -ld /tmp

Once you have checked everything is a-okay, you will need to reboot your system. This will ensure that the programs start using the newly created /tmp directory.

Wrapping Up

So that covers everything you need to know about the Linux /tmp directory. However, if you still have some burning questions that we left out from this read, then feel free to ask them down in the comments section. We will happily resolve it to help you develop a better understanding and appreciation for Linux.

Top 10 Tips using the Ubuntu Software & Updates

Sunday 19th of July 2020 06:28:44 PM

Since its release, the Ubuntu Software Center has proved to be a reliable utility for users who want to install applications graphically without the hassle of executing multiple Terminal commands. It’s an easy to use tool that provides users even with search functionality enabling them to look up for any application they need and install it with a single click. Additionally, most of these applications available are entirely free for use.

Ubuntu Software in Focal Fossa

Let’s get into details and learn how to effectively use the Ubuntu Software Center for installing and managing the applications.

Using the Ubuntu Software Center

Even with all these fantastic features, we can still tweak the Software Center to make it even more efficient. Below are five great tips you can apply while using Ubuntu Software Center.

1. Set the fastest downloading server

By default, the Software Center uses the primary server for your country and region to download packages and updates for your system. That is done to increase download speeds. However, we can improve the download speed even more by using a local server like that of a university that often hosts many repositories.

Follow the steps below to see how you can change your download server.

i) Launch the “Software & Updates” application from the applications menu.

Ubuntu Application Menu

ii) Navigate to the Ubuntu Software menu. It should probably be the first from the left. From the image below, you can see my default server is set to the United States.

Default download server

iii) Click on the drop-down list, and you should see the “Other” option. Click on it. You will be surprised by the number of servers that will be listed. Select the server closest to you.

Download Server Setting

iv) If you have no idea which to select, click on the “select best server” option on the top right of the winLaunch Software & Updatesdow.

Best Server Setting

This option will test all the servers available and closest to you for the fastest server. That will give your software and updates download speeds an amazing boost. It is even more useful when Ubuntu servers are slow, especially when a new edition of Ubuntu is released.

2. Clickable Installation links

This feature is mainly implemented by blogs and websites, providing tutorials on how to carry out various tasks on Ubuntu. They provide users with a single-click link that will take them directly to the Ubuntu Software Center to download the particular package.

Unfortunately, not all bloggers use this method. Some still use the command-line instructions using the “apt” package manager. For example, “sudo apt-get install.” However, there is a solution to this for you as a reader.

With the Apt-Linker chrome extension, any “sudo apt-get install” command will automatically convert to a clickable link. Installing this extension is as simple as clicking any installation link.

3. Installing DEB packages

With the introduction of the Software Center in Ubuntu systems, software installation was made even more straightforward. Users don’t have to execute multiple commands on the Terminal to install commonly used software like Skype or VLC media player.

With the search feature, users can look up for any application they need to install. For example, to install Android Studio IDE, I can search for it on the Software center.

Ubuntu Software Center

The Ubuntu Software Center can also be used to install “DEB” packages. Instead of using the command-line, which will need you to execute several commands, you can use the Software Center. To do so, Right-click on the “deb” package and select the option “Open with Software Install.”

4. Installing Software Updates

Updating and upgrading the Ubuntu system is pretty straightforward. All you have to do is run the commands “sudo apt update” and “sudo apt upgrade.” Even though this method is very efficient, you might need to upgrade only particular applications in the system. That is where the Ubuntu Software Center comes in handy.

Launch the Software Center. You should see three tabs at the top – “Explore,” “Installed,” and “Updates.” Click on the “Updates” tab. If you have any applications that need to be updated, they will be listed here. You can decide to update all of them or update a specific application.

Ubuntu Software Center Updates 5. Managing Native packages, Snap packages, and Flatpak applications

You can use the Ubuntu Software Center to remove and update native applications and apps installed using snap and flatpak. To do so, launch the Software center and lookup for the specific application. You should see a “Remove” next to it. Click on it to uninstall.

Alternatively, you can click on the “Update” tab to see which applications require updates. This method is very efficient for new users who are just getting into Linux and find the whole Terminal thing overwhelming.

Software Center Installed Applications 6. Use Snap Store Account

Ubuntu has two leading Software apps where users can download applications. The Ubuntu Software and Snap Store. The default software app is the Ubuntu Software, but it is the Snap store under the hood. All apps available in the Snap store are snap packages while the Ubuntu Software can contain both Snaps and apt packages.

These available snaps on Ubuntu Software are regarded as free, and you can download them without the need for a snap store account. However, to download and install private snaps, you will need a snap store account. Follow the steps below to create a snap store account if you don’t have one.

i) Launch Ubuntu Software application.

ii) Click on the “hamburger menu drawer” icon at the top-right.

Hamburger Menu Icon

iii) Click on the “Sign in” button.
iv) If you already have a snap store account, select the option “I have a Snap Store or Ubuntu One account.” If not, choose “I want to register” to get started with creating a new account.

Snap Store account 7. Uninstalling Software

Not only did the Ubuntu Software simplify the overall process of installing software, but also uninstalling applications. If you are getting into Linux systems, the Ubuntu Software can be a reliable utility before you get a good understanding of the Terminal package management commands. You can use it to remove Native apps, snap packages, and Flatpak applications.

Uninstall Applications 8. Additional Drivers

Just like any other operating system, Ubuntu uses drivers to manage most of the hardware components. However, unlike Windows operating systems where users need to search for drivers and install them manually, Ubuntu identifies and installs the required drivers for your order automatically.

However, there is a catch. Most of these hardware components have both open-source drivers and proprietary drivers. By default, Ubuntu will install the open-source ones. In some cases, that might cause some problems since the open-source driver might not work as well as that provided by the hardware manufacturer. I faced these issues, mostly with wireless adapters and graphic cards.

To install additional drivers, follow the steps below;

i) Launch the “Software & Updates” app.

Ubuntu Software & Updates

ii) Click on the “Additional Drivers” tab. You will see a list of devices together with their additional drivers, which you can install. You can decide to install the driver by selecting it and clicking on “Apply Changes.”

Ubuntu Additional drivers

If you ever want to go back to using open-source drivers, click on the “Do not use” option. Note, your PC will need to restart after switching the drivers.

9. What is Live Patch, and should I use it?

Canonical publicly launched the Canonical live patch service, enabling you to apply kernel security updates without rebooting the system. It directly patches the running kernel. It, however, doesn’t affect the regular kernel updates. You will have to install those the proper way and reboot to apply changes.

If you are running a server or having some dedicated computer, it would be best to set this up. As soon as a security update is rolled out, you want to have it running on your system as quickly as possible. Follow the steps below to setup Ubuntu Livepatch.

i) launch the “Software & Updates” application.
ii). Click on the Livepatch tab. To enable Ubuntu Livepatch, you need to sign in with your Ubuntu one account. If you don’t have it, you can create one here.

Ubuntu Livepatch 10. Setting Frequency of Updates

If you wish to have your system updated more frequently, you can change the update settings on the Update and Software application. Launch the “Software & Updates” app and navigate to the “Updates” tab.

Ubuntu Updates

Here, you will be presented with several options for how you want to receive your updates. For example, in my system, I want it to check for updates daily and automatically download and install security updates.


The Ubuntu Software Center is a handy application and is getting even better with time. We have more and more packages and features being introduced. Currently, there is a rating and review feature that shows customer feedback about the application and Livepatch being the latest. If you found this article useful, feel free to share the link with friends.

How to install Google Chrome on CentOS

Saturday 18th of July 2020 12:31:11 PM

Google Chrome is the most popular web browser for desktop computers for a good reason. It comes with a lot of cool features and functionalities that appeal to casual users as well as tech-savvy professionals.

With that being said, CentOS already ships with the much loved and equally feature-rich Mozilla Firefox. However, if you have a long history with Google Chrome and want to use it on your CentOS system as well, then we are here to help.

The problem is that since Google Chrome isn’t an open-source application, it isn’t available in the official CentOS repository. As such, we have put together a step-by-step workaround to help you add Google Chrome to your YUM repository and then install it.

Installing Chrome on CentOS NOTEGoogle Chrome has dropped support for 32-bit Linux distros since March 2016. As such, if you are running on CentOS 6.X or older, you need to upgrade to a recent version to Download and Install Google Chrome on your system. For this tutorial, we will be using CentOS 8.2. Step 1: Enabling Google Chrome YUM Repository

First, we will need to create this file: /etc/yum.repos.d/google-chrome.repo. You can do this by entering the following command in the terminal:

$ sudo touch /etc/yum.repos.d/google-chrome.repo

Once the file is created, you will need to open it using your favorite editor. We will be using the nano editor for this tutorial. After opening the file, you will need to enter the following text and then save the file.

[google-chrome] name=google-chrome baseurl=$basearch enabled=1 gpgcheck=1 gpgkey= Enabling Google Chrome Yum Repository

Following these steps, you have successfully enabled the Google Chrome YUM Repository. Its time to install the Chrome web browser.

Step 2: Download and install Chrome

Next, we will be using the yum command to install the browser and make sure to pull all of its dependencies onto your system. To do this, first enter the following command in the terminal:

$ sudo yum info google-chrome-stable

This is going to give us the following output.

Checking Chrome Version

As you can see, the repository should show the latest version of Google Chrome i.e., version 84. Now that we are sure we are getting the newest version, it is time to install the browser using the following command:

$ sudo yum install google-chrome-stable

This is going to install the browser along with all its dependencies on your system.

Installing Google Chrome Updating Google Chrome on CentOS

After installing any new software or application, it is a good practice to check for any updates. You can do this by entering the following command in the terminal:

$ sudo yum update google-chrome-stable

This should give you a similar output screen, as shown below:

Updating Google Chrome

On our system, it is showing that everything is up to date, and all the necessary dependencies are installed. That’s great news! It’s time to start the browser.

Starting Google Chrome on CentOS

To start Google Chrome, you can enter the following command. As you can see, there is no need for you to enter sudo, as you can access it as a regular user.

google-chrome &

This is going to bring up the following output screen as well as the pop-up box asking you to make Google Chrome your default browser, and whether you want to send usage stats to Google.

Starting Google Chrome

You can keep the options checked or uncheck them if you like. Once done, hit Ok, and the Google Chrome browser should open up. You can start browsing the web using it.

Google Chrome Installed

With Google Chrome successfully installed, you will also be able to run it using the GUI as well with the option to pin it to your Favorites.

Wrapping Up

So this is how you can install Google Chrome on CentOS. As you can see, it is relatively simple and doesn’t involve too many complicated steps. The same steps and commands will apply when trying to install Chrome on Fedora as well as on CentOS/RHEL 7.X.

The most important and crucial part would be enabling the Google Chrome YUM repository, as we showed earlier. Make sure to copy the text exactly as shown here, and you should be good to go.

However, if you do end up facing some errors during the installation procedure, then leave a comment explaining your problem. We would happily help you to troubleshoot the issue.

The 6 Best Linux File Recovery Software

Thursday 16th of July 2020 02:34:42 PM

It’s fair to say that most of us lose essential data in our computers either through accidental deletion, virus attacks, permanent removal of files, etc. at some point. Some of these files contain critical information that cannot be assumed and needs recovery. In this post, we will discuss some of the best data recovery available for Linux systems. The fantastic part is that most of them are opensource and freely available for use.

What is Data Recovery?

The process of Data recovery is the retrieving of either lost, damaged, inaccessible, or corrupted data from storage devices. They can range from storage media like Hard drives, SSD, USB drives, DVD/CD, and other electronic storage devices.

How is it possible to recover the data after deletion?

As strange it may sound, the data is not ‘actually’ deleted from the hard disk after you remove the file from your Linux system (or any OS if it matters) using the delete key. The operating system just marks the memory sector of the deleted file location as available space for the next write sequence. It means anyone can use a special tool to get access to that memory sector and recover the data before other data overwrites it. The special tool I’m talking about is the File Recovery tool.

Best File Recovery Tools For Linux

Currently, there are many Linux data recovery software in the market, giving users a large pool to choose the right one. In this article, we will focus on the six best recovery tools available for Linux, and also show you how to install them on the most common Linux distributions.

1. TestDisk TestDIsk on Ubuntu

TestDisk is an opensource Data recovery tool mainly used to retrieve damaged partitions. It is also useful in recovering a non-booting disk if an error was caused by harmful software, virus, or even accidental file deletion. It is a powerful command-line utility that is easy to use and fast to understand.


Installing this highly reliable utility is fast and easy. You can download the TesDisk setup file from the link below or use the command-line to install it.

Download TestDisk

Install TestDisk on Ubuntu and Debian

sudo apt update sudo apt install testdisk

Install TestDisk on Red Hat and CentOS 7

yum install epel-release yum update yum install testdisk

Install TestDisk on Fedora

sudo dnf install tesdisk

Install TestDisk on Arch Linux

sudo pacman -S testdisk Features
  • TestDisk enables you to gather necessary information about a corrupted drive.
  • Recover deleted partitions.
  • It’s a cross-platform application that runs Linux, Windows Operating Systems, MacOS, and many more Operating System.
  • TestDisk can be used to re-build broken partition tables.
  • It is used to rewrite the corrupted MBR (Master Boot Record).
  • It can be used to backup partitions EFI GPT partitions.
2. Ddrescue Ddrescue

Ddrescue is a free and open-source command-line utility distributed under the GNU license. Ddrescue is used in retrieving data when a read error occurs. You can download the Ddrecue setup file from the link below or use the Terminal commands.

Download Ddrescue

Install Ddrescue on Ubuntu

sudo add-apt-repository ppa:hamishmb/myppa sudo apt update sudo apt-get install ddrescue-gui -y Features
  • Rescues data easily and fast by reading only the specified blocks.
  • Enables users to stop/pause an ongoing activity and resuming at any time.
  • Can recover necessary data efficiently in spit of disk errors and bad sectors.
  • It highlights the bad sector on a drive.
  • Ddrescues keeps track of logs about its advancement; therefore, reducing redundant scanning.
3. SafeCopy SafeCopy

It is one of the most reliable tools when all others fail. Written in C programming language, SafeCopy performs data recovery from bad sectors on a storage drive. You can download the SafeCopy setup file from the link below or use the command-line to install it.

Download SafeCopy

Install SafeCopy on Ubuntu

sudo apt-get update sudo apt-get install -y safecopy Features
  • Since it’s written in C language, SafeCopy can execute low-level I/O operations.
  • SafeCopy works in the background without slowing or bringing the computer to a deadlock.
  • It’s available for use in 16 different languages.
  • It can continue from the exact position of recovery in case a storage drive disconnects. (For example, a USB drive could disconnect either accidentally or due to faulty storage).
  • SafeCopy can be used to fix errors in several storage media like DVD/CDs, Floppy drives, Hard drives, USB drives, etc.
4. Redo Backup and Recovery redo-backup-and-recovery

Redo Backup and Recovery is one of the available data recovery utilities with a Graphical User Interface (GUI) and released under the GNU GPL3. It is regarded as an easy-to-use tool even for newbies getting into Linux systems and have less knowledge about the Terminal commands.

Redo Backup and Recovery is available as an ISO file which can be used to create a bootable USB/CD to boot your PC. Since this tool is platform-independent, users can retrieve a lot more data from different partitions. Download Redo Backup and Recovery tool from the link below.

Download Redo Backup and Recovery

  • Redo Backup and recovery come with a few essential applications enabling you to carry out other tasks while recovering data. They include a text editor, browser, file manager, and Terminal.
  • Available for use as a bootable USB/CD.
  • It’s one of the few recovery utilities that make use of Partclone to clone disk partitions.
5. PhotoRec PhotoRec

PhotoRec is another amazing data recovery utility from CGsecurity. The other is TestDisk. PhotoRec was developed to accurately recover deleted images/photos and other graphic media files. It’s a free and open-source utility distributed under the GNU General Public Licence.

You can download the PhotoRec setup file from the link below or use the command-line install it.

Download PhotoRec

Install PhotoRec on Ubuntu

PhotoRec comes along with the TestDisk Data Recovery utility. Therefore, to work with PhotoRec, we will install TestDisk.

sudo apt update sudo apt install testdisk

Launch Photorec with the command below.

sudo photorec Features
  • Comes with an intuitive and interactive interface
  • PhotoRec supports a wide range of file formats
  • Can recover damaged or lost photos from CD drives, Hard drives, and even digital cameras
  • PhotoRec can discover unseen or unexplored data to recover photos even when the media storage is severely damaged.
6. Mondo Rescue MondoRescue

Mondo is a free and highly reliable command-line data recovery utility available for most Linux distributions. It comes with several unique features and has been in the market for a long time used by large and tiny companies to recover/backup/restore data extensively. Mondo works with a wide range of storage media devices.

Download Mongo Rescue

  • Used to verify the reliability of your system
  • Can be used to perform several partition management features like resizing, formatting and partitioning
  • It works with both RAID and Non-Raid devices
  • Mondo is available for both Linux and Windows and can be used to recover the Master Boot Record (MBR).
  • Can be used to verify the integrity of recovered data

I hope this article has given you enough information on the best Linux file recovery software available to download, and you can now make a choice on which tool best fits your needs. If you are a primary user, any of the tools above will be of great help. However, for advanced users with special needs on file recovery, they will need to go for one with the required features.

It’s important to note that most of the data recovery tools available, retrieve lost data using the metadata left in the drive. That is not a hundred percent guarantee you will recover every single byte of the data. At times, some of the files might be overwritten so much until the metadata itself is no longer useful. Therefore, it’s best always to have a backup of any critical data in your system.

Which tool do you use for data recovery in your Linux System? Feel free to share with our readers in the comment section below.

How to set up NFS Server on CentOS

Wednesday 15th of July 2020 01:27:06 PM

NFS or Network File System is a distributed file protocol that allows you to share a file or even an entire directory with others over a network. It establishes a server-client environment, where a client machine can access data shared by the NFS server as if they were locally mounted.

In this tutorial, we will go over detailed installation instructions for setting up NFS Server on CentOS. The step-by-step guide will cover how to set up the NFS server on the server-side as well as the client-side. Let’s get started.

Setting up NFS Server on CentOS Our Testing Environment NFS Server IP address:  NFS Client IP address:

To start, here is a step-by-step guide on setting up the NFS server on your CentOS 8 system.

Step 1: Install the NFS Server

First, we will need to install nfs-utils on our system. It is the NFS server package that functions as the NFS daemon. To install it, you need to enter the following command in the terminal:

$ sudo dnf install nfs-utils -y Installing NFS server

We are running a clean install of CentOS 8 and nfs-utils is already installed on our system. It might be the same on your machine as well. If not, then the package will get installed, following which we move on to the next step.

Now that you have nfs-utils installed on your system, you will need to start the nfs-server service, configure it to start automatically at system boot, and finally verify its status to check if everything is working as intended.

To do this, you will need to enter the following commands in your terminal:

$ sudo systemctl start nfs-server.service $ sudo systemctl enable nfs-server.service $ sudo systemctl status nfs-server.service

The output should be similar to, as shown in the image below:

Checking NFS server Status

The active sign means that the NFS server is working perfectly. You should note that all the associated services that are necessary to run an NFS server or mounting NFS shares are also activated via the above command. These services include nfsd, nfs-idmapd, rpcbind, rpc.mountd, locked, rpc.statd, rpc.rquotad, and rpc.idmapd.

Also, in case you are interested, here is the address for the NFS server configuration files:

  • /etc/nfs.conf – This is the main configuration file for the NFS daemon and tools.
  • /etc/nfsmount.conf – This is the NFS mount configuration file.
Step 2: Create and Export an NFS File System

Now that you have set up your NFS server, it is time to create a shared file system on the server that is going to be accessible from the client system. For this tutorial, we will create the directory /mnt/nfs_share/docs by using the following command:

$ sudo mkdir -p /mnt/nfs_share/docs

Next, to avoid any file restrictions on the NFS shared directory, we will configure the directory ownership using the following command:

$ sudo chown -R nobody: /mnt/nfs_share/docs

This allows the client system to create any files in the shared directory without facing any permission issues. Also, if you wish to enable all permissions – read, write, and execute to the NFS shared folder, then you can do so using the following command:

$ sudo chmod -R 777 /mnt/nfs_share/docs NFS shared folder

For the changes to take place, you will need to restart the NFS daemon using this command:

$ sudo systemctl restart nfs-utils.service

It is time to export it so that the client system can have access to it. To do this, we will need to edit the /etc/exports file. While editing the file, you can grant access to a single client only, or multiple clients, as well as the entire subnet.

If you wish to grant access to the entire subnet, then you will need to use the following syntax:

/mnt/nfs_share/docs subnet (rw,sync,no_all_squash,root_squash)

Here “subnet” needs to be replaced with the system’s subnet. Otherwise, you can specify multiple clients one at a time, on a separate line using this syntax:

/mnt/nfs_share/docs client_IP_1 (rw,sync,no_all_squash,root_squash) /mnt/nfs_share/docs client_IP_1 (rw,sync,no_all_squash,root_squash)

Here is a look at the other parameters using in the command and what they mean:

  • rw – This parameter gives read and write permissions to the NFS shared file/folder.
  • sync – This parameter requires the changes on the disk to be made first before they are applied.
  • no_all_squash – This parameter will map all the UIDs & GIDs from the client requests that are identical to the UIDS and GIDs on the NFS server.
  • root_squash – The parameter will map requests from the root user on the client-side to an anonymous UID / GID.

Using our setup, we will grant access to our client machine with the IP To do this, you will first need to open the /etc/exports file using this command.

$ sudo vi /etc/exports

Next, you will need to add the following line inside the file:

/mnt/nfs_share/docs,sync,no_all_squash,root_squash) Modifying the /etc/exports file

Once done, save and exit the file. Now, using the cat command, confirm that the entry was registered. To do this, enter the following command in your terminal:

cat /etc/exports

You should see something similar to the following image:

Confirming changes

Now it is time that we export the above-created folder, so it becomes available to client systems. To do this, we will need to use the following command:

$ sudo exportfs -arv

Here, the -a option means that all the directories will be exported. The -r option will re-export all the directories. And finally, the -v option will display a verbose output.

However, just to be sure that the export list is a-okay, we will run this command as well:

$ sudo exportfs -s

And that’s it! We have successfully created and exported our NFS shared files. Now its time to move on to the next step.

Step 3: Set Up Firewall Rules for the NFS Server

Our NFS server set-up is complete. The only thing left to do is to configure the firewall rules such that it allows the NFS services.

This includes the following three services – nfs, rpc-bind, and mountd. And to allow these services through the firewall, we need to enter the following commands in the terminal:

$ sudo firewall-cmd --permanent --add-service=nfs $ sudo firewall-cmd --permanent --add-service=rpc-bind $ sudo firewall-cmd --permanent --add-service=mountd

Once done, make sure to reload the firewall for the changes to take effect. To reload the firewall, use this command:

$ sudo firewall-cmd --reload Configuring CentOS firewall

With the firewall configured, it is time to set up the NFS client system.

How to Set Up the NFS Client System on CentOS 8

Here is a step by step procedure on how to set up the NFS client system on CentOS 8.

Step 1: Install the NFS Client Packages

First, we will need to install the necessary packages for accessing the NFS share folder that’s in the NFS server. To do this, enter the following command in the terminal:

$ sudo dnf install nfs-utils nfs4-acl-tools -y

Next, we will display the mounted NFS shared folder on the server using this command:

$ showmount -e The mounted NFS shared folder Step 2: Mount the remote NFS share on the server

We will need to create a directory that we will use to mount the NFS share. To do this, use the following command:

$ sudo mkdir p /mnt/client_share

To mount the remote NFS shared directory that’s on the local client system, we will need to use the following command.

$ sudo mount -t nfs :/mnt/nfs_shares/docs /mnt/client_share

Where is the IP address of the NFS server. To verify that the remote NFS share has been mounted, you can use the following command:

$ sudo mount | grep -i nfs

Finally, to make the mount share stable even after a reboot, we will need to edit the /etc/fstab file and then add the following entry: /mnt/client_share nfs defaults 0 0

Once done, save and close the file, and you are good to go.

Step 3: Test the NFS Server & Client Setup

After going through all the above steps, we have successfully configured a client-server connection using NFS. However, we need to check if the setup is working before we can call it a day.

To do this, we will first need to create a test file in the NFS server share directory and then check to see if it’s present in the client NFS mounted directory. So first, let’s create the test file in the NFS server directory using the following command:

$ sudo touch /mnt/nfs_shares/docs/server_nfs_file.txt

Head on to the client-side and enter this command in the terminal to check if the test file is available.

$ ls -l /mnt/client_share/

If you see the file, then it means that the NFS connection is working correctly.


That was our in-depth guide on how to set up the NFS server on CentOS 8. We hope you found this tutorial to be useful and that it helped you in sharing files and directories with your client systems. You may be interested in setting up an FTP server on your CentOS machine.

How to install Java on Pop!_OS

Tuesday 14th of July 2020 01:16:22 PM

Having Java on your Linux system is necessary for running a lot of essential software. We have put together a comprehensive guide on how to install Java on Pop!_OS. We shall show you how to install the Java Runtime Environment (JRE) as well as the Java Developer Kit (JDK) using the apt command.

Apart from that, we will also show you how to install both OpenJDK and the official Oracle JDK.

Installing Java on Pop!_OS

By default, Pop!_OS 20.04 comes with Open JDK 11 – an open-source version of JRE and JDK. To check if your Pop!_OS installation also has it pre-installed, you need to type the following commands in your terminal.

First, you will need to update the package index using this command:

$ sudo apt update

Next, enter this command to check if Java is installed on your system.

$ Java -version

If Java is installed, it will show you the version number of the JRE. However, in case it is not installed, you will get the following message on screen:

Java not installed

To install Java on your system, you can type in the following command:

$ sudo apt install default-jre

This command will only install the default JRE – Java Runtime Environment from OpenJDK 11. To install the default JDK – Java Development Kit from OpenJDK 11, you will need to enter another command:

$ sudo apt install default-jdk

With both JDK and JRE installed, you will be able to run all Java-based software on your Pop!_OS system. To make sure that Java is correctly installed on your system, enter the same command as before:

$ java -version

This time, you should see an output similar to one shown in the below image:

Java installed

To verify that JDK has been appropriately configured, you can check the version of the Java compiler on your system using this command:

$ javac -version

You should see an output similar to the one shown below:

Checking Java version

So, this is how you install JRE and JDK from OpenJDK. However, if you want to install the official Oracle JDK, then you will need to follow a completely different method.

Here’s a step by step guide on that to help you out.

How to install Oracle JDK 11?

OpenJDK should be enough to help you run most Java-based applications on Pop!_OS. However, some software requires you to have the official Oracle Java Development Kit (JDK) installed on your system.

Note: We recommend installing Oracle JDK 11 because it is the current LTS (Long-Term Support) version, and will receive updates and support till 2026.

Unlike OpenJDK, Oracle JDK isn’t available via package managers because of terms related to licensing and distribution. As such, to install Oracle JDK 11 on your system, we must follow a workaround. Here is a step-by-step process, so you can methodically follow the installation procedure.

Step 1: Download the Oracle JDK file

First, you will need to head on over to the official Oracle JDK website and download the latest JDK: jdk-11.0.7_linux-x64_bin.tar.gz as shown in the image below:

JDK Step 2: Extract The File To A New “JVM” Directory

Next, you will need to create a new directory folder where you will extract the contents of the downloaded file. To do this, open the terminal and type in the following command:

$ sudo mkdir /usr/lib/jvm

Sometimes, you might already have this file in your system, in which case, the above command will generate an error message telling you the “file exists”.

Either way, your system has the /usr/lib/jvm directory. We will need to enter the following command to change to this directory:

$ cd /usr/lib/jvm

Next, we will extract the downloaded file to this directory using this command:

$ sudo tar -xvzf ~/Downloads/jdk-11.0.7_linux-x64_bin.tar.gz Extracting the downloaded JDK file

Note: This command states that the jdk-11.0.7_linux-x64_bin.tar.gz is located inside the /Downloads folder. If you have downloaded it elsewhere, then change the pathway accordingly.

Step 3: Configure The Java Installation

Next, you will need to configure your system so that Oracle JDK 11 runs smoothly. To do this, first, you will need to open the environment variables files by entering this command in the terminal:

$ sudo nano /etc/environment

We have used the nano text editor for this tutorial. However, you can use any other text editor that you like.

This is how the environment file looks like before any modification:

The /etc/environment file before making any modification.

After opening the file, you will need to alter the existing PATH folder by adding the following bin folder:


Make sure that colons separate the PATH variables. Once done, add this environment variable at the end of the file:


Here is the edited environment file to help you see where you need to add these paths and variables.

The modified /etc/environment file Step 4: Inform the System About the Location of the Java Installation

Next, you will need to inform your system where Java is installed on your system. To do this, enter the following command in your terminal:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk-11.0.7/bin/java" 0 sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk-11.0.7/bin/javac" 0 sudo update-alternatives --set java /usr/lib/jvm/jdk-11.0.7/bin/java sudo update-alternatives --set javac /usr/lib/jvm/jdk-11.0.7/bin/javac Installing Java Step 5: Verify if Everything is Working Properly

To finalize the installation of your Oracle JDK 11, it is time to run some commands to see if everything is working correctly.

First, let’s see if the system prints the location of Java and javac as we configured in the previous steps. To do this, enter the following commands in the terminal:

$ update-alternatives --list java $ update-alternatives --list javac Verifying the Java Installation

As you can see, the system can locate both the OpenJDK installation as well as the OracleJDK installation.

Once you get this output, restart your system. Again, open the terminal and type in the following command:

java -version Oracle Java running on Pop!_OS system

Note that in the output, you see Java version instead of OpenJDK version – which was the output when Oracle JDK 11 was not installed. You can also see that the system is running on build 11.0.7 LTS – the one that we installed. If you get the same output, then it means that our installation of the Oracle JDK 11 was successful.

Uninstalling Java on Pop!_OS

We just went over how you can install both OpenJDK and Oracle JDK on your Pop!_OS system. To complete the tutorial, let’s also go over how you can uninstall these packages as well.

Uninstall OpenJDK

Since you already have Oracle JDK installed, you might want to uninstall OpenJDK from your system. This can be quickly done by entering the following command in the terminal:

$ sudo apt-get purge --auto-remove openjdk*

This will remove OpenJDK along with all its dependencies and configuration files.

Uninstall OracleJDK

Instead of removing OpenJDK, you might want to remove Oracle JDK. To do this, you need to enter the following commands.

  1. $ sudo update-alternatives --remove "java" "/usr/lib/jvm/jdk[version]/bin/java"
  2. $ sudo update-alternatives --remove "javac" "/usr/lib/jvm/jdk[version]/bin/javac"

You need to replace the jdk[version] with the version installed on your system. Since we just installed jdk-11.0.7, we will be using that in this tutorial. Here is a look at the output screen:

Uninstalling Java

Once done, type in the following command:

$ java -version

If you see this line “command ‘java’ not found”, then it means you have successfully uninstalled Java from your system.

How to set up FTP Server on CentOS

Monday 13th of July 2020 08:22:38 PM

Setting up an FTP (File Transfer Protocol) Server on your Linux PC will allow you to transfer files between your system and a remote machine. We will show you how to set up an FTP server on CentOS.

Linux already has a ton of open-source FTP servers that you can use for the job. This includes popular servers like PureFTPd, ProFTPD, as well as vsftpd.

You are allowed to use any one of the FTP servers as you like. However, in this tutorial, we will be installing and using vsftpd, short for Very Secure FTP Daemon. It is a fast, stable, and secure FTP server that will help you transfer files to and from a remote system in a jiffy.

Setting up FTP Server on CentOS

So without further ado, let’s get started:

Installing vsftpd

First, we will need to install vsftpd on CentOS. To do this, enter the following command in the terminal:

$ sudo dnf install vsftpd Installing vsftpd on CentOS

With vsftpd installed on your CentOS system, you should configure it so that it starts and boot automatically. This can be done using the following command:

$ sudo systemctl enable vsftpd --now

Once that’s done, verify the vsftpd service status by entering this command:

$ sudo systemctl status vsftpd

An output screen similar to the one below will appear. You should see that vsftpd is not “Active” on your CentOS system.

vsftpd active and running on CentOS Setup vsftpd

With vsftpd active and running on your system, you will need to configure the server settings. To do so, you will need to access the /etc/vsftpd/vsftpd.conf configuration file. This can be done by opening the configuration file in the nano editor by entering the following command in the terminal:

$ sudo nano /etc/vsftpd/vsftpd.conf

With the file now opened in the editor, there are several changes you need to make to set up vsftpd on your system. Let’s go over them one by one.

1. Configure FTP Access

First, let’s configure the FTP server to allow access only to the local users. To do this, you will need to find the anonymous_enable and local_enable directives in the file and edit them as shown in the image below:

FTP access settings

As you can see, you will need to set anonymous_enable=NO and local_enable=YES.

2. Enable Uploads

Next, you will need to configure the FTP server to allow uploading and deleting files.

To do this, you will need to locate the write_enable directive and change it to YES, as shown in the image.

Option to enable vsftpd uploads 3. Limit User Logins

Once done, you will want to limit the total number of user logins i.e., you only want certain users to log in to your FTP server. To do this, first, locate this line in the .conf file – userlist_enable=YES. After that, add these two lines into the file:

userlist_file=/etc/vsftpd/user_list userlist_deny=NO

Use the image below as reference:

Settings to limit user logins

You can also choose to enable this option. If you do, you will have to explicitly specify which users you want to give access to the FTP server. To allow the users, you will need to add their usernames to the /etc/vsftpd/user_list file with only one username in each line.

4. Set-Up Passive FTP Connections

You might also want to set up passive FTP connections.

As such, here we will show you how you can specify the minimum and maximum ranges of the ports by adding a couple of lines inside the .conf file.

Setting up passive FTP connections

All you need to do is scroll down to the end of the file and add these two lines, as shown in the image.

pasv_min_port=30000 pasv_max_port=31000

We will also discuss how you can open the range in your firewall later in this tutorial.

5. Configure Secure Transmissions using SSL/TLS

Finally, there comes the question of securing the FTP connection by using SSL/TLS. To do this, you will need to have an SSL certificate and configure your FTP server to use it.

However, for the sake of this tutorial, we will be generating a self-signed SSL certificate using the OpenSSL tool and then use it to encrypt our FTP transmission.

So, first things first, you will need to use OpenSSL to generate a new SSL certificate. You can do this by entering the following command in the terminal:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem Creating a self-signed OpenSSL certificate in CentOS

Running the above command will generate a 2048-bit private key as well as a self-signed certificate. Both of these are valid for ten years and saved in the same file.

After creating your new SSL certificate, open the vsftpd configuration file using the previous command:

sudo nano /etc/vsftpd/vsftpd.conf

Scroll down and add the following lines as shown in the image:

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES Configuring SSL settings for vsftpd

And that’s it. You have successfully configured the SSL certificate for your FTP server.

6. Finalize

Once done, recheck the vsftpd configuration file to see if all the following settings are as it is:

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

After you have made sure that all the above changes have been made to the file, you will need to save it. Once saved, restart the vsftpd service using the following command:

$ sudo systemctl restart vsftpd Configure the Firewall

If you have a firewall enabled along with the FTP server, then you need to configure the firewall so that it allows the FTP transmissions.

To do this, you will need to enter the following commands into the terminal:

$ sudo firewall-cmd --permanent --add-port=20-21/tcp

The above command opens up port 21 – which is the FTP command port, and port 20 – which is the FTP data port.

You will also need to enter this command as well:

$ sudo firewall-cmd --permanent --add-port=30000-31000/tcp

This command opens up the 30000-31000 passive ports range, which we configured previously.

Allowing the vsftpd server to pass through CentOS firewall

Once done, you will need to reload the firewall using the following command:

$ firewall-cmd --reload How to Create a New FTP User

Now that you have set up your vsftpd server on your CentOS system, it is time to create a new FTP user and test it out.

First, let’s create a new FTP user (newftpuser) by using the following command:

$ sudo adduser newftpuser

Next, you will need to set a password for the new user. To do this, use this command:

$ sudo passwd newftpuser

Make sure that the password is a strong one and longer than eight characters.

Creating a new FTP user

After creating the new user, you will need to add it to the FTP user list. This can be done by entering the following command in the terminal:

$ echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

Finally, you will need to create an FTP directory tree where you will set all the correct permissions. To do this, you will need to enter the following series of commands in the terminal:

$ sudo mkdir -p /home/newftpuser/ftp/upload $ sudo chmod 550 /home/newftpuser/ftp $ sudo chmod 750 /home/newftpuser/ftp/upload $ sudo chown -R newftpuser: /home/newftpuser/ftp Create an FTP directory tree

By now, your FTP server is fully functional and ready to go. You can now connect to it using any FTP client like FileZilla. Just make sure that the FTP client can also be configured to use TLS encryption as it is being used to encrypt the FTP transmissions.

Disable Shell Access

One thing you should keep in mind when creating a new FTP user is that, unless explicitly specified, the user will have SSH access to the server.

If you wish to disable shell access from the user, you will need to create a new shell that will print a message informing the user that – “This account is limited to FTP access only.”

To do this, you will need to enter the following command in the terminal:

$ echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly $ sudo chmod a+x /bin/ftponly

The above command will create the /bin/ftponly shell and execute it.

Next, you will need to append the new shell into the list of valid shells that are located inside the /etc/shells file. This is done using the following command:

$ echo "/bin/ftponly" | sudo tee -a /etc/shells

And as the final step, all you need to do is change the user shell to /bin/ftponly using this command:

$ sudo usermod newftpuser -s /bin/ftponly

Also, for any future FTP users, you can use the same command to change their shell so that they can only have FTP access.

CentOS Vs. Ubuntu Server : Everything You Need to Know

Sunday 12th of July 2020 11:12:29 PM

Choosing the perfect Linux distribution to set up your server can be confusing since Linux provides a limitless number of options. The main reason behind these many distributions is because Linux is an opensource platform. Anybody with the required skills can contribute to the development or build and release their distribution. Currently, there are more than 600 Linux Desktop and Server distributions in the market.

Despite these many distributions, there are two principal Linux server distributions dominant in the market – CentOS and Ubuntu Server. Both are excellent choices for a server, and they both have their advantages over the other.

In this CentOS vs. Ubuntu comparison, we will look at the key features of both operating systems to guide you in choosing the right distributions for your Virtual Private Server.

Before shedding light on these two well-matched opponents’ features and services, let’s have a brief look at each of them.

Overview of CentOS centos

CentOS is an open-source Linux distribution based on RHEL or Red Hat Enterprise Linux. Red hat is a popular name in the industry and widely-supported distro by lots of corporate IT applications.

First released in May 2004, CentOS is an enterprise-class operating system whose overall development is supported by the community. Its close relation to RHEL has given it a lot more amazing features from Red Hat.

CentOS is highly stable and secure. That is made possible by the fact that CentOS enjoys official support from Red Hat. It is also highly customizable to fit your needs.

Overview of Ubuntu Server Ubuntu

The Ubuntu Server is developed by Canonical and open source developers around the world. It is based on Debian architecture. Since its first release in 2004, Ubuntu has been a perfect choice for personal and professional use. It’s an opensource operating system that gets frequent updates to fix any identified bugs.

Ubuntu is one of the easy to use Linux distro even for a newbie. It has excellent developers’ community support with a high probability that any issue arising is likely solved somewhere online.

CentOS vs. Ubuntu – Main Differences

Now let’s look at the difference between the two distributions.

1. System Core

That is one of the main differences between the two. While CentOS is forked from Red Hat Enterprise Linux (RHEL), Ubuntu is Debian-based.

2. Package management

Since both distributions are based on a different operating system, a difference in package management is expected. CentOS uses the yum command while Ubuntu Server uses apt or apt-get (for older distributions) to download and install packages.

The difference in package managers might have an impact on which distribution to go for. If you are an RHEL user, then CentOS will seem quite familiar. The same case for Ubuntu if you are a Debian user. However, if you are just getting started with Linux operating systems, the package managers shouldn’t be an issue.

3. Security, stability, and updates

Unlike Ubuntu Server, where we have regular updates and upgrades, CentOS has less frequent updates. This feature has made the latter to be considered more stable than Ubuntu. However, it also poses a drawback for CentOS as you can’t access new third-party software and packages from the CentOS official repository. You will have to download them manually. However, this doesn’t mean Ubuntu is unstable or secure – it is comparatively less stable than CentOS.

In terms of security, both systems try to provide top-notch security features.

CentOS comes pre-installed with SELinux (Security-Enhanced Linux). It’s a security mechanism available in kernels of Linux distributions like CentOS, RHEl, and Fedora Linux.

SELinux manages the overall server security by applying restrictions on how requests are processed in a server and define how users interact with sockets, ports, and directories. Additionally, SELinux enables obstructing software packages installation and can also terminate a running process on regular use.

On the other hand, Ubuntu enhances security using the AppArmor (Application Armor). AppArmor is a Kernel Security feature available for distributions like Ubuntu, Debian, and OpenSUSE. It manages server security restricting program capabilities with the per-program profile. Each program profile can allow or deny socket access, network access, and overall file permissions (Read, Write, and Execute).

Considering these two security features, SELinux seems to be much more complete and an ambitious security tool than AppArmor. While AppArmor lets you define a particular program’s capabilities and what it can or not do, SELinux is a vast universe. It permeates everything, giving the entire system a more sophisticated security infrastructure. It allows you to implement the main security paradigms in access control theory.

4. Release Cycle

CentOS has a longer release cycle and a much longer support cycle. CentOS 6, for example, was first released in 2010 and will be supported until November 2020 with five (5) minor point releases. On the other hand, Ubuntu has Long Term Support (LTS) releases, which are released every two years. These LTS releases are supported for up to 5 years.

If you are a user who values consistency and long support cycle, then CentOS is for you. And now that it is officially a part of Red Hat, it makes an excellent choice.

5. Web Hosting Services

Currently, (as of 7/2020), the popular operating systems used for Web Hosting Services are Ubuntu, Debian, and CentOS. Even though statistics show that Ubuntu server usage in hosting services is mainly for small and medium-sized business sites/servers, there is still a catch.

Google Trends Comparison

The large volume of servers using Ubuntu-Server OS’s for hosting services has proved the dominance of Ubuntu Server in the Hosting market. The graphs below from Google Trends and Stack exchange provide a graphical representation of the comparison between these two OS.

Stack Exchange comparison

If you are looking forward to using a control panel for your web hosting services, then CentOS would be a reliable option. That is because it offers several management panels necessary for hosting web management. They include; cPanel, Webmin, and DirectAdmin. These control panels are only available for RedHat systems like the CentOS.

Ubuntu doesn’t support the cPanel but comes with other alternatives like Webmin/Virtualmin and VestCP.

CentOS updates are not as regular as those of Ubuntu. That is an additional reason for its stability, but it also poses a challenge. Many of the core systems run on older software packages. To get the recently released software, you will have to do so manually. CentOS is an excellent choice if you need a cPnael for web hosting or running medium-sized businesses.

Even though CentOS has a smaller user base than Ubuntu, it still holds a strong online community and has the provision of premium services options if you so desire.

6. Software

In terms of the number of packages available, Ubuntu beats CentOS and by far. There are over ten thousand packages available for users in the official repository. CentOS, on the other hand, has only a few thousand tools. Therefore, if you are looking at the number of packages available for the two operating systems, Ubuntu will win.

However, the number of packages does not matter if you are looking for particular packages. Software packages like the cPanel are only available for Red Hat systems like CentOS. Even though Ubuntu has tried to provide alternatives, most of the CentOS tools have dominated the Hosting industry.

7. Ease of use

Among all Linux distributions, Ubuntu is one of the most user-friendly and the easiest to use. That is mainly because the Canonical team behind its development is focused more on usability. With the Ubuntu Server, you have the provision of a GUI that can be installed later and help manage your server efficiently. You can also run other utilities from the Terminal.

Another feature about Ubuntu concerning the ease of use is the large community available. You will find lots of tutorials and solutions to any problems online compared to any other distro.

CentOS also has the provision of control panel tools like the cPanel, which is useful for web hosting services. However, there are still alternatives for Ubuntu available in the market.

In terms of tutorials and guides, CentOS has very few available learning materials online compared to Ubuntu. It might seem even more overwhelming for a new Linux user. However, despite all these, most experienced Linux users go for the CentOS, especially if they are familiar with the Red Hat Linux architecture. Also, most web servers available today run on CentOS.

8. Cloud Deployment

Ubuntu is known for its excellent support for container virtualization. Since June 2019, the Canonical team behind Ubuntu development announced full enterprise support for Kubernetes 1.15 kubeadm deployments, its Charmed Kubernetes, and MicroK8s; the widespread single-node deployment of Kubernetes. That has made Ubuntu Server a more reliable operating system for cloud deployments and expanding its influence in the market.

CentOS is also not left behind in this area. It competes with Ubuntu by providing three private cloud choices and a public cloud platform through AWS. It also offers excellent documentation and a mature platform for users to apply its features further.

9. Gaming Servers

Ubuntu comes with a custom-designed pack for gamers called the Ubuntu GamePack. Ubuntu GamePack doesn’t come installed with games but with PlayOnLinux, Wine, Lutris, and the Steam client. It provides a platform to play games available for Windows, Linux, Console, and Steam.

The Ubuntu GamePack also includes support for Adobe Flash and Oracle Java. It gives users a fantastic experience while gaming online. Ubuntu GamePack is optimized to launch more than six thousand Windows and Linux games. If you have worked with Ubuntu, you can go for the Ubuntu Desktop for gaming.

Unlike Ubuntu, CentOS is not well optimized for gaming services. However, if you want to work with CentOS and still experience the gaming thrill, try Fedora Games Spin. It’s a Fedora-based platform for gaming available for CentOS, RHEL, and Fedora users. Accompanied by an XFCE Desktop environment, Fedora Games Spin comes with over two thousand Linux games.

Comparison Table Summary FeaturesCentOSUbuntu System Core
Based on RedHatBased on Debian Update CycleLess frequentOften SecurityStrongGood (Requires some additional configuration e.g AppArmor) SupportSolid documentation with a small but active communityExecllent documentation and a big, reliable support cmmunity VirtualizationCloudStack, OpenStack, OpenNebulaOpenStack Package managementYUMapt, apt-get (for older systems) StabilityStrongGood Hosting Market Share17.5% of Linux users38.2% of Linux users ManageabilityChallenging (Expert Level)Moderate (User-friendly) File StructureThey use the same basic file/folder structure but differ in system services locationThey use the same basic file/folder structure but differ in system services location Speed ConsiderationsExcellent but dependent on HardwareExcellent but dependent on Hardware Ease of UseChallenging (Expert Level)Moderate (User-friendly) Platform Focal PointGeared towards the server market and preferred by larger corporationsGeared more towards the desktop user Default applicationsUpdates as requiredRegularly updated Final Thoughts: CentOS vs. Ubuntu

Both of these operating systems are entirely open source and free to use. Depending on your needs and personal preference, you can choose any of the two distributions to manage your server.

If you are a beginner, then I would suggest you go for Ubuntu since its more comfortable to use and has lots of tutorials available. Additionally, the Ubuntu server has proven to be more powerful. If you are running anything on Amazon’s EC2 platform, the Ubuntu server would be a great choice.

If you are a Linux veteran with a good background in Red Hat Linux, go for CentOS. Also, if you are focused on offering web hosting services, then CentOS will be an excellent choice.

However, at the end of the day, your choice will highly depend on personal preference. You can make use of virtualization technology to test both of them before making a choice. Take a look at our article on The 10 Best Linux Server Distros For Home And Businesses.

Top 10 Reasons to use Xfce as your Desktop Environment

Friday 10th of July 2020 07:44:40 PM

There are many choices for desktop environments for Linux based operating systems. Mainly, you can install any DE of your choice on most of the Linux based distributions, even if they are not offered as a package officially. In our recent articles, we discussed the best of KDE and Cinnamon. In this article, we present to you the top reasons why you should consider Xfce as your desktop environment.


The Xfce desktop environment is one of the oldest GUI based DEs that became available for the Linux distributions. Started in 1996 (for reference, Linux 0.1 was released in 1991), it was started as an alternative to CDE (Common Desktop Environment) that belonged to the UNIX system. It has some very distinctive features, but the ones that stand out the most are its simplicity and lightweight nature.

Xfce is still actively in development and is one of the major DEs in the game. Despite that, Xfce receives little attention compared to specific other major DEs like GNOME or KDE. Many users think that it looks old and drive away from it instantly. While I can partially agree to that, a little tweaking can make it look quite ‘modern.’ Let us go into more in-depth details of the DE.

Manjaro XFCE Edition (17.0.5) Desktop Reasons to use Xfce as your Desktop Environment 1. Simplicity

Xfce has become quite synonymous with simplicity over the years. Just to clarify, ‘simple’ here does not mean minimal. It means that getting things done is much more comfortable. Users won’t have to look around too long to find what they want. For example, the Settings Manager is, in my opinion, the best among all other major DEs. It is straightforward and well categorized. Similar to this one example, all other components of Xfce are well structured.

Xfce Settings Manager 2. Lightweight

Another popular and important aspect of Xfce is its lightweight nature. Xfce is quite a small package and is light on the system resources as well, in most of the cases. For example, here, on idle mode, Xfce is using just ~400 Mb of RAM on my system. With Firefox open and a 1080p video playing, it went up to 1.20 GB. Not bad at all, is it?

Xfce resource usage (Top: Just booted, Bottom: With Firefox and a 1080p video running) 3. Performance

Now, as a result of everything that is already mentioned before, it translates to the fact that Xfce performs well on most hardware. It is fast, really responsive, and gets the job done. After a little experimentation and experience, users can go around the system quickly and take advantage of optimal productivity. The CPU usage at idle (or low activity) state is very minimal.

4. Modularity

The structure of Xfce is entirely modular. Most of all elements of the DE are separate, which makes the system much more configurable. For example, the default window manager is Xfwm; the configuration system is Xfconf, the desktop manager is Xfdesktop, and the session manager is Xfce4-session. These things are usually fused and not replaceable in most DEs. The settings of all components are brought together in the Settings Manager to provide a unified interface for ease.

In Xfce team’s own words:

“Xfce embodies the traditional UNIX philosophy of modularity and re-usability. It consists of a number of components that provide the full functionality one can expect of a modern desktop environment. They are packaged separately, and you can pick among the available packages to create the optimal personal working environment.”

5. Configurability

Xfce has excellent scope for configurability. From the interface to the hardware preferences, everything can be tweaked around easily. The Settings Manager covers almost everything that is required. As for the look, there are websites such as this available to get various icon themes and system themes.

6. Stability

The Xfce project is stable. There are a few bugs here and there, and they are mostly issues due to hardware drivers. System usage is quite smooth overall. The update cycle is remarkably steady. Xfce 4.14 was recently released after almost 4.5 years of development! All components of the DE work together very well to provide a smooth experience to the users.

7. Panel

One of the most distinctive features of Xfce is the panel. It is highly configurable with several plugins provided by the Xfce team. The width and height of the panel can be changed, and users can locate it on the screen as they desire. You can also place the panel in the middle of the display if that is what you want.

Panel (my daily use)

You can add as many panels as you wish. By default, one of the panels that Xfce already provides is placed as a dock on the bottom of the screen. Certain other configurations are given, like the bar opacity, icon size adjustment, etc.


The built-in plugins are excellent. They span over multiple applications and requirements. I will list some of the plugins that I find most useful:

CPU Graph plugin: This shows CPU usage graphically right on the panel. It comes in handy if you want to track how much strain any application putting on your system. I find myself looking at this plugin a lot whenever I test a new program, a new distribution based on Xfce or different hardware from my usual.

CPU Graph plugin

Pomodoro plugin: This is a great productivity plugin. The Pomodoro technique is widely used to increase one’s productivity. It follows a pattern of alternating work and rest periods. For example, 25 minutes work, 5 minutes rest. Xfce provides a plugin to keep track of time when using this technique. This brings the Pomodoro timer on the panel timer on the panel. NOTE:: This plugin is 3rd party. The link can be found here, along with the installation instructions.

Mail Watcher plugin: This plugin can be used to get notified of E-Mails from multiple services in one place.

Notes plugin: This is not a very uncommon feature, but the Notes panel plugins make it accessible on another level. The ability to create different note groups and customization of the Notes application makes it even more useful.

Verve Command-Line plugin: This is a somewhat helpful feature. Using this seemingly empty line, users can launch applications, go to websites, search using DuckDuckGo, open E-mails, and open directories altogether. Find more about it right here.

Workspace plugin: Workspaces are a great productivity feature on desktops. Xfce was one of the first DEs to adopt this feature, and hence, this feature is quite mature on Xfce. For better accessibility, you can see the workspaces right on the panel, with a miniature view of the windows opened in each one of them.

Workspaces plugin

Other than all this, the application applets appear on the panel (though Status Notifier plugin) as they would on any system.

8. Integration

All the program that you install on Xfce looks good no matter what the original DE it was developed for, or whether the graphical development kit was Qt or GTK. GTK, Qt, GNOME, Electron, etc. everything seems to delve into the system. All GTK programs run flawlessly, but with Qt programs, there are smaller issues. What if you wanted to change the theme of Qt programs? And there is the possibility that some Qt apps might be misbehaving. In that case, some programs are available for the theming and configuration of Qt apps, specifically, like Kvantum.

Integration [Leftmost: Evince (GNOME), Middle: Step (Qt5), Right: Mousepad (Xfce)] 9. Easy to Repair

No matter who you are, if you use an operating system, it will likely break once in a while unless you are incredibly regular on a very stable distribution. Maybe due to an update or perhaps due to a mistake made by the user. In other DEs, most things are integrated into each other. If you break, say, the application menu, you are probably going to have to reconfigure the whole DE again. On Xfce, as we mentioned, things are modular. If the menu breaks, reinstall just that! It is quite simple to do.

10. Xfce Components

Now we finally come out of the general features of the DE itself and onto the software components that you are going to use. The software utilities are a part of the DE itself, and when talking about a DE, we have to take them into account as well. We will thus go through some of them, one by one.

Thunar (File Manager): The default file manager of Xfce is named Thunar and is quite a capable program. It is mostly pretty with simple features like viewing items in list mode/icon mode, changing the size of items, a panel for shortcuts to other drives, partitions or folders, tab functionality, etc. It is stable and has all the basic features users need.


Catfish (Search): Catfish is the default searching application in Xfce. It is lightweight to use and quite functional. It searches through all files in the home directory and provides all necessary functionality. Users can restrict search results based on the modification date. There are two different appearances to choose from.


Xfce-Terminal (Terminal): The Xfce-Terminal has excellent functionality. There are a lot of options for appearance configuration, of course. You can change any factor of anything appearance-related. But if you want to change how your prompt looks like that are more of a job for the .bashrc file in your home directory (we do have a guide for that right here). One feature of Xfce-Terminal that is uncommon, and quite desired in the drop-down mode. Most terminal programs don’t have this, and this is a handy little feature if you know when to summon it and can be learned quickly from experience.


Mousepad (text editor): Mousepad is quick, and gets the job done. There are essential features to change the color theme, font styling, searches, etc. Mousepad does have a particular feature that makes it suitable for programming. Granted that it isn’t an IDE, but there are some basic requirements checked. There is syntax highlighting, auto-indentation, line-wrapping, highlighting matching brackets, toggling line numbering, configurable tab size, which is rare, and a great feature, etc. All of these features make it an excellent solution for programming, with a terminal included to compile/execute the program scripts.

Mousepad Popular Linux Distros using XFCE

If the reasons excite you enough to switch to XFCE desktop, there are a handful of fantastic Linux distros to choose from including Manjaro XFCE Edition, Linux Mint Xfce, Linux Lite, MX Linux, Xubuntu, Fedora Xfce Spin, and Zorin OS. All these are excellent choices to try out XFCE.


Xfce is overall a great DE. It provides a very stable, feature-filled, and forthright experience. The customization options are high, and the configuration for keyboard shortcuts and an overall personalization is excellent. It can suit all kinds of people very well, those who don’t want to look around too much to do something, and those also who make their system truly theirs. Sadly, from a recent event, we have come to know that the development of Xfce has not been very active lately. We hope that the team gets a lot of support again, and we see more fantastic progress in the future.

The 10 Best Linux Network Monitoring Tools

Thursday 9th of July 2020 02:15:36 PM

Having total control over your network is essential to prevent programs from overusing your network resources and slowing down the overall performance. This is why you should install a network monitoring tool on your system, giving you a visual overview of everything that’s happening on your network.

To help you out, we have put together a list of the ten best Linux network monitoring tools. All the tools mentioned here are open-source and follows an easy and intuitive UI (mostly command-line based) to help you monitor the bandwidth usage on your network.

Best Network Monitoring Tools for Linux

Without further ado, let’s get started.

1. IFTOP iftop

Starting off our list, we have IFTOP (Interface TOP), a simple and straightforward network monitoring tool for Linux. It is a command-line utility that can help you get a quick overview of the network activities on an interface.

It is ideal for Linux users who just want to check in why their network speed dropped all of a sudden. You will get access to a list of all the network usage bandwidth updated in real-time.

Here are some notable features worth mentioning:

  • Extremely lightweight and user-friendly
  • Ideal for single-user Linux systems
  • Follows a TOP-like command-line interface
  • Option to specify which interface you want to monitor

if you’re going to install IFTOP on your Ubuntu PC, type in the following command in your terminal.

$ sudo apt install iftop 2. VnStat VnStat

Up next, we have VnStat – another console-based utility that can help you monitor network traffic and bandwidth utilization. The tool will also give you a daily as well as a monthly overview of bandwidth consumed.

One of the best features of using this tool is that it will automatically log all the network traffic statistics by default that are still accessible even after a system reboot. This way, you can always come back at a later time and view the data to spot any abnormalities in bandwidth usage.

Some other key features include:

  • Light and minimal user interface
  • Populated statistics persist through system reboots
  • Can be used without root permission
  • Option to configure the data retention period
  • Ability to monitor multiple interfaces at the same time

Installing VnStat on your Ubuntu PC is just one command-line in the terminal.

$ sudo apt install vnstat 3. IPTraf IPTraf

IPtraf is a Ncurses-based network monitoring utility that you can use to track the incoming and outgoing network traffic. It is super easy to use and offers a lot of configuration options to help you get the exact information you are looking for.

The tool is ideal for monitoring IP traffic, viewing general network information of an interface, as well as for getting detailed interface statistics.

Here is a more detailed look at some of its key features:

  • A general statistics interface displaying a lot of insightful data
  • LAN stats module that can display network activity stats on other devices in your network
  • Supports a wide range of “network cards”
  • Supports Ethernet, FDDI, ISDN, SLIP, PPP, and loopback interface types.
  • Full-screen, menu-based usage.

If you want to install IPTraf on your Ubuntu system, you need to use the following command in your terminal.

$ sudo apt install iptraf 4. Monitorix Monitorix

Monitorix is a dedicated monitoring utility that can track both system resources and network bandwidth. You can also use the tool to monitor embedded devices as well.

The tool is powerful enough to help you track usage stats and network traffic data coming from potentially unlimited network devices. This makes it an excellent option for monitoring small to medium-scale networks.

Here is a look at some of its highlighted feature:

  • Supports both IPv4 and IPv6 connections
  • Shows packet traffic and traffic error graphs
  • Works with up to 9 discs per network interface
  • Supports an unlimited number of processors or cores.
  • Can monitor an unlimited number of devices per network

You can install Monitorix on your Ubuntu PC by typing in the following command in your terminal.

$ sudo apt install monitorix 5. bmon bmon

bmon, short for Bandwidth Monitor, is another lightweight and straightforward network monitoring and debugging tool for Linux. It can track all the network-related stats on your system and then display it in a human-friendly fashion, which makes it readily digestible.

The tool supports various output methods that allow you to visualize the stats in different ways.

Here are its key features:

  • A simple and easy to use the command-line tool
  • Displays networking related stats in a visually pleasing way
  • Option to get the networking data as a programmable text output which is easy for scripting

If you want to try out bmon on your Ubuntu system, enter the following command in your terminal.

$ sudo apt install bmon 6. Darkstat Darkstat

Darkstat is a web-based network traffic analyzer; however, you can launch it via the command line as well. It is super lightweight and will display your network traffic statistics in real-time.

The tool works by capturing network traffic information from your system, along with computer usage statistics. It then renders the data in a graphical format using HTTP. This makes it super quick to spot any sort of abnormalities in bandwidth usage.

Here we have highlighted all of its key features:

  • Comes with a web interface that can show all traffic data in graphical format over HTTP
  • Uses a child process to support asynchronous reverse DNS resolution
  • Supports both IPv4 and IPv6
  • Embedded web-server with deflate compression

To install Darkstat on your Ubuntu PC, you need to enter this command in your system terminal.

$ sudo apt install darkstat 7. iPerf

iPerf/iPerf3 is a handy networking tool that was designed to test and monitor the maximum bandwidth achievable on IP networks. It comes with a robust feature set that can help you track the network throughput over TCP, SCTP, and UDP.

That being said, the tool requires a server and a client to perform the tests. As such, it isn’t for Linux PC users who are simply looking to measure the network speeds on their system.

Here is a complete look at some of its main features:

  • Can help measure bandwidth over TCP and SCTP
  • Can help measure packet loss and delay jitter over UDP
  • Supports both IPv4 and IPv6
  • Run the server as a daemon (-D option)
  • The server handles multiple connections; doesn’t exit after a single test

To install iPerf/iPerf3 on your Ubuntu PC, just type in the following command in the terminal.

$ sudo apt install iperf3 8. CBM – (Color Bandwidth Meter) CBM – Color Bandwidth Meter

CBM, short for Color Bandwidth Meter, is a clean and simple network monitoring tool designed explicitly for Ubuntu Linux and its derivative distros.

It is essentially a little command-line tool that can display the network traffic going through all your connected devices. The displayed output is colored to make it more user-friendly. It is ideal for new Linux users who can get overwhelmed by all the data on the screen.

Here is a quick look over some of the main features:

  • Simple, uncluttered UI that’s easily understandable for beginners
  • Displays essential data, including bytes, received, bytes transmitted, and total bandwidth used.
  • All network stats are displayed in the colored output.
  • Shows network statistics of all connected devices in the network

If you are looking to install CBM on your Ubuntu system, then just enter the following command in the terminal.

$ sudo apt install cbm 9. nload nload

With nload, you have a simple console application that offers real-time monitoring of network traffic and bandwidth usage. This, too, is targeted at users of single Linux systems but can be used for small Linux networks.

The tool first collects all the network traffic data and then displays them using two graphics showing the incoming and outgoing traffic.

These are some of its highlight features worth noting:

  • Simple, easy to read interface that visualizes the output.
  • Displays graphs showing incoming and outgoing traffic. You also get the stats on the total amount of data used as well as the min/max network usage.

You can use the following command to install nload on your Ubuntu system.

$ sudo apt install nload 10. Htop Htop

Htop was developed as an alternative to the TOP (Table of Process) program designed for UNIX. It is an interactive process viewer and manager for the Unix-like system, including Linux and its popular distributions.

However, Htop is a much more advanced Linux process tracking tool than “TOP.” We have a dedicated article discussing how to use Htop, which you might find useful.

Overall, it is a powerful tool that can not only help you monitor the network activities on your system but can also kill any process that’s taking up resources without knowing the PID.

Here is a quick look at its main functionalities:

  • Lightning-fast – hence displays all the system data in a matter of seconds.
  • You can kill any process without knowing the PID.
  • Extremely user-friendly – supports mouse operations
  • Option to scroll both horizontally and vertically to see all the listed processes.

There is no need to install Htop separately on your Ubuntu system. You can invoke the tool by simply typing the following command in the terminal.

# htop Wrapping Up

So these were our picks for the ten best Linux network monitoring tools. We hope you found the list to be useful and that it helped you in finding the best network usage tracking utility for your Linux system/server.

As you can see, we have included a diverse range of tools that are suited for single Linux systems to users running a small to medium scale network. These tools should help you efficiently monitor the network activities and detect any abnormalities that might be compromising the performance.

More in Tux Machines

Today in Techrights

Games: xoreos, Vulkan, Poly Bridge 2, Unrailed! and More

  • xoreos, the FLOSS game engine for titles like Knights of the Old Republic has a new update

    xoreos is an in-development effort to create a free and open source game engine reimplementation of the BioWare Aurora Engine that powers games like Star Wars: Knights of the Old Republic. It's finally had a new release with xoreos 0.0.6 and it still seems like quite early days for games being playable. This release appears to have laid the groundwork for more improvements to come. The biggest change is that the original Knights of the Old Republic now has a partially working tutorial, it doesn't sound like a lot but for a reimplementation project it's quite a big step forwards to show what it can be capable of.

  • Vulkan API gains new extension to aid translation layers

    Today, the Vulkan API 1.2.149 spec update went out and it includes another extension that's aimed at helping translation layers like DXVK. While we don't usually comment on such minor specification updates to Vulkan, we do pick it up in cases like this where it may directly benefit compatibility layers for Linux gaming. VK_EXT_4444_formats is the new extension, which was worked on by Joshua Ashton (original creator of D9VK, now part of DXVK) for Valve and Jason Ekstrand for Intel. This is actually Ashton's second extension, following on from the release of Vulkan 1.2.140 back in May.

  • The fab physics bridge-builder Poly Bridge 2 gets a huge free content update

    Already finished Poly Bridge 2? Looks like it's time to jump back in as Dry Cactus have just released a huge free content upgrade with lots of new goodies to play with. What is Poly Bridge 2? The sequel to the hit bridge-building physics puzzler from 2016, it brings with it new levels, new mechanics, a custom physics engine, workshop campaigns, and much more. It was already fun and it's constantly improved since release with all sorts of tweaks and little extras but this update released on August 2 is on a whole different level. World 5 has been added, bringing with it the Serenity Valley location with 16 brand new levels and challenges, along with new achievements to hunt down. If that's not enough for you the Sandbox Mode was also expanded with: a new theme and vehicle type, support for duplicating multiple selected items, accurate selection for boats and planes, undo support for multiple changes and a custom shape option.

  • Unrailed! is gearing up for launch with a discount before the price goes up

    Unrailed! is an absolutely fantastic co-op game from Indoor Astronaut and Daedalic Entertainment that has you frantically build a train track to keep your train going as far as possible. It entered Early Access back in September 2019, with Linux support arriving in February 2020 and now they're looking to the near-future with a full release approaching. They've not said exactly when but they have confirmed the price will be rising, so they've put it on a reasonably big discount (42%) until August 17.

  • Community Game Night - Rexuiz - LIVE

    This is another Community Game Night stream where you guys can join me in a game for some fun and laughs. You can also join me in my Discord channel's voice chat. Tonight, I'm trying out a new (for me) first person shooter called Rexuiz. It is a fork of the old Nexuiz game, which was great (Xonotic is also forked from Nexuiz). Rexuiz is available on Linux, Mac and Windows.

  • How to Install Itch on Ubuntu and Other Linux Distributions

    Itch is a platform for independent digital creators with main focus on indie games. It was actually started as website to host, sell and download indie video games but these days, Itch also provides books, comics, tools, board games, soundtracks and more digital content from indie creators. As a user, you can download these digital content either for free or for a price set by the creator. All your downloads and purchases are synced to your account so that you can download them whenever you want.

today's howtos

Android Leftovers