In this post I will detail my decision making on how I set up this website, but first why do I want to create a website?
My aim for the site is to create something that I can share to promote myself and my skills within the industry and also hopefully in time provide learning resources to help others break into the infosec industry.
I would like to be able to document my projects and lab experiments then quickly and easily convert that into a post that I can then put onto the website, also it would be great to have pages like a get in touch and links to GitHub etc
Requirements
- low cost / free, The site should ideally be free or at least very low cost to host
- low maintenance, Once it is initially set up the website shouldn’t need a lot of maintenance on my part, the idea is to spend time on the projects/posts not maintaining the website they go on
- The website should require minimal custom development, while I am not a bad developer that is not my focus and front end JavaScript development is a particular weak area for me
- I should be able to produce the posts as Markdown documents, I am already writing notes and documentation for my projects in Markdown and keeping them in Obsidian so I want to be able to quickly translate those into posts for the website.
What kind of site?
In order to make decisions on the hosting of the site I first needed to know what kind of site it is that I would be hosting, I started out by narrowing down to a static site, the kind of content I am looking to put on the site does not require anything to be dynamic and I am not, nor do I want to be, a good front end developer so attempting to create a JavaScript heavy frontend for the site would only slow the project down.
What kind of static site?
Selecting a static site definitely narrows the field but there are still a huge number of options out there for creating static websites so next I needed to find another way to reduce my options, the requirement to write posts in Markdown, I searched for static site generators that can take markdown inputs for posts, I don’t mind if there is a little bit of JavaScript / HTML / CSS involved in setting up the site but the posts themselves should require little to none.
Astro
Pros
- Huge potential scope for what can be included in the site
Cons
- Complex to configure and use
- Markdown is supported but not the focus
Jekyll
Pros
- Very simple to use
- good markdown support
- The official framework of GitHub Pages
Cons
- Only allows for very simple websites
- more complex pages need to be written in the liquid templating language
Hexo
Pros
- Is directly targeted at blog sites of the kind i want to write
- full package with development and deployment tooling built in
- first class markdown support
- has a system for posts vs pages and the ability to work on draft posts
Cons
- built on NodeJS
After investigating the options I decided on Hexo as it will provide simplicity and markdown support while still providing enough flexibility in deployment and theming, it also includes some great personal blog features like support for creating about pages and draft posts.
Where to host
Being a static site hosting options are plentiful, including self hosting on my own hardware and a wide selection of cloud services. I ruled out fully self hosting early as I’m not currently hosting any services on the open web and setting up a secure self hosting environment is beyond the scope of this project, that leaves cloud hosted options.
GitHub Pages is a good free service for hosting personal blogs or project sites but does not offer some of the features that I would be looking for like custom domains and the possibility to add some dynamic content in future.
Then we get to the big cloud providers, Microsoft, Amazon, and Google.
All three platforms offer two options, either a combined platform for app hosting or using a storage bucket with something in front of it for HTTPS. Both approaches have pros and cons the big advantage of the combined solutions is that the pricing tends to be much clearer ahead of time but using the storage approach could provide much greater flexibility later on.
Of course with the type of site I am building it should be easy to move between providers or platforms when needed so its not a disaster if a choose the wrong solution when initially setting up.
I have not used any AWS services before so I will rule them out as the aim of this project is not to learn a new cloud provider.
Both Azure Static Web App and GCP Firebase offer a free tier that should more than cover what I am expecting to need for the site and I have used both before so I don’t have much of a bias going in, although I do find Googles billing clearer.
Originally my plan was to test out both options with Hexo and then make a decision but I started with deploying to Firebase and it integrated so well with Hexo and was so quick to set up that I have just decided to stick with that for now.
Deploying to GCP Firebase
Deploying to Firebase was very easy to set up, I just created the project on the Firebase console then added the firebase-deploy plugin to Hexo and configured it then I was ready to go, now all I need to do is use the Hexo generate and deploy commands to build the website and deploy it to firebase hosting.
Conclusion
In conclusion this was a quick and easy project to set up and I am excited to now start working on writing up posts to publish here, I have lots of ideas on content ranging from lab and CTF writeups to documenting my studys.