ultisuite-backend/deploy/nextcloud/configure-onlyoffice.sh
2026-06-04 00:12:11 +02:00

66 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
# Configure the OnlyOffice Nextcloud connector for server-side document/PDF previews.
# Idempotent — safe to run on every container start (before-starting hook).
set -e
case "$(printf '%s' "${ONLYOFFICE_ENABLED:-false}" | tr '[:upper:]' '[:lower:]')" in
1|true|yes|on) ;;
*)
echo "OnlyOffice disabled — skipping Nextcloud connector configuration."
exit 0
;;
esac
OCC="php /var/www/html/occ"
if ! $OCC status 2>/dev/null | grep -q "installed: true"; then
echo "Nextcloud not installed yet — skipping OnlyOffice configuration."
exit 0
fi
if ! $OCC app:list 2>/dev/null | grep -qE 'onlyoffice:'; then
echo "Installing OnlyOffice Nextcloud app…"
$OCC app:install onlyoffice || true
fi
$OCC app:enable onlyoffice || true
if ! $OCC app:list --enabled 2>/dev/null | grep -qE 'onlyoffice:'; then
echo "OnlyOffice app unavailable — skipping connector configuration."
exit 0
fi
DS_INTERNAL="${ONLYOFFICE_URL:-http://onlyoffice}"
DS_PUBLIC="${ONLYOFFICE_PUBLIC_URL:-$DS_INTERNAL}"
# OnlyOffice fetches files via the edge nginx. StorageUrl replaces the host part of
# Nextcloud absolute URLs; nginx routes /index.php/* to Nextcloud (see default.conf.template).
STORAGE="${NC_ONLYOFFICE_STORAGE_URL:-http://nginx}"
JWT="${ONLYOFFICE_JWT_SECRET:-}"
# Trailing slash required by the connector.
case "$DS_PUBLIC" in */) ;; *) DS_PUBLIC="${DS_PUBLIC}/" ;; esac
case "$DS_INTERNAL" in */) ;; *) DS_INTERNAL="${DS_INTERNAL}/" ;; esac
case "$STORAGE" in */) ;; *) STORAGE="${STORAGE}/" ;; esac
$OCC config:app:set onlyoffice DocumentServerUrl --value="$DS_PUBLIC"
$OCC config:app:set onlyoffice DocumentServerInternalUrl --value="$DS_INTERNAL"
$OCC config:app:set onlyoffice StorageUrl --value="$STORAGE"
$OCC config:app:set onlyoffice advanced --value="true"
$OCC config:app:set onlyoffice preview --value="true"
$OCC config:app:set onlyoffice demo --value="false"
if [ -n "$JWT" ]; then
$OCC config:app:set onlyoffice jwt_secret --value="$JWT"
fi
$OCC config:system:set enable_previews --value=true --type=boolean
$OCC config:system:set preview_max_x --value=2048 --type=integer
$OCC config:system:set preview_max_y --value=2048 --type=integer
echo "OnlyOffice connector configured (document preview enabled)."
if $OCC onlyoffice:documentserver --check 2>/dev/null; then
echo "OnlyOffice Document Server connection OK."
else
echo "OnlyOffice Document Server not reachable yet — previews will work once it is healthy."
fi