Category: Ghost

  • My time with Ghost is at an end…for now!

    My time with Ghost is at an end…for now!

    I have to be very clear from the outset, that I am not referencing the Ghost devices that were seized as part of a multinational raid, but rather the Ghost blogging software.

    I switched to Ghost for a 2nd time back in March 2021 after they released Version 4 and I have been using it quite a bit between then and now.
    I just wanted a simple way to blog without having to deal with plugins. The editor was quite powerful and it was a great experience,

    So why did I change?

    In the more recent updates, Ghost has been adding features to the editor that would help with linking posts to old post and edit images directly on the website. But I couldn’t. The linking of old posts feature was breaking with no helpful warning, so I hoped that the next versions would help [They didn’t] and their image editing tools were made available for free for Ghost Pro subscribers but not for people that are self-hosting.

    And that is another thing… Ghost really don’t want you self-hosting the software for Production. They do not provide support for self-hosting installs, and that is a disappointing factor that I had to deal with, and was the ultimate reason for changing.

    So here I am. Back on WordPress.

    I did ask on Mastodon if there were alternatives to try out.

    I really wanted to try WriteFreely, but no matter what I did… I couldn’t get it to work at all. I probably didn’t have any patience to troubleshoot it. I will revisit this one day and try and get it working.

    I was advised to check out ClassicPress. While it is cool in theory and would probably work for certain setups, it was not for me. Thankfully, I was able to convert the work that I did on ClassicPress to WordPress via a Manual Update and everything has been working great.

    I am not a fan of Gutenberg, but I put some time and effort in and managed to re-create the home page and the posts pages to be very similar to my Ghost site.

    You may see references to “signing up for a newsletter”. No one signed up. And that’s OK.
    This blog is a hobby and I do not rely on it to pay my bills at the end of the day!

    I am using 8 plugins on this WordPress site, and at the moment, I wouldn’t need any more to (mostly) re-create the experience that I had in Ghost.

    • ActivityPub – This one was given. While Ghost are actively working on ActivityPub, (which I appreciate), I have my fears that it would only be available to their Pro users and will provide Zero support to people on self-hosting.
      • You can now follow this blog, either put the URL for this site, or @padraig@padraig.blog into the search of your Fediverse client, and you can see when I release a new blog post!
    • Connect Matomo This is for website analytics. I switched from Google Analytics to a self-hosted Matomo install in 2022. This was done when I no longer wanted to be shackled into Google’s ecosystem.
    • Instant Images – I love Unsplash and I have used them quite extensively on this blog over the years and I do not plan on changing this. It also has support for Openverse, Pixabay and Pexels.
    • Shortcorder – I used ‘Snippets’ in Ghost which was like canned text. It is used for the footer of my posts.
    • Spectra – This is a plugin that gives you access to more blocks for Gutenberg. It is mainly used on the home page for the posts layout. I try to use WordPress’ own blocks where possible.
    • WP Dark Mode – If users want it, there is a 🌙moon at the bottom of the page that will switch it to a Dark Mode.
    • Redis Object Cache & WP Super Cache – For object and page caching, respectively.

    The new WordPress site is only a few days old, and I am still tweaking it to my liking!

    If you have suggestions on how I can improve the look, feel, functionality of the site, please let me know on the Fediverse.


  • Changing my Digital Mindset going into 2023.

    Changing my Digital Mindset going into 2023.

    The last couple of months within the social media industry has been wild, to say the least.

    Whether it’s Elon Musk buying Twitter for $44 billion and subsequently changing the platform, or people signing up for Federated services like Mastodon/Pixelfed/PeerTube, there has been a sense of bringing the internet back to how it should be.

    Once the mainstream (non-techie) audience figured out that the likes of Mastodon are: ‘Just like email… It doesn’t matter what provider they are with, they can communicate.’, things have been looking more positive in terms of growth.

    We have become sensitised to a ‘walled garden’ approach for over 15 years. Whether that is Facebook, Twitter, or even going back as far as Bebo. These are/were walled gardens that you could not have communicated with others on other platforms.

    🕸️

    While Mastodon has been going since 2016, it has slowly been gaining traction. Ever since the rumblings of Elon buying Twitter were heard earlier this year, some people decided to jump to Mastodon. While some stayed, many went back to Twitter.

    When the deal was done on October 28th 2022, that is the day that Mastodon really took off. It exploded in popularity bringing servers to their knees. Many instances were locking themselves down to contain the onslaught of sign-ups. Even Mastodon.ie within the first couple of weeks experienced some hardships but with the generous community, we were able to come together to make Masotodn.ie a new home for Irish Twitter.

    This got me thinking. I want to embrace Federated services like Mastodon/Pixelfed going forward. I want to help make the Fediverse increase in popularity. And the best way to do that is to use it as much as I can and utilise it for my blog, websites and other content.

    Therefore, in 2023,  I have decided on the following:

    • Using Mastodon as my ‘replacement’ for Twitter posts.

      • Let’s be real here, we all know for the majority of people, Mastodon is not going to be the replacement for Twitter and that is something that I never want Mastodon to be. I see Mastodon (and other microblogging services) as an ‘Alternative’ to Twitter.
      • And the simple reason for that is there are journalists, companies and celebrities that either will not come over or will never be introduced to it. I, personally, am not going to completely abandon Twitter or close my account. I will be keeping it, and using it to browse content but I will not be tweeting as much if at all.
    • Use Pixelfed as much as Instagram.

      • I have not given Pixelfed a proper chance as a solution as I would post most of my content on Instagram. I am going to be making an effort in 2023 to post more on the platform. Whether that will be random food pics, drink, or whatever.
    • Learn more, deploy or sign up for new services that use the Fediverse.

      • This one is simple, I will be signing up and trying out new things this year. Some may stick, and some may not. But hopefully this time next year, I will be able to talk about products/services that have either come onto the scene or improved their existing products/services and hopefully be able to recommend them as an alternative to existing services.

    And I want to make something clear, while my focus will be on this new adventure, I want everyone to understand that everything is an alternative. That is what they should be treated as. Not replacements.

    Since Ghost (the platform that I am using for this blog) currently doesn’t have ActivityPub support, I will be spinning up a WordPress blog with an ActivityPub plugin and will be cross-posting my posts there. You can follow @padraig@w.pf.ie or searching for https://w.pf.ie/author/padraig/ [Update: September 2024, this has changed. This blog is a WordPress site now!]

  • Swap from SQLite to MySQL 8 for Ghost

    Swap from SQLite to MySQL 8 for Ghost

    Whenever Ghost released 5.0 back in May, they made a change so that Ghost no longer supports SQLite3 or MySQL 5.

    I didn’t mind running SQLite until the recent 5.9 changes on the Docker image for Ghost changed all of that. So now, if you try to run Ghost via SQLite3 on your Docker container, it will stop working.

    Obviously, if you still want your site to run, you would either need to continue to use a older version of Ghost (Eg. Anything <5.9) OR change to MySQL 8.

    Unfortunely, if you are running a modern day control panel like Plesk or cPanel, you may not be able to use MySQL 8 as it may have only been distrbuted with MariaDB. MariaDB is not supported on Ghost either. Solely Oracle’s MySQL 8.

    So if you already have MariaDB installed and you do not want to go through the hassle of going through the task of switching database engines and potentially causing issues for non-Ghost sites, then carry out the following:

    ⚠️
    🚨

    This will involve creating 2 Docker containers:

    • A new Ghost docker container
    • MySQL 8 Docker container.

    We’ll quicky go through the MySQL 8 Docker set up.

    • Volume Mapping should set to /var/lib/mysql and the 2nd box should be set to /var/docker/<container_name>/mysql

      • You can put this anywhere that you like, but I advise keeping it within the /var/ directory for ease of access.
    • Uncheck the ‘Automatic Port mapping’ and you will be presented with 2 ports.

      • Port 3306 would already be used by MariaDB so change this to another port. I chose 3307.
      • Port 33060 would also be used by MariaDB so change this to 33061

    Where it has Environment Variables, add the following:

    • MYSQL_ROOT_PASSWORD and in the 2nd box, add in your root password. This is caps sensitive, so ensure this is strong.

    🚨

    Now with the database server created, we will need to create the database, for this, you will need to drop into the shell for this container.

    In SSH, connect to your server and ensure that you are on root user.

    • Type docker exec -it <mysql_docker_container> /bin/bash/ eg: docker exec -it mysqleight_docker /bin/bash and press enter.
    • Type mysql -p and enter in your MYSQL_ROOT_PASSWORD that you set earlier. Now you should see mysql >
    • Type CREATE DATABASE db_name; (Replace db_name with the new name of your database)
    • Type exit; to drop out of the MySQL shell and then Ctrl/Cmd+D to drop out of the docker container.

    Now to set up Ghost.

    Create a Ghost container as per my guide here:

    Sidenote: The above link should be a bookmark and look fancy and shit, but because I am using a .blog TLD, it breaks! Mental! I have already reported it to the Ghost devs but they are not looking at it. 🙄

    When you are setting the “Environment Variables”, you will need to make the following additions:

    ⚠️
    • database__clientmysql
    • database__connection__host123.123.123.123 (Your Server IP address)
    • database__connection__userroot
    • database__connection__password**************
    • database__connection__databasedb_name
    • database__connection__port3007

    Press “OK” and this will create a blank new Ghost site.

    Create your site as per normal, then go to https://<site>/ghost/#/settings/labs to import your content.

    Then copy your content folder back to /var/ghost/my_new_awesome_ghost_container/content – Restart the Ghost container and most (if not all), your posts, content, themes and everything should be back.

    You can update the Ghost container as you would have before.

  • Padraig.blog Update June 2022

    Padraig.blog Update June 2022

    Update: September 2024 – How funny lol… I am back to WordPress!
    Consider everything below void and null.


    Hey everyone, it’s been a while since there has been an update with the site.

    Back in April 2021, I moved from WordPress to Ghost for the 2nd time (I did it in 2017/2018 I believe) and I can tell you that the software has gotten leaps and bounds better.

    I am really enjoying blogging on Ghost now and I enjoy the simplistic experience of the admin panel for Ghost compared to WordPress. It makes me want to write MORE.

    So, I am announcing a change:

    All posts going forward will now be behind a membership wall.

    There will be 3 tiers:

    • FREE – Absolutely zero payment and you get access to all the posts.
    • SUPPORTER – Only if you absolutely wish to support. You will get access to all the posts, plus some exclusive, more personal posts… Stuff that I generally wouldn’t share. It’ll not be a regular thing either.
    • SUPER SUPPORTER – Same as SUPPORTER, but only if you wish to contribute more money.

    Payments are done through Stripe. No PayPal. Sorry.

    There is now also an option as an existing user (And after you sign up) to only get wrestling and / or jukebox posts.

    Click the PF logo on the bottom right to bring up your account settings and choose ‘Email Preferences’

    Feedback is always appreciated on Twitter: @PadraigFahy

  • How to upgrade Ghost 5 on Plesk Obsidian

    How to upgrade Ghost 5 on Plesk Obsidian

    This is a follow-on to my previous post about installing Ghost 5 on Plesk Obsidian. Please check it out!

    🚨

    This is actually really simple, but, we want to be protected first!

    Go into your Ghost site, click on the Cog “⚙” at the bottom and click on “Labs” and click on “Export your content” to download the content.

    When that is done, head into Plesk.

    • Go to “Docker” on the left-hand side.
    • Find your container. Eg. padraig_is_awesome
    • Click on “Details”
    • Click “Recreate”
    • Choose the latest version numbered. Do NOT choose latest
    In this example: “4.0.1 (Current)” is the version that I have installed currently and we want to choose “4.1.0” as the new version!
    • DO NOT CHECK THE BOX for “Reset variables to default”. This will break your site!
    • Click on “Recreate” and after a few seconds, it will be upgraded.

    You can check the version of your site by going into your Ghost admin panel, clicking on the avatar on the bottom left and clicking on “About Ghost”

  • How to install Ghost 5 on Plesk Obsidian

    How to install Ghost 5 on Plesk Obsidian

    This is an update to the Ghost 4 install guide from March 2021. The instructions are pretty much the same.

    UPDATE: 20th December 2022 – This guide has been updated to include instructions on implementing Ghost with MySQL 8.


    Yesterday, May 23rd, Ghost released Version 5 to everyone which contains support for new custom premium tiers, multiple newsletters, special offers, detailed audience segmenting, and expanded analytics.

    They have also expanded their ‘cards’ feature which is embeddable content native within Ghost. They have support for videos, podcasts, callouts (Which will be demonstrated in this post) and even N /// F /// T's via OpenSea URLs (but that is something that you will probably not see here)

    A full look at the changelog for Ghost 5 can be found here:

    https://ghost.org/changelog/5


    So let’s install Ghost on Plesk.

    🚨

    Prerequisites

    • Plesk Obsidian – (I am using 18.0.43)
    • Docker extension (This is already preinstalled, but you should check in the ‘Extensions’ menu to make sure)
    • MySQL 8 (MariaDB is not supported) – Ensure that you create a new database and note the details. [If you are on Debian (like me), you will need to install a MySQL 8 Docker container in order to use it]

    Installing Ghost

    • Go to “Docker
    • In the search box, type in “Ghost” and press enter.
    • You will see “ghost” with the [OFFICIAL] tag. Click the highlighted arrow and choose the latest version (This may say 5.0.0 or similar. Do not choose latest or 5.x.x-alpine)
    • This will download the image and bring you to the next screen.

    Configuring Ghost Docker Container! (😨)

    🚨

    • Container Name: Call this whatever you want, ideally something relating to your site. For this example, we’re calling this padraig_is_awesome
    • Check the box for ✅”Automatic start after system reboot
    • Un-check the box for “Automatic port mapping
      • Manual mapping: 2368 to external 32778
    • Volume mapping:
      • Container“: /var/lib/ghost/content
      • Host“: /var/ghost/padraig_is_awesome/content (replace padraig_is_awesome with your container name from the top of the page!
    • Near the bottom of the page, click on “Add Variable
    • In the blank boxes, type url in the first box and your URL (eg: https://padraig.blog in the second box (Make sure this domain is registered and added to Plesk)
    • Add the database details:
      • Ensure that the database has been created first before proceeding. The information below is just sample data and should not be used!
      • database__clientmysql
      • database__connection__host123.123.123.123 (Your Server IP address)
      • database__connection__userroot
      • database__connection__password**************
      • database__connection__databasedb_name
      • database__connection__port3006

    Your screen should look very similar to this:

    • Now click “OK” and let it install.
    • Go back to “Websites & Domains” and find your site, click on “Docker Proxy Rules

    • Click “Add Rule
      • URL: Leave this alone
      • Container: Choose your container
      • Port: This should say 2368 -> 32778
      • Click “OK

    • Give that a couple of minutes for it to work and you can access your site via https://padraig.blog/ghost (Obviously replace padraig.blog with your own domain name)

    And you should be good to go!


    Frequently Asked Questions!

    What if I want to run a 2nd or 3rd Ghost blog on Plesk?

    Repeat the steps above, the only thing to change are:

    • The “Container Name
    • The port, change it from 32778 to 32779

    What if I want it at domain.com/blog?

    • Indicate this in the url on the setup page.
    • And when you add it in the rule on the “Docker Proxy Rules” page, add blog where it says “URL

    I want to move this to/from a subdomain from/to a naked domain?

    • Go into the “Docker Proxy Rules” and remove the rule from here.
    • Go into “Docker” on the left-hand side.
    • Click on “Settings” beside the container and adjust the url in here. This will more than likely restart the container.
    • Re-add the “Docker Proxy Rules” to the new subdomain or naked domain.

    How do I access the files if I want to import themes or other content?

    • Connect via SSH to your server (FTP will not work)
    • Navigate to /var/ghost/$containername/content

    If there are any other questions, hit me up on Twitter and I will try to help where possible, but as mentioned, I am not an expert. Do not rely on me to resolve your issue. Try StackOverflow, Plesk’s forums, Ghost’s forums, Google, DuckDuckGo.