diff --git a/content/fundamentals/webserver.md b/content/fundamentals/webserver.md
index ec5e864..1813667 100644
--- a/content/fundamentals/webserver.md
+++ b/content/fundamentals/webserver.md
@@ -23,6 +23,7 @@ The instructions on this guide were run on a Debian Stretch distribution.
- A spare computer.
- A basic understanding of the command line.
- An [ssh server and client](ssh.html) installed
+- A registered domain name
- Have an available power socket next to your router.
- An ethernet cable to connect your server to the router.
@@ -37,10 +38,10 @@ If you want to geek out further about the differences between Apache and Nginx,
So, without further ado, open a terminal window and let's get started:
-First, make sure you have the newest package versions by updating your package lists and then upgrading these packages:
+First, make sure you update your packages list:
```bash
-$ sudo apt update && upgrade
+$ sudo apt update
```
Then, install the Apache HTTP server software:
@@ -55,7 +56,7 @@ $ sudo systemctl status apache2
```
Example output:
-```bash
+```
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
Active: active (running) since Sat 2019-06-22 21:29:51 UTC; 6s ago
@@ -73,9 +74,113 @@ Jun 22 21:29:50 supermuch systemd[1]: Starting The Apache HTTP Server...
Jun 22 21:29:51 supermuch systemd[1]: Started The Apache HTTP Server.
```
+## Configuration Time
+
+You can find Apache's configuration files in the following location: /etc/apache2/sites-available.
+
+The 000-default.conf file should look a little something like this:
+
+```
+ServerAdmin webmaster@localhost
+
+ # The ServerName directive sets the request scheme, hostname and port that
+ # the server uses to identify itself. This is used when creating
+ # redirection URLs. In the context of virtual hosts, the ServerName
+ # specifies what hostname must appear in the request's Host: header to
+ # match this virtual host. For the default virtual host (this file) this
+ # value is not decisive as it is used as a last resort host regardless.
+ # However, you must set it for any further virtual host explicitly.
+ # ServerName example.org
+
+ ServerAdmin webmaster@localhost
+ DocumentRoot /var/www/html
+
+ # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
+ # error, crit, alert, emerg.
+ # It is also possible to configure the loglevel for particular
+ # modules, e.g.
+ #LogLevel info ssl:warn
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+ # For most configuration files from conf-available/, which are
+ # enabled or disabled at a global level, it is possible to
+ # include a line for only one particular virtual host. For example the
+ # following line enables the CGI configuration for this host only
+ # after it has been globally disabled with "a2disconf".
+ #Include conf-available/serve-cgi-bin.conf
+
+```
+For ease of use, and in case you would like to have several websites/services running behind a single server, copy this file into another, easily identifiable one, for example, calling it something like "mydomain.conf".
+
+```bash
+$ sudo cp 000-default.conf mydomain.conf
+```
+Using your favourite text editor, uncomment the ServerName line and change it to reflect your domain name:
+
+```
+ServerAdmin webmaster@localhost
+
+ # The ServerName directive sets the request scheme, hostname and port that
+ # the server uses to identify itself. This is used when creating
+ # redirection URLs. In the context of virtual hosts, the ServerName
+ # specifies what hostname must appear in the request's Host: header to
+ # match this virtual host. For the default virtual host (this file) this
+ # value is not decisive as it is used as a last resort host regardless.
+ # However, you must set it for any further virtual host explicitly.
+ ServerName mydomain.org
+
+ ServerAdmin webmaster@localhost
+ DocumentRoot /var/www/html
+
+ # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
+ # error, crit, alert, emerg.
+ # It is also possible to configure the loglevel for particular
+ # modules, e.g.
+ #LogLevel info ssl:warn
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+ # For most configuration files from conf-available/, which are
+ # enabled or disabled at a global level, it is possible to
+ # include a line for only one particular virtual host. For example the
+ # following line enables the CGI configuration for this host only
+ # after it has been globally disabled with "a2disconf".
+ #Include conf-available/serve-cgi-bin.conf
+
+```
+Enable this configuration by running:
+
+```bash
+$ sudo a2ensite mydomain.org
+```
## HTTPS
-## Configuration Time
+HTTPS, which stands for *hypertext transfer protocol secure*, is an extension of the HTTP protocol. As its name suggests, it adds a layer of security to the data exchanged between client and server. By adding an encryption layer to the exchanged packets, it seeks to avoid man-in-the-middle attacks, eavesdropping, etc.
+
+As part of its bigger goal to "encrypt the entire Internet", the [Electronic Frontier Foundation](https://certbot.eff.org/about/) developed Certbot, a free and open source tool for automating the server-side deployment of [Let's Encrypt Certificates](https://letsencrypt.org/), thus enabling HTTPS.
+
+Let's get down to it! Again, these instructions are specific to Debian 9 (Stretch), but detailed instructions for installation on other distros can be found on [Certbot's website](https://certbot.eff.org/instructions)
+
+First, add backports to your packages list and update it:
+
+```bash
+$ echo deb http://deb.debian.org/debian stretch-backports main | sudo tee -a /etc/apt/sources.list && sudo apt update
+```
+
+Now, install Certbot:
+
+```bash
+$ sudo apt install certbot python-certbot-apache -t stretch-backports
+```
+Run Certbot to get the right certificates for your domain:
+
+```bash
+$ sudo certbot certonly -d myserver.org
+```
+
## index.html