Added connector container

This commit is contained in:
Derek Crudgington 2023-01-20 19:04:39 +00:00
parent a4a0ab566d
commit 91d9fd1ee4
11 changed files with 163 additions and 16 deletions

View File

@ -61,6 +61,7 @@ get_config() {
. /federated/lib/panel.sh
. /federated/lib/proxy.sh
. /federated/lib/wireguard.sh
. /federated/lib/connector.sh
echo -ne "\nFederated Stack install script\n\n"
read -p '* Enter domain name (domain.com): ' DOMAIN
@ -91,13 +92,26 @@ check_ports
config_network
# Configure and start each federated service
for i in dns postgresql ldap mail collabora proxy nextcloud matrix element listmonk vaultwarden panel wireguard jitsi; do
for i in postgresql ldap mail collabora proxy nextcloud matrix element listmonk vaultwarden panel wireguard jitsi connector; do
config_$i
start_$i
done
# Print out fstack environment details
echo -ne "\n\nInstall completed successfully.\n\n"
echo -ne "Certificates at apps/dns/data/etc/letsencrypt/archive/$DOMAIN\n"
echo -ne "Webmail is at http://www.$DOMAIN:9002\n"
echo -ne "Login user: admin Password: Provided at start\n"
# Print out federated environment details
cat << EOF
* The services are at these hostnames..
mail.$DOMAIN
www.$DOMAIN
panel.$DOMAIN
nextcloud.$DOMAIN
jitsi.$DOMAIN
element.$DOMAIN
listmonk.$DOMAIN
vaultwarden.$DOMAIN
vpn.$DOMAIN
connector.$DOMAIN
* Your VPN Wireguard configuration is..
EOF
cat /federated/apps/wireguard/data/config/peer1/peer1.conf

View File

@ -3,7 +3,7 @@
# Federated Start Script
usage() {
echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard"
echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector"
exit 2
}
startservice() {
@ -11,7 +11,7 @@ startservice() {
cd /federated/apps/$SERVICE && docker-compose -f docker-compose.yml -p $SERVICE up -d
}
startservice_all() {
for i in dns postgresql ldap mail collabora nextcloud matrix jitsi listmonk vaultwarden panel proxy wireguard; do
for i in dns postgresql ldap mail collabora nextcloud matrix jitsi listmonk vaultwarden panel proxy wireguard connector; do
echo "* Starting $i.."
cd /federated/apps/$i && docker-compose -f docker-compose.yml -p $i up -d
done
@ -22,6 +22,6 @@ SERVICE=$1
case "$SERVICE" in
all) startservice_all;;
dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard) startservice;;
dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector) startservice;;
*) usage;;
esac

View File

@ -3,7 +3,7 @@
# Federated Stop Script
usage() {
echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard"
echo "$0: all|dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector"
exit 2
}
stopservice() {
@ -11,7 +11,7 @@ stopservice() {
cd /federated/apps/$SERVICE && docker-compose -f docker-compose.yml -p $SERVICE down
}
stopservice_all() {
for i in dns postgresql ldap mail collabora nextcloud matrix jitsi listmonk vaultwarden panel proxy wireguard; do
for i in dns postgresql ldap mail collabora nextcloud matrix jitsi listmonk vaultwarden panel proxy wireguard connector; do
echo "* Stopping $i.."
cd /federated/apps/$i && docker-compose -f docker-compose.yml -p $i down
done
@ -22,6 +22,6 @@ SERVICE=$1
case "$SERVICE" in
all) stopservice_all;;
dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard) stopservice;;
dns|postgresql|ldap|mail|collabora|nextcloud|matrix|jitsi|listmonk|vaultwarden|panel|proxy|wireguard|connector) stopservice;;
*) usage;;
esac

94
lib/connector.sh Normal file
View File

@ -0,0 +1,94 @@
#!/bin/bash
#
# Connector Service
PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
config_connector() {
echo -ne "\n* Configuring /federated/apps/connector container.."
spin &
SPINPID=$!
if [ ! -d "/federated/apps/connector" ]; then
mkdir -p /federated/apps/connector/data/source/public/downloads
fi
DOMAIN_ARRAY=(${DOMAIN//./ })
DOMAIN_FIRST=${DOMAIN_ARRAY[0]}
DOMAIN_LAST=${DOMAIN_ARRAY[1]}
cat > /federated/apps/connector/docker-compose.yml <<EOF
version: '3.7'
services:
connector:
image: federatedcomputer/web-connector:\${IMAGE_VERSION}
container_name: connector
hostname: connector.$DOMAIN
domainname: $DOMAIN
restart: always
networks:
federated:
ipv4_address: 172.99.0.27
ports:
- 3000:3000
env_file:
- ./.env
volumes:
- ./data/source/public/downloads:/source/public/downloads
networks:
federated:
external: true
EOF
cat > /federated/apps/connector/.env <<EOF
DOMAIN=$DOMAIN
IMAGE_VERSION="latest"
VIRTUAL_PROTO=http
VIRTUAL_PORT=3000
VIRTUAL_HOST=connector.$DOMAIN
EOF
chmod 600 /federated/apps/connector/.env
cp /federated/lib/files/connector/FederatedCore.dmg /federated/apps/connector/data/source/public/downloads/
kill -9 $SPINPID &> /dev/null
echo -ne "done."
}
start_connector() {
# Start /federated/apps/connector with output to /dev/null
echo -ne "\n* Starting /federated/apps/connector service.."
spin &
SPINPID=$!
if [ $DEBUG ]; then
# Start /federated/apps/connector with output to console for debug
docker-compose -f /federated/apps/connector/docker-compose.yml -p connector up
[ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/connector"
else
docker-compose -f /federated/apps/connector/docker-compose.yml -p connector up -d &> /dev/null
# Keep trying connector port 80 to make sure it's up
# before we proceed
RETRY="30"
while [ $RETRY -gt 0 ]; do
nc -z 172.99.0.27 3000 &> /dev/null
if [ $? -eq 0 ]; then
break
else
if [ "$RETRY" == 1 ]; then
docker-compose -f /federated/apps/connector/docker-compose.yml -p connector down &> /dev/null
kill -9 $SPINPID &> /dev/null
fail "There was a problem starting service /federated/apps/connector\nCheck the output of 'docker logs connector' or turn on\ndebug with -d"
fi
((RETRY--))
sleep 7
fi
done
fi
kill -9 $SPINPID &> /dev/null
echo -ne "done."
}

View File

@ -15,7 +15,7 @@ config_dns() {
mkdir -p /federated/apps/dns/data/etc/bind/zones
mkdir -p /federated/apps/dns/data/var/log/letsencrypt
cat > /federated/apps/dns/docker-compose.yml <<'EOF'
cat > /federated/apps/dns/docker-compose.yml <<EOF
version: '3.7'
services:
@ -186,6 +186,7 @@ element IN A $EXTERNALIP
listmonk IN A $EXTERNALIP
vaultwarden IN A $EXTERNALIP
vpn IN A $EXTERNALIP
connector IN A $EXTERNALIP
$DOMAIN. IN A $EXTERNALIP
EOF

Binary file not shown.

View File

@ -4,3 +4,41 @@ create_password() {
SECRET=`tr -cd '[:alnum:]' < /dev/urandom | fold -w32 | head -n1`
echo "$SECRET";
}
start_blah() {
echo "val1 is $1";
echo "val2 is $2";
echo "val3 is $3";
echo "val4 is $4";
}
start_service() {
# Start /federated/apps/SERVICE with output to /dev/null
echo -ne "\n* Starting /federated/apps/$SERVICE service.."
spin &
SPINPID=$!
if [ $DEBUG ]; then
# Start /federated/apps/SERVICE with output to console for debug
docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up
[ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/SERVICE"
else
docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE up -d &> /dev/null
# Keep trying service port to make sure it's up before
# we proceed
RETRY="30"
while [ $RETRY -gt 0 ]; do
nc -z 172.99.0.19 9000 &> /dev/null
if [ $? -eq 0 ]; then
break
else
if [ "$RETRY" == 1 ]; then
docker-compose -f /federated/apps/$SERVICE/docker-compose.yml -p $SERVICE down &> /dev/null
kill -9 $SPINPID &> /dev/null
fail "There was a problem starting service /federated/apps/$SERVICE\nCheck the output of 'docker logs $SERVICE' or turn on\ndebug with -d"
fi
((RETRY--))
sleep 7
fi
done
fi
}

View File

@ -630,7 +630,7 @@ start_jitsi() {
# before we proceed
RETRY="30"
while [ $RETRY -gt 0 ]; do
nc -z 172.99.0.25 443 &> /dev/null
nc -z 172.99.0.23 443 &> /dev/null
if [ $? -eq 0 ]; then
break
else

View File

@ -90,7 +90,6 @@ modules:
local_certificate_file: /data/fullchain1.pem
local_private_key_file: /data/privkey1.pem
EOF
chmod 600 /federated/apps/matrix/data/matrix/homeserver.yaml
kill -9 $SPINPID &> /dev/null
echo -ne "done."

View File

@ -160,6 +160,7 @@ PATH=/var/www/html:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/sbin:/bin
./occ ldap:set-config s01 turnOnPasswordChange 0
./occ ldap:set-config s01 useMemberOfToDetectMembership 1
./occ ldap:set-config s01 ldapConfigurationActive 1
./occ config:system:set overwriteprotocol --value=https
./occ config:system:delete trusted_domains
./occ config:system:set trusted_domains 1 --value=*
ADMINUUID=\`./occ user:list | grep admin | awk '{ print \$2 }' | awk -F: '{ print \$1 }'\`

View File

@ -26,7 +26,7 @@ version: "3.7"
services:
postgresql:
image: postgres:${IMAGE_VERSION}
image: postgres:\${IMAGE_VERSION}
container_name: postgresql
hostname: postgresql.$DOMAIN
domainname: $DOMAIN