✒️ Inkpress
A self-hosted markdown blog with zero-JavaScript public pages. Pay once, publish forever.
Ghost charges $9/month — and climbing — to host what amounts to markdown files with a theme. Inkpress is a complete self-hosted blog: write in a split-pane markdown editor, publish to blazing-fast server-rendered pages that ship zero JavaScript, and keep every post in one SQLite file you own. $29 once.
Inkpress, as it actually looks — a real screenshot, not a mockup.
Features
Zero-JS public pages
Pure HTML/CSS, no client framework, no hydration, no bundle — instant load and perfect Lighthouse scores by default.
3 built-in themes
Paper (light serif classic), Carbon (dark dev-blog mono) and Editorial (magazine, large covers) — switch site-wide instantly in Settings.
Server-side syntax highlighting
Code blocks highlighted with Shiki at save time and cached — beautiful dev-blog code with no client-side library.
Split-pane live preview
The preview uses the exact same rendering pipeline as the public site, so what you see is literally what ships.
Drafts & scheduling
Draft / scheduled / published workflow — scheduled posts go live automatically, no cron needed.
SEO done right
Per-post meta overrides, OG and Twitter card tags, canonical URLs, RSS with full content, sitemap.xml and robots.txt.
301 redirect table
Rename a slug and the old URL redirects automatically — never break an inbound link again.
One SQLite file
Every post, tag and setting in a single file. Backups are a copy-paste. Runs as a desktop app or on a $5 VPS via Docker.
Inkpress vs Ghost
Ghost at $9/mo runs roughly $108/year — $216 over two years. Inkpress is $29, once.
| Inkpress | Ghost | |
|---|---|---|
| Price | $29 once | $9/mo ($108/yr), forever |
| Cost after 3 years | Still $29 | $324+ |
| Your data | Your server, one SQLite file | Their cloud |
| Zero-JS public pages | Yes | No |
| Themes | 3 built in — or edit the code | Paid/limited |
| Remove "Powered by" badge | Yes — it's your code | Paid tier |
| Works offline / air-gapped | Yes (desktop mode) | No |
| Source code | MIT, on GitHub | Open core, hosted tiers |
Pays for itself in about 3.2 months against Ghost Starter — then it's strictly cheaper for the life of the blog, $324+ saved over 3 years.
Three steps, no subscription
Buy once on Whop
One-time $29 for the packaged Windows installer plus lifetime updates.
Run it your way
Desktop app with no server at all, or ADMIN_PASSWORD=... BASE_URL=... docker compose up -d on a $5 VPS.
Write and publish
Markdown in the split-pane editor, drag in images (auto-resized), hit publish — or schedule it and walk away.
Honest answers
Is it really free on GitHub?
Yes — MIT source at github.com/bensblueprints/inkpress, always. $29 buys the packaged Windows installer, 1-click setup and lifetime updates.
Why zero JavaScript on the public site?
Because a blog is documents, not an app. No client framework means instant loads, perfect crawlability and nothing to break. The test suite literally asserts there's no script tag on public pages.
Can it do paid newsletters like Ghost or Substack?
No — and Ghost is genuinely strong there. Inkpress is a publishing engine: posts, tags, themes, RSS, SEO. If memberships and paid email subscriptions are the core of your business, Ghost's built-in monetization is worth its fee.
What happens to old links if I rename a post?
The slug-rename 301 redirect table catches them automatically — old URLs redirect to the new slug instead of 404ing your inbound links.
Do scheduled posts need a cron job?
No. A scheduled post simply stays hidden until its publish time passes — the server flips it live on the next read. Set it and forget it, even on a bare $5 VPS.
Deep-dive comparisons:
Own Inkpress forever
$29 once. Deploy on your own server — your data never leaves it. No renewal, no account with us, no meter. Or build it yourself from the MIT source — it's the same app.