folk.zone Wiki

a public knowledge base

Site Tools


indieweb:pureblog

Pure Blog

A flat-file PHP blogging platform: pureblog.org, kevquirk/pureblog. Markdown posts, a browser admin UI, RSS, search, and tags. No database, no Node.

Write in the browser admin or drop .md files in content/posts/ directly.

What It Is

  • Flat-file content: posts and pages are Markdown files with front matter on disk
  • Distraction-free admin dashboard for writing and organizing
  • Draft previews, tag archives, pagination, built-in search, RSS feed
  • One-click updater in /admin (needs php-curl and php-zip)

Everything worth keeping is plain files under content/ and config/, so backups are a tarball or a git repo.

Serving It

Pure Blog's docs assume Apache (it ships an .htaccess). The alternatives:

  • nginx + php-fpm: both from Ubuntu repos, nothing third-party. nginx is ~5 MB, the default php-fpm pool is ~30-90 MB under load. Fine on 4 GB RAM.
  • Caddy + php-fpm: viable if you want Caddy parity, but needs the external apt repo.
  • php -S built-in server: fine for a quick local test (php -S 127.0.0.1:8000 -t /var/www/pureblog /var/www/pureblog/index.php; index.php doubles as the router for clean URLs). Not for real serving.
  • Apache + mod_php: the .htaccess works unchanged, but uses more memory.

Public Access Notes

  • Restrict /admin to the LAN if the site is public: an allow/deny block in nginx covers the admin path.
  • Custom routes are configured in Admin > Settings > Site > Custom routes: one path | template per line. Templates are stored inside content/includes/ so they deploy with the content.
  • A health-check curl -sf http://127.0.0.1/ probe is enough for monitoring.

Where It Fits

A middle point between a static generator and a database CMS: you get a real admin UI and drafts, but the content is still portable Markdown you can read in any editor. It uses far less memory than WordPress or Ghost; more than the tiny SSGs because it needs a PHP runtime.

See Also

indieweb/pureblog.txt · Last modified: by 127.0.0.1