From 0c5382ccbef29d74c57e5552d9bad4c3e8319318 Mon Sep 17 00:00:00 2001 From: Refosel Date: Tue, 16 Jun 2026 00:48:02 +0300 Subject: [PATCH] fix: use debian base and wget for stalwart --- apps/stalwart/Dockerfile | 36 +++++++++++++++++++++++++----------- apps/stalwart/entrypoint.sh | 7 ++++--- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/apps/stalwart/Dockerfile b/apps/stalwart/Dockerfile index f791602..3808574 100644 --- a/apps/stalwart/Dockerfile +++ b/apps/stalwart/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/stalwartlabs/mail-server:latest +FROM debian:bookworm-slim LABEL author="RefoselTeam" maintainer="admin@refoseltw.ru" @@ -7,27 +7,41 @@ LABEL org.opencontainers.image.licenses=MIT ENV DEBIAN_FRONTEND=noninteractive -# Install additional tools -RUN apt update \ - && apt upgrade -y \ - && apt install -y \ +# Install dependencies +RUN apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y \ + ca-certificates \ curl \ git \ tini \ - && apt clean \ + wget \ + && apt-get clean \ && rm -rf /var/lib/apt/lists/* -# Create directories -RUN mkdir -p /home/container/stalwart-mail/data \ - && mkdir -p /home/container/stalwart-mail/certs \ - && mkdir -p /home/container/stalwart-mail/logs +# Create directories first +RUN mkdir -p /opt/stalwart-mail/bin \ + && mkdir -p /opt/stalwart-mail/etc \ + && mkdir -p /opt/stalwart-mail/data \ + && mkdir -p /opt/stalwart-mail/logs + +# Download and install Stalwart Mail Server +ARG STALWART_VERSION=0.16.8 +RUN wget -q -O /tmp/stalwart.tar.gz \ + "https://github.com/stalwartlabs/stalwart/releases/download/v${STALWART_VERSION}/stalwart-x86_64-unknown-linux-gnu.tar.gz" \ + && tar -xzf /tmp/stalwart.tar.gz -C /tmp/ \ + && ls -la /tmp/ \ + && find /tmp -maxdepth 2 -name "stalwart*" \ + && cp /tmp/stalwart /opt/stalwart-mail/bin/stalwart-mail \ + && chmod +x /opt/stalwart-mail/bin/stalwart-mail \ + && rm -rf /tmp/* EXPOSE 8080 465 587 993 995 4190 STOPSIGNAL SIGINT COPY --chown=root:root ./entrypoint.sh /entrypoint.sh -COPY --chown=root:root ./config.toml /entrypoint-config.toml +COPY --chown=root:root ./config.toml /opt/stalwart-mail/etc/config.toml RUN chmod +x /entrypoint.sh ENTRYPOINT ["/usr/bin/tini", "-g", "--"] diff --git a/apps/stalwart/entrypoint.sh b/apps/stalwart/entrypoint.sh index cda775e..b4f02f6 100644 --- a/apps/stalwart/entrypoint.sh +++ b/apps/stalwart/entrypoint.sh @@ -11,13 +11,14 @@ export TZ cd /home/container || exit 1 # Stalwart paths -STALWART_HOME="/var/lib/stalwart-mail" -STALWART_CONFIG="/etc/stalwart-mail/config.toml" +STALWART_HOME="/opt/stalwart-mail" +STALWART_CONFIG="${STALWART_HOME}/etc/config.toml" +STALWART_BIN="${STALWART_HOME}/bin/stalwart-mail" # Create config from template if not exists if [ ! -f "${STALWART_CONFIG}" ]; then echo "Generating Stalwart configuration..." - cp /entrypoint-config.toml "${STALWART_CONFIG}" + cp /opt/stalwart-mail/etc/config.toml "${STALWART_CONFIG}" # Replace placeholders with environment variables sed -i "s|{{MAIL_DOMAIN}}|${MAIL_DOMAIN:-mail.example.com}|g" "${STALWART_CONFIG}"