Skip to main content

Installation

The container​

docker pull ghcr.io/beetlebugorg/mod_dims:latest
docker run -p 8000:8000 ghcr.io/beetlebugorg/mod_dims:latest

It starts with nothing set. Every setting has a default, and the host allowlist starts empty, which matches no host.

Built for linux/amd64 and linux/arm64.

Serving an image​

/dims3/ is off in the image, because it accepts an unsigned request. Turn it on and name the hosts an image may come from:

docker run -p 8000:8000 \
-e DIMS_ENABLE_DIMS3=on \
-e DIMS_WHITELIST="images.example.com" \
ghcr.io/beetlebugorg/mod_dims:latest
http://localhost:8000/dims3/development/resize/100x100/?url=https://images.example.com/cat.jpg

/dims4/ needs a shared secret instead:

docker run -p 8000:8000 -e DIMS_SECRET=a-secret ghcr.io/beetlebugorg/mod_dims:latest

The environment variables the container reads are in the container README.

Building from source​

The build is CMake. It needs httpd and APR headers, libcurl, OpenSSL, and ImageMagick 7.

cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build
sudo cmake --install build

cmake --install writes the module to the directory apxs reports, and the colour profiles to share/mod_dims/profiles. It does not edit a running configuration.

ImageMagick has to be built at quantum depth 8. Every packaged build is Q16, which doubles the memory each request uses and changes every output byte. docker/Dockerfile.builder is the toolchain this project builds against.

Configuring httpd​

LoadModule dims_module modules/libmod_dims.so

DimsSigningKey a-long-random-string

DimsAddClient development - 604800 604800 trust 300 86400 a-secret
DimsAddWhitelist images.example.com

<Location /dims5/>
SetHandler dims5
</Location>

<Location /dims4/>
SetHandler dims4
</Location>

<Location /dims-status/>
SetHandler dims-status
</Location>

Every directive is in Configuration.