If you like it, please consider a donation:
This is a project to get the Mailpiler running in a docker compose system in a simple and uncomplicated way.
You can find more information about the Piler project here.
https://www.mailpiler.org/ or https://github.com/jsuto/piler
The Piler image is built locally from build/Dockerfile when the containers are started
(docker compose up). The Dockerfile downloads the official Piler package from
https://github.com/jsuto/piler/releases and verifies its SHA256 checksum.
The image can also be built manually with bash build/build.sh.
Current versions:
| Component | Version |
|---|---|
| Piler | 1.4.9 |
| Base image | Ubuntu 26.04 (resolute), PHP 8.5 |
| MariaDB | 12.3.3 (LTS) |
| Manticore Search | 29.9.0 |
| Memcached | 1.6 |
| nginx-proxy / acme-companion (Let's Encrypt) | 1.11 / 2.8 |
- Install Docker and dependencies
apt install curl git -y
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable --now docker
- Docker Compose
The Docker installation above already includes the Docker Compose plugin (docker compose).
Docker Compose v2 or higher is required.
- reboot your system
reboot now
- Clone repository
cd /opt
git clone https://github.com/simatec/piler-docker.git
cd /opt/piler-docker
- start the Install
bash install-piler.sh
Congratulations your Piler is installed...
If you have Let's Encrypt activated, you can reach the Piler at https://your-piler-domain
If Let's Encrypt is disabled, the Piler is at http://your-piler-domain or at http://your-local-IP
The Default Login is admin@local and the Password ist pilerrocks
After installation, any changes can be made in piler.conf at any time and the install script can then be run again.
- Mailcow
With USE_MAILCOW=true Piler uses its built-in Mailcow support: after the IMAP login it reads the aliases
and the name of the mailbox from the Mailcow API over HTTPS. A read-only API key is enough.
If your Mailcow uses a self-signed certificate, set MAILCOW_SSL_VERIFY=false in piler.conf and restart
Piler with docker compose up -d in the install directory.
You can execute the following commands to update the containers. Here the current yml files are downloaded from Github and the containers are updated if necessary.
cd /opt/piler-docker
bash install-piler.sh
You will get a selection menu with the following options:
1) Install-Piler
2) Update-Piler
The update files are downloaded from https://raw.githubusercontent.com/simatec/piler-docker/main.
Another source can be set with the environment variable REPO_RAW_URL.
During the update the Piler image is rebuilt locally. Configuration changes required by a new
Piler version (e.g. php-fpm socket in piler-nginx.conf, pid file location, database indexes)
are applied automatically when the Piler container starts.
- After a successful update, unused container images can be removed from the system with the following command:
docker system prune
For use on the command line, we first log into the container.
docker exec -it piler /bin/bash
Next we switch to the user "piler"
su piler
To get write permissions, we switch to the /var/tmp folder
cd /var/tmp
Here you can now execute the functions of the Piler on the command line. Here are some examples:
pilerimport -h
crontab -l
To leave the container on the console you have to execute 2x exit.
- (DSTech-IT) Update to Piler 1.4.9
- (DSTech-IT) Base image Ubuntu 26.04 (resolute) with PHP 8.5, pinned by digest
- (DSTech-IT) Update MariaDB to 12.3.3 (LTS), Manticore Search to 29.9.0, Memcached to 1.6
- (DSTech-IT) Let's Encrypt: nginxproxy/nginx-proxy 1.11 and nginxproxy/acme-companion 2.8
- (DSTech-IT) Piler image is built locally, package download with SHA256 check (amd64 and arm64)
- (DSTech-IT) Piler image: install all available Ubuntu updates during the build (apt-get upgrade)
- (DSTech-IT) Automatic migration of existing configs on container start (php-fpm socket, pid file, DB indexes)
- (DSTech-IT) Fixed compose project name (piler-docker), independent of the install directory
- (DSTech-IT) Support for Docker Compose v5 in install and update scripts
- (DSTech-IT) Fix update.sh: stop the containers before the old docker-compose.yml is removed
- (DSTech-IT) update.sh rebuilds the Piler image without cache and pulls new releases of the other images
- (DSTech-IT) Fix version check in patch.sh
- (DSTech-IT) Fix Mailcow login (HTTP 500): the built-in Mailcow lookup of Piler 1.4.9 uses
ENABLE_SSL_VERIFY, which piler's config.php does not define. The Piler container now always sets it in config-site.php - (DSTech-IT) Security:
MAILCOW_HOSTnow starts withhttps://, otherwise the built-in Mailcow lookup sends the Mailcow API key over plain HTTP - (DSTech-IT) Mailcow: use the built-in Mailcow support of Piler instead of
auth-mailcow.php(patschi/mailpiler-mailcow-integration), which no longer works with Piler 1.4.9. Existing installations are switched on container start - (DSTech-IT) New option
MAILCOW_SSL_VERIFYin piler.conf (defaulttrue), set it tofalsefor a self-signed Mailcow certificate - (DSTech-IT) CI checks, Dependabot and a weekly check for new Piler, MariaDB and image versions
- (simatec) Update to Piler 1.4.8
- (simatec) Fix Network on Update
- (simatec) Release 0.9.7
- (simatec) Hostname Fix
- (simatec) small fix
- (simatec) patch for Piler Update added
- (simatec) Piler v1.4.5 updated
- (simatec) MariaDB v11.1.2 updated
- (simatec) Piler v1.4.4 updated
- (simatec) Piler updated
- (simatec) Piler Docker Hub added
- (simatec) Fix Automatic Import
- (simatec) Piler Build added
- (simatec) Piler Import Option added
- (simatec) Fix Updater
- (simatec) Update himself added
- (simatec) docker, curl and git Check added
- (simatec) Update Config added
- (simatec) Docker Compose Check added
- (simatec) Config-Menu for Installer added
- (simatec) New Volumes added
- (simatec) Fix Installer
- (simatec) Update Installer
- (simatec) update.sh added
- (simatec) downgrade mariadb to v10.6
- (simatec) Installer Fix
- (simatec) update piler to v1.4.2
- (simatec) update piler to v1.4.1
- (simatec) update mariadb to v10.9.4
- (simatec) update piler to 1.3.12
- (simatec) update mariadb to 10.9.2
- (simatec) small fixes
- (simatec) purge option added to config
- (simatec) Let's Encrypt added
- (simatec) first beta
MIT License
Copyright (c) 2022 - 2025 simatec
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
