All-In-One Server

I created a CI/CD pipeline using Jenkins to handle the integration and deployment of my Node-App project. This project will be a central HTTP server which will be used for some of my future projects.

The Node-App interfaces with a MySQL database using Knex to execute queries. As part of the CI/CD pipeline I utilised Mocha to handle automated testing.</p>

I used an Apache reverse proxy to forward traffic to the Jenkins web interface (\jenkins), the PhpMyAdmin interface (for MySQL) (\phpmyadmin), a general php webpage (\php) or to the Node-App routes (\).

Here are the posts I have made so far about the Server and Node App:

Jenkins Updates for the Server-App

August 31, 2021

In this post I finally revisit my server app and update Jenkins to the latest version and some other maintenance and improvement tasks.

Changing the domain and Jenkins reconfiguration

August 28, 2021

I changed the domain used for my server and reconfigured Apache2 to have a homepage to link to all the services now running on it - phpmyadmin, jenkins, the node-app and now the homepage.

Server App Updates

August 23, 2021

In this post I return to my server app to make some much-needed maintenance updates and prepare it for changes I’ll be making to the budget API.

Refactoring the Server App to Remove Knex

September 08, 2020

In this post I replaced the Knex library I was using to construct queries with straight SQL queries using the normal mysql library using pooled connections and promises.

Testing the Authentication Routes in Mocha

March 17, 2020

With all the changes made in the last few posts, obviously my Hello World tests would now fail and I needed to write new ones to verify the authentication was working correctly.

Connecting the Database to the Node App

February 25, 2020

I’d previously installed mysql but the authentication I added in my last blog post just kept everything in memory so far so in this post I’ll be using the MySQL database connected to Node using Knex to construct queries.

Adding Authentication to the Node App

February 18, 2020

After installing MySQL I realised that I needed a better solution than just storing plaintext usernames and passwords in an authentication table. So while I’m on my security-spree I’ve decided to implement the authentication middleware for the Node App including salting and hashing passwords using bcrypt and issuing JSON Web Tokens (JWT) to authenticate subsequent requests.

Installing MySQL and phpMyAdmin on the Server

February 16, 2020

With my server now secured I’m installing MySQL and phpMyAdmin for the database and to view and configure it via a GUI.

Configuring HTTPS for Jenkins on the All-in-One Server

February 15, 2020

In my last blog post I registered a new domain name and installed a Let’s Encrypt certificate to configure HTTPS, but now I reconfigured it so Jenkins would be secured too and could be reached on

Configuring HTTPS for the Server

February 04, 2020

Today I’m adding HTTPS support to my new All in One Server by registering a domain name and installing an SSL certificate from Lets Encrypt.

Configuring the All-in-One Server

January 21, 2020

In this post I’m basically starting the CI/CD pipeline from scratch on a new server - this time I’ll keep it running 24/7 so I can get moving on the projects that will interact with it. This involves setting up Jenkins and the CI/CD pipeline again, configuring Apache as a reverse proxy and finally adding an SSL certificate to implement HTTPS for added security.

Adding an Apache Reverse Proxy for the Node App Server

December 10, 2019

I want to add HTTPS support to the node-app server so today I configured an Apache Reverse Proxy to redirect traffic from port 80 and 443 (HTTP and HTTPS) to my node-app which runs on port 3000.

CI/CD Pipeline using Node.js and Jenkins - 6: Creating and Destroying Droplets

October 15, 2019

After getting my CI/CD pipeline up and running, I needed an easier way to create droplets from snapshots so that process wasn’t so time-consuming.

CI/CD Pipeline using Node.js and Jenkins - 5: Deployment

October 01, 2019

Now that the Continuous Integration part of my pipeline was working, today I got the Continuous Delivery/Deployment part working to automatically deploy to the live server.

CI/CD Pipeline using Node.js and Jenkins - 4: Jenkins Issues

September 17, 2019

Last time I did the initial configuration of Jenkins but I’m having a few issues. Today I’ll be troubleshooting these issues and making sure GitHub and Jenkins are hooked up correctly, and that all the automated tests run and pass successfully.

CI/CD Pipeline using Node.js and Jenkins - 3: Configure Jenkins

September 03, 2019

Today I’m carrying on with my CI/CD pipeline by creating the Jenkins server that will do the automated testing and deployment of the Node-App.

CI/CD Pipeline using Node.js and Jenkins - 2: Security Issues

August 20, 2019

In my last blog post I set up the HelloWorld Node.js app on a Digital Ocean droplet. Today, I had a few security and access issues when re-creating the server using the snapshot I took previously.

CI/CD Pipeline using Node.js and Jenkins - 1: Hello World Server App

August 06, 2019

Jenkins is an open source automation server that can be used to set up a Continuous Integration/Continuous Delivery (CI/CD) pipeline to streamline the deployment process. I wanted to set it up for my next project; a Node.js server that I could use for a lot of my future projects - I want to create a RESTful API that I can use for any of my projects that need to communicate with a central server.

About Me

Engineer, maker, do-er...
I basically just like to make things.