Skip to content

Docker demo

The public Postfix Admin Console Docker image is a disposable way to evaluate the administration interface. It starts a fresh Drupal site using SQLite, applies the base Recipe and dedicated-site preset, and creates an operator account. The image supports linux/amd64 and linux/arm64.

Run locally

With Docker installed, pull and start the image:

docker pull pixieworks/postfix_admin_console:latest
docker run --detach --rm \
  --name postfix-admin-console \
  -p 127.0.0.1:8080:80 \
  pixieworks/postfix_admin_console:latest
docker logs postfix-admin-console

The first start installs Drupal and can take a little while. Once the first-install message appears, open http://localhost:8080/user/login?destination=/admin/structure/postfix_admin/domain. Use the username and password printed by docker logs postfix-admin-console. Keep those logs private because they contain the demo password. After login, the Domain list, other resource tabs, Settings tab, and + menu are available.

If port 8080 is occupied, change only the host side of the mapping, such as -p 127.0.0.1:8081:80, and use port 8081 in the login URL.

Credentials and data

By default, the operator username is admin and a random password is generated at first start. To choose credentials for a new container, pass POSTFIX_ADMIN_CONSOLE_USERNAME and POSTFIX_ADMIN_CONSOLE_PASSWORD with Docker's --env or --env-file options. Avoid putting a password directly in shell history. The site_owner username is reserved for the internal Drupal administrator account.

The SQLite database and credential files are stored outside the web root in the container. Restarting the same container preserves them. Changing an explicitly supplied username or password after initialization is rejected rather than silently replacing the account.

Stop and discard the demo with:

docker stop postfix-admin-console

The recommended invocation uses --rm and no volume. Stopping it removes the container and all demo data. Starting it again creates a fresh site with a new random password unless you explicitly provide one.

Intended use

This image is for local evaluation of the Postfix Admin Console look and feel. It is not a production deployment and does not provide Postfix, Dovecot, DNS, TLS, or mail delivery. Keep the port bound to 127.0.0.1, do not expose it to the internet, and do not enter production data or secrets.

Image versions

Use latest for the most recently published demo. Pull it again before creating a new container to pick up a later publication; pulling does not update existing containers. To select an exact publication, choose an available tag or digest from Docker Hub. The verified digest is recorded with each publication rather than duplicated here.

To check the package versions in your running container:

docker exec postfix-admin-console composer show drupal/postfix_admin
docker exec postfix-admin-console composer show drupal/postfix_admin_console

latest may advance after a later publication. Recipe releases and Docker Hub images are published separately, so releasing a newer Recipe or merging a source change does not automatically rebuild or replace an existing image.

The Docker build installs both stable packages from the committed composer.lock without resolving new dependencies at build time. It computes checksums before installation and compares them afterward to detect changes to the Composer input files. Its smoke test compares the installed versions with that lock, rather than hardcoded version numbers, and checks the administration UI, dark mode, permissions, credentials, and restart behavior. Dependency updates require a reviewed lock update and a separately tested image publication.