top | item 36659219

It Took Me a Decade to Find the Perfect Personal Website Stack – Ghost+Fathom

136 points| davidgomes | 2 years ago |davidgomes.com | reply

181 comments

order
[+] bhaney|2 years ago|reply
> I actually pay Ghost roughly 200 euros per year

> I just write them in Notion, and then I copy-paste them into the Ghost editor

> every now and then I have to hack some CSS together to fix some bugs

> the theme can only be compiled with an ancient version of npm

> the code is really messy, so at some point I won’t be able to maintain it any longer

> images don’t work very well with my theme

To each their own, but to me this sounds like an absolutely terrible "website stack"

[+] jeremyjh|2 years ago|reply
Well and later they admit:

> So, all in all, I’m paying almost 400 euros per year to host a personal blog.

Seems...a bit much. But what do I know? I've just been using Jekyll since 2013. For a long time now Github has had first-class support for Jekyll and so I haven't even had to mess with Ruby for many years now, I usually just edit it online in the Github UI. I pay $0 a year for this service so my only cost is DNS.

[+] ano88888|2 years ago|reply
Why make life so complicated? it is a simple blog. if you don't want to host it just use wordpress. It works.
[+] HeckFeck|2 years ago|reply
Pelican running on Nginx + cheap £3.50pm vps + £15 annual domain registration. Rebuild and rsync my blog any time there is a new post.

Works out approx. £57 per year.

[+] funerr|2 years ago|reply
I just migrated from Ghost because many of these problems, and lack of basic features like an integrated referral system for my newsletter.
[+] jdsalaro|2 years ago|reply
Or in my case Sphinx + Material Design + [ my magical list of 10+ extensions ] + VS Code + sphinx-autobuild + tox + GitLab Pages = magic

Send help pls

[+] egypturnash|2 years ago|reply
the "wordpress" button on your old-school $5/mo hosting's CPanel is right there my dude

right there

at any time you could have hit that button and spent a while poking around its immense collection of default themes and installed the "I do not like the block site editor, please give me the old editor" plugin and had a big, empty text box just begging for you to fill it with words, all the time you spent faffing about with jekyll and hugo and ghost and your custom style looking for the absolutely perfect version of the the same black text on white ground style that a zillion templates have been made of could have been spent writing blog posts instead

but I guess you gained some experience fooling around with the technologies underlying Hugo and Jekyll and maybe that was surprisingly useful in other parts of your life, and maybe that was better in the long run?

anyway, good luck putting words in that big blank text box you have finally perfected.

[+] raajg|2 years ago|reply
I've tried so many different stacks over the years but I always ended up in the same cycle:

- Spend a lot of time finalizing the stack

- Spend a lot of time styling the new blog

- Migrate some of the posts from the old stack to the new stack

- Write a 1-2 new posts in the new blog

- Stop writing

- After a few months, I come back to writing a post and realize there are dependencies to upgrade, scripts to run, and what not. I give up for at least a year.

After 10 years of having gone into this cycle over and over again, I'm currently using the following setup:

- IA Writer -> Gitlab -> Cloudflare pages

To write a new post, I just have to create a new file in IA Writer and save it. That's all.

A bare bones shell script blog.sh converts markdown into HTML (locally on my mac), invokes git push to Gitlab. And there's a 'Pages' project in Cloudflare which listens to changes to my Gitlab repo, and just statically publishes whatever's in the 'site' directory.

I've written more posts in this new stack than ever before. And I think the best part is that I just need to 'create new file' and 'save'.

[+] idlewords|2 years ago|reply
This genre of post is really the internet equivalent of being an audiophile.
[+] soligern|2 years ago|reply
The difference is audiophiles invariably have good results after spending all that money.
[+] umvi|2 years ago|reply
Or any type of connoisseur
[+] superkuh|2 years ago|reply
I settled on my perfect stack 2 decades ago. nginx with .html and .jpg/.png/etc files in directories on a file system on my home computer with port 80 forwarded (20 years ago it was thttp). For templating I use server side includes which are the perfect balance of utility/expressiveness and a minimal attack surface with no mantainance burden.

Having it on my home computer also gives me massive storage space and ease of editing. The only cost is ~$10/yr for the .com domain. DNS hosting is free from zoneedit (they've been great the last 20 years).

[+] EGreg|2 years ago|reply
So you have to have your computer always on?

How does the DNS thing work? They use a DynDNS client on your computer or what

[+] flandish|2 years ago|reply
I do similar but with hugo markdown and a git repo linked with cloudfare - then it’s hosted on their static free hosting.
[+] ldoughty|2 years ago|reply
My recent / favorite stack is Hugo, built by a Lambda function on git merge to the master branch.

I merge a change to master. Webhook triggers. Lambda builds the static site from a fixed version (for consistency) of Hugo (static site generator) and pushes the files to a CloudFront / S3 Website.

I can revisit my site after a year of non-maintenance and can add something without worrying about version changes breaking the site.. I don't even need any special software -- a text editor and git.

(For Rapid development, I generally run Hugo locally, but I can do a typo or link update from any computer very quickly)

[+] wrboyce|2 years ago|reply
Another vote for Hugo from me, except I use GitHub Actions to handle deployments: both on merge and scheduled so we can forward-date posts and not have to remember to publish them.
[+] earthboundkid|2 years ago|reply
I use Hugo plus Netlify. It’s free and they handle setting up the build step for you. I just push to GitHub/Gitlab and it all happens on its own.
[+] HermanMartinus|2 years ago|reply
I found all the common frameworks to be “too much”. I ended up creating Bear Blog which is pretty opinionated, but all you need for a super speedy blog. It’s developer centric and all posts are written in Markdown.

https://bearblog.dev

[+] tourmalinetaco|2 years ago|reply
Super speedy is right. Wow. Loading GitHub after loading the docs was a true case of whiplash. Really goes to show how bloated and inefficient the Internet currently is.
[+] doo_daa|2 years ago|reply
Your character posing tool looks great!
[+] m3adow|2 years ago|reply
400€ per year on a personal blog? To each their own, I guess.

I host my blogs on GH pages or Netlify. Additionally, I dump the notes I want to share with the world on GH pages as well with the excellent Obsidian Github Publisher [0] Plugin. I don't really care about analytics for a personal blog though.

Works for me, and costs nothing.

[0]: https://github.com/ObsidianPublisher/obsidian-github-publish...

[+] inkcapmushroom|2 years ago|reply
You might want analytics when your personal blog is a medium for pushing referral links though.
[+] cloverich|2 years ago|reply
I briefly used Fathom and think they are great, especially if you are hosting a static site on something like Github pages, or some other equivalent. Yet I regret that I can't get free server-side analytics. My pages are being served by a server, I just want it to count logs for me. If I ever move back to a self-hosted solution, I'd definitely love to give something like goaccess[1] a try.

Any static hosting sites that provide this for free today?

[1]: https://brandur.org/minimal-analytics

[+] schemescape|2 years ago|reply
I've been looking for this as well (edit: meaning I want HTTP traffic info without running my own server). The closest I've found so far (for low traffic sites) is NearlyFreeSpeech.net, which provides HTTP logs. It's cheap, but not free (edit: roughly $2/month--and I think you can go even lower for a single personal site).
[+] rootw0rm|2 years ago|reply
for just tracking visits on a toy site, i use OpenResty + a bit of Lua and Redis, doesn't require cookies or javascript. never stress tested it tho
[+] antigirl|2 years ago|reply
Not a traditional blog, but i was looking at a service for my photography. I eventually almost went with squarespace. But felt pricing was too high if you wanted to add your own custom CSS etc. Also felt bit bloat and I wasn't happy with the templates.

In the end I just made my own from scratch and just use S3 for hosting [manual uploads, as i don't update it often]

simple HTML responsive grid, using tailwind CDN. No build steps.

https://www.stayanotherminute.com/ [yet to compress images, currently 14mb worth of images so mobile data users be warned]

[+] rambambram|2 years ago|reply
Beautiful photos really shine with this simple layout!
[+] hesk|2 years ago|reply
Love your photos!
[+] ashton314|2 years ago|reply
That is a lot of money. I’m glad this guy has the income to sustain that. Pray tell: why spend so much on analytics? I have some analytics for my blog, but it’s little more than something to satisfy my curiosity, so I can get away with simple page counts.
[+] manuelmoreale|2 years ago|reply
He runs a personal blog and that’s already great. I’m baffled by a few choices though. Why bothering with analytics, especially paid ones, if according to his screen the website does less than 50 visitors a day? That seems like an odd choice.

As for the cost, I mean, could a site like this be run for a lot less than that? Absolutely. But if he’s happy paying those money then who cares.

It’s certainly not a setup I’d personally recommend.

[+] silveroriole|2 years ago|reply
At first I thought no way it can be so low, but 99.5k views since 2017 is indeed around 50 views per day. For 400 euros and all this effort... I get similar hits on a free neocities site with zero effort put into search indexing, styling, usability or promotion. Crazy how views add up, just looking at the 99k number I’d think it’s huge!
[+] system2|2 years ago|reply
Correct me if I am wrong but what is wrong with WordPress? Takes seconds to install, can run on a $3 a month hosting without additional effort. Tech is to make life easier, not harder.
[+] iLoveOncall|2 years ago|reply
> Tech is to make life easier, not harder.

Yes, and on top of that a blog is made to post articles, not to spend days tinkering on. Some people just like to make their life complicated to be able to brag about how hard it is.

[+] joe5150|2 years ago|reply
Plus if it matters to you, the Roots stack makes the whole Wordpress experience much more coder-y.

https://roots.io/

[+] PrimeMcFly|2 years ago|reply
It's a bloated mess and a security nightmare.
[+] rad_gruchalski|2 years ago|reply
I have settled on hugo with generated content served from GitHub pages some years ago. Last week I disconnected from Google Analytics in favor of umami self-hosted in Hetzner, and Google Fonts which I now serve directly from my own domain.

Next step is to offboard from GitHub pages and move the blog directly to Hetzner where my analytics are hosted.

[+] susam|2 years ago|reply
It took me about two decades to settle on a personal website stack. It started off as a Classic ASP website back in 2001 but I eventually moved to Common Lisp.

A Common Lisp program generates static HTML files from handwritten HTML content. The website has minimal dynamic elements in the form of comment and subscriber forms, implemented using Common Lisp + Hunchentoot. All content is written in simple HTML, facilitated by Emacs' HTML+ mode. The CSS is basic, offering support for light and dark modes. I host the website on a virtual private server (VPS) running Debian and Nginx. The CSS and HTML layout change very rarely, so it allows me to focus on content.

This stack has proven to be stable and cost-effective, with the server handling low traffic of 1 request every 5-10 seconds or so on normal days. During occasional spikes, like when a page reaches the front page of HN, the traffic increases to about 10-20 requests per second but this is still a piece of cake for the $5/month VPS the website is running on.

"Analytics" is just a handful of make targets in a Makefile that invokes commands like zgrep, sort, uniq, etc. to filter the access logs and show me which posts are getting the most hits, which days are the busiest, etc. That's all. I'm quite happy with this stack and I think this will serve me well for the next few decades.

[+] dfcowell|2 years ago|reply
Ghost is ridiculously good out of the box. Part of that comes from the opinionated stack it demands - support for only one database server, very specific and minimal config options.

I self-host Ghost and Plausible Analytics (along with several other services,) on an Unraid box at home, fronted by Cloudflare, and it holds up well to load. Costs next to nothing, too, since it inherits hand-me-down parts from my main desktop PC.

[+] pheeney|2 years ago|reply
What is your internet speed? Do you host any videos?

I'm self hosting a family blog frontend by Cloudflare but using wordpress instead. The media seems to be a bottleneck for me and I've kept most at 480p. Family a few states away report it takes quite a long time to get anything to load except for the html.

[+] nickstinemates|2 years ago|reply
Just deployed Plausible. It's blocked by default on Ublock Origin, but I've been looking for a good simple solution. This seems good enough for now.

My preference would be to do something with nginx log analysis in Loki to get a broader perspective of all traffic flowing through nginx, but this will do for now.

[+] KronisLV|2 years ago|reply
I took a more traditional approach, focusing on something that's "good enough", which in my case was a cheap VPS and an install of Grav: https://getgrav.org/

Some optional customization for page templates/fonts/CSS, some CI so I can build and deploy it inside of a Docker container, Matomo for analytics that respect privacy (which I already use elsewhere) and some additional web server configuration to hide anything interesting behind an additional login and I'm good. Maybe backups and uptime monitoring if I'm feeling brave, which is what most sites should also have (so copy + paste there).

All of that for under 100 euros per year (could also pay half of that if I didn't host anything else on the server), the blog has actually survived getting on the front page of HN once or twice and requires relatively little maintenance, at least less than a proper install of WordPress, due to its larger surface area.

The best thing is that it's simple enough for me to understand how it works, to be able to move it anywhere as needed and use more or less plain Markdown for writing the blog posts. Here's a quick example of a recent post: https://blog.kronis.dev/articles/ever-wanted-to-read-thousan...

Now all that's left is to find motivation to write more, but at least 90% of my time doesn't go into tinkering with custom fancy solutions, no matter how much I'd love that. Then again, nothing wrong with the alternatives either: 400 euros might be perfectly worth it for some, whereas working with static site generators or even custom CMSes would be a fun experience for others!

[+] kashunstva|2 years ago|reply
A total of 400 € per annum for a personal website? Did I read that right? That's an impressive expense!

For me, domain registration $16.99 CAD + about $1.00 CAD/month in S3 storage and bandwidth costs ~ $29 CAD per annum. I could probably drive the hosting down to zero deploying on Github; but I'm too lazy to deal with it. And _vide infra_.

Truly though, the biggest cost to me over the years, keeping my little weblog is the time/churn created by the quest for the "Perfect Personal Website Stack." At some point, I realized that migrating from platform-to-platform comes with its own costs and "good-enough" is my new watchword. (It's just Hugo deployed to S3.)

[+] embit|2 years ago|reply
I have been using same tech stack for last 10 years happily. LAMP. And can’t be happier. And I use it for everything I do
[+] sergiotapia|2 years ago|reply
The best stack was wordpress.com but that's not sexy enough these days. I get it, my blog is hosted on Hashnode with a custom domain.

My very first blog, from waaaaaay back in the day on free wordpress? Still up and functioning perfectly. Including the image uploads.

I should move back and just pay these dudes. https://lostinthegc.wordpress.com/2011/05/06/the-25-pc-comin...