Skip to content
Snippets Groups Projects
createLiiibre 5.38 KiB
Newer Older
#!/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
Timothee Gosselin's avatar
Timothee Gosselin committed
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
Pierre Ozoux's avatar
Pierre Ozoux committed
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
Pierre Ozoux's avatar
Pierre Ozoux committed
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}