Added Collabora service

This commit is contained in:
Derek Crudgington 2022-10-31 13:10:08 +00:00
parent 03b04da1a3
commit 28a697bdfc
5 changed files with 111 additions and 0 deletions

View File

@ -59,6 +59,7 @@ check_ports() {
# Check if ss command exists
if command -v ss &> /dev/null; then
# Check every port we need if it's in use
# for i in 8000; do
for i in 25 53 80 143 389 587 993 8000; do
SS=`ss -tulwn | grep LISTEN | awk '{ print $5 }' | awk -F: '{ print $NF }' | grep "^$i$" | head -1`
# If port 53 (dns) in use by system-resolvd (Ubuntu) then auto fix

93
fstack/lib/collabora.sh Normal file
View File

@ -0,0 +1,93 @@
#!/bin/bash
#
# Federated Computer Collabora Service
PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
config_collabora() {
echo -ne "\n* Configuring fstack/collabora container.."
spin &
SPINPID=$!
if [ ! -d "fstack/collabora" ]; then
mkdir -p fstack/collabora/data/root/certs &> /dev/null
cp -rf fstack/dns/data/etc/letsencrypt/archive/$DOMAIN/*.pem fstack/collabora/data/root/certs/
fi
DOMAIN_ARRAY=(${DOMAIN//./ })
DOMAIN_FIRST=${DOMAIN_ARRAY[0]}
DOMAIN_LAST=${DOMAIN_ARRAY[1]}
cat > fstack/collabora/docker-compose.yml <<EOF
version: '3.8'
services:
collabora:
image: collabora/code:latest
container_name: collabora
hostname: collabora.$DOMAIN
domainname: $DOMAIN
restart: always
networks:
fstack:
ipv4_address: 172.99.0.20
ports:
- "9980:9980"
volumes:
- ./data/root:/root
- ./data/root/certs/fullchain1.pem:/etc/coolwsd/cert.pem
- ./data/root/certs/privkey1.pem:/etc/coolwsd/key.pem
- ./data/root/certs/chain1.pem:/etc/coolwsd/ca-chain.cert.pem
environment:
- VIRTUAL_PROTO=https
- VIRTUAL_PORT=9980
- VIRTUAL_HOST=collabora.$DOMAIN
- domain=nextcloud.$DOMAIN
- server_name=collabora.$DOMAIN
cap_add:
- MKNOD
networks:
fstack:
external: true
EOF
kill -9 $SPINPID &> /dev/null
echo -ne "done."
}
start_collabora() {
# Start fstack/collabora with output to /dev/null
echo -ne "\n* Starting fstack/collabora service.."
spin &
SPINPID=$!
if [ $DEBUG ]; then
# Start fstack/collabora with output to console for debug
docker-compose -f fstack/collabora/docker-compose.yml -p collabora up
[ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service fstack/collabora"
else
docker-compose -f fstack/collabora/docker-compose.yml -p collabora up -d &> /dev/null
# Keep trying collabora port 9980 to make sure it's up
# before we proceed
RETRY="30"
while [ $RETRY -gt 0 ]; do
nc -z 172.99.0.20 9980 &> /dev/null
if [ $? -eq 0 ]; then
break
else
if [ "$RETRY" == 1 ]; then
docker-compose -f fstack/collabora/docker-compose.yml -p collabora down &> /dev/null
kill -9 $SPINPID &> /dev/null
fail "There was a problem starting service fstack/collabora\nCheck the output of 'docker logs collabora' or turn on\ndebug with -d"
fi
((RETRY--))
sleep 7
fi
done
fi
kill -9 $SPINPID &> /dev/null
echo -ne "done."
}

View File

@ -116,6 +116,9 @@ elif [ -e /etc/bind/.firstdone ] && [ -e /etc/bind/.failedcert ]; then
fi
wait -n
else
# Install bind and certbot packages
apk add --no-cache bind
apk add --no-cache certbot
[ ! `pgrep -x named` ] && named -f -g && crond
fi
EOF
@ -169,6 +172,7 @@ panel IN A $EXTERNALIP
webmail IN A $EXTERNALIP
nextcloud IN A $EXTERNALIP
computer IN A $EXTERNALIP
collabora IN A $EXTERNALIP
$DOMAIN. IN A $EXTERNALIP
EOF

View File

@ -57,6 +57,8 @@ services:
ports:
- "8000:80"
- "8444:443"
extra_hosts:
- "collabora.$DOMAIN:$EXTERNALIP"
volumes:
- ./data/root:/root
- ./data/etc/apache2/sites-enabled:/etc/apache2/sites-enabled
@ -184,12 +186,18 @@ ADMINUUID=\`./occ user:list | grep admin | awk '{ print \$2 }' | awk -F: '{ prin
./occ app:enable forms
./occ app:enable spreed
./occ mail:account:create \$ADMINUUID admin admin@$DOMAIN mail.$DOMAIN 993 ssl admin@$DOMAIN $ADMINPASS mail.$DOMAIN 465 ssl admin@$DOMAIN $ADMINPASS password
./occ app:enable richdocuments
./occ config:app:set --value https:\/\/collabora.$DOMAIN richdocuments public_wopi_url
./occ config:app:set --value https:\/\/collabora.$DOMAIN richdocuments wopi_url
./occ config:app:set --value ooxml richdocuments doc_format
./occ config:app:set --value "" richdocuments disable_certificate_verification
EOF
chmod +x fstack/nextcloud/data/root/*.sh
cat > fstack/nextcloud/data/etc/apache2/sites-enabled/000-default.conf <<'EOF'
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
Listen 443
<VirtualHost *:80>
ServerAdmin admin@localhost

View File

@ -49,6 +49,7 @@ get_config() {
. fstack/lib/dns.sh
. fstack/lib/ldap.sh
. fstack/lib/mail.sh
. fstack/lib/collabora.sh
. fstack/lib/nextcloud.sh
. fstack/lib/panel.sh
. fstack/lib/proxy.sh
@ -93,6 +94,10 @@ start_ldap
config_mail
start_mail
# Configure fstack/collabora container and start it
config_collabora
start_collabora
# Configure fstack/nextcloud container and start it
config_nextcloud
start_nextcloud