Ubuntu 18.04 install WordPress

sudo apt update
sudo apt upgrade -y
sudo apt install apache2 mysql-server php php-mysql libapache2-mod-php php-curl -y  

Download the latest version of WordPress

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
sudo mv wordpress /var/www/
sudo chown -R www-data: /var/www/wordpress

Now configure the site

cd /etc/apache2/sites-available
sudo cp 000-default.conf wordpress.conf
cd ../sites-enabled
sudo ln -s ../sites-available/wordpress.conf . 
sudo vim wordpress.conf

Edit the content

 <VirtualHost *:80>
   ServerName wordpress.oofnivek.com
   ServerAdmin [email protected]
   DocumentRoot /var/www/wordpress
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
   <Directory /var/www/wordpress>
     Options Indexes FollowSymLinks MultiViews
     AllowOverride All
     Require all granted

Enable rewrite module and restart Apache

sudo a2enmod rewrite
sudo systemctl restart apache2

Configure MySQL

sudo mysql -uroot
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
SELECT user,host,plugin FROM mysql.user;
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Lastly point wordpress.oofnivek.com to the server IP

Git commands

To clone a project, use the command below. Sample command below clone from a dummy repository I had created.

git clone https://github.com/oofnivek/dummy-repository.git

To set your git configurations for all projects.

git config --global user.name "Kevin FOO"
git config --global user.email "[email protected]"
git config --global core.editor "vim"

To edit the configurations in the git global setting file.

git config --global --edit

Say you had your changes made, add/edit/delete. To commit your changes, use commands below.

git add .
git commit
git push

Ubuntu install puppeteer

Installing puppeteer into a fresh AWS EC2 Ubuntu 18.04 and its dependencies.

sudo apt update
sudo apt upgrade
sudo apt install npm
npm i puppeteer

Now run a simple puppeteer script and you will encounter errors about missing shared libraries. A simple script below, lets name it simple.js

const puppeteer = require('puppeteer');
async function run () {
   const browser = await puppeteer.launch({
      defaultViewport: {width: 1920, height: 1080}
   const page = await browser.newPage();
   await page.goto('https://www.google.com/search?q=bitcoin');
   await page.screenshot({path: 'screenshot.png'});
node simple.js

Now install the dependencies and rerun.

sudo apt install libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi-dev libxtst-dev libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libgtk-3-0

Simple puppeteer script to google for search results.

const puppeteer = require('puppeteer');
 const fs = require("fs");
 async function run () {
   const browser = await puppeteer.launch({
     defaultViewport: {width: 1920, height: 1080}
   const page = await browser.newPage();
   await page.goto('https://www.google.com');
   await page.waitFor('input[class="gLFyf gsfi"]');
   await page.$eval('input[class="gLFyf gsfi"]', el => el.value = 'bitcoin');
   await page.$eval('input[class="gNO89b"]', el => el.click());
 await page.waitForSelector('div#result-stats');
   await page.screenshot({ path: 'screenshot.png' });
 const html = await page.content()
   fs.writeFileSync("page.html", html);

Ubuntu install squid

Setting up undetectable proxy in a fresh new Ubuntu 18.04 in AWS EC2

sudo apt update
sudo apt upgrade
sudo apt install squid apache2-utils 

Create a credential file and add user.

sudo touch /etc/squid/passwd
sudo chown proxy: /etc/squid/passwd
sudo htpasswd /etc/squid/passwd oofnivek

Edit the configuration file at /etc/squid/squid.conf . Change the settings to the following below

forwarded_for delete
via off
request_header_access Cache-Control deny all 

Right below the acl ports. Add these.

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Restart squid for changes to take effect.

sudo systemctl restart squid

Ubuntu install golang

As usual, before installing anything in Ubuntu, run

sudo apt update
sudo apt upgrade

Once done, you can start installing golang. The easiest method to install using the below command.

sudo apt install golang-go

Next is to test if you had successfully install golang. Create a hello.go file, paste the contents below into the hello.go file and save it.

package main

import "fmt"

func main() {
    fmt.Println("hello world")

To execute the file, run the command below.

go run hello.go

Ubuntu install sysstat

Ubuntu install sysstat

sudo apt install sysstat

Once installation completed, enable sysstat by setting the value to true.

sudo vim /etc/default/sysstat


After that restart the sysstat service

sudo service sysstat restart

By default sysstat sample the CPU usage every 10 minutes at 5, 15, 25, 35, 45 and 55 minutes of the hour. To modify it,

sudo vim /etc/cron.d/sysstat


Viewing the stats

To view latest stats


To view yesterday’s stats

sar -f /var/log/sysstat/sa$(date +%d -d 'yesterday')

To view specific date stats

sar -f /var/log/sysstat/sa$(date +%d -d '2019-04-27')


Ubuntu install Plex media server

Ubuntu install Plex media server

Go to Plex website to get the download URL


cd /tmp
wget https://downloads.plex.tv/plex-media-server/
sudo dpkg -i plexmediaserver_1.14.1.5488-cc260c476_amd64.deb
systemctl status plexmediaserver


Go to and start configuring your Plex

Assuming that the videos are in your external hard disk connected to your Ubuntu desktop. You’ll need to run these commands to give user plex to access your drive.

sudo usermod -a -G $MYGROUP plex
sudo chown $USER:$MYGROUP /media/$USER
sudo chmod 750 /media/$USER
sudo setfacl -m g:$MYGROUP:rwx /media/$USER
sudo service plexmediaserver restart

to check your group or the group user plex is in

groups plex


Ubuntu disable sleep on lid close

Ubuntu disable sleep on lid close

I prefer to install Ubuntu Desktop version instead of Ubuntu Server version because it takes care of all the drivers for my laptop. After the installation I’ll disable the GUI.

The screen will stay on at the login prompt and since it is a laptop, there isn’t a power off for the monitor only. Closing the lid will cause the laptop to sleep.

To prevent it from going to sleep. Do these.


Uncomment the 2 lines below and set it to ignore.


Lastly restart the service.

sudo service systemd-logind restart


Ubuntu 18.04 install MySQL Server

Ubuntu 18.04 install MySQL Server

Installation for MySQL is slightly different in 18.04 as compared to 16.04.

sudo apt update
sudo apt install mysql-server -y
sudo mysql -uroot

Now in MySQL console, type the following to check the users.

select user,host,plugin from mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';
update mysql.user set host='%' where user='root';

Comment the line bind-address if you like to listen on all addresses.

sudo service mysql restart