
A brief overview of what we will cover in this course
Linode, DigitalOcean, or Vultr?
Picking the correct server type from our VPS provider
Not to panic -- we'll cover the basic Linux commands in the next section
Our first test drive of SSH, secure shell
Only become the super user (root) when absolutely necessary
Our introduction to aptitude, Ubuntu's package manager: apt update and apt upgrade
An overview of navigating the Linux file system
User management in Linux
How to determine who can do what to files and directories
Some options for creating and editing text files on the remote system
How to copy and move files on the remote system
What we will cover in this section
To secure SSH, we need to generate both public and private keys
How to generate public & private keys on Windows 10 and copy them to the server.
Getting our public key up on the server
Making new servers with ssh keys installed by default
Locking down ssh
Fine tuning the ssh server
FTP is not secure. Don't use it.
ufw is your friend. Learn it, and use it
Getting started with ufw
Making more complex ufw rules
How to delete rules you don't need any more
Turning the firewall on and off as needed
Can you depend on cloud firewalls?
A helpful reference guide
Changing our server name from localhost to something more useful
If you own a domain, you can name your server to something that makes sense
UTC is fine, but set the timezone to something that makes sense
A few useful tools
Sometimes you just need more power
A good webserver is a must
Apache 2 - the most popular web server in the world
Setting up a couple of web sites with apache
Installing a free SSL certificate
Basic control of the apache server
nginx is a fast, stable, lightweight web server and reverse proxy
Pointing nginx to our two virtual hosts
Connecting LetsEncrypt to nginx for free SSL certificates
Basic control of the nginx server
Caddy - my personal favourite web server (at the moment)
Pointing Caddy to our two virtual hosts
Basic control of the Caddy server
Getting the correct version of PHP installed
Connecting PHP to apache 2
Connecting PHP to nginx
Connecting PHP to Caddy
Installing the dependency manager for PHP
MariaDB is a superb replacement for MySQL
Making sure we can connect to the database from the command line
Using an ssh tunnel to connect to our database
Postgres is my personal favourite among open source database servers
Making sure we can connect to the database from the command line
Connecting to Postgres through an ssh tunnel
Redis is a fast key/value memory store
I'm going to use a Rock/Paper/Scissors web app written in Go
Using scp to copy the file to the remote server
Using supervisor to manage our web app's status
Connecting our web app to our web server
Auto update might be useful, but be careful!
Enable backups. Seriously.
Thanks. It's been fun.
Many developers have been turning to Virtual Private Servers to host their projects, and with good reason: unlike in a shared hosting environment, you are not running the risk of someone else's badly written code resulting in poor performance or (worse yet) your site being compromised because of someone else's insecure programming.
With a Virtual Private Server, you have complete control over the software that is available to you, and you can fine tune the server to meet your exact needs. But setting up a secure VPS takes a bit of work, and requires a bit of learning.
This course will take you through the basics of setting up a fast, secure VPS on Linode, DigitalOcean, AWS Lightsail, Vultr or any other provider that offers VPS Linux hosting. We'll set up an Ubuntu 20.04 server with the most commonly needed software, and ensure that it is locked down as securely as possible. We will also go through best practices for adding users, software, and services, and ensure that we choose the right kind of server for a particular project. We will learn how to implement public and private keys for secure access using SSH, how to edit files on the remote server through the command line using vi or nano/pico, how to use the most common and useful Linux command line programs, and how to configure the most popular and useful server software.