From 462167b00525f525f35b0704f392ef33c54d5e17 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 20 Sep 2022 20:36:12 +0000 Subject: [PATCH] Added proxy.sh --- fstack/lib/nextcloud.sh | 4 ++ fstack/lib/panel.sh | 4 ++ fstack/lib/proxy.sh | 84 +++++++++++++++++++++++++++++++++++++++++ install-federated.sh | 5 +++ 4 files changed, 97 insertions(+) create mode 100644 fstack/lib/proxy.sh diff --git a/fstack/lib/nextcloud.sh b/fstack/lib/nextcloud.sh index 6023cdf..fa441c3 100644 --- a/fstack/lib/nextcloud.sh +++ b/fstack/lib/nextcloud.sh @@ -41,6 +41,10 @@ services: - ./data/etc/apache2/sites-enabled:/etc/apache2/sites-enabled - ./data/var/www/html:/var/www/html environment: + - CERT_NAME=$DOMAIN + - VIRTUAL_PROTO=https + - VIRTUAL_PORT=443 + - VIRTUAL_HOST=nextcloud.$DOMAIN - SQLITE_DATABASE=db1 - NEXTCLOUD_ADMIN_USER=nextcloud - NEXTCLOUD_ADMIN_PASSWORD=$ADMINPASS diff --git a/fstack/lib/panel.sh b/fstack/lib/panel.sh index 3b55554..357373c 100644 --- a/fstack/lib/panel.sh +++ b/fstack/lib/panel.sh @@ -36,6 +36,10 @@ services: volumes: - ./data/root/certs:/opt/ssl environment: + - CERT_NAME=$DOMAIN + - VIRTUAL_PROTO=https + - VIRTUAL_PORT=443 + - VIRTUAL_HOST=panel.$DOMAIN - SERVER_HOSTNAME=panel.$DOMAIN - LDAP_URI=ldap://ldap.$DOMAIN - LDAP_BASE_DN=dc=$DOMAIN_FIRST,dc=$DOMAIN_LAST diff --git a/fstack/lib/proxy.sh b/fstack/lib/proxy.sh new file mode 100644 index 0000000..aa0a243 --- /dev/null +++ b/fstack/lib/proxy.sh @@ -0,0 +1,84 @@ +#!/bin/bash +# +# Federated Computer Proxy Service + +PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +config_proxy() { + echo -ne "\n* Configuring fstack/proxy container.." + spin & + SPINPID=$! + + if [ ! -d "fstack/proxy" ]; then + mkdir -p fstack/proxy/data/root/certs &> /dev/null + cp fstack/dns/data/etc/letsencrypt/archive/$DOMAIN/fullchain1.pem fstack/proxy/data/root/certs/$DOMAIN.crt + cp fstack/dns/data/etc/letsencrypt/archive/$DOMAIN/privkey1.pem fstack/proxy/data/root/certs/$DOMAIN.key + fi + + DOMAIN_ARRAY=(${DOMAIN//./ }) + DOMAIN_FIRST=${DOMAIN_ARRAY[0]} + DOMAIN_LAST=${DOMAIN_ARRAY[1]} + +cat > fstack/proxy/docker-compose.yml < /dev/null +echo -ne "done." +} + +start_proxy() { + # Start fstack/proxy with output to /dev/null + echo -ne "\n* Starting fstack/proxy service.." + spin & + SPINPID=$! + + if [ $DEBUG ]; then + # Start fstack/proxy with output to console for debug + docker-compose -f fstack/proxy/docker-compose.yml -p proxy up + [ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service fstack/proxy" + else + docker-compose -f fstack/proxy/docker-compose.yml -p proxy up -d &> /dev/null + + # Keep trying proxy port 443 to make sure it's up + # before we proceed + RETRY="23" + while [ $RETRY -gt 0 ]; do + nc -z 172.99.0.16 443 &> /dev/null + if [ $? -eq 0 ]; then + break + else + if [ "$RETRY" == 1 ]; then + docker-compose -f fstack/proxy/docker-compose.yml -p proxy down &> /dev/null + kill -9 $SPINPID &> /dev/null + fail "There was a problem starting service fstack/proxy\nCheck the output of 'docker logs proxy' or turn on\ndebug with -d" + fi + ((RETRY--)) + sleep 7 + fi + done + fi + + kill -9 $SPINPID &> /dev/null + echo -ne "done." +} diff --git a/install-federated.sh b/install-federated.sh index 7e29f2a..67236d6 100755 --- a/install-federated.sh +++ b/install-federated.sh @@ -51,6 +51,7 @@ get_config() { . fstack/lib/mail.sh . fstack/lib/nextcloud.sh . fstack/lib/panel.sh + . fstack/lib/proxy.sh echo -ne "\nFederated Stack install script\n\n" read -p '* Enter domain name (domain.com): ' DOMAIN @@ -100,6 +101,10 @@ start_nextcloud config_panel start_panel +# Configure fstack/proxy container and start it +config_proxy +start_proxy + # Print out fstack environment details echo -ne "\n\nInstall completed successfully.\n\n" echo -ne "Certificates at fstack/dns/data/etc/letsencrypt/archive/$DOMAIN\n"