Posts

Docker Mailserver Fail2ban: 5 Easy Tests of v17 Ignore

docker-mailserver v17.0.0 (released 5 November 2026) adds two commands to its Fail2Ban helper: setup fail2ban ignore <IP or CIDR> puts an address on the ignore list of every jail, and setup fail2ban consider <IP or CIDR> takes it off again; setup fail2ban status now prints what each jail ignores. That is the quick answer to "how do I stop docker mailserver fail2ban from banning my office or monitoring IP". The catch, which the docs mention and the lab below confirms: these ignores live only in memory. For a permanent exception you still need ignoreip in fail2ban-jail.cf . Lab note: tested on 7 November 2026 with mailserver/docker-mailserver:17.0.0 and :16.0.1 on Docker Engine 29.8.2 (the official docker:dind image), Fail2Ban enabled with NET_ADMIN , Rspamd, ClamAV, Amavis and the other filters disabled to keep it small. A second container on the same Docker network played the attacker, so the bans below hit a real source IP (172.18.0.3). All output is cop...

Linkwarden Non-Root Docker Setup: 3 Easy Steps and Mistakes

Image
To run Linkwarden non-root with Docker, create the data , pgdata and meili_data folders yourself before the first docker compose up , then add user: "1000:1000" to all three services ( linkwarden , postgres , meilisearch ) in docker-compose.yml . For an existing install, stop the stack and run sudo chown -R 1000:1000 data pgdata meili_data first. That is the method in the official Running as a Non-Root User guide added with Linkwarden v2.16.1 . Below is the whole setup with real output, plus the two mistakes that leave the stack in a restart loop. Tested on 2026-10-27 on a Debian 12 KVM virtual machine (4 vCPU, 4 GB RAM) with Docker Engine 29.9.2 and Docker Compose v5.6.1, using ghcr.io/linkwarden/linkwarden:v2.16.3 (newest release that day), postgres:16-alpine and getmeili/meilisearch:v1.13.3 from the upstream docker-compose.yml . The host user is vagrant with UID and GID 1000. Every output below is copied from that lab; links were added through the Linkwarden API...

Docker Mailserver Upgrade to v16: 4 Steps and 3 Mistakes

Image
A docker mailserver upgrade from 15.x to 16.x is not just a new image tag. Version 16.0.0 moves the image from Debian 12 to Debian 13 and from Dovecot 2.3 to Dovecot 2.4. Your mail and accounts survive the switch, but an old dovecot.cf with 2.3 setting names stops Dovecot completely, SA_SPAM_SUBJECT is rejected, and DHE ciphers disappear from ports 587 and 993. The container still reports "up and running". Below is the full upgrade on a test server, what broke and the exact fixes. Lab: docker-mailserver 15.1.0 upgraded to 16.0.1 on the same volumes, rootless podman 5.8 (the docker commands are identical), a Debian 13 client container with swaks, curl and openssl, October 2026. Every output below comes from that lab. Sources: the docker-mailserver v16.0.0 release , its CHANGELOG and the Dovecot 2.3 to 2.4 upgrade guide . Docker mailserver upgrade to v16, in short: Back up docker-data/dms/ and stop the container. Rename 2.3 settings in config/dovecot.cf (for exampl...

Docker Mailserver Healthcheck: 7 Proven Tests in v16

Image
Since docker-mailserver v16.0.0 the image ships a docker mailserver healthcheck out of the box: a script called dms-healthcheck and a HEALTHCHECK --start-period=30s CMD dms-healthcheck line in the Dockerfile. The script checks that every supervisor service your configuration enables (Postfix, Dovecot, cron, rsyslog, OpenDKIM, Rspamd and so on) is RUNNING . On Docker the container then shows (healthy) or (unhealthy) with no extra configuration. On podman the image healthcheck is not used at all, so you have to add --health-cmd dms-healthcheck yourself. Every example below was tested on 2026-10-22 with mailserver/docker-mailserver:16.0.1 and :15.1.0 on Docker Engine 29.9.1 (the official docker:29.9.1-dind image) with Docker Compose v5.6.0, and with ghcr.io/docker-mailserver/docker-mailserver:16.0.1 on rootless podman 5.8.9. Rspamd, OpenDKIM, OpenDMARC, Amavis, ClamAV, Fail2Ban and Postgrey were disabled to keep the lab small. All output is copied from the lab. Contents What ...

WireGuard Docker: 7 Easy Steps and 4 Mistakes to Avoid

Image
The quickest WireGuard Docker setup is the lscr.io/linuxserver/wireguard image with a short compose.yaml : set PEERS and SERVERURL , publish UDP port 51820, add the NET_ADMIN capability and the src_valid_mark sysctl, then run docker compose up -d . The container generates the server config and one ready-to-import client config (plus QR code) per peer. This guide shows the whole setup with real output, a working client, and the four mistakes that leave you with a tunnel that never connects. Tested on 2026-10-23 on a Debian 12 KVM virtual machine (kernel 6.1.0-47-amd64) with Docker Engine 29.9.2 and Docker Compose v5.6.1, using image tag 1.0.20260223-r0-ls127 , the newest release that day. A second container on the same VM played the role of a remote laptop and connected to the VM's IP 192.168.121.137. Private and preshared keys are shortened in the output below; everything else is copied from the lab. Contents What you need for WireGuard Docker Step 1: compose.yaml for the W...

Compile Linux Kernel: 9 Easy Steps and 5 Errors Fixed

Image
To compile Linux kernel source on Debian or Ubuntu: install build-essential flex bison bc libssl-dev libelf-dev , download and verify the tarball from kernel.org, copy your running config with cp /boot/config-$(uname -r) .config , run make olddefconfig , build with make -j$(nproc) , then sudo make modules_install and sudo make install and reboot. This guide walks through every step with real output, including the four build errors you get when a package is missing and the certificate error that stops most Ubuntu builds. Every command used to compile Linux kernel 7.2.12 below was run on 2026-10-23 in a Debian 12 (bookworm) KVM virtual machine with 12 vCPUs and 5 GiB RAM, gcc 12.2.0 and binutils 2.40, building Linux 7.2.12, the latest stable release on kernel.org that day. The VM started on the distro kernel 6.1.0-47-amd64. All output is copied from two lab runs. Contents What you need before you compile Linux kernel source Step 1: download and verify the source before you compile ...