66 lines
2.4 KiB
Bash
Executable File
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
|