There were two things I knew I wanted going into this: to have a website, and to do as little frontend as possible.
How I made the website
I knew there were tools to help me easily make a nice looking website and have blog posts written in markdown, so I looked for a good one. The one I found and chose was Astro. Honestly there could be something better for my usecase, but this works well enough that the only thing that could be really improved are my build speeds, which are mostly spent downloading dependencies.
Once I knew what framework I was going to do, I needed to pick a theme for it, because I was not about to make one myself. Luckily for me, the website had a themes page. A lot of themes on there cost money, but you can filter by free. After some searching, I chose this theme, which is a port of the terminal theme for hugo, which I think looks quite nice. After installing it, I switched the colorscheme to the Viking one because it looked nice and switched the font to JetBrainsMono because that’s what I use for everything.
Now I had a nice UI, so all I needed was to put content on it. I added links to the Home page and removed the posts from it because I like it being more minimal. I then added the about, tools, and now pages, where you can find a bit more info on me. To build the site, I also needed a blog post, so I wrote a little test one (if you saw that, you must’ve visited the site before this was written.)
How I host the website
The site was done so now I needed to make it visible to the internet. I have a Raspberry Pi that I self-host things on so I chose to just host it on that. I set up a docker container of nginx, and built the website into a folder that it was serving from.
Now I could go to the website on the local network (or through tailscale because I have that set up), but I knew that I wouldn’t want to manually build it and all every time that I changed something or wrote a new post, so I made an action for my ForgeJo instance to run whenever I pushed a change. It builds the project, deletes the current contents of nginx’s served directory, and puts the new files there.
Great, now I’m hosting a website and it automatically gets updated when I push a change. Time to make the website public! I purchased the elegantbread.com domain through Cloudflare, because of the cheap prices, and because I knew what thing I was going to do to make it public.
That thing was using Cloudflare tunnels, which allow you to proxy requests through Cloudflare and get them to your server without port-forwarding. Since nothing on this website is private anyways, I don’t have to worry about the man in the middle here, and I can just take the free service. I set up a cloudflared container next to the nginx one and got this website up!