Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/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
export DOMAIN=${1}
export NUAGE_SUBDOMAIN=${NUAGE_SUBDOMAIN:-nuage}
export CHAT_SUBDOMAIN=${CHAT_SUBDOMAIN:-chat}
export NS=`echo ${1} | sed 's/\./-/g'`
# Create NS
mkdir -p ${NS}
mkdir -p ${NS}/${NUAGE_SUBDOMAIN}
mkdir -p ${NS}/${CHAT_SUBDOMAIN}
echo export APP=rocketchat > ${NS}/${CHAT_SUBDOMAIN}/.env
echo export APP=nextcloud > ${NS}/${NUAGE_SUBDOMAIN}/.env
cp ./common/rocketchat/config.yaml ${NS}/${CHAT_SUBDOMAIN}/
kubectl create ns ${NS} || true
kubens ${NS}
kubectl -n ${NS} apply -f ./common/networkpolicies.yml
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
echo "Execute on sm1 export CHAT_SUBDOMAIN=${CHAT_SUBDOMAIN};export NUAGE_SUBDOMAIN=${NUAGE_SUBDOMAIN}; ~/pierre/scripts/createLiiibreBuckets ${1}"
# 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}