File debian.postinst of Package egroupware-rocketchat
#! /bin/sh
#export DEBCONF_DEBUG=developer
set -e
# das hier muss ganz oben stehen (man debconf-devel)
. /usr/share/debconf/confmodule
db_version 2.0
webserver_soft_reload() {
if command -v invoke-rc.d >/dev/null 2>&1; then
invoke-rc.d "$1" force-reload || :
else
[ -x /etc/init.d/"$1" ] && /etc/init.d/"$1" force-reload || :
fi
}
# check if docker compose is available (Ubuntu 24.04 stalls on docker-compose!)
COMPOSE="docker compose"
docker help compose >/dev/null || {
COMPOSE="docker-compose"
}
if [ "$1" = configure -o "$1" = upgrade ]
then
cd /etc/egroupware-rocketchat
# change owner of Rocket.Chat data-directory to 65533 used by container
chown -R 65533:65533 /var/lib/egroupware/default/rocketchat
# If upgrading, $2 contains the release currently installed, otherwise it's empty
if [ -z "$2" ]
then
# new install
# create docker-compose.override.yml from latest-docker-compose.override.yml
cp latest-docker-compose.override.yml docker-compose.override.yml
# if HTTP_HOST given, patch docker-compose.override.yml with it and install and integrate Rocket.Chat into EGroupware
test -z "$HTTP_HOST" || {
sed -i docker-compose.override.yml \
-e "s#ROOT_URL=.*#ROOT_URL=https://${HTTP_HOST}/#g"
./install-rocketchat.sh
}
# otherwise use our primary IP (of interface with default route) and leave installation to Rocket.Chat itself
test -n "$HTTP_HOST" || \
sed -i docker-compose.override.yml \
-e "s#ROOT_URL=.*#ROOT_URL=http://$(ifconfig $(netstat -rn|grep ^0.0.0.0|head -1|sed 's/^.* \(.*\)$/\1/g')|grep 'inet '|sed -En 's/.*inet ([0-9.]+).*/\1/p')/#g"
else # update
# if we dont have it, create docker-compose.override.yml
test -f docker-compose.override.yml || {
# if we have modifications in docker-compose.yml update created a docker-compose.yml.dpgk-dist
test docker-compose.yml.dpgk-dist -nt docker-compose.yml && {
# use current docker-compose.yml as .override
sed "s|version:'2'|version:'3'|" docker-compose.yml > docker-compose.override.yml
# disabling a couple of settings, which would break with MongoDB 5.0 and Rocket.Chat 5.4
sed -i docker-compose.override.yml \
-e "s|^\( *\)\(- MONGO_.*\)$|\1#\2|" \
-e "s|^\( *\)\(image: *mongo:.*\)$|\1#\2|" \
-e "s|^\( *\)\(command: *mongod.*\)$|\1#\2|"
# and move new .dpgk-dist in place
mv docker-compose.yml.dpgk-dist docker-compose.yml
} || \
# otherwise create it from latest-docker-compose.override
cp latest-docker-compose.override.yml docker-compose.override.yml
}
# if docker-compose.yml.dpgk-dist exists and is newer than docker-compose.yml --> replace it
test docker-compose.yml.dpgk-dist -nt docker-compose.yml && {
mv docker-compose.yml.dpgk-dist docker-compose.yml
} || true
# update to MongoDB to 7.0
./update-mongodb.sh 7.0 && {
# first start old "stable6" image, otherwise some indexes might be missing
echo "y" | $COMPOSE up -d || true
echo "Waiting for stable6 RC to start"
for i in `seq 1 45`; do echo -n .; sleep 1; done; echo
docker logs rocketchat
# on success: disable image overwrite, to get quay.io/egroupware/rocket.chat:stable7 from docker-compose.yml
sed 's/^\( *\)\(image: *.*rocket.chat.*\)$/\1#\2/g' -i docker-compose.override.yml
# remove mongo service overwrites, as docker-compose.yml has everything for 7.0
sed -e '/^ *mongo:/,+99d' -i docker-compose.override.yml
} || {
true # do nothing as RC 7.x still supports MongoDB 5.0, it's only deprecated
}
fi
# (re-)start our containers (do NOT fail package installation on error, as this leaves package in a wired state!)
$COMPOSE pull && \
echo "y" | $COMPOSE up -d || true
# Set up web server and reload it.
if [ -d /etc/nginx -a -x /usr/sbin/nginx ]
then
# initial install: enable egroupware and disable default site
if [ -z "$2" ]
then
[ -d /etc/nginx/app.d ] || mkdir /etc/nginx/app.d
ln -fs ../../egroupware-rocketchat/nginx.conf /etc/nginx/app.d/egroupware-rocketchat.conf
fi
nginx -s reload
fi
if [ -d /etc/apache2 -a -x /usr/sbin/a2enmod ]
then
# initial install: add Include /etc/egroupware-rocketchat/apache.conf to all vhosts
if [ -z "$2" ]
then
cd /etc/apache2/sites-available
for conf in $(grep -il '<VirtualHost ' *.conf)
do
[ -z "$(grep '/etc/egroupware-rocketchat/apache.conf' $conf)" ] && \
sed -i 's|</VirtualHost>|\t# Rocket.Chat proxy needs to be included inside vhost\n\tinclude /etc/egroupware-rocketchat/apache.conf\n\n</VirtualHost>|g' $conf && \
echo "Include /etc/egroupware-rocketchat/apache.conf added to site $conf"
done
fi
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel
a2enmod rewrite
webserver_soft_reload apache2
fi
fi
#DEBHELPER#
db_stop