Added Collabora service
This commit is contained in:
parent
03b04da1a3
commit
28a697bdfc
@ -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
93
fstack/lib/collabora.sh
Normal 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."
|
||||
}
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user