lazysite
Markdown-driven pages for any CGI-capable web server. No build step, no
database, no CMS. Drop a .md file in your docroot and it is served as
a fully rendered HTML page. The first request generates the HTML and
caches it; every subsequent request is a plain static file.
Features
Content
- Markdown pages with YAML front matter
- Template Toolkit variables in pages and views
- Fenced divs, oEmbed, content includes
- Remote pages (.url files that fetch Markdown from a URL)
- Page scan for blog/news index pages
- Registry files: sitemap.xml, llms.txt, RSS, Atom
- TTL-based cache and API/raw output modes
Views and themes
- Template Toolkit view templates (view.tt)
- Themes live under lazysite/themes/THEME/ with their own assets
- Built-in fallback view so sites work with zero configuration
Manager
- Browser-based admin at /manager
- Config, Files, Nav, Plugins, Themes, Users, and Cache pages
- Admin bar on site pages for manager users
Authentication
- Built-in cookie auth (lazysite-auth.pl) with users and groups
- Drop-in replacement by any proxy that sets X-Remote-* headers
- Per-page auth: and auth_groups: front matter
Forms
- Inline :::form blocks with field validation
- Named dispatch handlers (SMTP, file storage, webhooks)
- Honeypot, HMAC timestamp token, and rate limiting built in
Payment
- x402 payment flow support via payment: front matter
Plugins
- Auto-discovery of CGI scripts and tools via --describe JSON
- Enable, disable, and configure from the manager
Operations - Structured logging (text or JSON, env or config) - Link audit (orphaned pages, broken internal links) - Static site generation for GitHub Pages, Netlify, etc.
Quick start
git clone https://github.com/OpenDigitalCC/lazysite.git
cd lazysite
perl tools/lazysite-server.pl
Open http://localhost:8080/ to browse the starter site.
Installation
sudo bash install.sh --docroot /path/to/public_html \
--cgibin /path/to/cgi-bin \
--domain example.com
HestiaCP users: see installers/hestia/. Docker: see installers/docker/.
Full installation details in starter/docs/install.md.
Documentation
Browse locally via the dev server, or read the Markdown directly:
starter/docs/install.md- installationstarter/docs/authoring.md- writing contentstarter/docs/configuration.md- lazysite.conf, nav, pluginsstarter/docs/views.md- views and themesstarter/docs/manager.md- the manager UIstarter/docs/auth.md- authenticationstarter/docs/forms.md- contact formsstarter/docs/payment.md- x402 paymentstarter/docs/development.md- dev server, rsync, troubleshootingstarter/docs/reference.md- keys, variables, file locations
AI-assistant briefings:
starter/docs/ai-briefing-authoring.mdstarter/docs/ai-briefing-views.mdstarter/docs/ai-briefing-configuration.mdstarter/docs/ai-briefing-development.md
Views and themes
Ready-to-use themes live in the companion repo
lazysite-views. Install a theme zip via the manager Themes
page, or unpack manually under lazysite/themes/.
Requirements
- Perl 5.10 or later
- Apache or nginx with CGI support
- Template Toolkit (
libtemplate-perlon Debian) - Optional:
IO::Socket::SSLfor HTTPS SMTP delivery
Licence
MIT. See LICENSE.