Requirements
Badlen is under active development: what you install from these pages is built from the current sources and moves as they do.
You need Docker with Docker Compose, and a few minutes for the first build. There is no runtime to install, no database to set up by hand and no web server to configure. The section below says which machines qualify.
The machine
Section titled “The machine”Any 64-bit Linux host that runs Docker. The two images the stack is built on, the
official Node and PostgreSQL ones, are both published for amd64 and arm64, so an
ordinary x86 server and a 64-bit ARM board (a Raspberry Pi on a 64-bit system, an ARM
NAS) each qualify. A 32-bit ARM system does not: the application’s base image has no
build for it.
The build needs far more memory than the running stack. Measured on a two-core machine: compiling the interface peaked near 800 MB in one process and compiling the API near 660 MB, while the application afterwards sits around 225 MB and an idle PostgreSQL around 50 MB. Those figures come from one machine and are not a certified minimum, but they give the order of magnitude: hundreds of megabytes to run, close to a gigabyte to build.
Two containers
Section titled “Two containers”The stack is two containers. One is PostgreSQL 18. The other is the application, which serves the compiled interface and its API from the same origin, so there is one image, one process and one address to put behind a reverse proxy, with no CORS arrangement to make, since the session cookie never crosses an origin.
The application applies its own pending migrations before it accepts a single request. Nothing else has to be run against the database, on the first start or on any later one.
Disk and time
Section titled “Disk and time”The first docker compose up -d --build builds the image from the sources. On a small
home machine that takes minutes rather than seconds, most of it spent compiling the
interface. Every start after that takes about fifteen seconds.
The built image is close to 800 MB, and every later update builds another one beside it. Updating explains what happens to the old one.
Getting the sources
Section titled “Getting the sources”There is no published image: the stack builds from a clone of the repository. Cloning is the first step of Configuration, followed by the commands to run after it. That page holds the procedure; there is nothing to run on this one.
A source archive downloaded without git history works too: the version the instance
reports comes from the VERSION file committed in the repository, which the image
carries, rather than from a tag.
Next: Configuration, the commands that put the stack up and the file they read.