Its been a long process. I knew for a long time I always wanted to do this, not just host my site on some bullshit service like Google sites or GitHub pages (no offense to them) but I always wanted to do it myself for added flexibility and freedom. Now I have finally done it, I would like to share some takeaways I have had.
After purchasing my domain, I was sent an e-mail from Trustpilot asking me to leave a review for Porkbun. So I did, and it was within a day after, Porkbun replied to my rather short review thanking me for it. It is kinda the small things that really count here. Their prices were very competitive, they are pretty lax on the restrictions they place, no hidden bullshit, and their site has alot of character to it, which to some old hag in a corporate building might find distasteful, but to me kind of endeared me to them. Their website took a little bit to get used to, but it is by no means unfriendly. So, there it is. I would highly recommend Porkbun for those looking to setup their own sites
This is beginning to sound like one massive ad. When looking for my VPS I had three main criteria: Pricing, Resources and Restrictions. Hetzner checks all of those boxes. THey don't really have any "nooo you canNOt doo that!", their pricing is very good, and for what you get, you get plent of processing power.I was initially looking at AWS Lightsail and Vultr, but after hearing some nightmare customer experiences from Vultr, I kept scouring. Thank god for that, for soon I stumbled upon Hetzner, and I was instantly sold. So for those looking to get a VPS, Hetzner is my one and only recommendation. God bless german engineering.
I have (or had) no idea how to get all my stuff setup. Thankfully, Luke Smith had me covered with his website landchad. Super helpful resource, with plenty of tutorials on how to get things set up. But I would like to share some of my corrections or things that could have been expanded upon more
Perhaps the most frustrating part of the setup experience. I really wanted to get a frontend up for my Git server so when viewing my repos, I didn't have to stare at a terminal screen. Setting this up was a pain in the ass. For one, I did not realize the config provided on Landchad was using TLS, so inadvertantly by trying to use it, I broke my entire site. Thankfully I was able to diagnose what was wrong and repair it, but that was like a solid 40 minutes of my life, and someone who is less tech savy than me would probably have spent even longer. So if you are following the Landchad website setup tutorial, CHANGE THE CGIT CONFIGURATION TO USE PORT 80 AND REMOVE ALL REFERENCE TO SECURITY CERTIFICATES. I just saved you like 40 minutes. You're welcome. Further more, to get the git.your domain here.com thing working, you need to go to your registrar and register a new subdomain. So for Porkbun, I would navigate to my domain management, create a new subdomain git.sourceobby.com, set it to A, and point it to my existing IP (remember to do the same for IPv6 if you have that). Note that this can sometimes take a while to kick in, depending on your registrar, so if you do all this and your site is not found, don't sweat too much yet. Then for SSL, you repeat the Certbot process.
The most frustrating part of this was understanding what a bare repository is. When you spend your whole career (lol) using GitHub, so much is abstracted, that you don't really understand the underlying service. When you are setting up a git server, INITIALIZE BARE REPOS. Then, clone this git repository into wherever you want to be able to access it and set it as remote in existing folders. If what I wrote made no sense whatsoever to you, this is the big idea. You do not put your files directly into the bare git repository. Think of it as a central hub that you can only interact with in two ways, push to, and pull from (ok maybe not exactly like this but if you are someone like me, this is the basic gist you need to get everything up and running). You do not create it in the folder you wish to push. Make it in /var/git, then everywhere add it as remote and push to it.
Josh