Rolling in the Deep(fake)

In this era of fake news, it’s almost a given that you’ve come across videos like Jon Snow apologizing for the rather underwhelming finale episode of Game of Thrones, Mark Zuckerberg boasting of being the owner of people’s stolen data, and Steven Buscemi attending the Golden Globes wearing what people remember as Tilda Swinton’s gown. These videos have been our exposure to deepfake, the 21st century equivalent to photoshopped pictures. These videos are possible through artificial intelligence that produces fake images of events that have never happened. Most deepfakes have become tools for personalities to be embarrassed and have their reputations ruined, with some becoming effective in “fooling” unsuspecting viewers and in millennial-speak, “canceling” personalities.

Given how gullible we have all become to these fake videos, we need to inform ourselves of them lest we are fine with being unresisting victims. How they are made, how to know the difference between real and deepfake graphics, what the consequences of deepfake are, and possible solutions are some things we need to know. After all, there will come a time when technology becomes more common and accessible to just about everyone. When this time comes, deepfake will not only victimize celebrities and world-renowned personalities but even ordinary citizens like you and I. You definitely wouldn’t want to be left scratching your head when you fall target to a deepfake item.

What do you need to make a deepfake?

As of the moment, it takes a lot to produce deepfake. A standard laptop or desktop PC won’t do. You need a high-end desktop armed with professional-grade graphic cards and storage capacity. After all, one deepfake video alone may need a least 40,000 high definition pictures of the person you would like to be put in the video. HD photos are huge files that cloud storage is actually preferred. Fast computing power is also a must, or you will end up taking a month just to come up with a video that’s two minutes long. You also need tools and apps, which cost according to the quality of their outputs.

Right now, it’s actually not difficult to make deepfake videos, thanks to free apps and programs that allow even ordinary people to make them. Cost-free source codes and machine-learning algorithms are abundant online, and the only things you need to make yourself a video are time and materials.



Can you tell the difference?

Prior to 2019, when technology experts were asked how one can detect a deepfake, they will readily answer that it’s all in the eyes. Eyes in deepfake videos don’t naturally move, much less blink. After all, you can’t really see a lot of photos where a celebrity blinks or closes his or her eyes.  But then, deepfake technology is fast to provide solutions, so it was no sooner when the blinking weakness was revealed that a solution emerged.

It comes down to being super vigilant. Organizations can help by making sure employees undergo a thorough cybersecurity awareness programme that is updated frequently to inform them about the latest threats, and how to react.



Will deepfakes destroy the world?

Deepfakes are meant to embarrass, intimidate, and destabilize individuals. The best ones might send …

Read More

How to Configure NFS based Persistent Volume in Kubernetes

It is recommended to place pod’s data into some persistent volume so that data will be available even after pod termination. In Kubernetes (k8s), NFS based persistent volumes can be used inside the pods. In this article we will learn how to configure persistent volume and persistent volume claim and then we will discuss, how we can use the persistent volume via its claim name in k8s pods.

I am assuming we have a functional k8s cluster and NFS Server. Following are details for lab setup,

  • NFS Server IP =
  • NFS Share = /opt/k8s-pods/data
  • K8s Cluster = One master and two worker Nodes

Note: Make sure NFS server is reachable from worker nodes and try to mount nfs share on each worker once for testing.

Create a Index.html file inside the nfs share because we will be mounting this share in nginx pod later in article.

[[email protected] ~]$ echo "Hello, NFS Storage NGINX" > /opt/k8s-pods/data/index.html

Comfigure NFS based PV (Persistent Volume)

To create an NFS based persistent volume in K8s, create the yaml file on master node with the following contents,

[[email protected] ~]$ vim nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
  name: nfs-pv
    storage: 10Gi
  volumeMode: Filesystem
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
    - hard
    - nfsvers=4.1
    path: /opt/k8s-pods/data

Save and exit the file


Now create persistent volume using above created yaml file, run

[[email protected] ~]$ kubectl create -f nfs-pv.yaml
persistentvolume/nfs-pv created
[[email protected] ~]$

Run following kubectl command to verify the status of persistent volume

[[email protected] ~]$ kubectl get pv
nfs-pv   10Gi       RWX            Recycle          Available           nfs                     20s
[[email protected] ~]$

Above output confirms that PV has been created successfully and it is available.

Configure Persistent Volume Claim

To mount persistent volume inside a pod, we have to specify its persistent volume claim. So,let’s create persistent volume claim using the following yaml file

[[email protected] ~]$ vi nfs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
  name: nfs-pvc
  storageClassName: nfs
    - ReadWriteMany
      storage: 10Gi

Save and exit file.


Run the beneath kubectl command to create pvc using above yaml file,

[[email protected] ~]$ kubectl create -f nfs-pvc.yaml
persistentvolumeclaim/nfs-pvc created
[[email protected] ~]$

After executing above, control plane will look for persistent volume which satisfy the claim requirement with same storage class name and then it will bind the claim to persistent volume, example is shown below:

[[email protected] ~]$ kubectl get pvc nfs-pvc
nfs-pvc   Bound    nfs-pv   10Gi       RWX            nfs            3m54s
[[email protected] ~]$
[[email protected] ~]$ kubectl get pv nfs-pv
nfs-pv   10Gi       RWX            Recycle          Bound    default/nfs-pvc   nfs                     18m
[[email protected] ~]$

Above output confirms that claim (nfs-pvc) is bound with persistent volume (nfs-pv).

Now we are ready to use nfs based persistent volume nside the pods.

Use NFS based Persistent Volume inside a Pod

Create a nginx pod using beneath yaml file, it will mount persistent volume claim on ‘/usr/share/nginx/html

[[email protected] ~]$ vi nfs-pv-pod
apiVersion: v1
kind: Pod
  name: nginx-pv-pod
    - name: nginx-pv-storage
        claimName: nfs-pvc
    - name: nginx
      image: nginx
        - containerPort: 80
          name: "nginx-server"
        - mountPath: 
Read More

Exclusive Savvii Promo Codes for 2020

Savvii is a European managed WordPress hosting provider that started in 2013. Read our review here. Use one of our exclusive promo codes to get a discount on your next order. Use This Promo Code and Get €10 EUR Off Shared One Use This Code and Get €15 EUR Off the Shared Five Plan Exclusive […]


from ThisHosting.Rocks…

Read More

How to Install Cockpit Web Console on Ubuntu 20.04 Server

Cockpit is a free and open source web console tool for Linux administrators and used for day to day administrative and operations tasks. Initially Cockpit was only available for RHEL based distributions but now a days it is available for almost for all Linux distributions. In this article we will demonstrate how to install Cockpit on Ubuntu 20.04 LTS Server (focal fossa) and what administrative tasks can be performed with Cockpit Web Console.

Installation of Cockpit on Ubuntu 20.04 LTS Server

Since Ubuntu 17.04, cockpit package is available in the default package repositories. So the installation has become straight forward using apt command,

$ sudo apt update
$ sudo apt install cockpit -y


Once cockpit package is installed successfully then start its service using the following systemctl command,

$ sudo systemctl start cockpit

Run the following to verify the status of cockpit service,

$ sudo systemctl status cockpit


Above output confirms that cockpit has been started successfully.

Access Cockpit Web Console

Cockpit listen its service on 9090 tcp port, in case firewall is configured on your Ubuntu server 20.04 then you have to allow 9090 port in firewall.

[email protected]:~$ ss -tunlp | grep 9090
tcp   LISTEN  0       4096                  *:9090               *:*
[email protected]:~$

Run following ‘ufw’ command to allow cockpit port in OS firewall,

[email protected]:~$ sudo ufw allow 9090/tcp
Rule added
Rule added (v6)
[email protected]:~$

Now access Cockpit web console using following url:



Use the root credentials or sudo user credentials to login, in my case ‘pkumar’ is the sudo user for my setup.


Perfect above screen confirms that we have successfully able to access and login cockpit dashboard. Let’s see what are the different administrative task that can be performed from this dashboard.

Administrative Task from Cockpit Web Console on Ubuntu 20.04 LTS Server

When we first time login to dashboard, it shows basic information about our system like package updates, RAM & CPU utilization and Hardware and system configuration etc.

1)    Apply System Updates

One of important administrative task is to apply system updates, from cockpit web console we can easily do this, go to the ‘System Updates’ option where we you will get the available updates for your system, example is shown below,


If you wish to install all available updates, then click on “Install All Updates” option


We will get the message on the screen to reboot the system after applying the updates. So, go ahead and click on “Restart System”

2)    Managing KVM Virtual Machine with cockpit

It is also possible that we can manage KVM VMs using cockpit web console but by default ‘Virtual Machine’ option is not enabled. To enable this option install ‘cockpit-machines’ using apt command,

$ sudo apt install cockpit-machines -y

Once the package is installed then logout and login to Cockpit console.


3)    View System Logs

From the ‘Logs’ tab we can view our system logs. System logs can also be viewed based on its severity.


4)    Manage Networking with Cockpit

System networking can easily be managed via networking tab from cockpit web console. Here we can view our system Ethernet cards speed. We have the features like creating bonding and bridge interface. Apart from this we …

Read More

How to Install and Configure Jenkins on Ubuntu 20.04

Automation of tasks can be quite tricky especially where multiple developers are submitting code to a shared repository. Poorly executed automation processes can often lead to inconsistencies and delays. And this is where Jenkins comes in.  Jenkins is a free and opensource continuous integration tool that’s predominantly used in the automation of tasks. It helps to streamline the continuous development, testing and deployment of newly submitted code.

In this guide, we will walk you through the installation and configuration of Jenkins on Ubuntu 20.04 LTS system.

Step 1:  Install Java with apt command

Being a Java application, Jenkins requires Java 8 and later versions to run without any issues. To check if Java is installed on your system, run the command:

$ java --version

If Java is not installed, you will get the following output.


To install Java on your system, execute the command:

$ sudo apt install openjdk-11-jre-headless


After the installation, once again verify that Java is installed:

$ java --version


Perfect! We now have OpenJDK installed. We can now proceed.

Step 2:  Install Jenkins via its official repository

With Java installed, we can now proceed to install Jenkins. The second step is to import the Jenkins GPG key from Jenkins repository as shown:

$ wget -q -O - | sudo apt-key add -

Next, configure Jenkins repository to the sources list file as shown.

$ sudo sh -c 'echo deb binary/ > /etc/apt/sources.list.d/jenkins.list'

Next, update the system’s package list.

$ sudo apt update

And install Jenkins as follows.

$ sudo apt install jenkins


Once the installation is complete, Jenkins should start automatically. To confirm this, run the command:

$ sudo systemctl status jenkins


If by any chance Jenkins is not running, execute the following command to start it.

$ sudo systemctl start jenkins

Step 3: Configuring the firewall rules for Jenkins

As we have seen, Jenkins natively listens on port 8080, and if you have installed Jenkins on a server with UFW enabled, you need to open that port to allow traffic.

To enable firewall on Ubuntu 20.04 LTS run,

$ sudo ufw enable

To open port 8080 on ufw firewall, run the command:

$ sudo ufw allow 8080/tcp

Then reload the firewall to effect the changes.

$ sudo ufw reload

To confirm that port 8080 is open on the firewall, execute the command:

$ sudo ufw status


From the output, we can clearly see that Port 8080 has been opened on the system.

Step 4:  Configure Jenkins with GUI

We are almost done now. The only thing remaining is to set up Jenkins using your favorite browser. So, head over to the URL bar and browse your server’s address as shown:


To check your server’s IP address, use the ifconfig command.


You will get the page similar to what we have below prompting you to provide the Administrator’s password. As per the instructions, the password is located in the file:



To view the password, simply switch to root user and use the cat command as shown:

$ cat /var/lib/jenkins/secrets/initialAdminPassword


Copy the password and paste it in the text field shown and click the “Continue” button.


In the next step, select ‘Install suggested plugin‘ for simplicity’s sake.


Thereafter, the installation of …

Read More

Getting Financially Fit Even During a Lockdown

While our ancestors have braved pandemics before and we have also had our fair share of crises and dealing with them, I do not think the world has faced a disaster of this magnitude. The various ways we cope with the COVID-19 calamity are quite pragmatic, as this is the first time we are facing problems like this. There is no blanket, one-size-fits-all solution yet, so we try to manage the best we can.  But then, there may be suggestions on how we can secure our survival that we can all try and apply. Thousands are losing their means of income with mass layoffs happening daily. Businesses have contracted, with some deciding to shut off permanently.  We can try and extend a hand to everyone in need of help, but before we can do that, we need to look out for ourselves as well. After all, if we are not that strong ad secure financially, how can we help others?

Thus, with still months (and even years, according to some) to go before we adopt a “new normal”, let us assess ourselves and see whether we can be confident with our state of fiscal being. That way, we can ease mental stress, focus our energies on the more important things such as keeping physically healthy, and be our full selves so we can possibly have something to give other people. Here are some ways we can be assured of strong financial health during this COVID-19 crisis.


Try to scrap unnecessary expenses

As you may already be working from home for the past weeks, if not months, try to do an inventory of your expenses since the lockdown started. See which areas you can cut down and calculate how much you can save. Be detailed down to the last cent. Remember, you should already have been saving on gas and transportation costs since you haven’t been using your car anywhere. But then, you might already have been using your savings to buy something online or add to the grocery budget. Set aside these savings instead of funneling them on things you don’t necessarily need.

There are ways to boost your saving skills while you’re stuck at home, though, to get your finances looking a little healthier (even if only to blow everything you have on holidays, pub trips, and fast food the second this is all over).



Get reminded of how important an emergency fund is

Remember when you were encouraged to set aside a portion of your income so that you can have something “for a rainy day’? Well, that rainy day is the present, with people losing jobs and getting their salaries cut. If you don’t have an emergency fund, start as soon as possible. Three to six months of what you usually earn a month would be best practice for an emergency fund. And if you have this fund already, congratulations! Just make sure you don’t spend your emergency fund on frivolous and unnecessary things.

An emergency fund forms the basis of financial security in any household. Having one has become even more important in light of the Covid-19 pandemic. In case you haven’t created one yet, you have little time to lose.

Read More

Linux Zip and Unzip Command with Examples

In this tutorial, we touch base on the zip and unzip commands and how they are used in Linux. Zip is a command used for creating an archive file or a zipped file. This allows you to compress your files and create more space for other files on your hard drive or removable drive. Additionally, zipping your files/directories makes them more portable and easier to upload, download or even attach and send them via email.The opposite of zipping is unzipping, and here we use the unzip command to decompress the files and access them individually.

Before start discussing zip and unzip command, let’s see how these commands can be installed from command line,

Install zip & unzip command on Ubuntu / Debian / Linux Mint

Open the terminal and run the following apt command,

$ sudo apt install -y zip unzip
$ sudo apt-get install -y zip unzip

Install zip & unzip command on CentOS / RHEL / Fedora

Open the terminal and execute the beneath command,

$ sudo yum install -y zip unzip
$ sudo dnf install -y zip unzip

Let’s dive in and see how to zip and unzip files and directories in Linux with zip and unzip command with examples.

Zip command in Linux

Zipping a file is as easy as ABC. The syntax is quite straightforward:

$ zip OPTIONS file

A few points to take into consideration before you proceed:

  • You need to have write permissions on the file you are zipping and the directory location before zipping a file.
  • When you unzip or extract a file, the user owns the file/directory.

Example 1) Zipping a single file and multiple files with zip command

Let’s assume you have a text file – reports1.txt – in your current directory and you want to zip it into an archive called

The command for this operation will be:

$ zip reports1.txt


Additionally, you can zip multiple files at a go into an archive as shown:

$ zip file1 file2 file3

Again, let’s assume that we have 3 text files reports1.txt, reports2.txt and reports3.txt. To zip them into the archive, run the command:

$ zip reports1.txt reports2.txt reports3.txt


Example 2) Adding a file to a zip archive (-u)

At times, you may find the need to add a file to a zip archive. To do so, use the -u flag. For example, to add another file reports4.txt, run:

$ zip -u report4.txt


Example 3) View contents of a zipped file

To view contents of a zipped file, use the command as shown:

$ zipinfo


Example 4) Zipping all the files in the current directory (* )

If you have multiple files in your current directory, you can zip all of them at a go using the wildcard symbol as shown in the syntax below:

$ zip *

For example, to compress all files in the home directory to archive, execute the command below. Be sure that you are working in the home directory.

$ zip *


Example 5) Delete a file from an archive (-d)

To remove a file from an archive, invoke the -d flag. For instance, to remove reports4.txt from the zipped …

Read More

Introduction to Web Hosting Bandwidth

One of the first things to do in the entire process of building a website is to purchase both a domain name and a hosting plan. The options for a domain name is pretty vast, as long as it has not been used or bought by someone else. When it comes to a hosting plan, […]


from ThisHosting.Rocks…

Read More

What Will the New Normal Be Like?

We are indeed living in some of the most interesting times. There have been some events in the history of the human race that has changed the way we live, that is true, but these happenings took years to effect drastic changes. Wars raged on for years before affecting the entire world, whole continents used to be spared from medical pandemics. Now, COVID-19 has affected each and single country directly or indirectly. In a matter of weeks, the way we lived has changed. What is exciting and a bit scary is that months from now when we will eventually come out of our lockdowns and quarantines, there is a huge possibility that there will be no going back from the way we live only months ago.

The new normal as pundits have coined the period pos-COVID-19, will indeed be new and will be markedly different from how we used to do things in February. The COVD-19 pandemic is one for the history books – so devastatingly major that we humans may already define our lives as everything that happened pre-COVID and months from now, post-COVID. This can be both good and bad. The environment’s condition has improved, we now have a deeper appreciation for personal relationships, health has become a priority. But then, freedoms we used to take for granted such as mobility and assembly have been curtailed. The new normal does have pros and cons to it.

Our current lockdown situations are serving as a dry run for the major effects the COVID-19 will eventually impose on our lives after its reign. The question is, are you ready for this “new normal”? Here are some changes you need to be aware of now:

Commerce and the nature of work

Not only has this pandemic changed the nature of business and work, it has forced some of its facets to mature. COVID-19 has created a survival of the fittest scenario among commercial and work practices, and what remains will not only survive, but will compose what will be the “new normal.” And we realize that some of our pre-COVID habits are actually impractical and don’t make sense, so that’s good. After all, there’s really no need to constantly use the ATM and get cash, drive to a store to buy things, and use your cash to pay for your purchases when you can have anything delivered to your house. Why waste an hour of two to commute to work when you can finish everything at home and even extend your work hours for an hour or two?

So, perhaps the conversation that we should be having as a society isn’t about where we are going to work after the post-covid dust settles, it should be how we are going to work.



Healthcare gets the spotlight

Even before COVID-19 started wreaking havoc, the health sector has already been subject to huge structural pressures and undergoing rapid advances in technology. For one, the global population, particularly in Europe and East Asia is ageing, posing a major challenge to governments in ramping up efforts for elderly care and geriatric medicine. COVID-19 has been overwhelming healthcare facilities anew, not to mention presenting a new race for experts to produce a …

Read More

How to Enforce Password Policies in Linux (Ubuntu / CentOS)

As much as Linux is considered a secure operating system, its security is just as good as the password strength of login users. Password policies exist to ensure that a strong password is set for users and as a Linux user, you should be mindful to enforce these policies to make it difficult for breaches to occur. You surely don’t want users configuring weak or guessable passwords which can be brute forced by hackers in a matter of seconds.

In this article, we touch base on how to enforce password policies in Linux, more specifically CentOS and Ubuntu. We will cover enforcing password policies such as password expiration period, password complexity and password length.

Enforce Password Policies in Ubuntu / Debian

There are 2 main ways that you can enforce password policies. Let’s take a look at each in detail.

1) Configure the maximum number of days that a password can be used

For start, you can configure a password policy that requires users to change their passwords after a certain number of days. Best practice dictates that a password should be changed periodically to keep malicious users off-kilter and make it harder for them to breach your system. This applies not just in Linux but in other systems such as Windows and macOS.

To achieve this In Debian/Ubuntu, you need to modify the /etc/login.defs file and be on the lookout for the PASS_MAX_DAYS attribute.

By default, this is set to 99,999 days as shown.


You can modify this to a reasonable duration, say, 30 days. Simply set the current value to 30 as shown and save the changes. Upon lapsing of the 30 days, you will be compelled to create another password.


2) Configure Password complexity with pam

Ensuring that password meets a certain degree of complexity is equally crucial and further thwarts any attempts by hackers to infiltrate your system using brute force.

As a general rule, a strong password should have a combination of Uppercase, lowercase, numeric and special characters and should be at least 12-15 characters long.

To enforce password complexity in Debian / Ubuntu systems, you need to install  the libpam-pwquality package as shown:

$ sudo apt install libpam-pwquality


Once installed, head out to the /etc/pam.d/common-password file from where you are going to set the password policies. Be default, the file appears as shown:


Locate the line shown below

password   requisite retry=3

Add the following attributes to the line:

minlen=12 maxrepeat=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=4 reject_username enforce_for_root

The entire line should appear as shown:


Let’s flesh out what these directives stand for:

  • retry=3: This option will prompt the user 3 times before exiting and returning an error.
  • minlen=12: This specifies that the password cannot be less than 12 characters.
  • maxrepeat=3: This allows implies that only a maximum of 3 repeated characters can be included in the password.
  • ucredit=-1: The option requires at least one uppercase character in the password.
  • lcredit=-1: The option requires at least one lowercase character in the password.
  • dcredit=-1: This implies that the password should have at last a numeric character.
  • ocredit=-1: The option requires at least one special character included in the password.
  • difok=3: This implies that only a  maximum of
Read More