Ghost: The Open-Source Publishing Platform That Lets You Actually Own Your Audience

Ghost: The Open-Source Publishing Platform That Lets You Actually Own Your Audience

Ghost: The Open-Source Publishing Platform That Lets You Actually Own Your Audience

A newsletter platform that takes ten percent of your revenue is not a publishing tool. It is a publisher that lets you do the writing.
A clean writing desk with an open laptop and notebook The economics of independent publishing have a structural problem. The platforms that made it possible — Substack, Medium, Beehiiv, and their predecessors — solved distribution and took ownership in exchange. Your subscriber list lives on their servers. Your payment relationship runs through their Stripe account. Their recommendation algorithm decides how many new readers you meet. And when the platform changes its rules, its pricing, or its political tolerance, your publication changes with it. Ghost is the most mature open-source answer to that problem, and it is not a fringe project: roughly 55,000 GitHub stars, MIT licensed, running in production for organisations including Apple, Sky News, DuckDuckGo, Mozilla, Kickstarter, and Cloudflare. It combines a blog, an email newsletter system, a membership and paid-subscription stack, and a clean content API in one self-hostable Node.js application. This is a deep-dive on what it is actually like to run, what it costs, where your data lives, and — the part that most Ghost coverage skips — the genuinely non-trivial production requirements that decide whether self-hosting it is the right call for you.

1. What Ghost Is

Ghost is a publishing platform. Not a general CMS, not a website builder, not an application framework. It does publishing, newsletters, memberships, and subscriptions, and it is deliberately narrow about everything else. That narrowness is the product decision that makes it good. WordPress will build you a forum, a shop, a booking system, and a portfolio, given enough plugins and enough patience. Ghost will not. What it will do is give you an editor that is a pleasure to write in, a newsletter pipeline that is wired into the same content, a membership system that converts readers into subscribers, and a site that loads fast without tuning. Concretely, you get: A modern editor. The Koenig editor uses "cards" — image, gallery, markdown, code, HTML embed, video, bookmark, callout, product, toggle, file, audio, button, divider, and more — rather than a toolbar of formatting buttons. It produces clean output and it stays out of the way, which is not something you can say about most CMS editors. Newsletters built in. Every post can be sent as an email to your members, with the same content, from the same interface. No separate email platform, no syncing, no "export the list and import it into Mailchimp" dance. Memberships and paid subscriptions. Native support for free and paid tiers, signup forms, and Stripe integration for payments. This is the feature that makes Ghost a business tool rather than a blogging tool. Themes. Handlebars-based themes, with a hundred-plus free and paid options, or write your own. The templating layer is simple enough to learn in a weekend. Content API. A documented REST API for reading content, which means you can run Ghost headless and build any frontend you like while keeping the editorial interface. Built-in analytics. Traffic and member engagement, without bolting on a third-party analytics script — which, for a privacy-conscious publication, matters more than it sounds.

2. Why "Own Your Audience" Is the Actual Argument

The financial argument for Ghost is easy to make and slightly misleading. Substack takes 10% of subscription revenue; Ghost takes 0%. Over a few years at meaningful scale, that is real money. But if the fee were the only difference, most people would rationally stay on the hosted platform and pay it, because the convenience is worth something. The stronger argument is about what you control. Your subscriber list. On a hosted newsletter platform, the list is on their infrastructure and subject to their terms. You can usually export email addresses, but you cannot export the relationship — the payment details, the subscription state, the billing history. On Ghost, the member records are rows in your own database. Your payment relationship. On Substack, the platform is the merchant of record; subscribers pay Substack. On Ghost, you connect your own Stripe account and you are the merchant. That is more work and it means you own the revenue relationship rather than renting it. Your site and your domain. Your publication is not a subdomain of someone's network, and it does not have their branding, their recommendation module, or their discovery algorithm sitting at the bottom of your articles. Your content's permanence. MIT licensed, exportable, sitting in a MySQL database and a content directory you control. If Ghost the company disappeared tomorrow, the software would keep working — which is the entire point of a permissive licence and a non-profit structure. Your analytics and your readers' privacy. Native analytics mean you are not shipping a third-party tracker on every page view. For a publication whose readers chose it partly for its independence, that is coherent rather than merely nice. The counterweight is honest and significant: you give up discovery. Hosted networks recommend publications to each other and that is a genuine growth engine. Self-hosted, every reader is somebody you found. For writers starting from zero, that trade can easily be the wrong one. For writers with an existing audience, it usually is not.

3. How It Works

Ghost is a Node.js application — Express on the backend, a React-based admin client, and Handlebars for the theme layer. Content is stored in MySQL 8. Emails go out over SMTP through a provider you configure. The components you are actually running:
  • The Ghost application — serves the public site, the admin interface, and the Content API.
  • MySQL 8 — all content, members, and settings.
  • An SMTP provider — Mailgun, Postmark, Amazon SES, or similar, for newsletters and transactional email.
  • A reverse proxy — the official stack uses NGINX; anything that terminates TLS and forwards to port 2368 works.
What is notably absent is a plugin system. Ghost has no plugin architecture in the WordPress sense. Extensibility happens through themes, the Content API, the Admin API, and integrations (custom integrations with webhooks, plus Zapier/Make-style connectors). This is a deliberate constraint: it keeps the core fast and secure, and it means there is no plugin ecosystem to audit, update, and eventually get compromised. For many publications that is a relief. For anyone whose plan involves installing a forum plugin and a shopping cart, it is a hard stop.

4. The Non-Profit Structure, and Why It Matters

Ghost is structured as a non-profit organisation — the Ghost Foundation — funded by selling managed hosting rather than by selling equity. This is unusual enough to be worth explaining, because it changes the incentives in ways that affect you as a user. It cannot be acquired. The legal structure prevents a sale, which removes the most common way an open-source project gets enshackled: a company buys it, then relicenses or sunsets the free version to push people to a paid tier. The business model is hosting, not lock-in. Ghost(Pro) competes on convenience, not on trapping data. The software has no incentive to make self-hosting hard, because the company's revenue comes from people who choose not to self-host, not from people who cannot leave. The licence is permissive. MIT, unconditionally. If the organisation failed, the code could be picked up and continued by anyone, with no restriction — which is a much stronger guarantee than "source available" licences that retain commercial restrictions. This is not charity and it is not a guarantee of good decisions. It is a structural alignment between what the project needs (a sustainable income) and what you need (software nobody can take away). Given how many open-source companies have reneged on that alignment in the last few years — see the licensing changes at several major infrastructure projects — it is worth weighing more heavily than it usually is.

5. Deployment: Two Paths

Path one: the official Ghost CLI. This is the supported route, and it is opinionated: ``bash sudo npm install ghost-cli@latest -g sudo mkdir -p /var/www/mysite sudo chown $USER:$USER /var/www/mysite sudo chmod 775 /var/www/mysite cd /var/www/mysite ghost install ` The CLI then installs and configures MySQL, NGINX, SSL via Let's Encrypt, and a systemd service, and asks you a handful of questions. For a fresh Ubuntu LTS server, this genuinely works and produces a production-ready site in about fifteen minutes. The catch is in the word "opinionated." The official stack is Ubuntu LTS, MySQL 8, NGINX, systemd. Run something else — Debian is generally fine, Alpine or a non-standard layout is not — and you are outside the supported path. Path two: Docker. The official image plus a database, with Caddy or your proxy of choice in front: `yaml services: ghost: image: ghost:latest restart: unless-stopped ports: - "2368:2368" volumes: - ghost_content:/var/lib/ghost/content environment: url: https://blog.example.com database__client: mysql database__connection__host: mysql database__connection__user: ghost database__connection__password: ${MYSQL_PASSWORD} database__connection__database: ghost mail__transport: SMTP mail__options__host: smtp.eu.mailgun.org mail__options__port: "587" mail__options__auth__user: ${MAILGUN_USER} mail__options__auth__pass: ${MAILGUN_PASSWORD} mail__from: "'My Publication' <[email protected]>" depends_on: - mysql mysql: image: mysql:8.0 restart: unless-stopped volumes: - mysql_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ghost MYSQL_USER: ghost MYSQL_PASSWORD: ${MYSQL_PASSWORD} volumes: ghost_content: mysql_data: ` Docker works and is more portable, but the Ghost team's support posture is that the CLI is the production path. If you go Docker, you own more of the debugging. Either way, after first launch you visit /ghost, create the admin account, and you are publishing.

6. The Production Requirements Nobody Lists

This is the section that should decide whether you self-host, and it is the one most "just self-host Ghost!" posts leave out. MySQL 8 is mandatory. Ghost dropped SQLite for production years ago; SQLite remains available for local development only. You are running a real database server, with its own memory footprint, its own backup requirements, and its own upgrade cycle. You need a real server. Ghost is a Node application; budget a few hundred megabytes of RAM for the app plus MySQL's appetite. A 1 GB VPS is the practical floor and feels tight. A 2 GB instance is comfortable for a small publication. You need an SMTP provider. Ghost does not send email itself in any way you would want to rely on. Newsletters, member signups, password resets, and payment receipts all go through a transactional email service. Mailgun, Postmark, and SES are the usual choices. This is a separate account, separate billing, and — for deliverability — a domain you have configured with SPF, DKIM, and DMARC. You need TLS. Non-negotiable for a site that takes payments and collects emails. The CLI handles this; a manual setup means you do. You need backups, and you need to test them. Two places: the MySQL database and
/var/lib/ghost/content (themes, images, and uploaded files). A backup you have never restored is not a backup. You need upgrade discipline. Ghost releases frequently. The CLI makes upgrades a one-liner, but skipping several major versions and then upgrading is where migrations go sideways. Schedule it. None of this is exotic. All of it is more than "install a blog," and the gap between those two statements is where people get burned.

7. Email: The Hardest Part of Running Ghost

If you take one operational warning from this article, take this one. Newsletter delivery is the single hardest thing about self-hosting a publication, and Ghost does not insulate you from it. The mechanics are simple — configure SMTP and Ghost sends. The difficulty is everything around them: Deliverability is your reputation, not your provider's. Sending 5,000 emails from a fresh domain with correctly configured SPF, DKIM, and DMARC will still land in spam if you warm up badly. Sending to a list that has not been mailed in a year will tank your reputation regardless of configuration. This is a discipline, and it is the reason bulk email is a business. Bounces, complaints, and unsubscribes are yours to handle. A hosted platform absorbs that operational load. Self-hosted, a rising complaint rate is your problem to notice and fix, and if you do not notice, your sending domain gets throttled or blocked. Large lists change the equation. A few hundred subscribers on Mailgun's free-ish tier is trivial. Fifty thousand subscribers is a real bill and a real deliverability project. At that scale many people move to a dedicated email provider and use Ghost's API integration, or reconsider whether Ghost(Pro) is the better answer. Test before you need it. Send to yourself, check headers, verify SPF and DKIM pass, and look at the message in a couple of clients. Do this on day one rather than discovering it the morning you send your first real issue. The honest summary: email is where the "just self-host it" advice breaks down, and it is the reason a meaningful number of technically capable publishers choose Ghost(Pro) or a hybrid.

8. Memberships and Payments

Ghost's membership system is the feature that justifies it as a business tool. Free members sign up through native forms, receive newsletters, and can be segmented by tier. Paid members subscribe through Stripe, with monthly and yearly tiers you configure. The economics: Ghost takes 0%. Substack takes 10%. On $10,000/month of subscription revenue, that is $12,000/year. Stripe's processing fees apply in both cases — that is the cost of moving money, not a platform cut — but the platform's percentage is genuinely gone. What you take on in exchange:
  • You are the merchant of record. Refunds, chargebacks, tax handling, and compliance are yours.
  • Stripe configuration is on you. Products, prices, webhooks, and the portal.
  • Failed payments and dunning are your problem to notice.
  • You handle the customer support that a hosted platform would field.
For a small publication with a few hundred paying members, this is very manageable and the savings are obvious. For a large operation, the operational load is real and should be counted as a cost, not waved away as "free because open source."

9. Themes and Customisation

Ghost themes are Handlebars templates plus CSS and JavaScript, with a documented API for accessing posts, tags, authors, and members. The practical picture:
  • The default theme (Casper) is good enough to launch with, and better than most CMS defaults.
  • The marketplace has a healthy selection of free and paid themes, mostly aimed at publications rather than general websites.
  • Writing your own is realistic for anyone comfortable with HTML and CSS. The templating surface is small — nothing like the depth of a WordPress theme — and the documentation is good.
  • Members-aware theming lets you hide content behind a paywall with a simple conditional, which is how the paywall works rather than a plugin.
Where people get frustrated is expecting WordPress-level flexibility. There is no page builder, no block plugin ecosystem, no shortcode universe. If your publication needs a bespoke interactive feature, you build it as a custom integration or a headless frontend — both supported, both more work than installing a plugin.

10. Headless and the Content API

Ghost's Content API is a clean REST interface for published content, keyed by an API key, and it enables the architecture many developers prefer: Ghost as the editorial backend, your own frontend on top. This works well. You write and manage members in Ghost, and your site — Next.js, Astro, plain HTML, whatever — pulls content from the API. You get complete control over the presentation layer and performance, and editors keep a writing interface that does not require a developer. The trade-offs to know:
  • Some features assume the built-in theme layer. Membership gating, comments, and the native signup forms are theme-integrated; headless means reimplementing parts of that.
  • You own more of the stack. Caching, CDN, and rendering are now your problem, which is fine if you wanted that and a burden if you did not.
  • The API is read-oriented. Writing content programmatically goes through the Admin API, which has different authentication and different guarantees.
For a technical publisher who wants a fast static frontend and a pleasant editing experience, this is one of the best combinations available.

11. The Honest Limitations

MySQL 8 is required, and the official stack is Ubuntu + NGINX + systemd. Deviating means owning more of it. Email is genuinely hard and not Ghost's job. See section 7 — this is the biggest one. No plugin ecosystem. Deliberate, mostly good, occasionally maddening. Stripe is effectively required for paid memberships. No alternative payment processors in core. Not a general CMS. If you need forums, commerce beyond subscriptions, or complex content types, this is the wrong tool. Resource footprint is real. Node plus MySQL is not a shared-hosting application. Upgrades need discipline. Skipping versions makes them painful. Support is community-based for self-hosters. Ghost(Pro) customers get support; you get the forum and the docs. Subscription billing edge cases — trials, coupons, pauses, cancellations — are less polished than a dedicated billing product, because Ghost is a publishing platform with payments attached rather than a subscription management system.

12. What It Costs

| Item | Cost | |---|---| | Ghost license | $0 (MIT) | | VPS (2 GB, comfortable for a small publication) | ~$12–24/month | | Domain | ~$10–15/year | | Transactional email | Free tier → ~$15–80/month as list grows | | Stripe | ~2.9% + $0.30 per transaction | | Backups / object storage | ~$1–5/month | | Typical total, starting out | ~$15–30/month | Compare: Ghost(Pro) starts around $9–10/month for the entry tier and rises with members — cheap at small scale and including email, backups, and support. Substack is free to start and takes 10% of revenue, which is the best deal at zero revenue and the worst deal at scale. The crossover maths is worth doing honestly. At 500 paying members on a $5/month subscription — $2,500/month gross — Substack's cut is $250/month. A $30/month self-hosted setup plus maybe $50 of email is dramatically cheaper, and you own the list. At 50 paying members, the platform fee is $25/month and self-hosting is roughly a wash in money, though still better in control.

13. Where Your Data Lives

Self-hosted, everything is on your infrastructure: posts and pages in MySQL, images and themes in the content directory, member records in your database, payment data in Stripe (Ghost never stores card numbers — that is Stripe's job, correctly). The outbound data flows worth knowing: SMTP provider. Every newsletter you send passes through it, so that provider sees your content and your recipient list. This is unavoidable for self-hosted email and it is a real consideration — pick a provider whose privacy posture you are comfortable with, and understand that "self-hosted newsletter" does not mean "no third party handles your subscriber list." Stripe. Payment and subscription state. Third-party embeds and integrations. Anything you put in a post — YouTube, X, analytics, custom integrations — behaves as it would on any site. Native analytics help here: you can avoid a third-party tracker entirely. Gravatar, if enabled. Avatars resolve externally unless disabled. The meaningful improvement over a hosted platform is that the primary relationship data — your members, your content, your billing — is yours. Not perfectly air-gapped, but structurally yours rather than structurally theirs.

14. Ghost vs WordPress vs Substack vs Beehiiv

vs Substack. Substack gives you discovery, zero setup, and takes 10% plus ownership of the relationship. Ghost gives you ownership and 0%, and gives up discovery. If you are starting from zero readers, Substack's network is worth more than 10%. If you already have an audience, it usually is not. vs WordPress. WordPress is more flexible by an enormous margin and heavier by the same margin. You can build anything; you will also manage updates, plugins, security, and performance forever. Ghost is faster to launch, faster to load, and dramatically narrower. For a publication, Ghost. For a site that needs to become something else later, WordPress. vs Beehiiv. Beehiiv is closer to Ghost in ambition — newsletters plus a website plus growth tooling — and is proprietary with its own pricing curve. The trade is the same as Substack: convenience and features against ownership. vs a static site generator plus an email tool. Perfectly viable, and what many technical writers choose. You assemble the pieces yourself: Hugo or Astro for the site, Buttondown or Listmonk for email, Stripe or Gumroad for payments. More control, more integration work, no unified member state. Ghost's value is that those pieces are already joined.

15. Who Should Not Self-Host Ghost

  • Writers starting from zero who need discovery. The hosted networks are better at this and it is not close.
  • Anyone who does not want to manage a database and an SMTP provider. Those are not optional.
  • Large lists without email operations experience. Seriously — see section 7.
  • Anyone who needs a general CMS. Wrong category of tool.
  • Anyone who will not do upgrades and backups. A neglected Ghost install is a security liability with your members' email addresses in it.
  • Anyone who wants plugins. They do not exist.

16. Getting Started Sensibly

1. Decide self-hosted vs Ghost(Pro) honestly. If the email operations section made you uneasy, the managed tier is a rational choice, not a defeat. 2. Use the official stack the first time. Ubuntu LTS, Ghost CLI, MySQL 8, NGINX. Learn it on the supported path before you improvise. 3. Configure email before you write a single post. SPF, DKIM, DMARC, and a test send to yourself. Verify headers. 4. Launch with the default theme. Change it later, once you know what you actually want. 5. Set up backups and do one test restore. Database plus content directory. Actually restore it once. 6. Then enable memberships. Free tier first, paid later, once delivery is proven. 7. Put upgrades on a calendar. Monthly, with a quick check of release notes.

17. Operations: The Ongoing Work

Running Ghost is not burdensome, but it is not zero either. Backups. MySQL dump plus
/var/lib/ghost/content. Automate it, store it somewhere else, and test a restore quarterly. The failure you will actually experience is not a hacked server; it is a botched upgrade with no clean restore point. Upgrades. ghost update handles the application. Watch MySQL's own lifecycle and your OS's, because those are separately your problem. Monitoring. At minimum, know when the site is down and when disk is filling. A publication that silently 500s for a day loses subscribers and does not find out from a dashboard. Email reputation. Watch bounce and complaint rates in your provider. A creeping bounce rate is the earliest sign that your list hygiene needs attention. Security. Keep the OS patched, keep TLS valid, use strong admin credentials, enable 2FA, and do not run unrelated services on the same box. A publication holding thousands of email addresses is worth attacking.

18. Scaling and Newsletter Volume

Ghost itself scales further than most publications will ever push it. The application serves pages quickly, the API is efficient, and caching at the proxy handles traffic spikes. Thousands of concurrent readers on a modest VPS is not unusual. Where scaling gets interesting is email, which is the same story as section 7:
  • Up to a few thousand subscribers — a transactional email provider handles it without drama.
  • Tens of thousands — costs rise, deliverability becomes a discipline, and warm-up and segmentation start to matter.
  • Beyond that — many publishers move bulk sending to a specialist provider and integrate via API, or move to Ghost(Pro) whose team handles exactly this.
The other thing that grows is images. Uploaded content accumulates in
/var/lib/ghost/content/images, and a publication with years of posts will have gigabytes. Budget for it and back it up.

19. Troubleshooting

The site loads but
/ghost gives a 502. The application is not running or the proxy is pointing at the wrong port. Check ghost ls and your proxy config. Emails are not sending. SMTP credentials, port, or the mail__from address format. Check ghost log`. Then check SPF and DKIM, because "sent" and "delivered" are different. Newsletters land in spam. Almost always authentication or reputation. Verify SPF, DKIM, and DMARC, then look at list age and complaint rate. Images 404 after a migration. The content directory did not come along, or file permissions changed. An upgrade fails. Usually a version skip. Restore your backup and upgrade through the intermediate versions, or restore and wait until you have time to do it properly. Paid signups fail. Stripe webhooks are not configured or are pointing at the wrong URL. Check the Stripe dashboard for failed webhook deliveries. The site is slow. Usually the database or unoptimised images rather than Ghost. Check MySQL, add caching at the proxy, and resize your images before uploading.

20. Three Setups Worth Copying

The independent writer. A 2 GB VPS, Ghost CLI, Mailgun on the free tier, the default theme, free members first and paid once delivery is proven. Backups to object storage. Roughly $20/month and a full evening of setup. This is the most common successful path. The technical publication. Ghost headless behind a Next.js frontend, content pulled via the Content API, images served from object storage, and members handled by Ghost's own forms. Fast site, pleasant editing, more moving parts to maintain. The small media business. A bigger VPS or dedicated box, MySQL with proper backups, a dedicated email provider for bulk sending, Stripe with multiple tiers, a custom theme, and monitoring on everything. At this point the operational load is real and should be staffed rather than absorbed. What all three share: email was configured and tested before launch, backups were verified with an actual restore, and upgrades happen on a schedule.

21. Migrating to Ghost

Ghost's import story is better than most platforms', which matters because the migration is where these projects die. From Substack. Export your posts as HTML and your subscribers as CSV, then use Ghost's importer for content and the member import for the list. The content comes across cleanly — the format is not exotic. The thing to prepare for is that you are re-establishing consent and payment relationships: your paid subscribers will have to resubscribe through your Stripe account, because the old billing relationship belongs to Substack and cannot be transferred. Announce it clearly, give people a generous window, and expect some attrition regardless. That attrition is the real cost of leaving, and pretending otherwise is how publications get blindsided. From WordPress. Ghost ships an official WordPress importer plugin that handles posts, pages, tags, authors, and images. Content migrates well. What does not migrate is anything plugin-dependent: custom post types, shortcodes, forms, and page-builder layouts become inert. If your WordPress site is heavily plugin-built, budget real cleanup time and consider launching fresh rather than porting a mess. From Medium. The export produces HTML that imports acceptably, though formatting fidelity varies. Medium's canonical-link feature helps with SEO if you set it up. From another Ghost instance. Straightforward: export the JSON, import it, move the content directory. This is the path that best demonstrates the value of the permissive licence — moving hosts is a supported, boring operation rather than a negotiation. From a static site or a hand-rolled blog. Usually a script: parse your source files, push to the Content API. More work, complete control over the result. The sequence that works in every case: import into a staging instance first. Look at twenty posts, not two. Fix the formatting problems you find in bulk, then do the real import, then point DNS. The most common mistake is importing straight into production and discovering the problems in public.

22. About That "0% Fee"

Ghost's headline claim is that it takes 0% of your revenue, and the claim is true. It is also the kind of true statement that gets repeated without its surrounding arithmetic, so it is worth being precise about what you actually pay. Stripe still takes its cut. Roughly 2.9% plus a fixed per-transaction amount in most markets, sometimes less at volume. This is the cost of moving money and it applies whether you use Ghost, Substack, or anything else. It is not a platform fee and should not be counted as one — but it is real money, and a publication doing $10,000 a month pays about $300 to Stripe regardless of architecture. Your infrastructure is not free. Hosting, email, backups, and domain costs scale with your list rather than your revenue, which is a different and sometimes worse curve. A large free list with few paid members costs money to serve and earns nothing directly. Your time has a price. Upgrades, backups, deliverability management, and the occasional Saturday spent fixing an import — this is real cost, and it is the part that hosted platforms are actually selling you relief from. If your time is worth more than the platform fee, the cheaper option may be the expensive one. The comparison that matters is marginal, not absolute. The question is not "does self-hosting cost money" but "at my current revenue and list size, is the difference worth the operational load?" At $100/month of subscriptions, the answer is almost certainly no. At $10,000/month, it is almost certainly yes. Somewhere in the middle is your crossover, and it is worth calculating rather than assuming. What remains true through all of it: the percentage that a hosted platform takes is gone forever, while the money you spend on your own infrastructure is buying an asset you control. That asymmetry is the real argument, and it does not depend on the fee being zero.

23. The Verdict

Ghost is the best self-hosted publishing platform available, and it wins by being disciplined about scope and honest about its business model. A non-profit that cannot be acquired, MIT-licensed code, a genuinely pleasant editor, newsletters and memberships in the same system as your content, and 0% of your revenue — that combination does not exist anywhere else. The honest caveats are operational rather than ideological. You need MySQL, a real server, and an SMTP provider. Email deliverability is a discipline you have to learn, and at scale it is the thing most likely to make you reconsider. There is no plugin ecosystem, and it is not a general CMS. But for a writer or publication with an existing audience who wants to own the relationship — the list, the payments, the domain, the archive — there is nothing better. The ten percent you stop paying is the smallest part of what you get back.

Related

Comments (0)

No comments yet. Be the first to comment!

Leave a Comment