
Learn a little about JuanDMeGon, the instructor of the course.
Take a general look at the results of the course and many of the skills you will learn and practice throughout the course.
Let us know a little about the advantages of having a VPS, and why it's a good idea to have a VPS server for your projects.
It is time to choose a VPS provider to create an account in it. DigitalOcean is used in the course, but you are free to pick any other provider like Linode, Rackspace or whatever you like.
Create an account in the provider used during the course (DigitalOcean). Again, you do not have to use DigitalOcean, but I can recommend it.
Through the question system, you can solve your doubts, but it is very important that you ask them in the right way to help you better.
If you are on Windows, it is essential to allow some commands that will be used throughout the course to generate SSH keys and establish SSH connections with the VPS. Note: If you are not on Windows, you may not have to follow these steps. Anyway, make sure you can use commands like "ssh" and "ssh-keygen."
The SSH keys are files used to establish SSH connections, which is a secure authentication mechanism that will allow us to connect to our VPS server, without relying on traditional passwords.
It is time to access DigitalOcean or the provider you have chosen to deploy the VPS instance with Ubuntu 18.04.
Let us see how to use the ssh command to establish connections to our VPS utilizing the SSH keys that we have created.
Since we are using SSH keys whose name is not the default one used by the ssh command, it becomes quite annoying to have to specify the full path of the SSH key each time. During this class, you will see how to create aliases that allow you to forget all parameters such as username, IP address, along with the location of the SSH key.
By default, SSH connections established with the server are closed after 5 minutes of inactivity. This is quite annoying, so let us configure our system to avoid this to happen anymore.
Let us see how to manage the different DNS entries in your VPS provider so that you can point your acquired domain and any subdomain to the IP address of the VPS server.
Once you have a domain, it is essential to tell the provider of that domain, to look at the servers of DigitalOcean or the provider you have chosen, allowing to manage the different DNS entries from there.
To work with your VPS, you will have to move constantly throughout the different locations of it. Let us see the use of the different commands that will allow us to know the content of a location, along with moving between them.
It is a common task, having to create, and manage any type of file when you manage a VPS server. In this class, I will show you the use of the different commands that will be useful for managing files and working with your content.
During the course, we will need to create, move, and manage directories in general. In this class, I will show you the use of the different commands that will be useful for managing directories in the whole file system of your VPS.
When you work with your VPS, the use of the console is imminent, so during this class, I will share some tricks that will help you be much agiler and efficient when writing and executing commands.
Keeping your VPS updated is very important, so during this class, you will learn how to use the apt command to manage the different packages of your VPS server.
Learn how to use the systemctl command to manage the different system processes of your VPS. This is especially useful for managing PHP, Nginx and MySQL processes later.
From time to time, the VPS server will ask you to reboot. The process is quite simple, but it has some previous considerations. Know the factors to consider before reboot your VPS and, of course, how to do it.
Know the different commands that are used to manage user accounts (create and delete).
After creating a user, it is possible to log in with them, but some things must be prepared before they can do so. Let us see what.
Each user created has limited capabilities. To be able to give it more capability and assign it as a privileged user, it is necessary to do it explicitly. Let us see how.
The final safety touch will be to prevent any person or system from logging in as the root user directly. In this way, you will have absolute security that no one will have administrative permits unless they assigned and know the password that given when creating the account.
Close all possible ports of the VPS, to avoid any kind of attack on the multiple ports that your VPS can have, using a firewall. Therefore, you will only have open those ports you need, and you will have a more rigorous control.
Meet two commands used to give permissions over locations: chmod and chown. Learn the difference between those commands and, why it is preferable to use chown.
With Fail2Ban, you can control and keep at bay the automated systems that are continually trying to access your VPS through SSH.
Time to install the web server. In this case, we will use Nginx because it is an excellent alternative, even superior to Apache.
Despite having a web server, capable of receiving requests to port 80 (HTTP), these still fail because our firewall has blocked this port. Let us see how to enable this port along with port 443 for HTTPS.
Since you have Nginx installed and functional, look at its structure and its main files and locations.
Let us see a bit about the virtual hosts that allow Nginx to determine how to respond to one request or another, as well as the differences between the sites-available and sites-enabled folders.
Now that everything is clear about Nginx, its structure, and the virtual hosts, it is time to deploy the first site (the main site) by applying all learned in previous classes.
We are going to extend the process of site deployment, and this time we will enable several sub-domains on our VPS server.
It is time to install a database management system. You are free to choose between MySQL and MariaDB. In this class, I will show you how to install MariaDB, which is my recommendation, but both will work and will be used exactly the same.
It is very possible that, over time, it is necessary to access MySQL or MariaDB to manage the databases. See how to get access to any of these from the console and, in the process, create some databases.
We already saw some security details, so it is time to secure the installation of MySQL or MariaDB, both in a similar way.
As a final security step, we will isolate each database accordingly, assigning a single user to each one.
It is time to install PHP, as an independent module of the system, so both the web server and PHP can work independently.
Let us take look at the most important PHP locations, along with the log file that can help us solve problems.
As usual, we will ensure the installation of PHP, so we have secured all sites that use PHP for its operation.
Since we have PHP and Nginx as completely independent modules, it is necessary to indicate Nginx where to send the requests for PHP files, so those are properly processed.
The .htaccess files, like the git files and folders, could give sensitive information to a possible attacker. By avoiding access to them, you will prevent putting any information at risk, without altering the possible operation of these systems.
By default, Nginx includes its version and the operating system in the response headers of each site. During this class, you will see how to prevent this from happening and avoid revealing important information.
By avoiding clickjacking, you prevent your sites from being included in external sites, through iFrames or similar. Therefore, you prevent your content from get used improperly and prevent your users from being deceived.
It prevents browsers from assuming the type of files they serve based on the content, but they rely only on the type of file itself. In this way, you avoid possible files, which are plain text, to be executed when detected as JavaScript or similar.
Avoid XSS in your sites so if you get injected executable code, the browser prevents it and blocks the execution of the site.
Improve the performance and bandwidth consumption of your sites by compressing the responses through Gzip.
Restrict a bit the limits of requests and simultaneous connections that a user can have with your system, in order to mitigate the impact of possible DoS and DDoS attacks.
It is time to ensure that any site that points to the IP of your server and is not part of your configured sites is redirected to your default site, instead of presenting the content. This may generate confusion in your users and open the doors to possible attacks and tricks.
NOTE!!! This course already has a new edition using Ubuntu 20.04 and much more content. Search for Secure VPS in Ubuntu 20.04: LetsEncrypt, Cloudflare and more
So, you want to publish all those projects on your own server, but do not know where to start? Well, this course is what you need :)
Create and configure your Virtual Private Server (VPS), with a high-security rating, from scratch and step by step:
In this course, you are going to create, configure and deploy your VPS server from scratch, set it correctly, with the adequate security measures and the most recommended mechanisms. Always use secure protocols such as SSH to connect with your VPS and HTTPS to protect your websites and projects. Forget the insecure passwords, so you can establish secure connections with your server with the SSH protocol, without problems and achieve anything you need.
Deploy all your projects with your proper domain, with infinite possibilities, at no additional cost. Keep your own space in the cloud for all your jobs, projects and ideas, deploy all types of projects in the same instance and with the number of domains and sub-domains that you want, without having additional costs.
In the course, you will deploy four different projects using Wordpress and Laravel, each one in a different domain or sub-domain.
During the course is recommended to use DigitalOcean, but you are free to create your VPS with the provider you want or need. You can follow the course using any clean instance of Ubuntu 18.04LTS in your selected VPS provider. Everything will be done from scratch and step by step, without relying on additional services.
Install and deploy a complete system with Linux/Ubuntu 18.04, PHP, Nginx and MySQL or MariaDB; in addition to obtaining security certificates in an automated way through Letsencrypt, all for free at no extra cost for your systems.
Why must you take this course?
Because it uses the most recent version of Ubuntu (Ubuntu 18.04) which is a Long Term Support (LTS) version. This version allows you to obtain updates and security patches for at least two years, which means that you can deploy your system in Ubuntu 18.04LTS and you will not have to worry about moving to another version for a long time
Because there is not another online course which explains every step at this level of detail
Because Letsencrypt is a trend, and you will not find content that teaches you how to use it in the way it is done in this course (the correct and simple way)
Because the best standards are used to obtain the highest security rating (A+) in the sites that you ensure following the course
Because today, the main browsers are demanding secure HTTPS connections in any online site or service, and by following the course, you can secure all your systems for free using Nginx and Letsencrypt
Because you will learn to deploy two of the most popular types of projects in PHP, which are Wordpress and Laravel sites
What will you learn and obtain by following and finishing the course?
At the end of this course, you will be able to deploy your VPS server in a very short time and with great ease, using powerful, innovative and safe tools. You will then have your projects online without additional charges, no matter how many domains, sub-domains or projects you put in your VPS, the cost will remain the same.
At the end of all classes, you will have all your projects under a completely secure server, with HTTPS/TLS connections completely free through Letsencrypt and with an A+ rating in the secured sites.
But... What exactly will you learn?
Here you have everything you can get from this course:
Create your own VPS server with Digital Ocean or any provider you choose
Have a safe and friendly system with Linux / Ubuntu in its most recent LTS version (Ubuntu 18.04)
Deploy an Nginx web server in a few minutes and with the best security settings
Deploy a MySQL or MariaDB database server wholly secure and without delay
Easily configure and use Git to deploy the different projects on your VPS via SSH
Obtain external packages and install them globally (composer and Letsencrypt acme·sh as examples)
Create and configure your domain and all sub-domains, without having to pay extra
Point your domain to your VPS server by configuring the DNS entries
Connect to your VPS remotely, quickly and securely using SSH keys
Manage user accounts and prevent automated and external systems from accessing privileges (root)
Learn to use the essential commands (cd, systemctl, cp, sudo, mv, rm, mkdir, reboot, and many more)
Learn how to manage VPS packages with apt easily
Assign permissions on folders and files in the correct way with
Demand for the use of secure connections with SSH, and forget about insecure passwords for all the users
Create and handle users correctly with administrative permissions (sudo)
Deploy different Wordpress and Laravel projects each in a different domain or sub-domain
Understand and take advantage of the use of SSH to connect to your VPS or external services
Connect with third party service through SSH keys correctly
Easily configure a firewall (UFW) and dramatically increase the security of your VPS
Configure your services (Nginx, PHP, MySQL / MariaDB, etc.) to make them more secure
Mitigate DoS and DDoS attacks with proper configuration of the Nginx webserver
Prevent automated systems from trying to access your VPS, through Fail2Ban
Set expiration headers for your projects
Enable the Gzip compression system on your web server
Avoid CSS/XSS attacks with Nginx
Get security certificates for HTTPS connections for your projects with Letsencrypt
Install the security certificates in Nginx correctly, to obtain the A + security rating
Use acme · sh to obtain and automate the installation of Letsencrypt security certificates
Creation and use of domains and all sub-domains that you require easily
How to quickly deploy any project in your VPS
How to deploy complex projects in the VPS (Laravel as a case of use)
And it does not end there! You will have lifetime access to all classes, which includes new future classes and upgrades. You will also have first-hand access to the system of questions, messages, and answers, where I will answer all your questions and comments immediately (I always respond). I will be pleased to help with any problem or doubt you have during the course.
Do not wait anymore. To learn all these skills click on "Register" and start feeling the freedom of having your own VPS.
I will see you in classes :)