Lamb — Literally Another Micro Blog.

Barrier free super simple blogging, self-hosted. Read about the features.
Requirements
- PHP 8.4 – 8.5
- pdo_sqlite, pdo_mysql, gettext, simplexml, mbstring extensions (Lamb talks to SQLite through pdo_sqlite; pdo_mysql is also required because RedBeanPHP references a MySQL PDO constant at load time and fatals without it, even though Lamb never connects to MySQL)
- gd extension, recommended: converts image uploads to WebP (without it originals are stored as-is)
Getting started
There are three ways to install Lamb. All of them track the stable release channel.
1. Docker
Build and run the release image from a checkout — no PHP or Composer on the host, just Docker and git:
git clone https://github.com/svandragt/lamb && cd lamb
docker build -f .docker/Dockerfile.release -t lamb .
# Generate a password hash first (any machine with PHP), or copy one from make-password.php output
docker run -d --name lamb -p 80:80 \
-e LAMB_LOGIN_PASSWORD='<your-hash>' \
-v lamb-data:/app/data -v lamb-assets:/app/src/assets \
lamb
See Docker for details.
2. Release tarball
For shared hosting or servers without git/Composer. Download lamb-<version>.tar.gz from the releases page — it includes all dependencies:
mkdir lamb && tar -xzf lamb-<version>.tar.gz --strip-components=1 -C lamb
cd lamb
php make-password.php <your-password>
Point your webserver at the src/ directory (FrankenPHP or Nginx). Those pages also cover making data/ and src/assets/ writable by the webserver user.
3. Git checkout
Requires git and Composer:
# Checkout project - release branch is stable
git clone --branch release https://github.com/svandragt/lamb.git
cd lamb
composer install --no-dev
php make-password.php <your-password>
This route gets you the bin/upgrade script for one-command (or cron-driven) upgrades — see Upgrading.
Lamb can be run locally with the builtin PHP webserver, or with other tooling.
Verified setups
The well-travelled paths — verified automatically by the acceptance test suite — are the Docker image and Nginx (checked before every release by the release-verify workflow), FrankenPHP (same runtime as the Docker image), and the built-in PHP webserver (checked on every change). Devbox wraps the built-in webserver and is the maintainer’s daily development environment, so it is well-travelled too. DDev is a convenience wrapper and is not separately tested.
Deployment options
Webservers:
Containers:
Devtools / local environments / sandbox:
- DDev local environments wrapper around Docker. Convenient.
- Devbox portable, isolated, developer environments. Tidy.
- Local PHP setup DIY. Control.