How I Made This Site

Abstract

The site serves static HTML files with a very simple webserver I wrote in rust. nginx is used as a reverse proxy and the whole thing is hosted on VPS. All source code is on github.

Goals

This is my project and these are my goals.
  1. Be able to post about projects I am working on and things I find interesting. I think that doing this will help me understand those things better.
  2. Have complete freedom over the site. I should be able to post any kind of content and not be locked into using any particular services
  3. Give readers (if I get any) freedom with open licensing
  4. Learn the basics of web technologies
  5. Write posts in markdown so they can be properly tracked by version control
  6. Write posts on a range of topics and allow readers to easily filter out the ones they aren't interested in
If you are interested in making a website, you probably have different goals: you should probably make your website differently.

Webserver

The webserver isn't complex enough for the choice of language to really matter. I chose rust because, of the languages I like and am somewhat familar with, it seems to have the best library support for web servers. I use the very standard `hyper` and `tokio` for the webserver itself. I use `tera` in the `build.rs` to generate HTML at compile time; this allows the home screen to always contain links to all the posts without me needing to update it with each new post.

Reverse Proxy

The purpose of the reverse proxy is to act as an interface between the barebones view of the web I have programmed into the webserver and the way the world actually works.

Hosting

Licensing