57 lines
1.5 KiB
Bash
Executable File
57 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu -o pipefail
|
|
|
|
readonly PROVISION_FILEPATH="/root/userdata.json"
|
|
|
|
# TODO do we allow specifying version?
|
|
# TODO add restore arguments (accessable url and encryption key)
|
|
domain=""
|
|
provider="generic"
|
|
versionsUrl="https://s3.amazonaws.com/prod-cloudron-releases/versions.json"
|
|
tlsProvider="letsencrypt-prod"
|
|
|
|
# Only GNU getopt supports long options. OS X comes bundled with the BSD getopt
|
|
# brew install gnu-getopt to get the GNU getopt on OS X
|
|
[[ $(uname -s) == "Darwin" ]] && GNU_GETOPT="/usr/local/opt/gnu-getopt/bin/getopt" || GNU_GETOPT="getopt"
|
|
readonly GNU_GETOPT
|
|
|
|
args=$(${GNU_GETOPT} -o "" -l "domain:,provider:,versions-url:,tls-provider:" -n "$0" -- "$@")
|
|
eval set -- "${args}"
|
|
|
|
while true; do
|
|
case "$1" in
|
|
--domain) domain="$2"; shift 2;;
|
|
--provider) provider="$2"; shift 2;;
|
|
--versions-url) versionsUrl="$2"; shift 2;;
|
|
--tls-provider) tlsProvider="$2"; shift 2;;
|
|
--) break;;
|
|
*) echo "Unknown option $1"; exit 1;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "${domain}" ]]; then
|
|
echo "--domain is required"
|
|
exit 1
|
|
fi
|
|
|
|
# TODO validate input
|
|
|
|
cat > "${PROVISION_FILEPATH}" <<EOF
|
|
{
|
|
"data": {
|
|
"boxVersionsUrl": "${versionsUrl}",
|
|
"fqdn": "${domain}",
|
|
"provider": "${provider}",
|
|
"tlsConfig": {
|
|
"provider": "${tlsProvider}"
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
|
|
# TODO print further instructions
|
|
echo "The Cloudron is being initialized"
|
|
echo "Create DNS record for this ip if not done already"
|
|
echo "Once DNS is ready, visit https://my.${domain} to finish setup"
|