This project is about securely configuring a Linux server and deploying a Flask web application.

It is the final project in the Udacity Full Stack Web Developer Nanodegree programme. To see my other projects, go to

The deliverable of this project was a Markdown readme file that fully documents the steps taken in order to successfully configure the server. This document can be found on my GitHub account here:

That document covers the following topics:

  • adding a user
  • allowing a user to run commands as root (sudo)
  • updating system software
  • setting up SSH keys for user login
  • disable root login
  • setting time zone and automatic time setting via NTP
  • changing SSH port to non standard port
  • configuring the Uncomplicated Firewall (UFW)
  • install and configure Apache to server Python WSGI web applications
  • install and configure PostgreSQL database
  • automatic security updates
  • banning IPs if they are the source of repeated failed login attempts

Photo by Thomas Kvistholt / Unsplash