Lamb — Literally Another Micro Blog.

Lamb made out of circuitry

Barrier free super simple blogging, self-hosted. Read about the features.

Requirements

  • PHP 8.2 – 8.5
  • SQLite3, gettext, simplexml, mbstring, pdo_mysql extensions (pdo_mysql is required by the database library even though Lamb uses SQLite)
  • 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 image (easiest)

No PHP, git, or Composer needed on the host — just Docker:

# 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 \
  ghcr.io/svandragt/lamb:latest

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:

  1. FrankenPHP
  2. Nginx

Containers:

  1. Docker

Devtools / local environments / sandbox:

  1. DDev local environments wrapper around Docker. Convenient.
  2. Devbox portable, isolated, developer environments. Tidy.
  3. Local PHP setup DIY. Control.

Main Topics


This site uses Just the Docs, a documentation theme for Jekyll.