Files
cloudron-box/scripts/cloudron-setup

115 lines
3.4 KiB
Plaintext
Raw Normal View History

2016-10-24 16:18:02 +02:00
#!/bin/bash
2016-10-25 12:00:54 -07:00
set -eu -o pipefail
2016-10-24 16:18:02 +02:00
# change this to a hash when we make a upgrade release
readonly INSTALLER_REVISION=master
readonly INIT_BASESYSTEM_SCRIPT_URL="https://git.cloudron.io/cloudron/box/raw/${INSTALLER_REVISION}/baseimage/initializeBaseUbuntuImage.sh"
readonly INSTALLER_SOURCE_DIR="/home/yellowtent/installer"
readonly LOG_FILE="/var/log/cloudron-setup.log"
2016-10-24 16:18:02 +02:00
domain=""
2016-10-26 10:53:25 -07:00
provider=""
restoreKey=""
restoreUrl=""
tlsProvider="letsencrypt-prod"
versionsUrl="https://s3.amazonaws.com/prod-cloudron-releases/versions.json"
version="latest"
2016-10-24 16:18:02 +02:00
2016-10-25 13:34:12 -07:00
args=$(getopt -o "" -l "domain:,help,provider:,restore-key:,restore-url:,tls-provider:,version:,versions-url:" -n "$0" -- "$@")
2016-10-24 16:18:02 +02:00
eval set -- "${args}"
while true; do
case "$1" in
--domain) domain="$2"; shift 2;;
2016-10-25 13:34:12 -07:00
--help) echo "See https://cloudron.io/references/selfhosting.html on how to install Cloudron"; exit 0;;
2016-10-24 16:18:02 +02:00
--provider) provider="$2"; shift 2;;
--restore-key) restoreKey="$2"; shift 2;;
--restore-url) restoreUrl="$2"; shift 2;;
--tls-provider) tlsProvider="$2"; shift 2;;
--version) version="$2"; shift 2;;
--versions-url) versionsUrl="$2"; shift 2;;
2016-10-24 16:18:02 +02:00
--) break;;
*) echo "Unknown option $1"; exit 1;;
esac
done
if [[ -z "${domain}" ]]; then
echo "--domain is required"
exit 1
fi
2016-10-26 10:53:25 -07:00
if [[ -z "${provider}" ]]; then
2016-10-28 11:21:58 +02:00
echo "--provider is required ('generic', 'scaleway', 'ec2', 'digitalocean')"
2016-10-26 10:53:25 -07:00
exit 1
fi
2016-10-25 15:28:26 +02:00
echo ""
echo "##############################################"
2016-10-25 12:57:24 -07:00
echo " Cloudron Setup (${version}) "
echo "##############################################"
echo ""
echo " Follow setup logs in a second terminal with:"
echo " $ tail -f ${LOG_FILE}"
echo ""
echo "=> Downloading initialization script"
2016-10-25 12:47:51 -07:00
if ! curl -s "${INIT_BASESYSTEM_SCRIPT_URL}" > /tmp/initializeBaseUbuntuImage.sh; then
echo "Could not download initialization script"
exit 1
fi
2016-10-25 15:28:26 +02:00
echo "=> Installing dependencies ... (this takes some time)"
2016-10-25 12:00:54 -07:00
if ! /bin/bash /tmp/initializeBaseUbuntuImage.sh "${INSTALLER_REVISION}" "${provider}" &>> "${LOG_FILE}"; then
echo "Init script failed. See ${LOG_FILE} for details"
exit 1
fi
rm /tmp/initializeBaseUbuntuImage.sh
2016-10-24 16:18:02 +02:00
2016-10-25 13:05:24 -07:00
echo "=> Checking version"
NPM_BIN=$(npm bin -g 2>/dev/null)
if ! version=$(${NPM_BIN}/cloudron-version --out version --versions-url "${versionsUrl}" --version "${version}"); then
echo "No such version ${version}"
exit 1
fi
if ! sourceTarballUrl=$(${NPM_BIN}/cloudron-version --out tarballUrl --versions-url "${versionsUrl}" --version "${version}"); then
echo "No source code for version ${version}"
exit 1
fi
data=$(cat <<EOF
2016-10-24 16:18:02 +02:00
{
2016-10-25 13:41:51 +02:00
"boxVersionsUrl": "${versionsUrl}",
"fqdn": "${domain}",
"provider": "${provider}",
2016-10-25 14:34:48 -07:00
"restore": {
"url": "${restoreUrl}",
"key": "${restoreKey}"
},
2016-10-25 13:41:51 +02:00
"tlsConfig": {
"provider": "${tlsProvider}"
},
"version": "${version}"
2016-10-24 16:18:02 +02:00
}
EOF
2016-10-25 13:05:24 -07:00
)
2016-10-24 16:18:02 +02:00
2016-10-25 13:05:24 -07:00
echo "=> Run installer.sh for version ${version} with ${sourceTarballUrl} ... (this takes some time)"
if ! ${INSTALLER_SOURCE_DIR}/scripts/installer.sh --sourcetarballurl "${sourceTarballUrl}" --data "${data}" &>> "${LOG_FILE}"; then
2016-10-25 12:47:51 -07:00
echo "Failed to install cloudron. See ${LOG_FILE} for details"
exit 1
fi
echo -n "=> Waiting for cloudron to be ready"
while true; do
echo -n "."
if journalctl -u box -a | grep "platformReady: configured, resuming tasks" >/dev/null; then
break
fi
sleep 10
done
echo ""
echo "Visit https://my.${domain} to finish setup"
echo ""