Skip to content
Mikhail Deynekin edited this page Nov 14, 2026 · 8 revisions

MD.Scribe

A self-hosted Markdown documentation platform: point it at a folder of .md files and it serves a CommonMark/GFM viewer, a searchable library, themes and an admin panel with an editor, revisions, backups and a self-updater. Plain PHP — no database, no framework, no build step on the server.

Version 3.6.3 "Errata" · PHP 8.5 (floor 8.5.0, verified on 8.5.12) · MIT licence.

New in 3.6.3: two defects that both looked like "the site lost its content". The library listed file names with their first character missing whenever the content directory is a symlink — the documented release layout — so index.md appeared as ndex.md and every link the browser offered answered 404 while the viewer itself was fine. And a configuration file that cannot be read is no longer replaced with defaults: that path silently reset the site name and the home document when a config written by one user was unreadable for the pool. Both are covered by tests; the second one is staged on Linux, where a file can be made unreadable. Details: Changelog and Troubleshooting.

Runtime PHP ≥ 8.5 with mbstring, dom, libxml, json; curl, zip, opcache recommended
Web server any — nginx, Apache, Caddy, LiteSpeed, php -S
Storage files on disk; no database
Entry points public/index.php (viewer), public/admin.php (admin), public/updater.php + updater.php (updates)
Writes to .md.ini, storage/, the content root (editor/uploads only), tracked app files (updates only, with ALLOW_UPDATE)

Start here

Page What it answers
Getting started From a release archive to a running site in four commands
Installation Layouts, web-server snippets, permissions, verified hosts
Configuration Every .md.ini key and its default
Markdown features What the renderer does beyond CommonMark
Search and tags Operators, palette, index behaviour
Admin guide Editor, templates, files, backups, revisions, health
HTTP API Public JSON, admin actions, machine update API, render API
Updates How a release is applied and verified
Troubleshooting Symptom → cause → fix
Development Tests, static analysis, release checklist
Changelog What changed in 3.5.x

What it is not

  • Not a hosted service and not a database-backed CMS: every document is a file.
  • No build step on the server: frontend assets are committed.
  • No CDN: every asset is local (default-src 'self'), and the only outbound traffic is the update check against the GitHub release of this repository.

Where the truth lives

The wiki is a guide; the repository is the reference. For anything version-specific read README.md, docs/configuration.md, docs/http-api.md and CHANGELOG.md at the tag you run — src/Core/Version.php holds the version and the PHP floor.

Clone this wiki locally