Install GoAccess (Ubuntu 18.04)

$ sudo apt install goaccess

For the latest version:

$ echo "deb $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
$ wget -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install goaccess

Install the dependencies:

$ sudo apt-get install libgeoip-dev libncursesw5-dev


Basic usage: simple GET method

This will make a GET request to the given URL and print response to stdout.

$ curl

Ignore invalid and self-signed SSL connection errors with curl

Use -k or --insecure option

$ curl -k

Print response headers

Use -i option to print response headers and the response itself, -I option to omit the response and print response headers only.


There are many benefits you can get when using Nginx to proxy your S3 (and others) files, such as:

  • Proxy cache to leverage browser caching
  • URLs masking that helps a lot in case you change cloud provider later
  • Speed up transferring by offload SSL/TLS

This tutorial helps you through…

Installing Docker

From official docs:

Uninstalling old versions:

sudo apt-get remove docker docker-engine containerd runc

Set up the respository

sudo apt update

Install packages to allow apt to use a repository over HTTPS:

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \

Add Docker’s official GPG…

Let’s Encrypt is a Certificate Authority (CA) that provides an easy way to obtain and install free TLS/SSL certificates for enabling encrypted HTTPS on web servers. It simplifies the process by providing a software client, Certbot, that attempts to automate most of the required steps for both Apache and Nginx.

Install certbot

NGINX provides a number of built‑in timing variables that you can include in log entries. All are measured in seconds with millisecond resolution.

  • $request_time – Full request time, starting when NGINX reads the first byte from the client and ending when NGINX sends the last byte of the response body


Messages are not published directly to a queue; instead, the producer sends messages to an exchange. An exchange is responsible for routing the messages to different queues with the help of bindings and routing keys.

A binding is a link between a queue and an exchange.

The routing key is…

Step 0: Install newest version of Erlang

$ wget -O- | sudo apt-key add -
$ echo "deb bionic contrib" | sudo tee /etc/apt/sources.list.d/erlang.list


sudo apt update
sudo apt install erlang

Check Erlang version:

$ erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'  -noshell

Step 1: Add RabbitMQ Repository To Ubuntu 18.04

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

Adding current git branch name in Bash prompt with highlighted color can help to avoid a lot of problems with working on wrong git branches, which is a quite popular scenario to most of the developers sometime. …

OCRmyPDF is a free utility that allows you to convert a scanned pdf to text (ocr — optical character recognition). In fact, OCRmyPDF adds an OCR text layer to scanned PDF files over the original one, allowing them to be searched or copy-pasted.

Main features

  • Generates a searchable PDF/A file from a…

Chi Thuc Nguyen

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store