19 Jun 2021
Building A Self-Hosted Journal
My wife keeps a journal, and I’ve been thinking about doing the same. Being the nerd that I am, I wanted something techie, so I built a self-hosted journal.
The idea of keeping a journal interests me. My wife says she finds it cathartic to spend a few minutes at the end of each day reflecting and writing her thoughts down.
But having my innermost thoughts in a book that anyone can pickup and read concerns me. It’s not that I have secrets at such (even though we all have something to hide), but I feel that if it is trivial to pickup and read the book, I may subconsciously censor what I write.
Goodness knows my grey matter needs some organisation, so I wanted to plough on start journaling, albeit without a book.
I needed a technical solution…
Technical journaling options
I recently heard about Automattic (the company that owns WordPress among other things) acquiring Day One. I didn’t know anything about Day One, but assumed it would allow me to sync my journal anywhere.
Unfortunately that’s not the case. All I could have done with Day One was sync to their proprietary platform. If I’m not prepared to have a book in my home with my grey matter drivel inside it, there’s zero chance I’m going to store it on a random server somewhere.
There were other options, but they were all similar to Day One in terms of storing my journal. They were a non-starter too.
I needed a self-hosted journal.
Self-hosted journal options
A quick search showed some reasonable options for my journal, this one being the most promising. Problem is, I would have needed to faff around with infrastructure to run my journal on.
I didn’t want to spin a dedicated server just for my journal, and even though I can use Docker on my Synology, like I did with Pi-Hole, I’m not familiar enough with it to host something like a journal.
So I went with what I know best - WordPress!
I can easily run WordPress on my Synology and with the WordPress app on my phone/tablet, it would be trivial to add posts every day. Originally I wasn’t going to expose my journal to the Internet, but if I wanted to use the WordPress app, I needed to. Plus, being able to add entries to my journal from anywhere is really helpful.
Instead of exposing the entire thing to the Internet, I installed a couple of plugins that lock down my self-hosted journal and make it work how I needed it to.
Protecting my journal
First thing I needed was to password protect my journal. That’s easy, I installed and activated the Force Login plugin and hey presto! My journal required a login to see any of the site. To add an extra layer of security, I added the Two Factor Authentication plugin to, you know, add multi-factor auth to my journal (that’s very important).
I also wanted to change the login screen slightly, so I installed the ColorLib Login Customiser so I could make some tweaks to the login page. After 5 minutes playing around, here’s what the homepage (or any page if you’re not logged in) looks like:
My self-hosted journal theme
I wanted something really sparse for the actual theme of the site. My journal doesn’t need pages, contact forms, comments or any of that jazz. I just need a list of journal entries and a simple way of adding more, should I want to do so via my browser.
I have a GeneratePress Pro lifetime license, so I went with the GeneratePress theme. That’s what the theme on this site uses, so I know it’s lightweight and easy to customise. Lucky for me this simple, self-hosted journal didn’t need much customising.
After 30 minutes or so, I had something I was relatively happy with. It’s just a simple white site with grey
serif text. All nice and simple:
The navigation menu has a link to the home page, and a button to add a new entry.
I also installed the Hide Admin Bar plugin as I don’t need the WP admin bar on the front end. I’ve since found out that this can be done from the WP user profile settings, so I deleted this plugin (thanks Jan Boddez).
That’s it, I was done. In total it took me around 40 minutes to go from absolutely nothing to a site that was ready to accept my brain farts.
A week in…
I’ve been writing my journal for around a week now and the process is working well. I’ve mostly written entries using the WordPress app on my iPad during the evening, but there have been a couple of occasions where I’ve written entries from my web browser. So it’s working well.
I don’t think I will need to fiddle with the theme as my journal won’t have any visitors, except me. It’s more a way to accept content, rather than consuming it. As long as the reading experience is pretty good and content-focussed, that’s all I need.
Now you may think I’m mad putting my journal online, when I was concerned about it being in a book in my house. What if my site gets hacked? Honestly, I don’t think it will get hacked. WordPress is very secure if you keep it updated and take some simple precautions. The case for WordPress is very compelling in my opinion.
I could have gone with markdown files, or a note taking app like the brilliant Standard Notes. But I wanted something that was dedicated to the job of taking my journal entries and displaying them. Shoehorning them into a note taking app didn’t feel right.
Markdown files would have probably worked, but adding images to journal entries would have proven difficult from a mobile device. I needed the process to be really simple, or I know I would be less likely to stick to the habit of writing my journal.
All in all, I’m really happy with my little self-hosted journal. I think I can call this little project a success.
Do you write a journal? If so, I’d love to hear about what platform you use for writing yours.