mirror of
https://github.com/nodemailer/wildduck.git
synced 2024-12-28 03:07:13 +08:00
88ee4c9ede
Fixed two issues: 82: need to install npm globally to get around permission problems 83: need to start nginx service before restarting it Better executable requirements (lsof, ps). It may be not installed on minimal systems. Better service detection on given port. It is especially useful, if the installation.sh got interrupted for some reason, and already installed some services. Minor doc update, so a single line is required to paste in terminal. curl vs. wget -> stayed with wget, it is installed by default on ubuntu Colors: added color support for the terminal output:)
80 lines
2.3 KiB
Bash
80 lines
2.3 KiB
Bash
#! /bin/bash
|
|
|
|
OURNAME=06_install_wildduck.sh
|
|
|
|
echo -e "\n-- Executing ${ORANGE}${OURNAME}${NC} subscript --"
|
|
|
|
####### WILD DUCK #######
|
|
|
|
# clear previous install
|
|
if [ -f "/etc/systemd/system/wildduck.service" ]
|
|
then
|
|
$SYSTEMCTL_PATH stop wildduck || true
|
|
$SYSTEMCTL_PATH disable wildduck || true
|
|
rm -rf /etc/systemd/system/wildduck.service
|
|
fi
|
|
rm -rf /var/opt/wildduck.git
|
|
rm -rf /opt/wildduck
|
|
rm -rf /etc/wildduck
|
|
|
|
# fresh install
|
|
cd /var/opt
|
|
git clone --bare git://github.com/nodemailer/wildduck.git
|
|
|
|
# create update hook so we can later deploy to this location
|
|
hook_script wildduck
|
|
|
|
# allow deploy user to restart wildduck service
|
|
echo "deploy ALL = (root) NOPASSWD: $SYSTEMCTL_PATH restart wildduck" >> /etc/sudoers.d/wildduck
|
|
|
|
# checkout files from git to working directory
|
|
mkdir -p /opt/wildduck
|
|
git --git-dir=/var/opt/wildduck.git --work-tree=/opt/wildduck checkout "$WILDDUCK_COMMIT"
|
|
cp -r /opt/wildduck/config /etc/wildduck
|
|
mv /etc/wildduck/default.toml /etc/wildduck/wildduck.toml
|
|
|
|
# enable example message
|
|
sed -i -e 's/"disabled": true/"disabled": false/g' /opt/wildduck/emails/00-example.json
|
|
|
|
# update ports
|
|
sed -i -e "s/999/99/g;s/localhost/$HOSTNAME/g" /etc/wildduck/imap.toml
|
|
sed -i -e "s/999/99/g;s/localhost/$HOSTNAME/g" /etc/wildduck/pop3.toml
|
|
|
|
echo "enabled=true
|
|
port=24
|
|
disableSTARTTLS=true" > /etc/wildduck/lmtp.toml
|
|
|
|
# make sure that DKIM keys are not stored to database as cleartext
|
|
#echo "secret=\"$DKIM_SECRET\"
|
|
#cipher=\"aes192\"" >> /etc/wildduck/dkim.toml
|
|
|
|
echo "user=\"wildduck\"
|
|
group=\"wildduck\"
|
|
emailDomain=\"$MAILDOMAIN\"" | cat - /etc/wildduck/wildduck.toml > temp && mv temp /etc/wildduck/wildduck.toml
|
|
|
|
sed -i -e "s/localhost:3000/$HOSTNAME/g;s/localhost/$HOSTNAME/g;s/2587/587/g" /etc/wildduck/wildduck.toml
|
|
|
|
cd /opt/wildduck
|
|
npm install --unsafe-perm --production
|
|
|
|
chown -R deploy:deploy /var/opt/wildduck.git
|
|
chown -R deploy:deploy /opt/wildduck
|
|
|
|
echo "[Unit]
|
|
Description=WildDuck Mail Server
|
|
Conflicts=cyrus.service dovecot.service
|
|
After=mongod.service redis.service
|
|
|
|
[Service]
|
|
Environment=\"NODE_ENV=production\"
|
|
WorkingDirectory=/opt/wildduck
|
|
ExecStart=$NODE_PATH server.js --config=\"/etc/wildduck/wildduck.toml\"
|
|
ExecReload=/bin/kill -HUP \$MAINPID
|
|
Type=simple
|
|
Restart=always
|
|
SyslogIdentifier=wildduck-server
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target" > /etc/systemd/system/wildduck.service
|
|
|
|
$SYSTEMCTL_PATH enable wildduck.service
|