I recently became interessted in learning about static site generators. So I decided to start a little 11ty blog, in which I teach people, who are new to self-hosting, how to securely set up their own server with Ubuntu and Docker.
For now, I’ve got my Beginners Guide series as well as a more detailed introduction to SSH and its features. I plan to eventually write down all I’ve learned about self-hosting in the past 20 years.
Hope it ends up being helpful for some of you.
Hell yeah. Looking forward to more to pass on to future self-hosters!
Ubuntu and Docker.
Really? Netplan alone disqualifies Ubuntu as a “friendly stable starter distro”, and I can guarantee you that your guide will somehow become outdated with a single new Ubuntu release, or some poor soul who accidentally selected an LTS release.
Docker doesn’t matter as much, but there’s a reason beyond just FOSS licensing why podman exists.
Would highly recommend Debian instead.
I started on Ubuntu similar to this many years ago and both the server and desktop experience was not fun at all.
As someone who manages a mail server, new debian releases have the same effect.
If you want to avoid this, use a rolling release distro.
I think you are conflating desktop Ubuntu with Ubuntu Server. On a server, you absolutly want a stable, long supported LTS version.
I’ve been hosting on Ubuntu Server for over 10 years now, and at no point were any packages required to keep it up to date and running outdated.
The problem is when you upgrade
You mean from one LTS to the next? It’s been a while, but as far as I remember, it worked fine on my last server (22.04 to 24.04).
And even if something doesn’t work, I can have all my stuff spun up on a new server in less than an hour. But that, of course, depends on the amount of data you host.
I’d say that docker is still more user friendly than podman
In the future that may change but right now podman is still green
That makes me very odd, I started with mandrake. Got very frustrated with the hand holding and moved to Debian, I’m not touching Ubuntu with a 10 foot clown pole.
Who in their right mind uses yaml for network config?
Awesome, thanks OP!
Personally I strongly recommend Debian over Ubuntu.
Personally I would recommend Proxmox. It’s a debian based distro for hosting containers and virtual machines
This +1 because just an upvote didn’t feel strong enough
Why is that, if I may ask? I’ve used both for years and personally I find Ubuntu has fewer footguns for a new user, and an easisr upgrade process.
I prefer Debian’s community-driven governance model, the higher degree of freedom over the system and lack of preinstalled software that I neither need nor want, and the quiet stability that Debian offers.
I also have just not liked Ubuntu’s decisions over the years. Little things that piled up like the Unity stuff a few years back (or I guess almost a decade at this point), the forced inclusion of snapd, that time they said they wouldn’t offer 32-bit libraries, the little message advertising Ubuntu Pro in the shell.
I’ve always felt like Debian is happy to just get out of the way and let you use it how you want to use it. That control is what I look for in a distro. What you call “footguns” are to me just more options for control.
Debian’s footguns are better documented and are generally there for good reason. Ubuntu’s footguns are there because “fuck the user”.
Yeah, I don’t know anything about self-hosting, but I’ve recently been working on switching from Windows 10 to Linux and I’ve been really enjoying Kubuntu so far.
Whille I agree, when it comes to the Ubuntu Desktop, their Server OS has been a stable, reliable and well supported system for me.
I wrestled with whether or not I should be that guy, but self-hosting by definition generally means everything down to the bare metal, i.e. not a VPS.
I can understand how the term could apply to the broader definition of running your own services on managed infrastructure, but it seems odd not to make that distinction in a beginners guide.
I see your point. But to me, self-hosting just means being responsible for the server and services and not necessarily having my own hardware server at home. And just calling it hosting is too broad a definition for me. And at the end of the day, the guide works just as well for your own hardware or a VM, as it does for a VPS.
Making the term self hosting exclusive to running stuff at home feels unnecessarily elitist. Not everyone has the space, bandwidth or family approval to run stuff at home.
You can have the term homelab if you wantRight, I self-host email and have done for ten years or more, but I don’t do it out of a server at home. Does my Postfix not count as selfhosting any more?
Hmmm, definitely a grey area in my mind especially with the definition of “host”. The host is where the software lives and that isn’t yours. Maybe self-managed?
I’m ambivalent as to who uses the term and how, but a deviation from the general consensus of its definition might cause confusion for newcomers to the field who can’t make the distinction. That said, I enjoyed OPs post and appreciate the time they put into it.
Homelab on the other hand is not synonymous with self-hosted infrastructure and services, as its intended use is not for production workloads.
Nice guide, thank you!
Awesome to read. Thank you. Also, your images aren’t loading for me.
Thanks, glad you liked it.
Yeah, I know that the images are borked. But it’s pretty late here and I was too lazy to fix it. I’ll fix it tomorrow.
I get that. Sometimes there are things for another day. I hope you get a good nights rest
You should check out the official 11ty images plugin if you haven’t already. Itll generate multiple sizes for your output. Its the best feature imo.
Took me an embarrassing amount of time to realize my mistake. I forgot to actually use the npx @11ty/eleventy build command instead of always relying on npx @11ty/eleventy --serve. Now the images are properly linked and transformed / optimized.
This 11ty sounds like a nice off the shelf solution to getting a blog started, which I want to do, but how to allow comments? I guess I’m asking what’s everyone around here solution for comments
I have been pleased with giscus on my blog (http://roguesecurity.dev/ ) Its powered via github discussions.
Can’t really help you there, since comments were never a consideration for me. They would add an unneeded amount of moderation, and potential threat, to my blog.
I love 11ty, I build my blog with it.
Yeah, took me a while to get the hang with Nunjucks, which I had never heard of or used before. But once I got it all properly set up, it was super simple and easy. I’ll definetly write a guide to it too, eventually.
For getting your stuff available over the internet, y I recommend a secure tunnel with wire guard between your vps and servers running the services.
Make your vps an authentication portal using stuff like Authelia and Fail2ban.
If you’re really needing out, get ELK stood up for free and get agents on your containers/services to keep visibility into any potential… Anything
I’ve personally never found the need to do that. If you follow basic security guidelines and keep your server os and the docker service up-to-date, there really isn’t any real threat.
Though I have heard of Authelia before and was interested in reading up on SSO, one of these days.