NGINX Reverse Proxy LetsEncrypt Auto-Renew


I finally got round to moving all my web services off a single server and onto a new server using ESXi virtualisation. I got an older HP G7 DL380 with 2x Intel Xeon CPU’s and 64GB of RAM for around £300 off eBay. It does use more power (Averages 150W) however it is well worth it as it provides full RAID redundancy and virtualisation provides easy backup/snapshots before any modifications. I have decided to create a separate VM for each service and then use NGINX as a reverse proxy to handle all the SSL. This greatly reduces management overhead as I have only got to renew the certificates in one place, it also provides speed improvements as well as security.

I was initially put off LetsEncrypt with its short certificate lifetime and the need for automation, especially when I add a large and complex Apache configuration file however I decided to go for it with a brand new VM and I am glad I did; it is brilliant!!

Read more…

Please share 🙂

Char Pointers in C

The Code:

I decided to write a quick bit of code to reinforce my understanding of char pointers in C; especially Char** as I recently confused myself. Firstly lets get straight to the code as it is the best way to learn. The code comments should explain what each line is doing however additional explanation of the steps is provided further down the page.

Read more…

Please share 🙂

VCentre 6.5 higher memory requirements

I have started working heavily with VMWare at work and have setup my own HP DL380 G7 with VCentre 6.0 which needed 8GB of RAM. This was the smallest configuration available from VMWare however it was overkill for my home lab. This could be changed down to 4GB after it was shutdown and then reduced via ESXi web interface.

I decided to try VCentre 6.5 but unfortunately Vcentre 6.5 has higher memory requirements than version 6. I use Linux at home and VCentre 6.5 removes the need for the integration plugin and provides a faster HTML interface. The tiny instance has increased the RAM from 8GB to 10GB, I have plenty of RAM on my server however I didn’t want to waste it unnecessarily. Unfortunately modifying it via VCentre is not possible as it refuses anything less than 10GB; shutting down the VC and modifying it via ESXi web host is also not possible as it fails with an error.

The only way I managed it was to use the Windows Vsphere Client connected to the ESXi host, this had no problem changing the memory; I guess that is because VMWare hasn’t updated the client since the web interfaces came out.

This seems to work fine like it did before, the only thing to note is the hardware status is unavailable for the host with a message “No host data is available”.

Hope this helps people.

Please share 🙂

Arch AUR Unknown Public Key

While trying to install an update for network-manager strongswan from AUR I got the following error:

The public key needs to be downloaded using the following command:


Michal Zuber

Please share 🙂

Weather Station using Raspberry Pi & Arduino


This post will be extensive so will be separated into 3 parts to make it easier to write and read. I have spent the last couple of months developing a weather station; both for the fun of it and to improve my understanding of the C programming language. The weather station will perform quite a few tasks. It comes in 3 separate bits; several remote sensors that transmit their temperature, location and battery status over an RF link, a receiver module that receives the data over the RF link and the raspberry pi main station which talks over I2C to the receiver unit to get the data. The raspberry pi then processes this information to display on an LCD screen. It has five buttons; one switches between all remote sensors and it’s self, 2nd switches between the data&time, IP address and WiFi signal strength, 3rd switches between Celsius and Fahrenheit, 4th turns the display backlight on/off and 5th safely turns the raspberry pi off. All of the code is written in C, both the raspberry pi and arduino.

Read more…

Please share 🙂

Arduino: Using C to write 7 Segment 4 Bit Display Driver

I have started re-learning C using the “C Head First Book” after doing it at university a number of years ago and decided to purchase an Ardunio (Well Genunio as I am not in the USA). The first lab in the book was to create a moisture sensor for detecting if a plant needed watering and write the output to the serial port to display on the PC. I purchased quite a few components from Banggood including this 4 bit 7 segment display. I found some driver code via the bang good forums which worked but decided to write my own as I wasn’t a fan of how it was written. It is also far better to write it from scratch if you want to learn exactly how it works and not just pass variables into a pre-defined function.

How the 7 segment display works

The banggood display module has two 74HC595 shift registers on the back which controls the individual led segments on the display. A shift register is simply put a way of expanding the pins of a micro-controller, this means the display only needs 3 input PINS. The display is a 4 bit display because it has four blocks of 7 segments (excluding the dot). The schematic diagram I found for the display shows which pins of shift registers control which segments on the display. The display segments are labelled using letters A-G and DP. The below image shows which letters correspond to which segment.

Read more…

Please share 🙂