A Blog You Actually Own
Hosted blogging platforms are convenient right up until the pricing changes, the export is incomplete, or the service shuts down. Inkwell takes the opposite position: the platform is free and MIT licensed, the code is on GitHub, and every post lives in a SQL Server database you control.
It is built on ASP.NET Core MVC with Dapper on .NET 10, renders plain server-side HTML for speed and search visibility, and ships with a full WYSIWYG editor — draft, schedule, autosave and publish — rather than a Markdown-only workflow. One installed binary can host many separate blogs, each with its own look and authors.
There is no plugin marketplace, no usage tier and no phone-home. If you are a .NET shop that wants publishing under your own roof, this is the stack you already know.
Free and Open Source
MIT licence. Fork it, extend it, run it commercially — no per-seat or per-site fees, ever.
No Telemetry, GDPR by Design
No external API calls and no usage reporting. Reader data never leaves your infrastructure.
Built on .NET 10
ASP.NET Core MVC, Dapper and Microsoft SQL Server — a stack your existing .NET team can maintain.
Everything a Publication Needs, Nothing It Doesn't
The editorial, design, SEO and operations tooling that shipped across releases v1.0.1 to v1.0.7.
Full WYSIWYG Editor
Compose visually, save drafts, schedule for later, autosave as you go and publish when ready. No Markdown gymnastics required.
20 Layouts × 16 Presets
Structure and colour are separate: pick an editorial Layout, pair it with a colour Preset — 320 combinations without touching a stylesheet.
Multi-Tenant Built In
One install serves many blogs. Switch DeploymentMode to Cloud and each tenant is isolated by its URL slug, with its own Layout and Preset. No second deployment.
SEO Built In
Server-rendered HTML, structured-data validation before publish, IndexNow instant indexing, internal-link suggestions and a 301/302/410 redirect manager.
Analytics and AI-Crawler Reports
Built-in dashboard with UTM and geo breakdowns, plus reporting on which AI crawlers fetch your content and an answer-engine readiness score.
Immutable Audit Trail
Every admin action is logged and cannot be edited afterwards — useful for multi-author teams and for compliance reviews.
Newsletter and Subscribers
Compose newsletters and manage your subscriber list inside the same admin, without handing your audience to a third-party mailer.
IP Firewall
Automatic threat scoring blocks hostile traffic at the application layer, and the Content Health dashboard flags posts that need maintenance.
WordPress and Ghost Importers
Bring an existing site across: WordPress WXR exports and Ghost JSON or ZIP archives import with posts, pages and authors intact.
Search Console in the Admin
Connect Google Search Console and see 28-day clicks, impressions, CTR and position per post, with striking-distance pages flagged.
Revision History
Every post and page keeps its revisions, with line-level diffs and one-click restore. Restores are themselves undoable.
Honest Traffic Numbers
Views are counted by a self-hosted beacon, and crawlers are verified against published IP lists, so bots and scrapers do not inflate your stats.
Layouts Set the Structure. Presets Set the Mood.
Most blog themes bundle page structure and colour into one package, so changing the palette means changing the theme. Inkwell splits them. A Layout decides how the front page, post and archive templates are composed; a Preset decides the palette, type scale and spacing — from warm paper whites to near-black dark modes.
Any of the 20 Layouts pairs with any of the 16 Presets, and each tenant on the same install can run a different combination. Switching is a configuration change — no rebuild, no migration.
Three Steps to a Running Blog
A normal ASP.NET Core deployment — if you have shipped a .NET app before, nothing here will surprise you.
Clone and Run
Three commands from the README: git clone, cd inkwell, dotnet run. With SQL Server LocalDB that is a working local instance.
Configure
Copy appsettings.example.json to appsettings.json and set the SQL Server connection string. There is no migration step: the schema is created and updated automatically on startup.
Publish and Deploy
Publish the binary and put it behind IIS, Caddy or nginx with TLS. Runs on Linux, Windows Server or macOS. Or run docker compose up for the app, SQL Server and Caddy with automatic HTTPS.
What a Single-Tenant Install Needs
Modest by design — a small VPS runs one publication comfortably. Add RAM as you add tenants.
ASP.NET Core MVC with Dapper and raw SQL for data access. The runtime alone is enough for hosting.
Microsoft SQL Server in production; SQL Server LocalDB is fine for development.
The floor for a single tenant. Scale up as you add publications and traffic.
Behind a reverse proxy (IIS, Caddy or nginx) terminating TLS, or in Docker.
Who Inkwell Is For — and Who It Isn't
We would rather you pick the right tool than pick ours.
A good fit when
- Your team already runs .NET and SQL Server and wants publishing on the same stack.
- You need several publications — brands, regions, clients — from one install, each with its own look.
- Data residency, GDPR or a no-third-party-scripts policy rules out hosted platforms.
- You are migrating off WordPress or Ghost and want the importer to do the heavy lifting.
Look elsewhere when
- You want a fully hosted service with zero server responsibility — Inkwell is self-hosted only.
- You need PostgreSQL, MySQL or SQLite — Microsoft SQL Server is the only supported database.
- Your workflow depends on a plugin marketplace — Inkwell has none; features are built into the core or added as code.
- You need a static-site generator or a Git-based Markdown workflow — Inkwell is a database-backed app with a visual editor.
How Inkwell Compares
Publicly documented defaults, September 2026. Every one of these is a capable choice.
| Platform | Stack | Hosting model | Editor | Multi-site from one install |
|---|---|---|---|---|
|
In
Inkwell
This product |
.NET 10 ASP.NET Core SQL Server
|
Self-hosted, free (MIT) | Full WYSIWYG editor | Yes — Per-tenant Layout and Preset |
|
W
WordPress
|
PHP MySQL / MariaDB
|
Self-hosted (GPL) or WordPress.com | Block editor (Gutenberg) | Yes — Via Multisite |
|
G
Ghost
|
Node.js MySQL
|
Self-hosted (MIT) or Ghost(Pro) | Koenig block editor | No — One site per install |
|
H
Hugo
|
Go Static files
|
Static hosting (Apache-2.0) | Markdown files | No — Separate builds per site |
Comparison reflects each platform's publicly documented defaults as of September 2026. The right one depends on your stack and hosting appetite.
The Software Is Free. The Help Is Optional.
Run Inkwell yourself at no cost, or have the team that builds it do the deployment, the upkeep or the design. Prices as published on useinkwell.app.
Installation
- Production deployment on your infrastructure
- Database provisioning and backups configured
- TLS, reverse-proxy and DNS handover
- One tenant, one Layout, one Preset
- 30-day post-launch warranty
Support Retainer
- Priority issue triage on your repo
- Security patches within 48 hours
- Quarterly version upgrades, in place
- Up to 4 hours of minor work each month
- Private email and scheduled office hours
Enhancement
- Discovery call and written scope
- Fixed-bid quote per feature
- Pull request against your fork
- Tests, documentation and migration scripts
- Two rounds of revisions included
Studio Theme
- Brand and typography consultation
- Custom Layout (templates and partials)
- Custom Preset (palette, type, spacing)
- Responsive across every breakpoint
- Source files, yours to keep
USD prices; EUR and GBP equivalents are listed on useinkwell.app. Every engagement starts with a written scope, and quotes come back within two working days.
Release History
Tagged releases since June 2026, each with full notes on GitHub.
-
v1.0.727 Sep 2026
Hardened Docker deployment (multi-stage, non-root, health-checked) with a compose stack; crawler identity verification; beacon-based page-view counting; irreversible HMAC-SHA256 IP hashes.
-
v1.0.624 Sep 2026
Google Search Console integration; revision history with diffs and restore; self-service password reset; comment spam gate; built-in job scheduler; admin UI and accessibility overhaul with dark theme.
-
v1.0.55 Sep 2026
Pre-publish structured-data validation stops broken schema from shipping; answer-engine readiness scoring; AI-crawler analytics; redirect manager and internal-link suggestions.
-
v1.0.415 Aug 2026
IP Firewall with automatic blocking; Content Health dashboard; WordPress (WXR) and Ghost importers.
-
v1.0.229 Jul 2026
SEO overhaul: scored-roundup content system, IndexNow instant indexing, new Layouts, error-monitoring subsystem.
-
v1.0.127 Jun 2026
Analytics dashboard, immutable audit trail, Layout and Preset theme system, newsletter and subscriber management, structured-data enhancements.
Full notes: github.com/marutisoftwaresolutions/inkwell/releases
Publish on Your Own Terms
Clone Inkwell and run it yourself, or tell us about your publication and we will scope the install, the migration and the theme.