Interesting, I managed to screw up my blog. Logging in is impossible through a web browser, I get the message:

502 Bad Gateway

nginx

This happened after messing around with the WP Reset plugin, apparently I deleted some custom table I shouldn’t have… Funnily enough I am still able to use the android app to create posts so not all hope is gone.

Weird things happen….

Edit: Turns out I couldn’t access the login screen for my site but could access the comments section (you know the one where you can approve new comments, then from there Dashboard was broken but I could access the menu Tools -> WP Reset). I had the foresight of creating a snapshot before messing around with the plugin, I just couldn’t find a way to restore it, the more you know

Day 21 of

After my last update about my blog migration, basically all I did was install LiteSpeed Cache plugin and mess around with it.

For reference, lots of documentation goodness here

The most important part to note is that I kept getting bugged by both Google’s PageSpeed Insights and GTmetrix to enable text compression.

After some time reading about compression and Marco Saric’s post, I tried to enable compression by adding some lines of code at the bottom of the .htaccess file (accessible by the plugin through: LiteSpeed Cache->Toolbox->Edit .htaccess ):

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

This didn’t work and realized that gzip doesn’t come enabled by default (most things were commented out) in yunohost’s nginx installation. So I referred to this link and edited the file /etc/nginx/nginx.conf :

gzip on;

add_header Content-Encoding "gzip2";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript

The line

add_header Content-Encoding "gzip2";

is the most important, after that my blog was tested for compression using: https://www.giftofspeed.com/gzip-test/ and https://varvy.com/tools/gzip/ , both test websites see compression enabled.

I’m still not sure about Google’s PageSpeed Insights but GTmetrix sees it as well. Here are my results (for now):

Google’s PageSpeed Insights
GTmetrix

Just for fun (haven’t looked too much into this yet) I am adding the score for Website carbon as well:

So far I am more or less happy with the results and there is room for improvement. Some settings seem to break my Indieweb and ActivityPub plugins.

Day 15 of

In recent days I’ve been busy trying to get my blog up and running on my cheapo Raspberry Pi + Yunohost server setup. The process was fun, so here’s a blog entry about migrating my blog (blogception?) from a writefreely instance to my self hosted wordpress instance.

Why though?

To put it simply: because I can.

On a more serious note, my previous blog was hosted at qua.name and there was nothing wrong with it, but I really wanted to be able to have a bit more interaction,  easy theming, and an overall a plug and play solution with a GUI. Now, theming is possible in writefreely instances with a bit of CSS magic but I wanted to stay away from that, maybe in the future… As for the interaction side of things, the ol’ leave a comment kind of thing is good but there are a lot more possibilities.

One of the advantages of writefreely is the built in federation support, and finding out that there is an ActivityPub plugin (in beta) for WordPress was interesting and another point in favor of the change.

My setup

The first step was buying the cheapest domain name I could find on namecheap.com (after all this is a budget server setup), and if I remember correctly, the deal was $8.5 for 2 years.

Then, obtaining a SSL certificate from Let’s Encrypt and the WordPress app installation through yunohost was straightforward through the admin GUI.

Importing posts as plain text files from my writefreely instance was straightforward as well, luckily WordPress seems to support Markdown in its block editor, so it was a matter of copy and paste, updating links to the old blog posts and changing the published date. Also, I had less than 15 posts so… not a massive effort.

Federation and Indieweb

I installed the ActivityPub plugin and began testing, had a little trouble with the entire posts being dumped as a single toot in the timeline, but that was fixed tweaking the settings:

Which makes it possible to have a neat timeline like this:

While testing this, another concept came to light: Indieweb, I opened another can of worms, so of course I liked the idea and I had to make my blog Indieweb compliant by installing the corresponding plugins.

Here’s a list of the active plugins on my blog:

  • ActivityPub
  • Akismet Anti-Spam
  • Classic Editor (this one is important, post kinds and micropub need it, new block editor is not fully compatible)
  • Companion Auto Update
  • IndieAuth
  • IndieWeb (this is one of the first ones to install, it provides how to get started information and provides a list of other relevant plugins)
  • Micropub
  • Microformats 2
  • Post Kinds
  • Semantic-Linkbacks
  • Simple LDAP Login
  • Simple Local Avatars (To avoid using Gravatar)
  • Syndication Links
  • Webmention
  • WebSub/PubSubHubbub
  • WP Fail2Ban Redux
  • Yarns Microsub Server

Last details

Apparently the theme I am using doesn’t display my h-card correctly through the available widget so after reading Kev Quirk’s post, my h-card was manually added by editing the footer .php file, this is nice because it’s just sitting there not changing the appearance of the blog.

This is also efficient because my yunohost installation defaults the wordpress user email to the selfhosted email, and that is not working at the moment (content for another blog post maybe)

The test in indiewebifyme displays it correctly:

Also I discovered that the default settings of the Webmentions plugin make it so that every kind of interaction is displayed as an avatar and not under the comments section so I just changed this:

The results are shown in this post

There are some more details related to the plugins and using bridgy to link your social media interactions to posts, but this pretty much covers the basics and having a look into the plugin settings gives a better idea on how they work.

Kudos to Ricardo, hs0ucy, pixelroiber, and Robby for helping me test webmentions and federation on my previous dummy site and/or the current one.

Next steps will be looking into optimization and such, for now I think the Lazyload plugin messes up my h-card somehow.

Day 12 of