{"id":14986773,"url":"https://github.com/caminashell/localghost","last_synced_at":"2026-01-05T01:16:28.729Z","repository":{"id":220721341,"uuid":"752379432","full_name":"caminashell/localghost","owner":"caminashell","description":"Modified version of a clean install of Ghost - an independent technology for modern publishing, memberships, subscriptions and newsletters.","archived":false,"fork":false,"pushed_at":"2024-04-23T22:31:33.000Z","size":15301,"stargazers_count":0,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-26T12:26:31.228Z","etag":null,"topics":["blogging","cms","ghost","ghost-blog","handlebars","headless-cms","javascript","nodejs","research","typescript","web-application","yarn-berry"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caminashell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-03T18:58:42.000Z","updated_at":"2024-02-03T20:31:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"8cde2fbd-407a-47d5-9b26-615c45226d5a","html_url":"https://github.com/caminashell/localghost","commit_stats":{"total_commits":7,"total_committers":1,"mean_commits":7.0,"dds":0.0,"last_synced_commit":"3b2840e174b081101e37273bdd44335c36e0efe0"},"previous_names":["caminashell/localghost"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caminashell%2Flocalghost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caminashell%2Flocalghost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caminashell%2Flocalghost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caminashell%2Flocalghost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caminashell","download_url":"https://codeload.github.com/caminashell/localghost/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244836070,"owners_count":20518377,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blogging","cms","ghost","ghost-blog","handlebars","headless-cms","javascript","nodejs","research","typescript","web-application","yarn-berry"],"created_at":"2024-09-24T14:13:30.175Z","updated_at":"2026-01-05T01:16:28.664Z","avatar_url":"https://github.com/caminashell.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Localghost\n\n**TL;DR:** clone. run `./setup`\n\n- **Uses:** [Ghost](https://github.com/tryghost/ghost) Version 5.79.0 / [Casper](https://github.com/tryghost/casper) Version 5.7.0\n- **Project disk usage:** 48M\n- **Installed disk usage:** 591M\n\n## Why does this exist?\n\nNormally to get Ghost up and running you would would simply use the `ghost-cli` as per [official guidance](https://github.com/TryGhost/Ghost?tab=readme-ov-file#quickstart-install). However, it seems some people have run into problems getting up and running, due to permissions or whatever surrounding Node Version Manager (NVM), amongst other weird situations.\n\nFor this project I did the very same thing, but made some minor adjustments to streamline things, and since a friend asked me for help, I provided the eventuality of this initial setup. Later on, I decided to reinitialise the project (to purge the git objects) and publish it for people to use if they wish - you should be able to clone it, run the commands and be up and running without any further messing about.\n\n## Whats different?\n\n- Project updated to use `yarn berry`\n- Stripped node modules, logs and other cache files.\n- The `current` symlink changed from full path to relative.\n- Adjustments to installation and runtime performance.\n- Adjusted hard linked (full) path of various configs.\n- Added blank yarn lock for root.\n- Added git ignore rule set.\n\n## Preparation Assumptions\n\n\u003e [!IMPORTANT]\n\u003e The following on your system would be handy before getting started;\n\u003e\n\u003e - Node Version Manager (NVM) (**not required**)\n\u003e - Node 18 (LTS / Hydrogen)\n\u003e - Node Package Manager 10 (NPM, bundled with Node)\n\u003e - Yarn (just having yarn installed should be enough)\n\u003e\n\n## Install \u0026 Go\n\nReduced the amount of stuff you'll need to do - simply run:\n\n```sh\n./setup\n```\n\n## Known Issues\n\n- Workspace setup doesn't seem to work very well in this project.\n- You cannot seem to install dependencies from root without passing options.\n\n---\n\n## Initial Observations\n\n### [5.79.0] Security vulnerability in many dependency packages\n\n\u003e\n\u003e [!CAUTION]\n\u003e Something I picked up on pretty much from the get go...\n\u003e\n\u003e - **CRITICAL** (1)\n\u003e   - [Arbitrary Code Execution in underscore](https://github.com/caminashell/localghost/security/dependabot/34)\n\u003e - **HIGH** (9)\n\u003e   - [Prototype Pollution in lodash](https://github.com/caminashell/localghost/security/dependabot/60)\n\u003e   - [Knex.js has a limited SQL injection vulnerability](https://github.com/caminashell/localghost/security/dependabot/50)\n\u003e   - [Luxon Inefficient Regular Expression Complexity vulnerability](https://github.com/caminashell/localghost/security/dependabot/49)\n\u003e   - [decode-uri-component vulnerable to Denial of Service (DoS)](https://github.com/caminashell/localghost/security/dependabot/45)\n\u003e   - [Moment.js vulnerable to Inefficient Regular Expression Complexity](https://github.com/caminashell/localghost/security/dependabot/42)\n\u003e   - [Crash in HeaderParser in dicer](https://github.com/caminashell/localghost/security/dependabot/40)\n\u003e   - [Path Traversal: 'dir/../../filename' in moment.locale](https://github.com/caminashell/localghost/security/dependabot/39)\n\u003e   - [Inefficient Regular Expression Complexity in nth-check](https://github.com/caminashell/localghost/security/dependabot/36)\n\u003e   - [Regular Expression Denial of Service in trim](https://github.com/caminashell/localghost/security/dependabot/35)\n\u003e - **MODERARATE** (18)\n\u003e - **LOW** (2)\n\u003e\n\n### [5.79.0] Simply testing the OOB start/stop functionality produced a fault\n\n- According to the Ghost FAQ, it is possibly due to a permissions issue concerning Node Version Manager (NVM)[^1] however, I have no intention of removing NVM from my workstation simply for this project. It is not apparently clear why this is a problem in the first place or what the root cause is.\n- Some issues were posted to the ghost repo on this subject:\n  - ISSUE: [CLOSED: local setup complains about directory permissions #711](https://github.com/TryGhost/Ghost-CLI/issues/711)\n  - ISSUE: [CLOSED: SystemError: Directory is not readable by other users on the system #1532](https://github.com/TryGhost/Ghost-CLI/issues/1532)\n\n#### Environment\n\n```log\nSystem:\n  OS: Linux 6.1 Debian GNU/Linux 12 (bookworm) 12 (bookworm)\n  CPU: (24) x64 AMD Ryzen 9 5900X 12-Core Processor\nBinaries:\n  Node: 18.19.0 - ~/.nvm/versions/node/v18.19.0/bin/node\n  Yarn: 4.1.0 - ~/.nvm/versions/node/v18.19.0/bin/yarn\n  npm: 10.4.0 - ~/.nvm/versions/node/v18.19.0/bin/npm\n```\n\n```git\n❯ which ghost\n/home/\u003cuser\u003e/.nvm/versions/node/v18.19.0/bin/ghost\n❯ npm root -g\n/home/\u003cuser\u003e/.nvm/versions/node/v18.19.0/lib/node_modules\n```\n\n#### Instance\n\n```sh\nghost install local\nghost stop\nghost start\n```\n\n\u003e ```git\n\u003e Running in development mode\n\u003e\n\u003e ✖ Checking system Node.js version - found v18.19.0\n\u003e ℹ Ensuring user is not logged in as ghost user [skipped]\n\u003e ℹ Checking if logged in user is directory owner [skipped]\n\u003e ✔ Checking current folder permissions\n\u003e ✔ Validating config\n\u003e ✔ Checking memory availability\n\u003e ✔ Checking binary dependencies\n\u003e One or more errors occurred.\n\u003e\n\u003e 1) SystemError\n\u003e\n\u003e Message: The directory /home/\u003cuser\u003e/ is not readable by other users on the system.\n\u003e This 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\u003e\n\u003e Debug Information:\n\u003e     OS: Debian GNU/Linux, v12\n\u003e     Node Version: v18.19.0\n\u003e     Ghost Version: 5.79.0\n\u003e     Ghost-CLI Version: 1.25.3\n\u003e     Environment: development\n\u003e     Command: 'ghost start'\n\u003e\n\u003e Try running ghost doctor to check your system for known issues.\n\u003e\n\u003e You can always refer to https://ghost.org/docs/ghost-cli/ for troubleshooting\n\u003e ```\n\n#### Workaround\n\n\u003e [!TIP]\n\u003e Suggested in [#711](https://github.com/TryGhost/Ghost-CLI/issues/711), to start ghost server with the following option;\n\u003e\n\u003e ```sh\n\u003e ghost start --no-setup-linux-user\n\u003e ```\n\u003e\n\n---\n\n## Background\n\n\u003e\n\u003e *This is a project to end a bad habit of dumping my findings, ideas, and thoughts into a platform that is not really suitable for sharing \u0026 cataloguing such material efficiently.*\n\u003e\n\u003e *I chose [Ghost](https://github.com/TryGhost/Ghost) because of its simplicity, setup, the fact it is open-source, and it's branding which resonated with me. Historically, I am not a fond of Wordpress or other \"free\" self-serve blogging platforms like Tumlr, Wix, Blogger, or even Twitter - I wanted something that I could build upon, manage and own myself, at as little cost as possible.*\n\u003e\n\u003e *Humorously, it was also another excuse for me to create yet another (private) repository to play around with.*\n\u003e\n\n## Copyright Disclaimer\n\nI do not own any of this code. The rightful owner is the **[Ghost Foundation](https://ghost.org)**. I only share this project for educational, research, and support purposes. Should the **Ghost Foundation** request the termination of this repository, I will comply.\n\n\n[^1]: Docs / FAQ / Using nvm: Using nvm with local and production installs https://ghost.org/docs/faq/using-nvm/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaminashell%2Flocalghost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaminashell%2Flocalghost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaminashell%2Flocalghost/lists"}