#!/bin/bash -eu function usage() { echo "Usage:" echo "createLiiibre mydomain.org" } if [ $# -ne 1 ] # we expect 1 arg then echo "Please pass only 1 argument." usage exit 1 fi cd /root/domains source ./common/scripts/functions.sh export DOMAIN=${1} export NS=`echo ${1} | sed 's/\./-/g'` create_ns # Create CHAT resources export CHAT_SUBDOMAIN=${CHAT_SUBDOMAIN:-chat} mkdir -p ${NS}/${CHAT_SUBDOMAIN} echo export APP=rocketchat > ${NS}/${CHAT_SUBDOMAIN}/.env echo export S3_ENDPOINT=https://hot-objects.liiib.re >> ${NS}/${CHAT_SUBDOMAIN}/.env echo export S3_ENDPOINT_COLD=https://cold-objects.liiib.re >> ${NS}/${CHAT_SUBDOMAIN}/.env cp ./common/rocketchat/config.yaml ${NS}/${CHAT_SUBDOMAIN}/ # Create NUAGE resources export NUAGE_SUBDOMAIN=${NUAGE_SUBDOMAIN:-nuage} mkdir -p ${NS}/${NUAGE_SUBDOMAIN} echo export APP=nextcloud > ${NS}/${NUAGE_SUBDOMAIN}/.env echo export S3_ENDPOINT=https://hot-objects.liiib.re >> ${NS}/${NUAGE_SUBDOMAIN}/.env echo export S3_ENDPOINT_COLD=https://cold-objects.liiib.re >> ${NS}/${NUAGE_SUBDOMAIN}/.env cd ${NS}/${NUAGE_SUBDOMAIN} libre apply ../../common/nextcloud/other-manifests/saml-cert.yaml cd ../.. # Create NoReply email echo "Creating NoReply Email..." tld=`echo ${1} | sed 's/\./-/g'` noreply_email_password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 18 | head -n 1) noreply_email="${tld}@liiib.re" forum_email_password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 18 | head -n 1) forum_email="forum-${tld}@liiib.re" chat_email_password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 18 | head -n 1) chat_email="${CHAT_SUBDOMAIN}-${tld}@liiib.re" source /etc/env mail_username=contact@indie.host mail_hostname=mail.indie.host noreply_local_part=`echo $noreply_email | cut -d@ -f1` forum_local_part=`echo $forum_email | cut -d@ -f1` chat_local_part=`echo $chat_email | cut -d@ -f1` email_domain=`echo $noreply_email | cut -d@ -f2` curl --data "username=${mail_username}&password=${mail_password}&login=Log+In&rememberme=0" -c /tmp/cookie.txt https://${mail_hostname}/auth/login domain_id=`curl -b /tmp/cookie.txt https://${mail_hostname}/domain | grep $email_domain | grep purge-domain | grep -o 'purge-domain-[0-9]*' | grep -o '[0-9]*'` curl --data "local_part=${noreply_local_part}&domain=${domain_id}&password=${noreply_email_password}" -b /tmp/cookie.txt https://${mail_hostname}/mailbox/add curl --data "local_part=${forum_local_part}&domain=${domain_id}&password=${forum_email_password}" -b /tmp/cookie.txt https://${mail_hostname}/mailbox/add curl --data "local_part=${chat_local_part}&domain=${domain_id}&password=${chat_email_password}" -b /tmp/cookie.txt https://${mail_hostname}/mailbox/add rm /tmp/cookie.txt kubectl -n ${tld} create secret generic ${tld}-smtp --from-literal=host=mail.indie.host --from-literal=port=587 --from-literal=from_email=${noreply_email} --from-literal=username=${noreply_email} --from-literal=password=${noreply_email_password} --from-literal=mail_from_address=${noreply_local_part} kubectl -n ${tld} create secret generic forum-${tld}-smtp --from-literal=host=mail.indie.host --from-literal=port=587 --from-literal=from_email=${forum_email} --from-literal=username=${forum_email} --from-literal=password=${forum_email_password} --from-literal=mail_from_address=${forum_local_part} kubectl -n ${tld} create secret generic ${CHAT_SUBDOMAIN}-${tld}-smtp --from-literal=host=mail.indie.host --from-literal=port=587 --from-literal=from_email=${chat_email} --from-literal=username=${chat_email} --from-literal=password=${chat_email_password} --from-literal=mail_from_address=${chat_local_part} # Create Buckets ## Create dumps bucket export STORAGE_CLASS=cold export AWS_ACCESS_KEY_ID=${NS}-dumps export SECRET_NAME=${AWS_ACCESS_KEY_ID} create_bucket ## Create data buckets export STORAGE_CLASS=hot ### For chats export AWS_ACCESS_KEY_ID=${CHAT_SUBDOMAIN}-${NS} export SECRET_NAME=${AWS_ACCESS_KEY_ID}-s3 create_bucket mc version enable ${STORAGE_CLASS}/${AWS_ACCESS_KEY_ID} ### For Nuage export AWS_ACCESS_KEY_ID=${NUAGE_SUBDOMAIN}-${NS} export SECRET_NAME=${AWS_ACCESS_KEY_ID}-s3 create_bucket mc version enable ${STORAGE_CLASS}/${AWS_ACCESS_KEY_ID} # Create secrets mkdir /tmp/${NS} # Create Nextcloud secret mkdir /tmp/${NS}/nextcloud source /root/domains/common/nextcloud/source envsubst < /root/domains/common/nextcloud/env.template > /tmp/${NS}/nextcloud/env envsubst < /root/domains/common/nextcloud/kustomization.yaml.template > /tmp/${NS}/nextcloud/kustomization.yaml kustomize build /tmp/${NS}/nextcloud | kubectl -n ${NS} apply -f - # Create OnlyOffice echo "Execute on k: libre provision -u oo-${NS}.k.liiib.re -a lab.libreho.st/libre.sh/compose/onlyoffice -s" echo and then here: echo kubectl -n ${NS} create secret generic ${NUAGE_SUBDOMAIN}-${NS}-oo --from-literal=ONLYOFFICE_SERVER=https://oo-${NS}.k.liiib.re --from-literal=ONLYOFFICE_JWT_SECRET= # Create RocketChat secret mkdir /tmp/${NS}/rocketchat source /root/domains/common/rocketchat/source envsubst < /root/domains/common/rocketchat/env.template > /tmp/${NS}/rocketchat/env envsubst < /root/domains/common/rocketchat/kustomization.yaml.template > /tmp/${NS}/rocketchat/kustomization.yaml kustomize build /tmp/${NS}/rocketchat | kubectl -n ${NS} apply -f - # Clean rm -rf /tmp/${NS} klibre create realm --config config.yaml --domain ${DOMAIN} klibre create clients rocketchat --config config.yaml --domain ${DOMAIN} klibre create clients nextcloud --config config.yaml --domain ${DOMAIN}