For those who seek help in different areas of software and hardware platform.

How To Install Node.JS on Ubuntu 18.04


Node.js is a JavaScript platform for general-purpose programming that allows users to build network applications quickly. By leveraging JavaScript on both the front and backend, Node.js makes development more consistent and integrated.
Share:

How To Secure Apache Web Server using Let's Encrypt on Ubuntu 18.04


Let's Encrypt is a Certificate Authority (CA) that provides an easy way to obtain and install free TLS/SSL certificates, thereby enabling encrypted HTTPS on web servers. It simplifies the process by providing a software client, Certbot, that attempts to automate most (if not all) of the required steps. Currently, the entire process of obtaining and installing a certificate is fully automated on both Apache and Nginx.
Share:

How to Install Apache Web Server on Ubuntu 18.04


The Apache HTTP server is the most widely-used web server in the world. It provides many powerful features including dynamically loadable modules, robust media support, and extensive integration with other popular software.
Share:

How To Secure Nginx using Let's Encrypt on Ubuntu 18.04


Let's Encrypt is a Certificate Authority (CA) that provides an easy way to obtain and install free TLS/SSL certificates, thereby enabling encrypted HTTPS on web servers. It simplifies the process by providing a software client, Certbot, that attempts to automate most (if not all) of the required steps. Currently, the entire process of obtaining and installing a certificate is fully automated on both Apache and Nginx.
Share:

How To Set Up Nginx on Ubuntu 18.04


Nginx is one of the most popular web servers in the world and is responsible for hosting some of the largest and highest-traffic sites on the internet. It is more resource-friendly than Apache in most cases and can be used as a web server or reverse proxy.
Share:

How To Set Up Password-less SSH on Ubuntu 18.04


SSH, or secure shell, is an encrypted protocol used to administer and communicate with servers. When working with an Ubuntu server, chances are you will spend most of your time in a terminal session connected to your server through SSH.
Share:

How To Set Up LAMP (Linux, Apache, MySQL, PHP) on Ubuntu 18.04


A "LAMP" stack is a group of open source software that is typically installed together to enable a server to host dynamic websites and web apps. This term is actually an acronym which represents the Linux operating system, with the Apache web server. The site data is stored in a MySQL database, and dynamic content is processed by PHP.
Share:

Basic Server Setup with Ubuntu 18.04


When you first create a new Ubuntu 18.04 server, there are a few configuration steps that you should take early on as part of the basic setup. This will increase the security and usability of your server and will give you a solid foundation for subsequent actions.
Share:

How To Upgrade Ubuntu 16.04 to Ubuntu 18.04

The Ubuntu operating system's latest Long Term Support (LTS) release, Ubuntu 18.04 (Bionic Beaver), was released on April 26, 2018. This tutorial will explain how to upgrade an Ubuntu system of version 16.04 or later to Ubuntu 18.04.
Share:

What's New in Ubuntu 18.04

The Ubuntu operating system's most recent Long Term Support (LTS) release, version 18.04 (Bionic Beaver), was released on April 26, 2018. This article is intended as a brief overview of new features and significant changes to Ubuntu Server since the previous LTS release, 16.04 (Xenial Xerus). It synthesizes information from the official Bionic Beaver release notes and other sources.
Share:

How To Set Up Kubernetes Cluster using Kubeadm on Ubuntu 16.04

This guide will show you how to set up a Kubernetes cluster from scratch using Ansible and Kubeadm, and then deploy a containerized Nginx application to it.

Kubernetes is a container orchestration system that manages containers at scale. Initially developed by Google based on its experience running containers in production, Kubernetes is open source and actively developed by a community around the world.
Share:

How to Set Up Ansible on Ubuntu 16.04

Configuration management systems are designed to make controlling large numbers of servers easy for administrators and operations teams. They allow you to control many different systems in an automated way from one central location.

While there are many popular configuration management systems available for Linux systems, such as Chef and Puppet, these are often more complex than many people want or need. Ansible is a great alternative to these options because it has a much smaller overhead to get started.

This guide will show you how to install and use Ansible on Ubuntu 16.04.


How Does Ansible Work?
Ansible works by configuring client machines from an computer with Ansible components installed and configured.

It communicates over normal SSH channels in order to retrieve information from remote machines, issue commands, and copy files. Because of this, an Ansible system does not require any additional software to be installed on the client computers.

This is one way that Ansible simplifies the administration of servers. Any server that has an SSH port exposed can be brought under Ansible's configuration umbrella, regardless of what stage it is at in its life cycle.

Any computer that you can administer through SSH, you can also administer through Ansible.

Ansible takes on a modular approach, making it easy to extend to use the functionalities of the main system to deal with specific scenarios. Modules can be written in any language and communicate in standard JSON.

Configuration files are mainly written in the YAML data serialization format due to its expressive nature and its similarity to popular markup languages. Ansible can interact with clients through either command line tools or through its configuration scripts called Playbooks.


Prerequisites
To follow this guide, you will need One Ubuntu 16.04 server with a sudo non-root user and SSH keys.


Installing Ansible
To begin exploring Ansible as a means of managing our various servers, we need to install the Ansible software on at least one machine. We will be using an Ubuntu 16.04 server for this section.

The best way to get Ansible for Ubuntu is to add the project's PPA (personal package archive) to your system. We can add the Ansible PPA by typing the following command:

    sudo apt-add-repository ppa:ansible/ansible

Press ENTER to accept the PPA addition.

Next, we need to refresh our system's package index so that it is aware of the packages available in the PPA. Afterwards, we can install the software:

    sudo apt-get update
    sudo apt-get install ansible

As we mentioned above, Ansible primarily communicates with client computers through SSH. While it certainly has the ability to handle password-based SSH authentication, SSH keys help keep things simple. You can follow the tutorial linked in the prerequisites to set up SSH keys if you haven't already.

We now have all of the software required to administer our servers through Ansible.


Configuring Ansible Hosts
Ansible keeps track of all of the servers that it knows about through a "hosts" file. We need to set up this file first before we can begin to communicate with our other computers.

Open the file with root privileges like this:

    sudo nano /etc/ansible/hosts

You will see a file that has a lot of example configurations, none of which will actually work for us since these hosts are made up. So to start, let's comment out all of the lines in this file by adding a "#" before each line.

We will keep these examples in the file to help us with configuration if we want to implement more complex scenarios in the future.

Once all of the lines are commented out, we can begin adding our actual hosts.

The hosts file is fairly flexible and can be configured in a few different ways. The syntax we are going to use though looks something like this:

[group_name]
alias ansible_ssh_host=your_server_ip

The group_name is an organizational tag that lets you refer to any servers listed under it with one word. The alias is just a name to refer to that server.

So in our scenario, we are imagining that we have three servers we are going to control with Ansible. These servers are accessible from the Ansible server by typing:

    ssh root@your_server_ip

You should not be prompted for a password if you have set this up correctly. We will assume that our servers' IP addresses are 192.0.2.1, 192.0.2.2, and 192.0.2.3. We will set this up so that we can refer to these individually as host1, host2, and host3, or as a group as servers.

This is the block that we should add to our hosts file to accomplish this:

[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3

Hosts can be in multiple groups and groups can configure parameters for all of their members. Let's try this out now.

With our current settings, if we tried to connect to any of these hosts with Ansible, the command would fail (assuming you are not operating as the root user). This is because your SSH key is embedded for the root user on the remote systems and Ansible will by default try to connect as your current user. A connection attempt will get this error:

host1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

On the Ansible server, we're using a user called demo. Ansible will try to connect to each host with ssh demo@server. This will not work if the demo user is not on the remote system.

We can create a file that tells all of the servers in the "servers" group to connect using the root user.

To do this, we will create a directory in the Ansible configuration structure called group_vars. Within this folder, we can create YAML-formatted files for each group we want to configure:

    sudo mkdir /etc/ansible/group_vars
    sudo nano /etc/ansible/group_vars/servers

We can put our configuration in here. YAML files start with "---", so make sure you don't forget that part.

ansible_ssh_user: root

Save and close this file when you are finished.

If you want to specify configuration details for every server, regardless of group association, you can put those details in a file at /etc/ansible/group_vars/all. Individual hosts can be configured by creating files under a directory at /etc/ansible/host_vars.


Using Simple Ansible Commands
Now that we have our hosts set up and enough configuration details to allow us to successfully connect to our hosts, we can try out our very first command.

Ping all of the servers you configured by typing:

    ansible -m ping all

host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

host3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

This is a basic test to make sure that Ansible has a connection to all of its hosts.

The "all" means all hosts. We could just as easily specify a group:

    ansible -m ping servers

We could also specify an individual host:

    ansible -m ping host1

We can specify multiple hosts by separating them with colons:

    ansible -m ping host1:host2

The -m ping portion of the command is an instruction to Ansible to use the "ping" module. These are basically commands that you can run on your remote hosts. The ping module operates in many ways like the normal ping utility in Linux, but instead it checks for Ansible connectivity.

The ping module doesn't really take any arguments, but we can try another command to see how that works. We pass arguments into a script by typing -a.

The "shell" module lets us send a terminal command to the remote host and retrieve the results. For instance, to find out the memory usage on our host1 machine, we could use:

    ansible -m shell -a 'free -m' host1

host1 | SUCCESS | rc=0 >>
             total       used       free     shared    buffers     cached
Mem:          3954        227       3726          0         14         93
-/+ buffers/cache:        119       3834
Swap:            0          0          0


Wrapping up
By now, you should have your Ansible server configured to communicate with the servers that you would like to control. We have verified that Ansible can communicate with each host and we have used the ansible command to execute simple tasks remotely.
Share:

How To Set Up SSH Servers, Clients, and Key-Pair

SSH is a secure protocol used as the primary means of connecting to Linux servers remotely. It provides a text-based interface by spawning a remote shell. After connecting, all commands you type in your local terminal are sent to the remote server and executed there.

This can be used as a quick reference when you need to know how to do connect to or configure your server in different ways.
Share:

How To Set Up Docker on Ubuntu 16.04

Docker is an application that makes it simple and easy to run application processes in a container, which are like virtual machines, only more portable, more resource-friendly, and more dependent on the host operating system.

There are two methods for installing Docker on Ubuntu 16.04. One method involves installing it on an existing installation of the operating system. The other involves spinning up a server with a tool called Docker Machine that auto-installs Docker on it.

This guide will show you how to install and use Docker on Ubuntu 16.04.
Share:

How To Set Up LEMP Stack using Software Collections Repository on CentOS/RHEL 7


This tutorial will walk you through the steps to set up a LEMP stack on CentOS/RHEL 7.
Share:

Introducing Windows Defender System Guard Runtime Attestation


At Microsoft, we want users to be in control of their devices, including knowing the security health of these devices. If important security features should fail, users should be aware. Windows Defender System Guard runtime attestation, a new Windows platform security technology, fills this need.
Share:

How To Deploy a Firewall using a Free Open Source IPFire

IPFire is a hardened, versatile, state-of-the-art Open Source firewall based on Linux. This tutorial will show you how to deploy a firewall using free and open source IPFire.

Share:

How To Connect to Wi-Fi using Command-line in Ubuntu/CentOS/RHEL

There are several tools for managing a wireless network interface on Linux but my favorite one is nmcli, a command-line tool used to create, show, edit, delete, enable, and disable network connections, as well as control and display network device status.

This tutorial will show you how to connect and manage Wi-Fi network interfaces using nmcli tool on any Linux distribution.
Share:

How to Set Up SSH Password-less Authentication on Ubuntu 16.04

Ubuntu 16.04 SSH Keys

SSH, or secure shell, is an encrypted protocol used to administer and communicate with servers. When working with an Ubuntu server, chances are you will spend most of your time in a terminal session connected to your server through SSH.

This tutorial will show you how to set up password-less authentication using SSH key-pair on Ubuntu 16.04.
Share:

How To Set Up SSH Password-less Authentication on CentOS/RHEL 7

CentOS 7 Server SSH Keys Set Up

SSH, or secure shell, is an encrypted protocol used to administer and communicate with servers. When working with a CentOS server, chances are, you will spend most of your time in a terminal session connected to your server through SSH.

This guide will show you how to generate SSH key-pair to set up password-less authentication on CentOS/RHEL 7.
Share:

How To Improve Your Website Response using WebP Images

For this guide, we'll use the command-line tool cwebp to convert images into WebP format, creating scripts that will watch and convert images in a specific directory. Lastly, we'll show you two ways to serve WebP images to your visitors.
Share:

Microsoft Releases Windows Admin Center Tool


Microsoft has officially released Windows Admin Center, a free tool that promises to streamline how administrators manage their Windows Server and Windows 10 systems.
Share:

Video Tutorials