diff --git a/manifest.json b/manifest.json index 368dfc3..10f8b83 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Backup your server on a host server using Borg.", "fr": "Sauvegardez votre serveur sur un serveur distant avec Borg." }, - "version": "1.1.15~ynh1", + "version": "1.1.15~ynh2", "url": "https://borgbackup.readthedocs.io", "license": "BSD-3-Clause", "maintainer": { diff --git a/scripts/_common.sh b/scripts/_common.sh index 2b13921..efcfe2c 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -5,19 +5,26 @@ #================================================= # App package root directory should be the parent folder PKG_DIR=$(cd ../; pwd) +BORG_VERSION=1.1.15 -pkg_dependencies="python3-pip python3-dev libacl1-dev libssl-dev liblz4-dev python3-jinja2 python3-setuptools python-virtualenv virtualenv" +pkg_dependencies="python3-pip python3-dev libacl1-dev libssl-dev liblz4-dev python3-jinja2 python3-setuptools python-virtualenv virtualenv libfuse-dev pkg-config" # Install borg with pip if borg is not here install_borg_with_pip () { + if [ -d /opt/borg-env ]; then + /opt/borg-env/bin/python /opt/borg-env/bin/pip list | grep "Version: $BORG_VERSION" || ynh_secure_remove /opt/borg-env + fi if [ ! -d /opt/borg-env ]; then python3 -m venv /opt/borg-env - /opt/borg-env/bin/python /opt/borg-env/bin/pip install borgbackup[fuse]==1.1.15 + /opt/borg-env/bin/python /opt/borg-env/bin/pip install borgbackup[fuse]==$BORG_VERSION echo "#!/bin/bash /opt/borg-env/bin/python /opt/borg-env/bin/borg \"\$@\"" > /usr/local/bin/borg - # We need this to be executable by - chmod a+x /usr/local/bin/borg + if is_buster; then + touch /opt/borg-env/buster + fi fi + # We need this to be executable by other borg apps + chmod a+x /usr/local/bin/borg } #================================================= diff --git a/scripts/install b/scripts/install index 54b0da4..f215e1c 100755 --- a/scripts/install +++ b/scripts/install @@ -44,7 +44,8 @@ ynh_script_progression --message="Installing dependencies..." ynh_install_app_dependencies $pkg_dependencies install_borg_with_pip - +#================================================= +# SPECIFIC SETUP #================================================= # ACTIVATE BACKUP METHODS #================================================= @@ -56,49 +57,34 @@ mkdir -p /usr/share/yunohost/backup_method # SETUP THE BACKUP METHOD #================================================= ynh_configure backup_method "/etc/yunohost/hooks.d/backup_method/05-${app}_app" +chmod go=--- "/etc/yunohost/hooks.d/backup_method/05-${app}_app" -#================================================= -# CONFIGURE CRON -#================================================= ynh_configure backup-with-borg "/usr/local/bin/backup-with-$app" chmod u+x "/usr/local/bin/backup-with-$app" -ynh_add_systemd_config -ynh_configure systemd.timer "/etc/systemd/system/$app.timer" -systemctl enable $app.timer --quiet -systemctl start $app.timer -#yunohost service add $app.timer -#yunohost service enable $app.timer -#yunohost service start $app.timer -#================================================= -# ADVERTISE SERVICE IN ADMIN PANEL -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." +if [ ! -z "$server" ]; then + #================================================= + # GENERATE SSH KEY + #================================================= -yunohost service add $app --description="Deduplicating backup program" + private_key="/root/.ssh/id_${app}_ed25519" + test -f $private_key || ssh-keygen -q -t ed25519 -N "" -f $private_key -#================================================= -# GENERATE SSH KEY -#================================================= + #================================================= + # Display key + #================================================= -private_key="/root/.ssh/id_${app}_ed25519" -test -f $private_key || ssh-keygen -q -t ed25519 -N "" -f $private_key + echo "You should now install the \"Borg Server\" app on $server and fill questions like this: + User: ${ssh_user} + Public key: $(cat ${private_key}.pub)" -#================================================= -# Display key -#================================================= + #================================================= + # SEND A README FOR THE ADMIN + #================================================= -echo "You should now install the \"Borg Server\" app on $server and fill questions like this: -User: ${ssh_user} -Public key: $(cat ${private_key}.pub)" - -#================================================= -# SEND A README FOR THE ADMIN -#================================================= - -ynh_print_OFF -message="You should now install the \"Borg Server\" app on $server and fill questions like this: + ynh_print_OFF + message="You should now install the \"Borg Server\" app on $server and fill questions like this: User: ${ssh_user} Public key: $(cat ${private_key}.pub) @@ -108,8 +94,32 @@ yunohost app install https://github.com/YunoHost-Apps/borgserver_ynh -a \"ssh_us If you facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/borg_ynh" -ynh_send_readme_to_admin "$message" "root" -ynh_print_ON + ynh_send_readme_to_admin "$message" "root" + ynh_print_ON +fi + +#================================================= +# SETUP SYSTEMD +#================================================= +ynh_script_progression --message="Configuring a systemd service..." --time --weight=1 + +# Create a dedicated systemd config +ynh_add_systemd_config + +#================================================= +# CONFIGURE SYSTEMD TIMER +#================================================= +ynh_configure systemd.timer "/etc/systemd/system/$app.timer" +systemctl enable $app.timer --quiet +systemctl start $app.timer + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 + +yunohost service add $app --description="Deduplicating backup program" + #================================================= # END OF SCRIPT diff --git a/scripts/upgrade b/scripts/upgrade index 76aeff5..2720b24 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -67,36 +67,69 @@ if grep "borg.timer" /etc/yunohost/services.yml > /dev/null ; then fi # Replace backports with pip +rm -f /etc/apt/sources.list.d/$app-stretch-backports.list + +# Reinstall borg if stretch -> buster migration if is_buster; then if [ ! -f /opt/borg-env/buster ] ; then - rm -f /etc/apt/sources.list.d/$app-stretch-backports.list - ynh_secure_remove /opt/borg-env - install_borg_with_pip - touch /opt/borg-env/buster + ynh_secure_remove /opt/borg-env fi fi +#================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." --weight=1 + +ynh_install_app_dependencies $pkg_dependencies + +#================================================= +# SPECIFIC UPGRADE +#================================================= +# Upgrade borgbackup +#================================================= +ynh_script_progression --message="Upgrading borgbackup..." --weight=1 + +install_borg_with_pip + #================================================= # SETUP THE BACKUP METHOD #================================================= ynh_script_progression --message="Setting up backup method..." --weight=1 ynh_configure backup_method "/etc/yunohost/hooks.d/backup_method/05-${app}_app" +chmod go=--- "/etc/yunohost/hooks.d/backup_method/05-${app}_app" -#================================================= -# CONFIGURE CRON -#================================================= -ynh_script_progression --message="Configuring systemd timer..." --weight=1 ynh_configure backup-with-borg "/usr/local/bin/backup-with-$app" chmod u+x "/usr/local/bin/backup-with-$app" + +#================================================= +# SETUP SYSTEMD +#================================================= +ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 + +# Create a dedicated systemd config ynh_add_systemd_config + +#================================================= +# CONFIGURE SYSTEMD TIMER +#================================================= ynh_configure systemd.timer "/etc/systemd/system/$app.timer" systemctl enable $app.timer --quiet systemctl start $app.timer #================================================= -# ADVERTISE SERVICE IN ADMIN PANEL +# GENERIC FINALIZATION #================================================= -ynh_script_progression --message="Exposing borg service in webadmin..." --weight=1 +# SECURE FILES AND DIRECTORIES +#================================================= + +# Set permissions on app files +chown -R root: $final_path + +#================================================= +# INTEGRATE SERVICE IN YUNOHOST +#================================================= +ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 yunohost service add $app --description="Deduplicating backup program"