From efaf39c9971bac1898d64ca2e2085bf48f13cc98 Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 06:56:20 +0000 Subject: [PATCH] Add stalwart (ct) --- ct/headers/stalwart | 6 ++++ ct/stalwart.sh | 58 ++++++++++++++++++++++++++++++++++ install/stalwart-install.sh | 62 +++++++++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 ct/headers/stalwart create mode 100644 ct/stalwart.sh create mode 100644 install/stalwart-install.sh diff --git a/ct/headers/stalwart b/ct/headers/stalwart new file mode 100644 index 000000000..f96f85306 --- /dev/null +++ b/ct/headers/stalwart @@ -0,0 +1,6 @@ + _____ __ __ __ + / ___// /_____ _/ / ______ ______/ /_ + \__ \/ __/ __ `/ / | /| / / __ `/ ___/ __/ + ___/ / /_/ /_/ / /| |/ |/ / /_/ / / / /_ +/____/\__/\__,_/_/ |__/|__/\__,_/_/ \__/ + diff --git a/ct/stalwart.sh b/ct/stalwart.sh new file mode 100644 index 000000000..7ee1a4709 --- /dev/null +++ b/ct/stalwart.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +source "$(dirname "${BASH_SOURCE[0]}")/../misc/build.func" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_URL:-https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main}/misc/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/stalwartlabs/stalwart + +APP="Stalwart" +var_tags="${var_tags:-mail;smtp;imap}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-20}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/stalwart ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "stalwart" "stalwartlabs/stalwart"; then + msg_info "Stopping Service" + systemctl stop stalwart + msg_ok "Stopped Service" + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "stalwart" "stalwartlabs/stalwart" "prebuild" "latest" "/opt/stalwart" "stalwart-$(arch_resolve x86_64 aarch64)-unknown-linux-gnu.tar.gz" + chmod +x /opt/stalwart/stalwart + + msg_info "Starting Service" + systemctl start stalwart + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW}Access it using the following URL:${CL}" +echo -e "${GATEWAY}${BGN}http://${IP}:8080/admin${CL}" +echo -e "${INFO}${YW}The bootstrap admin password was printed to the service log:${CL}" +echo -e "${TAB}${DEFAULT}${BGN}journalctl -u stalwart | grep -A8 'bootstrap mode'${CL}" diff --git a/install/stalwart-install.sh b/install/stalwart-install.sh new file mode 100644 index 000000000..c4f0f232d --- /dev/null +++ b/install/stalwart-install.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/stalwartlabs/stalwart + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +fetch_and_deploy_gh_release "stalwart" "stalwartlabs/stalwart" "prebuild" "latest" "/opt/stalwart" "stalwart-$(arch_resolve x86_64 aarch64)-unknown-linux-gnu.tar.gz" +chmod +x /opt/stalwart/stalwart + +msg_info "Configuring Stalwart" +mkdir -p /opt/stalwart_data/{etc,data,logs} +cat </opt/stalwart_data/etc/stalwart.env +# Uncomment and edit an entry to override its default. +# Apply changes with: systemctl restart stalwart + +#STALWART_HOSTNAME=mail.example.com +#STALWART_PUBLIC_URL=https://mail.example.com +#STALWART_RECOVERY_MODE=true +#STALWART_RECOVERY_ADMIN=admin:changeme +EOF +chmod 600 /opt/stalwart_data/etc/stalwart.env +msg_ok "Configured Stalwart" + +msg_info "Creating Service" +cat </etc/systemd/system/stalwart.service +[Unit] +Description=Stalwart Mail Server +Conflicts=postfix.service sendmail.service exim4.service +Wants=network-online.target +After=network-online.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/stalwart_data +EnvironmentFile=-/opt/stalwart_data/etc/stalwart.env +ExecStart=/opt/stalwart/stalwart --config=/opt/stalwart_data/etc/config.json +LimitNOFILE=65536 +KillMode=process +KillSignal=SIGINT +Restart=on-failure +RestartSec=5 +SyslogIdentifier=stalwart + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now stalwart +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc