How hard to self-host?

I’ve created a droplet on Digital Ocean for using ghost. As many others, I’ve suffered some issues with memory and fixed it with swap memory. I hope that will help. Too early to tell.

Anyways, my question are for those who self host in some way. First, some context;

I have used WordPress for years, both self hosted on a gazillion web hosts and most lately on my own VPS with a few panel software. It went well, until it did not. The server has crashed multiple times, and that led me to going back to WP.com with my blogs. However, that service is not as good as it once was. It’s slower and the free plan does not offer as much as before.

That is why I now host a Ghost blog, and merged all of my blogs onto one site, and I’m using the cheapest plan on DigitalOcean to do so. Besides the memory issues, it’s pretty good.

My question to all of you who self host is: how often do you have servers or droplets crash when you self-host your Ghost blog(s)? Never, once a month, once in a blue moon, or three times per week? You get the gist. The purpose of my self host is to only host Ghost on it, and only stuff that relates to the Ghost install. No other stuff is meant to be there, like a WP install, or other free stuff.

I do not want to pay for managed hosting with my Ghost blog because it’s so darn expensive. When I used to run my WP blogs on web hosts, I could get away with as little as $3 per month, so why pay $9 or more and get so little from it? Or pay $25 or more when I can self-host for like $5! Self-hosting it is, but I would hate to have my server crash on me constantly.

I have nothing against updating stuff myself, connecting over SSH and handle a VPS, but the crashes worry me, if they’re gonna happen. Any advice is helpful.

Btw, I’m a junior developer, so I know code, just not an expert at VPS’s, Linux servers etc, but I’m willing to learn.

Thank you.

I self host Ghost, and used to self host WordPress sites, too.

Nowadays: never.

Since moving to Hetzner from Linode I have had little unplanned downtime, and none since tuning MySQL. I found DO and Linode entry plans unsuitable for Ghost (and WP) with the server falling over when constrained by either memory or CPU.

I use Ubuntu 20.04, and have setup automatic updates for the system, and usually update Ghost via SSH every few weeks unless there’s a security announcement.

Automatic updates send me a notification email, and I monitor this to see if a restart is needed. I then login to the server, do any outstanding updates, and schedule a restart. I don’t run swap.

If cost is important, check out Hetzner. Snapshots and backups are included in all packages, and you only pay for snapshot storage, which for me is currently €0.08 per month. Like for like, Hetzner offers more for the same cost compared to Linode and DO. A cloud server starts from around €4.00 pcm.

2 Likes

Here’s a comparison that I find helpful:

I find it helpful because it lays out all the considerations you should have when making this decision.

That being said, I’ve had a self-hosted Ghost site on the absolute cheapest DO droplet for several years. The only difficulty I’ve faced is when it’s time to upgrade Ubuntu. In these cases, I’ve found the $1 add-on for snapshots invaluable :sweat_smile:

4 Likes

I self host, and I have to say that Digital Ocean it’s not optimized for Ghost AT ALL. I needed to spend several days to setup the droplet to avoid it crashing. First of all, you should get a more expensive droplet, with at least 2 or 3 GBs of RAMs, otherwise your droplet will crash even with ZERO visitors. You can solve this even with the basic 1GB Ram Droplet, but you will have to do your research and testing, by following guides like this one: How To Add Swap Space on Ubuntu 20.04 | DigitalOcean

1 Like

After I followed the previous guide and also this one Fixing Ghost Memory Spikes & Server Crashes I never had any other problem. Also I strongly suggest you to put your droplet on Cloudflare (even the free one it’s good) it makes everything much more lightweight and fast.

2 Likes

Thank you for that information. I checked out Hetzner a little yesterday, and they certainly have good prices. The setup you have seems like what I’m in need of. I just would like to SSH every once in a while for an update to ghost, and basically never think about that I’m hosting on a VPS. Thanks again!

1 Like

Thank you for that info.
Yes, DO is nice. I just hope that it will work better now after I fixed swap memory thingies. Time will tell. I do think, in that article, that they exaggerate the self-hosting costs. It can be as cheap as $5 including backups and everything else needed, not minimally $100 :joy:. Very good information though, if you wanna self host.

1 Like

Yes, I have fixed swap memory thing, I wrote that in my original post. I have no idea if this will help, because I’ll most likely find a cheap VPS somewhere and try installing ghost on that. If I have to pay for DO droplet with 2GB memory, It will cost me at least $10 and then it sort of loses it’s purpose of having a droplet on DO.

1 Like

Well, with Ghost the droplets on DO still make sense because it’s one of the few VMs with some kind of “support” for Ghost. I wouldn’t suggest you other stuff to self-host Ghost. It might a bit expensive, but it works very well and there is the possibility to add also many website in the same droplet…

1 Like

There’s nothing unique with DO necessary to host Ghost albeit they do have a prebuilt image. There are many other service providers that fully support hosting Ghost.

The requirements are documented here:

And build instructions here:

2 Likes

Thank you @block and @mjw for the info.
I’ve decided to try out a VPS at Hetzner. Yesterday I tried to install Ghost, but it fails after downloading the latest version and then I’ve gotten the famous “ghost directory not recognized” message. I will try again today, because I don’t know what I’ve missed that has made this happen. I hope it will work.

Either way, the current DO installation seems to work fine after the swap thing, so that’s good. I don’t think my blog will have a huge following. None of my readers have so far signed up to become members, even for free so we’ll see how it goes. I’m just happy to be able to write blog posts and having people reading them.

Thanks again for your help and input.

1 Like

On that topic, I currently self host with 1-click droplet but I would like to ask another question : how hard is it to self host with Docker in comparison with 1-click droplets ? What are the pro and con of Docker when hosting various Ghost blogs ?

Well, I’m already having an issue with Docker. I posted my topic issue this morning:

Have you tried 1 click Droplet before to compare ?

No. I’m keeping it as cheap as possible by hosting it on one of my servers on my home LAN. True (more challenging) Self-Hosting.

on what machine do you host Docker ?

I host 3 Ghost blogs and Matomo on the smallest Linode size… or at least I did. It started freezing and crashing nearly daily once I added the third blog. Upgrading to the next size up fixed that.

1 Like

I use a mixture of AlmaLinux 8 and 9 on my LAN. For my Ghost machine, I deployed my first version of 9. The machines on my LAN, as far as hardware, is a mixture of physical and virtual machines, and a couple of Raspberry Pis.

I wanted to come to this topic to add another important point for the self hosting people out there. Using cloudflare is very important if you are at the low tiers on Digital Ocean, even if you have swap memory currently setup. But unfortunately Cloudflare need some time to be understood because it has many settings to customize. Especially the settings for the Cloudflare cache everything helped me to get a 100/100 score on Gt Metrix quite easily. Here’s the tutorial for wordpress sites, which works also for ghost (just change /wp-admin* with /ghost* in the exclusion) Cloudflare Cache Everything Improves Wordpress TTFB By 90%

2 Likes

Do you think proxying A records for both root domain and www would help ? I am currently trying to set it up but modifying my Nginx .conf does not work.