{"id":15471888,"url":"https://github.com/itznotabug/ghosler","last_synced_at":"2025-03-17T09:04:38.560Z","repository":{"id":211567775,"uuid":"729479359","full_name":"ItzNotABug/ghosler","owner":"ItzNotABug","description":"Send newsletter emails to your Ghost CMS subscribers \u0026 members, using your own email credentials!","archived":false,"fork":false,"pushed_at":"2024-09-15T09:44:32.000Z","size":528,"stargazers_count":63,"open_issues_count":3,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-05T04:11:47.924Z","etag":null,"topics":["email-newsletters","ghost","ghost-cms","ghost-newsletter","newsletter-mail","newsletters"],"latest_commit_sha":null,"homepage":"","language":"EJS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ItzNotABug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-09T11:12:16.000Z","updated_at":"2025-03-01T12:19:00.000Z","dependencies_parsed_at":"2024-01-18T10:30:17.184Z","dependency_job_id":"441a86af-7cdc-4c6e-a50d-f52e41f3cc21","html_url":"https://github.com/ItzNotABug/ghosler","commit_stats":{"total_commits":227,"total_committers":2,"mean_commits":113.5,"dds":"0.026431718061673992","last_synced_commit":"3d109fd5681b73c96d1ea01cb0ba62fe0f245157"},"previous_names":["itznotabug/ghosler"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItzNotABug%2Fghosler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItzNotABug%2Fghosler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItzNotABug%2Fghosler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItzNotABug%2Fghosler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ItzNotABug","download_url":"https://codeload.github.com/ItzNotABug/ghosler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244006258,"owners_count":20382441,"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":["email-newsletters","ghost","ghost-cms","ghost-newsletter","newsletter-mail","newsletters"],"created_at":"2024-10-02T02:22:08.590Z","updated_at":"2025-03-17T09:04:38.519Z","avatar_url":"https://github.com/ItzNotABug.png","language":"EJS","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Ghosler - Ghost Newsletters 👻\n\n**Ghosler** enables easy sending of newsletters using your own email and SMTP credentials.\\\nThis is ideal when you are just starting out and have a small to moderate user base.\n\nIt is helpful for bypassing the limitations of the hardcoded Mailgun setup and supports many analytical features, along\nwith the capability to use **multiple** email accounts.\n\n---\n\n### Table of Contents\n\n- [Screenshots](#screenshots)\n- [Key Features](#key-features)\n- [Running Ghosler](#running-ghosler)\n- [Setup Instructions](#setup-instructions)\n- [Testing Configurations](#testing-configurations)\n- [Using Custom Templates](#custom-template)\n\n---\n\n### Screenshots\n\n- **Newsletter**\n    \u003ctable\u003e\n      \u003ctr\u003e\n        \u003ctd\u003e\u003cimg style=\"border-radius: 2px;\" src=\"https://github.com/ItzNotABug/ghosler/assets/20625965/8f909219-7d20-444c-af49-3a4d9b309e5b\" alt=\"Ghosler - Newsletter Preview\" /\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg style=\"border-radius: 2px;\" src=\"https://github.com/ItzNotABug/ghosler/assets/20625965/9264b063-b064-4096-8c52-b10c4b0f4656\" alt=\"Ghosler - Newsletter Preview\" /\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg style=\"border-radius: 2px;\" src=\"https://github.com/ItzNotABug/ghosler/assets/20625965/75798fa3-7246-44f0-867e-0e716a24a1f4\" alt=\"Ghosler - Newsletter Preview\" /\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg style=\"border-radius: 2px;\" src=\"https://github.com/ItzNotABug/ghosler/assets/20625965/e5fdc7c9-f762-46f1-bee2-65a564909919\" alt=\"Ghosler - Newsletter Preview\" /\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n    \u003c/table\u003e\n\n### Key Features\n\n- **Support for Multiple Email Accounts**: Distribute newsletters through various email accounts, dividing member counts\n  accordingly.\n- **Tracking Email Performance**: Monitor email deliverability and open rates.\n- **Customize Newsletter**: You can customize the newsletter via Settings, or go full on by providing\n  a [custom template](#custom-template).\n- **Paid \u0026 Free Members Management**: Ghosler shows a **Subscribe** button to members who do not have access to paid\n  content.\n- **URL Click Tracking in Emails**: Ghosler supports tracking URL clicks in the email, providing more insights on how\n  your members are interacting with added links.\n- **Newsletter Post Feedback**: Gain insights into reader preferences with detailed feedback on each post, including\n  likes, dislikes, and overall sentiment.\n- **Ghost Native Widgets**: Ghosler supports major Ghost widgets (cards) for your newsletter, out of the box.\n- **Custom Email Subjects**: Ghosler allows using customised email subject for your newsletter.\n- **Multiple Newsletters**: Ghosler supports managing multiple newsletters! Publish a post \u0026 select the newsletter to\n  associate with \u0026 instantly send emails.\n- **Docker Support**: Ghosler also supports a straight forward Docker container.\n\n### Running Ghosler\n\n#### 1. Installation with `NPM`\n\nPre-requisites: `Node 18^` \u0026 `pm2` installed.\n\n1. Install the `CLI` -\n\n  ```npm\n  npm install -g ghosler-cli\n  ```\n\n2. Go to the directory you want to install `Ghosler`, make sure its empty \u0026 run below command -\n\n  ```shell\n  ghosler install\n  ```\n\n#### 2. Installation with `Docker`\n\nExecute this script to install or update `Ghosler` via `Docker` -\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/ItzNotABug/ghosler/master/docker-install.sh -o docker-install.sh \u0026\u0026 chmod +x docker-install.sh \u0026\u0026 ./docker-install.sh\n```\n\nIf you already have `docker-install.sh` on your system, simply execute -\n\n```bash\n./docker-install.sh\n```\n\nNow navigate to main site \u0026 edit required settings after completing the Setup instructions below.\n\n### Setup Instructions\n\n1. **Access Ghost Dashboard**: Navigate to your Ghost dashboard.\n2. **Create Custom Integration**:\n    - Go to **Settings** \u003e **Advanced** \u003e **Integrations**.\n    - Click on **Add Custom Integration**.\n    - Name the integration (e.g., Newsletters) and click **Add**.\n    - **Copy** the **Admin API Key** displayed.\n3. **Configure Ghosler**:\n    - Fire up the Ghosler front-end by going to `https://your-domain.com`.\n        - Default `PORT` is `2369`\n        - Default login credentials are - Username: `ghosler`, Password - `admin`\n    - Click on **Settings** button.\n    - Click on **Ghost Settings** \u0026 add your **Ghost Site Url** \u0026 **Admin API Key**.\n    - Add mail configurations in **Emails** section.\n    - Change other settings you wish to and click **Save Changes**.\n      Upon clicking **Save Changes**, Ghosler will automatically create a new `Webhook` in the Ghost Integration (if it\n      doesn't already exist).\n      This webhook enables **Ghosler** to receive information about posts when they are published.\n4. **Only publishing a Post**: If you want to only publish a post \u0026 not send it via email, just add the `#GhoslerIgnore`\n   tag to a post. The internal tag is created for you on the initial setup.\n\nNow as soon as you publish your Post, it will be sent to your Subscribers who have enabled receiving emails.\n\n### Testing Configurations\n\nGhosler defaults to using a local configuration file, `config.local.json`, if it exists. The structure of this file is\nidentical to that in [config.production.json](./configuration/config.production.json) file.\n\n**Note: `config.local.json` should be placed inside the `configuration` directory.**\n\n**Local Builds:**\nMake sure to execute -\n\n   ```shell\n    npm run buildcss\n   ``` \n\nto generate a minified css if you changed any `.ejs` files.\nIf you don't, CSS based changes won't take effect. This also makes sure that the final CSS bundle includes only what's\nneeded.\n\nAnd use below to run `Ghosler` -\n\n   ```shell\n    npm run dev\n   ```\n\nYou can use below for combining the above commands -\n\n   ```shell\n    npm run cleanstart\n   ```\n\n##### Building the Docker Image -\n\n```bash\ndocker build -t ghosler . --no-cache\n```\n\nAfter a successful local build, run the container -\n\n```bash\ndocker run --rm name ghosler -d -p 2369:2369 -v ghosler-logs:/usr/src/app/.logs -v ghosler-analytics:/usr/src/app/files -v ghosler-configuration:/usr/src/app/configuration ghosler\n```\n\n**Note**: For testing the Docker container over a publicly accessible URL, I used `Cloudflare Tunnel` as it doesn't have\na startup page like `ngrok` or the `VSCode`'s dev tunnel and works good for testing the Ghost Webhooks.\n\nAssuming you have `TryCloudflare CLI` installed, you can do something like this -\n\n```bash\ncloudflared tunnel --url http://localhost:2369\n```\n\nThis command will initialize a tunnel and return a URL that you can use to test.\\\nFor more info,\nsee - [TryCloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/).\n\n### Custom Template\n\nIf you want to customize the newsletter template even more, follow the steps -\n\n1. Create a **custom-template.ejs**\n2. Customize it as you like, for reference - you can download the `Base Template` from settings itself\n3. Upload it via dashboard \u0026 that's it! Ghosler will use the new template for preview \u0026 sending newsletter\n4. Disable from settings if you don't want to use the custom template\n\n---\n\n#### And don't forget to `⭐` the project!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitznotabug%2Fghosler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitznotabug%2Fghosler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitznotabug%2Fghosler/lists"}