HomeLab Tutorials – Part 4 – Hosting this Website with AWS

Introduction

Before swapping over to AWS, I was using NamesCheap as my hosting service. They were in fact pretty cheap! I have nothing against them, and if you would like a non-nonsense web hosting service, I would recommend them readily! But the current main thrust of my homelab is to teach me the core AWS services. So, what better way to start than to host my website using AWS! Its actually a pretty simple process (Except the SSL Cert Process). Long term, I plan to migrate more of my services to the cloud, or baring that, integrate more of my on-prem services with my AWS hosted domain.

Assumptions

I am assuming that you have already got an AWS Account. That’s it.

Step 1. Registering a Domain

Route53 is the AWS service which registers and configures domains. We will be using Route53 to register littleseneca.com. Begin by navigating to the Route53 dashboard HERE or through your AWS console dashboard. Once on the Route53 dashboard:

Step 1.1 – Checking a Domain Name

Select the Register Domain input field and type out what you want your domain to be named, and then click Check

After clicking the Check button, you will be brought to a selection screen whereby you can make changes to your domain name, based on availability.

The Check box notates that the name is available. Clicking the blue “Check” box states that this is the domain name we want to purchase. Note that there is a cost associated with purchasing a domain name.

Step 1.2 – Registering A Domain Name

Once you have selected the Continue button, Route 53 will prompt you to fill out identifying information for the owner of the domain name, shown below… but blurred, because I don’t need that publicity:

Do note that at the bottom of this form you have the option to enable Privacy Protection. I recommend turning this on. Without Privacy Protection, anyone can look up the owner of testingoutdomainregistrationwithseneca.com and harass him or her at their doorstep.

Step 1.3 – Purchasing a Domain

After verifying the Domain Registration information, we will go ahead and purchase our domain… kinda. I was lazy while standing up my real domain (littleseneca.com) and didnt take screen shots of the full process. I’m not going to be purchasing testingoutdomainregistrationwithseneca.com today so we will be skipping just a few non-critical steps. Ill describe them anyway though! Below is a picture of the purchase confirmation screen, with my contact information blurred out.

I have opted to Auto-renew my domain, because we will be at this Home-lab experiment forever folks! I also totally read the full AWS Domain Name Registration Agreement. I promise (with my fingers crossed behind my back)! Finally, I verified that the price point is competitive, and then I didn’t press Complete Order.

Had I pressed the Complete Order button, the domain name would have shown up under Pending Requests in the Route53 Dashboard

The Pending Requests process can take up to 3 days to process, but only took me about 10 minutes. During the pending process, I was prompted to confirm my email address associated with the domain registration. Finally, after some waiting, I got an email confirming that my domain had been successfully registered, and the domain showed up in my Registered domains list, as shown below:

Step 2. Configuring a Web Server

Now for the fun part! We are going to configure a web server. This website is hosted using WordPress. Thankfully we wont have to manually configure wordpress on our webserver, as there is a wonderful pre-built WordPress sever hosted by Bitnami located in the AWS Marketplace. Once you have arrived at the AWS Bitnami WordPress Server, Click on the big Subscribe button. Once you have accepted the terms of the agreement, Select the “Continue to Configuration” Button:

From here select you will be greeted with basic questions about what version of the WordPress Server you would like to install, as well as the Region you would like to host the server on. I kept all of these settings at their defaults. On the right hand side bar, there is an estimated cost of maintaining this server. This cost assumes that the server will be ran on a t3a.small server. We dont get nearly enough traffic… yet. So we can downgrade our server to a t3a.micro without any concern of reduced performance. We will do so on the next panel. To get there, select the “Continue to Launch” Button in the upper right.

At this next screen, we will be changing only one item, the EC2 Instance Type (as mentioned above).

Scrolling down, we have some more work to do. Maintaining the default VPC and Subnet settings is fine for now. Future Homelab adventures will likely detail VPC Usage. For now, just know that a VPC is like a private network for your virtual machines (and much more) in AWS. After networking, there is a question about security groups. I have already created a security group, but you will need to create one if this is your first time standing up wordpress in AWS. Clicking the Blue Button will do this automatically. Finally, we need to create an authentication key to talk to the web server. as with the Security Group, it you don’t have one, you will need to make one. Once these settings are configured, punch that big orange “Launch” button!

Once you have spun up the new VM, head on over to the EC2 Management Console and give your new VM a name. This will help you differentiate which device is which in AWS. Once this is complete, we are ready to move on to Step 3.

Step 3. Resolving Domain to New Website

Step 3.1 Configuring an Elastic IP Address

Elastic IPs are a tool which allows for an EC2 instance to be provided with a static IP Address.

From the EC2 Dashboard, migrate over to the left-hand sidebar and select the Elastic IPs Application. Then, from the Elastic IPs application, select “Allocate Elastic IP Address”:

On the next page, feel free to leave the settings at their default values. They are outside the scope of this lesson. After you press the Allocate button, you will be returned to the previous page. Select the non-allocated Elastic IP address (Currently Filtered for brevity), and select Associate Elastic IP Address from the Actions Menu:

From the Associate Elastic IP Address menu, select our new EC2 instance we just created (using the name we gave it as a reference) and then click the big orange “Associate” button.

Now that we have an Elastic IP associated with the web server, we are ready to resolve our domain!

Step 3.1 Resolving our new Domain

From the AWS Web Console, return to the Route53 Console. Select your new domain from the Hosted Zones list:

From the management console, select Create Record:

Then input a useful subdomain (mine matches the name I gave the VM) and the Elastic IP Address associated with the Web Server VM. Once done, select the big orange “Create Records” Button.

Finally, if everything worked, you can plug in life-notes.littleseneca.com and you should find an extremely generic wordpress site!

Woooooooo!!!

I highly recommend configuring LetsEncrypt on this site. Please follow the documentation found HERE to do so.

Leave a Comment