Skip Navigation

Do you selfhost your own blog/website?

Hey there!

I'm thinking about starting a blog about privacy guides, security, self-hosting, and other shenanigans, just for my own pleasure. I have my own server running Unraid and have been looking at self-hosting Ghost as the blog platform. However, I am wondering how "safe" it is to use one's own homelab for this. If you have any experience regarding this topic, I would gladly appreciate some tips.

I understand that it's relatively cheap to get a VPS, and that is always an option, but it is always more fun to self-host on one's own bare metal! :)

50 comments
  • I've been self-hosting my blog for 21years if you can believe it, much of it has been done on a server in my house. I've hosted it on everything from a dusty old Pentium 200Mhz with 16MB of RAM (that's MB, not GB!) to a shared web host (Webfaction), to a proper VPS (Hetzner), to a Raspberry Pi Kubernetes cluster, which is where it is now.

    The site is currently running Python/Django on a few Kubernetes pods on a few Raspberry Pi 4's, so the total power consumption is tiny, and since they're fanless, it's all very quiet in my office upstairs.

    In terms of safety, there's always a risk since you're opening a port to the world for someone to talk directly to software running in your home. You can mitigate that by (a) keeping your software up to date, and (b) ensuring that if you're maintaining the software yourself (like I am) keeping on top of any dependencies that may have known exploits. Like, don't just stand up an instance of Wordpress and forget about it. That shit's going to get compromised :-). You should also isolate the network from the rest of your LAN if you can. Docker sort of does this for you (though I hear it can be broken out of), but a proper demarcation between your laptop and a server on the Open web is a good idea.

    The safest option is probably to use a static site generator like Hugo, since then your attack surface is limited to whatever you're using to serve the static sites (probably Nginx), while if you're running a full-blown application that does publishing etc., then that's a lot of stuff that could have holes you don't know about. You may also want to setup something like Cloudflare in front of your site to prevent a DOS attack or something from crippling your home internet, though that may be overkill.

    But yeah, the bandwidth requirements to running a blog are negligible, and the experience of running your own stuff on your own hardware in your own house is pretty great. I recommend it :-)

  • I host mine just like you want to do. Ghost running in a docker container on my homelab, with reverse proxy and domain pointing to it.

    Haven't had any issues so far.

  • I self host.

    I use nginx as a reverse proxy with crowdsec. The backends are nginx and mariadb. Everything is running on Debian VMs or LXCs with apparmor profiles and it's all isolated to an "untrusted" VLAN.

    It's obviously still "safer" to have someone else host your stuff, like a VPS or Github Pages, etc, but I enjoy selfhosting and I feel like I've mitigated most of the risk.

  • I self host a Wordpress site that mostly acts as my design portfolio.

    It’s hosted in a Debian VM on a restricted VLAN with caddy handling SSL certificates. Uptime isn’t a huge concern for me since it’s nothing mission critical. It all sits behind a free Cloudflare proxy which allows for my home IP to be hidden.

    I think as far as safety goes, I’m comfortable with this setup.

    • I self host my own website, blog, and a dozen privacy-friendly alternatives and front-ends to various web sites. I use a dedicated remote server for this, so nothing is on my own bare metal. netcup.de has a variety of VPS options that give you good hardware resources for your money. You can get a VPS with 8 GB of RAM, 4 core CPU, 256 GB disk, and 2.5Gbps network throughput for $6.33 a month (not including initial setup cost). Compared to what Vultr and Akamai offer for the same price, this is a steal. The company is based in Germany, so you have to convert the euro prices to US dollars if you're in the US. The only thing about netcup.de is that your options for the location of your server are limited. They have one US location and the rest are in Europe. This is not a dealbreaker for me, though. And they guarantee 99% uptime. I'm pleased with their service. If you just want to host your personal services on a more long term basis and don't care about scaling and deployment turnover, then netcup is great. Akamai, Digital Ocean, and Vultr are more for short term disposable, scalable VPSes or web apps and they have excellent data center availability.

  • So many suggestions here but I thought I'd chime in because I have a setup very similar to what you suggested and I found a very easy way of hosting it securely. I am using Unraid on a system in my house. I have my web service running in a docker container. I exposed it using a cloudflare tunnel. There is an Unraid plugin for cloudflare tunnels that takes out a lot of the configuration work involved in getting it running locally. You just have to also set up a corresponding endpoint on Cloudflare's website and have a domain name registered with them for you to link to it.

    The way it works then is when someone requests your domain (or subdomain) in their browser, Cloudflare gets the request and redirects the traffic to the cloudflare tunnel client app that you set up in your computer. That app on your machine then redirects the traffic to your other container that is hosting your web service and established bidirectional communication that way.

    The benefits to this system are:

    • Relatively easy setup, especially if you want to expose more services in the future (you'll need to run a separate cloudflare container for each service exposed though)
    • No need to open ports in your router or firewall on your home network. Cloudflare just knows how to communicate between its server and its client app on your computer (I think you have to set up an access token so it is secure).
    • None of your users ever learn your home IP address because once they connect at Cloudflare's server, they don't get any more knowledge than that about what's on the other side.
    • It's free (not including the cost of registering your domain)
    • You don't have to worry about changing anything if your ISP randomly changes your IP address. Hell, you could even move to a new house and take your computer with you and you wouldn't have to reconfigure anything.

    Downsides:

    • You have to trust that Cloudflare is not scraping all the traffic going through the tunnel.
    • Some people have a moral issue with giving Cloudflare more responsibility for hosting "the Internet". We already rely on their infrastructure heavily for large sections of the Internet. If they ever become malicious or compromised, there is a lot to lose as a society.

    I believe you can use Wireguard and a rented VPS to recreate this setup without Cloudflare but it will require a lot more knowledge in order to set it up with more points of failure. And it would cost more because even though Wireguard is FOSS, a VPS will cost you a monthly fee of at least a few bucks per month.

    I currently have 2 services exposed using Cloudflare tunnels on my Unraid system at home. They've been running for over a year now with 0 interruption.

    • Thanks for the detailed explanation, really appriciate it! Learned a thing or two here :)

  • Biggest problem will be BW and latency to your lab from the Internet. I would use dedicated hardware and subnet for it. Security wise, if you can make your site 100% static it will help a lot with security. I'm personally set on AWS S3 + CloudFlare combo with static site generator running in my lab. Yes it is not really "self hosted" but worries free solution for me.

  • There’s nothing wrong with just using a VPS for this. Despite what some mouth-frothing hobbyists will tell you, it’s still well within the realm of self hosting. There’s just no reason or difference for hosting a blog on your UnRAID server vs a VPS.

    If you really want to be some kind of purist and only use your own hardware, then you could configure a web server that can reverse proxy on your UnRAID server and forward port 443 in your router to your UnRAID box, but you’d have to change your UnRAID access port to something else. You’d want to keep this web server docker container up to date, and preferably see if you can implement some kind of WAF with it or in front of it. You’d then forward the requests from this web server to your ghost container.

    A better idea would be to use a different piece of hardware for this web server reverse proxy, like a raspberry pi or something, and put it on a different subnet in your house. Forward 443 to that, then proxy the connection back to UnRAID, in whatever port you bind the ghost container to. Then you can tighten access that raspberry pi has. Or hell, host the blog on that hardware as well and don’t allow any traffic to your main LAN.

    There are half a dozen better ways to do this, but they all require you to rely on a third party service to some extent.

50 comments