There are currently no items in your shopping cart.

User Panel

Forgot your password?.

Deploying a Secure Virtual Private Server with Ubuntu 20.04

Video Introducing this tutorial

Introduction :
Choosing a VPS provider
Choosing the right type of server and deploying our VPS
A note about Linux commands I'll be using
Connecting to our server for the first time
Setting up a non-root user
Updating the system

Getting started with our VPS :
Using the command line to get around our VPS
Adding and deleting users and file ownership
File permissions
Editors: vi and pico
Copying files

Locking Down SSH :
Generating public & private keys for Mac & Linux
A note for Windows Users
Generating public/private keys for Windows
Copying our public key to the server
Spinning up new servers with your ssh public key
Modifying the sshd_config to require keys, and prevent root login
Additional SSH changes
Installing fail2ban
What about FTP?

Firewall :
More about ufw, the Uncomplicated Firewall
Setting up basic ufw rules
More complicated rules
Deleting rules
Enabling/disabling the firewall
What about cloud firewalls?
Cheat Sheet

Setting up the operating system :
Server name - hostname
Pointing DNS to our VPS
Setting the timezone
Installing some helpful tools
How and when should you resize your VPS?

Choosing and installing a web server :
NGINX, Apache, and Caddy -- which one?
Setting up Apache
Adding a virtual host in Apache
Enable LetsEncrypt on Apache
Apache logs & starting and stopping the server
Setting up NGINX
Adding a virtual host in NGINX
Enable LetsEncrypt on NGINX
NGINX logs & starting and stopping the server
Setting up Caddy
Adding a virtual host in Caddy
Caddy logs & starting and stopping Caddy

Installing PHP :
Installing PHP
Installing PHP for Apache
Installing PHP for NGINX
Installing PHP for Caddy
Installing composer

Databases :
Installing MariaDB, a drop in replacement for MySQL
Configuring and connecting to MariaDB
Connecting to MariaDB remotely using a GUI client
Installing Postgres
Connecting to postgres
Connecting to Postgres remotely using a GUI client
Installing Redis

Installing web applications :
What do I mean by a web app?
Copying our application to the server
Managing the application status with supervisor
Proxying to the web application

Regular Maintenance :
Optional: enable automatic updates
Final thoughts and suggestions