{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreic52a7o6nhyllcaytjn6nwgcoopwepyemuhg53rtsgdmmluvthuvm",
    "uri": "at://did:plc:5663tqlnsimibmqiqkslonl4/app.bsky.feed.post/3mjseyraxtfa2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreihhdjvbnz2xrvp5cntam34qxsjj3jhvoegcc7ibe6r3hswbk7rwly"
    },
    "mimeType": "image/png",
    "size": 72968
  },
  "description": "Late last year, I began switching my website back from an 11ty static site/blog, to Ghost, since then, I've had fun redeveloping the default theme and encountered an issue or two along the way. This post is about how to solve those issues.\n\n\nWhy Ghost?\n\nBefore we explore the issues, let's discuss the reason I opted to move from 11ty to Ghost.\n\nThere's nothing particularly wrong with 11ty. All it does is generate the \"output\" requested and creates a static site. In some ways, that's a much better",
  "path": "/ghost-error-the-directory-is-not-readable-by-other-users-on-the-system-cannot-find-module-sqlite3/",
  "publishedAt": "2026-04-18T21:27:58.000Z",
  "site": "https://love.edwardcharl.es",
  "tags": [
    "11ty static site/blog",
    "Ghost",
    "WSL (Windows Subsystem for Linux)"
  ],
  "textContent": "Late last year, I began switching my website back from an 11ty static site/blog, to Ghost, since then, I've had fun redeveloping the default theme and encountered an issue or two along the way. This post is about how to solve those issues.\n\n## Why Ghost?\n\nBefore we explore the issues, let's discuss the reason I opted to move from 11ty to Ghost.\n\nThere's nothing particularly wrong with 11ty. All it does is generate the \"output\" requested and creates a static site. In some ways, that's a much better because the functionality and output are more predictable and it makes the attack surface smaller for any potential malicious actors. However, adding posts, particularly long and complex ones, did become a bit burdensome and I found that I was blogging less when I had to load up the entire code base and create a markdown file for each post. There's something to be said for having clean, publishing specific interface especially for how I think and write.\n\nOn that basis, I chose Ghost because it's very clean and minimal and I like the direction it's headed with the integrated social, payment and membership features and because it's much less complex than Wordpress - a platform I used to enjoy, probably about 10 years ago.\n\n## System Considerations\n\nThe issues I'm about to discuss will apply to setups on Linux, specifically Ubuntu. I'm running Ubuntu 24.04 LTS on a home built system with an AMD Ryzen 3900X, X570 AORUS Master motherboard, 128GB Ram, 7TB storage capacity and 2 x AMD RX570 Series Graphics Cards. That might sound like a lot, but this system is about 6 years old now.\n\n**Side note** - One thing that I have noticed, because I also have Windows setups, is that Ghost Development on Windows is more annoying than it should be for what amounts to, basic web development. Because the Ghost devs don't _really_ support Windows, you're required to either use WSL (Windows Subsystem for Linux), or setup a docker container if you want to develop locally which adds overhead to the whole process; in contrast, on Linux the process is as simple installing the Ghost CLI, Making a new folder, and running `ghost install local`.\n\n## Error 1 - The directory is not readable by other users on the system\n\nI initially encountered this error after rebooting my machine after installing Ghost locally for the first time, so it's worth noting that it may not present during the initial install or running of Ghost.\n\nI also got two error codes for it, the first one said -\n\n**Message: Ghost was able to start, but errored during boot with: Cannot read properties of undefined (reading 'members')\n\nDebug Information:\nOS: Ubuntu, v24.04.4 LTS\nNode Version: v22.11.0\nGhost Version: 6.24.0\nGhost-CLI Version: 1.28.4\nEnvironment: development\nCommand: 'ghost start'**\n\nThe second read -\n\n**One or more errors occurred.**\n\n**1) SystemError**\n\nMessage: The directory /home/closebracket/ is not readable by other users on the system.\nThis can cause issues with the CLI, you must either make this directory readable by others or install node and Ghost-CLI in another location.\n\n**2) SystemError**\n\nMessage: The directory /home/closebracket/ is not readable by other users on the system.\nThis can cause issues with the CLI, you must either make this directory readable by others or run `ghost install` in another location.\n\nDebug Information:\nOS: Ubuntu, v24.04.4 LTS\nNode Version: v22.11.0\nGhost Version: 6.24.0\nGhost-CLI Version: 1.28.4\nEnvironment: development\nCommand: 'ghost doctor'\n\nMy initial thoughts when trying to solve the issue were that it was a permissions issue. You can see from the \"SystemError\" messages that `/home/closebracket/` isn't readable, and ghost does setup it's own user when it installs, so perhaps that was the issue. It's also evident from the first error message that ghost was looking for an undefined member variable when reading members, read - permissions.\n\nAs it turns out, when installing locally, the Ghost user is the same user who installed ghost, so in my case, `closebracket`, so the resolution was simple -\n\n`sudo chown closebracket:closebracket -R ~/Source` _Make sure that you adjust the command to suit your own environment. e.g. putting your own user and folder structure instead of mine, otherwise you might break more stuff!_\n\nEnsuring that my user had ownership of all folders and files in the source folder, resolved the permissions issue. Then, for good measure, I updated ghost.\n\nThis led to the next error message.\n\n## Cannot find module 'sqlite3'\n\nGhost still wouldn't start after the update. I got the following error message -\n\nA GhostError occurred. Cannot find module 'sqlite3'\n\nI'm not sure how or why sqlite3 wasn't installed as a npm module, given it had been installed when ghost was initially installed, but the fix is trival. Just install it with the following command - `npm install sqlite3 --save`\n\nIn theory, that should be both errors resolved. It certainly resolved the issues for me.\n\nThe only thing I haven't mentioned is that I had an issue with node versions, I had 22.11.0 installed but the latest version of Ghost required ^22.13.1, again, not a huge issue, just use `nvm install 22` for the latest version and then `nvm use 22`.",
  "title": "Ghost Error - The directory is not readable by other users on the system/Cannot find module 'sqlite3'",
  "updatedAt": "2026-04-18T21:30:27.808Z"
}