From fdd091118de42830e9da60177e555a9dfe7bed16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Thu, 15 Feb 2024 16:05:43 +0100 Subject: [PATCH 01/16] Manifest v2 bis --- .github/workflows/updater.sh | 65 ------------------- .github/workflows/updater.yml | 49 -------------- .vscode/settings.json | 24 +++++++ check_process | 27 -------- conf/msg_install | 2 +- conf/nginx.conf | 4 +- manifest.json | 79 ---------------------- manifest.toml | 88 +++++++++++++++++++++++++ scripts/_common.sh | 4 +- scripts/backup | 12 ++-- scripts/change_url | 70 ++++++++++---------- scripts/install | 119 ++++++---------------------------- scripts/remove | 30 ++++----- scripts/restore | 52 +++++++-------- scripts/upgrade | 80 +++++++++++------------ tests.toml | 11 ++++ 16 files changed, 271 insertions(+), 445 deletions(-) delete mode 100644 .github/workflows/updater.sh delete mode 100644 .github/workflows/updater.yml create mode 100644 .vscode/settings.json delete mode 100644 check_process delete mode 100644 manifest.json create mode 100644 manifest.toml create mode 100644 tests.toml diff --git a/.github/workflows/updater.sh b/.github/workflows/updater.sh deleted file mode 100644 index c6c82b4..0000000 --- a/.github/workflows/updater.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -#================================================= -# PACKAGE UPDATING HELPER -#================================================= - -# This script is meant to be run by GitHub Actions -# The YunoHost-Apps organisation offers a template Action to run this script periodically -# Since each app is different, maintainers can adapt its contents so as to perform -# automatic actions when a new upstream release is detected. - -#================================================= -# FETCHING LATEST RELEASE AND ITS ASSETS -#================================================= - -# Fetching information -current_version=$(cat manifest.json | jq -j '.version|split("~")[0]') -repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]') -# Some jq magic is needed, because the latest upstream release is not always the latest version (e.g. security patches for older versions) -version=$(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '.[] | select( .prerelease != true ) | .tag_name' | sort -V | tail -1) - -# Later down the script, we assume the version has only digits and dots -# Sometimes the release name starts with a "v", so let's filter it out. -# You may need more tweaks here if the upstream repository has different naming conventions. -if [[ ${version:0:1} == "v" || ${version:0:1} == "V" ]]; then - version=${version:1} -fi - -# Setting up the environment variables -echo "Current version: $current_version" -echo "Latest release from upstream: $version" -echo "VERSION=$version" >> $GITHUB_ENV -echo "REPO=$repo" >> $GITHUB_ENV -# For the time being, let's assume the script will fail -echo "PROCEED=false" >> $GITHUB_ENV - -# Proceed only if the retrieved version is greater than the current one -if ! dpkg --compare-versions "$current_version" "lt" "$version" ; then - echo "::warning ::No new version available" - exit 0 -# Proceed only if a PR for this new version does not already exist -elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$version ; then - echo "::warning ::A branch already exists for this update" - exit 0 -fi - -#================================================= -# SPECIFIC UPDATE STEPS -#================================================= - -# Any action on the app's source code can be done. -# The GitHub Action workflow takes care of committing all changes after this script ends. - -#================================================= -# GENERIC FINALIZATION -#================================================= - -# Replace new version in manifest -echo "$(jq -s --indent 4 ".[] | .version = \"$version~ynh1\"" manifest.json)" > manifest.json - -# No need to update the README, yunohost-bot takes care of it - -# The Action will proceed only if the PROCEED environment variable is set to true -echo "PROCEED=true" >> $GITHUB_ENV -exit 0 diff --git a/.github/workflows/updater.yml b/.github/workflows/updater.yml deleted file mode 100644 index a56d7cb..0000000 --- a/.github/workflows/updater.yml +++ /dev/null @@ -1,49 +0,0 @@ -# This workflow allows GitHub Actions to automagically update your app whenever a new upstream release is detected. -# You need to enable Actions in your repository settings, and fetch this Action from the YunoHost-Apps organization. -# This file should be enough by itself, but feel free to tune it to your needs. -# It calls updater.sh, which is where you should put the app-specific update steps. -name: Check for new upstream releases -on: - # Allow to manually trigger the workflow - workflow_dispatch: - # Run it every day at 6:00 UTC - schedule: - - cron: '0 6 * * *' -jobs: - updater: - runs-on: ubuntu-latest - steps: - - name: Fetch the source code - uses: actions/checkout@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - name: Run the updater script - id: run_updater - run: | - # Setting up Git user - git config --global user.name 'yunohost-bot' - git config --global user.email 'yunohost-bot@users.noreply.github.com' - # Run the updater script - /bin/bash .github/workflows/updater.sh - - name: Commit changes - id: commit - if: ${{ env.PROCEED == 'true' }} - run: | - git commit -am "Upgrade to v$VERSION" - - name: Create Pull Request - id: cpr - if: ${{ env.PROCEED == 'true' }} - uses: peter-evans/create-pull-request@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: Update to version ${{ env.VERSION }} - committer: 'yunohost-bot ' - author: 'yunohost-bot ' - signoff: false - base: testing - branch: ci-auto-update-v${{ env.VERSION }} - delete-branch: true - title: 'Upgrade to version ${{ env.VERSION }}' - body: | - Upgrade to v${{ env.VERSION }} - draft: false diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a21f789 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,24 @@ +{ + "python.autoComplete.extraPaths": [ + "${workspaceFolder}/sources/poky/bitbake/lib", + "${workspaceFolder}/sources/poky/meta/lib" + ], + "python.analysis.extraPaths": [ + "${workspaceFolder}/sources/poky/bitbake/lib", + "${workspaceFolder}/sources/poky/meta/lib" + ], + "[python]": { + "diffEditor.ignoreTrimWhitespace": false, + "gitlens.codeLens.symbolScopes": [ + "!Module" + ], + "editor.formatOnType": true, + "editor.wordBasedSuggestions": "off", + "files.trimTrailingWhitespace": false + }, + "[shellscript]": { + "files.eol": "\n", + "files.trimTrailingWhitespace": false + }, + "task.saveBeforeRun": "always" +} diff --git a/check_process b/check_process deleted file mode 100644 index e9dccdb..0000000 --- a/check_process +++ /dev/null @@ -1,27 +0,0 @@ -;; Test complet - ; Manifest - domain="domain.tld" - path="/path" - is_public=1 - nextclouddomain="domain.tld" - ; Checks - pkg_linter=1 - setup_sub_dir=1 - setup_root=1 - setup_nourl=0 - setup_private=1 - setup_public=1 - upgrade=1 - #7.3.3~ynh1 - upgrade=1 from_commit=205cc12c26b46c57ba8459f449e835949be44096 - backup_restore=1 - multi_instance=0 - port_already_use=0 - change_url=1 -;;; Options -Email= -Notification=none -;;; Upgrade options - ; commit=205cc12c26b46c57ba8459f449e835949be44096 - name=7.3.3~ynh1 - manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666& \ No newline at end of file diff --git a/conf/msg_install b/conf/msg_install index 9ab085e..b3f6c82 100644 --- a/conf/msg_install +++ b/conf/msg_install @@ -3,7 +3,7 @@ __APP__ was successfully installed :) To configure OnlyOffice with Nextcloud: - Within Nextcloud, install ONLYOFFICE app - go to the settings under "Administration > ONLYOFFICE > Server settings -- Address of the Document Server: "https://__DOMAIN____PATH_URL__" +- Address of the Document Server: "https://__DOMAIN____PATH__" - Secret key: "__JWT_SECRET__" OnlyOffice should now work with your Nextcloud! diff --git a/conf/nginx.conf b/conf/nginx.conf index 61686dd..8be25c0 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -6,13 +6,13 @@ location __PATH__/ { proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection $proxy_connection; proxy_set_header Connection "upgrade"; - proxy_set_header X-Forwarded-Host $server_name__SUB_PATH__; + proxy_set_header X-Forwarded-Host $server_name__PATH_NO_SLASH__; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; - + more_set_headers "X-Frame-Options : ALLOW-FROM https://__NEXTCLOUDDOMAIN__ always"; client_max_body_size 10M; } diff --git a/manifest.json b/manifest.json deleted file mode 100644 index 5737160..0000000 --- a/manifest.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": "OnlyOffice", - "id": "onlyoffice", - "packaging_format": 1, - "description": { - "en": "Create and edit documents collaboratively", - "fr": "Créez et éditer des documents collaborativement" - }, - "version": "7.5~ynh1", - "url": "https://www.onlyoffice.com", - "upstream": { - "license": "GPL-3.0-or-later", - "website": "https://www.onlyoffice.com", - "demo": "https://www.onlyoffice.com/fr/download-desktop.aspx", - "code": "https://github.com/ONLYOFFICE/DocumentServer" - }, - "license": "GPL-3.0-or-later", - "maintainer": { - "name": "", - "email": "" - }, - "requirements": { - "yunohost": ">= 11.2" - }, - "multi_instance": false, - "services": [ - "nginx" - ], - "arguments": { - "install": [ - { - "name": "domain", - "type": "domain", - "example": "office.yunohost.domain", - "help": { - "en": "You should not install OnlyOffice on your main YunoHost domain, especially if you want to use it with a Nextcloud installed on the same domain.", - "fr": "Évitez d'installer OnlyOffice sur votre domaine YunoHost principal, surtout si vous voulez l'utiliser avec une instance Nextcloud installée sur le même domaine." - } - }, - { - "name": "path", - "type": "path", - "example": "/onlyoffice or /", - "help": { - "en": "Root path / if you chose a subdomain, e.g. office.yunohost.domain.", - "fr": "Choisissez le chemin racine / si vous avez choisi un sous-domaine, ex. office.yunohost.domain." - }, - "default": "/onlyoffice" - }, - { - "name": "is_public", - "type": "boolean", - "help": { - "en": "You will only be able to connect OnlyOffice to Nextcloud if both apps are public!", - "fr": "Nextcloud et OnlyOffice doivent être des applications publiques si vous voulez les connecter !" - }, - "default": true - }, - { - "name": "nextclouddomain", - "type": "string", - "ask": { - "en": "The domain of the Nextcloud to connect to OnlyOffice", - "fr": "Le domaine du Nextcloud à connecter à OnlyOffice" - }, - "example": "yunohost.domain/nextcloud or nextcloud.yunohost.domain", - "help": { - "en": "Install the OnlyOffice connector to edit documents from Nextcloud.", - "fr": "Installez le connecteur OnlyOffice pour éditer des documents dans Nextcloud." - }, - "default": "yunohost.domain/nextcloud" - }, - { - "name": "admin", - "type": "user" - } - ] - } -} diff --git a/manifest.toml b/manifest.toml new file mode 100644 index 0000000..ae6b827 --- /dev/null +++ b/manifest.toml @@ -0,0 +1,88 @@ +#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/manifest.v2.schema.json + +packaging_format = 2 + +id = "onlyoffice" +name = "OnlyOffice" +description.en = "Create and edit documents collaboratively" +description.fr = "Créez et éditer des documents collaborativement" + +version = "7.5~ynh1" + +maintainers = [] + +[upstream] +license = "GPL-3.0-or-later" +website = "https://www.onlyoffice.com" +demo = "https://www.onlyoffice.com/fr/download-desktop.aspx" +code = "https://github.com/ONLYOFFICE/DocumentServer" +cpe = "cpe:2.3:a:onlyoffice:document_server" + +[integration] +yunohost = ">= 11.2" +architectures = ["amd64"] +multi_instance = false +ldap = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "sso" key : the "ldap" key corresponds to wether or not a user *can* login on the app using its YunoHost credentials. +sso = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "ldap" key : the "sso" key corresponds to wether or not a user is *automatically logged-in* on the app when logged-in on the YunoHost portal. +disk = "50M" # FIXME: replace with an **estimate** minimum disk requirement. e.g. 20M, 400M, 1G, ... +ram.build = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... +ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... + +[install] + [install.domain] + type = "domain" + + [install.path] + type = "path" + default = "/onlyoffice" + + [install.init_main_permission] + help.en = "You will only be able to connect OnlyOffice to Nextcloud if both apps are public!" + help.fr = "Nextcloud et OnlyOffice doivent être des applications publiques si vous voulez les connecter !" + type = "group" + default = "visitors" + + [install.nextclouddomain] + ask.en = "The domain of the Nextcloud to connect to OnlyOffice" + ask.fr = "Le domaine du Nextcloud à connecter à OnlyOffice" + help.en = "Install the OnlyOffice connector to edit documents from Nextcloud." + help.fr = "Installez le connecteur OnlyOffice pour éditer des documents dans Nextcloud." + type = "string" + example = "yunohost.domain/nextcloud or nextcloud.yunohost.domain" + + [install.admin] + type = "user" + +[resources] + [resources.system_user] + + [resources.install_dir] + + [resources.permissions] + main.url = "/" + + [resources.ports] + main.default = 8095 + + [resources.apt] + packages = [ + "postgresql", + "postgresql-contrib", + "libstdc++6", + "rabbitmq-server", + "libcurl4-dev", + "ttf-mscorefonts-installer" + ] + + # [resources.apt.extras.ttf] + # repo = "deb http://deb.debian.org/debian/ bullseye main contrib" + # key = "https://ftp-master.debian.org/keys/release-bullseye.asc" + # packages = "ttf-mscorefonts-installer" + + [resources.apt.extras.onlyoffice] + repo = "https://download.onlyoffice.com/repo/debian squeeze main" + key = "https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" + packages = "onlyoffice-documentserver" + + [resources.database] + type = "postgresql" diff --git a/scripts/_common.sh b/scripts/_common.sh index 623b0e0..854e5f4 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -5,7 +5,7 @@ #================================================= # dependencies used by the app -pkg_dependencies="postgresql postgresql-contrib libstdc++6 rabbitmq-server libcurl4-dev" +#REMOVEME? pkg_dependencies="postgresql postgresql-contrib libstdc++6 rabbitmq-server libcurl4-dev" #================================================= # PERSONAL HELPERS @@ -44,7 +44,7 @@ ynh_send_readme_to_admin() { type="${type:-install}" # Get the value of admin_mail_html - admin_mail_html=$(ynh_app_setting_get $app admin_mail_html) +#REMOVEME? admin_mail_html=$(ynh_app_setting_get $app admin_mail_html) admin_mail_html="${admin_mail_html:-0}" # Retrieve the email of users diff --git a/scripts/backup b/scripts/backup index 79170ba..b113dbb 100644 --- a/scripts/backup +++ b/scripts/backup @@ -15,18 +15,18 @@ source /usr/share/yunohost/helpers #================================================= # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_print_info --message="Loading installation settings..." +#REMOVEME? ynh_print_info --message="Loading installation settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -domain=$(ynh_app_setting_get --app=$app --key=domain) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP diff --git a/scripts/change_url b/scripts/change_url index d3fdc67..a9084f1 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -13,57 +13,57 @@ source /usr/share/yunohost/helpers # RETRIEVE ARGUMENTS #================================================= -old_domain=$YNH_APP_OLD_DOMAIN -old_path=$YNH_APP_OLD_PATH +#REMOVEME? old_domain=$YNH_APP_OLD_DOMAIN +#REMOVEME? old_path=$YNH_APP_OLD_PATH -new_domain=$YNH_APP_NEW_DOMAIN -new_path=$YNH_APP_NEW_PATH +#REMOVEME? new_domain=$YNH_APP_NEW_DOMAIN +#REMOVEME? new_path=$YNH_APP_NEW_PATH -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +#REMOVEME? ynh_script_progression --message="Loading installation settings..." -# Needed for helper "ynh_add_nginx_config" -final_path=$(ynh_app_setting_get --app=$app --key=final_path) +#REMOVEME? # Needed for helper "ynh_add_nginx_config" +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) # Add settings here as needed by your application -port=$(ynh_app_setting_get --app=$app --key=port) -nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) +#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) +#REMOVEME? nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) #================================================= # BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP #================================================= -ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." +#REMOVEME? ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." # Backup the current version of the app -ynh_backup_before_upgrade -ynh_clean_setup () { +#REMOVEME? ynh_backup_before_upgrade +#REMOVEME? ynh_clean_setup () { # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. - ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" +#REMOVEME? ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" # Restore it if the upgrade fails - ynh_restore_upgradebackup +#REMOVEME? ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # CHECK WHICH PARTS SHOULD BE CHANGED #================================================= -change_domain=0 -if [ "$old_domain" != "$new_domain" ] +#REMOVEME? change_domain=0 +#REMOVEME? if [ "$old_domain" != "$new_domain" ] then - change_domain=1 + #REMOVEME? change_domain=1 fi -change_path=0 -if [ "$old_path" != "$new_path" ] +#REMOVEME? change_path=0 +#REMOVEME? if [ "$old_path" != "$new_path" ] then - change_path=1 + #REMOVEME? change_path=1 fi #================================================= @@ -73,35 +73,37 @@ fi #================================================= ynh_script_progression --message="Updating NGINX web server configuration..." -nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf +ynh_change_url_nginx_config + +#REMOVEME? nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf # Change the path in the NGINX config file if [ $change_path -eq 1 ] then # Make a backup of the original NGINX config file if modified - ynh_backup_if_checksum_is_different --file="$nginx_conf_path" +#REMOVEME? ynh_backup_if_checksum_is_different --file="$nginx_conf_path" # Set global variables for NGINX helper - domain="$old_domain" - path_url="$new_path" +#REMOVEME? domain="$old_domain" +#REMOVEME? path="$new_path" if [ $new_path = "/" ]; then - ynh_replace_string --match_string="__SUB_PATH__" --replace_string="" --target_file="../conf/nginx.conf" +#REMOVEME? ynh_replace_string --match_string="__SUB_PATH__" --replace_string="" --target_file="../conf/nginx.conf" else - ynh_replace_string --match_string="__SUB_PATH__" --replace_string="$new_path" --target_file="../conf/nginx.conf" +#REMOVEME? ynh_replace_string --match_string="__SUB_PATH__" --replace_string="$new_path" --target_file="../conf/nginx.conf" fi # Create a dedicated NGINX config - ynh_add_nginx_config "nextclouddomain" +#REMOVEME? ynh_add_nginx_config "nextclouddomain" fi # Change the domain for NGINX if [ $change_domain -eq 1 ] then # Delete file checksum for the old conf file location - ynh_delete_file_checksum --file="$nginx_conf_path" - mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf +#REMOVEME? ynh_delete_file_checksum --file="$nginx_conf_path" +#REMOVEME? mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf # Store file checksum for the new config file location - ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" +#REMOVEME? ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" fi #================================================= @@ -109,9 +111,9 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." -ynh_systemd_action --service_name=nginx --action=reload +#REMOVEME? #REMOVEME? ynh_systemd_action --service_name=nginx --action=reload #================================================= # END OF SCRIPT diff --git a/scripts/install b/scripts/install index c5b85af..d133dc9 100644 --- a/scripts/install +++ b/scripts/install @@ -10,100 +10,23 @@ source _common.sh source /usr/share/yunohost/helpers #================================================= -# MANAGE SCRIPT FAILURE +# INITIALIZE AND STORE SETTINGS #================================================= -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - -#================================================= -# RETRIEVE ARGUMENTS FROM THE MANIFEST -#================================================= - -domain=$YNH_APP_ARG_DOMAIN -path_url=$YNH_APP_ARG_PATH -is_public=$YNH_APP_ARG_IS_PUBLIC -nextclouddomain=$YNH_APP_ARG_NEXTCLOUDDOMAIN - -app=$YNH_APP_INSTANCE_NAME -admin=$YNH_APP_ARG_ADMIN admin_mail=$(ynh_user_get_info --username=$admin --key="mail") + jwt_secret=$(ynh_string_random --length=32) - -#================================================= -# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS -#================================================= -ynh_script_progression --message="Validating installation parameters..." - -final_path=/var/www/$app -test ! -e "$final_path" || ynh_die --message="This path already contains a folder" - -if dpkg-architecture --is armhf -then - ynh_die --message="Sorry, this app can not be installed on an ARM architecture" -fi - -# Register (book) web path -ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url - -#================================================= -# STORE SETTINGS FROM MANIFEST -#================================================= -ynh_script_progression --message="Storing installation settings..." - -ynh_app_setting_set --app=$app --key=domain --value=$domain -ynh_app_setting_set --app=$app --key=path --value=$path_url -ynh_app_setting_set --app=$app --key=nextclouddomain --value=$nextclouddomain -ynh_app_setting_set --app=$app --key=final_path --value=$final_path -ynh_app_setting_set --app=$app --key=jwt_secret --value=$jwt_secret - -#================================================= -# STANDARD MODIFICATIONS -#================================================= -# FIND AND OPEN A PORT -#================================================= -ynh_script_progression --message="Finding an available port..." - -# Find an available port -port=$(ynh_find_port --port=8095) -ynh_app_setting_set --app=$app --key=port --value=$port - -#================================================= -# INSTALL DEPENDENCIES -#================================================= -ynh_script_progression --message="Installing dependencies..." - -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies -ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="deb http://deb.debian.org/debian/ $(lsb_release --codename --short) main contrib" --package="ttf-mscorefonts-installer" --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" - -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Configuring system user..." - -# Create a system user -ynh_system_user_create --username=$app --home_dir="$final_path" - -#================================================= -# CREATE A POSTGRESQL DATABASE -#================================================= -ynh_script_progression --message="Creating a PostgreSQL database..." - -db_name=$(ynh_sanitize_dbid --db_name=$app) -db_user=$db_name -ynh_app_setting_set --app=$app --key=db_name --value=$db_name -ynh_psql_test_if_first_run -ynh_psql_setup_db --db_user=$db_user --db_name=$db_name +ynh_app_setting_set --app="$app" --key=jwt_secret --value="$jwt_secret" #================================================= # NGINX CONFIGURATION #================================================= ynh_script_progression --message="Configuring NGINX web server..." -if [ $path_url = "/" ]; then - ynh_replace_string --match_string="__SUB_PATH__" --replace_string="" --target_file="../conf/nginx.conf" +if [ $path = "/" ]; then + path_no_slash="" else - ynh_replace_string --match_string="__SUB_PATH__" --replace_string="$path_url" --target_file="../conf/nginx.conf" + path_no_slash="$path" fi # Create a dedicated NGINX config @@ -116,14 +39,12 @@ ynh_add_nginx_config #================================================= ynh_script_progression --message="Configuring OnlyOffice..." -echo onlyoffice-documentserver onlyoffice/ds-port select $port | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/ds-port select "$port" | debconf-set-selections echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-user string $db_user | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-pwd password $db_pwd | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-name string $db_name | debconf-set-selections - -#JWT options -echo onlyoffice-documentserver onlyoffice/jwt-secret password $jwt_secret | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/db-user string "$db_user" | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/db-pwd password "$db_pwd" | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/db-name string "$db_name" | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/jwt-secret password "$jwt_secret" | debconf-set-selections #================================================= # INSTALL ONLYOFFICE @@ -135,7 +56,7 @@ ynh_script_progression --message="Install OnlyOffice..." # restart NGINX and the whole webadmin and maybe even the YunoHost command # running the install... -ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" +#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" #================================================= # ADD A CONFIGURATION @@ -150,9 +71,9 @@ ynh_store_file_checksum --file="/etc/onlyoffice/documentserver/default.json" #================================================= # Set permissions to app files -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R ds:ds "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R ds:ds "$install_dir" #================================================= # REGENERATE FONTS @@ -164,22 +85,22 @@ ynh_script_progression --message="Generating fonts..." #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring permissions..." +#REMOVEME? ynh_script_progression --message="Configuring permissions..." # Make app public if necessary -if [ $is_public -eq 1 ] +#REMOVEME? if [ $is_public -eq 1 ] then # Everyone can access the app. # The "main" permission is automatically created before the install script. - ynh_permission_update --permission="main" --add="visitors" +#REMOVEME? ynh_permission_update --permission="main" --add="visitors" fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." -ynh_systemd_action --service_name=nginx --action=reload +#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload #================================================= # SEND A README FOR THE ADMIN diff --git a/scripts/remove b/scripts/remove index ece5530..dc4fba3 100644 --- a/scripts/remove +++ b/scripts/remove @@ -12,15 +12,15 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +#REMOVEME? ynh_script_progression --message="Loading installation settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -port=$(ynh_app_setting_get --app=$app --key=port) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name -final_path=$(ynh_app_setting_get --app=$app --key=final_path) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? db_user=$db_name +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) #================================================= # STANDARD REMOVE @@ -43,18 +43,18 @@ ynh_package_autopurge onlyoffice-documentserver #================================================= # REMOVE THE POSTGRESQL DATABASE #================================================= -ynh_script_progression --message="Removing the PostgreSQL database..." +#REMOVEME? ynh_script_progression --message="Removing the PostgreSQL database..." # Remove a database if it exists, along with the associated user -ynh_psql_remove_db --db_user="$db_user" --db_name="$db_name" +#REMOVEME? ynh_psql_remove_db --db_user="$db_user" --db_name="$db_name" #================================================= # REMOVE DEPENDENCIES #================================================= -ynh_script_progression --message="Removing dependencies..." +#REMOVEME? ynh_script_progression --message="Removing dependencies..." # Remove metapackage and its dependencies -ynh_remove_app_dependencies +#REMOVEME? ynh_remove_app_dependencies dpkg --configure -a @@ -63,10 +63,10 @@ apt-key del "E09C A29F 6E17 8040 EF22 B409 8320 CA65 CB2D E8E5" 2>/dev/null #================================================= # REMOVE APP MAIN DIR #================================================= -ynh_script_progression --message="Removing app main directory..." +#REMOVEME? ynh_script_progression --message="Removing app main directory..." # Remove the app directory securely -ynh_secure_remove --file="$final_path" +#REMOVEME? ynh_secure_remove --file="$install_dir" #================================================= # REMOVE NGINX CONFIGURATION @@ -95,11 +95,11 @@ ynh_secure_remove --file="/var/log/$app" #================================================= # REMOVE DEDICATED USER #================================================= -ynh_script_progression --message="Removing the dedicated system user..." +#REMOVEME? ynh_script_progression --message="Removing the dedicated system user..." # Delete a system user #gpasswd -d www-data onlyoffice -ynh_system_user_delete --username=$app +#REMOVEME? ynh_system_user_delete --username=$app #================================================= # END OF SCRIPT diff --git a/scripts/restore b/scripts/restore index dfbf236..7f6c5c0 100644 --- a/scripts/restore +++ b/scripts/restore @@ -15,53 +15,53 @@ source /usr/share/yunohost/helpers #================================================= # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= ynh_script_progression --message="Loading settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -path_url=$(ynh_app_setting_get --app=$app --key=path) -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name -db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) -port=$(ynh_app_setting_get --app=$app --key=port) -nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) -jwt_secret=$(ynh_app_setting_get --app=$app --key=jwt_secret) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? db_user=$db_name +#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) +#REMOVEME? nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) +#REMOVEME? jwt_secret=$(ynh_app_setting_get --app=$app --key=jwt_secret) #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= -ynh_script_progression --message="Validating restoration parameters..." +#REMOVEME? ynh_script_progression --message="Validating restoration parameters..." -test ! -d $final_path \ - || ynh_die --message="There is already a directory: $final_path " +#REMOVEME? test ! -d $install_dir \ + || ynh_die --message="There is already a directory: $install_dir " #================================================= # STANDARD RESTORATION STEPS #================================================= # RECREATE THE DEDICATED USER #================================================= -ynh_script_progression --message="Recreating the dedicated system user..." +#REMOVEME? ynh_script_progression --message="Recreating the dedicated system user..." # Create the dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" +#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" #================================================= # SPECIFIC RESTORATION #================================================= # REINSTALL DEPENDENCIES #================================================= -ynh_script_progression --message="Reinstalling dependencies..." +#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." # Define and install dependencies -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies -ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="deb http://deb.debian.org/debian/ buster main contrib" --package="ttf-mscorefonts-installer" --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" +#REMOVEME? ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies +#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="deb http://deb.debian.org/debian/ buster main contrib" --package="ttf-mscorefonts-installer" --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" #================================================= # RESTORE THE NGINX CONFIGURATION @@ -73,10 +73,10 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # RESTORE THE POSTGRESQL DATABASE #================================================= -ynh_script_progression --message="Restoring the PostgreSQL database..." +#REMOVEME? ynh_script_progression --message="Restoring the PostgreSQL database..." -ynh_psql_test_if_first_run -ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd +#REMOVEME? ynh_psql_test_if_first_run +#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name #================================================= @@ -98,7 +98,7 @@ echo onlyoffice-documentserver onlyoffice/db-name string $db_name | debconf-set- #================================================= ynh_script_progression --message="Reinstalling OnlyOffice..." -ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" +#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" #================================================= # RESTORE THE CONFIGURATION @@ -125,9 +125,9 @@ ynh_script_progression --message="Generating fonts..." #================================================= # Set permissions to app files -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R ds:ds "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R ds:ds "$install_dir" #================================================= # GENERIC FINALIZATION diff --git a/scripts/upgrade b/scripts/upgrade index 3ffa469..26f943c 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -12,19 +12,19 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +#REMOVEME? ynh_script_progression --message="Loading installation settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -path_url=$(ynh_app_setting_get --app=$app --key=path) -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name -db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) -port=$(ynh_app_setting_get --app=$app --key=port) -nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) -#jwt_secret=$(ynh_app_setting_get --app=$app --key=jwt_secret) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? db_user=$db_name +#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) +#REMOVEME? nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) +#REMOVEME? #jwt_secret=$(ynh_app_setting_get --app=$app --key=jwt_secret) #================================================= # CHECK VERSION @@ -35,16 +35,16 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." +#REMOVEME? ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." # Backup the current version of the app -ynh_backup_before_upgrade -ynh_clean_setup () { +#REMOVEME? ynh_backup_before_upgrade +#REMOVEME? ynh_clean_setup () { # Restore it if the upgrade fails - ynh_restore_upgradebackup +#REMOVEME? ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # STANDARD UPGRADE STEPS @@ -56,24 +56,24 @@ ynh_script_progression --message="Ensuring downward compatibility..." # If db_name doesn't exist, create it if [ -z "$db_name" ]; then db_name=$(ynh_sanitize_dbid --db_name=$app) - ynh_app_setting_set --app=$app --key=db_name --value=$db_name +#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name fi -# If final_path doesn't exist, create it -if [ -z "$final_path" ]; then - final_path=/var/www/$app - ynh_app_setting_set --app=$app --key=final_path --value=$final_path +# If install_dir doesn't exist, create it +if [ -z "$install_dir" ]; then +#REMOVEME? install_dir=/var/www/$app +#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir fi if [ -z "$db_pwd" ]; then - db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) - ynh_app_setting_set --app=$app --key=db_pwd - ynh_app_setting_set --app=$app --key=psqlpwd --value=$db_pwd +#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) +#REMOVEME? ynh_app_setting_set --app=$app --key=db_pwd +#REMOVEME? ynh_app_setting_set --app=$app --key=psqlpwd --value=$db_pwd fi # Cleaning legacy permissions -if ynh_legacy_permissions_exists; then - ynh_legacy_permissions_delete_all +#REMOVEME? if ynh_legacy_permissions_exists; then +#REMOVEME? ynh_legacy_permissions_delete_all ynh_app_setting_delete --app=$app --key=is_public fi @@ -84,28 +84,28 @@ ynh_secure_remove --file="/etc/apt/sources.list.d/nodesource.list" #================================================= # CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." +#REMOVEME? ynh_script_progression --message="Making sure dedicated system user exists..." # Create a dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" +#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" #================================================= # UPGRADE DEPENDENCIES #================================================= -ynh_script_progression --message="Upgrading dependencies..." +#REMOVEME? ynh_script_progression --message="Upgrading dependencies..." -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies -ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="deb http://deb.debian.org/debian/ $(lsb_release --codename --short) main contrib" --package="ttf-mscorefonts-installer" --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" +#REMOVEME? ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies +#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="deb http://deb.debian.org/debian/ $(lsb_release --codename --short) main contrib" --package="ttf-mscorefonts-installer" --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" #================================================= # NGINX CONFIGURATION #================================================= ynh_script_progression --message="Upgrading NGINX web server configuration..." -if [ "$path_url" = "/" ]; then +if [ "$path" = "/" ]; then ynh_replace_string --match_string="__SUB_PATH__" --replace_string="" --target_file="../conf/nginx.conf" else - ynh_replace_string --match_string="__SUB_PATH__" --replace_string="$path_url" --target_file="../conf/nginx.conf" + ynh_replace_string --match_string="__SUB_PATH__" --replace_string="$path" --target_file="../conf/nginx.conf" fi # Create a dedicated nginx config @@ -138,8 +138,8 @@ ynh_remove_extra_repo --name="$app" # backward compat # keyserver.ubuntu.com response an error 500 regularly # apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5 -# ynh_remove_app_dependencies -ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" +#REMOVEME? # ynh_remove_app_dependencies +#REMOVEME? ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" #================================================= # UPDATE A CONFIG FILE @@ -165,9 +165,9 @@ ynh_script_progression --message="Generating fonts..." #================================================= # Set permissions to app files -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R ds:ds "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R ds:ds "$install_dir" #================================================= # GENERIC FINALIZATION @@ -183,9 +183,9 @@ chown -R ds:ds "$final_path" #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." -ynh_systemd_action --service_name=nginx --action=reload +#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload #================================================= # END OF SCRIPT diff --git a/tests.toml b/tests.toml new file mode 100644 index 0000000..4aae780 --- /dev/null +++ b/tests.toml @@ -0,0 +1,11 @@ +#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/tests.v1.schema.json + +test_format = 1.0 + +[default] + + args.nextcloud_domain = "nextcloud.tld" + + exclude = ["change_url"] + + test_upgrade_from.205cc12c26b46c57ba8459f449e835949be44096.name = "7.3.3~ynh1" From dbd2db542991a80f66afa7e5fb253c53257d8e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 10:32:30 +0100 Subject: [PATCH 02/16] Fix tests args --- tests.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.toml b/tests.toml index 4aae780..4b26d11 100644 --- a/tests.toml +++ b/tests.toml @@ -4,7 +4,7 @@ test_format = 1.0 [default] - args.nextcloud_domain = "nextcloud.tld" + args.nextclouddomain = "nextcloud.tld" exclude = ["change_url"] From 890ed9557b9e3275f992e9095e04beb3f63cbc73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 10:33:38 +0100 Subject: [PATCH 03/16] fix apt resource --- manifest.toml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/manifest.toml b/manifest.toml index ae6b827..eab3efe 100644 --- a/manifest.toml +++ b/manifest.toml @@ -70,14 +70,13 @@ ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requiremen "postgresql-contrib", "libstdc++6", "rabbitmq-server", - "libcurl4-dev", - "ttf-mscorefonts-installer" + "libcurl4-openssl-dev", # provides libcurl4-dev ] - # [resources.apt.extras.ttf] - # repo = "deb http://deb.debian.org/debian/ bullseye main contrib" - # key = "https://ftp-master.debian.org/keys/release-bullseye.asc" - # packages = "ttf-mscorefonts-installer" + [resources.apt.extras.ttf] + repo = "deb http://deb.debian.org/debian/ bullseye main contrib" + key = "https://ftp-master.debian.org/keys/release-bullseye.asc" + packages = ["ttf-mscorefonts-installer"] [resources.apt.extras.onlyoffice] repo = "https://download.onlyoffice.com/repo/debian squeeze main" From f977d190204ef6d89b47447c9559399736e9a694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 10:35:53 +0100 Subject: [PATCH 04/16] Update doc to packagingv2 --- doc/{DISCLAIMER.md => ADMIN.md} | 2 ++ doc/{DISCLAIMER_fr.md => ADMIN_fr.md} | 28 ++++++++++++++------------- 2 files changed, 17 insertions(+), 13 deletions(-) rename doc/{DISCLAIMER.md => ADMIN.md} (99%) rename doc/{DISCLAIMER_fr.md => ADMIN_fr.md} (59%) diff --git a/doc/DISCLAIMER.md b/doc/ADMIN.md similarity index 99% rename from doc/DISCLAIMER.md rename to doc/ADMIN.md index 43b3a11..e6e1a92 100644 --- a/doc/DISCLAIMER.md +++ b/doc/ADMIN.md @@ -9,6 +9,7 @@ ## Prerequisite You should not install ONLYOFFICE on your main YunoHost domain, especially if you want to use it with a Nextcloud installed on the same domain. + * Add a new domain for ONLYOFFICE in YunoHost. * If your main YunoHost domain was provided by YunoHost, e.g. `domain.nohost.me`, then you don't have to buy/register a new domain name. * Just click on `I already have a domain`. @@ -32,6 +33,7 @@ You should not install ONLYOFFICE on your main YunoHost domain, especially if yo ### Web Edition in Nextcloud Prerequisite: **ONLYOFFICE should be public**, see previous section. + * In Nextcloud apps store, install `ONLYOFFICE`, i.e. the [ONLYOFFICE connector for Nextcloud](https://apps.nextcloud.com/apps/onlyoffice). * Go in the Nextcloud `settings` > `Administration` > `ONLYOFFICE` > `Server settings` > `Address of the Document Server`. * Give the installation domain of your `onlyoffice`, e.g. `https://office.yunohost.domain/`. diff --git a/doc/DISCLAIMER_fr.md b/doc/ADMIN_fr.md similarity index 59% rename from doc/DISCLAIMER_fr.md rename to doc/ADMIN_fr.md index e828325..df3ae9e 100644 --- a/doc/DISCLAIMER_fr.md +++ b/doc/ADMIN_fr.md @@ -1,37 +1,39 @@ ## Démo * Une démo gratuite de 30 jours de Document Server est disponible à partir du connecteur ONLYOFFICE pour Nextcloud: - * Installez Nextcloud et l'application ONLYOFFICE (connector). - * Allez dans les paramètres de l'administrateur Nextcloud, section ONLYOFFICE. - * Cochez la case `Connexion à la démonstration ONLYOFFICE Document Server` dans les paramètres du serveur. + * Installez Nextcloud et l'application ONLYOFFICE (connector). + * Allez dans les paramètres de l'administrateur Nextcloud, section ONLYOFFICE. + * Cochez la case `Connexion à la démonstration ONLYOFFICE Document Server` dans les paramètres du serveur. * Certains tests sont également possibles en utilisant [ONLYOFFICE Desktop Editor](https://www.onlyoffice.com/fr/download-desktop.aspx). ## Prérequis Vous ne devez pas installer ONLYOFFICE sur votre domaine YunoHost principal, surtout si vous souhaitez l'utiliser avec une instance Nextcloud installée sur le même domaine. + * Ajouter un nouveau domaine pour ONLYOFFICE dans YunoHost - * Si votre domaine YunoHost principal a été fourni par YunoHost, par exemple `domain.nohost.me`, alors vous n'avez pas à acheter/enregistrer un nouveau nom de domaine. - * Cliquez simplement sur `J'ai déjà un nom de domaine`. - * Tapez par exemple `office.domain.nohost.me` et cliquez sur `Ajouter`. + * Si votre domaine YunoHost principal a été fourni par YunoHost, par exemple `domain.nohost.me`, alors vous n'avez pas à acheter/enregistrer un nouveau nom de domaine. + * Cliquez simplement sur `J'ai déjà un nom de domaine`. + * Tapez par exemple `office.domain.nohost.me` et cliquez sur `Ajouter`. * Ajoutez un certificat Let's Encrypt pour ce domaine. ## Configuration de ONLYOFFICE Server * Supposons que : - * `yunohost.domain` est votre domaine principal YunoHost. - * Vous avez configuré `office.yunohost.domain` pour ONLYOFFICE, voir Prérequis ci-dessus - * Vous avez Nextcloud installé sur `yunohost.domain / nextcloud` ou `nextcloud.yunohost.domain`. + * `yunohost.domain` est votre domaine principal YunoHost. + * Vous avez configuré `office.yunohost.domain` pour ONLYOFFICE, voir Prérequis ci-dessus + * Vous avez Nextcloud installé sur `yunohost.domain / nextcloud` ou `nextcloud.yunohost.domain`. * Installez `ONLYOFFICE` à l'aide de la CLI ou de l'administrateur Web - * choisissez un nom de domaine pour ONLYOFFICE différent de votre domaine Nextcloud, par exemple `office.yunohost.domain` (ou `office.domain.nohost.me`, voir section précédente). - * Choisissez un chemin pour ONLYOFFICE, par exemple `/` si vous installez sur `office.yunohost.domain` (n'installez aucune autre application sur ce domaine). - * Le domaine de votre instance Nextcloud, par exemple `yunohost.domain / nextcloud` ou `nextcloud.yunohost.domain`. - * Est-ce une application publique ? **Si vous souhaitez le connecter à Nextcloud, ONLYOFFICE doit être public** : puis sélectionnez `Oui` ou `cochez la case`. + * choisissez un nom de domaine pour ONLYOFFICE différent de votre domaine Nextcloud, par exemple `office.yunohost.domain` (ou `office.domain.nohost.me`, voir section précédente). + * Choisissez un chemin pour ONLYOFFICE, par exemple `/` si vous installez sur `office.yunohost.domain` (n'installez aucune autre application sur ce domaine). + * Le domaine de votre instance Nextcloud, par exemple `yunohost.domain / nextcloud` ou `nextcloud.yunohost.domain`. + * Est-ce une application publique ? **Si vous souhaitez le connecter à Nextcloud, ONLYOFFICE doit être public** : puis sélectionnez `Oui` ou `cochez la case`. ## Comment éditer des documents ONLYOFFICE ? ### Web Édition dans Nextcloud Prérequis : **ONLYOFFICE doit être public**, voir la section précédente. + * dans le magasin d'applications Nextcloud, installez `ONLYOFFICE`, c'est-à-dire le [connecteur ONLYOFFICE pour Nextcloud](https://apps.nextcloud.com/apps/onlyoffice) * Allez dans Nextcloud `Paramètres` > `Administration` > `ONLYOFFICE` > `Paramètres du serveur` > `Adresse du service d'édition de document`. * Spécifiez le domaine d'installation de votre serveur `ONLYOFFICE`, par exemple `https://office.yunohost.domain/`. From 89f312e42f39063e6a4a90ae59f34c9d307ae81a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 10:36:10 +0100 Subject: [PATCH 05/16] Remove some fixmes from manifest --- manifest.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.toml b/manifest.toml index eab3efe..26a5d38 100644 --- a/manifest.toml +++ b/manifest.toml @@ -22,8 +22,8 @@ cpe = "cpe:2.3:a:onlyoffice:document_server" yunohost = ">= 11.2" architectures = ["amd64"] multi_instance = false -ldap = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "sso" key : the "ldap" key corresponds to wether or not a user *can* login on the app using its YunoHost credentials. -sso = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "ldap" key : the "sso" key corresponds to wether or not a user is *automatically logged-in* on the app when logged-in on the YunoHost portal. +ldap = "not_relevant" +sso = "not_relevant" disk = "50M" # FIXME: replace with an **estimate** minimum disk requirement. e.g. 20M, 400M, 1G, ... ram.build = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... From 094d7365445e6eb1a044d9366c697dbefc2f966e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 10:39:33 +0100 Subject: [PATCH 06/16] Use post_install.md instead of send_readme --- conf/msg_install => doc/POST_INSTALL.md | 3 +- scripts/_common.sh | 129 ------------------------ 2 files changed, 2 insertions(+), 130 deletions(-) rename conf/msg_install => doc/POST_INSTALL.md (84%) diff --git a/conf/msg_install b/doc/POST_INSTALL.md similarity index 84% rename from conf/msg_install rename to doc/POST_INSTALL.md index b3f6c82..9d7d56c 100644 --- a/conf/msg_install +++ b/doc/POST_INSTALL.md @@ -1,6 +1,7 @@ __APP__ was successfully installed :) To configure OnlyOffice with Nextcloud: + - Within Nextcloud, install ONLYOFFICE app - go to the settings under "Administration > ONLYOFFICE > Server settings - Address of the Document Server: "https://__DOMAIN____PATH__" @@ -8,4 +9,4 @@ To configure OnlyOffice with Nextcloud: OnlyOffice should now work with your Nextcloud! -If you are facing any problem or want to improve this app, please open a new issue here: https://github.com/YunoHost-Apps/onlyoffice_ynh \ No newline at end of file +If you are facing any problem or want to improve this app, please open a new issue here: diff --git a/scripts/_common.sh b/scripts/_common.sh index 854e5f4..944a65e 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,9 +4,6 @@ # COMMON VARIABLES #================================================= -# dependencies used by the app -#REMOVEME? pkg_dependencies="postgresql postgresql-contrib libstdc++6 rabbitmq-server libcurl4-dev" - #================================================= # PERSONAL HELPERS #================================================= @@ -18,129 +15,3 @@ #================================================= # FUTURE OFFICIAL HELPERS #================================================= - -# Send an email to inform the administrator -# -# usage: ynh_send_readme_to_admin --app_message=app_message [--recipients=recipients] [--type=type] -# | arg: -m --app_message= - The file with the content to send to the administrator. -# | arg: -r, --recipients= - The recipients of this email. Use spaces to separate multiples recipients. - default: root -# example: "root admin@domain" -# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you -# example: "root admin@domain user1 user2" -# | arg: -t, --type= - Type of mail, could be 'backup', 'change_url', 'install', 'remove', 'restore', 'upgrade' -# -# Requires YunoHost version 4.1.0 or higher. -ynh_send_readme_to_admin() { - # Declare an array to define the options of this helper. - declare -Ar args_array=( [m]=app_message= [r]=recipients= [t]=type= ) - local app_message - local recipients - local type - # Manage arguments with getopts - - ynh_handle_getopts_args "$@" - app_message="${app_message:-}" - recipients="${recipients:-root}" - type="${type:-install}" - - # Get the value of admin_mail_html -#REMOVEME? admin_mail_html=$(ynh_app_setting_get $app admin_mail_html) - admin_mail_html="${admin_mail_html:-0}" - - # Retrieve the email of users - find_mails () { - local list_mails="$1" - local mail - local recipients=" " - # Read each mail in argument - for mail in $list_mails - do - # Keep root or a real email address as it is - if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@" - then - recipients="$recipients $mail" - else - # But replace an user name without a domain after by its email - if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null) - then - recipients="$recipients $mail" - fi - fi - done - echo "$recipients" - } - recipients=$(find_mails "$recipients") - - # Subject base - local mail_subject="☁️🆈🅽🅷☁️: \`$app\`" - - # Adapt the subject according to the type of mail required. - if [ "$type" = "backup" ]; then - mail_subject="$mail_subject has just been backup." - elif [ "$type" = "change_url" ]; then - mail_subject="$mail_subject has just been moved to a new URL!" - elif [ "$type" = "remove" ]; then - mail_subject="$mail_subject has just been removed!" - elif [ "$type" = "restore" ]; then - mail_subject="$mail_subject has just been restored!" - elif [ "$type" = "upgrade" ]; then - mail_subject="$mail_subject has just been upgraded!" - else # install - mail_subject="$mail_subject has just been installed!" - fi - - ynh_add_config --template="$app_message" --destination="../conf/msg__to_send" - - ynh_delete_file_checksum --file="../conf/msg__to_send" - - local mail_message="This is an automated message from your beloved YunoHost server. -Specific information for the application $app. -$(cat "../conf/msg__to_send")" - - # Store the message into a file for further modifications. - echo "$mail_message" > mail_to_send - - # If a html email is required. Apply html tags to the message. - if [ "$admin_mail_html" -eq 1 ] - then - # Insert 'br' tags at each ending of lines. - ynh_replace_string "$" "
" mail_to_send - - # Insert starting HTML tags - sed --in-place '1s@^@\n\n\n\n@' mail_to_send - - # Keep tabulations - ynh_replace_string " " "\ \ " mail_to_send - ynh_replace_string "\t" "\ \ " mail_to_send - - # Insert url links tags - ynh_replace_string "__URL_TAG1__\(.*\)__URL_TAG2__\(.*\)__URL_TAG3__" "\1" mail_to_send - - # Insert finishing HTML tags - echo -e "\n\n" >> mail_to_send - - # Otherwise, remove tags to keep a plain text. - else - # Remove URL tags - ynh_replace_string "__URL_TAG[1,3]__" "" mail_to_send - ynh_replace_string "__URL_TAG2__" ": " mail_to_send - fi - - # Define binary to use for mail command - if [ -e /usr/bin/bsd-mailx ] - then - local mail_bin=/usr/bin/bsd-mailx - else - local mail_bin=/usr/bin/mail.mailutils - fi - - if [ "$admin_mail_html" -eq 1 ] - then - content_type="text/html" - else - content_type="text/plain" - fi - - # Send the email to the recipients - cat mail_to_send | $mail_bin -a "Content-Type: $content_type; charset=UTF-8" -s "$mail_subject" "$recipients" -} \ No newline at end of file From f1d5501f6867475a7e0d49fb4a37d4025acc443b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 10:39:41 +0100 Subject: [PATCH 07/16] Fix deb installation --- manifest.toml | 9 +++++---- scripts/install | 39 ++++++--------------------------------- 2 files changed, 11 insertions(+), 37 deletions(-) diff --git a/manifest.toml b/manifest.toml index 26a5d38..7b60497 100644 --- a/manifest.toml +++ b/manifest.toml @@ -78,10 +78,11 @@ ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requiremen key = "https://ftp-master.debian.org/keys/release-bullseye.asc" packages = ["ttf-mscorefonts-installer"] - [resources.apt.extras.onlyoffice] - repo = "https://download.onlyoffice.com/repo/debian squeeze main" - key = "https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" - packages = "onlyoffice-documentserver" + # Manual install in scripts + # [resources.apt.extras.onlyoffice] + # repo = "https://download.onlyoffice.com/repo/debian squeeze main" + # key = "https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" + # packages = "onlyoffice-documentserver" [resources.database] type = "postgresql" diff --git a/scripts/install b/scripts/install index d133dc9..79b18bd 100644 --- a/scripts/install +++ b/scripts/install @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -32,8 +30,6 @@ fi # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# SPECIFIC SETUP #================================================= # CONFIGURE ONLYOFFICE #================================================= @@ -56,12 +52,16 @@ ynh_script_progression --message="Install OnlyOffice..." # restart NGINX and the whole webadmin and maybe even the YunoHost command # running the install... -#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" +# Can't do that in the manifest because we need the debconf-set-selections and postgresql already configured +ynh_exec_warn_less ynh_install_extra_app_dependencies \ + --repo="https://download.onlyoffice.com/repo/debian squeeze main" \ + --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" \ + --package="onlyoffice-documentserver" #================================================= # ADD A CONFIGURATION #================================================= -ynh_script_progression --message="Adding a configuration file..." +ynh_script_progression --message="Adding $app's configuration file..." ynh_replace_string --match_string="\"rejectUnauthorized\": true" --replace_string="\"rejectUnauthorized\": false" --target_file="/etc/onlyoffice/documentserver/default.json" ynh_store_file_checksum --file="/etc/onlyoffice/documentserver/default.json" @@ -82,33 +82,6 @@ ynh_script_progression --message="Generating fonts..." /usr/bin/documentserver-generate-allfonts.sh 2>/dev/null -#================================================= -# SETUP SSOWAT -#================================================= -#REMOVEME? ynh_script_progression --message="Configuring permissions..." - -# Make app public if necessary -#REMOVEME? if [ $is_public -eq 1 ] -then - # Everyone can access the app. - # The "main" permission is automatically created before the install script. -#REMOVEME? ynh_permission_update --permission="main" --add="visitors" -fi - -#================================================= -# RELOAD NGINX -#================================================= -#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." - -#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload - -#================================================= -# SEND A README FOR THE ADMIN -#================================================= -ynh_script_progression --message="Sending a readme for the admin..." - -ynh_send_readme_to_admin --app_message="../conf/msg_install" --recipients=$admin_mail --type='install' - #================================================= # END OF SCRIPT #================================================= From 9577ccc323b13c5e0f261f8403002a8e853fad4d Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Tue, 19 Mar 2024 09:39:47 +0000 Subject: [PATCH 08/16] Auto-update README --- README.md | 67 ++++++-------------------------------------------- README_fr.md | 69 ++++++---------------------------------------------- 2 files changed, 15 insertions(+), 121 deletions(-) diff --git a/README.md b/README.md index c10f08c..87efee6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ @@ -29,73 +29,20 @@ Online collaborative edition of ONLYOFFICE documents requires: A solution made easy by YunoHost is to install (1.i) and (2.i), see [section below](https://github.com/YunoHost-Apps/onlyoffice_ynh/#configuration-of-onlyoffice-server). The Nextcloud addicts may follow [this tutorial](https://github.com/YunoHost-Apps/nextcloud_ynh#configure-onlyoffice-integration) to install (1.ii) and (2.i) on one Nextcloud instance. However, performance and architecture are limited. - **Shipped version:** 7.5~ynh1 -**Demo:** https://www.onlyoffice.com/fr/download-desktop.aspx +**Demo:** ## Screenshots ![Screenshot of OnlyOffice](./doc/screenshots/document-short.png) -## Disclaimers / important information - -## Demo - -* A free 30 days demo of Document Server is available from ONLYOFFICE connector for Nextcloud: - * Install Nextcloud and the ONLYOFFICE app (connector). - * Go in the Nextcloud administrator settings, section ONLYOFFICE. - * Tick the box `Connection to demo ONLYOFFICE Document Server` in Server Parameters. -* Some testing is also possible using [ONLYOFFICE Desktop Editor](https://www.onlyoffice.com/fr/download-desktop.aspx). - -## Prerequisite - -You should not install ONLYOFFICE on your main YunoHost domain, especially if you want to use it with a Nextcloud installed on the same domain. -* Add a new domain for ONLYOFFICE in YunoHost. - * If your main YunoHost domain was provided by YunoHost, e.g. `domain.nohost.me`, then you don't have to buy/register a new domain name. - * Just click on `I already have a domain`. - * Type e.g. `office.domain.nohost.me` and click on `Add`. -* Add a Let's Encrypt certificate for this domain. - -## Configuration of ONLYOFFICE Server - -* Assuming that: - * `yunohost.domain` is your main YunoHost domain. - * You have configured `office.yunohost.domain` for ONLYOFFICE, see Prerequisite above. - * You have Nextcloud installed on `yunohost.domain/nextcloud` or `nextcloud.yunohost.domain`. -* Install `ONLYOFFICE` using CLI or webadmin. - * Choose a domain name for ONLYOFFICE that is different from your Nextcloud domain, e.g. `office.yunohost.domain` (or `office.domain.nohost.me`, see previous section). - * Choose a path for ONLYOFFICE, e.g. `/` if you install on `office.yunohost.domain` (do not install any other app on this domain). - * The domain of your Nextcloud instance, e.g. `yunohost.domain/nextcloud` or `nextcloud.yunohost.domain`. - * Is it a public application? **If you want to connect it to Nextcloud, ONLYOFFICE should be public**: then select `Yes` or `tick the box`. - -## How to edit ONLYOFFICE documents? - -### Web Edition in Nextcloud - -Prerequisite: **ONLYOFFICE should be public**, see previous section. -* In Nextcloud apps store, install `ONLYOFFICE`, i.e. the [ONLYOFFICE connector for Nextcloud](https://apps.nextcloud.com/apps/onlyoffice). -* Go in the Nextcloud `settings` > `Administration` > `ONLYOFFICE` > `Server settings` > `Address of the Document Server`. -* Give the installation domain of your `onlyoffice`, e.g. `https://office.yunohost.domain/`. -* Give the secret key that was sent to you by email during the install (you can also retrieve it with the CLI command `sudo documentserver-jwt-status.sh`). -* Click `Save`. -* Create a new document and enjoy! - -### Desktop Edition on PC - -* Download and install a [ONLYOFFICE Desktop Editors](https://www.onlyoffice.com/fr/download-desktop.aspx). -* Start ONLYOFFICE and Go to `Connect to cloud` > `Add cloud`. - * Select `ONLYOFFICE` and give the installation domain of your `ONLYOFFICE`, e.g. `office.yunohost.domain` - * or (only if you connected `ONLYOFFICE` to Nextcloud, see previous section). - * Select `Nextcloud` and give your Nextcloud installation domain, e.g. `yunohost.domain/nextcloud`. -* Create a new document and enjoy! - ## Documentation and resources -* Official app website: -* Upstream app code repository: -* YunoHost Store: -* Report a bug: +- Official app website: +- Upstream app code repository: +- YunoHost Store: +- Report a bug: ## Developer info @@ -103,7 +50,7 @@ Please send your pull request to the [testing branch](https://github.com/YunoHos To try the testing branch, please proceed like that. -``` bash +```bash sudo yunohost app install https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug or sudo yunohost app upgrade onlyoffice -u https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug diff --git a/README_fr.md b/README_fr.md index 2d6517c..8314715 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,5 +1,5 @@ @@ -29,73 +29,20 @@ L'édition collaborative en ligne des documents ONLYOFFICE nécessite : Une solution rendue facile par YunoHost est d'installer (1.i) et (2.i), voir [ci-dessous](https://github.com/YunoHost-Apps/onlyoffice_ynh/blob/master/README_fr.md#configuration-de-onlyoffice-server). Les utilisateurs qui aiment le tout Nextcloud peuvent suivre [ce tutoriel](https://github.com/YunoHost-Apps/nextcloud_ynh/blob/master/README_fr.md#configurer-lint%C3%A9gration-donlyoffice) pour installer le Community Document Server (1.ii) et ONLYOFFICE connector (2.i) sur une instance Nextcloud. Cependant, les performances et l'architecture sont limitées. - **Version incluse :** 7.5~ynh1 -**Démo :** https://www.onlyoffice.com/fr/download-desktop.aspx +**Démo :** ## Captures d’écran ![Capture d’écran de OnlyOffice](./doc/screenshots/document-short.png) -## Avertissements / informations importantes - -## Démo - -* Une démo gratuite de 30 jours de Document Server est disponible à partir du connecteur ONLYOFFICE pour Nextcloud: - * Installez Nextcloud et l'application ONLYOFFICE (connector). - * Allez dans les paramètres de l'administrateur Nextcloud, section ONLYOFFICE. - * Cochez la case `Connexion à la démonstration ONLYOFFICE Document Server` dans les paramètres du serveur. -* Certains tests sont également possibles en utilisant [ONLYOFFICE Desktop Editor](https://www.onlyoffice.com/fr/download-desktop.aspx). - -## Prérequis - -Vous ne devez pas installer ONLYOFFICE sur votre domaine YunoHost principal, surtout si vous souhaitez l'utiliser avec une instance Nextcloud installée sur le même domaine. -* Ajouter un nouveau domaine pour ONLYOFFICE dans YunoHost - * Si votre domaine YunoHost principal a été fourni par YunoHost, par exemple `domain.nohost.me`, alors vous n'avez pas à acheter/enregistrer un nouveau nom de domaine. - * Cliquez simplement sur `J'ai déjà un nom de domaine`. - * Tapez par exemple `office.domain.nohost.me` et cliquez sur `Ajouter`. -* Ajoutez un certificat Let's Encrypt pour ce domaine. - -## Configuration de ONLYOFFICE Server - -* Supposons que : - * `yunohost.domain` est votre domaine principal YunoHost. - * Vous avez configuré `office.yunohost.domain` pour ONLYOFFICE, voir Prérequis ci-dessus - * Vous avez Nextcloud installé sur `yunohost.domain / nextcloud` ou `nextcloud.yunohost.domain`. -* Installez `ONLYOFFICE` à l'aide de la CLI ou de l'administrateur Web - * choisissez un nom de domaine pour ONLYOFFICE différent de votre domaine Nextcloud, par exemple `office.yunohost.domain` (ou `office.domain.nohost.me`, voir section précédente). - * Choisissez un chemin pour ONLYOFFICE, par exemple `/` si vous installez sur `office.yunohost.domain` (n'installez aucune autre application sur ce domaine). - * Le domaine de votre instance Nextcloud, par exemple `yunohost.domain / nextcloud` ou `nextcloud.yunohost.domain`. - * Est-ce une application publique ? **Si vous souhaitez le connecter à Nextcloud, ONLYOFFICE doit être public** : puis sélectionnez `Oui` ou `cochez la case`. - -## Comment éditer des documents ONLYOFFICE ? - -### Web Édition dans Nextcloud - -Prérequis : **ONLYOFFICE doit être public**, voir la section précédente. -* dans le magasin d'applications Nextcloud, installez `ONLYOFFICE`, c'est-à-dire le [connecteur ONLYOFFICE pour Nextcloud](https://apps.nextcloud.com/apps/onlyoffice) -* Allez dans Nextcloud `Paramètres` > `Administration` > `ONLYOFFICE` > `Paramètres du serveur` > `Adresse du service d'édition de document`. -* Spécifiez le domaine d'installation de votre serveur `ONLYOFFICE`, par exemple `https://office.yunohost.domain/`. -* Renseignez la clé secrète qui vous a été envoyée par email lors de l'installation (vous pouvez aussi la retrouve avec la ligne de commande `sudo documentserver-jwt-status.sh`). -* Cliquez sur `Enregistrer`. -* Créez un nouveau document ! - -### Desktop Édition sur PC - -* Téléchargez et installez [ONLYOFFICE Desktop Editors](https://www.onlyoffice.com/fr/download-desktop.aspx) -* Démarrez l'éditeur et allez dans `Connecter au Cloud` > `Ajouter cloud` - * sélectionnez ONLYOFFICE et indiquez le domaine d'installation de votre server ONLYOFFICE, par ex. `office.yunohost.domain` - * ou (uniquement si vous avez connecté `ONLYOFFICE` à Nextcloud, voir section précédente). - * Sélectionnez `Nextcloud` et donnez votre domaine d'installation Nextcloud, par exemple `yunohost.domain/nextcloud`. -* Créez un nouveau document ! - ## Documentations et ressources -* Site officiel de l’app : -* Dépôt de code officiel de l’app : -* YunoHost Store: -* Signaler un bug : +- Site officiel de l’app : +- Dépôt de code officiel de l’app : +- YunoHost Store : +- Signaler un bug : ## Informations pour les développeurs @@ -103,10 +50,10 @@ Merci de faire vos pull request sur la [branche testing](https://github.com/Yuno Pour essayer la branche testing, procédez comme suit. -``` bash +```bash sudo yunohost app install https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug ou sudo yunohost app upgrade onlyoffice -u https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug ``` -**Plus d’infos sur le packaging d’applications :** \ No newline at end of file +**Plus d’infos sur le packaging d’applications :** From 864e78b0d378c257b790a54ab7d32c1e21eca9d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 11:06:26 +0100 Subject: [PATCH 09/16] Remove subpath installation possibility --- manifest.toml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/manifest.toml b/manifest.toml index 7b60497..b4eba7d 100644 --- a/manifest.toml +++ b/manifest.toml @@ -32,9 +32,10 @@ ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requiremen [install.domain] type = "domain" - [install.path] - type = "path" - default = "/onlyoffice" + # FIXME: subpath doesn't work anymore? + # [install.path] + # type = "path" + # default = "/onlyoffice" [install.init_main_permission] help.en = "You will only be able to connect OnlyOffice to Nextcloud if both apps are public!" @@ -70,7 +71,7 @@ ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requiremen "postgresql-contrib", "libstdc++6", "rabbitmq-server", - "libcurl4-openssl-dev", # provides libcurl4-dev + "libcurl4-openssl-dev", ] [resources.apt.extras.ttf] From 4671f4481a44cafdf88886ed10ed4caf05507648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 11:13:47 +0100 Subject: [PATCH 10/16] Update packagingv2 --- scripts/backup | 28 +++------ scripts/change_url | 101 ------------------------------ scripts/install | 47 +++++++------- scripts/remove | 59 +----------------- scripts/restore | 105 +++++++------------------------ scripts/upgrade | 151 +++++++-------------------------------------- 6 files changed, 79 insertions(+), 412 deletions(-) diff --git a/scripts/backup b/scripts/backup index b113dbb..48b682b 100644 --- a/scripts/backup +++ b/scripts/backup @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -10,31 +8,13 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_print_info --message="Loading installation settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) - #================================================= # DECLARE DATA AND CONF FILES TO BACKUP #================================================= ynh_print_info --message="Declaring files to be backed up..." #================================================= -# BACKUP THE NGINX CONFIGURATION +# BACKUP THE SYSTEM CONFIGURATION #================================================= ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" @@ -46,6 +26,12 @@ ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_backup --src_path="/etc/onlyoffice" ynh_backup --src_path="/var/lib/onlyoffice/documentserver/App_Data/cache/files" --not_mandatory +#================================================= +# BACKUP VARIOUS FILES +#================================================= + +ynh_backup --src_path="/var/log/$app/" + #================================================= # BACKUP THE POSTGRESQL DATABASE #================================================= diff --git a/scripts/change_url b/scripts/change_url index a9084f1..6dd5830 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC STARTING #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -9,65 +7,6 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# RETRIEVE ARGUMENTS -#================================================= - -#REMOVEME? old_domain=$YNH_APP_OLD_DOMAIN -#REMOVEME? old_path=$YNH_APP_OLD_PATH - -#REMOVEME? new_domain=$YNH_APP_NEW_DOMAIN -#REMOVEME? new_path=$YNH_APP_NEW_PATH - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." - -#REMOVEME? # Needed for helper "ynh_add_nginx_config" -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) - -# Add settings here as needed by your application -#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) -#REMOVEME? nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) - -#================================================= -# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP -#================================================= -#REMOVEME? ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." - -# Backup the current version of the app -#REMOVEME? ynh_backup_before_upgrade -#REMOVEME? ynh_clean_setup () { - # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. -#REMOVEME? ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" - - # Restore it if the upgrade fails -#REMOVEME? ynh_restore_upgradebackup -} -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# CHECK WHICH PARTS SHOULD BE CHANGED -#================================================= - -#REMOVEME? change_domain=0 -#REMOVEME? if [ "$old_domain" != "$new_domain" ] -then - #REMOVEME? change_domain=1 -fi - -#REMOVEME? change_path=0 -#REMOVEME? if [ "$old_path" != "$new_path" ] -then - #REMOVEME? change_path=1 -fi - -#================================================= -# STANDARD MODIFICATIONS #================================================= # MODIFY URL IN NGINX CONF #================================================= @@ -75,46 +14,6 @@ ynh_script_progression --message="Updating NGINX web server configuration..." ynh_change_url_nginx_config -#REMOVEME? nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf - -# Change the path in the NGINX config file -if [ $change_path -eq 1 ] -then - # Make a backup of the original NGINX config file if modified -#REMOVEME? ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - # Set global variables for NGINX helper -#REMOVEME? domain="$old_domain" -#REMOVEME? path="$new_path" - - if [ $new_path = "/" ]; then -#REMOVEME? ynh_replace_string --match_string="__SUB_PATH__" --replace_string="" --target_file="../conf/nginx.conf" - else -#REMOVEME? ynh_replace_string --match_string="__SUB_PATH__" --replace_string="$new_path" --target_file="../conf/nginx.conf" - fi - - # Create a dedicated NGINX config -#REMOVEME? ynh_add_nginx_config "nextclouddomain" -fi - -# Change the domain for NGINX -if [ $change_domain -eq 1 ] -then - # Delete file checksum for the old conf file location -#REMOVEME? ynh_delete_file_checksum --file="$nginx_conf_path" -#REMOVEME? mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf - # Store file checksum for the new config file location -#REMOVEME? ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" -fi - -#================================================= -# GENERIC FINALISATION -#================================================= -# RELOAD NGINX -#================================================= -#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." - -#REMOVEME? #REMOVEME? ynh_systemd_action --service_name=nginx --action=reload - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/install b/scripts/install index 79b18bd..0e30299 100644 --- a/scripts/install +++ b/scripts/install @@ -17,23 +17,9 @@ jwt_secret=$(ynh_string_random --length=32) ynh_app_setting_set --app="$app" --key=jwt_secret --value="$jwt_secret" #================================================= -# NGINX CONFIGURATION +# INSTALL ONLYOFFICE #================================================= -ynh_script_progression --message="Configuring NGINX web server..." - -if [ $path = "/" ]; then - path_no_slash="" -else - path_no_slash="$path" -fi - -# Create a dedicated NGINX config -ynh_add_nginx_config - -#================================================= -# CONFIGURE ONLYOFFICE -#================================================= -ynh_script_progression --message="Configuring OnlyOffice..." +ynh_script_progression --message="Install OnlyOffice..." echo onlyoffice-documentserver onlyoffice/ds-port select "$port" | debconf-set-selections echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set-selections @@ -42,11 +28,6 @@ echo onlyoffice-documentserver onlyoffice/db-pwd password "$db_pwd" | debconf-se echo onlyoffice-documentserver onlyoffice/db-name string "$db_name" | debconf-set-selections echo onlyoffice-documentserver onlyoffice/jwt-secret password "$jwt_secret" | debconf-set-selections -#================================================= -# INSTALL ONLYOFFICE -#================================================= -ynh_script_progression --message="Install OnlyOffice..." - # The OnlyOffice dev had the magnificent idea to add a "nginx restart" during # the install/configure of their package, which is awful since that will # restart NGINX and the whole webadmin and maybe even the YunoHost command @@ -63,9 +44,18 @@ ynh_exec_warn_less ynh_install_extra_app_dependencies \ #================================================= ynh_script_progression --message="Adding $app's configuration file..." -ynh_replace_string --match_string="\"rejectUnauthorized\": true" --replace_string="\"rejectUnauthorized\": false" --target_file="/etc/onlyoffice/documentserver/default.json" +ynh_replace_string --target_file="/etc/onlyoffice/documentserver/default.json" \ + --match_string="\"rejectUnauthorized\": true" \ + --replace_string="\"rejectUnauthorized\": false" ynh_store_file_checksum --file="/etc/onlyoffice/documentserver/default.json" +#================================================= +# REGENERATE FONTS +#================================================= +ynh_script_progression --message="Generating fonts..." + +/usr/bin/documentserver-generate-allfonts.sh 2>/dev/null + #================================================= # SECURE FILES AND DIRECTORIES #================================================= @@ -76,11 +66,18 @@ chmod -R o-rwx "$install_dir" chown -R ds:ds "$install_dir" #================================================= -# REGENERATE FONTS +# NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Generating fonts..." +ynh_script_progression --message="Configuring NGINX web server..." -/usr/bin/documentserver-generate-allfonts.sh 2>/dev/null +if [ $path = "/" ]; then + path_no_slash="" +else + path_no_slash="$path" +fi + +# Create a dedicated NGINX config +ynh_add_nginx_config #================================================= # END OF SCRIPT diff --git a/scripts/remove b/scripts/remove index dc4fba3..93de249 100644 --- a/scripts/remove +++ b/scripts/remove @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -9,21 +7,6 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) -#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#REMOVEME? db_user=$db_name -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) - -#================================================= -# STANDARD REMOVE #================================================= # REMOVE ONLYOFFICE #================================================= @@ -40,48 +23,21 @@ ynh_secure_remove --file=/var/lib/dpkg/info/onlyoffice-documentserver.prerm #ln -s /bin/true /usr/local/bin/supervisorctl ynh_package_autopurge onlyoffice-documentserver -#================================================= -# REMOVE THE POSTGRESQL DATABASE -#================================================= -#REMOVEME? ynh_script_progression --message="Removing the PostgreSQL database..." - -# Remove a database if it exists, along with the associated user -#REMOVEME? ynh_psql_remove_db --db_user="$db_user" --db_name="$db_name" - -#================================================= -# REMOVE DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Removing dependencies..." - -# Remove metapackage and its dependencies -#REMOVEME? ynh_remove_app_dependencies - dpkg --configure -a apt-key del "E09C A29F 6E17 8040 EF22 B409 8320 CA65 CB2D E8E5" 2>/dev/null #================================================= -# REMOVE APP MAIN DIR +# REMOVE SYSTEM CONFIGURATIONS #================================================= -#REMOVEME? ynh_script_progression --message="Removing app main directory..." - -# Remove the app directory securely -#REMOVEME? ynh_secure_remove --file="$install_dir" - -#================================================= -# REMOVE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Removing NGINX web server configuration..." +ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 # Remove the dedicated NGINX config ynh_remove_nginx_config -#================================================= -# SPECIFIC REMOVE #================================================= # REMOVE VARIOUS FILES #================================================= -ynh_script_progression --message="Removing various files..." # Remove a directory securely ynh_secure_remove --file="/etc/onlyoffice" @@ -90,17 +46,6 @@ ynh_secure_remove --file="/var/lib/onlyoffice" # Remove the log files ynh_secure_remove --file="/var/log/$app" -#================================================= -# GENERIC FINALIZATION -#================================================= -# REMOVE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Removing the dedicated system user..." - -# Delete a system user -#gpasswd -d www-data onlyoffice -#REMOVEME? ynh_system_user_delete --username=$app - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/restore b/scripts/restore index 7f6c5c0..14cd2c1 100644 --- a/scripts/restore +++ b/scripts/restore @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -10,95 +8,35 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# LOAD SETTINGS -#================================================= -ynh_script_progression --message="Loading settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#REMOVEME? db_user=$db_name -#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) -#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) -#REMOVEME? nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) -#REMOVEME? jwt_secret=$(ynh_app_setting_get --app=$app --key=jwt_secret) - -#================================================= -# CHECK IF THE APP CAN BE RESTORED -#================================================= -#REMOVEME? ynh_script_progression --message="Validating restoration parameters..." - -#REMOVEME? test ! -d $install_dir \ - || ynh_die --message="There is already a directory: $install_dir " - -#================================================= -# STANDARD RESTORATION STEPS -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Recreating the dedicated system user..." - -# Create the dedicated user (if not existing) -#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" - -#================================================= -# SPECIFIC RESTORATION -#================================================= -# REINSTALL DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." - -# Define and install dependencies -#REMOVEME? ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies -#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="deb http://deb.debian.org/debian/ buster main contrib" --package="ttf-mscorefonts-installer" --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" - -#================================================= -# RESTORE THE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the NGINX configuration..." - -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" - #================================================= # RESTORE THE POSTGRESQL DATABASE #================================================= -#REMOVEME? ynh_script_progression --message="Restoring the PostgreSQL database..." +ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=1 -#REMOVEME? ynh_psql_test_if_first_run -#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd -ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name +ynh_psql_connect_as --user="$db_user" --password="$db_pwd" --database="$db_name" < ./db.sql #================================================= -# CONFIGURE ONLYOFFICE +# INSTALL ONLYOFFICE #================================================= -ynh_script_progression --message="Configuring OnlyOffice..." +ynh_script_progression --message="Install OnlyOffice..." -echo onlyoffice-documentserver onlyoffice/ds-port select $port | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/ds-port select "$port" | debconf-set-selections echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-user string $db_user | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-pwd password $db_pwd | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-name string $db_name | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/db-user string "$db_user" | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/db-pwd password "$db_pwd" | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/db-name string "$db_name" | debconf-set-selections +echo onlyoffice-documentserver onlyoffice/jwt-secret password "$jwt_secret" | debconf-set-selections -#JWT options -#echo onlyoffice-documentserver onlyoffice/jwt-secret password $jwt_secret | debconf-set-selections +# The OnlyOffice dev had the magnificent idea to add a "nginx restart" during +# the install/configure of their package, which is awful since that will +# restart NGINX and the whole webadmin and maybe even the YunoHost command +# running the install... -#================================================= -# REINSTALL ONLYOFFICE -#================================================= -ynh_script_progression --message="Reinstalling OnlyOffice..." - -#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" +# Can't do that in the manifest because we need the debconf-set-selections and postgresql already configured +ynh_exec_warn_less ynh_install_extra_app_dependencies \ + --repo="https://download.onlyoffice.com/repo/debian squeeze main" \ + --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" \ + --package="onlyoffice-documentserver" #================================================= # RESTORE THE CONFIGURATION @@ -130,7 +68,12 @@ chmod -R o-rwx "$install_dir" chown -R ds:ds "$install_dir" #================================================= -# GENERIC FINALIZATION +# RESTORE SYSTEM CONFIGURATIONS +#================================================= +ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" + #================================================= # RELOAD NGINX #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 26f943c..5d19c47 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -9,114 +7,18 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#REMOVEME? db_user=$db_name -#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) -#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) -#REMOVEME? nextclouddomain=$(ynh_app_setting_get --app=$app --key=nextclouddomain) -#REMOVEME? #jwt_secret=$(ynh_app_setting_get --app=$app --key=jwt_secret) - -#================================================= -# CHECK VERSION -#================================================= - -upgrade_type=$(ynh_check_app_version_changed) - -#================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP -#================================================= -#REMOVEME? ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." - -# Backup the current version of the app -#REMOVEME? ynh_backup_before_upgrade -#REMOVEME? ynh_clean_setup () { - # Restore it if the upgrade fails -#REMOVEME? ynh_restore_upgradebackup -} -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# STANDARD UPGRADE STEPS #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= ynh_script_progression --message="Ensuring downward compatibility..." -# If db_name doesn't exist, create it -if [ -z "$db_name" ]; then - db_name=$(ynh_sanitize_dbid --db_name=$app) -#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name -fi - -# If install_dir doesn't exist, create it -if [ -z "$install_dir" ]; then -#REMOVEME? install_dir=/var/www/$app -#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir -fi - -if [ -z "$db_pwd" ]; then -#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) -#REMOVEME? ynh_app_setting_set --app=$app --key=db_pwd -#REMOVEME? ynh_app_setting_set --app=$app --key=psqlpwd --value=$db_pwd -fi - -# Cleaning legacy permissions -#REMOVEME? if ynh_legacy_permissions_exists; then -#REMOVEME? ynh_legacy_permissions_delete_all - - ynh_app_setting_delete --app=$app --key=is_public -fi - ynh_secure_remove --file="/etc/apt/sources.list.d/onlyoffice.list" ynh_secure_remove --file="/etc/apt/sources.list.d/nodesource.list" -#================================================= -# CREATE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Making sure dedicated system user exists..." - -# Create a dedicated user (if not existing) -#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" - -#================================================= -# UPGRADE DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Upgrading dependencies..." - -#REMOVEME? ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies -#REMOVEME? ynh_exec_warn_less ynh_install_extra_app_dependencies --repo="deb http://deb.debian.org/debian/ $(lsb_release --codename --short) main contrib" --package="ttf-mscorefonts-installer" --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" - -#================================================= -# NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Upgrading NGINX web server configuration..." - -if [ "$path" = "/" ]; then - ynh_replace_string --match_string="__SUB_PATH__" --replace_string="" --target_file="../conf/nginx.conf" -else - ynh_replace_string --match_string="__SUB_PATH__" --replace_string="$path" --target_file="../conf/nginx.conf" -fi - -# Create a dedicated nginx config -ynh_add_nginx_config "nextclouddomain" - -#================================================= -# SPECIFIC UPGRADE #================================================= # CONFIGURE ONLYOFFICE #================================================= -ynh_script_progression --message="Configuring OnlyOffice..." +ynh_script_progression --message="Upgrading OnlyOffice..." ynh_backup_if_checksum_is_different --file="/etc/onlyoffice/documentserver/default.json" echo onlyoffice-documentserver onlyoffice/ds-port select $port | debconf-set-selections @@ -124,22 +26,19 @@ echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set echo onlyoffice-documentserver onlyoffice/db-user string $db_user | debconf-set-selections echo onlyoffice-documentserver onlyoffice/db-pwd password $db_pwd | debconf-set-selections echo onlyoffice-documentserver onlyoffice/db-name string $db_name | debconf-set-selections +# JWT options +# echo onlyoffice-documentserver onlyoffice/jwt-secret password $jwt_secret | debconf-set-selections -#JWT options -#echo onlyoffice-documentserver onlyoffice/jwt-secret password $jwt_secret | debconf-set-selections +# The OnlyOffice dev had the magnificent idea to add a "nginx restart" during +# the install/configure of their package, which is awful since that will +# restart NGINX and the whole webadmin and maybe even the YunoHost command +# running the install... -#================================================= -# UPGRADE ONLYOFFICE -#================================================= -ynh_script_progression --message="Upgrading OnlyOffice..." - -ynh_remove_extra_repo --name="$app" # backward compat - -# keyserver.ubuntu.com response an error 500 regularly -# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5 - -#REMOVEME? # ynh_remove_app_dependencies -#REMOVEME? ynh_install_extra_app_dependencies --repo="https://download.onlyoffice.com/repo/debian squeeze main" --package="onlyoffice-documentserver" --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" +# Can't do that in the manifest because we need the debconf-set-selections and postgresql already configured +ynh_exec_warn_less ynh_install_extra_app_dependencies \ + --repo="https://download.onlyoffice.com/repo/debian squeeze main" \ + --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" \ + --package="onlyoffice-documentserver" #================================================= # UPDATE A CONFIG FILE @@ -148,7 +47,9 @@ ynh_script_progression --message="Updating a configuration file..." ynh_backup_if_checksum_is_different --file="/etc/onlyoffice/documentserver/default.json" -ynh_replace_string --match_string="\"rejectUnauthorized\": true" --replace_string="\"rejectUnauthorized\": false" --target_file="/etc/onlyoffice/documentserver/default.json" +ynh_replace_string --target_file="/etc/onlyoffice/documentserver/default.json" \ + --match_string="\"rejectUnauthorized\": true" \ + --replace_string="\"rejectUnauthorized\": false" # Recalculate and store the checksum of the file for the next upgrade. ynh_store_file_checksum --file="/etc/onlyoffice/documentserver/default.json" @@ -170,22 +71,18 @@ chmod -R o-rwx "$install_dir" chown -R ds:ds "$install_dir" #================================================= -# GENERIC FINALIZATION +# REAPPLY SYSTEM CONFIGURATIONS #================================================= -# START SYSTEMD SERVICE -#================================================= -# ynh_script_progression --message="Starting a systemd service..." +ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 -# supervisorctl reload +if [ $path = "/" ]; then + path_no_slash="" +else + path_no_slash="$path" +fi -# sleep 30 - -#================================================= -# RELOAD NGINX -#================================================= -#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." - -#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload +# Create a dedicated NGINX config +ynh_add_nginx_config #================================================= # END OF SCRIPT From a89b9bee00fb3c5585e34651cb0d3f6a4f33ce6c Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Tue, 19 Mar 2024 13:29:19 +0000 Subject: [PATCH 11/16] Auto-update README --- README.md | 15 +++++++-------- README_fr.md | 17 ++++++++--------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index c10f08c..1f2255c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ @@ -29,10 +29,9 @@ Online collaborative edition of ONLYOFFICE documents requires: A solution made easy by YunoHost is to install (1.i) and (2.i), see [section below](https://github.com/YunoHost-Apps/onlyoffice_ynh/#configuration-of-onlyoffice-server). The Nextcloud addicts may follow [this tutorial](https://github.com/YunoHost-Apps/nextcloud_ynh#configure-onlyoffice-integration) to install (1.ii) and (2.i) on one Nextcloud instance. However, performance and architecture are limited. - **Shipped version:** 7.5~ynh1 -**Demo:** https://www.onlyoffice.com/fr/download-desktop.aspx +**Demo:** ## Screenshots @@ -92,10 +91,10 @@ Prerequisite: **ONLYOFFICE should be public**, see previous section. ## Documentation and resources -* Official app website: -* Upstream app code repository: -* YunoHost Store: -* Report a bug: +- Official app website: +- Upstream app code repository: +- YunoHost Store: +- Report a bug: ## Developer info @@ -103,7 +102,7 @@ Please send your pull request to the [testing branch](https://github.com/YunoHos To try the testing branch, please proceed like that. -``` bash +```bash sudo yunohost app install https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug or sudo yunohost app upgrade onlyoffice -u https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug diff --git a/README_fr.md b/README_fr.md index 2d6517c..f516f77 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,5 +1,5 @@ @@ -29,10 +29,9 @@ L'édition collaborative en ligne des documents ONLYOFFICE nécessite : Une solution rendue facile par YunoHost est d'installer (1.i) et (2.i), voir [ci-dessous](https://github.com/YunoHost-Apps/onlyoffice_ynh/blob/master/README_fr.md#configuration-de-onlyoffice-server). Les utilisateurs qui aiment le tout Nextcloud peuvent suivre [ce tutoriel](https://github.com/YunoHost-Apps/nextcloud_ynh/blob/master/README_fr.md#configurer-lint%C3%A9gration-donlyoffice) pour installer le Community Document Server (1.ii) et ONLYOFFICE connector (2.i) sur une instance Nextcloud. Cependant, les performances et l'architecture sont limitées. - **Version incluse :** 7.5~ynh1 -**Démo :** https://www.onlyoffice.com/fr/download-desktop.aspx +**Démo :** ## Captures d’écran @@ -92,10 +91,10 @@ Prérequis : **ONLYOFFICE doit être public**, voir la section précédente. ## Documentations et ressources -* Site officiel de l’app : -* Dépôt de code officiel de l’app : -* YunoHost Store: -* Signaler un bug : +- Site officiel de l’app : +- Dépôt de code officiel de l’app : +- YunoHost Store : +- Signaler un bug : ## Informations pour les développeurs @@ -103,10 +102,10 @@ Merci de faire vos pull request sur la [branche testing](https://github.com/Yuno Pour essayer la branche testing, procédez comme suit. -``` bash +```bash sudo yunohost app install https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug ou sudo yunohost app upgrade onlyoffice -u https://github.com/YunoHost-Apps/onlyoffice_ynh/tree/testing --debug ``` -**Plus d’infos sur le packaging d’applications :** \ No newline at end of file +**Plus d’infos sur le packaging d’applications :** From 7376702a3ac2de93ff60f05fb6e818f75a2a9f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 14:30:55 +0100 Subject: [PATCH 12/16] Fix test_upgrade_from args --- tests.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests.toml b/tests.toml index 4b26d11..2476155 100644 --- a/tests.toml +++ b/tests.toml @@ -8,4 +8,9 @@ test_format = 1.0 exclude = ["change_url"] - test_upgrade_from.205cc12c26b46c57ba8459f449e835949be44096.name = "7.3.3~ynh1" + [default.test_upgrade_from.205cc12c26b46c57ba8459f449e835949be44096] + name = "7.3.3~ynh1" + args.domain = "domain.tld" + args.path = "/" + args.nextclouddomain = "nextcloud.tld" + args.admin = "package_checker" From 36f5e3e94c5ba80df0dc4fde5f201ee9b0617cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 14:57:06 +0100 Subject: [PATCH 13/16] move code to _common.sh --- manifest.toml | 9 +++++---- scripts/_common.sh | 28 ++++++++++++++++++++++++++++ scripts/install | 19 ++----------------- scripts/restore | 19 ++----------------- scripts/upgrade | 23 ++++------------------- 5 files changed, 41 insertions(+), 57 deletions(-) diff --git a/manifest.toml b/manifest.toml index b4eba7d..1de95e4 100644 --- a/manifest.toml +++ b/manifest.toml @@ -74,10 +74,11 @@ ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requiremen "libcurl4-openssl-dev", ] - [resources.apt.extras.ttf] - repo = "deb http://deb.debian.org/debian/ bullseye main contrib" - key = "https://ftp-master.debian.org/keys/release-bullseye.asc" - packages = ["ttf-mscorefonts-installer"] + # Manual install in scripts + # [resources.apt.extras.ttf] + # repo = "deb http://deb.debian.org/debian/ bullseye main contrib" + # key = "https://ftp-master.debian.org/keys/release-bullseye.asc" + # packages = ["ttf-mscorefonts-installer"] # Manual install in scripts # [resources.apt.extras.onlyoffice] diff --git a/scripts/_common.sh b/scripts/_common.sh index 944a65e..658bd36 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -8,6 +8,34 @@ # PERSONAL HELPERS #================================================= +_install_msfonts_deb() { + # Run this here because it's less verbose for some reason + ynh_exec_warn_less ynh_install_extra_app_dependencies \ + --repo="deb http://deb.debian.org/debian/ $(lsb_release --codename --short) main contrib" \ + --key="https://ftp-master.debian.org/keys/release-$(lsb_release --release --short).asc" \ + --package="ttf-mscorefonts-installer" +} + +_install_onlyoffice_deb() { + echo onlyoffice-documentserver onlyoffice/ds-port select "$port" | debconf-set-selections + echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set-selections + echo onlyoffice-documentserver onlyoffice/db-user string "$db_user" | debconf-set-selections + echo onlyoffice-documentserver onlyoffice/db-pwd password "$db_pwd" | debconf-set-selections + echo onlyoffice-documentserver onlyoffice/db-name string "$db_name" | debconf-set-selections + echo onlyoffice-documentserver onlyoffice/jwt-secret password "$jwt_secret" | debconf-set-selections + + # The OnlyOffice dev had the magnificent idea to add a "nginx restart" during + # the install/configure of their package, which is awful since that will + # restart NGINX and the whole webadmin and maybe even the YunoHost command + # running the install... + + # Can't do that in the manifest because we need the debconf-set-selections and postgresql already configured + ynh_exec_warn_less ynh_install_extra_app_dependencies \ + --repo="https://download.onlyoffice.com/repo/debian squeeze main" \ + --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" \ + --package="onlyoffice-documentserver" +} + #================================================= # EXPERIMENTAL HELPERS #================================================= diff --git a/scripts/install b/scripts/install index 0e30299..fca5967 100644 --- a/scripts/install +++ b/scripts/install @@ -21,23 +21,8 @@ ynh_app_setting_set --app="$app" --key=jwt_secret --value="$jwt_secret" #================================================= ynh_script_progression --message="Install OnlyOffice..." -echo onlyoffice-documentserver onlyoffice/ds-port select "$port" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-user string "$db_user" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-pwd password "$db_pwd" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-name string "$db_name" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/jwt-secret password "$jwt_secret" | debconf-set-selections - -# The OnlyOffice dev had the magnificent idea to add a "nginx restart" during -# the install/configure of their package, which is awful since that will -# restart NGINX and the whole webadmin and maybe even the YunoHost command -# running the install... - -# Can't do that in the manifest because we need the debconf-set-selections and postgresql already configured -ynh_exec_warn_less ynh_install_extra_app_dependencies \ - --repo="https://download.onlyoffice.com/repo/debian squeeze main" \ - --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" \ - --package="onlyoffice-documentserver" +_install_msfonts_deb +_install_onlyoffice_deb #================================================= # ADD A CONFIGURATION diff --git a/scripts/restore b/scripts/restore index 14cd2c1..89df2da 100644 --- a/scripts/restore +++ b/scripts/restore @@ -20,23 +20,8 @@ ynh_psql_connect_as --user="$db_user" --password="$db_pwd" --database="$db_name" #================================================= ynh_script_progression --message="Install OnlyOffice..." -echo onlyoffice-documentserver onlyoffice/ds-port select "$port" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-user string "$db_user" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-pwd password "$db_pwd" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-name string "$db_name" | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/jwt-secret password "$jwt_secret" | debconf-set-selections - -# The OnlyOffice dev had the magnificent idea to add a "nginx restart" during -# the install/configure of their package, which is awful since that will -# restart NGINX and the whole webadmin and maybe even the YunoHost command -# running the install... - -# Can't do that in the manifest because we need the debconf-set-selections and postgresql already configured -ynh_exec_warn_less ynh_install_extra_app_dependencies \ - --repo="https://download.onlyoffice.com/repo/debian squeeze main" \ - --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" \ - --package="onlyoffice-documentserver" +_install_msfonts_deb +_install_onlyoffice_deb #================================================= # RESTORE THE CONFIGURATION diff --git a/scripts/upgrade b/scripts/upgrade index 5d19c47..f8cd7d5 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -21,24 +21,9 @@ ynh_secure_remove --file="/etc/apt/sources.list.d/nodesource.list" ynh_script_progression --message="Upgrading OnlyOffice..." ynh_backup_if_checksum_is_different --file="/etc/onlyoffice/documentserver/default.json" -echo onlyoffice-documentserver onlyoffice/ds-port select $port | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-host string 127.0.0.1 | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-user string $db_user | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-pwd password $db_pwd | debconf-set-selections -echo onlyoffice-documentserver onlyoffice/db-name string $db_name | debconf-set-selections -# JWT options -# echo onlyoffice-documentserver onlyoffice/jwt-secret password $jwt_secret | debconf-set-selections -# The OnlyOffice dev had the magnificent idea to add a "nginx restart" during -# the install/configure of their package, which is awful since that will -# restart NGINX and the whole webadmin and maybe even the YunoHost command -# running the install... - -# Can't do that in the manifest because we need the debconf-set-selections and postgresql already configured -ynh_exec_warn_less ynh_install_extra_app_dependencies \ - --repo="https://download.onlyoffice.com/repo/debian squeeze main" \ - --key="https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE" \ - --package="onlyoffice-documentserver" +_install_msfonts_deb +_install_onlyoffice_deb #================================================= # UPDATE A CONFIG FILE @@ -48,8 +33,8 @@ ynh_script_progression --message="Updating a configuration file..." ynh_backup_if_checksum_is_different --file="/etc/onlyoffice/documentserver/default.json" ynh_replace_string --target_file="/etc/onlyoffice/documentserver/default.json" \ - --match_string="\"rejectUnauthorized\": true" \ - --replace_string="\"rejectUnauthorized\": false" + --match_string="\"rejectUnauthorized\": true" \ + --replace_string="\"rejectUnauthorized\": false" # Recalculate and store the checksum of the file for the next upgrade. ynh_store_file_checksum --file="/etc/onlyoffice/documentserver/default.json" From ab75de0750ce94c2c6151e7df15e2027b570d26f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 15:30:46 +0100 Subject: [PATCH 14/16] Remove fixmes from manifest --- manifest.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.toml b/manifest.toml index 1de95e4..b0efa8d 100644 --- a/manifest.toml +++ b/manifest.toml @@ -24,9 +24,9 @@ architectures = ["amd64"] multi_instance = false ldap = "not_relevant" sso = "not_relevant" -disk = "50M" # FIXME: replace with an **estimate** minimum disk requirement. e.g. 20M, 400M, 1G, ... -ram.build = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... -ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... +disk = "2000M" +ram.build = "800M" +ram.runtime = "800M" [install] [install.domain] From 8b022c60feee7da39848340405ccc510cea2752e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Tue, 19 Mar 2024 15:34:54 +0100 Subject: [PATCH 15/16] Add a jpeg, rename images --- doc/screenshots/01-presentation.jpg | Bin 0 -> 38815 bytes ...document-short.png => 02-document-short.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/screenshots/01-presentation.jpg rename doc/screenshots/{document-short.png => 02-document-short.png} (100%) diff --git a/doc/screenshots/01-presentation.jpg b/doc/screenshots/01-presentation.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d87e3415a87b5c87250883d5a9d04b48edcaf17 GIT binary patch literal 38815 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�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 Date: Tue, 19 Mar 2024 14:35:00 +0000 Subject: [PATCH 16/16] Auto-update README --- README.md | 3 ++- README_fr.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 87efee6..9d49172 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,8 @@ A solution made easy by YunoHost is to install (1.i) and (2.i), see [section bel ## Screenshots -![Screenshot of OnlyOffice](./doc/screenshots/document-short.png) +![Screenshot of OnlyOffice](./doc/screenshots/01-presentation.jpg) +![Screenshot of OnlyOffice](./doc/screenshots/02-document-short.png) ## Documentation and resources diff --git a/README_fr.md b/README_fr.md index 8314715..56a26e7 100644 --- a/README_fr.md +++ b/README_fr.md @@ -35,7 +35,8 @@ Une solution rendue facile par YunoHost est d'installer (1.i) et (2.i), voir [ci ## Captures d’écran -![Capture d’écran de OnlyOffice](./doc/screenshots/document-short.png) +![Capture d’écran de OnlyOffice](./doc/screenshots/01-presentation.jpg) +![Capture d’écran de OnlyOffice](./doc/screenshots/02-document-short.png) ## Documentations et ressources