mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
This allows users to override - at a top-level - the DOKKU_ROOT, DOKKU_LIB_ROOT, and other configuration variables. If specified, this should begin to enable users to move their Dokku installations to mounted drives. Note that items installed from packages may not respect these paths, so further work may be in order. Closes #2958
138 lines
4.4 KiB
Bash
Executable File
138 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
set -eo pipefail; [[ $TRACE ]] && set -x
|
|
|
|
if [[ -e /usr/share/debconf/confmodule ]]; then
|
|
# shellcheck disable=SC1091
|
|
. /usr/share/debconf/confmodule
|
|
fi
|
|
|
|
if [[ -r /etc/defaults/dokku ]]; then
|
|
# shellcheck disable=SC1091
|
|
source /etc/defaults/dokku
|
|
fi
|
|
|
|
readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}"
|
|
readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}"
|
|
|
|
call-sshcommand() {
|
|
if [[ -x /usr/local/bin/sshcommand ]]; then
|
|
/usr/local/bin/sshcommand "$@"
|
|
elif [[ -x /usr/bin/sshcommand ]]; then
|
|
/usr/bin/sshcommand "$@"
|
|
else
|
|
echo "Unable to find sshcommand binary" 1>&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
abort-upgrade|abort-remove|abort-deconfigure)
|
|
;;
|
|
|
|
configure)
|
|
mandb
|
|
[ ! -x /usr/bin/docker.io ] || ln -sf /usr/bin/docker.io /usr/local/bin/docker
|
|
modprobe aufs || echo "WARNING: Restart server to finish installing dokku!"
|
|
call-sshcommand create dokku /usr/bin/dokku
|
|
|
|
egrep -i "^docker" /etc/group || groupadd docker
|
|
usermod -aG docker dokku
|
|
|
|
echo "Setting up storage directories"
|
|
mkdir -p ${DOKKU_LIB_ROOT}/data ${DOKKU_LIB_ROOT}/data/storage
|
|
chown dokku:dokku ${DOKKU_LIB_ROOT}/data ${DOKKU_LIB_ROOT}/data/storage
|
|
|
|
echo "Setting up plugin directories"
|
|
# should be replaced by `plugn init`
|
|
mkdir -p ${DOKKU_LIB_ROOT}/core-plugins/available ${DOKKU_LIB_ROOT}/plugins/available
|
|
mkdir -p ${DOKKU_LIB_ROOT}/core-plugins/enabled ${DOKKU_LIB_ROOT}/plugins/enabled
|
|
touch ${DOKKU_LIB_ROOT}/core-plugins/config.toml ${DOKKU_LIB_ROOT}/plugins/config.toml
|
|
|
|
echo "Migrating old plugins"
|
|
find ${DOKKU_LIB_ROOT}/plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
|
if [ "$plugin" = "available" ] || [ "$plugin" = "enabled" ]; then
|
|
continue
|
|
elif [ -f ${DOKKU_LIB_ROOT}/plugins/$plugin/.core ]; then
|
|
rm -rf ${DOKKU_LIB_ROOT}/plugins/$plugin
|
|
elif [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
|
|
mv ${DOKKU_LIB_ROOT}/plugins/$plugin ${DOKKU_LIB_ROOT}/plugins/available;
|
|
fi
|
|
done
|
|
|
|
echo "Enabling all core plugins"
|
|
find ${DOKKU_LIB_ROOT}/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
|
if [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
|
|
ln -s ${DOKKU_LIB_ROOT}/core-plugins/available/$plugin ${DOKKU_LIB_ROOT}/plugins/available/$plugin;
|
|
PLUGIN_PATH=${DOKKU_LIB_ROOT}/core-plugins plugn enable $plugin
|
|
PLUGIN_PATH=${DOKKU_LIB_ROOT}/plugins plugn enable $plugin
|
|
fi
|
|
done
|
|
find -L ${DOKKU_LIB_ROOT} -type l -delete
|
|
chown dokku:dokku -R ${DOKKU_LIB_ROOT}/plugins ${DOKKU_LIB_ROOT}/core-plugins
|
|
|
|
echo "Ensure proper sshcommand path"
|
|
echo '/usr/bin/dokku' > "${DOKKU_ROOT}/.sshcommand"
|
|
if [[ -f .ssh/authorized_keys ]]; then
|
|
sed -i.bak 's#/usr/local/bin/dokku#/usr/bin/dokku#' "${DOKKU_ROOT}/.ssh/authorized_keys"
|
|
rm "${DOKKU_ROOT}/.ssh/authorized_keys"
|
|
fi
|
|
|
|
echo "Install all core plugins"
|
|
dokku plugin:install --core
|
|
|
|
rm -f ${DOKKU_ROOT}/VERSION
|
|
cp ${DOKKU_LIB_ROOT}/STABLE_VERSION ${DOKKU_ROOT}/VERSION
|
|
|
|
if [[ -f /etc/nginx/conf.d/dokku-installer.conf ]]; then
|
|
echo "Setting up dokku-installer"
|
|
/usr/share/dokku/contrib/dokku-installer.py onboot
|
|
|
|
if command -v systemctl &>/dev/null; then
|
|
echo "Enabling dokku-installer"
|
|
systemctl enable dokku-installer
|
|
fi
|
|
|
|
installer_status="$(service dokku-installer status 2> /dev/null || true)"
|
|
if echo $installer_status | grep -Eq "(inactive|waiting)" > /dev/null; then
|
|
echo "Starting dokku-installer"
|
|
service dokku-installer start || echo "Unable to start dokku-installer"
|
|
fi
|
|
fi
|
|
|
|
db_get "dokku/web_config"
|
|
if [ "$RET" = "true" ]; then
|
|
db_stop
|
|
exit 0
|
|
fi
|
|
|
|
if [ -f "${DOKKU_ROOT}/VHOST" ]; then
|
|
echo "VHOST file detected, skipping modification"
|
|
else
|
|
db_get "dokku/vhost_enable"
|
|
if [ "$RET" = "true" ]; then
|
|
db_get "dokku/hostname"
|
|
echo "Setting VHOST contents to $RET"
|
|
echo "$RET" > "${DOKKU_ROOT}/VHOST"
|
|
fi
|
|
fi
|
|
|
|
db_get "dokku/hostname"
|
|
echo "$RET" > "${DOKKU_ROOT}/HOSTNAME"
|
|
|
|
if [ -z "${DEBCONF_RECONFIGURE}" ]; then
|
|
db_get "dokku/key_file"
|
|
if [ -f "$RET" ]; then
|
|
call-sshcommand acl-add dokku default < "$RET" || true
|
|
fi
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
echo "postinst called with unknown argument \`$1'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
db_stop
|
|
exit 0
|