mirror of
https://github.com/nextcloud/vm.git
synced 2025-10-26 11:27:32 +00:00
change to the Hub method of installing OnlyOffice (#1084)
This commit is contained in:
parent
3c6b11bf0d
commit
ad487ffd3a
@ -64,6 +64,7 @@ install_docker
|
||||
# If yes, then stop and prune the docker container
|
||||
docker_prune_this 'collabora/code'
|
||||
docker_prune_this 'onlyoffice/documentserver'
|
||||
occ_command_no_check app:remove documentserver_community
|
||||
|
||||
# Disable RichDocuments (Collabora App) if activated
|
||||
if [ -d "$NC_APPS_PATH"/richdocuments ]
|
||||
|
||||
@ -5,11 +5,8 @@
|
||||
# shellcheck disable=2034,2059
|
||||
true
|
||||
# shellcheck source=lib.sh
|
||||
NC_UPDATE=1 && OO_INSTALL=1 . <(curl -sL https://raw.githubusercontent.com/nextcloud/vm/master/lib.sh)
|
||||
NC_UPDATE=1 . <(curl -sL https://raw.githubusercontent.com/nextcloud/vm/master/lib.sh)
|
||||
unset NC_UPDATE
|
||||
unset OO_INSTALL
|
||||
|
||||
print_text_in_color "$ICyan" "Installing OnlyOffice..."
|
||||
|
||||
# Check for errors + debug code and abort if something isn't right
|
||||
# 1 = ON
|
||||
@ -20,32 +17,86 @@ debug_mode
|
||||
# Check if root
|
||||
root_check
|
||||
|
||||
# Nextcloud 13 is required.
|
||||
lowest_compatible_nc 13
|
||||
# Nextcloud 18 is required.
|
||||
lowest_compatible_nc 18
|
||||
|
||||
# Test RAM size (2GB min) + CPUs (min 2)
|
||||
ram_check 2 OnlyOffice
|
||||
cpu_check 2 OnlyOffice
|
||||
|
||||
# Notification
|
||||
msg_box "Before you start, please make sure that port 80+443 is directly forwarded to this machine!"
|
||||
# Check if Nextcloud is installed with SSL
|
||||
if ! occ_command_no_check config:system:get overwrite.cli.url | grep -q "https"
|
||||
then
|
||||
msg_box "Sorry, but Nextcloud needs to be run on HTTPS which doesn't seem to be the case here.
|
||||
|
||||
You easily activate TLS (HTTPS) by running the Let's Encrypt script found in $SCRIPTS.
|
||||
More info here: https://bit.ly/37wRCin
|
||||
|
||||
To run this script again, just exectue 'sudo bash $SCRIPTS/apps.sh' and choose OnlyOffice."
|
||||
exit
|
||||
fi
|
||||
|
||||
# Get the latest packages
|
||||
apt update -q4 & spinner_loading
|
||||
|
||||
# Check if Nextcloud is installed
|
||||
print_text_in_color "$ICyan" "Checking if Nextcloud is installed..."
|
||||
if ! curl -s https://"${NCDOMAIN//\\/}"/status.php | grep -q 'installed":true'
|
||||
# Check if OnlyOffice is installed using the old method
|
||||
if does_this_docker_exist 'onlyoffice/documentserver'
|
||||
then
|
||||
msg_box "It seems like Nextcloud is not installed or that you don't use https on:
|
||||
${NCDOMAIN//\\/}.
|
||||
Please install Nextcloud and make sure your domain is reachable, or activate SSL
|
||||
on your domain to be able to run this script.
|
||||
If you use the Nextcloud VM you can use the Let's Encrypt script to get SSL and activate your Nextcloud domain.
|
||||
When SSL is activated, run these commands from your terminal:
|
||||
sudo curl -sLO $APP/onlyoffice.sh
|
||||
sudo bash onlyoffice.sh"
|
||||
exit 1
|
||||
# Greater than 18.0.0 is 18.0.1 which is required
|
||||
if version_gt "$CURRENTVERSION" "18.0.0"
|
||||
then
|
||||
print_text_in_color "$ICyan" "Your server is compatible with the new way of installing OnlyOffice. We will now remove the old docker and install the app from Nextcloud instead."
|
||||
# Remove docker image
|
||||
docker_prune_this 'onlyoffice/documentserver'
|
||||
# Revoke LE
|
||||
SUBDOMAIN=$(whiptail --title "T&M Hansson IT - OnlyOffice" --inputbox "Please enter the subdomain you are using for OnlyOffice, eg: office.yourdomain.com" "$WT_HEIGHT" "$WT_WIDTH" 3>&1 1>&2 2>&3)
|
||||
if [ -f "$CERTFILES/$SUBDOMAIN/cert.pem" ]
|
||||
then
|
||||
yes no | certbot revoke --cert-path "$CERTFILES/$SUBDOMAIN/cert.pem"
|
||||
rm -rf "${CERTFILES:?/}"/"${SUBDOMAIN:?}"*
|
||||
fi
|
||||
# Remove Apache2 config
|
||||
if [ -f "$SITES_AVAILABLE/$SUBDOMAIN.conf" ]
|
||||
then
|
||||
a2dissite "$SUBDOMAIN".conf
|
||||
restart_webserver
|
||||
rm -f "$SITES_AVAILABLE/$SUBDOMAIN.conf"
|
||||
fi
|
||||
# Remove app
|
||||
occ_command_no_check app:remove onlyoffice
|
||||
fi
|
||||
# Check if OnlyOffice is installed using the new method
|
||||
elif version_gt "$CURRENTVERSION" "18.0.0" && ! does_this_docker_exist 'onlyoffice/documentserver'
|
||||
then
|
||||
install_if_not jq
|
||||
if occ_command_no_check app:list --output=json | jq -e '.enabled | .documentserver_community' > /dev/null
|
||||
then
|
||||
choice=$(whiptail --radiolist "It seems like 'OnlyOffice' is already installed.\nChoose what you want to do.\nSelect by pressing the spacebar and ENTER" "$WT_HEIGHT" "$WT_WIDTH" 4 \
|
||||
"Uninstall OnlyOffice" "" OFF \
|
||||
"Reinstall OnlyOffice" "" ON 3>&1 1>&2 2>&3)
|
||||
|
||||
case "$choice" in
|
||||
"Uninstall OnlyOffice")
|
||||
print_text_in_color "$ICyan" "Uninstalling OnlyOffice..."
|
||||
occ_command app:remove documentserver_community
|
||||
msg_box "OnlyOffice was successfully uninstalled."
|
||||
exit
|
||||
;;
|
||||
"Reinstall OnlyOffice")
|
||||
print_text_in_color "$ICyan" "Reinstalling OnlyOffice..."
|
||||
occ_command app:remove documentserver_community
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
else
|
||||
msg_box "You need to run at least Nextcloud 18.0.1 to be able to run OnlyOffice. Please upgrade using the built in script:
|
||||
|
||||
'sudo bash $SCRIPTS/update.sh'
|
||||
|
||||
You can also buy support directly in our shop: https://shop.hanssonit.se/product/upgrade-between-major-owncloud-nextcloud-versions/"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check if apache2 evasive-mod is enabled and disable it because of compatibility issues
|
||||
@ -63,148 +114,44 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if $SUBDOMAIN exists and is reachable
|
||||
print_text_in_color "$ICyan" "Checking if $SUBDOMAIN exists and is reachable..."
|
||||
domain_check_200 "$SUBDOMAIN"
|
||||
|
||||
# Check open ports with NMAP
|
||||
check_open_port 80 "$SUBDOMAIN"
|
||||
check_open_port 443 "$SUBDOMAIN"
|
||||
|
||||
# Install Docker
|
||||
install_docker
|
||||
|
||||
# Check if OnlyOffice or Collabora is previously installed
|
||||
# If yes, then stop and prune the docker container
|
||||
docker_prune_this 'onlyoffice/documentserver'
|
||||
docker_prune_this 'collabora/code'
|
||||
|
||||
# Disable RichDocuments (Collabora App) if activated
|
||||
if [ -d "$NC_APPS_PATH"/richdocuments ]
|
||||
# Check if collabora is installed and remove every trace of it
|
||||
if does_this_docker_exist 'collabora/code'
|
||||
then
|
||||
occ_command app:remove richdocuments
|
||||
fi
|
||||
|
||||
# Disable OnlyOffice (Collabora App) if activated
|
||||
if [ -d "$NC_APPS_PATH"/onlyoffice ]
|
||||
then
|
||||
occ_command app:remove onlyoffice
|
||||
fi
|
||||
|
||||
# Install Onlyoffice docker
|
||||
docker pull onlyoffice/documentserver:latest
|
||||
docker run -i -t -d -p 127.0.0.3:9090:80 --restart always --name onlyoffice onlyoffice/documentserver
|
||||
|
||||
# Install apache2
|
||||
install_if_not apache2
|
||||
|
||||
# Enable Apache2 module's
|
||||
a2enmod proxy
|
||||
a2enmod proxy_wstunnel
|
||||
a2enmod proxy_http
|
||||
a2enmod ssl
|
||||
|
||||
if [ -f "$HTTPS_CONF" ]
|
||||
then
|
||||
a2dissite "$SUBDOMAIN.conf"
|
||||
rm -f "$HTTPS_CONF"
|
||||
fi
|
||||
|
||||
# Create Vhost for OnlyOffice online in Apache2
|
||||
if [ ! -f "$HTTPS_CONF" ];
|
||||
then
|
||||
cat << HTTPS_CREATE > "$HTTPS_CONF"
|
||||
<VirtualHost *:443>
|
||||
ServerName $SUBDOMAIN:443
|
||||
|
||||
SSLEngine on
|
||||
ServerSignature On
|
||||
SSLHonorCipherOrder on
|
||||
|
||||
SSLCertificateChainFile $CERTFILES/$SUBDOMAIN/chain.pem
|
||||
SSLCertificateFile $CERTFILES/$SUBDOMAIN/cert.pem
|
||||
SSLCertificateKeyFile $CERTFILES/$SUBDOMAIN/privkey.pem
|
||||
SSLOpenSSLConfCmd DHParameters $DHPARAMS_SUB
|
||||
|
||||
SSLProtocol all -SSLv2 -SSLv3
|
||||
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
|
||||
|
||||
LogLevel warn
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
|
||||
# Just in case - see below
|
||||
SSLProxyEngine On
|
||||
SSLProxyVerify None
|
||||
SSLProxyCheckPeerCN Off
|
||||
SSLProxyCheckPeerName Off
|
||||
|
||||
# contra mixed content warnings
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
# basic proxy settings
|
||||
ProxyRequests off
|
||||
|
||||
ProxyPassMatch (.*)(\/websocket)$ "ws://127.0.0.3:9090/$1$2"
|
||||
ProxyPass / "http://127.0.0.3:9090/"
|
||||
ProxyPassReverse / "http://127.0.0.3:9090/"
|
||||
|
||||
<Location />
|
||||
ProxyPassReverse /
|
||||
</Location>
|
||||
</VirtualHost>
|
||||
HTTPS_CREATE
|
||||
|
||||
if [ -f "$HTTPS_CONF" ];
|
||||
msg_box "You can't run both Collabora and OnlyOffice on the same VM. We will now remove Collabora from the server."
|
||||
# Remove docker image
|
||||
docker_prune_this 'collabora/code'
|
||||
# Revoke LE
|
||||
SUBDOMAIN=$(whiptail --title "T&M Hansson IT - OnlyOffice" --inputbox "Please enter the subdomain you are using for Collabora, eg: office.yourdomain.com" "$WT_HEIGHT" "$WT_WIDTH" 3>&1 1>&2 2>&3)
|
||||
if [ -f "$CERTFILES/$SUBDOMAIN/cert.pem" ]
|
||||
then
|
||||
print_text_in_color "$IGreen" "$HTTPS_CONF was successfully created."
|
||||
sleep 1
|
||||
else
|
||||
print_text_in_color "$IRed" "Unable to create vhost, exiting..."
|
||||
print_text_in_color "$IRed" "Please report this issue here $ISSUES"
|
||||
exit 1
|
||||
yes no | certbot revoke --cert-path "$CERTFILES/$SUBDOMAIN/cert.pem"
|
||||
rm -rf "${CERTFILES:?/}"/"${SUBDOMAIN:?}"*
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install certbot (Let's Encrypt)
|
||||
install_certbot
|
||||
|
||||
# Generate certs, and auto-configure if successful
|
||||
if generate_cert "$SUBDOMAIN"
|
||||
then
|
||||
# Generate DHparams chifer
|
||||
if [ ! -f "$DHPARAMS_SUB" ]
|
||||
# Remove Apache2 config
|
||||
if [ -f "$SITES_AVAILABLE/$SUBDOMAIN.conf" ]
|
||||
then
|
||||
openssl dhparam -dsaparam -out "$DHPARAMS_SUB" 4096
|
||||
a2dissite "$SUBDOMAIN".conf
|
||||
restart_webserver
|
||||
rm -f "$SITES_AVAILABLE/$SUBDOMAIN.conf"
|
||||
fi
|
||||
printf "%b" "${IGreen}Certs are generated!\n${Color_Off}"
|
||||
a2ensite "$SUBDOMAIN.conf"
|
||||
restart_webserver
|
||||
# Install OnlyOffice
|
||||
occ_command app:install onlyoffice
|
||||
else
|
||||
last_fail_tls $SCRIPTS/apps/onlyoffice.sh
|
||||
# Remove app
|
||||
occ_command_no_check app:remove richdocuments
|
||||
fi
|
||||
|
||||
# Set config for OnlyOffice
|
||||
if [ -d "$NC_APPS_PATH"/onlyoffice ]
|
||||
# Install OnlyOffice
|
||||
msg_box "We will now install OnlyOffice.
|
||||
|
||||
Please note that it might take very long time to install it, and you will not see any progress bar.
|
||||
|
||||
Please be paitent, don't abort."
|
||||
install_and_enable_app onlyoffice
|
||||
sleep 2
|
||||
if install_and_enable_app documentserver_community
|
||||
then
|
||||
occ_command config:app:set onlyoffice DocumentServerUrl --value=https://"$SUBDOMAIN/"
|
||||
chown -R www-data:www-data "$NC_APPS_PATH"
|
||||
occ_command config:system:set trusted_domains 3 --value="$SUBDOMAIN"
|
||||
# Add prune command
|
||||
{
|
||||
echo "#!/bin/bash"
|
||||
echo "docker system prune -a --force"
|
||||
echo "exit"
|
||||
} > "$SCRIPTS/dockerprune.sh"
|
||||
chmod a+x "$SCRIPTS/dockerprune.sh"
|
||||
crontab -u root -l | { cat; echo "@weekly $SCRIPTS/dockerprune.sh"; } | crontab -u root -
|
||||
print_text_in_color "$ICyan" "Docker automatic prune job added."
|
||||
service docker restart
|
||||
docker restart onlyoffice
|
||||
print_text_in_color "$IGreen" "OnlyOffice is now successfully installed."
|
||||
any_key "Press any key to continue... "
|
||||
occ_command config:app:set onlyoffice DocumentServerUrl --value="$(occ_command_no_check config:system:get overwrite.cli.url)apps/documentserver_community/"
|
||||
msg_box "OnlyOffice was successfully installed."
|
||||
fi
|
||||
|
||||
# Just make sure the script exits
|
||||
exit
|
||||
|
||||
4
lib.sh
4
lib.sh
@ -71,10 +71,6 @@ SECURE="$SCRIPTS/setup_secure_permissions_nextcloud.sh"
|
||||
AUT_UPDATES_TIME="18"
|
||||
# Keys
|
||||
OpenPGP_fingerprint='28806A878AE423A28372792ED75899B9A724937A'
|
||||
# OnlyOffice URL (onlyoffice.sh)
|
||||
[ -n "$OO_INSTALL" ] && SUBDOMAIN=$(whiptail --title "T&M Hansson IT - OnlyOffice" --inputbox "OnlyOffice subdomain eg: office.yourdomain.com\n\nNOTE: This domain must be different than your Nextcloud domain. They can however be hosted on the same server, but would require seperate DNS entries." "$WT_HEIGHT" "$WT_WIDTH" 3>&1 1>&2 2>&3)
|
||||
# Nextcloud Main Domain (onlyoffice.sh)
|
||||
[ -n "$OO_INSTALL" ] && NCDOMAIN=$(whiptail --title "T&M Hansson IT - OnlyOffice" --inputbox "Nextcloud domain, make sure it looks like this: cloud\\.yourdomain\\.com" "$WT_HEIGHT" "$WT_WIDTH" cloud\\.yourdomain\\.com 3>&1 1>&2 2>&3)
|
||||
# Collabora Docker URL (collabora.sh
|
||||
[ -n "$COLLABORA_INSTALL" ] && SUBDOMAIN=$(whiptail --title "T&M Hansson IT - Collabora" --inputbox "Collabora subdomain eg: office.yourdomain.com\n\nNOTE: This domain must be different than your Nextcloud domain. They can however be hosted on the same server, but would require seperate DNS entries." "$WT_HEIGHT" "$WT_WIDTH" 3>&1 1>&2 2>&3)
|
||||
# Nextcloud Main Domain (collabora.sh)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user