hosting your own stuff provides some freedom using services.
to do it, is really simple, you don’t need much.
to solve the domain part: find a domain you like and just buy it at any domain name registrar. there are many companies selling domains and you can buy it from one year to even ten years in some cases. even google sells domains these days. i would advise to browse in different services for the same domains, as it can be cheaper.
to use as server – i.e. to host your applications and be the physical part of if – a couple of solutions are available: you can use you own computer or an older and unused machine, that one getting dust in some corner of you house. maybe that’s the most comfortable way of doing it, as you have direct access to the machine, which makes easier to configure and use. but, this way, the quality and availability is somewhat dependent of you: power outages or poor network quality could result in having an intermittent online content. alas, the more things you host in this setup, more power and a bigger share of your network is going to be consumed, reflecting in a increase on eletricticity bills and maybe even reducing the speed of your network.
you can use external machines to avoid this problems. to host my services i’ve been using oracle cloud infrastructure. not perfect, but way better than what i have at home in terms of availability and much more comfortable to maintain. mind me, my machine is way more powerful than the one i use at OCI. but i want to turn of my machine and sleep in complete silence everyday. other meaningful reason is power outtages being relatively common in brazil during rainy seasons. i don’t want to have my services off due to a rainstorm or other problem.
more services to aid in this task are widely available on internet. github, amazon, microsoft, et cetera, they all have services to deal with this kind of need. in some cases you can get it for free. specifically about OCI, a dear friend of mine has written a really complete post talking about it and how to host on it, feel free to read about it, if it got your attention.
how to make it work and having creativity practically walks together. there are almost infinite ways to do one thing: a myriad of possibilities and workarounds. using containers is a easy and maintanable way of doing it so i would point is as a possible start point.
as a data scientist, i host a jupyter lab instance behind this page. as a normal user, besides the blog, i also host a massive minecraft server, to play once in a while with some friends. i also host some discord bots to use in my own servers, as JMusicBot.
but why to do all of this to have your own stuff instead just using widely available – in much cases, even free – services? having your own stuff allows for maximum customization and it’s an opportunity to learn a little bit more about everything. it’s nice to have your own stuff and being able to use everything without dealing with ads or paying to have complete services. collab, per example, makes me have to deal with connections to google drive and disconnecting machines from time to time, as they stop idle notebooks. jupyter does everything that collab does, is easier to upload files to and it feels more responsive too, as there are less machines to serve and my infrastructure is bigger than what i need most of the time. if it miss a feature that i want to have, i can modify/upgrade/downgrade it to have this funcionality.
other services are in the way to being hosted on my server. really useful iniciatives exists to be used in a home environment, which can be really beneficial as Pi-Hole or Home Assistant, aiming to filter for ads in a entire network and monitor smart/IoT gadgets, respectively. more applications can be found at awesome-selfhosted at github. for the beginners, i would recommend to try to setup a website or something in that line, which can be used as portfolio or a presentation page: knowing something about web dev could be really useful, but it’s not necessary, as there are really accessible frameworks available, such as hugo, jekyll and astro, which can make it doable for people not familiar with web dev.